Skip to content

Latest commit

 

History

History
158 lines (94 loc) · 4.4 KB

INSTALL.md

File metadata and controls

158 lines (94 loc) · 4.4 KB

INSTALL GEMMA: Genome-wide Efficient Mixed Model Association

Check version

Simply run gemma once installed

gemma

and it should give you the version.

GEMMA dependencies

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.

Install GEMMA

Debian and Ubuntu

Travis-CI uses Ubuntu for testing. Check the test logs for version numbers.

Build Status

Current settings can be found in travis.yml.

Bioconda

(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

FreeBSD

Recent editions of FreeBSD ports include GEMMA

GNU Guix

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 gcc-toolchain@9.3.0 gdb gsl openblas zlib bash ld-wrapper perl vim which

Install with Docker

Recent version of GEMMA come with a 64-bit Docker image that should run on Linux, Windows and MacOS.

Install from source

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.

GNU Guix commands used

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

Run tests

GEMMA includes the shunit2 test framework (version 2.0).

make check

or

./run_tests.sh

Releases

Docker release

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.

Static release

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