Simply run gemma once installed
gemma
and it should give you the version.
GEMMA runs on Linux, MAC OSX and Windows (with Docker). The runtime has the following dependencies:
- C++ tool chain >= 5.5.0 (see Travis CI and we test with file .guix-dev-gcc-older)
- GNU Science library (GSL) 2.x (GEMMA dropped support for GSL 1.x)
- blas/openblas
- lapack
- zlib
See below for installation on Guix.
Travis-CI uses Ubuntu for testing. Check the test logs for version numbers.
Current settings can be found in travis.yml.
(Note Bioconda install is a work in progress
Recent versions of GEMMA can be installed with BioConda without root permissions using the following command
conda install gemma
Recent editions of FreeBSD ports include GEMMA
The GNU Guix package manager can install recent versions of GEMMA using the following command
guix package -i gemma
A more recent version may be found in the guix-bioinformatics channel which is maintained by the authors. See the README, e.g.
env GUIX_PACKAGE_PATH=./guix-bioinformatics guix package -A gemma
To build GEMMA from source you can opt to install the build tools with
GNU Guix, the current build container is in guix.scm. See the first lines on how to create one using guix shell
.
An alternative is the command line invocation of guix-dev
source .guix-dev
make
Guix allows for easy versioning. To build with an older gcc, for example:
guix environment -C guix --ad-hoc [email protected] gdb gsl openblas zlib bash ld-wrapper perl vim which
Recent version of GEMMA come with a 64-bit Docker image that should run on Linux, Windows and MacOS.
Install listed dependencies (you may want to take hints from the Travis-CI tests) and run
make -j 4
(the -j switch builds on 4 cores).
time make check
You can run gemma in the debugger with, for example
gdb --args \
./bin/gemma -g example/mouse_hs1940.geno.txt.gz \
-p example/mouse_hs1940.pheno.txt -a example/mouse_hs1940.anno.txt \
-snps example/snps.txt -nind 400 -loco 1 -gk -debug -o myoutput
Note that if you get warnings on inspecting variables you should compile with GCC_FLAGS="" to disable optimizations (-O3). E.g.
make WITH_OPENBLAS=1 GCC_FLAGS=
Other options, such as compiling with warnings, are listed in the Makefile.
Some development examples. With git bisect build the older versions of gemma with openblas
~/.config/guix/current/bin/guix environment -C guix --ad-hoc gcc gdb gfortran:lib gsl lapack openblas zlib bash ld-wrapper perl ldc
make clean ; make WITH_OPENBLAS=1 FORCE_DYNAMIC=1 -j 8
or with atlas
~/.config/guix/current/bin/guix environment -C guix --ad-hoc gcc gdb gfortran:lib gsl lapack atlas zlib bash ld-wrapper perl ldc
make clean ; make WITH_OPENBLAS= FORCE_DYNAMIC=1 -j 25
GEMMA includes the shunit2 test framework (version 2.0).
make check
or
./run_tests.sh
To distribute GEMMA I made static versions of the binary. A container can be made instead with, for example
env GUIX_PACKAGE_PATH=~/guix-bioinformatics ~/.config/guix/current/bin/guix \
pack -f docker gemma-gn2 -S /bin=bin
which created a container in of size 51MB. Tiny! For more information see GUIX-NOTES.
To create a static release, locate the gfortran lib and use
source .guix-dev-static
make WITH_GFORTRAN=1 EXTRA_FLAGS=-L/gnu/store/741057r2x06zwg6zcmqmdyv51spm6n9i-gfortran-7.5.0-lib/lib static
otherwise OpenBlas will complain with
undefined reference to `_gfortran_concat_string'
Note you can use guix.scm if you load with
guix shell -L ~/guix-pjotr -C -D -f guix.scm