diff options
-rw-r--r-- | gn/packages/bioinformatics.scm | 61 | ||||
-rw-r--r-- | plink-ng-Makefile-zlib-git.patch | 129 |
2 files changed, 187 insertions, 3 deletions
diff --git a/gn/packages/bioinformatics.scm b/gn/packages/bioinformatics.scm index 2f588d8..15083f9 100644 --- a/gn/packages/bioinformatics.scm +++ b/gn/packages/bioinformatics.scm @@ -211,10 +211,64 @@ subsequent visualization, annotation and storage of results.") ;; LGPLv2.1+ (license (list license:gpl2 license:lgpl2.1+)))) -(define-public gemma +(define-public plink-ng + (let ((commit "516d730f9")) + (package + (name "plink-ng") + (version (string-append "1.90b3-" commit )) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/chrchang/plink-ng.git") + (commit commit))) + (file-name (string-append name "-" commit)) + (sha256 + (base32 + "0cv824wkdml9h9imsc30s2x3l8g65j44cpjbr1ydkk49g5qmf580")) + (patches (list (search-patch "plink-ng-Makefile-zlib-git.patch"))))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ;no "check" target + #:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'build + (lambda _ + (zero? (system* "make" "-f" "Makefile.std")) + )) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((bin (string-append (assoc-ref outputs "out") + "/bin/"))) + (install-file "plink2" bin) + #t)))))) + (inputs + `(("zlib" ,zlib) + ("openblas" ,openblas) + ("atlas" ,atlas) + ("lapack" ,lapack) + ("gfortran" ,gfortran) + )) + (native-inputs + `(("unzip" ,unzip))) + (home-page "https://www.cog-genomics.org/plink2") + (synopsis "Whole genome association analysis toolset") + (description + "PLINK is a whole genome association analysis toolset, designed to +perform a range of basic, large-scale analyses in a computationally efficient +manner. The focus of PLINK is purely on analysis of genotype/phenotype data, +so there is no support for steps prior to this (e.g. study design and +planning, generating genotype or CNV calls from raw data). Through +integration with gPLINK and Haploview, there is some support for the +subsequent visualization, annotation and storage of results.") + ;; Code is released under GPLv2, except for fisher.h, which is under + ;; LGPLv2.1+ + (license (list license:gpl2 license:lgpl2.1+))))) + +(define-public gemma-git (let ((commit "2de4bfab3")) (package - (name "gemma") + (name "gemma-git") (version (string-append "0.9.5-" commit )) (source (origin (method git-fetch) @@ -327,7 +381,8 @@ association studies (GWAS).") )) (inputs `( ("mysql" ,mysql) - ("gemma" ,gemma) + ("gemma" ,gemma-git) + ("plink2" ,plink-ng) ("nginx" ,nginx) ("python2-flask" ,python2-flask) ("python2-htmlgen-gn" ,python2-htmlgen-gn) diff --git a/plink-ng-Makefile-zlib-git.patch b/plink-ng-Makefile-zlib-git.patch new file mode 100644 index 0000000..79986b8 --- /dev/null +++ b/plink-ng-Makefile-zlib-git.patch @@ -0,0 +1,129 @@ +diff --git a/Makefile.std b/Makefile.std +index e204486..ca65bd3 100644 +--- a/Makefile.std ++++ b/Makefile.std +@@ -1,64 +1,23 @@ + # General-purpose Makefile for PLINK 1.90 + # +-# Compilation options: +-# Do not link to LAPACK NO_LAPACK + +-# Leave blank after "=" to disable; put "= 1" to enable +-# (when enabled, "#define NOLAPACK" must be uncommented in plink_common.h) +-NO_LAPACK = ++# CFLAGS=-Wall -O2 ++# BLASFLAGS=-lblas -llapack -latlas ++LINKFLAGS=-lm -lpthread -lopenblas -llapack -latlas -lstdc++ ++ZLIB=-lz + ++SRC = plink.c plink_assoc.c plink_calc.c plink_cluster.c plink_cnv.c plink_common.c plink_data.c plink_dosage.c plink_family.c plink_filter.c plink_glm.c plink_help.c plink_homozyg.c plink_lasso.c plink_ld.c plink_matrix.c plink_misc.c plink_perm.c plink_rserve.c plink_set.c plink_stats.c SFMT.c dcdflib.c pigz.c yarn.c Rconnection.cc hfile.c bgzf.c + +-# should autodetect system +-SYS = UNIX +-ifdef SystemRoot +- SYS = WIN +-else +- UNAME := $(shell uname) +- ifeq ($(UNAME), Darwin) +- SYS = MAC +- endif +-endif +- +-CFLAGS=-Wall -O2 +-BLASFLAGS=-L/usr/lib64/atlas -llapack -lcblas -latlas +-LINKFLAGS=-lm -lpthread -ldl +-ZLIB=zlib-1.2.8/libz.so.1.2.8 +- +-ifeq ($(SYS), MAC) +- GCC_GTEQ_43 := $(shell expr `g++ -dumpversion | sed -e 's/\.\([0-9][0-9]\)/\1/g' -e 's/\.\([0-9]\)/0\1/g' -e 's/^[0-9]\{3,4\}$$/&00/'` \>= 40300) +- ifeq "$(GCC_GTEQ_43)" "1" +- CFLAGS=-Wall -O2 -flax-vector-conversions +- endif +- BLASFLAGS=-framework Accelerate +- LINKFLAGS=-ldl +- ZLIB=zlib-1.2.8/libz.1.2.8.dylib +-endif +- +-ifeq ($(SYS), WIN) +-# Note that, unlike the Linux and Mac build processes, this STATICALLY links +-# LAPACK, since we have not gotten around to trying dynamically-linked LAPACK +-# on Windows. +-# If you don't already have LAPACK built, you'll probably want to turn on +-# NO_LAPACK. +- BLASFLAGS=-L. lapack/liblapack.a -L. lapack/librefblas.a +- LINKFLAGS=-lm -static-libgcc +- ZLIB=zlib-1.2.8/libz.a +-endif ++OBJ = plink.o plink_assoc.o plink_calc.o plink_cluster.o plink_cnv.o plink_common.o plink_data.o plink_dosage.o plink_family.o plink_filter.o plink_glm.o plink_help.o plink_homozyg.o plink_lasso.o plink_ld.o plink_matrix.o plink_misc.o plink_perm.o plink_rserve.o plink_set.o plink_stats.o SFMT.o dcdflib.o pigz.o yarn.o Rconnection.o hfile.o bgzf.o + +-ifdef NO_LAPACK +- BLASFLAGS= +-endif + +-SRC = plink.c plink_assoc.c plink_calc.c plink_cluster.c plink_cnv.c plink_common.c plink_data.c plink_dosage.c plink_family.c plink_filter.c plink_glm.c plink_help.c plink_homozyg.c plink_lasso.c plink_ld.c plink_matrix.c plink_misc.c plink_perm.c plink_rserve.c plink_set.c plink_stats.c SFMT.c dcdflib.c pigz.c yarn.c Rconnection.cc hfile.c bgzf.c ++# In the likely event that you are concurrently using PLINK 1.07, we suggest ++# either renaming that binary to "plink1" or this one to "plink2". + +-# In the event that you are still concurrently using PLINK 1.07, we suggest +-# renaming that binary to "plink107" and "plink1". (Previously, +-# "plink1"/"plink2" was suggested here; that also works for now, but it may +-# lead to minor problems when PLINK 2.0 is released.) ++# plink: $(SRC) ++# g++ $(CFLAGS) $(SRC) -o plink $(BLASFLAGS) $(LINKFLAGS) -L. $(ZLIB) + + plink: $(SRC) +- g++ $(CFLAGS) $(SRC) -o plink $(BLASFLAGS) $(LINKFLAGS) -L. $(ZLIB) +- +-plinkw: $(SRC) + g++ $(CFLAGS) $(SRC) -c +- gfortran -O2 $(OBJ) -o plink -Wl,-Bstatic $(BLASFLAGS) $(LINKFLAGS) -L. $(ZLIB) ++ gfortran $(OBJ) -o plink2 $(BLASFLAGS) $(LINKFLAGS) -L. $(ZLIB) ++ # gfortran $^ -o plink2 -Wl,-Bstatic $(BLASFLAGS) $(LINKFLAGS) -L. $(ZLIB) +diff --git a/dose2plink.c b/dose2plink.c +index dc1f33a..ca2d31c 100644 +--- a/dose2plink.c ++++ b/dose2plink.c +@@ -96,7 +96,7 @@ + #endif + #endif + +-#include "zlib-1.2.8/zlib.h" ++#include "zlib.h" + + #ifdef __APPLE__ + #include <sys/sysctl.h> +diff --git a/pigz.c b/pigz.c +index 46b0525..3ce9a6b 100644 +--- a/pigz.c ++++ b/pigz.c +@@ -297,7 +297,7 @@ + #include <stdio.h> + #include <stdlib.h> + #include <windows.h> +-#include "zlib-1.2.8/zlib.h" ++#include "zlib.h" + + #include "pigz.h" + +@@ -513,7 +513,7 @@ int32_t flex_pzwrite_close_null(Pigz_state* ps_ptr, char* writep) { + # include <sys/pstat.h> + #endif + +-#include "zlib-1.2.8/zlib.h" /* deflateInit2(), deflateReset(), deflate(), */ ++#include "zlib.h" /* deflateInit2(), deflateReset(), deflate(), */ + /* deflateEnd(), deflateSetDictionary(), crc32(), + inflateBackInit(), inflateBack(), inflateBackEnd(), + Z_DEFAULT_COMPRESSION, Z_DEFAULT_STRATEGY, +diff --git a/plink_common.h b/plink_common.h +index 84eb929..e0b5cca 100644 +--- a/plink_common.h ++++ b/plink_common.h +@@ -177,7 +177,7 @@ + #define VEC_BITS (VEC_BYTES * 8) + #define VEC_BITS_M1 (VEC_BITS - 1) + +-#include "zlib-1.2.8/zlib.h" ++#include "zlib.h" + #include "SFMT.h" + + // 64MB of non-workspace memory guaranteed for now. |