diff options
Diffstat (limited to 'gnu/packages/bioinformatics.scm')
-rw-r--r-- | gnu/packages/bioinformatics.scm | 455 |
1 files changed, 265 insertions, 190 deletions
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 46febf579a..c3ede81a59 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -24,6 +24,7 @@ ;;; Copyright © 2021, 2022 Simon Tournier <zimon.toutoune@gmail.com> ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net> ;;; Copyright © 2022 Navid Afkhami <navid.afkhami@mdc-berlin.de> +;;; Copyright © 2022 Antero Mejr <antero@mailbox.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -230,6 +231,10 @@ structure of the predicted RNA.") (base32 "14lw571vbks138i0lj66qjdbk8iwa817x2zbpzij61vv1gdgfbn5")))) (build-system cmake-build-system) + (arguments + (list + #:configure-flags + '(list "-DBUILD_SHARED_LIBS=ON"))) (inputs (list jsoncpp zlib)) (native-inputs (list pkg-config)) (home-page "https://github.com/pezmaster31/bamtools") @@ -907,6 +912,26 @@ 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 python-bcbio-gff + (package + (name "python-bcbio-gff") + (version "0.6.9") + (source (origin + (method url-fetch) + (uri (pypi-uri "bcbio-gff" version)) + (sha256 + (base32 + "1pm1szyxabhn8jismrj9cjhf88ajgcmm39f0cgf36iagw5qakprl")))) + (build-system pyproject-build-system) + (propagated-inputs (list python-biopython python-six)) + (native-inputs (list python-pytest)) + (home-page "https://github.com/chapmanb/bcbb/tree/master/gff") + (synopsis "Read and write GFF files with Biopython integration") + (description + "This package lets you read and write files in Generic Feature +Format (GFF) with Biopython integration.") + (license (license:non-copyleft "http://www.biopython.org/DIST/LICENSE")))) + (define-public python-cellbender (package (name "python-cellbender") @@ -10849,6 +10874,28 @@ traditional read alignments) and massively-parallel stochastic collapsed variational inference.") (license license:gpl3+))) +(define-public scallop + (package + (name "scallop") + (version "0.10.5") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/Kingsford-Group/scallop" + "/releases/download/v" version + "/scallop-" version ".tar.gz")) + (sha256 + (base32 + "0ylkhr5hsmw7bsdszrjz9yqknsijh2fl5n6rjqmdmcdky5hkr7mh")))) + (build-system gnu-build-system) + (inputs + (list boost htslib)) + (home-page "https://github.com/Kingsford-Group/scallop") + (synopsis "Reference-based transcriptome assembler for RNA-seq") + (description "Scallop is a reference-based transcript assembler. Scallop +features its high accuracy in assembling multi-exon transcripts as well as +lowly expressed transcripts.") + (license license:bsd-3))) + (define-public python-fanc (package (name "python-fanc") @@ -14125,43 +14172,42 @@ datasets.") (patches (search-patches "ngless-unliftio.patch")))) (build-system haskell-build-system) (arguments - `(#:haddock? #f ; The haddock phase fails with: NGLess/CmdArgs.hs:20:1: - ; error: parse error on input import - ; import Options.Applicative - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'create-Versions.hs - (lambda _ - (substitute* "Makefile" - (("BWA_VERSION = .*") - (string-append "BWA_VERSION = " - ,(package-version bwa) "\n")) - (("SAM_VERSION = .*") - (string-append "SAM_VERSION = " - ,(package-version samtools) "\n")) - (("PRODIGAL_VERSION = .*") - (string-append "PRODIGAL_VERSION = " - ,(package-version prodigal) "\n")) - (("MINIMAP2_VERSION = .*") - (string-append "MINIMAP2_VERSION = " - ,(package-version minimap2) "\n"))) - (invoke "make" "NGLess/Dependencies/Versions.hs") - #t)) - (add-after 'create-Versions.hs 'create-cabal-file - (lambda _ (invoke "hpack") #t)) - ;; These tools are expected to be installed alongside ngless. - (add-after 'install 'link-tools - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((bin (string-append (assoc-ref outputs "out") "/bin/"))) - (symlink (search-input-file inputs "/bin/prodigal") - (string-append bin "ngless-" ,version "-prodigal")) - (symlink (search-input-file inputs "/bin/minimap2") - (string-append bin "ngless-" ,version "-minimap2")) - (symlink (search-input-file inputs "/bin/samtools") - (string-append bin "ngless-" ,version "-samtools")) - (symlink (search-input-file inputs "/bin/bwa") - (string-append bin "ngless-" ,version "-bwa")) - #t)))))) + (list + #:haddock? #f ;The haddock phase fails with: NGLess/CmdArgs.hs:20:1: + ;error: parse error on input import + ;import Options.Applicative + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'create-Versions.hs + (lambda _ + (substitute* "Makefile" + (("BWA_VERSION = .*") + (string-append "BWA_VERSION = " + #$(package-version bwa) "\n")) + (("SAM_VERSION = .*") + (string-append "SAM_VERSION = " + #$(package-version samtools) "\n")) + (("PRODIGAL_VERSION = .*") + (string-append "PRODIGAL_VERSION = " + #$(package-version prodigal) "\n")) + (("MINIMAP2_VERSION = .*") + (string-append "MINIMAP2_VERSION = " + #$(package-version minimap2) "\n"))) + (invoke "make" "NGLess/Dependencies/Versions.hs"))) + (add-after 'create-Versions.hs 'create-cabal-file + (lambda _ (invoke "hpack"))) + ;; These tools are expected to be installed alongside ngless. + (add-after 'install 'link-tools + (lambda* (#:key inputs #:allow-other-keys) + (let ((bin (string-append #$output "/bin/"))) + (symlink (search-input-file inputs "/bin/prodigal") + (string-append bin "ngless-" #$version "-prodigal")) + (symlink (search-input-file inputs "/bin/minimap2") + (string-append bin "ngless-" #$version "-minimap2")) + (symlink (search-input-file inputs "/bin/samtools") + (string-append bin "ngless-" #$version "-samtools")) + (symlink (search-input-file inputs "/bin/bwa") + (string-append bin "ngless-" #$version "-bwa")))))))) (inputs (list prodigal bwa @@ -14276,36 +14322,32 @@ phase + query phase).") (base32 "1xr92r820x8qlkcr3b57iw223yq8vjgyi42jr79w2xgw47qzr575")))) (build-system gnu-build-system) (arguments - `(#:tests? #f ; no check target - #:phases - (modify-phases %standard-phases - (delete 'configure) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (scripts (string-append out "/share/filtlong/scripts"))) - (install-file "bin/filtlong" bin) - (install-file "scripts/histogram.py" scripts) - (install-file "scripts/read_info_histograms.sh" scripts)) - #t)) - (add-after 'install 'wrap-program - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (path (getenv "GUIX_PYTHONPATH"))) - (wrap-program (string-append out - "/share/filtlong/scripts/histogram.py") - `("GUIX_PYTHONPATH" ":" prefix (,path)))) - #t)) - (add-before 'check 'patch-tests - (lambda _ - (substitute* "scripts/read_info_histograms.sh" - (("awk") (which "gawk"))) - #t))))) + (list + #:tests? #f ; no check target + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (replace 'install + (lambda _ + (let ((bin (string-append #$output "/bin")) + (scripts (string-append #$output "/share/filtlong/scripts"))) + (install-file "bin/filtlong" bin) + (install-file "scripts/histogram.py" scripts) + (install-file "scripts/read_info_histograms.sh" scripts)))) + (add-after 'install 'wrap-program + (lambda _ + (let ((path (getenv "GUIX_PYTHONPATH"))) + (wrap-program (string-append #$output + "/share/filtlong/scripts/histogram.py") + `("GUIX_PYTHONPATH" ":" prefix (,path)))))) + (add-before 'check 'patch-tests + (lambda _ + (substitute* "scripts/read_info_histograms.sh" + (("awk") (which "gawk")))))))) (inputs - `(("gawk" ,gawk) ;for read_info_histograms.sh - ("python" ,python-2) ;required for histogram.py - ("zlib" ,zlib))) + (list gawk ;for read_info_histograms.sh + python-wrapper ;required for histogram.py + zlib)) (home-page "https://github.com/rrwick/Filtlong/") (synopsis "Tool for quality filtering of Nanopore and PacBio data") (description @@ -14317,91 +14359,89 @@ choosing which reads pass the filter.") license:asl2.0))))) ;histogram.py (define-public nanopolish - ;; The recommended way to install is to clone the git repository - ;; <https://github.com/jts/nanopolish#installing-a-particular-release>. - ;; Also, the differences between release and current version seem to be - ;; significant. - (let ((commit "6331dc4f15b9dfabb954ba3fae9d76b6c3ca6377") - (revision "1")) - (package - (name "nanopolish") - (version (git-version "0.11.1" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/jts/nanopolish") - (commit commit) - (recursive? #t))) - (file-name (git-file-name name version)) - (sha256 - (base32 "15ikl3d37y49pwd7vx36xksgsqajhf24q7qqsnpl15dqqyy5qgbc")) - (modules '((guix build utils))) - (snippet - '(begin - (delete-file-recursively "htslib") - #t)))) - (build-system gnu-build-system) - (arguments - `(#:make-flags - `("HDF5=noinstall" "EIGEN=noinstall" "HTS=noinstall" "CC=gcc") - #:tests? #f ; no check target - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'find-eigen - (lambda* (#:key inputs #:allow-other-keys) - (setenv "CPATH" - (string-append - (search-input-directory inputs "/include/eigen3") - ":" (or (getenv "CPATH") ""))))) - (delete 'configure) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (scripts (string-append out "/share/nanopolish/scripts"))) + (package + (name "nanopolish") + (version "0.14.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jts/nanopolish") + (commit (string-append "v" version)) + (recursive? #t))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ha9v5ia0qrwgav0956cfc7n64wjm9a9w3rvkg21g37a994yixg5")) + (modules '((guix build utils))) + (snippet + ;; TODO: unbundle slow5lib + '(begin (for-each delete-file-recursively + '("htslib" "minimap2")))))) + (build-system gnu-build-system) + (arguments + (list + #:make-flags + #~(list "HDF5=noinstall" + "EIGEN=noinstall" + "HTS=noinstall" + "MINIMAP2=noinstall" + (string-append "CC=" #$(cc-for-target))) + #:tests? #f ; no check target + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'find-eigen + (lambda* (#:key inputs #:allow-other-keys) + (setenv "CPATH" + (string-append + (search-input-directory inputs "/include/eigen3") + ":" (or (getenv "CPATH") ""))))) + (delete 'configure) + (replace 'install + (lambda _ + (let ((bin (string-append #$output "/bin")) + (scripts (string-append #$output "/share/nanopolish/scripts"))) - (install-file "nanopolish" bin) - (for-each (lambda (file) (install-file file scripts)) - (find-files "scripts" ".*")) - #t))) - (add-after 'install 'wrap-programs - (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")) - (guile (search-input-file inputs "bin/guile"))) - (for-each (lambda (file) - (wrap-program file `("GUIX_PYTHONPATH" ":" prefix (,pythonpath)))) - (find-files scripts "\\.py")) - (for-each (lambda (file) - (wrap-script file #:guile guile - `("PERL5LIB" ":" prefix (,perl5lib)))) - (find-files scripts "\\.pl")))))))) - (inputs - `(("guile" ,guile-3.0) ; for wrappers - ("eigen" ,eigen) - ("hdf5" ,hdf5) - ("htslib" ,htslib) - ("perl" ,perl) - ("bioperl" ,bioperl-minimal) - ("perl-getopt-long" ,perl-getopt-long) - ("python" ,python-wrapper) - ("python-biopython" ,python-biopython) - ("python-numpy" ,python-numpy) - ("python-pysam" ,python-pysam) - ("python-scikit-learn" , python-scikit-learn) - ("python-scipy" ,python-scipy) - ("zlib" ,zlib))) - (home-page "https://github.com/jts/nanopolish") - (synopsis "Signal-level analysis of Oxford Nanopore sequencing data") - (description - "This package analyses the Oxford Nanopore sequencing data at signal-level. + (install-file "nanopolish" bin) + (for-each (lambda (file) (install-file file scripts)) + (find-files "scripts" ".*"))))) + (add-after 'install 'wrap-programs + (lambda* (#:key inputs #:allow-other-keys) + (let ((pythonpath (getenv "GUIX_PYTHONPATH")) + (perl5lib (getenv "PERL5LIB")) + (scripts (string-append #$output "/share/nanopolish/scripts")) + (guile (search-input-file inputs "bin/guile"))) + (for-each (lambda (file) + (wrap-program file `("GUIX_PYTHONPATH" ":" prefix (,pythonpath)))) + (find-files scripts "\\.py")) + (for-each (lambda (file) + (wrap-script file #:guile guile + `("PERL5LIB" ":" prefix (,perl5lib)))) + (find-files scripts "\\.pl")))))))) + (inputs + (list guile-3.0 ;for wrappers + eigen + hdf5 + htslib + minimap2 + perl + bioperl-minimal + perl-getopt-long + python-wrapper + python-biopython + python-numpy + python-pysam + python-scikit-learn + python-scipy + zlib)) + (native-inputs (list cmake-minimal)) + (home-page "https://github.com/jts/nanopolish") + (synopsis "Signal-level analysis of Oxford Nanopore sequencing data") + (description + "This package analyses the Oxford Nanopore sequencing data at signal-level. Nanopolish can calculate an improved consensus sequence for a draft genome assembly, detect base modifications, call SNPs (Single nucleotide polymorphisms) and indels with respect to a reference genome and more.") - (license license:expat)))) + (license license:expat))) (define-public cnvkit (package @@ -14484,60 +14524,59 @@ is a Cython wrapper for FIt-SNE.") (define-public bbmap (package (name "bbmap") - (version "38.90") + (version "39.01") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/bbmap/BBMap_" version ".tar.gz")) (sha256 (base32 - "1wb94bcc006qq86x77z2rz0lc8m9f1kpnw6gdhjfg9bdaqf56rm3")))) + "1rlkw2mlkn699dk9n5lnigmvwq3zr2f8hnq9plx7zi1h06jqsq4q")))) (build-system ant-build-system) (arguments - `(#:build-target "dist" - #:tests? #f ; there are none - #:make-flags - ,#~(list (string-append "-Dmpijar=" - #$(this-package-input "java-openmpi") - "/lib/mpi.jar")) - #:modules ((guix build ant-build-system) + (list + #:build-target "dist" + #:tests? #f ; there are none + #:make-flags + #~(list (string-append "-Dmpijar=" + #$(this-package-input "java-openmpi") + "/lib/mpi.jar")) + #:modules '((guix build ant-build-system) (guix build utils) (guix build java-utils)) - #:phases - (modify-phases %standard-phases - (add-after 'build 'build-jni-library - (lambda _ - (with-directory-excursion "jni" - (invoke "make" "-f" "makefile.linux")))) - ;; There is no install target - (replace 'install (install-jars "dist")) - (add-after 'install 'install-scripts-and-documentation - (lambda* (#:key outputs #:allow-other-keys) - (substitute* "calcmem.sh" - (("\\| awk ") (string-append "| " (which "awk") " "))) - (let* ((scripts (find-files "." "\\.sh$")) - (out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (doc (string-append out "/share/doc/bbmap")) - (jni (string-append out "/lib/jni"))) - (substitute* scripts - (("\\$DIR\"\"docs") doc) - (("^CP=.*") - (string-append "CP=" out "/share/java/BBTools.jar\n")) - (("^NATIVELIBDIR.*") - (string-append "NATIVELIBDIR=" jni "\n")) - (("CMD=\"java") - (string-append "CMD=\"" (which "java")))) - (for-each (lambda (script) (install-file script bin)) scripts) + #:phases + #~(modify-phases %standard-phases + (add-after 'build 'build-jni-library + (lambda _ + (with-directory-excursion "jni" + (invoke "make" "-f" "makefile.linux")))) + ;; There is no install target + (replace 'install (install-jars "dist")) + (add-after 'install 'install-scripts-and-documentation + (lambda _ + (substitute* "calcmem.sh" + (("\\| awk ") (string-append "| " (which "awk") " "))) + (let* ((scripts (find-files "." "\\.sh$")) + (bin (string-append #$output "/bin")) + (doc (string-append #$output "/share/doc/bbmap")) + (jni (string-append #$output "/lib/jni"))) + (substitute* scripts + (("\\$DIR\"\"docs") doc) + (("^CP=.*") + (string-append "CP=" #$output "/share/java/BBTools.jar\n")) + (("^NATIVELIBDIR.*") + (string-append "NATIVELIBDIR=" jni "\n")) + (("CMD=\"java") + (string-append "CMD=\"" (which "java")))) + (for-each (lambda (script) (install-file script bin)) scripts) - ;; Install JNI library - (install-file "jni/libbbtoolsjni.so" jni) + ;; Install JNI library + (install-file "jni/libbbtoolsjni.so" jni) - ;; Install documentation - (install-file "docs/readme.txt" doc) - (copy-recursively "docs/guides" doc)) - #t))) - #:jdk ,openjdk11)) + ;; Install documentation + (install-file "docs/readme.txt" doc) + (copy-recursively "docs/guides" doc))))) + #:jdk openjdk11)) (inputs (list gawk java-eclipse-jdt-core java-eclipse-jdt-compiler-apt java-openmpi)) @@ -16744,7 +16783,7 @@ for the analysis and visualization of raw nanopore signal.") "/vcf/test"))))))) (native-inputs ;; Older setuptools is needed for use_2to3. - (list python-cython python-setuptools-for-tensorflow)) + (list python-cython python-setuptools-57)) (propagated-inputs (list python-pysam python-rpy2)) (home-page "https://github.com/jamescasbon/PyVCF") @@ -17729,6 +17768,42 @@ module capable of computing base-level alignments for very large sequences.") (home-page "https://github.com/ekg/wfmash") (license license:expat))) +(define-public gdcm + (package + (name "gdcm") + (version "2.8.9") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/malaterre/gdcm") + (commit (string-append "v" version)) + (recursive? #t))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1j8mjnxcwn2xvzhf25lv4dbawxbgc4im1crh8081li7i4mbwswaj")))) + (build-system cmake-build-system) + (arguments + (list + #:configure-flags + #~(list "-DGDCM_BUILD_TESTING=true" + (string-append "-DCMAKE_CTEST_ARGUMENTS=-E;" + "'TestFileMetaInformation" + "|TestElement2" + "|TestSCUValidation" + "|TestEcho" + "|TestFind'")))) + (home-page "http://gdcm.sourceforge.net/wiki/index.php/Main_Page") + (synopsis "Grassroots DICOM library") + (description + "Grassroots DICOM (GDCM) is an implementation of the DICOM standard +designed to be open source so that researchers may access clinical data +directly. GDCM includes a file format definition and a network communications +protocol, both of which should be extended to provide a full set of tools for +a researcher or small medical imaging vendor to interface with an existing +medical database.") + (license license:bsd-2))) + (define-public wiggletools (package (name "wiggletools") |