diff options
Diffstat (limited to 'gnu/packages/bioinformatics.scm')
-rw-r--r-- | gnu/packages/bioinformatics.scm | 167 |
1 files changed, 53 insertions, 114 deletions
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 1e38c6e0e7..64fc6173db 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -12,7 +12,7 @@ ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com> ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com> ;;; Copyright © 2018, 2019, 2020, 2021 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de> -;;; Copyright © 2019, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2019, 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com> ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org> ;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> @@ -217,8 +217,7 @@ structure of the predicted RNA.") (snippet `(begin ;; Delete bundled htslib. - (delete-file-recursively "c/htslib-1.3.1") - #t)))) + (delete-file-recursively "c/htslib-1.3.1"))))) (build-system python-build-system) (arguments `(#:python ,python-2 ; BamM is Python 2 only. @@ -238,37 +237,22 @@ structure of the predicted RNA.") ;; Use autogen so that 'configure' works. (substitute* "autogen.sh" (("/bin/sh") sh)) (setenv "CONFIG_SHELL" sh) - (invoke "./autogen.sh"))) - #t)) - (delete 'build) - ;; Run tests after installation so compilation only happens once. - (delete 'check) - (add-after 'install 'wrap-executable - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (path (getenv "PATH"))) - (wrap-program (string-append out "/bin/bamm") - `("PATH" ":" prefix (,path)))) - #t)) - (add-after 'wrap-executable 'post-install-check - (lambda* (#:key inputs outputs #:allow-other-keys) - (setenv "PATH" - (string-append (assoc-ref outputs "out") - "/bin:" - (getenv "PATH"))) - (setenv "PYTHONPATH" - (string-append - (assoc-ref outputs "out") - "/lib/python" - (string-take (string-take-right - (assoc-ref inputs "python") 5) 3) - "/site-packages:" - (getenv "PYTHONPATH"))) + (invoke "./autogen.sh"))))) + (delete 'build) ;the build loops otherwise + (replace 'check + (lambda _ ;; 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 ... - (invoke "nosetests") - #t))))) + (invoke "nosetests"))) + (add-after 'install 'wrap-executable + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (path (getenv "PATH")) + (pythonpath (getenv "GUIX_PYTHONPATH"))) + (wrap-program (string-append out "/bin/bamm") + `("PATH" ":" prefix (,path)) + `("GUIX_PYTHONPATH" ":" prefix (,pythonpath))))))))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) @@ -914,9 +898,7 @@ servers supporting the protocol.") "0wc7z8g8prgdx7n5chjva2fdq03wiwhqisjjxzkjg1j5k5ha7151")))) (build-system python-build-system) (arguments - `(#:modules ((ice-9 ftw) - (srfi srfi-1) - (srfi srfi-26) + `(#:modules ((srfi srfi-26) (guix build utils) (guix build python-build-system)) ;; See https://github.com/daler/pybedtools/issues/192 @@ -936,8 +918,6 @@ servers supporting the protocol.") (substitute* "pybedtools/test/test_issues.py" (("def test_issue_303") "def _test_issue_303")))) - ;; TODO: Remove phase after it's part of PYTHON-BUILD-SYSTEM. - ;; build system. ;; Force the Cythonization of C++ files to guard against compilation ;; problems. (add-after 'unpack 'remove-cython-generated-files @@ -949,20 +929,12 @@ servers supporting the protocol.") (string-take filename (string-index-right filename #\.))) (define (cythonized? c/c++-file) (member (strip-extension c/c++-file) cython-sources)) - (for-each delete-file (filter cythonized? c/c++-files)) - #t))) + (for-each delete-file (filter cythonized? c/c++-files))))) (add-after 'remove-cython-generated-files 'generate-cython-extensions (lambda _ (invoke "python" "setup.py" "cythonize"))) (replace 'check (lambda _ - (let* ((build-root-directory (string-append (getcwd) "/build/")) - (build (string-append - build-root-directory - (find (cut string-prefix? "lib" <>) - (scandir build-root-directory))))) - (setenv "PYTHONPATH" - (string-append build ":" (getenv "PYTHONPATH")))) ;; The tests need to be run from elsewhere... (mkdir-p "/tmp/test") (copy-recursively "pybedtools/test" "/tmp/test") @@ -2083,15 +2055,10 @@ has several key features: (snippet '(begin ;; Drop bundled htslib. TODO: Also remove samtools ;; and bcftools. - (delete-file-recursively "htslib") - #t)))) + (delete-file-recursively "htslib"))))) (build-system python-build-system) (arguments - `(#:modules ((ice-9 ftw) - (srfi srfi-26) - (guix build python-build-system) - (guix build utils)) - #:phases + `(#:phases (modify-phases %standard-phases (add-before 'build 'set-flags (lambda* (#:key inputs #:allow-other-keys) @@ -2101,22 +2068,16 @@ has several key features: (setenv "HTSLIB_INCLUDE_DIR" (string-append (assoc-ref inputs "htslib") "/include")) (setenv "LDFLAGS" "-lncurses") - (setenv "CFLAGS" "-D_CURSES_LIB=1") - #t)) + (setenv "CFLAGS" "-D_CURSES_LIB=1"))) (replace 'check - (lambda* (#:key inputs outputs #:allow-other-keys) + (lambda _ ;; This file contains tests that require a connection to the ;; internet. (delete-file "tests/tabix_test.py") - ;; FIXME: This test fails + ;; FIXME: These tests fail with "AttributeError: 'array.array' + ;; object has no attribute 'tostring'". (delete-file "tests/AlignmentFile_test.py") - ;; Add first subdirectory of "build" directory to PYTHONPATH. - (setenv "PYTHONPATH" - (string-append - (getenv "PYTHONPATH") - ":" (getcwd) "/build/" - (car (scandir "build" - (negate (cut string-prefix? "." <>)))))) + (delete-file "tests/AlignedSegment_test.py") ;; Step out of source dir so python does not import from CWD. (with-directory-excursion "tests" (setenv "HOME" "/tmp") @@ -2457,9 +2418,9 @@ gene predictor designed to work with assembled, aligned RNA-seq transcripts.") (lambda* (#:key inputs outputs #:allow-other-keys) ;; Make sure 'couger' runs with the correct PYTHONPATH. (let* ((out (assoc-ref outputs "out")) - (path (getenv "PYTHONPATH"))) + (path (getenv "GUIX_PYTHONPATH"))) (wrap-program (string-append out "/bin/couger") - `("PYTHONPATH" ":" prefix (,path)))) + `("GUIX_PYTHONPATH" ":" prefix (,path)))) #t))))) (inputs `(("python" ,python-2) @@ -3135,19 +3096,14 @@ data and settings.") (substitute* "src/plasma/fasta.hpp" (("#define FASTA_HPP" line) (string-append line "\n#include <random>"))) - #t)) - ;; FIXME: this is needed because we're using texlive-union, which - ;; doesn't handle fonts correctly. It expects to be able to generate - ;; fonts in the home directory. - (add-before 'build 'setenv-HOME - (lambda _ (setenv "HOME" "/tmp") #t))))) + #t))))) (inputs `(("boost" ,boost) ("cairo" ,cairo) ("rmath-standalone" ,rmath-standalone))) (native-inputs - `(("texlive" ,(texlive-union (list texlive-fonts-cm - texlive-fonts-amsfonts + `(("texlive" ,(texlive-updmap.cfg (list texlive-cm + texlive-amsfonts texlive-latex-doi texlive-latex-examplep @@ -5586,9 +5542,11 @@ predicts the locations of structural units in the sequences.") (add-after 'install 'wrap-programs (lambda* (#:key inputs outputs #:allow-other-keys) (let ((path (getenv "PATH")) - (out (assoc-ref outputs "out"))) + (out (assoc-ref outputs "out")) + (guile (search-input-file inputs "bin/guile"))) (for-each (lambda (script) - (wrap-script script `("PATH" ":" prefix (,path)))) + (wrap-script script #:guile guile + `("PATH" ":" prefix (,path)))) (cons (string-append out "/bin/proteinortho") (find-files out "\\.(pl|py)$")))) #t))))) @@ -6629,25 +6587,6 @@ complexity samples.") (base32 "148vcb7w2wr6a4w6vs2bsxanbqibxfk490zbcbg4m61s8669zdjx")))) (build-system python-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; Tests must be run after installation, as the "screed" command does - ;; not exist right after building. - (delete 'check) - (add-after 'install 'check - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (setenv "PYTHONPATH" - (string-append out "/lib/python" - (string-take (string-take-right - (assoc-ref inputs "python") - 5) 3) - "/site-packages:" - (getenv "PYTHONPATH"))) - (setenv "PATH" (string-append out "/bin:" (getenv "PATH")))) - (invoke "python" "setup.py" "test") - #t))))) (native-inputs `(("python-pytest" ,python-pytest) ("python-pytest-cov" ,python-pytest-cov) @@ -7750,10 +7689,11 @@ experience substantial biological insertions and deletions.") (delete 'configure) (delete 'build) (replace 'install - (lambda* (#:key outputs #:allow-other-keys) + (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bin (string-append out "/bin")) - (scripts (find-files "." "prinseq.*.pl"))) + (scripts (find-files "." "prinseq.*.pl")) + (guile (search-input-file "bin/guile"))) (substitute* scripts (("\"perl -pe") (string-append "\"" (which "perl") " -pe"))) @@ -7761,6 +7701,7 @@ experience substantial biological insertions and deletions.") (chmod file #o555) (install-file file bin) (wrap-script (string-append bin "/" (basename file)) + #:guile guile `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB"))))) scripts))))))) @@ -8838,7 +8779,8 @@ matplotlib.use('Agg') " line))) ;; Make sure GESS has all modules in its path (wrap-script (string-append target "GESS.py") - `("PYTHONPATH" ":" = (,target ,(getenv "PYTHONPATH")))) + #:guile (search-input-file inputs "bin/guile") + `("GUIX_PYTHONPATH" ":" = (,target ,(getenv "GUIX_PYTHONPATH")))) (mkdir-p bin) (symlink (string-append target "GESS.py") (string-append bin "GESS.py")) @@ -9788,11 +9730,7 @@ variational inference.") (modify-phases %standard-phases (replace 'check (lambda _ - (setenv "PYTHONPATH" - (string-append (getcwd) ":" - (getenv "PYTHONPATH"))) - (invoke "pytest" "tests") - #t))))) + (invoke "pytest" "tests")))))) (propagated-inputs `(("python-h5py" ,python-h5py) ("python-numpy" ,python-numpy) @@ -11239,11 +11177,11 @@ conversions, region filtering, FASTA sequence extraction and more.") (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bin (string-append out "/bin")) - (path (getenv "PYTHONPATH"))) + (path (getenv "GUIX_PYTHONPATH"))) (for-each (lambda (script) (install-file script bin) (wrap-program (string-append bin "/" script) - `("PYTHONPATH" ":" prefix (,path)))) + `("GUIX_PYTHONPATH" ":" prefix (,path)))) '("cmp_bed.py" "find_circ.py" "maxlength.py" @@ -11367,8 +11305,7 @@ implementation differs in these ways: (setenv "PYTHONPATH" (string-append (getcwd) ":" (getenv "PYTHONPATH"))) - (invoke "pytest") - #t))))) + (invoke "pytest")))))) (propagated-inputs `(("python-anndata" ,python-anndata) ("python-h5py" ,python-h5py) @@ -12381,10 +12318,10 @@ datasets.") (add-after 'install 'wrap-program (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) - (path (getenv "PYTHONPATH"))) + (path (getenv "GUIX_PYTHONPATH"))) (wrap-program (string-append out "/share/filtlong/scripts/histogram.py") - `("PYTHONPATH" ":" prefix (,path)))) + `("GUIX_PYTHONPATH" ":" prefix (,path)))) #t)) (add-before 'check 'patch-tests (lambda _ @@ -12456,16 +12393,18 @@ choosing which reads pass the filter.") (find-files "scripts" ".*")) #t))) (add-after 'install 'wrap-programs - (lambda* (#:key outputs #:allow-other-keys) - (let ((pythonpath (getenv "PYTHONPATH")) + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((pythonpath (getenv "GUIX_PYTHONPATH")) (perl5lib (getenv "PERL5LIB")) (scripts (string-append (assoc-ref outputs "out") - "/share/nanopolish/scripts"))) + "/share/nanopolish/scripts")) + (guile (search-input-file inputs "bin/guile"))) (for-each (lambda (file) - (wrap-program file `("PYTHONPATH" ":" prefix (,pythonpath)))) + (wrap-program file `("GUIX_PYTHONPATH" ":" prefix (,pythonpath)))) (find-files scripts "\\.py")) (for-each (lambda (file) - (wrap-script file `("PERL5LIB" ":" prefix (,perl5lib)))) + (wrap-script file #:guile guile + `("PERL5LIB" ":" prefix (,perl5lib)))) (find-files scripts "\\.pl")))))))) (inputs `(("guile" ,guile-3.0) ; for wrappers @@ -12679,7 +12618,7 @@ to an artifact/contaminant file.") `(("openmpi" ,openmpi) ("zlib" ,zlib))) (native-inputs - `(("texlive" ,(texlive-union (list texlive-latex-graphics + `(("texlive" ,(texlive-updmap.cfg (list texlive-latex-graphics texlive-latex-hyperref))))) (home-page "https://www.ebi.ac.uk/~zerbino/velvet/") (synopsis "Nucleic acid sequence assembler for very short reads") |