gnu: r-bsgenome-celegans-ucsc-ce6: Move to (gnu packages bioconductor).
[jackhill/guix/guix.git] / gnu / packages / bioinformatics.scm
index 94bae01..efe4c9b 100644 (file)
@@ -12,6 +12,7 @@
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2018 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
+;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -72,6 +73,7 @@
   #:use-module (gnu packages graph)
   #:use-module (gnu packages groff)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages guile-xyz)
   #:use-module (gnu packages haskell)
   #:use-module (gnu packages haskell-check)
   #:use-module (gnu packages haskell-web)
@@ -82,6 +84,7 @@
   #:use-module (gnu packages jemalloc)
   #:use-module (gnu packages dlang)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages lisp)
   #:use-module (gnu packages logging)
   #:use-module (gnu packages machine-learning)
   #:use-module (gnu packages man)
   #:use-module (gnu packages popt)
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-compression)
   #:use-module (gnu packages python-web)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages ruby)
   #:use-module (gnu packages serialization)
@@ -609,16 +614,22 @@ intended to behave exactly the same as the original BWK awk.")
 (define-public python-pybedtools
   (package
     (name "python-pybedtools")
-    (version "0.7.10")
+    (version "0.8.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "pybedtools" version))
               (sha256
                (base32
-                "0l2b2wrnj85azfqgr0zwr60f7j58vlla1hcgxvr9rwikpl8j72ji"))))
+                "1xl454ijvd4dzfvqgfahad49b49j7qy710fq9xh1rvk42z6x5ssf"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases
+     `(#: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
+       #:phases
        (modify-phases %standard-phases
          ;; See https://github.com/daler/pybedtools/issues/261
          (add-after 'unpack 'disable-broken-tests
@@ -628,21 +639,59 @@ intended to behave exactly the same as the original BWK awk.")
              (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"
+               ;; Requires internet access.
                (("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
-     ;; Tests don't pass with Bedtools 2.27.1.
-     ;; See https://github.com/daler/pybedtools/issues/260
-     `(("bedtools" ,bedtools-2.26)
+                "def _do_not_test_chromsizes")
+               ;; Broken as a result of the workaround used in the check phase
+               ;; (see: https://github.com/daler/pybedtools/issues/192).
+               (("def test_getting_example_beds")
+                "def _do_not_test_getting_example_beds"))
+             #t))
+         ;; 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
+           (lambda _
+             (let ((cython-sources (map (cut string-drop-right <> 4)
+                                        (find-files "." "\\.pyx$")))
+                   (c/c++-files (find-files "." "\\.(c|cpp|cxx)$")))
+               (define (strip-extension filename)
+                 (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)))
+         (add-after 'remove-cython-generated-files 'generate-cython-extensions
+           (lambda _
+             (invoke "python" "setup.py" "cythonize")))
+         (replace 'check
+           (lambda _
+             (let* ((cwd (getcwd))
+                    (build-root-directory (string-append cwd "/build/"))
+                    (build (string-append
+                            build-root-directory
+                            (find (cut string-prefix? "lib" <>)
+                                  (scandir (string-append
+                                            build-root-directory)))))
+                    (scripts (string-append
+                              build-root-directory
+                              (find (cut string-prefix? "scripts" <>)
+                                    (scandir build-root-directory)))))
+               (setenv "PYTHONPATH"
+                       (string-append build ":" (getenv "PYTHONPATH")))
+               ;; Executable scripts such as 'intron_exon_reads.py' must be
+               ;; available in the PATH.
+               (setenv "PATH"
+                       (string-append scripts ":" (getenv "PATH"))))
+             ;; The tests need to be run from elsewhere...
+             (mkdir-p "/tmp/test")
+             (copy-recursively "pybedtools/test" "/tmp/test")
+             (with-directory-excursion "/tmp/test"
+               (invoke "pytest")))))))
+    (propagated-inputs
+     `(("bedtools" ,bedtools)
        ("samtools" ,samtools)
        ("python-matplotlib" ,python-matplotlib)
        ("python-pysam" ,python-pysam)
@@ -651,9 +700,11 @@ intended to behave exactly the same as the original BWK awk.")
      `(("python-numpy" ,python-numpy)
        ("python-pandas" ,python-pandas)
        ("python-cython" ,python-cython)
-       ("python-nose" ,python-nose)
-       ("kentutils" ,kentutils) ; for bedGraphToBigWig
-       ("python-six" ,python-six)))
+       ("kentutils" ,kentutils)         ; for bedGraphToBigWig
+       ("python-six" ,python-six)
+       ;; For the test suite.
+       ("python-pytest" ,python-pytest)
+       ("python-psutil" ,python-psutil)))
     (home-page "https://pythonhosted.org/pybedtools/")
     (synopsis "Python wrapper for BEDtools programs")
     (description
@@ -664,34 +715,7 @@ 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))))))))))
+  (package-with-python2 python-pybedtools))
 
 (define-public python-biom-format
   (package
@@ -1361,6 +1385,46 @@ gapped, local, and paired-end alignment modes.")
     (supported-systems '("x86_64-linux"))
     (license license:gpl3+)))
 
+(define-public bowtie1
+  (package
+    (name "bowtie1")
+    (version "1.2.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/bowtie-bio/bowtie/"
+                                  version "/bowtie-" version "-src.zip"))
+              (sha256
+               (base32
+                "1jl2cj9bz8lwz8dwnxbycn8yp8g4kky62fkcxifyf1ri0y6n2vc0"))
+              (modules '((guix build utils)))
+              (snippet
+               '(substitute* "Makefile"
+                  ;; replace BUILD_HOST and BUILD_TIME for deterministic build
+                  (("-DBUILD_HOST=.*") "-DBUILD_HOST=\"\\\"guix\\\"\"")
+                  (("-DBUILD_TIME=.*") "-DBUILD_TIME=\"\\\"0\\\"\"")))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f                      ; no "check" target
+       #:make-flags
+       (list "all"
+             (string-append "prefix=" (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))
+    (inputs
+     `(("tbb" ,tbb)
+       ("zlib" ,zlib)))
+    (supported-systems '("x86_64-linux"))
+    (home-page "http://bowtie-bio.sourceforge.net/index.shtml")
+    (synopsis "Fast aligner for short nucleotide sequence reads")
+    (description
+     "Bowtie is a fast, memory-efficient short read aligner.  It aligns short
+DNA sequences (reads) to the human genome at a rate of over 25 million 35-bp
+reads per hour.  Bowtie indexes the genome with a Burrows-Wheeler index to
+keep its memory footprint small: typically about 2.2 GB for the human
+genome (2.9 GB for paired-end).")
+    (license license:artistic2.0)))
+
 (define-public tophat
   (package
     (name "tophat")
@@ -2285,6 +2349,23 @@ data and settings.")
      `(#:tests? #f                      ; there are no tests
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'fix-latex-errors
+           (lambda _
+             (with-fluids ((%default-port-encoding #f))
+               (substitute* "doc/references.bib"
+                 (("\\{S\\}illanp[^,]+,")
+                  "{S}illanp{\\\"a}{\\\"a},")))
+             ;; XXX: I just can't get pdflatex to not complain about these
+             ;; characters.  They end up in the manual via the generated
+             ;; discrover-cli-help.txt.
+             (substitute* "src/hmm/cli.cpp"
+               (("µ") "mu")
+               (("η") "eta")
+               (("≤") "<="))
+             ;; This seems to be a syntax error.
+             (substitute* "doc/discrover-manual.tex"
+               (("theverbbox\\[t\\]") "theverbbox"))
+             #t))
          (add-after 'unpack 'add-missing-includes
            (lambda _
              (substitute* "src/executioninformation.hpp"
@@ -2293,28 +2374,28 @@ data and settings.")
              (substitute* "src/plasma/fasta.hpp"
                (("#define FASTA_HPP" line)
                 (string-append line "\n#include <random>")))
-             #t)))))
+             #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)))))
     (inputs
      `(("boost" ,boost)
-       ("cairo" ,cairo)))
+       ("cairo" ,cairo)
+       ("rmath-standalone" ,rmath-standalone)))
     (native-inputs
-     `(("texlive" ,texlive)
-       ;; TODO: Replace texlive with minimal texlive-union.
-       ;; ("texlive" ,(texlive-union (list texlive-latex-doi
-       ;;                             texlive-latex-hyperref
-       ;;                             texlive-latex-oberdiek
-       ;;                             texlive-generic-ifxetex
-       ;;                             texlive-latex-url
-       ;;                             texlive-latex-pgf
-       ;;                             texlive-latex-examplep
-       ;;                             texlive-latex-natbib
-       ;;                             texlive-latex-verbatimbox
-       ;;                             texlive-latex-ms
-       ;;                             texlive-latex-xcolor
-       ;;                             texlive-fonts-amsfonts
-       ;;                             texlive-latex-amsfonts
-       ;;                             ;; ...
-       ;;                             )))
+     `(("texlive" ,(texlive-union (list texlive-fonts-cm
+                                        texlive-fonts-amsfonts
+
+                                        texlive-latex-doi
+                                        texlive-latex-examplep
+                                        texlive-latex-hyperref
+                                        texlive-latex-ms
+                                        texlive-latex-natbib
+                                        texlive-bibtex         ; style files used by natbib
+                                        texlive-latex-pgf      ; tikz
+                                        texlive-latex-verbatimbox)))
        ("imagemagick" ,imagemagick)))
     (home-page "http://dorina.mdc-berlin.de/public/rajewsky/discrover/")
     (synopsis "Discover discriminative nucleotide sequence motifs")
@@ -2670,6 +2751,11 @@ results.  The FASTX-Toolkit tools perform some of these preprocessing tasks.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'do-not-tune-to-CPU
+           (lambda _
+             (substitute* "src/CMakeLists.txt"
+               ((" -march=native") ""))
+             #t))
          (replace 'check
            (lambda* (#:key outputs #:allow-other-keys)
              (setenv "PATH" (string-append (getcwd) ":" (getenv "PATH")))
@@ -4342,130 +4428,6 @@ interrupted by stop codons.  OrfM finds and prints these ORFs.")
     (home-page "https://github.com/wwood/OrfM")
     (license license:lgpl3+)))
 
-(define-public pplacer
-  (let ((commit "807f6f3"))
-    (package
-      (name "pplacer")
-      ;; The commit should be updated with each version change.
-      (version "1.1.alpha19")
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/matsen/pplacer.git")
-               (commit (string-append "v" version))))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "11ppbbbx20p2g9wj3ff64dhnarb12q79v7qh4rk0gj6lkbz4n7cn"))))
-      (build-system ocaml-build-system)
-      (arguments
-       `(#:ocaml ,ocaml-4.01
-         #:findlib ,ocaml4.01-findlib
-         #:modules ((guix build ocaml-build-system)
-                    (guix build utils)
-                    (ice-9 ftw))
-         #:phases
-         (modify-phases %standard-phases
-           (delete 'configure)
-           (add-after 'unpack 'replace-bundled-cddlib
-             (lambda* (#:key inputs #:allow-other-keys)
-               (let* ((cddlib-src (assoc-ref inputs "cddlib-src"))
-                      (local-dir "cddlib_guix"))
-                 (mkdir local-dir)
-                 (with-directory-excursion local-dir
-                   (invoke "tar" "xvf" cddlib-src))
-                 (let ((cddlib-src-folder
-                        (string-append local-dir "/"
-                                       (list-ref (scandir local-dir) 2)
-                                       "/lib-src")))
-                   (for-each make-file-writable (find-files "cdd_src" ".*"))
-                   (for-each
-                    (lambda (file)
-                      (copy-file file
-                                 (string-append "cdd_src/" (basename file))))
-                    (find-files cddlib-src-folder ".*[ch]$")))
-                 #t)))
-           (add-after 'unpack 'fix-makefile
-             (lambda _
-               ;; Remove system calls to 'git'.
-               (substitute* "Makefile"
-                 (("^DESCRIPT:=pplacer-.*")
-                  (string-append
-                   "DESCRIPT:=pplacer-$(shell uname)-v" ,version "\n")))
-               (substitute* "myocamlbuild.ml"
-                 (("git describe --tags --long .*\\\" with")
-                  (string-append
-                   "echo -n v" ,version "-" ,commit "\" with")))
-               #t))
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (bin (string-append out "/bin")))
-                 (copy-recursively "bin" bin))
-               #t)))))
-      (native-inputs
-       `(("zlib" ,zlib)
-         ("gsl" ,gsl)
-         ("ocaml-ounit" ,ocaml4.01-ounit)
-         ("ocaml-batteries" ,ocaml4.01-batteries)
-         ("ocaml-camlzip" ,ocaml4.01-camlzip)
-         ("ocaml-csv" ,ocaml4.01-csv)
-         ("ocaml-sqlite3" ,ocaml4.01-sqlite3)
-         ("ocaml-xmlm" ,ocaml4.01-xmlm)
-         ("ocaml-mcl" ,ocaml4.01-mcl)
-         ("ocaml-gsl" ,ocaml4.01-gsl)
-         ("cddlib-src" ,(package-source cddlib))))
-      (propagated-inputs
-       `(("pplacer-scripts" ,pplacer-scripts)))
-      (synopsis "Phylogenetic placement of biological sequences")
-      (description
-       "Pplacer places query sequences on a fixed reference phylogenetic tree
-to maximize phylogenetic likelihood or posterior probability according to a
-reference alignment.  Pplacer is designed to be fast, to give useful
-information about uncertainty, and to offer advanced visualization and
-downstream analysis.")
-      (home-page "http://matsen.fhcrc.org/pplacer")
-      (license license:gpl3))))
-
-;; This package is installed alongside 'pplacer'.  It is a separate package so
-;; that it can use the python-build-system for the scripts that are
-;; distributed alongside the main OCaml binaries.
-(define pplacer-scripts
-  (package
-    (inherit pplacer)
-    (name "pplacer-scripts")
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'enter-scripts-dir
-           (lambda _ (chdir "scripts") #t))
-         (replace 'check
-           (lambda _ (invoke "python" "-m" "unittest" "discover" "-v") #t))
-         (add-after 'install 'wrap-executables
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin")))
-               (let ((path (string-append
-                            (assoc-ref inputs "hmmer") "/bin:"
-                            (assoc-ref inputs "infernal") "/bin")))
-                 (display path)
-                 (wrap-program (string-append bin "/refpkg_align.py")
-                   `("PATH" ":" prefix (,path))))
-               (let ((path (string-append
-                            (assoc-ref inputs "hmmer") "/bin")))
-                 (wrap-program (string-append bin "/hrefpkg_query.py")
-                   `("PATH" ":" prefix (,path)))))
-             #t)))))
-    (inputs
-     `(("infernal" ,infernal)
-       ("hmmer" ,hmmer)))
-    (propagated-inputs
-     `(("python-biopython" ,python2-biopython)
-       ("taxtastic" ,taxtastic)))
-    (synopsis "Pplacer Python scripts")))
-
 (define-public python2-pbcore
   (package
     (name "python2-pbcore")
@@ -4501,9 +4463,7 @@ files and writing bioinformatics applications.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/W/WarpedLMM/WarpedLMM-"
-             version ".zip"))
+       (uri (pypi-uri "WarpedLMM" version ".zip"))
        (sha256
         (base32
          "1agfz6zqa8nc6cw47yh0s3y14gkpa9wqazwcj7mwwj3ffnw39p3j"))))
@@ -6019,7 +5979,7 @@ application of SortMeRNA is filtering rRNA from metatranscriptomic data.")
 (define-public star
   (package
     (name "star")
-    (version "2.6.0c")
+    (version "2.7.0b")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -6028,7 +5988,7 @@ application of SortMeRNA is filtering rRNA from metatranscriptomic data.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "04cj6jw8d9q6lk9c78wa4fky6jdlicf1d13plq7182h8vqiz8p59"))
+                "1lih6cbpvnvhyvvswdhy06mwyzvwax96m723378v4z6psqzsh11d"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -6054,6 +6014,13 @@ application of SortMeRNA is filtering rRNA from metatranscriptomic data.")
                (("(COMPILATION_TIME_PLACE=\")(.*)(\")" _ pre mid post)
                 (string-append pre "Built with Guix" post)))
              #t))
+         ;; See https://github.com/alexdobin/STAR/pull/562
+         (add-after 'enter-source-dir 'add-missing-header
+           (lambda _
+             (substitute* "SoloReadFeature_inputRecords.cpp"
+               (("#include \"binarySearch2.h\"" h)
+                (string-append h "\n#include <math.h>")))
+             #t))
          (add-after 'enter-source-dir 'do-not-use-bundled-htslib
            (lambda _
              (substitute* "Makefile"
@@ -6314,6 +6281,48 @@ sequence.")
     (supported-systems '("i686-linux" "x86_64-linux"))
     (license license:bsd-3)))
 
+(define-public r-scde
+  (package
+    (name "r-scde")
+    (version "1.99.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/hms-dbmi/scde.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "10na2gyka24mszdxf92wz9h2c13hdf1ww30c68gfsw53lvvhhhxb"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-rcpp" ,r-rcpp)
+       ("r-rcpparmadillo" ,r-rcpparmadillo)
+       ("r-mgcv" ,r-mgcv)
+       ("r-rook" ,r-rook)
+       ("r-rjson" ,r-rjson)
+       ("r-cairo" ,r-cairo)
+       ("r-rcolorbrewer" ,r-rcolorbrewer)
+       ("r-edger" ,r-edger)
+       ("r-quantreg" ,r-quantreg)
+       ("r-nnet" ,r-nnet)
+       ("r-rmtstat" ,r-rmtstat)
+       ("r-extremes" ,r-extremes)
+       ("r-pcamethods" ,r-pcamethods)
+       ("r-biocparallel" ,r-biocparallel)
+       ("r-flexmix" ,r-flexmix)))
+    (home-page "https://hms-dbmi.github.io/scde/")
+    (synopsis "R package for analyzing single-cell RNA-seq data")
+    (description "The SCDE package implements a set of statistical methods for
+analyzing single-cell RNA-seq data.  SCDE fits individual error models for
+single-cell RNA-seq measurements.  These models can then be used for
+assessment of differential expression between groups of cells, as well as
+other types of analysis.  The SCDE package also contains the pagoda framework
+which applies pathway and gene set overdispersion analysis to identify aspects
+of transcriptional heterogeneity among single cells.")
+    ;; See https://github.com/hms-dbmi/scde/issues/38
+    (license license:gpl2)))
+
 (define-public r-centipede
   (package
     (name "r-centipede")
@@ -6338,111 +6347,6 @@ between two different types of motif instances using as much relevant
 information as possible.")
     (license (list license:gpl2+ license:gpl3+))))
 
-(define-public r-vegan
-  (package
-    (name "r-vegan")
-    (version "2.5-3")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (cran-uri "vegan" version))
-       (sha256
-        (base32
-         "023xznh0iy0496icpchadmp7a3rk3nj9s48fvwlvp3dssw58yp3c"))))
-    (build-system r-build-system)
-    (native-inputs
-     `(("gfortran" ,gfortran)))
-    (propagated-inputs
-     `(("r-cluster" ,r-cluster)
-       ("r-knitr" ,r-knitr) ; needed for vignettes
-       ("r-lattice" ,r-lattice)
-       ("r-mass" ,r-mass)
-       ("r-mgcv" ,r-mgcv)
-       ("r-permute" ,r-permute)))
-    (home-page "https://cran.r-project.org/web/packages/vegan")
-    (synopsis "Functions for community ecology")
-    (description
-     "The vegan package provides tools for descriptive community ecology.  It
-has most basic functions of diversity analysis, community ordination and
-dissimilarity analysis.  Most of its multivariate tools can be used for other
-data types as well.")
-    (license license:gpl2+)))
-
-(define-public r-annotate
-  (package
-    (name "r-annotate")
-    (version "1.60.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "annotate" version))
-       (sha256
-        (base32
-         "0p6c96lay23a67dyirgnwzm2yw22m592z780vy6p4nqwla8ha18n"))))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-annotationdbi" ,r-annotationdbi)
-       ("r-biobase" ,r-biobase)
-       ("r-biocgenerics" ,r-biocgenerics)
-       ("r-dbi" ,r-dbi)
-       ("r-rcurl" ,r-rcurl)
-       ("r-xml" ,r-xml)
-       ("r-xtable" ,r-xtable)))
-    (home-page
-     "https://bioconductor.org/packages/annotate")
-    (synopsis "Annotation for microarrays")
-    (description "This package provides R environments for the annotation of
-microarrays.")
-    (license license:artistic2.0)))
-
-(define-public r-copynumber
-  (package
-    (name "r-copynumber")
-    (version "1.22.0")
-    (source (origin
-              (method url-fetch)
-              (uri (bioconductor-uri "copynumber" version))
-              (sha256
-               (base32
-                "0ipwj9i5p1bwhg5d80jdjagm02krpj2v0j47qdgw41h8wncdyal3"))))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-s4vectors" ,r-s4vectors)
-       ("r-iranges" ,r-iranges)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-biocgenerics" ,r-biocgenerics)))
-    (home-page "https://bioconductor.org/packages/copynumber")
-    (synopsis "Segmentation of single- and multi-track copy number data")
-    (description
-     "This package segments single- and multi-track copy number data by a
-penalized least squares regression method.")
-    (license license:artistic2.0)))
-
-(define-public r-geneplotter
-  (package
-    (name "r-geneplotter")
-    (version "1.60.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "geneplotter" version))
-       (sha256
-        (base32
-         "10khr0pznxf3m0f5gzck9ymljrwcv3vamfmpskd51yjh36lhllqz"))))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-annotate" ,r-annotate)
-       ("r-annotationdbi" ,r-annotationdbi)
-       ("r-biobase" ,r-biobase)
-       ("r-biocgenerics" ,r-biocgenerics)
-       ("r-lattice" ,r-lattice)
-       ("r-rcolorbrewer" ,r-rcolorbrewer)))
-    (home-page "https://bioconductor.org/packages/geneplotter")
-    (synopsis "Graphics functions for genomic data")
-    (description
-     "This package provides functions for plotting genomic data.")
-    (license license:artistic2.0)))
-
 (define-public r-genefilter
   (package
     (name "r-genefilter")
@@ -6805,38 +6709,6 @@ annotation infrastructure.")
      "This package provides a pipeline for the analysis of GRO-seq data.")
     (license license:gpl3+)))
 
-(define-public r-txdb-hsapiens-ucsc-hg19-knowngene
-  (package
-    (name "r-txdb-hsapiens-ucsc-hg19-knowngene")
-    (version "3.2.2")
-    (source (origin
-              (method url-fetch)
-              ;; We cannot use bioconductor-uri here because this tarball is
-              ;; located under "data/annotation/" instead of "bioc/".
-              (uri (string-append "https://bioconductor.org/packages/"
-                                  "release/data/annotation/src/contrib"
-                                  "/TxDb.Hsapiens.UCSC.hg19.knownGene_"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1sajhcqqwazgz2lqbik7rd935i7kpnh08zxbp2ra10j72yqy4g86"))))
-    (properties
-     `((upstream-name . "TxDb.Hsapiens.UCSC.hg19.knownGene")))
-    (build-system r-build-system)
-    ;; As this package provides little more than a very large data file it
-    ;; doesn't make sense to build substitutes.
-    (arguments `(#:substitutable? #f))
-    (propagated-inputs
-     `(("r-genomicfeatures" ,r-genomicfeatures)))
-    (home-page
-     "https://bioconductor.org/packages/TxDb.Hsapiens.UCSC.hg19.knownGene/")
-    (synopsis "Annotation package for human genome in TxDb format")
-    (description
-     "This package provides an annotation database of Homo sapiens genome
-data.  It is derived from the UCSC hg19 genome and based on the \"knownGene\"
-track.  The database is exposed as a @code{TxDb} object.")
-    (license license:artistic2.0)))
-
 (define-public r-sparql
   (package
   (name "r-sparql")
@@ -7092,26 +6964,6 @@ use multiple corrections.  Visualization of data can be done either by
 barplots or heatmaps.")
     (license license:gpl2+)))
 
-(define-public r-biocgenerics
-  (package
-    (name "r-biocgenerics")
-    (version "0.28.0")
-    (source (origin
-              (method url-fetch)
-              (uri (bioconductor-uri "BiocGenerics" version))
-              (sha256
-               (base32
-                "0cvpsrhg7sn7lpqgxvqrsagv6j7xj5rafq5xdjfd8zc4gxrs5rb8"))))
-    (properties
-     `((upstream-name . "BiocGenerics")))
-    (build-system r-build-system)
-    (home-page "https://bioconductor.org/packages/BiocGenerics")
-    (synopsis "S4 generic functions for Bioconductor")
-    (description
-     "This package provides S4 generic functions needed by many Bioconductor
-packages.")
-    (license license:artistic2.0)))
-
 (define-public r-biocinstaller
   (package
     (name "r-biocinstaller")
@@ -7258,14 +7110,14 @@ checks on R packages that are to be submitted to the Bioconductor repository.")
 (define-public r-optparse
   (package
     (name "r-optparse")
-    (version "1.6.0")
+    (version "1.6.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "optparse" version))
        (sha256
         (base32
-         "1d7v5gl45x4amsfmzn5zyyffyqlc7a82h01szlnda22viyxids0h"))))
+         "04vyb6dhcga30mvghsg1p052jmf69xqxkvh3hzqz7dscyppy76w1"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-getopt" ,r-getopt)))
@@ -7278,28 +7130,6 @@ checks on R packages that are to be submitted to the Bioconductor repository.")
 that accept short and long options.")
     (license license:gpl2+)))
 
-(define-public r-dnacopy
-  (package
-    (name "r-dnacopy")
-    (version "1.56.0")
-    (source (origin
-              (method url-fetch)
-              (uri (bioconductor-uri "DNAcopy" version))
-              (sha256
-               (base32
-                "04cqdqxhva66xwh1s2vffi56b9fcrqd4slcrvqasj5lp2rkjli82"))))
-    (properties
-     `((upstream-name . "DNAcopy")))
-    (build-system r-build-system)
-    (inputs
-     `(("gfortran" ,gfortran)))
-    (home-page "https://bioconductor.org/packages/DNAcopy")
-    (synopsis "Implementation of a circular binary segmentation algorithm")
-    (description "This package implements the circular binary segmentation (CBS)
-algorithm to segment DNA copy number data and identify genomic regions with
-abnormal copy number.")
-    (license license:gpl2+)))
-
 (define-public r-s4vectors
   (package
     (name "r-s4vectors")
@@ -7463,13 +7293,13 @@ CAGE.")
 (define-public r-variantannotation
   (package
     (name "r-variantannotation")
-    (version "1.28.8")
+    (version "1.28.10")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "VariantAnnotation" version))
               (sha256
                (base32
-                "0gf36lr9xy3zmcc4rxs5bi2ccrrc7b6wqp6p3cvnclgif4i0l66k"))))
+                "0kxf583cgkdz1shi85r0mpnfxmzi7s5f6srd1czbdl2iibvrm8jn"))))
     (properties
      `((upstream-name . "VariantAnnotation")))
     (inputs
@@ -7857,13 +7687,13 @@ alignments.")
 (define-public r-rtracklayer
   (package
     (name "r-rtracklayer")
-    (version "1.42.0")
+    (version "1.42.1")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "rtracklayer" version))
               (sha256
                (base32
-                "0a4mhd926w9slkfil5xgngjsfdj024a4w57w2bm3d4r0pj8y5da7"))))
+                "1ycmcxvgvszvjv75hlmg0i6pq8i7r8720vgmfayb905s9l6j82x6"))))
     (build-system r-build-system)
     (arguments
      `(#:phases
@@ -7904,13 +7734,13 @@ as well as query and modify the browser state, such as the current viewport.")
 (define-public r-genomicfeatures
   (package
     (name "r-genomicfeatures")
-    (version "1.34.1")
+    (version "1.34.2")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "GenomicFeatures" version))
               (sha256
                (base32
-                "0slq6hv5bmc3bgrl824jzmr6db3fvaj6b7ihwmdn76pgqqbq2fq6"))))
+                "0qs94b0ywrjyc9m1jykrbch3lb07576m508dikvx18vwn304mban"))))
     (properties
      `((upstream-name . "GenomicFeatures")))
     (build-system r-build-system)
@@ -8029,37 +7859,6 @@ dependencies between GO terms can be implemented and applied.")
 genome data packages and support for efficient SNP representation.")
     (license license:artistic2.0)))
 
-(define-public r-bsgenome-hsapiens-1000genomes-hs37d5
-  (package
-    (name "r-bsgenome-hsapiens-1000genomes-hs37d5")
-    (version "0.99.1")
-    (source (origin
-              (method url-fetch)
-              ;; We cannot use bioconductor-uri here because this tarball is
-              ;; located under "data/annotation/" instead of "bioc/".
-              (uri (string-append "https://www.bioconductor.org/packages/"
-                                  "release/data/annotation/src/contrib/"
-                                  "BSgenome.Hsapiens.1000genomes.hs37d5_"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1cg0g5fqmsvwyw2p9hp2yy4ilk21jkbbrnpgqvb5c36ihjwvc7sr"))))
-    (properties
-     `((upstream-name . "BSgenome.Hsapiens.1000genomes.hs37d5")))
-    (build-system r-build-system)
-    ;; As this package provides little more than a very large data file it
-    ;; doesn't make sense to build substitutes.
-    (arguments `(#:substitutable? #f))
-    (propagated-inputs
-     `(("r-bsgenome" ,r-bsgenome)))
-    (home-page
-     "https://www.bioconductor.org/packages/BSgenome.Hsapiens.1000genomes.hs37d5/")
-    (synopsis "Full genome sequences for Homo sapiens")
-    (description
-     "This package provides full genome sequences for Homo sapiens from
-1000genomes phase2 reference genome sequence (hs37d5), based on NCBI GRCh37.")
-    (license license:artistic2.0)))
-
 (define-public r-impute
   (package
     (name "r-impute")
@@ -8306,100 +8105,6 @@ plots the corresponding sequence logo as introduced by Schneider and
 Stephens (1990).")
     (license license:lgpl2.0+)))
 
-(define-public r-bsgenome-hsapiens-ucsc-hg19
-  (package
-    (name "r-bsgenome-hsapiens-ucsc-hg19")
-    (version "1.4.0")
-    (source (origin
-              (method url-fetch)
-              ;; We cannot use bioconductor-uri here because this tarball is
-              ;; located under "data/annotation/" instead of "bioc/".
-              (uri (string-append "https://www.bioconductor.org/packages/"
-                                  "release/data/annotation/src/contrib/"
-                                  "BSgenome.Hsapiens.UCSC.hg19_"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1y0nqpk8cw5a34sd9hmin3z4v7iqm6hf6l22cl81vlbxqbjibxc8"))))
-    (properties
-     `((upstream-name . "BSgenome.Hsapiens.UCSC.hg19")))
-    (build-system r-build-system)
-    ;; As this package provides little more than a very large data file it
-    ;; doesn't make sense to build substitutes.
-    (arguments `(#:substitutable? #f))
-    (propagated-inputs
-     `(("r-bsgenome" ,r-bsgenome)))
-    (home-page
-     "https://www.bioconductor.org/packages/BSgenome.Hsapiens.UCSC.hg19/")
-    (synopsis "Full genome sequences for Homo sapiens")
-    (description
-     "This package provides full genome sequences for Homo sapiens as provided
-by UCSC (hg19, February 2009) and stored in Biostrings objects.")
-    (license license:artistic2.0)))
-
-(define-public r-bsgenome-mmusculus-ucsc-mm9
-  (package
-    (name "r-bsgenome-mmusculus-ucsc-mm9")
-    (version "1.4.0")
-    (source (origin
-              (method url-fetch)
-              ;; We cannot use bioconductor-uri here because this tarball is
-              ;; located under "data/annotation/" instead of "bioc/".
-              (uri (string-append "https://www.bioconductor.org/packages/"
-                                  "release/data/annotation/src/contrib/"
-                                  "BSgenome.Mmusculus.UCSC.mm9_"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1birqw30g2azimxpnjfzmkphan7x131yy8b9h85lfz5fjdg7841i"))))
-    (properties
-     `((upstream-name . "BSgenome.Mmusculus.UCSC.mm9")))
-    (build-system r-build-system)
-    ;; As this package provides little more than a very large data file it
-    ;; doesn't make sense to build substitutes.
-    (arguments `(#:substitutable? #f))
-    (propagated-inputs
-     `(("r-bsgenome" ,r-bsgenome)))
-    (home-page
-     "https://www.bioconductor.org/packages/BSgenome.Mmusculus.UCSC.mm9/")
-    (synopsis "Full genome sequences for Mouse")
-    (description
-     "This package provides full genome sequences for Mus musculus (Mouse) as
-provided by UCSC (mm9, July 2007) and stored in Biostrings objects.")
-    (license license:artistic2.0)))
-
-(define-public r-bsgenome-mmusculus-ucsc-mm10
-  (package
-    (name "r-bsgenome-mmusculus-ucsc-mm10")
-    (version "1.4.0")
-    (source (origin
-              (method url-fetch)
-              ;; We cannot use bioconductor-uri here because this tarball is
-              ;; located under "data/annotation/" instead of "bioc/".
-              (uri (string-append "https://www.bioconductor.org/packages/"
-                                  "release/data/annotation/src/contrib/"
-                                  "BSgenome.Mmusculus.UCSC.mm10_"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "12s0nm2na9brjad4rn9l7d3db2aj8qa1xvz0y1k7gk08wayb6bkf"))))
-    (properties
-     `((upstream-name . "BSgenome.Mmusculus.UCSC.mm10")))
-    (build-system r-build-system)
-    ;; As this package provides little more than a very large data file it
-    ;; doesn't make sense to build substitutes.
-    (arguments `(#:substitutable? #f))
-    (propagated-inputs
-     `(("r-bsgenome" ,r-bsgenome)))
-    (home-page
-     "https://www.bioconductor.org/packages/BSgenome.Mmusculus.UCSC.mm10/")
-    (synopsis "Full genome sequences for Mouse")
-    (description
-     "This package provides full genome sequences for Mus
-musculus (Mouse) as provided by UCSC (mm10, December 2011) and stored
-in Biostrings objects.")
-    (license license:artistic2.0)))
-
 (define-public r-txdb-mmusculus-ucsc-mm10-knowngene
   (package
     (name "r-txdb-mmusculus-ucsc-mm10-knowngene")
@@ -8435,38 +8140,6 @@ the TxDb object of Mouse data as provided by UCSC (mm10, December 2011)
 based on the knownGene track.")
     (license license:artistic2.0)))
 
-(define-public r-bsgenome-celegans-ucsc-ce6
-  (package
-    (name "r-bsgenome-celegans-ucsc-ce6")
-    (version "1.4.0")
-    (source (origin
-              (method url-fetch)
-              ;; We cannot use bioconductor-uri here because this tarball is
-              ;; located under "data/annotation/" instead of "bioc/".
-              (uri (string-append "https://www.bioconductor.org/packages/"
-                                  "release/data/annotation/src/contrib/"
-                                  "BSgenome.Celegans.UCSC.ce6_"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "0mqzb353xv2c3m3vkb315dkmnxkgczp7ndnknyhpgjlybyf715v9"))))
-    (properties
-     `((upstream-name . "BSgenome.Celegans.UCSC.ce6")))
-    (build-system r-build-system)
-    ;; As this package provides little more than a very large data file it
-    ;; doesn't make sense to build substitutes.
-    (arguments `(#:substitutable? #f))
-    (propagated-inputs
-     `(("r-bsgenome" ,r-bsgenome)))
-    (home-page
-     "https://www.bioconductor.org/packages/BSgenome.Celegans.UCSC.ce6/")
-    (synopsis "Full genome sequences for Worm")
-    (description
-     "This package provides full genome sequences for Caenorhabditis
-elegans (Worm) as provided by UCSC (ce6, May 2008) and stored in Biostrings
-objects.")
-    (license license:artistic2.0)))
-
 (define-public r-bsgenome-celegans-ucsc-ce10
   (package
     (name "r-bsgenome-celegans-ucsc-ce10")
@@ -8561,7 +8234,7 @@ throughput genetic sequencing data sets using regression methods.")
 (define-public r-qtl
  (package
   (name "r-qtl")
-  (version "1.42-8")
+  (version "1.44-9")
   (source
    (origin
     (method url-fetch)
@@ -8569,7 +8242,7 @@ throughput genetic sequencing data sets using regression methods.")
                         version ".tar.gz"))
     (sha256
      (base32
-      "1l528dwvfpdlr05imrrm4rq32axp6hld9nqm6mm43kn5n7z2f5k6"))))
+      "03lmvydln8b7666b6w46qbryhf83vsd11d4y2v95rfgvqgq66l1i"))))
   (build-system r-build-system)
   (home-page "http://rqtl.org/")
   (synopsis "R package for analyzing QTL experiments in genetics")
@@ -8733,7 +8406,7 @@ library implementing most of the pipeline's features.")
 (define-public rcas-web
   (package
     (name "rcas-web")
-    (version "0.0.5")
+    (version "0.1.0")
     (source
      (origin
        (method url-fetch)
@@ -8742,7 +8415,7 @@ library implementing most of the pipeline's features.")
                            "/rcas-web-" version ".tar.gz"))
        (sha256
         (base32
-         "0igz7jpcf7cm9800zcag6p3gd1i649figrhbdba6cjkm8f4gfspr"))))
+         "0wq951aj45gqki1bickg876i993lmawkp8x24agg264br5x716db"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -8765,7 +8438,7 @@ library implementing most of the pipeline's features.")
        ("r-rcas" ,r-rcas)
        ("guile-next" ,guile-2.2)
        ("guile-json" ,guile-json)
-       ("guile-redis" ,guile2.2-redis)))
+       ("guile-redis" ,guile-redis)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (home-page "https://github.com/BIMSBbioinfo/rcas-web")
@@ -9206,8 +8879,7 @@ may optionally be provided to further inform the peak-calling process.")
     (version "1.0.9")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://pypi.python.org/packages/source/P"
-                                  "/PePr/PePr-" version ".tar.gz"))
+              (uri (pypi-uri "PePr" version))
               (sha256
                (base32
                 "0qxjfdpl1b1y53nccws2d85f6k74zwmx8y8sd9rszcqhfayx6gdx"))))
@@ -10979,14 +10651,14 @@ matrices.")
 (define-public r-singlecellexperiment
   (package
     (name "r-singlecellexperiment")
-    (version "1.4.0")
+    (version "1.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "SingleCellExperiment" version))
        (sha256
         (base32
-         "19r4r7djrn46qlijkj1g926vcklxzcrxjlxv6cg43m9j9jgfs3dj"))))
+         "12139kk9cqgzpm6f3cwdsq31gj5lxamz2q939dy9fa0fa54gdaq4"))))
     (properties
      `((upstream-name . "SingleCellExperiment")))
     (build-system r-build-system)
@@ -11006,13 +10678,13 @@ libraries.")
 (define-public r-scater
   (package
     (name "r-scater")
-    (version "1.10.0")
+    (version "1.10.1")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "scater" version))
               (sha256
                (base32
-                "1kwa9n70c5j0xcj6nkmlkzjr63cnj78mp8nhg58n07fq1ijm4ns3"))))
+                "0rijhy7g5qmcn927y1wyd63la1fhyar9fv1hccsqd23jd98yc55a"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-beachmat" ,r-beachmat)
@@ -11242,7 +10914,7 @@ droplet sequencing.  It has been particularly tailored for Drop-seq.")
     (native-inputs
      `(("ldc" ,ldc)
        ("rdmd" ,rdmd)
-       ("python" ,python-minimal)
+       ("python" ,python)
        ("biod"
         ,(let ((commit "4f1a7d2fb7ef3dfe962aa357d672f354ebfbe42e"))
            (origin
@@ -11765,7 +11437,7 @@ Browser.")
 (define-public bismark
   (package
     (name "bismark")
-    (version "0.19.1")
+    (version "0.20.1")
     (source
      (origin
        (method git-fetch)
@@ -11775,18 +11447,25 @@ Browser.")
        (file-name (string-append name "-" version "-checkout"))
        (sha256
         (base32
-         "0yb5l36slwg02fp4b1jdlplgljcsxgqfzvzihzdnphd87dghcc84"))
-       (snippet
-        '(begin
-           ;; highcharts.js is non-free software.  The code is available under
-           ;; CC-BY-NC or proprietary licenses only.
-           (delete-file "bismark_sitrep/highcharts.js")
-           #t))))
+         "0xchm3rgilj6vfjnyzfzzymfd7djr64sbrmrvs3njbwi66jqbzw9"))))
     (build-system perl-build-system)
     (arguments
      `(#:tests? #f                      ; there are no tests
+       #:modules ((guix build utils)
+                  (ice-9 popen)
+                  (srfi srfi-26)
+                  (guix build perl-build-system))
        #:phases
        (modify-phases %standard-phases
+         ;; The bundled plotly.js is minified.
+         (add-after 'unpack 'replace-plotly.js
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((file (assoc-ref inputs "plotly.js"))
+                    (installed "plotly/plotly.js"))
+               (let ((minified (open-pipe* OPEN_READ "uglify-js" file)))
+                 (call-with-output-file installed
+                   (cut dump-port minified <>))))
+             #t))
          (delete 'configure)
          (delete 'build)
          (replace 'install
@@ -11805,10 +11484,11 @@ Browser.")
                                "deduplicate_bismark"
                                "filter_non_conversion"
                                "bam2nuc"
-                               "bismark2summary")))
+                               "bismark2summary"
+                               "NOMe_filtering")))
                (substitute* "bismark2report"
-                 (("\\$RealBin/bismark_sitrep")
-                  (string-append share "/bismark_sitrep")))
+                 (("\\$RealBin/plotly")
+                  (string-append share "/plotly")))
                (mkdir-p share)
                (mkdir-p docdir)
                (mkdir-p bin)
@@ -11817,8 +11497,8 @@ Browser.")
                (for-each (lambda (file) (install-file file docdir))
                          docs)
                (copy-recursively "Docs/Images" (string-append docdir "/Images"))
-               (copy-recursively "bismark_sitrep"
-                                 (string-append share "/bismark_sitrep"))
+               (copy-recursively "plotly"
+                                 (string-append share "/plotly"))
 
                ;; Fix references to gunzip
                (substitute* (map (lambda (file)
@@ -11829,7 +11509,18 @@ Browser.")
                                  "/bin/gunzip -c")))
                #t))))))
     (inputs
-     `(("gzip" ,gzip)))
+     `(("gzip" ,gzip)
+       ("perl-carp" ,perl-carp)
+       ("perl-getopt-long" ,perl-getopt-long)))
+    (native-inputs
+     `(("plotly.js"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "https://raw.githubusercontent.com/plotly/plotly.js/"
+                               "v1.39.4/dist/plotly.js"))
+           (sha256
+            (base32 "138mwsr4nf5qif4mrxx286mpnagxd1xwl6k8aidrjgknaqg88zyr"))))
+       ("uglify-js" ,uglify-js)))
     (home-page "http://www.bioinformatics.babraham.ac.uk/projects/bismark/")
     (synopsis "Map bisulfite treated sequence reads and analyze methylation")
     (description "Bismark is a program to map bisulfite treated sequencing
@@ -13054,7 +12745,7 @@ expression report comparing samples in an easily configurable manner.")
 (define-public pigx-chipseq
   (package
     (name "pigx-chipseq")
-    (version "0.0.20")
+    (version "0.0.31")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/BIMSBbioinfo/pigx_chipseq/"
@@ -13062,7 +12753,7 @@ expression report comparing samples in an easily configurable manner.")
                                   "/pigx_chipseq-" version ".tar.gz"))
               (sha256
                (base32
-                "19a7dclqq0b4kqg3phiz4d4arlwfp34nm3z0rf1gkqdpsy7gghp3"))))
+                "0l3vd9xwqzap3mmyj8xwqp84kj7scbq308diqnwg2albphl75xqs"))))
     (build-system gnu-build-system)
     ;; parts of the tests rely on access to the network
     (arguments '(#:tests? #f))
@@ -13287,6 +12978,38 @@ descriptive settings file.  The result is a set of comprehensive, interactive
 HTML reports with interesting findings about your samples.")
     (license license:gpl3+)))
 
+(define-public genrich
+  (package
+    (name "genrich")
+    (version "0.5")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/jsh58/Genrich.git")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "0x0q6z0208n3cxzqjla4rgjqpyqgwpmz27852lcvzkzaigymq4zp"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; there are none
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (install-file "Genrich" (string-append (assoc-ref outputs "out") "/bin"))
+             #t)))))
+    (inputs
+     `(("zlib" ,zlib)))
+    (home-page "https://github.com/jsh58/Genrich")
+    (synopsis "Detecting sites of genomic enrichment")
+    (description "Genrich is a peak-caller for genomic enrichment
+assays (e.g. ChIP-seq, ATAC-seq).  It analyzes alignment files generated
+following the assay and produces a file detailing peaks of significant
+enrichment.")
+    (license license:expat)))
+
 (define-public mantis
   (let ((commit "4ffd171632c2cb0056a86d709dfd2bf21bc69b84")
         (revision "1"))
@@ -14511,3 +14234,127 @@ 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))))
+
+(define-public cnvkit
+  (package
+    (name "cnvkit")
+    (version "0.9.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/etal/cnvkit.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0g2f78k68yglmj4fsfmgs8idqv3di9aj53fg0ld0hqljg8chhh82"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-biopython" ,python-biopython)
+       ("python-future" ,python-future)
+       ("python-matplotlib" ,python-matplotlib)
+       ("python-numpy" ,python-numpy)
+       ("python-reportlab" ,python-reportlab)
+       ("python-pandas" ,python-pandas)
+       ("python-pysam" ,python-pysam)
+       ("python-pyfaidx" ,python-pyfaidx)
+       ("python-scipy" ,python-scipy)
+       ;; R packages
+       ("r-dnacopy" ,r-dnacopy)))
+    (home-page "https://cnvkit.readthedocs.org/")
+    (synopsis "Copy number variant detection from targeted DNA sequencing")
+    (description
+     "CNVkit is a Python library and command-line software toolkit to infer
+and visualize copy number from high-throughput DNA sequencing data.  It is
+designed for use with hybrid capture, including both whole-exome and custom
+target panels, and short-read sequencing platforms such as Illumina and Ion
+Torrent.")
+    (license license:asl2.0)))
+
+(define-public python-pyfit-sne
+  (package
+    (name "python-pyfit-sne")
+    (version "1.0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/KlugerLab/pyFIt-SNE.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "13wh3qkzs56azmmgnxib6xfr29g7xh09sxylzjpni5j0pp0rc5qw"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-numpy" ,python-numpy)))
+    (inputs
+     `(("fftw" ,fftw)))
+    (native-inputs
+     `(("python-cython" ,python-cython)))
+    (home-page "https://github.com/KlugerLab/pyFIt-SNE")
+    (synopsis "FFT-accelerated Interpolation-based t-SNE")
+    (description
+     "t-Stochastic Neighborhood Embedding (t-SNE) is a highly successful
+method for dimensionality reduction and visualization of high dimensional
+datasets.  A popular implementation of t-SNE uses the Barnes-Hut algorithm to
+approximate the gradient at each iteration of gradient descent.  This package
+is a Cython wrapper for FIt-SNE.")
+    (license license:bsd-4)))
+
+(define-public velvet
+  (package
+    (name "velvet")
+    (version "1.2.10")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.ebi.ac.uk/~zerbino/velvet/"
+                                  "velvet_" version ".tgz"))
+              (sha256
+               (base32
+                "0h3njwy66p6bx14r3ar1byb0ccaxmxka4c65rn4iybyiqa4d8kc8"))
+              ;; Delete bundled libraries
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (delete-file "Manual.pdf")
+                  (delete-file-recursively "third-party")
+                  #t))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags '("OPENMP=t")
+       #:test-target "test"
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-after 'unpack 'fix-zlib-include
+           (lambda _
+             (substitute* "src/binarySequences.c"
+               (("../third-party/zlib-1.2.3/zlib.h") "zlib.h"))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (doc (string-append out "/share/doc/velvet")))
+               (mkdir-p bin)
+               (mkdir-p doc)
+               (install-file "velveth" bin)
+               (install-file "velvetg" bin)
+               (install-file "Manual.pdf" doc)
+               (install-file "Columbus_manual.pdf" doc)
+               #t))))))
+    (inputs
+     `(("openmpi" ,openmpi)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("texlive" ,(texlive-union (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")
+    (description
+     "Velvet is a de novo genomic assembler specially designed for short read
+sequencing technologies, such as Solexa or 454.  Velvet currently takes in
+short read sequences, removes errors then produces high quality unique
+contigs.  It then uses paired read information, if available, to retrieve the
+repeated areas between contigs.")
+    (license license:gpl2+)))