aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gn/packages/bioinformatics.scm61
-rw-r--r--plink-ng-Makefile-zlib-git.patch129
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.