gnu: Add plink.

* gnu/packages/bioinformatics.scm (plink): New variable.
* gnu/packages/patches/plink-1.07-unclobber-i.patch: New file.
This commit is contained in:
Ricardo Wurmus 2015-06-25 12:04:05 +02:00
parent 5c852e085d
commit cc6ed47737
2 changed files with 122 additions and 0 deletions

View File

@ -1793,6 +1793,59 @@ Databases are stored in a portable image within the file system, and can be
accessed/downloaded on demand across HTTP.") accessed/downloaded on demand across HTTP.")
(license license:public-domain))) (license license:public-domain)))
(define-public plink
(package
(name "plink")
(version "1.07")
(source
(origin
(method url-fetch)
(uri (string-append
"http://pngu.mgh.harvard.edu/~purcell/plink/dist/plink-"
version "-src.zip"))
(sha256
(base32 "0as8gxm4pjyc8dxmm1sl873rrd7wn5qs0l29nqfnl31x8i467xaa"))
(patches (list (search-patch "plink-1.07-unclobber-i.patch")))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ;no "check" target
#:make-flags (list (string-append "LIB_LAPACK="
(assoc-ref %build-inputs "lapack")
"/lib/liblapack.so")
"WITH_LAPACK=1"
"FORCE_DYNAMIC=1"
;; disable phoning home
"WITH_WEBCHECK=")
#:phases
(modify-phases %standard-phases
;; no "configure" script
(delete 'configure)
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((bin (string-append (assoc-ref outputs "out")
"/bin/")))
(mkdir-p bin)
(copy-file "plink" (string-append bin "plink"))
#t))))))
(inputs
`(("zlib" ,zlib)
("lapack" ,lapack)))
(native-inputs
`(("unzip" ,unzip)))
(home-page "http://pngu.mgh.harvard.edu/~purcell/plink/")
(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 sra-tools (define-public sra-tools
(package (package
(name "sra-tools") (name "sra-tools")

View File

@ -0,0 +1,69 @@
GCC rightfully complains about redefined variables, as iterator declarations
appear inside loops with a loop variable of the same name.
This patch has been sent upstream.
--- a/sets.cpp 2015-06-25 11:22:08.252821681 +0200
+++ b/sets.cpp 2015-06-25 11:22:23.239187985 +0200
@@ -768,11 +768,11 @@
//////////////////////////////////////////////
// Reset original missing status
- vector<Individual*>::iterator i = PP->sample.begin();
- while ( i != PP->sample.end() )
+ vector<Individual*>::iterator it = PP->sample.begin();
+ while ( it != PP->sample.end() )
{
- (*i)->missing = (*i)->flag;
- ++i;
+ (*it)->missing = (*it)->flag;
+ ++it;
}
////////////////////////////////////////////////
--- a/elf.cpp 2009-10-10 18:00:21.000000000 +0200
+++ b/elf.cpp 2015-06-25 11:34:06.136835756 +0200
@@ -1175,10 +1175,10 @@
<< setw(8) << gcnt << " "
<< setw(8) << (double)cnt / (double)gcnt << "\n";
- map<int,int>::iterator i = chr_cnt.begin();
- while ( i != chr_cnt.end() )
+ map<int,int>::iterator it = chr_cnt.begin();
+ while ( it != chr_cnt.end() )
{
- int c = i->first;
+ int c = it->first;
int x = chr_cnt.find( c )->second;
int y = chr_gcnt.find( c )->second;
@@ -1189,7 +1189,7 @@
<< setw(8) << y << " "
<< setw(8) << (double)x / (double)y << "\n";
- ++i;
+ ++it;
}
}
--- plink-1.07-src/idhelp.cpp 2009-10-10 18:00:22.000000000 +0200
+++ plink-1.07-src/idhelp.cpp.patched 2015-06-25 11:37:39.387204086 +0200
@@ -772,12 +772,12 @@
for (int j = 0 ; j < jointField.size(); j++ )
{
set<IDField*> & jf = jointField[j];
- set<IDField*>::iterator j = jf.begin();
+ set<IDField*>::iterator jit = jf.begin();
PP->printLOG(" { ");
- while ( j != jf.end() )
+ while ( jit != jf.end() )
{
- PP->printLOG( (*j)->name + " " );
- ++j;
+ PP->printLOG( (*jit)->name + " " );
+ ++jit;
}
PP->printLOG(" }");
}