summary refs log tree commit diff
path: root/gnu/packages/bioinformatics.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/bioinformatics.scm')
-rw-r--r--gnu/packages/bioinformatics.scm658
1 files changed, 341 insertions, 317 deletions
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 1e04081ceb..96ea07bdc4 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -1332,7 +1332,7 @@ gapped, local, and paired-end alignment modes.")
 (define-public tophat
   (package
     (name "tophat")
-    (version "2.1.0")
+    (version "2.1.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1340,13 +1340,12 @@ gapped, local, and paired-end alignment modes.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "168zlzykq622zbgkh90a90f1bdgsxkscq2zxzbj8brq80hbjpyp7"))
-              (patches (search-patches "tophat-build-with-later-seqan.patch"))
+                "19add02kv2xhd6ihd779dr7x35ggym3jqr0m5c4315i1yfb0p11p"))
               (modules '((guix build utils)))
               (snippet
                '(begin
                   ;; Remove bundled SeqAn and samtools
-                  (delete-file-recursively "src/SeqAn-1.3")
+                  (delete-file-recursively "src/SeqAn-1.4.2")
                   (delete-file-recursively "src/samtools-0.1.18")
                   #t))))
     (build-system gnu-build-system)
@@ -1383,7 +1382,7 @@ gapped, local, and paired-end alignment modes.")
        ("python" ,python-2)
        ("perl" ,perl)
        ("zlib" ,zlib)
-       ("seqan" ,seqan)))
+       ("seqan" ,seqan-1)))
     (home-page "http://ccb.jhu.edu/software/tophat/index.shtml")
     (synopsis "Spliced read mapper for RNA-Seq data")
     (description
@@ -1450,13 +1449,14 @@ and more accurate.  BWA-MEM also has better performance than BWA-backtrack for
     (name "bwa-pssm")
     (version "0.5.11")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/pkerpedjiev/bwa-pssm/"
-                                  "archive/" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/pkerpedjiev/bwa-pssm.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "02p7mpbs4mlxmn84g2x4ghak638vbj4lqix2ipx5g84pz9bhdavg"))))
+                "076c4q0cdqz8jgylb067y9zmvxglppnzi3qiscn0xiypgc6lgb5r"))))
     (build-system gnu-build-system)
     (inputs
      `(("gdsl" ,gdsl)
@@ -1474,40 +1474,38 @@ the original BWA alignment program and shares the genome index structure as
 well as many of the command line options.")
     (license license:gpl3+)))
 
-(define-public python2-bx-python
+(define-public python-bx-python
   (package
-    (name "python2-bx-python")
-    (version "0.7.3")
+    (name "python-bx-python")
+    (version "0.8.2")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "bx-python" version))
               (sha256
                (base32
-                "15z2w3bvnc0n4qmb9bd6d8ylc2h2nj883x2w9iixf4x3vki9b22i"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  (substitute* "setup.py"
-                    ;; remove dependency on outdated "distribute" module
-                    (("^from distribute_setup import use_setuptools") "")
-                    (("^use_setuptools\\(\\)") ""))
-                  #t))))
+                "11kksg2rbzihpmcid823xvg42xi88m7sz58rzk29abybkxy0rszs"))))
     (build-system python-build-system)
-    (arguments
-     `(#:tests? #f ;tests fail because test data are not included
-       #:python ,python-2))
+    ;; Tests fail because test data are not included
+    (arguments '(#:tests? #f))
+    (propagated-inputs
+     `(("python-numpy" ,python-numpy)
+       ("python-six" ,python-six)))
     (inputs
-     `(("python-numpy" ,python2-numpy)
-       ("zlib" ,zlib)))
+     `(("zlib" ,zlib)))
     (native-inputs
-     `(("python-nose" ,python2-nose)))
-    (home-page "http://bitbucket.org/james_taylor/bx-python/")
+     `(("python-lzo" ,python-lzo)
+       ("python-nose" ,python-nose)
+       ("python-cython" ,python-cython)))
+    (home-page "https://github.com/bxlab/bx-python")
     (synopsis "Tools for manipulating biological data")
     (description
      "bx-python provides tools for manipulating biological data, particularly
 multiple sequence alignments.")
     (license license:expat)))
 
+(define-public python2-bx-python
+  (package-with-python2 python-bx-python))
+
 (define-public python-pysam
   (package
     (name "python-pysam")
@@ -1597,19 +1595,19 @@ also includes an interface for tabix.")
 (define-public python-twobitreader
   (package
     (name "python-twobitreader")
-    (version "3.1.4")
+    (version "3.1.6")
     (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "twobitreader" version))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/benjschiller/twobitreader")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1q8wnj2kga9nz1lwc4w7qv52smfm536hp6mc8w6s53lhyj0mpi22"))))
+                "1qbxvv1h58cismbk1anpjrkpghsaiy64a11ir3lhy6qch6xf8n62"))))
     (build-system python-build-system)
-    (arguments
-     '(;; Tests are not distributed in the PyPi release.
-       ;; TODO Try building from the Git repo or asking the upstream maintainer
-       ;; to distribute the tests on PyPi.
-       #:tests? #f))
+    ;; Tests are not included
+    (arguments '(#:tests? #f))
     (native-inputs
      `(("python-sphinx" ,python-sphinx)))
     (home-page "https://github.com/benjschiller/twobitreader")
@@ -1896,31 +1894,18 @@ time.")
 (define-public crossmap
   (package
     (name "crossmap")
-    (version "0.2.1")
+    (version "0.2.9")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://sourceforge/crossmap/CrossMap-"
-                                  version ".tar.gz"))
+              (uri (pypi-uri "CrossMap" version))
               (sha256
                (base32
-                "07y179f63d7qnzdvkqcziwk9bs3k4zhp81q392fp1hwszjdvy22f"))
-              ;; This patch has been sent upstream already and is available
-              ;; for download from Sourceforge, but it has not been merged.
-              (patches (search-patches "crossmap-allow-system-pysam.patch"))
-              (modules '((guix build utils)))
-              (snippet '(begin
-                          ;; remove bundled copy of pysam
-                          (delete-file-recursively "lib/pysam")
-                          #t))))
+                "1byhclrqnqpvc1rqkfh4jwj6yhn0x9y7jk47i0qcjlhk0pjkw92p"))))
     (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'set-env
-           (lambda _ (setenv "CROSSMAP_USE_SYSTEM_PYSAM" "1") #t)))))
+    (arguments `(#:python ,python-2))
     (inputs
-     `(("python-numpy" ,python2-numpy)
+     `(("python-bx-python" ,python2-bx-python)
+       ("python-numpy" ,python2-numpy)
        ("python-pysam" ,python2-pysam)
        ("zlib" ,zlib)))
     (native-inputs
@@ -1934,22 +1919,46 @@ files between different genome assemblies.  It supports most commonly used
 file formats including SAM/BAM, Wiggle/BigWig, BED, GFF/GTF, VCF.")
     (license license:gpl2+)))
 
+(define-public python-dnaio
+  (package
+    (name "python-dnaio")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "dnaio" version))
+       (sha256
+        (base32
+         "0f16m7hdlm0fz1n7y5asy0v9ghyrq17ni1p9iybq22ddzyd49r27"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-cython" ,python-cython)
+       ("python-pytest" ,python-pytest)
+       ("python-xopen" ,python-xopen)))
+    (home-page "https://github.com/marcelm/dnaio/")
+    (synopsis "Read FASTA and FASTQ files efficiently")
+    (description
+     "dnaio is a Python library for fast parsing of FASTQ and also FASTA
+files.  The code was previously part of the cutadapt tool.")
+    (license license:expat)))
+
 (define-public cutadapt
   (package
     (name "cutadapt")
-    (version "1.16")
+    (version "1.18")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/marcelm/cutadapt.git")
                     (commit (string-append "v" version))))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "09pr02067jiks19nc0aby4xp70hhgvb554i2y1c04rv1m401w7q8"))))
+                "08bbfwyc0kvcd95jf2s95xiv9s3cbsxm39ydl0qck3fw3cviwxpg"))))
     (build-system python-build-system)
     (inputs
-     `(("python-xopen" ,python-xopen)))
+     `(("python-dnaio" ,python-dnaio)
+       ("python-xopen" ,python-xopen)))
     (native-inputs
      `(("python-cython" ,python-cython)
        ("python-pytest" ,python-pytest)))
@@ -2044,15 +2053,15 @@ accessing bigWig files.")
     (version "4.4.0")
     (source
      (origin
-       (method url-fetch)
+       (method git-fetch)
        ;; Source from GitHub so that tests are included.
-       (uri
-        (string-append "https://github.com/jeetsukumaran/DendroPy/archive/v"
-                       version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (uri (git-reference
+             (url "https://github.com/jeetsukumaran/DendroPy.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0v2fccny5xjaah546bsch1mw4kh61qq5frz2ibllxs9mp6ih9bsn"))))
+         "097hfyv2kaf4x92i4rjx0paw2cncxap48qivv8zxng4z7nhid0x9"))))
     (build-system python-build-system)
     (home-page "http://packages.python.org/DendroPy/")
     (synopsis "Library for phylogenetics and phylogenetic computing")
@@ -2082,14 +2091,14 @@ trees (phylogenies) and characters.")
 (define-public python-py2bit
   (package
     (name "python-py2bit")
-    (version "0.2.1")
+    (version "0.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "py2bit" version))
        (sha256
         (base32
-         "1cdf4qlmgwsh1f4k0wdv2sr8x9qn4366p0k3614vbd0fpqiarxrl"))))
+         "1vw2nvw1yrl7ikkqsqs1pg239yr5nspvd969r1x9arms1k25a1a5"))))
     (build-system python-build-system)
     (home-page "https://github.com/dpryan79/py2bit")
     (synopsis "Access 2bit files using lib2bit")
@@ -2101,7 +2110,7 @@ with Python.")
 (define-public deeptools
   (package
     (name "deeptools")
-    (version "3.1.2")
+    (version "3.1.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2110,7 +2119,7 @@ with Python.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "06fdpp6cg3xiwryxjhixvfysl4z0ps1crjgia587qa9ikqpsa7fd"))))
+                "1vggnf52g6q2vifdl4cyi7s2fnfqq0ky2zrkj5zv2qfzsc3p3siw"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -2146,42 +2155,42 @@ identify enrichments with functional annotations of the genome.")
 (define-public delly
   (package
     (name "delly")
-    (version "0.7.7")
+    (version "0.7.9")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/tobiasrausch/delly/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/dellytools/delly.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
-               (base32 "0dkwy3pyxmi6dhh1lpsr3698ri5sslw9qz67hfys0bz8dgrqwabj"))
-              (patches (search-patches "delly-use-system-libraries.patch"))))
+               (base32 "034jqsxswy9gqdh2zkgc1js99qkv75ks4xvzgmh0284sraagv61z"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (delete-file-recursively "src/htslib")
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; There are no tests to run.
-       #:make-flags '("PARALLEL=1") ; Allow parallel execution at run-time.
+       #:make-flags
+       (list "PARALLEL=1"  ; Allow parallel execution at run-time.
+             (string-append "prefix=" (assoc-ref %outputs "out")))
        #:phases
        (modify-phases %standard-phases
          (delete 'configure) ; There is no configure phase.
-         (replace 'install
-           (lambda _
-             (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
-                   (templates (string-append (assoc-ref %outputs "out")
+         (add-after 'install 'install-templates
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((templates (string-append (assoc-ref outputs "out")
                                              "/share/delly/templates")))
-               (mkdir-p bin)
                (mkdir-p templates)
                (copy-recursively "excludeTemplates" templates)
-               (install-file "src/cov" bin)
-               (install-file "src/delly" bin)
-               (install-file "src/dpe" bin)))))))
-    (native-inputs
-     `(("python" ,python-2)))
+               #t))))))
     (inputs
      `(("boost" ,boost)
        ("htslib" ,htslib)
        ("zlib" ,zlib)
        ("bzip2" ,bzip2)))
-    (home-page "https://github.com/tobiasrausch/delly")
+    (home-page "https://github.com/dellytools/delly")
     (synopsis "Integrated structural variant prediction method")
     (description "Delly is an integrated structural variant prediction method
 that can discover and genotype deletions, tandem duplications, inversions and
@@ -2195,14 +2204,14 @@ accurately delineate genomic rearrangements throughout the genome.")
     (name "diamond")
     (version "0.9.22")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/bbuchfink/diamond/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/bbuchfink/diamond.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0adp87r9ak63frdrdmrdfhsn6g0jnnyq1lr2wibvqbxcl37iir9m"))))
+                "0bky78v79g3wmdpsd706cscckgw1v09fg8vdd0z8z0d5b97aj9zl"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f ; no "check" target
@@ -2230,13 +2239,14 @@ data and settings.")
     (version "1.6.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/maaskola/discrover/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/maaskola/discrover.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0rah9ja4m0rl5mldd6vag9rwrivw1zrqxssfq8qx64m7961fp68k"))))
+         "173fwi2vb6a5kp406hm3jj6j7v4whww796f2qcygp4rpvamh307y"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; there are no tests
@@ -2264,106 +2274,102 @@ of nucleic acid binding proteins.")
     (license license:gpl3+)))
 
 (define-public eigensoft
-  (let ((revision "1")
-        (commit "b14d1e202e21e532536ff8004f0419cd5e259dc7"))
-    (package
-      (name "eigensoft")
-      (version (string-append "6.1.2-"
-                              revision "."
-                              (string-take commit 9)))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/DReichLab/EIG.git")
-               (commit commit)))
-         (file-name (string-append "eigensoft-" commit "-checkout"))
-         (sha256
-          (base32
-           "0f5m6k2j5c16xc3xbywcs989xyc26ncy1zfzp9j9n55n9r4xcaiq"))
-         (modules '((guix build utils)))
-         ;; Remove pre-built binaries.
-         (snippet '(begin
-                     (delete-file-recursively "bin")
-                     (mkdir "bin")
-                     #t))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:tests? #f                    ; There are no tests.
-         #:make-flags '("CC=gcc")
-         #:phases
-         (modify-phases %standard-phases
-           ;; There is no configure phase, but the Makefile is in a
-           ;; sub-directory.
-           (replace 'configure
-             (lambda _
-               (chdir "src")
-               ;; The link flags are incomplete.
-               (substitute* "Makefile"
-                 (("-lgsl") "-lgsl -lm -llapack -llapacke -lpthread"))
-               #t))
-           ;; The provided install target only copies executables to
-           ;; the "bin" directory in the build root.
-           (add-after 'install 'actually-install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (bin  (string-append out "/bin")))
-                 (for-each (lambda (file)
-                             (install-file file bin))
-                           (find-files "../bin" ".*"))
-                 #t))))))
-      (inputs
-       `(("gsl" ,gsl)
-         ("lapack" ,lapack)
-         ("openblas" ,openblas)
-         ("perl" ,perl)
-         ("gfortran" ,gfortran "lib")))
-      (home-page "https://github.com/DReichLab/EIG")
-      (synopsis "Tools for population genetics")
-      (description "The EIGENSOFT package provides tools for population
+  (package
+    (name "eigensoft")
+    (version "7.2.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/DReichLab/EIG.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1c141fqvhnzibmnf22sv23vbmzm20kjjyrib44cfh75wyndp2d9k"))
+       (modules '((guix build utils)))
+       ;; Remove pre-built binaries.
+       (snippet '(begin
+                   (delete-file-recursively "bin")
+                   (mkdir "bin")
+                   #t))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                    ; There are no tests.
+       #:make-flags '("CC=gcc")
+       #:phases
+       (modify-phases %standard-phases
+         ;; There is no configure phase, but the Makefile is in a
+         ;; sub-directory.
+         (replace 'configure
+           (lambda _ (chdir "src") #t))
+         ;; The provided install target only copies executables to
+         ;; the "bin" directory in the build root.
+         (add-after 'install 'actually-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin  (string-append out "/bin")))
+               (for-each (lambda (file)
+                           (install-file file bin))
+                         (find-files "../bin" ".*"))
+               #t))))))
+    (inputs
+     `(("gsl" ,gsl)
+       ("lapack" ,lapack)
+       ("openblas" ,openblas)
+       ("perl" ,perl)
+       ("gfortran" ,gfortran "lib")))
+    (home-page "https://github.com/DReichLab/EIG")
+    (synopsis "Tools for population genetics")
+    (description "The EIGENSOFT package provides tools for population
 genetics and stratification correction.  EIGENSOFT implements methods commonly
 used in population genetics analyses such as PCA, computation of Tracy-Widom
 statistics, and finding related individuals in structured populations.  It
 comes with a built-in plotting script and supports multiple file formats and
 quantitative phenotypes.")
-      ;; The license of the eigensoft tools is Expat, but since it's
-      ;; linking with the GNU Scientific Library (GSL) the effective
-      ;; license is the GPL.
-      (license license:gpl3+))))
+    ;; The license of the eigensoft tools is Expat, but since it's
+    ;; linking with the GNU Scientific Library (GSL) the effective
+    ;; license is the GPL.
+    (license license:gpl3+)))
 
 (define-public edirect
   (package
     (name "edirect")
-    (version "4.10")
+    (version "10.2.20181018")
     (source (origin
               (method url-fetch)
-              (uri (string-append "ftp://ftp.ncbi.nlm.nih.gov/entrez/entrezdirect/"
-                                  "versions/2016-05-03/edirect.tar.gz"))
+              (uri (string-append "ftp://ftp.ncbi.nlm.nih.gov/entrez/entrezdirect"
+                                  "/versions/" version
+                                  "/edirect-" version ".tar.gz"))
               (sha256
                (base32
-                "15zsprak5yh8c1yrz4r1knmb5s8qcmdid4xdhkh3lqcv64l60hli"))))
+                "091f4aigzpbqih6h82nq566gkp3y07i72yqndmqskfgar1vwgci7"))))
     (build-system perl-build-system)
     (arguments
-     `(#:tests? #f ;no "check" target
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (delete 'configure)
          (delete 'build)
+         (delete 'check)                ; simple check after install
          (replace 'install
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let ((target (string-append (assoc-ref outputs "out")
-                                                 "/bin")))
-                      (mkdir-p target)
-                      (install-file "edirect.pl" target)
-                      #t)))
-         (add-after
-          'install 'wrap-program
-          (lambda* (#:key inputs outputs #:allow-other-keys)
-            ;; Make sure 'edirect.pl' finds all perl inputs at runtime.
-            (let* ((out (assoc-ref outputs "out"))
-                   (path (getenv "PERL5LIB")))
-              (wrap-program (string-append out "/bin/edirect.pl")
-                `("PERL5LIB" ":" prefix (,path)))))))))
+           (lambda* (#:key outputs #:allow-other-keys)
+             (install-file "edirect.pl"
+                           (string-append (assoc-ref outputs "out") "/bin"))
+             #t))
+         (add-after 'install 'wrap-program
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Make sure 'edirect.pl' finds all perl inputs at runtime.
+             (let* ((out (assoc-ref outputs "out"))
+                    (path (getenv "PERL5LIB")))
+               (wrap-program (string-append out "/bin/edirect.pl")
+                 `("PERL5LIB" ":" prefix (,path))))
+             #t))
+         (add-after 'wrap-program 'check
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke (string-append (assoc-ref outputs "out")
+                                    "/bin/edirect.pl")
+                     "-filter" "-help")
+             #t)))))
     (inputs
      `(("perl-html-parser" ,perl-html-parser)
        ("perl-encode-locale" ,perl-encode-locale)
@@ -2379,6 +2385,7 @@ quantitative phenotypes.")
        ("perl-net-http" ,perl-net-http)
        ("perl-uri" ,perl-uri)
        ("perl-www-robotrules" ,perl-www-robotrules)
+       ("perl-xml-simple" ,perl-xml-simple)
        ("perl" ,perl)))
     (home-page "http://www.ncbi.nlm.nih.gov/books/NBK179288/")
     (synopsis "Tools for accessing the NCBI's set of databases")
@@ -2474,17 +2481,16 @@ ChIP-Seq, and analysis of metagenomic data.")
 (define-public express-beta-diversity
   (package
    (name "express-beta-diversity")
-   (version "1.0.7")
+   (version "1.0.8")
    (source (origin
-             (method url-fetch)
-             (uri
-              (string-append
-               "https://github.com/dparks1134/ExpressBetaDiversity/archive/v"
-               version ".tar.gz"))
-             (file-name (string-append name "-" version ".tar.gz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/dparks1134/ExpressBetaDiversity.git")
+                   (commit (string-append "v" version))))
+             (file-name (git-file-name name version))
              (sha256
               (base32
-               "1djvdlmqvjf6h0zq7w36y8cl5cli6rgj86x65znl48agnwmzxfxr"))))
+               "0s0yzg5c21349rh7x4w9266jsvnp7j1hp9cf8sk32hz8nvrj745x"))))
    (build-system gnu-build-system)
    (arguments
     `(#:phases
@@ -2492,17 +2498,13 @@ ChIP-Seq, and analysis of metagenomic data.")
         (delete 'configure)
         (add-before 'build 'enter-source (lambda _ (chdir "source") #t))
         (replace 'check
-                 (lambda _ (zero? (system* "../bin/ExpressBetaDiversity"
-                                           "-u"))))
-        (add-after 'check 'exit-source (lambda _ (chdir "..") #t))
+          (lambda _ (invoke "../bin/ExpressBetaDiversity" "-u") #t))
         (replace 'install
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let ((bin (string-append (assoc-ref outputs "out")
-                                             "/bin")))
-                     (mkdir-p bin)
-                     (install-file "scripts/convertToEBD.py" bin)
-                     (install-file "bin/ExpressBetaDiversity" bin)
-                     #t))))))
+          (lambda* (#:key outputs #:allow-other-keys)
+            (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
+              (install-file "../scripts/convertToEBD.py" bin)
+              (install-file "../bin/ExpressBetaDiversity" bin)
+              #t))))))
    (inputs
     `(("python" ,python-2)))
    (home-page "http://kiwi.cs.dal.ca/Software/ExpressBetaDiversity")
@@ -2535,31 +2537,30 @@ similarity of community members.")
         (delete 'configure)
         (replace 'build
           (lambda* (#:key source #:allow-other-keys)
-            (and (zero? (system* "gcc"
-                                 "-O3"
-                                 "-finline-functions"
-                                 "-funroll-loops"
-                                 "-Wall"
-                                 "-o"
-                                 "FastTree"
-                                 source
-                                 "-lm"))
-                 (zero? (system* "gcc"
-                                 "-DOPENMP"
-                                 "-fopenmp"
-                                 "-O3"
-                                 "-finline-functions"
-                                 "-funroll-loops"
-                                 "-Wall"
-                                 "-o"
-                                 "FastTreeMP"
-                                 source
-                                 "-lm")))))
+            (invoke "gcc"
+                    "-O3"
+                    "-finline-functions"
+                    "-funroll-loops"
+                    "-Wall"
+                    "-o"
+                    "FastTree"
+                    source
+                    "-lm")
+            (invoke "gcc"
+                    "-DOPENMP"
+                    "-fopenmp"
+                    "-O3"
+                    "-finline-functions"
+                    "-funroll-loops"
+                    "-Wall"
+                    "-o"
+                    "FastTreeMP"
+                    source
+                    "-lm")
+            #t))
         (replace 'install
           (lambda* (#:key outputs #:allow-other-keys)
-            (let ((bin (string-append (assoc-ref outputs "out")
-                                      "/bin")))
-              (mkdir-p bin)
+            (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
               (install-file "FastTree" bin)
               (install-file "FastTreeMP" bin)
               #t))))))
@@ -2606,38 +2607,39 @@ results.  The FASTX-Toolkit tools perform some of these preprocessing tasks.")
 (define-public flexbar
   (package
     (name "flexbar")
-    (version "2.5")
+    (version "3.4.0")
     (source (origin
-              (method url-fetch)
-              (uri
-               (string-append "mirror://sourceforge/flexbar/"
-                              version "/flexbar_v" version "_src.tgz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/seqan/flexbar.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "13jaykc3y1x8y5nn9j8ljnb79s5y51kyxz46hdmvvjj6qhyympmf"))))
+                "1pq9sxvdnldl14libk234m72dqhwgzs3acgl943wchwdqlcsi5r2"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:configure-flags (list
-                          (string-append "-DFLEXBAR_BINARY_DIR="
-                                         (assoc-ref %outputs "out")
-                                         "/bin/"))
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (replace 'check
            (lambda* (#:key outputs #:allow-other-keys)
-             (setenv "PATH" (string-append
-                             (assoc-ref outputs "out") "/bin:"
-                             (getenv "PATH")))
-             (chdir "../flexbar_v2.5_src/test")
-             (zero? (system* "bash" "flexbar_validate.sh"))))
-         (delete 'install))))
+             (setenv "PATH" (string-append (getcwd) ":" (getenv "PATH")))
+             (with-directory-excursion "../source/test"
+               (invoke "bash" "flexbar_test.sh"))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (string-append (assoc-ref outputs "out")))
+                    (bin (string-append out "/bin/")))
+               (install-file "flexbar" bin))
+             #t)))))
     (inputs
      `(("tbb" ,tbb)
        ("zlib" ,zlib)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("seqan" ,seqan)))
-    (home-page "http://flexbar.sourceforge.net")
+    (home-page "https://github.com/seqan/flexbar")
     (synopsis "Barcode and adapter removal tool for sequencing platforms")
     (description
      "Flexbar preprocesses high-throughput nucleotide sequencing data
@@ -2646,7 +2648,7 @@ Moreover, trimming and filtering features are provided.  Flexbar increases
 read mapping rates and improves genome and transcriptome assemblies.  It
 supports next-generation sequencing data in fasta/q and csfasta/q format from
 Illumina, Roche 454, and the SOLiD platform.")
-    (license license:gpl3)))
+    (license license:bsd-3)))
 
 (define-public fraggenescan
   (package
@@ -3741,75 +3743,48 @@ command, or queried for specific k-mers with @code{jellyfish query}.")
 (define-public khmer
   (package
     (name "khmer")
-    (version "2.0")
+    (version "2.1.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (pypi-uri "khmer" version))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/dib-lab/khmer.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0wb05shqh77v00256qlm68vbbx3kl76fyzihszbz5nhanl4ni33a"))
-       (patches (search-patches "khmer-use-libraries.patch"))))
+         "02x38d9jw2r58y8dmnj4hffy9wxv1yc1jwbvdbhby9dxndv94r9m"))
+       (patches (search-patches "khmer-use-libraries.patch"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Delete bundled libraries.  We do not replace the bundled seqan
+           ;; as it is a modified subset of the old version 1.4.1.
+           ;;
+           ;; We do not replace the bundled MurmurHash as the canonical
+           ;; repository for this code 'SMHasher' is unsuitable for providing
+           ;; a library.  See
+           ;; https://lists.gnu.org/archive/html/guix-devel/2016-06/msg00977.html
+           (delete-file-recursively "third-party/zlib")
+           (delete-file-recursively "third-party/bzip2")
+           #t))))
     (build-system python-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'set-paths
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             ;; Delete bundled libraries.
-             (delete-file-recursively "third-party/zlib")
-             (delete-file-recursively "third-party/bzip2")
-             ;; Replace bundled seqan.
-             (let* ((seqan-all "third-party/seqan")
-                    (seqan-include (string-append
-                                    seqan-all "/core/include")))
-               (delete-file-recursively seqan-all)
-               (copy-recursively (string-append (assoc-ref inputs "seqan")
-                                                "/include/seqan")
-                          (string-append seqan-include "/seqan")))
-             ;; We do not replace the bundled MurmurHash as the canonical
-             ;; repository for this code 'SMHasher' is unsuitable for
-             ;; providing a library.  See
-             ;; https://lists.gnu.org/archive/html/guix-devel/2016-06/msg00977.html
-             #t))
          (add-after 'unpack 'set-cc
-           (lambda _
-             (setenv "CC" "gcc")
-             #t))
-         ;; It is simpler to test after installation.
-         (delete 'check)
-         (add-after 'install 'post-install-check
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (setenv "PATH"
-                       (string-append
-                        (getenv "PATH")
-                        ":"
-                        (assoc-ref outputs "out")
-                        "/bin"))
-               (setenv "PYTHONPATH"
-                       (string-append
-                        (getenv "PYTHONPATH")
-                        ":"
-                        out
-                        "/lib/python"
-                        (string-take (string-take-right
-                                      (assoc-ref inputs "python") 5) 3)
-                        "/site-packages"))
-               (with-directory-excursion "build"
-                 (zero? (system* "nosetests" "khmer" "--attr"
-                                 "!known_failing")))))))))
+           (lambda _ (setenv "CC" "gcc") #t))
+         ;; FIXME: This fails with "permission denied".
+         (delete 'reset-gzip-timestamps))))
     (native-inputs
-     `(("seqan" ,seqan)
-       ("python-nose" ,python-nose)))
+     `(("python-cython" ,python-cython)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-runner" ,python-pytest-runner)))
     (inputs
      `(("zlib" ,zlib)
        ("bzip2" ,bzip2)
        ("python-screed" ,python-screed)
-       ("python-bz2file" ,python-bz2file)
-       ;; Tests fail when gcc-5 is used for compilation.  Use gcc-4.9 at least
-       ;; until the next version of khmer (likely 2.1) is released.
-       ("gcc" ,gcc-4.9)))
+       ("python-bz2file" ,python-bz2file)))
     (home-page "https://khmer.readthedocs.org/")
     (synopsis "K-mer counting, filtering and graph traversal library")
     (description "The khmer software is a set of command-line tools for
@@ -5601,25 +5576,38 @@ complexity samples.")
 (define-public python-screed
   (package
     (name "python-screed")
-    (version "0.9")
+    (version "1.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "screed" version))
        (sha256
         (base32
-         "18czszp9fkx3j6jr7y5kp6dfialscgddk05mw1zkhh2zhn0jd8i0"))))
+         "148vcb7w2wr6a4w6vs2bsxanbqibxfk490zbcbg4m61s8669zdjx"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases
+     '(#:phases
        (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             (setenv "PYTHONPATH"
-                     (string-append (getenv "PYTHONPATH") ":."))
-             (zero? (system* "nosetests" "--attr" "!known_failing")))))))
+         ;; 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-nose" ,python-nose)))
+     `(("python-pytest" ,python-pytest)
+       ("python-pytest-cov" ,python-pytest-cov)
+       ("python-pytest-runner" ,python-pytest-runner)))
     (inputs
      `(("python-bz2file" ,python-bz2file)))
     (home-page "https://github.com/dib-lab/screed/")
@@ -5746,14 +5734,15 @@ writing files into the .sra format.")
 (define-public seqan
   (package
     (name "seqan")
-    (version "1.4.2")
+    (version "2.4.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://packages.seqan.de/seqan-library/"
-                                  "seqan-library-" version ".tar.bz2"))
+              (uri (string-append "https://github.com/seqan/seqan/releases/"
+                                  "download/seqan-v" version
+                                  "/seqan-library-" version ".tar.xz"))
               (sha256
                (base32
-                "05s3wrrwn50f81aklfm65i4a749zag1vr8z03k21xm0pdxy47yvp"))))
+                "19a1rlxx03qy1i1iriicly68w64yjxbv24g9gdywnfmq998v35yx"))))
     ;; The documentation is 7.8MB and the includes are 3.6MB heavy, so it
     ;; makes sense to split the outputs.
     (outputs '("out" "doc"))
@@ -5763,11 +5752,11 @@ writing files into the .sra format.")
        #:builder
        (begin
          (use-modules (guix build utils))
-         (let ((tar  (assoc-ref %build-inputs "tar"))
-               (bzip (assoc-ref %build-inputs "bzip2"))
-               (out  (assoc-ref %outputs "out"))
-               (doc  (assoc-ref %outputs "doc")))
-           (setenv "PATH" (string-append tar "/bin:" bzip "/bin"))
+         (let ((tar (assoc-ref %build-inputs "tar"))
+               (xz  (assoc-ref %build-inputs "xz"))
+               (out (assoc-ref %outputs "out"))
+               (doc (assoc-ref %outputs "doc")))
+           (setenv "PATH" (string-append tar "/bin:" xz "/bin"))
            (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
            (chdir (string-append "seqan-library-" ,version))
            (copy-recursively "include" (string-append out "/include"))
@@ -5776,7 +5765,7 @@ writing files into the .sra format.")
     (native-inputs
      `(("source" ,source)
        ("tar" ,tar)
-       ("bzip2" ,bzip2)))
+       ("xz" ,xz)))
     (home-page "http://www.seqan.de")
     (synopsis "Library for nucleotide sequence analysis")
     (description
@@ -5787,6 +5776,41 @@ manipulation, online and indexed string search, efficient I/O of
 bioinformatics file formats, sequence alignment, and more.")
     (license license:bsd-3)))
 
+(define-public seqan-1
+  (package (inherit seqan)
+    (name "seqan")
+    (version "1.4.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://packages.seqan.de/seqan-library/"
+                                  "seqan-library-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "05s3wrrwn50f81aklfm65i4a749zag1vr8z03k21xm0pdxy47yvp"))))
+    ;; The documentation is 7.8MB and the includes are 3.6MB heavy, so it
+    ;; makes sense to split the outputs.
+    (outputs '("out" "doc"))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let ((tar  (assoc-ref %build-inputs "tar"))
+               (bzip (assoc-ref %build-inputs "bzip2"))
+               (out  (assoc-ref %outputs "out"))
+               (doc  (assoc-ref %outputs "doc")))
+           (setenv "PATH" (string-append tar "/bin:" bzip "/bin"))
+           (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
+           (chdir (string-append "seqan-library-" ,version))
+           (copy-recursively "include" (string-append out "/include"))
+           (copy-recursively "share"  (string-append doc "/share"))
+           #t))))
+    (native-inputs
+     `(("source" ,source)
+       ("tar" ,tar)
+       ("bzip2" ,bzip2)))))
+
 (define-public seqmagick
   (package
     (name "seqmagick")