diff options
Diffstat (limited to 'gnu/packages/bioinformatics.scm')
-rw-r--r-- | gnu/packages/bioinformatics.scm | 318 |
1 files changed, 205 insertions, 113 deletions
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 91bb94c549..1e04081ceb 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -136,24 +136,23 @@ (modify-phases %standard-phases (delete 'configure) (replace 'build - (lambda _ - (zero? (system* "gcc" - "-O3" - "-ffast-math" - "-finline-functions" - "-o" - "aragorn" - (string-append "aragorn" ,version ".c"))))) + (lambda _ + (invoke "gcc" + "-O3" + "-ffast-math" + "-finline-functions" + "-o" + "aragorn" + (string-append "aragorn" ,version ".c")) + #t)) (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (man (string-append out "/share/man/man1"))) - (mkdir-p bin) - (install-file "aragorn" bin) - (mkdir-p man) - (install-file "aragorn.1" man)) - #t))))) + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (man (string-append out "/share/man/man1"))) + (install-file "aragorn" bin) + (install-file "aragorn.1" man)) + #t))))) (home-page "http://mbio-serv2.mbioekol.lu.se/ARAGORN") (synopsis "Detect tRNA, mtRNA and tmRNA genes in nucleotide sequences") (description @@ -168,15 +167,16 @@ structure of the predicted RNA.") (name "bamm") (version "1.7.3") (source (origin - (method url-fetch) + (method git-fetch) ;; BamM is not available on pypi. - (uri (string-append - "https://github.com/Ecogenomics/BamM/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (uri (git-reference + (url "https://github.com/Ecogenomics/BamM.git") + (commit version) + (recursive? #t))) + (file-name (git-file-name name version)) (sha256 (base32 - "1f35yxp4pc8aadsvbpg6r4kg2jh4fkjci0iby4iyljm6980sac0s")) + "1p83ahi984ipslxlg4yqy1gdnya9rkn1v71z8djgxkm9d2chw4c5")) (modules '((guix build utils))) (snippet `(begin @@ -198,11 +198,12 @@ structure of the predicted RNA.") (lambda _ (with-directory-excursion "c" (let ((sh (which "sh"))) + (for-each make-file-writable (find-files "." ".*")) ;; Use autogen so that 'configure' works. (substitute* "autogen.sh" (("/bin/sh") sh)) (setenv "CONFIG_SHELL" sh) - (substitute* "configure" (("/bin/sh") sh)) - (zero? (system* "./autogen.sh")))))) + (invoke "./autogen.sh"))) + #t)) (delete 'build) ;; Run tests after installation so compilation only happens once. (delete 'check) @@ -230,7 +231,8 @@ structure of the predicted RNA.") ;; There are 2 errors printed, but they are safe to ignore: ;; 1) [E::hts_open_format] fail to open file ... ;; 2) samtools view: failed to open ... - (zero? (system* "nosetests"))))))) + (invoke "nosetests") + #t))))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) @@ -335,15 +337,16 @@ transparently with both VCFs and BCFs, both uncompressed and BGZF-compressed.") (define-public bedops (package (name "bedops") - (version "2.4.33") + (version "2.4.35") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/bedops/bedops/archive/v" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/bedops/bedops.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "0kx4awrwby8f33wqyx8w7ms7v25xhf0d421csgf96a3hfzn2mb0m")))) + "0mmgsgwz5r9w76hzgxkxc9s9lkdhhaf7vr6i02b09vbswvs1fyqx")))) (build-system gnu-build-system) (arguments '(#:tests? #f @@ -365,9 +368,9 @@ transparently with both VCFs and BCFs, both uncompressed and BGZF-compressed.") ;; Unpack the tarballs to benefit from shebang patching. (with-directory-excursion "third-party" - (and (zero? (system* "tar" "xvf" "jansson-2.6.tar.bz2")) - (zero? (system* "tar" "xvf" "zlib-1.2.7.tar.bz2")) - (zero? (system* "tar" "xvf" "bzip2-1.0.6.tar.bz2")))) + (invoke "tar" "xvf" "jansson-2.6.tar.bz2") + (invoke "tar" "xvf" "zlib-1.2.7.tar.bz2") + (invoke "tar" "xvf" "bzip2-1.0.6.tar.bz2")) ;; Disable unpacking of tarballs in Makefile. (substitute* "system.mk/Makefile.linux" (("^\tbzcat .*") "\t@echo \"not unpacking\"\n") @@ -453,6 +456,20 @@ BED, GFF/GTF, VCF.") (find-files "bin" ".*"))) #t))))))) +;; Needed for pybedtools. +(define-public bedtools-2.26 + (package (inherit bedtools) + (name "bedtools") + (version "2.26.0") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/arq5x/bedtools2/releases/" + "download/v" version "/" + "bedtools-" version ".tar.gz")) + (sha256 + (base32 + "0jhavwifnf7lmkb11h9y7dynr8d699h0rd2l52j1pfgircr2zwv5")))))) + (define-public ribotaper (package (name "ribotaper") @@ -582,29 +599,54 @@ input/output delimiter. When the new functionality is not used, bioawk is intended to behave exactly the same as the original BWK awk.") (license license:x11))) -(define-public python2-pybedtools +(define-public python-pybedtools (package - (name "python2-pybedtools") - (version "0.6.9") + (name "python-pybedtools") + (version "0.7.10") (source (origin (method url-fetch) - (uri (string-append - "https://pypi.python.org/packages/source/p/pybedtools/pybedtools-" - version ".tar.gz")) + (uri (pypi-uri "pybedtools" version)) (sha256 (base32 - "1ldzdxw1p4y3g2ignmggsdypvqkcwqwzhdha4rbgpih048z5p4an")))) + "0l2b2wrnj85azfqgr0zwr60f7j58vlla1hcgxvr9rwikpl8j72ji")))) (build-system python-build-system) - (arguments `(#:python ,python-2)) ; no Python 3 support - (inputs - `(("python-matplotlib" ,python2-matplotlib))) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; See https://github.com/daler/pybedtools/issues/261 + (add-after 'unpack 'disable-broken-tests + (lambda _ + ;; This test (pybedtools.test.test_scripts.test_venn_mpl) needs a + ;; graphical environment. + (substitute* "pybedtools/test/test_scripts.py" + (("def test_venn_mpl") + "def _do_not_test_venn_mpl")) + ;; Requires internet access. + (substitute* "pybedtools/test/test_helpers.py" + (("def test_chromsizes") + "def _do_not_test_chromsizes")) + ;; FIXME: these two fail for no good reason. + (substitute* "pybedtools/test/test1.py" + (("def test_issue_157") + "def _do_not_test_issue_157") + (("def test_to_dataframe") + "def _do_not_test_to_dataframe")) + #t))))) (propagated-inputs - `(("bedtools" ,bedtools) - ("samtools" ,samtools))) + ;; Tests don't pass with Bedtools 2.27.1. + ;; See https://github.com/daler/pybedtools/issues/260 + `(("bedtools" ,bedtools-2.26) + ("samtools" ,samtools) + ("python-matplotlib" ,python-matplotlib) + ("python-pysam" ,python-pysam) + ("python-pyyaml" ,python-pyyaml))) (native-inputs - `(("python-cython" ,python2-cython) - ("python-pyyaml" ,python2-pyyaml) - ("python-nose" ,python2-nose))) + `(("python-numpy" ,python-numpy) + ("python-pandas" ,python-pandas) + ("python-cython" ,python-cython) + ("python-nose" ,python-nose) + ("kentutils" ,kentutils) ; for bedGraphToBigWig + ("python-six" ,python-six))) (home-page "https://pythonhosted.org/pybedtools/") (synopsis "Python wrapper for BEDtools programs") (description @@ -614,6 +656,36 @@ pybedtools extends BEDTools by offering feature-level manipulations from with Python.") (license license:gpl2+))) +(define-public python2-pybedtools + (let ((pkg (package-with-python2 python-pybedtools))) + (package (inherit pkg) + (arguments + `(#:modules ((ice-9 ftw) + (srfi srfi-1) + (srfi srfi-26) + (guix build utils) + (guix build python-build-system)) + ;; See https://github.com/daler/pybedtools/issues/192 + ,@(substitute-keyword-arguments (package-arguments pkg) + ((#:phases phases) + `(modify-phases ,phases + (replace 'check + (lambda _ + (let ((cwd (getcwd))) + (setenv "PYTHONPATH" + (string-append cwd "/build/" + (find (cut string-prefix? "lib" <>) + (scandir (string-append cwd "/build"))) + ":" (getenv "PYTHONPATH")))) + ;; The tests need to be run from elsewhere... + (mkdir-p "/tmp/test") + (copy-recursively "pybedtools/test" "/tmp/test") + (with-directory-excursion "/tmp/test" + (invoke "nosetests" + ;; This test fails for unknown reasons + "--exclude=.*test_getting_example_beds")) + #t)))))))))) + (define-public python-biom-format (package (name "python-biom-format") @@ -999,15 +1071,12 @@ package provides command line tools using the Bio++ library.") #:parallel-build? #f ; not supported #:phases (modify-phases %standard-phases - (add-before - 'configure 'set-HOME + (add-before 'configure 'set-HOME ;; $HOME needs to be set at some point during the configure phase (lambda _ (setenv "HOME" "/tmp") #t)) - (add-after - 'unpack 'enter-dir + (add-after 'unpack 'enter-dir (lambda _ (chdir "c++") #t)) - (add-after - 'enter-dir 'fix-build-system + (add-after 'enter-dir 'fix-build-system (lambda _ (define (which* cmd) (cond ((string=? cmd "date") @@ -1055,31 +1124,31 @@ package provides command line tools using the Bio++ library.") (("action=/bin/") "action=") (("export PATH") ":")) #t)) - (replace - 'configure - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (lib (string-append (assoc-ref outputs "lib") "/lib")) - (include (string-append (assoc-ref outputs "include") - "/include/ncbi-tools++"))) - ;; The 'configure' script doesn't recognize things like - ;; '--enable-fast-install'. - (zero? (system* "./configure.orig" - (string-append "--with-build-root=" (getcwd) "/build") - (string-append "--prefix=" out) - (string-append "--libdir=" lib) - (string-append "--includedir=" include) - (string-append "--with-bz2=" - (assoc-ref inputs "bzip2")) - (string-append "--with-z=" - (assoc-ref inputs "zlib")) - (string-append "--with-pcre=" - (assoc-ref inputs "pcre")) - ;; Each library is built twice by default, once - ;; with "-static" in its name, and again - ;; without. - "--without-static" - "--with-dll")))))))) + (replace 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (lib (string-append (assoc-ref outputs "lib") "/lib")) + (include (string-append (assoc-ref outputs "include") + "/include/ncbi-tools++"))) + ;; The 'configure' script doesn't recognize things like + ;; '--enable-fast-install'. + (invoke "./configure.orig" + (string-append "--with-build-root=" (getcwd) "/build") + (string-append "--prefix=" out) + (string-append "--libdir=" lib) + (string-append "--includedir=" include) + (string-append "--with-bz2=" + (assoc-ref inputs "bzip2")) + (string-append "--with-z=" + (assoc-ref inputs "zlib")) + (string-append "--with-pcre=" + (assoc-ref inputs "pcre")) + ;; Each library is built twice by default, once + ;; with "-static" in its name, and again + ;; without. + "--without-static" + "--with-dll") + #t)))))) (outputs '("out" ; 21 MB "lib" ; 226 MB "include")) ; 33 MB @@ -1204,15 +1273,16 @@ errors at the end of reads.") (define-public bowtie (package (name "bowtie") - (version "2.3.2") + (version "2.3.4.3") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/BenLangmead/bowtie2/archive/v" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/BenLangmead/bowtie2.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "0hwa5r9qbglppb7sz5z79rlmmddr3n51n468jb3wh8rwjgn3yr90")) + "1zl3cf327y2p7p03cavymbh7b00djc7lncfaqih33n96iy9q8ibp")) (modules '((guix build utils))) (snippet '(begin @@ -1222,14 +1292,6 @@ errors at the end of reads.") (("-DBUILD_TIME=.*") "-DBUILD_TIME=\"\\\"0\\\"\"")) #t)))) (build-system gnu-build-system) - (inputs - `(("perl" ,perl) - ("perl-clone" ,perl-clone) - ("perl-test-deep" ,perl-test-deep) - ("perl-test-simple" ,perl-test-simple) - ("python" ,python-2) - ("tbb" ,tbb) - ("zlib" ,zlib))) (arguments '(#:make-flags (list "allall" @@ -1239,11 +1301,21 @@ errors at the end of reads.") (modify-phases %standard-phases (delete 'configure) (replace 'check - (lambda* (#:key outputs #:allow-other-keys) - (zero? (system* "perl" - "scripts/test/simple_tests.pl" - "--bowtie2=./bowtie2" - "--bowtie2-build=./bowtie2-build"))))))) + (lambda _ + (invoke "perl" + "scripts/test/simple_tests.pl" + "--bowtie2=./bowtie2" + "--bowtie2-build=./bowtie2-build") + #t))))) + (inputs + `(("tbb" ,tbb) + ("zlib" ,zlib) + ("python" ,python-wrapper))) + (native-inputs + `(("perl" ,perl) + ("perl-clone" ,perl-clone) + ("perl-test-deep" ,perl-test-deep) + ("perl-test-simple" ,perl-test-simple))) (home-page "http://bowtie-bio.sourceforge.net/bowtie2/index.shtml") (synopsis "Fast and sensitive nucleotide sequence read aligner") (description @@ -1638,29 +1710,35 @@ databases.") (define-public clipper (package (name "clipper") - (version "1.1") + (version "1.2.1") (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/YeoLab/clipper/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/YeoLab/clipper.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "0pflmsvhbf8izbgwhbhj1i7349sw1f55qpqj8ljmapp16hb0p0qi")) + "0fja1rj84wp9vpj8rxpj3n8zqzcqq454m904yp9as1w4phccirjb")) (modules '((guix build utils))) (snippet '(begin ;; remove unnecessary setup dependency (substitute* "setup.py" (("setup_requires = .*") "")) - (for-each delete-file - '("clipper/src/peaks.so" - "clipper/src/readsToWiggle.so")) - (delete-file-recursively "dist/") #t)))) (build-system python-build-system) - (arguments `(#:python ,python-2)) ; only Python 2 is supported + (arguments + `(#:python ,python-2 ; only Python 2 is supported + #:phases + (modify-phases %standard-phases + ;; This is fixed in upstream commit + ;; f6c2990198f906bf97730d95695b4bd5a6d01ddb. + (add-after 'unpack 'fix-typo + (lambda _ + (substitute* "clipper/src/readsToWiggle.pyx" + (("^sc.*") "")) + #t))))) (inputs `(("htseq" ,python2-htseq) ("python-pybedtools" ,python2-pybedtools) @@ -1985,7 +2063,21 @@ trees (phylogenies) and characters.") (license license:bsd-3))) (define-public python2-dendropy - (package-with-python2 python-dendropy)) + (let ((base (package-with-python2 python-dendropy))) + (package + (inherit base) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'remove-failing-test + (lambda _ + ;; This test fails when the full test suite is run, as documented + ;; at https://github.com/jeetsukumaran/DendroPy/issues/74 + (substitute* "tests/test_dataio_nexml_reader_tree_list.py" + (("test_collection_comments_and_annotations") + "do_not_test_collection_comments_and_annotations")) + #t))) + ,@(package-arguments base)))))) (define-public python-py2bit (package |