aboutsummaryrefslogtreecommitdiff
path: root/README.org
blob: d1295b1a9647f0fea9e1b450a406c89cfdd59105 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
* guix-bioinformatics

Bioinformatics packages for GNU Guix that are used in
https://genenetwork.org/ and some other places.  See [[https://gitlab.com/pjotrp/guix-notes/blob/master/HACKING.org][Guix notes]] for
installing and hacking GNU Guix. Other channels of bioinformatics
interest can be found at

1. https://github.com/BIMSBbioinfo
2. https://github.com/UMCUGenetics/guix-additions
3. https://github.com/ekg/guix-genomics

Also see [[http://git.genenetwork.org/pjotrp/guix-notes/src/branch/master/CHANNELS.org][Guix notes]] for a list of channels.

To easily use the packages from this repo, simply add it to your
`channels` list in ~/.config/guix/channels.scm as described
[[https://guix.gnu.org/manual/en/html_node/Channels.html][here]]:

#+BEGIN_SRC scheme
  (list (channel
         (name 'gn-bioinformatics)
         (url "https://git.genenetwork.org/guix-bioinformatics/guix-bioinformatics.git")
         (branch "master")))
#+END_SRC

and run /guix pull/ like normal to update your software. This is the
recommended way to use the software from this repository and the code
snippets in this README assume you have done so. In order to maintain
stability, the guix-bioinformatics channel depends on a specific
commit of upstream Guix. So, it is recommended to isolate use of the
guix-bioinformatics channel in a separate /guix pull/ profile. That is described [[https://issues.genenetwork.org/topics/guix-profiles][here]].

If you want to make changes to the packages in this repo you can set
the GUIX_PACKAGE_PATH to point to the root of this directory
before running Guix. E.g.

#+BEGIN_SRC bash
    git clone https://git.genenetwork.org/guix-bioinformatics/guix-bioinformatics.git
    git clone https://gitlab.inria.fr/guix-hpc/guix-past.git
    export GUIX_PACKAGE_PATH=$PWD/guix-bioinformatics/:$PWD/guix-past/modules
    guix package -A cwl
#+END_SRC

or using a checked out Guix repo with

: env GUIX_PACKAGE_PATH=$genenetwork/guix-bioinformatics/ ./pre-inst-env guix package -A cwl

Some (or most) of these package definitions should make it upstream
into the GNU Guix repository when tested and stable.

* Slurm and munge

Install slurm with

#+BEGIN_SRC bash
    guix pull
    guix package -i slurm-llnl

    ~/.guix-profile/sbin/slurmd -C -D
      ClusterName=(null) NodeName=selinunte CPUs=4 Boards=1 SocketsPerBoard=1 CoresPerSocket=2 ThreadsPerCore=2 RealMemory=7890 TmpDisk=29909
#+END_SRC


* Common Workflow Language (CWL)

/Note that CWL moved into Guix master!/

Install the common workflow language tool cwltool from this repo with

#+BEGIN_SRC bash

    guix pull
    export PATH=$HOME/.config/guix/current/bin/guix:$PATH
    ~/guix-bioinformatics$ env GUIX_PACKAGE_PATH=.:../guix-past/modules/ ~/.config/guix/current/bin/guix package -i cwl-runner -p ~/opt/CWL

The following package will be installed:
   cwl-runner 1.0

The following derivations will be built:
   /gnu/store/ld59374zr45rbqanh7ccfi2wa4d5x4yl-cwl-runner-1.0.drv
   /gnu/store/86j15mxj5zp3k3sjimhqhb6zsj19azsf-python-schema-salad-7.0.20200811075006.drv
   /gnu/store/0q2ls0is3253r4gx6hs7kmvlcz412lh1-schema-salad-7.0.20200811075006.tar.gz.drv
   /gnu/store/myj1365ph687ynahjhg6zqslrmd6zpjq-cwltool-3.0.20201117141248.drv

source ~/opt/CWL/etc/profile
cwltool --version
  /gnu/store/50mncjcgc8vmq5dfrh0pb82avbzy8c4r-cwltool-3.0.20201117141248/bin/.cwltool-real 3.0
#+END_SRC

To run CWL definitions you can install tools in a Guix environment (avoiding
Docker). Say you need mafft in a workflow

#+begin_src sh
    ~/guix-bioinformatics$ env GUIX_PACKAGE_PATH=.:../guix-past/modules/ ~/.config/guix/current/bin/guix environment \
       guix --ad-hoc cwl-runner mafft
#+end_src

in the new shell you should be able to find both CWL and MAFFT:

#+begin_src sh
ls $GUIX_ENVIRONMENT/bin/cwl*
/gnu/store/bhfc5rk29s38w9kgcl4zmcdlh369y9f9-profile/bin/cwl-runner
/gnu/store/bhfc5rk29s38w9kgcl4zmcdlh369y9f9-profile/bin/cwltool
ls $GUIX_ENVIRONMENT/bin/mafft
/gnu/store/bhfc5rk29s38w9kgcl4zmcdlh369y9f9-profile/bin/mafft
#+end_src

The paths can be loaded into the shell with

: source $GUIX_ENVIRONMENT/etc/profile

* Module system

For those who think they need modules: install the module environment
with

#+BEGIN_SRC bash
    guix pull
    guix package -i environment-modules

    modulecmd --version
      VERSION=3.2.10
      DATE=2012-12-21
#+END_SRC

Note that GNU Guix supercedes module functionality!

* Development tips

** Override individual packages

The cheerful way of overriding a version of a package:

#+BEGIN_SRC scheme
    (use-modules (guix) (gnu packages emacs))

    (package
      (inherit emacs)
      (name "emacs-snapshot")
      (source "/path/to/some-file-or-directory.tar.gz"))
#+END_SRC

and then run:

: guix package --install-from-file=that-file.scm

* Substitute server

We run our own substitution server. Add the key to your machine as
root with

: guix archive --authorize < tux02-guix-substitutions-public-key.txt
: guix build -L ~/guix-bioinformatics/ -L ~/guix-past/modules/ genenetwork2 --substitute-urls="https://ci.guix.gnu.org https://bordeaux.guix.gnu.org https://guix.genenetwork.org" --dry-run

* LICENSE

These package descriptions (so-called Guix expressions) are
distributed by the same license as GNU Guix, i.e. GPL3+