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.scm1897
1 files changed, 784 insertions, 1113 deletions
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 8a00420946..13bd51860d 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016, 2020, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2016, 2018 Raoul Bonnal <ilpuccio.febo@gmail.com>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2017, 2021 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2017, 2021, 2022 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2018, 2019, 2020, 2021 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
@@ -161,6 +161,7 @@
   #:use-module (gnu packages wget)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
+  #:use-module (guix platform)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
   #:use-module (ice-9 match))
@@ -210,85 +211,6 @@ tRNA consensus sequences and RNA structure.  It also outputs the secondary
 structure of the predicted RNA.")
     (license license:gpl2)))
 
-(define-public bamm
-  (package
-    (name "bamm")
-    (version "1.7.3")
-    (source (origin
-              (method git-fetch)
-              ;; BamM is not available on pypi.
-              (uri (git-reference
-                    (url "https://github.com/Ecogenomics/BamM")
-                    (commit version)
-                    (recursive? #t)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1p83ahi984ipslxlg4yqy1gdnya9rkn1v71z8djgxkm9d2chw4c5"))
-              (modules '((guix build utils)))
-              (snippet
-               `(begin
-                  ;; Delete bundled htslib.
-                  (delete-file-recursively "c/htslib-1.3.1")))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2 ; BamM is Python 2 only.
-       ;; Do not use bundled libhts.  Do use the bundled libcfu because it has
-       ;; been modified from its original form.
-       #:configure-flags
-       ,#~(let ((htslib #$(this-package-input "htslib")))
-            (list "--with-libhts-lib" (string-append htslib "/lib")
-                  "--with-libhts-inc" (string-append htslib "/include/htslib")))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'autogen
-           (lambda _
-             (with-directory-excursion "c"
-               (let ((sh (which "sh")))
-                 (for-each make-file-writable (find-files "." ".*"))
-                 ;; Use autogen so that 'configure' works.
-                 (substitute* "autogen.sh" (("/bin/sh") sh))
-                 (setenv "CONFIG_SHELL" sh)
-                 (invoke "./autogen.sh")))))
-         (delete 'build)                ;the build loops otherwise
-         (replace 'check
-           (lambda _
-             ;; There are 2 errors printed, but they are safe to ignore:
-             ;; 1) [E::hts_open_format] fail to open file ...
-             ;; 2) samtools view: failed to open ...
-             (invoke "nosetests")))
-         (add-after 'install 'wrap-executable
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out  (assoc-ref outputs "out"))
-                    (path (getenv "PATH"))
-                    (pythonpath (getenv "GUIX_PYTHONPATH")))
-               (wrap-program (string-append out "/bin/bamm")
-                 `("PATH" ":" prefix (,path))
-                 `("GUIX_PYTHONPATH" ":" prefix (,pythonpath)))))))))
-    (native-inputs
-     (list autoconf
-           automake
-           libtool
-           zlib
-           python2-nose
-           python2-pysam))
-    (inputs
-     (list htslib-1.3 ; At least one test fails on htslib-1.4+.
-           samtools
-           bwa
-           grep
-           sed
-           coreutils))
-    (propagated-inputs
-     (list python2-numpy))
-    (home-page "https://ecogenomics.github.io/BamM/")
-    (synopsis "Metagenomics-focused BAM file manipulator")
-    (description
-     "BamM is a C library, wrapped in python, to efficiently generate and
-parse BAM files, specifically for the analysis of metagenomic data.  For
-instance, it implements several methods to assess contig-wise read coverage.")
-    (license license:lgpl3+)))
-
 (define-public bamtools
   (package
     (name "bamtools")
@@ -839,52 +761,6 @@ frames} (ORFs) using ribosome profiling (ribo-seq) data.  This package
 provides the Ribotaper pipeline.")
     (license license:gpl3+)))
 
-(define-public ribodiff
-  (package
-    (name "ribodiff")
-    (version "0.2.2")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/ratschlab/RiboDiff")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "0x75nlp7qnmm64jasbi6l21f2cy99r2cjyl6b4hr8zf2bq22drnz"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2
-       #:phases
-       (modify-phases %standard-phases
-         ;; This test fails because of the matplotlib plotting backend.
-         (add-after 'unpack 'disable-plot-test
-           (lambda _
-             (substitute* "src/ribodiff/functional_test_te.py"
-               (("pl\\.make_plots\\(data, opts\\)") "#"))))
-         ;; Generate an installable executable script wrapper.
-         (add-after 'unpack 'patch-setup.py
-           (lambda _
-             (substitute* "setup.py"
-               (("^(.*)packages=.*" line prefix)
-                (string-append line "\n"
-                               prefix "scripts=['scripts/TE.py'],\n"))))))))
-    (inputs
-     (list python2-numpy python2-matplotlib python2-scipy
-           python2-statsmodels))
-    (native-inputs
-     (list python2-mock python2-nose))
-    (home-page "https://public.bmi.inf.ethz.ch/user/zhongy/RiboDiff/")
-    (synopsis "Detect translation efficiency changes from ribosome footprints")
-    (description "RiboDiff is a statistical tool that detects the protein
-translational efficiency change from Ribo-Seq (ribosome footprinting) and
-RNA-Seq data.  It uses a generalized linear model to detect genes showing
-difference in translational profile taking mRNA abundance into account.  It
-facilitates us to decipher the translational regulation that behave
-independently with transcriptional regulation.")
-    (license license:gpl3+)))
-
 (define-public bioawk
   (package
     (name "bioawk")
@@ -1026,14 +902,6 @@ pybedtools extends BEDTools by offering feature-level manipulations from with
 Python.")
     (license license:gpl2+)))
 
-(define-public python2-pybedtools
-  (let ((pybedtools (package-with-python2 python-pybedtools)))
-    (package
-      (inherit pybedtools)
-      (native-inputs
-       (modify-inputs (package-native-inputs pybedtools)
-         (prepend python2-pathlib))))))
-
 (define-public python-biom-format
   (package
     (name "python-biom-format")
@@ -1282,9 +1150,6 @@ into separate processes; and more.")
                (base32
                 "1q55jhf76z3k6is3psis0ckbki7df26x7dikpcc3vhk1vhkwribh"))))))
 
-(define-public python2-biopython
-  (package-with-python2 python-biopython))
-
 (define-public python-fastalite
   (package
     (name "python-fastalite")
@@ -1305,9 +1170,6 @@ into separate processes; and more.")
 relying on a complex dependency tree.")
     (license license:expat)))
 
-(define-public python2-fastalite
-  (package-with-python2 python-fastalite))
-
 (define-public biosoup
   (package
     (name "biosoup")
@@ -2376,9 +2238,6 @@ SAM/BAM format.  Pysam is a lightweight wrapper of the SAMtools C API.  It
 also includes an interface for tabix.")
     (license license:expat)))
 
-(define-public python2-pysam
-  (package-with-python2 python-pysam))
-
 (define-public python-twobitreader
   (package
     (name "python-twobitreader")
@@ -2439,59 +2298,60 @@ high-throughput sequencing data – with an emphasis on simplicity.")
 (define-public tetoolkit
   (package
     (name "tetoolkit")
-    (version "2.0.3")
+    (version "2.2.1b")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/mhammell-laboratory/tetoolkit")
+                    (url "https://github.com/mhammell-laboratory/TEtranscripts")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1yzi0kfpzip8zpjb82x1ik6h22yzfyjiz2dv85v6as2awwqvk807"))))
+                "1m3xsydakhdan9gp9mfdz7llka5g6ak91d0mbl1cmmxq9qs6an4y"))))
     (build-system python-build-system)
     (arguments
-     `(#:python ,python-2               ; not guaranteed to work with Python 3
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'make-writable
+         (add-after 'unpack 'adjust-requirements
            (lambda _
-             (for-each make-file-writable (find-files "."))
-             #t))
+             (substitute* "setup.py"
+               ;; This defunct dependency isn't required for Python 3 (see:
+               ;; https://github.com/mhammell-laboratory/TEtranscripts/issues/111).
+               ((".*'argparse'.*") ""))))
          (add-after 'unpack 'patch-invocations
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* '("bin/TEtranscripts"
                             "bin/TEcount")
                (("'sort ")
-                (string-append "'" (which "sort") " "))
+                (string-append "'" (search-input-file inputs "bin/sort") " "))
                (("'rm -f ")
-                (string-append "'" (which "rm") " -f "))
-               (("'Rscript'") (string-append "'" (which "Rscript") "'")))
+                (string-append "'" (search-input-file inputs "bin/rm") " -f "))
+               (("'Rscript'")
+                (string-append "'" (search-input-file inputs "bin/Rscript")
+                               "'")))
              (substitute* "TEToolkit/IO/ReadInputs.py"
-               (("BamToBED") (which "bamToBed")))
+               (("BamToBED")
+                (search-input-file inputs "bin/bamToBed")))
              (substitute* "TEToolkit/Normalization.py"
                (("\"Rscript\"")
-                (string-append "\"" (which "Rscript") "\"")))
-             #t))
+                (string-append "\"" (search-input-file inputs "bin/Rscript")
+                               "\"")))))
          (add-after 'install 'wrap-program
            (lambda* (#:key outputs #:allow-other-keys)
              ;; Make sure the executables find R packages.
-             (let ((out (assoc-ref outputs "out")))
-               (for-each
-                (lambda (script)
-                  (wrap-program (string-append out "/bin/" script)
-                    `("R_LIBS_SITE" ":" = (,(getenv "R_LIBS_SITE")))))
-                '("TEtranscripts"
-                  "TEcount")))
-             #t)))))
+             (for-each (lambda (script)
+                         (wrap-program script
+                           `("R_LIBS_SITE" ":" = (,(getenv "R_LIBS_SITE")))))
+                       (list (search-input-file outputs "bin/TEtranscripts")
+                             (search-input-file outputs "bin/TEcount"))))))))
     (inputs
-     (list coreutils
+     (list bash-minimal
+           coreutils
            bedtools
-           python2-argparse
-           python2-pysam
+           python-pysam
            r-minimal
            r-deseq2))
-    (home-page "https://github.com/mhammell-laboratory/tetoolkit")
+    (home-page "https://github.com/mhammell-laboratory/TEtranscripts")
     (synopsis "Transposable elements in differential enrichment analysis")
     (description
      "This is package for including transposable elements in differential
@@ -2902,9 +2762,6 @@ files.")
 accessing bigWig files.")
     (license license:expat)))
 
-(define-public python2-pybigwig
-  (package-with-python2 python-pybigwig))
-
 (define-public python-schema-salad
   (package
     (name "python-schema-salad")
@@ -3009,7 +2866,7 @@ and record oriented data modeling and the Semantic Web.")
              ;; Pytest doesn't know what to do with "-n auto"
              (substitute* "tox.ini"
                (("-n auto") "")))))))
-    (propagated-inputs
+    (inputs
      (list python-argcomplete
            python-bagit
            python-coloredlogs
@@ -3092,22 +2949,6 @@ writing, simulation, processing and manipulation of phylogenetic
 trees (phylogenies) and characters.")
     (license license:bsd-3)))
 
-(define-public python2-dendropy
-  (let ((base (package-with-python2 python-dendropy)))
-    (package/inherit base
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'remove-failing-test
-             (lambda _
-               ;; This test fails when the full test suite is run, as documented
-               ;; at https://github.com/jeetsukumaran/DendroPy/issues/74
-               (substitute* "tests/test_dataio_nexml_reader_tree_list.py"
-                 (("test_collection_comments_and_annotations")
-                  "do_not_test_collection_comments_and_annotations"))
-               #t)))
-         ,@(package-arguments base))))))
-
 (define-public python-py2bit
   (package
     (name "python-py2bit")
@@ -3304,6 +3145,11 @@ data and settings.")
      `(#:tests? #f                      ; there are no tests
        #:phases
        (modify-phases %standard-phases
+         (add-before 'build 'set-force-source-date
+           ;; for reproducible dates, texlive needs this to respect respect
+           ;; SOURCE_DATE_EPOCH
+           (lambda _
+             (setenv "FORCE_SOURCE_DATE" "1")))
          (add-after 'unpack 'fix-latex-errors
            (lambda _
              (with-fluids ((%default-port-encoding #f))
@@ -3816,96 +3662,6 @@ supports next-generation sequencing data in fasta/q and csfasta/q format from
 Illumina, Roche 454, and the SOLiD platform.")
     (license license:bsd-3)))
 
-(define-public fraggenescan
-  (package
-    (name "fraggenescan")
-    (version "1.30")
-    (source
-     (origin
-       (method url-fetch)
-       (uri
-        (string-append "mirror://sourceforge/fraggenescan/"
-                       "FragGeneScan" version ".tar.gz"))
-       (sha256
-        (base32 "158dcnwczgcyhwm4qlx19sanrwgdpzf6bn2y57mbpx55lkgz1mzj"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (add-before 'build 'patch-paths
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (string-append (assoc-ref outputs "out")))
-                    (share (string-append out "/share/fraggenescan/")))
-               (substitute* "run_FragGeneScan.pl"
-                 (("system\\(\"rm")
-                  (string-append "system(\"" (which "rm")))
-                 (("system\\(\"mv")
-                  (string-append "system(\"" (which "mv")))
-                 (("\\\"awk") (string-append "\"" (which "awk")))
-                 ;; This script and other programs expect the training files
-                 ;; to be in the non-standard location bin/train/XXX. Change
-                 ;; this to be share/fraggenescan/train/XXX instead.
-                 (("^\\$train.file = \\$dir.*")
-                  (string-append "$train_file = \""
-                                 share
-                                 "train/\".$FGS_train_file;")))
-               (substitute* "run_hmm.c"
-                 (("^  strcat\\(train_dir, \\\"train/\\\"\\);")
-                  (string-append "  strcpy(train_dir, \"" share "/train/\");"))))
-             #t))
-         (replace 'build
-           (lambda _
-             (invoke "make" "clean")
-             (invoke "make" "fgs")
-             #t))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (string-append (assoc-ref outputs "out")))
-                    (bin (string-append out "/bin/"))
-                    (share (string-append out "/share/fraggenescan/train")))
-               (install-file "run_FragGeneScan.pl" bin)
-               (install-file "FragGeneScan" bin)
-               (copy-recursively "train" share))
-             #t))
-         (delete 'check)
-         (add-after 'install 'post-install-check
-           ;; In lieu of 'make check', run one of the examples and check the
-           ;; output files gets created.
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (string-append (assoc-ref outputs "out")))
-                    (bin (string-append out "/bin/"))
-                    (frag (string-append bin "run_FragGeneScan.pl")))
-               ;; Test complete genome.
-               (invoke frag
-                       "-genome=./example/NC_000913.fna"
-                       "-out=./test2"
-                       "-complete=1"
-                       "-train=complete")
-               (unless (and (file-exists? "test2.faa")
-                            (file-exists? "test2.ffn")
-                            (file-exists? "test2.gff")
-                            (file-exists? "test2.out"))
-                 (error "Expected files do not exist."))
-               ;; Test incomplete sequences.
-               (invoke frag
-                       "-genome=./example/NC_000913-fgs.ffn"
-                       "-out=out"
-                       "-complete=0"
-                       "-train=454_30")
-               #t))))))
-    (inputs
-     `(("perl" ,perl)
-       ("python" ,python-2))) ;not compatible with python 3.
-    (home-page "https://sourceforge.net/projects/fraggenescan/")
-    (synopsis "Finds potentially fragmented genes in short reads")
-    (description
-     "FragGeneScan is a program for predicting bacterial and archaeal genes in
-short and error-prone DNA sequencing reads.  It can also be applied to predict
-genes in incomplete assemblies or complete genomes.")
-    ;; GPL3+ according to private correspondense with the authors.
-    (license license:gpl3+)))
-
 (define-public fxtract
   (let ((util-commit "776ca85a18a47492af3794745efcb4a905113115"))
     (package
@@ -4027,48 +3783,6 @@ standard linear mixed model resolver with application in @acronym{GWAS,
 genome-wide association studies}.")
     (license license:gpl3)))
 
-(define-public grit
-  (package
-    (name "grit")
-    (version "2.0.5")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/nboley/grit")
-                    (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1l5v8vfvfbrpmgnrvbrbv40d0arhxcnmxgv2f1mlcqfa3q6bkqm9"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'generate-from-cython-sources
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             ;; Delete these C files to force fresh generation from pyx sources.
-             (delete-file "grit/sparsify_support_fns.c")
-             (delete-file "grit/call_peaks_support_fns.c")
-             (substitute* "setup.py"
-               (("Cython.Setup") "Cython.Build"))
-             #t)))))
-    (inputs
-     (list python2-scipy python2-numpy python2-pysam python2-networkx))
-    (native-inputs
-     (list python2-cython))
-    ;; The canonical <http://grit-bio.org> home page times out as of 2020-01-21.
-    (home-page "https://github.com/nboley/grit")
-    (synopsis "Tool for integrative analysis of RNA-seq type assays")
-    (description
-     "GRIT is designed to use RNA-seq, TES, and TSS data to build and quantify
-full length transcript models.  When none of these data sources are available,
-GRIT can be run by providing a candidate set of TES or TSS sites.  In
-addition, GRIT can merge in reference junctions and gene boundaries.  GRIT can
-also be run in quantification mode, where it uses a provided GTF file and just
-estimates transcript expression.")
-    (license license:gpl3+)))
-
 (define-public hisat
   (package
     (name "hisat")
@@ -4249,9 +3963,6 @@ HMMs).")
 from high-throughput sequencing assays.")
     (license license:gpl3+)))
 
-(define-public python2-htseq
-  (package-with-python2 htseq))
-
 (define-public java-htsjdk
   (package
     (name "java-htsjdk")
@@ -4788,7 +4499,7 @@ performance.")
                            "--enable-libcurl"
                            "--enable-s3")))
     (inputs
-     (list curl openssl))
+     (list bzip2 curl openssl xz))
     ;; This is referred to in the pkg-config file as a required library.
     (propagated-inputs
      (list zlib))
@@ -4878,9 +4589,9 @@ data.  It also provides the @command{bgzip}, @command{htsfile}, and
 
 (define htslib-for-stringtie
   (package
-    (inherit htslib)
+    (inherit htslib-1.12)
     (source (origin
-              (inherit (package-source htslib))
+              (inherit (package-source htslib-1.12))
               (patches
                (search-patches "htslib-for-stringtie.patch"))))
     (arguments
@@ -5393,54 +5104,6 @@ unassembled metagenomic reads, but is mainly designed for full genomes and
 assembled metagenomic sequence.")
     (license license:gpl3+)))
 
-(define-public miso
-  (let ((commit "b71402188000465e3430736a11ea118fd5639a4a")
-        (revision "1"))
-    (package
-      (name "miso")
-      (version (git-version "0.5.4" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/yarden/MISO/")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0x37ipwwvpxbkrg17gmq3hp92c9cphch8acd6cj7fqgnrjwd47g5"))
-                (modules '((guix build utils)))
-                (snippet
-                 '(substitute* "setup.py"
-                    ;; Use "gcc" instead of "cc" for compilation.
-                    (("^defines")
-                     "cc.set_executables(
-compiler='gcc',
-compiler_so='gcc',
-linker_exe='gcc',
-linker_so='gcc -shared'); defines")))))
-      (build-system python-build-system)
-      (arguments
-       `(#:python ,python-2               ; only Python 2 is supported
-         #:tests? #f))                    ; no "test" target
-      (inputs
-       ;; Samtools must not be newer than 1.2.  See
-       ;; https://github.com/yarden/MISO/issues/135
-       (list samtools-1.2 python2-numpy python2-pysam python2-scipy
-             python2-matplotlib))
-      (native-inputs
-       (list python2-mock ; for tests
-             python2-pytz))  ; for tests
-      (home-page "https://miso.readthedocs.io/en/fastmiso/")
-      (synopsis "Mixture of Isoforms model for RNA-Seq isoform quantitation")
-      (description
-       "MISO (Mixture-of-Isoforms) is a probabilistic framework that quantitates
-the expression level of alternatively spliced genes from RNA-Seq data, and
-identifies differentially regulated isoforms or exons across samples.  By
-modeling the generative process by which reads are produced from isoforms in
-RNA-Seq, the MISO model uses Bayesian inference to compute the probability
-that a read originated from a particular isoform.")
-      (license license:gpl2))))
-
 (define-public muscle
   (package
     (name "muscle")
@@ -5531,80 +5194,6 @@ interrupted by stop codons.  OrfM finds and prints these ORFs.")
     (home-page "https://github.com/wwood/OrfM")
     (license license:lgpl3+)))
 
-(define-public python2-pbcore
-  (package
-    (name "python2-pbcore")
-    (version "1.2.10")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "pbcore" version))
-              (sha256
-               (base32
-                "1kjmv891d6qbpp4shhhvkl02ff4q5xlpnls2513sm2cjcrs52f1i"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2               ;pbcore < 2.0 requires Python 2.7
-       #:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'remove-sphinx-dependency
-                    (lambda _
-                      ;; Sphinx is only required for documentation tests, which
-                      ;; we do not run; furthermore it depends on python2-sphinx
-                      ;; which is no longer maintained.
-                      (substitute* "requirements-dev.txt"
-                        (("^sphinx") ""))
-                      #t)))))
-    (propagated-inputs
-     (list python2-cython python2-numpy python2-pysam python2-h5py))
-    (native-inputs
-     (list python2-nose python2-pyxb))
-    (home-page "https://pacificbiosciences.github.io/pbcore/")
-    (synopsis "Library for reading and writing PacBio data files")
-    (description
-     "The pbcore package provides Python APIs for interacting with PacBio data
-files and writing bioinformatics applications.")
-    (license license:bsd-3)))
-
-(define-public python2-warpedlmm
-  (package
-    (name "python2-warpedlmm")
-    (version "0.21")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "WarpedLMM" version ".zip"))
-       (sha256
-        (base32
-         "1agfz6zqa8nc6cw47yh0s3y14gkpa9wqazwcj7mwwj3ffnw39p3j"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2  ; requires Python 2.7
-       #:tests? #f ; test data are not included
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'use-weave
-           (lambda _
-             (substitute* "warpedlmm/util/linalg.py"
-               (("from scipy import linalg, weave")
-                "from scipy import linalg\nimport weave"))
-             #t)))))
-    (propagated-inputs
-     (list python2-scipy
-           python2-numpy
-           python2-matplotlib
-           python2-fastlmm
-           python2-pandas
-           python2-pysnptools
-           python2-weave))
-    (native-inputs
-     (list python2-mock python2-nose unzip))
-    (home-page "https://github.com/PMBio/warpedLMM")
-    (synopsis "Implementation of warped linear mixed models")
-    (description
-     "WarpedLMM is a Python implementation of the warped linear mixed model,
-which automatically learns an optimal warping function (or transformation) for
-the phenotype as it models the data.")
-    (license license:asl2.0)))
-
 (define-public prank
   (package
     (name "prank")
@@ -5726,45 +5315,6 @@ clusters them to find significant groups.  The algorithm was designed to handle
 large-scale data and can be applied to hundreds of species at once.")
     (license license:gpl3+)))
 
-(define-public pyicoteo
-  (package
-    (name "pyicoteo")
-    (version "2.0.7")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://bitbucket.org/regulatorygenomicsupf/pyicoteo.git")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "0hz5g8d25lbjy1wpscr490l0lmyvaix893hhax4fxnh1h9w34w8p"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2 ; does not work with Python 3
-       #:tests? #f))      ; there are no tests
-    (inputs
-     (list python2-matplotlib))
-    (home-page "https://bitbucket.org/regulatorygenomicsupf/pyicoteo")
-    (synopsis "Analyze high-throughput genetic sequencing data")
-    (description
-     "Pyicoteo is a suite of tools for the analysis of high-throughput genetic
-sequencing data.  It works with genomic coordinates.  There are currently six
-different command-line tools:
-
-@enumerate
-@item pyicoregion: for generating exploratory regions automatically;
-@item pyicoenrich: for differential enrichment between two conditions;
-@item pyicoclip: for calling CLIP-Seq peaks without a control;
-@item pyicos: for genomic coordinates manipulation;
-@item pyicoller: for peak calling on punctuated ChIP-Seq;
-@item pyicount: to count how many reads from N experiment files overlap in a
-  region file;
-@item pyicotrocol: to combine operations from pyicoteo.
-@end enumerate\n")
-    (license license:gpl3+)))
-
 (define-public prodigal
   (package
     (name "prodigal")
@@ -6576,10 +6126,12 @@ simultaneously.")
              ;; architecture name ("i386") instead of the target system prefix
              ;; ("i686").
              (mkdir (string-append (assoc-ref outputs "out") "/ilib"))
-             (copy-recursively (string-append "build/ncbi-vdb/linux/gcc/"
-                                              ,(system->linux-architecture
-                                                (or (%current-target-system)
-                                                    (%current-system)))
+             (copy-recursively (string-append
+                                "build/ncbi-vdb/linux/gcc/"
+                                ,(platform-linux-architecture
+                                  (lookup-platform-by-target-or-system
+                                   (or (%current-target-system)
+                                       (%current-system))))
                                               "/rel/ilib")
                                (string-append (assoc-ref outputs "out")
                                               "/ilib"))
@@ -6668,7 +6220,7 @@ subsequent visualization, annotation and storage of results.")
 (define-public plink-ng
   (package (inherit plink)
     (name "plink-ng")
-    (version "2.00a2.3")
+    (version "2.00a3-20220315")
     (source
      (origin
        (method git-fetch)
@@ -6677,7 +6229,7 @@ subsequent visualization, annotation and storage of results.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1p88lz9agzjlspjhciz61qjc36cfniv4nkxszyy0njqyc5rzc0cd"))))
+        (base32 "19inr47jwddkjb9kfb14yxc7xb16c73lkhgxj9sncb0fsiskb4x8"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
@@ -6832,9 +6384,6 @@ Values such as sequence name, sequence description, sequence quality and the
 sequence itself can be retrieved from these databases.")
     (license license:bsd-3)))
 
-(define-public python2-screed
-  (package-with-python2 python-screed))
-
 (define-public sra-tools
   (package
     (name "sra-tools")
@@ -7821,7 +7370,7 @@ single-cell data.")
              r-rlist))
       (home-page "https://github.com/soumelis-lab/ICELLNET")
       (synopsis "Transcriptomic-based framework to dissect cell communication")
-      (description "This packages provides a a transcriptomic-based framework
+      (description "This package provides a a transcriptomic-based framework
 to dissect cell communication in a global manner.  It integrates an original
 expert-curated database of ligand-receptor interactions taking into account
 multiple subunits expression.  Based on transcriptomic profiles (gene
@@ -8819,32 +8368,6 @@ regions of statistically significant read enrichment.  Additional covariates
 may optionally be provided to further inform the peak-calling process.")
       (license license:gpl3+))))
 
-(define-public pepr
-  (package
-    (name "pepr")
-    (version "1.0.9")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "PePr" version))
-              (sha256
-               (base32
-                "0qxjfdpl1b1y53nccws2d85f6k74zwmx8y8sd9rszcqhfayx6gdx"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2 ; python2 only
-       #:tests? #f)) ; no tests included
-    (propagated-inputs
-     (list python2-numpy python2-scipy python2-pysam))
-    (home-page "https://github.com/shawnzhangyx/PePr")
-    (synopsis "Peak-calling and prioritization pipeline for ChIP-Seq data")
-    (description
-     "PePr is a ChIP-Seq peak calling or differential binding analysis tool
-that is primarily designed for data with biological replicates.  It uses a
-negative binomial distribution to model the read counts among the samples in
-the same group, and look for consistent differences between ChIP and control
-group or two ChIP groups run under different conditions.")
-    (license license:gpl3+)))
-
 (define-public filevercmp
   (let ((commit "1a9b779b93d0b244040274794d402106907b71b7")
         (revision "1"))
@@ -8981,6 +8504,34 @@ analysis, variant tools is project based and provides a whole set of tools to
 manipulate and analyze genetic variants.")
     (license license:gpl3+)))
 
+(define-public r-chromvarmotifs
+  (let ((commit "38bed559c1f4770b6c91c80bf3f8ea965da26076")
+        (revision "1"))
+    (package
+      (name "r-chromvarmotifs")
+      (version (git-version "0.2.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/GreenleafLab/chromVARmotifs")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0i9v1m1hrg1lkd2pnkj5nnrpks6vhhhpbdhsfl2lmjak4npxxr5q"))))
+      (properties `((upstream-name . "chromVARmotifs")))
+      (build-system r-build-system)
+      (propagated-inputs
+       `(("r-tfbstools" ,r-tfbstools)))
+      (home-page "https://github.com/GreenleafLab/chromVARmotifs")
+      (synopsis "Stores motif collections for use with motifmatchr or chromVAR")
+      (description
+       "This package stores motif collections as lists of @dfn{position
+frequency matrix} (PWMatrixList) objects provided by the @code{TFBSTools}
+package for use in R with packages like @code{motifmatchr} or
+@code{chromVAR}.")
+      (license license:expat))))
+
 (define-public r-raremetals2
   (package
     (name "r-raremetals2")
@@ -9009,6 +8560,43 @@ for analyzing gene-level association tests in meta-analyses for binary
 trait.")
     (license license:gpl3)))
 
+(define-public r-rnaseqdtu
+  (let ((commit "5bee1e769d2e1dc6a3f1cecb78078050eeb5b9ac")
+        (revision "1"))
+    (package
+      (name "r-rnaseqdtu")
+      (version (git-version "2.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/mikelove/rnaseqDTU/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0jfi1ydsk8m5nadwnih48v87nnxdc7s3f0pny4axmnj40dd42as0"))))
+      (properties `((upstream-name . "rnaseqDTU")))
+      (build-system r-build-system)
+      (propagated-inputs
+       (list r-deseq2
+             r-devtools
+             r-dexseq
+             r-drimseq
+             r-edger
+             r-rafalib
+             r-stager))
+      (native-inputs (list r-knitr))
+      (home-page "https://github.com/mikelove/rnaseqDTU/")
+      (synopsis "RNA-seq workflow for differential transcript usage")
+      (description
+       "This package provides an RNA-seq workflow for differential transcript
+usage (DTU) following Salmon quantification.  This workflow performs a DTU
+analysis on simulated data.  It also shows how to use stageR to perform
+two-stage testing of DTU, a statistical framework to screen at the gene level
+and then confirm which transcripts within the significant genes show evidence
+of DTU.")
+      (license license:artistic2.0))))
+
 (define-public r-dropbead
   (let ((commit "d746c6f3b32110428ea56d6a0001ce52a251c247")
         (revision "2"))
@@ -9101,6 +8689,44 @@ droplet sequencing.  It has been particularly tailored for Drop-seq.")
 communication networks from scRNA-seq data.")
       (license license:gpl3))))
 
+(define-public r-copykat
+  (let ((commit                         ;no tag
+         "256de33dfc1b80a1a0ac9e098c5557f95a4e0d53")
+        (revision "0"))
+    (package
+      (name "r-copykat")
+      (version (git-version "1.0.8" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/navinlabcode/copykat")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0ckyqnial3imcqlgd6xfgwk5w977l1i87sx4kdbwdvg40w0vh1j8"))))
+      (properties `((upstream-name . "copykat")))
+      (build-system r-build-system)
+      (propagated-inputs
+       (list r-cluster
+             r-dlm
+             r-gplots
+             r-mcmcpack
+             r-mixtools
+             r-paralleldist
+             r-rcolorbrewer))
+      (native-inputs (list r-knitr))
+      (home-page "https://github.com/navinlabcode/copykat")
+      (synopsis "Inference of genomic copy number from single cell RNAseq data")
+      (description
+       "This package Copynumber KAryotyping of Tumors infers genomic copy
+number and subclonal structure of human tumors using integrative Bayesian
+approaches to identify genome-wide aneuploidy at 5MB resolution in single
+cells data.  It separates tumor cells and tumor subclones from normal cells
+using high-throughput sc-RNAseq data.")
+      (license license:gpl2))))
+
 (define-public sambamba
   (package
     (name "sambamba")
@@ -9267,72 +8893,6 @@ adapter trimming as well as quality control, with some added functionality to
 remove biased methylation positions for RRBS sequence files.")
     (license license:gpl3+)))
 
-(define-public gess
-  (package
-    (name "gess")
-    (version "1.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "http://compbio.uthscsa.edu/"
-                                  "GESS_Web/files/"
-                                  "gess-" version ".src.tar.gz"))
-              (sha256
-               (base32
-                "0hyk403kxscclzfs24pvdgiv0wm03kjcziqdrp5w46cb049gz0d7"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:tests? #f                      ; no tests
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (delete 'build)
-         (replace 'install
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((python (assoc-ref inputs "python"))
-                    (out    (assoc-ref outputs "out"))
-                    (bin    (string-append out "/bin/"))
-                    (target (string-append
-                             out "/lib/python"
-                             ,(version-major+minor
-                                (package-version python))
-                             "/site-packages/gess/")))
-               (mkdir-p target)
-               (copy-recursively "." target)
-               ;; Make GESS.py executable
-               (chmod (string-append target "GESS.py") #o555)
-               ;; Add Python shebang to the top and make Matplotlib
-               ;; usable.
-               (substitute* (string-append target "GESS.py")
-                 (("\"\"\"Description:" line)
-                  (string-append "#!" (which "python") "
-import matplotlib
-matplotlib.use('Agg')
-" line)))
-               ;; Make sure GESS has all modules in its path
-               (wrap-script (string-append target "GESS.py")
-                 #:guile (search-input-file inputs "bin/guile")
-                 `("GUIX_PYTHONPATH" ":" = (,target ,(getenv "GUIX_PYTHONPATH"))))
-               (mkdir-p bin)
-               (symlink (string-append target "GESS.py")
-                        (string-append bin "GESS.py"))
-               #t))))))
-    (inputs
-     `(("python" ,python-2)
-       ("python2-pysam" ,python2-pysam)
-       ("python2-scipy" ,python2-scipy)
-       ("python2-numpy" ,python2-numpy)
-       ("python2-networkx" ,python2-networkx)
-       ("python2-biopython" ,python2-biopython)
-       ("guile" ,guile-3.0))) ; for the script wrapper
-    (home-page "https://compbio.uthscsa.edu/GESS_Web/")
-    (synopsis "Detect exon-skipping events from raw RNA-seq data")
-    (description
-     "GESS is an implementation of a novel computational method to detect de
-novo exon-skipping events directly from raw RNA-seq data without the prior
-knowledge of gene annotation information.  GESS stands for the graph-based
-exon-skipping scanner detection scheme.")
-    (license license:bsd-3)))
-
 (define-public phylip
   (package
     (name "phylip")
@@ -10266,7 +9826,7 @@ variational inference.")
 (define-public python-loompy
   (package
     (name "python-loompy")
-    (version "2.0.17")
+    (version "3.0.7")
     ;; The tarball on Pypi does not include the tests.
     (source (origin
               (method git-fetch)
@@ -10276,16 +9836,33 @@ variational inference.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "12a5kjgiikapv93wahfw0frszx1lblnppyz3vs5gy8fgmgngra07"))))
+                "0xmw2yv1y3y7vh5jcbrmlkn43nmfs0pf6z78k1yxqs3qy248m9b0"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (replace 'check
+         ;; See https://github.com/linnarsson-lab/loompy/issues/169
+         (add-after 'unpack 'fix-h5py-error
+           (lambda _
+             (substitute* "tests/test_file_attribute_manager.py"
+               (("h5py.File\\(f.name\\)")
+                "h5py.File(f.name, 'a')"))))
+         ;; Numba needs a writable dir to cache functions.
+         (add-before 'check 'set-numba-cache-dir
            (lambda _
-             (invoke "pytest" "tests"))))))
+             (setenv "NUMBA_CACHE_DIR" "/tmp")))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "pytest" "tests")))))))
     (propagated-inputs
-     (list python-h5py python-numpy python-pandas python-scipy))
+     (list python-click
+           python-h5py
+           python-numba
+           python-numpy
+           python-numpy-groupies
+           python-pandas
+           python-scipy))
     (native-inputs
      (list python-pytest))
     (home-page "https://github.com/linnarsson-lab/loompy")
@@ -10869,7 +10446,7 @@ once.  This package provides tools to perform Drop-seq analyses.")
 (define-public pigx-rnaseq
   (package
     (name "pigx-rnaseq")
-    (version "0.0.19")
+    (version "0.1.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/BIMSBbioinfo/pigx_rnaseq/"
@@ -10877,8 +10454,7 @@ once.  This package provides tools to perform Drop-seq analyses.")
                                   "/pigx_rnaseq-" version ".tar.gz"))
               (sha256
                (base32
-                "1ja3bda1appxrzbfy7wp7khy30mm7lic8xbq3gkbpc5bld3as9cm"))
-              (patches (search-patches "pigx-rnaseq-no-citeproc.patch"))))
+                "0acdjimfb9ywba8zsv7lavv436pmcmp8ra683h11wr4s3681pqk8"))))
     (build-system gnu-build-system)
     (arguments
      `(#:parallel-tests? #f             ; not supported
@@ -10909,6 +10485,7 @@ once.  This package provides tools to perform Drop-seq analyses.")
            sed
            gzip
            snakemake
+           megadepth
            multiqc
            star-for-pigx
            hisat2
@@ -10954,7 +10531,7 @@ expression report comparing samples in an easily configurable manner.")
 (define-public pigx-chipseq
   (package
     (name "pigx-chipseq")
-    (version "0.0.53")
+    (version "0.1.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/BIMSBbioinfo/pigx_chipseq/"
@@ -10962,16 +10539,12 @@ expression report comparing samples in an easily configurable manner.")
                                   "/pigx_chipseq-" version ".tar.gz"))
               (sha256
                (base32
-                "0c6npx35sszycf059w1x1k4k9hq1qqxny0i4p57q1188czr4561h"))
-              (patches (search-patches "pigx-chipseq-no-citeproc.patch"))))
+                "008n6drj9q5av86xihxlj4py2c9p3c5z5ld89c3bksrp77zxiy67"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; parts of the tests rely on access to the network
        #:phases
        (modify-phases %standard-phases
-         (add-before 'bootstrap 'autoreconf
-           (lambda _
-             (invoke "autoreconf" "-vif")))
          (add-before 'configure 'set-PYTHONPATH
            (lambda _
              (setenv "PYTHONPATH" (getenv "GUIX_PYTHONPATH")))))))
@@ -11025,7 +10598,7 @@ expression report comparing samples in an easily configurable manner.")
            bedtools
            kentutils))
     (native-inputs
-     (list autoconf automake python-pytest))
+     (list python-pytest))
     (home-page "https://bioinformatics.mdc-berlin.de/pigx/")
     (synopsis "Analysis pipeline for ChIP sequencing experiments")
     (description "PiGX ChIPseq is an analysis pipeline for preprocessing, peak
@@ -11040,7 +10613,7 @@ in an easily configurable manner.")
 (define-public pigx-bsseq
   (package
     (name "pigx-bsseq")
-    (version "0.1.6")
+    (version "0.1.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/BIMSBbioinfo/pigx_bsseq/"
@@ -11048,8 +10621,7 @@ in an easily configurable manner.")
                                   "/pigx_bsseq-" version ".tar.gz"))
               (sha256
                (base32
-                "1dipikph0xdr8fp0h1flpafcrg60y4aabljg8fl1v92j3gxdggmw"))
-              (patches (search-patches "pigx-bsseq-no-citeproc.patch"))))
+                "1hfiignq3410dbl6f67vc6zr69abknpcgxixx475dspky2jb5lyn"))))
     (build-system gnu-build-system)
     (arguments
      `(;; TODO: tests currently require 12+GB of RAM.  See
@@ -11057,9 +10629,6 @@ in an easily configurable manner.")
        #:tests? #f
        #:phases
        (modify-phases %standard-phases
-         (add-before 'bootstrap 'autoreconf
-           (lambda _
-             (invoke "autoreconf" "-vif")))
          (add-before 'configure 'set-PYTHONPATH
            (lambda _
              (setenv "PYTHONPATH" (getenv "GUIX_PYTHONPATH"))))
@@ -11071,7 +10640,7 @@ in an easily configurable manner.")
                      (search-input-directory inputs
                                              "share/zoneinfo")))))))
     (native-inputs
-     (list tzdata automake autoconf))
+     (list tzdata))
     (inputs
      (list coreutils
            sed
@@ -11115,7 +10684,7 @@ methylation and segmentation.")
 (define-public pigx-scrnaseq
   (package
     (name "pigx-scrnaseq")
-    (version "1.1.7")
+    (version "1.1.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/BIMSBbioinfo/pigx_scrnaseq/"
@@ -11123,65 +10692,63 @@ methylation and segmentation.")
                                   "/pigx_scrnaseq-" version ".tar.gz"))
               (sha256
                (base32
-                "1h5mcxzwj3cidlkvy9ly5wmi48vwfsjf8dxjfirknqxr9a92hwlx"))
-              (patches (search-patches "pigx-scrnaseq-no-citeproc.patch"))))
+                "0adx7877c3lhlrzfid76i8bc829wcmzvrm0jx47gyid8mxqb7vqs"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'bootstrap 'autoreconf
-           (lambda _
-             (invoke "autoreconf" "-vif")))
-         (add-before 'configure 'set-PYTHONPATH
+         (add-before 'configure 'set-additional-environment-variables
            (lambda _
+             ;; Needed because of loompy
+             (setenv "NUMBA_CACHE_DIR" "/tmp")
+             ;; Needed to capture environment
              (setenv "PYTHONPATH" (getenv "GUIX_PYTHONPATH")))))))
-    (native-inputs
-     (list automake autoconf))
     (inputs
-     `(("coreutils" ,coreutils)
-       ("perl" ,perl)
-       ("fastqc" ,fastqc)
-       ("flexbar" ,flexbar)
-       ("java" ,icedtea-8)
-       ("jellyfish" ,jellyfish)
-       ("python-wrapper" ,python-wrapper)
-       ("python-pyyaml" ,python-pyyaml)
-       ("python-pandas" ,python-pandas)
-       ("python-magic" ,python-magic)
-       ("python-numpy" ,python-numpy)
-       ("python-loompy" ,python-loompy)
-       ("pandoc" ,pandoc)
-       ("samtools" ,samtools)
-       ("snakemake" ,snakemake)
-       ("star" ,star-for-pigx)
-       ("r-minimal" ,r-minimal)
-       ("r-argparser" ,r-argparser)
-       ("r-cowplot" ,r-cowplot)
-       ("r-data-table" ,r-data-table)
-       ("r-delayedarray" ,r-delayedarray)
-       ("r-delayedmatrixstats" ,r-delayedmatrixstats)
-       ("r-dplyr" ,r-dplyr)
-       ("r-dropbead" ,r-dropbead)
-       ("r-dt" ,r-dt)
-       ("r-genomicalignments" ,r-genomicalignments)
-       ("r-genomicfiles" ,r-genomicfiles)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-ggplot2" ,r-ggplot2)
-       ("r-hdf5array" ,r-hdf5array)
-       ("r-pheatmap" ,r-pheatmap)
-       ("r-rmarkdown" ,r-rmarkdown)
-       ("r-rsamtools" ,r-rsamtools)
-       ("r-rtracklayer" ,r-rtracklayer)
-       ("r-rtsne" ,r-rtsne)
-       ("r-scater" ,r-scater)
-       ("r-scran" ,r-scran)
-       ("r-seurat" ,r-seurat)
-       ("r-singlecellexperiment" ,r-singlecellexperiment)
-       ("r-stringr" ,r-stringr)
-       ("r-yaml" ,r-yaml)))
+     (list coreutils
+           perl
+           fastqc
+           flexbar
+           icedtea-8
+           jellyfish
+           python-wrapper
+           python-pyyaml
+           python-pandas
+           python-magic
+           python-numpy
+           python-loompy
+           pandoc
+           samtools
+           snakemake
+           star-for-pigx
+           r-minimal
+           r-argparser
+           r-cowplot
+           r-data-table
+           r-delayedarray
+           r-delayedmatrixstats
+           r-dplyr
+           r-dropbead
+           r-dt
+           r-genomicalignments
+           r-genomicfiles
+           r-genomicranges
+           r-ggplot2
+           r-hdf5array
+           r-pheatmap
+           r-rmarkdown
+           r-rsamtools
+           r-rtracklayer
+           r-rtsne
+           r-scater
+           r-scran
+           r-seurat
+           r-singlecellexperiment
+           r-stringr
+           r-yaml))
     (home-page "https://bioinformatics.mdc-berlin.de/pigx/")
     (synopsis "Analysis pipeline for single-cell RNA sequencing experiments")
-    (description "PiGX scRNAseq is an analysis pipeline for preprocessing and
+    (description
+     "PiGX scRNAseq is an analysis pipeline for preprocessing and
 quality control for single cell RNA sequencing experiments.  The inputs are
 read files from the sequencing experiment, and a configuration file which
 describes the experiment.  It produces processed files for downstream analysis
@@ -11189,25 +10756,29 @@ and interactive quality reports.  The pipeline is designed to work with UMI
 based methods.")
     (license license:gpl3+)))
 
-(define-public pigx-sars-cov2-ww
+(define-public pigx-sars-cov-2
   (package
-    (name "pigx-sars-cov2-ww")
-    (version "0.0.4")
+    (name "pigx-sars-cov-2")
+    (version "0.0.7")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://github.com/BIMSBbioinfo/pigx_sarscov2_ww/"
-                                  "releases/download/v" version
-                                  "/pigx_sars-cov2-ww-" version ".tar.gz"))
+              (uri (string-append "https://github.com/BIMSBbioinfo/pigx_sars-cov-2"
+                                  "/releases/download/v" version
+                                  "/pigx_sars-cov-2-" version ".tar.gz"))
               (sha256
                (base32
-                "0axnmz4d8zgir888mc0cilcq4m3v41xmjmpp3w3444lciwnxydvs"))
-              (patches (search-patches "pigx-sars-cov2-ww-no-citeproc.patch"))))
+                "1bqm03ypf7l8lrkjkydxzn7vy0qlps3v9c5cpz2wb008zw44bi3k"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
+     `(#:tests? #f ;requires huge kraken database
+       #:phases
        (modify-phases %standard-phases
          (add-before 'bootstrap 'autoreconf
            (lambda _
+             ;; https://github.com/BIMSBbioinfo/pigx_sars-cov-2/issues/123
+             (substitute* "m4/ax_r_package.m4"
+               (("if\\(is.na\\(packageDescription\\(\"PKG\"\\)\\)\\)")
+                "if(system.file(package=\"PKG\") == \"\")"))
              (invoke "autoreconf" "-vif")))
          (add-before 'configure 'set-PYTHONPATH
            (lambda _
@@ -11216,7 +10787,6 @@ based methods.")
      (list automake autoconf))
     (inputs
      (list bash-minimal
-           bbmap
            bedtools
            bwa
            ensembl-vep
@@ -11227,7 +10797,6 @@ based methods.")
            krona-tools
            lofreq
            multiqc
-           prinseq
            python-pyyaml
            python-wrapper
            r-base64url
@@ -11243,6 +10812,7 @@ based methods.")
            r-rmarkdown
            r-stringr
            r-tidyr
+           r-viridis
            samtools
            snakemake
            wget))
@@ -11255,6 +10825,9 @@ report will provide an intuitive visual overview about the development of
 variant abundance over time and location.")
     (license license:gpl3+)))
 
+(define-public pigx-sars-cov2-ww
+  (deprecated-package "pigx-sars-cov2-ww" pigx-sars-cov-2))
+
 (define-public pigx
   (package
     (name "pigx")
@@ -11813,6 +11386,105 @@ distributions.  Homotypic doublet proportion estimation is achieved by finding
 the sum of squared cell annotation frequencies.")
       (license license:cc0))))
 
+;; There have been no releases.
+(define-public r-cytobackbone
+  (let ((commit "4c1a0a35cc5ae1f8f516127cec92351d96fe26e7")
+        (revision "1"))
+    (package
+      (name "r-cytobackbone")
+      (version (git-version "1.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/tchitchek-lab/CytoBackBone")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0ahiad14zcgdk42xzw5xryic2ibn2l8lkrcdvl2b5sz2js028yb3"))))
+      (properties `((upstream-name . "CytoBackBone")))
+      (build-system r-build-system)
+      (propagated-inputs
+       (list r-flowcore
+             r-flowutils
+             r-fnn
+             r-ggplot2
+             r-preprocesscore))
+      (native-inputs (list r-knitr))
+      (home-page "https://github.com/tchitchek-lab/CytoBackBone")
+      (synopsis "Merge phenotype information from different cytometric profiles")
+      (description
+       "This package implements an algorithm which increases the number of
+simultaneously measurable markers and in this way helps with study of the
+immune responses.  Thus, the present algorithm, named @code{CytoBackBone},
+allows combining phenotypic information of cells from different cytometric
+profiles obtained from different cytometry panels.  This computational
+approach is based on the principle that each cell has its own phenotypic and
+functional characteristics that can be used as an identification card.
+@code{CytoBackBone} uses a set of predefined markers, that we call the
+backbone, to define this identification card.  The phenotypic information of
+cells with similar identification cards in the different cytometric profiles
+is then merged.")
+      (license license:gpl2))))
+
+(define-public r-giotto
+  (let ((commit "68d7390dce87223cac11d4d8f31705fe0144d011")
+        (revision "1"))
+    (package
+      (name "r-giotto")
+      (version (git-version "1.1.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/RubD/Giotto/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0mv60khc05wrxzr4ir6cirn7dpqvgwan5hm00lmafsyalr51nf5i"))))
+      (properties `((upstream-name . "Giotto")))
+      (build-system r-build-system)
+      (propagated-inputs
+       (list r-clusterr
+             r-complexheatmap
+             r-cowplot
+             r-data-table
+             r-dbscan
+             r-deldir
+             r-farver
+             r-fitdistrplus
+             r-ggdendro
+             r-ggplot2
+             r-ggraph
+             r-ggrepel
+             r-igraph
+             r-irlba
+             r-lfa
+             r-limma
+             r-magick
+             r-magrittr
+             r-matrix
+             r-matrixstats
+             r-plotly
+             r-qvalue
+             r-r-utils
+             r-rcolorbrewer
+             r-rcpp
+             r-reshape2
+             r-reticulate
+             r-rfast
+             r-rlang
+             r-rtsne
+             r-scales
+             r-uwot))
+      (native-inputs (list r-knitr))
+      (home-page "https://github.com/RubD/Giotto/")
+      (synopsis "Spatial single-cell transcriptomics toolbox")
+      (description
+       "This package provides a toolbox to process, analyze and visualize
+spatial single-cell expression data.")
+      (license license:expat))))
+
 (define-public gffread
   ;; We cannot use the tagged release because it is not in sync with gclib.
   ;; See https://github.com/gpertea/gffread/issues/26
@@ -11874,56 +11546,6 @@ conversions, region filtering, FASTA sequence extraction and more.")
       (license (list license:expat
                      license:artistic2.0)))))
 
-(define-public find-circ
-  ;; The last release was in 2015.  The license was clarified in 2017, so we
-  ;; take the latest commit.
-  (let ((commit "8655dca54970fcf7e92e22fbf57e1188724dda7d")
-        (revision "1"))
-    (package
-      (name "find-circ")
-      (version (git-version "1.2" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/marvin-jens/find_circ")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "0p77pbqbclqr4srms34y1b9b4njybfpjiknc11ki84f3p8skb3cg"))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:tests? #f                    ; there are none
-         #:phases
-         ;; There is no actual build system.
-         (modify-phases %standard-phases
-           (delete 'configure)
-           (delete 'build)
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (bin (string-append out "/bin"))
-                      (path (getenv "GUIX_PYTHONPATH")))
-                 (for-each (lambda (script)
-                             (install-file script bin)
-                             (wrap-program (string-append bin "/" script)
-                               `("GUIX_PYTHONPATH" ":" prefix (,path))))
-                           '("cmp_bed.py"
-                             "find_circ.py"
-                             "maxlength.py"
-                             "merge_bed.py"
-                             "unmapped2anchors.py")))
-               #t)))))
-      (inputs
-       (list python-2 python2-pysam python2-numpy))
-      (home-page "https://github.com/marvin-jens/find_circ")
-      (synopsis "circRNA detection from RNA-seq reads")
-      (description "This package provides tools to detect head-to-tail
-spliced (back-spliced) sequencing reads, indicative of circular RNA (circRNA)
-in RNA-seq data.")
-      (license license:gpl3))))
-
 (define-public fit-sne
   (package
     (name "fit-sne")
@@ -11990,7 +11612,7 @@ implementation differs in these ways:
 (define-public python-scanpy
   (package
     (name "python-scanpy")
-    (version "1.8.2")
+    (version "1.9.1")
     (source
      (origin
        (method git-fetch)
@@ -12000,7 +11622,7 @@ implementation differs in these ways:
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "14zax23lqinv7xyv3491vpl3ydi38naiwaxg5mkfs5zk2406cqdr"))))
+         "0k524xnx3dvpz5yx65p316wghvi01zs17is8w2m3w2qywiswk0sl"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -12020,6 +11642,10 @@ implementation differs in these ways:
                            (invoke "python" "-m" "pip" "install"
                                    wheel (string-append "--prefix=" out)))
                          (find-files "dist" "\\.whl$")))))
+         ;; Numba needs a writable dir to cache functions.
+         (add-before 'check 'set-numba-cache-dir
+           (lambda _
+             (setenv "NUMBA_CACHE_DIR" "/tmp")))
          (replace 'check
            (lambda* (#:key tests? inputs #:allow-other-keys)
              (when tests?
@@ -12027,6 +11653,7 @@ implementation differs in these ways:
                (delete-file-recursively "scanpy/tests/notebooks")
                (delete-file "scanpy/tests/test_clustering.py")
                (delete-file "scanpy/tests/test_datasets.py")
+               (delete-file "scanpy/tests/test_normalization.py")
                (delete-file "scanpy/tests/test_score_genes.py")
                (delete-file "scanpy/tests/test_highly_variable_genes.py")
 
@@ -12035,6 +11662,9 @@ implementation differs in these ways:
                (delete-file "scanpy/tests/test_preprocessing.py")
                (delete-file "scanpy/tests/test_read_10x.py")
 
+               ;; These two fail with "ValueError: I/O operation on closed file."
+               (delete-file "scanpy/tests/test_neighbors_key_added.py")
+
                ;; TODO: these fail with TypingError and "Use of unsupported
                ;; NumPy function 'numpy.split'".
                (delete-file "scanpy/tests/test_metrics.py")
@@ -12060,17 +11690,20 @@ implementation differs in these ways:
                                       " and not test_clustermap"
 
                                       ;; These try to connect to the network
+                                      " and not test_scrublet_plots"
                                       " and not test_plot_rank_genes_groups_gene_symbols"
+                                      " and not test_pca_n_pcs"
                                       " and not test_pca_chunked"
                                       " and not test_pca_sparse"
                                       " and not test_pca_reproducible"))))))))
     (propagated-inputs
      (list python-anndata
+           python-dask
            python-h5py
            python-igraph
            python-joblib
            python-legacy-api-wrap
-           python-louvain-0.7
+           python-louvain
            python-matplotlib
            python-natsort
            python-networkx
@@ -12081,6 +11714,7 @@ implementation differs in these ways:
            python-scikit-learn
            python-scipy
            python-seaborn
+           python-session-info
            python-sinfo
            python-statsmodels
            python-tables
@@ -12417,9 +12051,6 @@ bgzipped text file that contains a pair of genomic coordinates per line.")
 fasta subsequences.")
     (license license:bsd-3)))
 
-(define-public python2-pyfaidx
-  (package-with-python2 python-pyfaidx))
-
 (define-public python-cooler
   (package
     (name "python-cooler")
@@ -12435,6 +12066,13 @@ fasta subsequences.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         ;; cooler requests cytoolz<0.11.  It only uses cytoolz for "compose",
+         ;; which composes two functions.
+         (add-after 'unpack 'use-recent-cytoolz
+           (lambda _
+             (substitute* '("requirements.txt"
+                            "cooler.egg-info/requires.txt")
+               (("cytoolz.*<.*0.11") "cytoolz"))))
          (add-after 'unpack 'patch-tests
            (lambda _
              (substitute* "tests/test_create.py"
@@ -12460,7 +12098,7 @@ fasta subsequences.")
      (list python-asciitree
            python-biopython
            python-click
-           python-cytoolz-for-cooler
+           python-cytoolz
            python-dask
            python-h5py
            python-multiprocess
@@ -12667,7 +12305,20 @@ efficiently.")
            (lambda _
              (for-each make-file-writable
                        (list "test_data/hic2cool_0.4.2_single_res.cool"
-                             "test_data/hic2cool_0.7.0_multi_res.mcool")))))))
+                             "test_data/hic2cool_0.7.0_multi_res.mcool"))))
+         ;; See https://github.com/4dn-dcic/hic2cool/issues/58
+         (add-after 'unpack 'fix-incompatibility-with-h5py-3
+           (lambda _
+             (substitute* "test.py"
+               (("h5py.File\\(fname\\)") "h5py.File(fname, 'r')"))
+             (substitute* "hic2cool/hic2cool_updates.py"
+               (("h5py.File\\(writefile\\)")
+                "h5py.File(writefile, 'a')"))))
+         ;; These two tests fail for unknown reasons.
+         (add-after 'unpack 'disable-broken-tests
+           (lambda _
+             (substitute* "test.py"
+               (("def test_convert") "def _test_convert")))))))
     (propagated-inputs
      (list python-cooler python-h5py python-numpy python-pandas
            python-scipy))
@@ -12844,42 +12495,6 @@ of Nanopore reads that were barcoded with the Native Barcoding Kit, PCR
 Barcoding Kit or Rapid Barcoding Kit.")
       (license license:gpl3+))))
 
-(define-public poretools
-  ;; The latest release was in 2016 and the latest commit is from 2017
-  ;; the recommended way to install is to clone the git repository
-  ;; https://poretools.readthedocs.io/en/latest/content/installation.html
-  (let ((commit "e426b1f09e86ac259a00c261c79df91510777407")
-        (revision "1"))
-    (package
-      (name "poretools")
-      (version (git-version "0.6.0" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/arq5x/poretools")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "0bglj833wxpp3cq430p1d3xp085ls221js2y90w7ir2x5ay8l7am"))))
-      (build-system python-build-system)
-      ;; requires python >=2.7, <3.0, and the same for python dependencies
-      (arguments `(#:python ,python-2))
-      (inputs
-       (list hdf5))
-      (propagated-inputs
-       (list python2-dateutil python2-h5py python2-matplotlib
-             python2-pandas python2-seaborn))
-      (home-page "https://poretools.readthedocs.io")
-      (synopsis "Toolkit for working with nanopore sequencing data")
-      (description
-       "The MinION from Oxford Nanopore Technologies is a nanopore sequencer.
-This @code{poretools} package is a flexible toolkit for exploring datasets
-generated by nanopore sequencing devices for the purposes of quality control and
-downstream analysis.  Poretools operates directly on the native FAST5, a variant
-of the Hierarchical Data Format (HDF5) standard.")
-      (license license:expat))))
-
 (define-public jamm
   (package
     (name "jamm")
@@ -13461,6 +13076,13 @@ repeated areas between contigs.")
        (snippet
         '(for-each delete-file (find-files "." "\\.c")))))
     (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         ;; Numba needs a writable dir to cache functions.
+         (add-before 'check 'set-numba-cache-dir
+           (lambda _
+             (setenv "NUMBA_CACHE_DIR" "/tmp"))))))
     (native-inputs
      (list python-joblib))
     (propagated-inputs
@@ -13585,162 +13207,6 @@ Additionally, the AdapterRemoval may be used to recover a consensus adapter
 sequence for paired-ended data, for which this information is not available.")
     (license license:gpl3+)))
 
-(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")
-               (commit (string-append "v" version))))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "11ppbbbx20p2g9wj3ff64dhnarb12q79v7qh4rk0gj6lkbz4n7cn"))))
-      (build-system ocaml-build-system)
-      (arguments
-       `(#:modules ((guix build ocaml-build-system)
-                    (guix build utils)
-                    (ice-9 ftw))
-         #:phases
-         (modify-phases %standard-phases
-           (delete 'configure)
-           (add-after 'unpack 'fix-build-with-latest-ocaml
-             (lambda _
-               (substitute* "myocamlbuild.ml"
-                 (("dep \\[\"c_pam\"\\]" m)
-                  (string-append "flag [\"ocaml\"; \"compile\"] (A \"-unsafe-string\");\n"
-                                 m))
-                 (("let run_and_read" m)
-                  (string-append "
-let split s ch =
-  let x = ref [] in
-  let rec go s =
-    let pos = String.index s ch in
-    x := (String.before s pos)::!x;
-    go (String.after s (pos + 1))
-  in
-  try go s
-  with Not_found -> !x
-let split_nl s = split s '\\n'
-let before_space s =
-  try String.before s (String.index s ' ')
-  with Not_found -> s
-
-" m))
-                 (("run_and_read \"ocamlfind list \\| cut -d' ' -f1\"" m)
-                  (string-append "List.map before_space (split_nl & " m ")"))
-                 (("    blank_sep_strings &") "")
-                 (("      Lexing.from_string &") ""))
-               #t))
-           (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)))
-       #:ocaml ,ocaml-4.07
-       #:findlib ,ocaml4.07-findlib))
-      (inputs
-       `(("zlib" ,zlib "static")
-         ("gsl" ,gsl-static)
-         ("ocaml-ounit" ,(package-with-ocaml4.07 ocaml-ounit))
-         ("ocaml-batteries" ,(package-with-ocaml4.07 ocaml-batteries))
-         ("ocaml-camlzip" ,(package-with-ocaml4.07 camlzip))
-         ("ocaml-csv" ,(package-with-ocaml4.07 ocaml-csv))
-         ("ocaml-sqlite3" ,(package-with-ocaml4.07 ocaml-sqlite3))
-         ("ocaml-xmlm" ,(package-with-ocaml4.07 ocaml-xmlm))
-         ("ocaml-mcl" ,(package-with-ocaml4.07 ocaml-mcl))
-         ("ocaml-gsl" ,ocaml4.07-gsl-1)
-         ("sqlite:static" ,sqlite "static")))
-      (native-inputs
-       `(("cddlib-src" ,(package-source cddlib))
-         ("ocamlbuild" ,(package-with-ocaml4.07 ocamlbuild))
-         ("pkg-config" ,pkg-config)))
-      (propagated-inputs
-       (list 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 "https://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 checkm
   (package
     (name "checkm")
@@ -13778,9 +13244,6 @@ on marker set compatibility, similarity in genomic characteristics, and
 proximity within a reference genome.")
     (license license:gpl3+)))
 
-(define-public python2-checkm-genome
-  (deprecated-package "python2-checkm-genome" checkm))
-
 (define-public umi-tools
   (package
     (name "umi-tools")
@@ -14040,49 +13503,51 @@ mutations from scRNA-Seq data.")
    (name "tabixpp")
    (version "1.1.0")
    (source (origin
-     (method git-fetch)
-     (uri (git-reference
-           (url "https://github.com/ekg/tabixpp")
-           (commit (string-append "v" version))))
-     (file-name (git-file-name name version))
-     (sha256
-      (base32 "1k2a3vbq96ic4lw72iwp5s3mwwc4xhdffjj584yn6l9637q9j1yd"))
-     (modules '((guix build utils)))
-     (snippet
-      `(begin
-         (delete-file-recursively "htslib") #t))))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/ekg/tabixpp")
+                   (commit (string-append "v" version))))
+             (file-name (git-file-name name version))
+             (sha256
+              (base32 "1k2a3vbq96ic4lw72iwp5s3mwwc4xhdffjj584yn6l9637q9j1yd"))
+             (modules '((guix build utils)))
+             (snippet
+              #~(begin
+                  (delete-file-recursively "htslib")))))
    (build-system gnu-build-system)
    (inputs
-    (list htslib zlib))
+    (list bzip2 htslib xz zlib))
    (arguments
-    `(#:tests? #f ; There are no tests to run.
-      #:phases
-      (modify-phases %standard-phases
-        (delete 'configure) ; There is no configure phase.
-        ;; The build phase needs overriding the location of htslib.
-        (replace 'build
-          (lambda* (#:key inputs #:allow-other-keys)
-            (let ((htslib-ref (assoc-ref inputs "htslib")))
-              (invoke "make"
-                      (string-append "HTS_LIB=" htslib-ref "/lib/libhts.a")
-                      (string-append "INCLUDES= -I" htslib-ref "/include/htslib")
-                      "HTS_HEADERS="    ; No need to check for headers here.
-                      (string-append "LIBPATH=-L. -L" htslib-ref "/include"))
-              (invoke "g++" "-shared" "-o" "libtabixpp.so" "tabix.o" "-lhts")
-              (invoke "ar" "rcs" "libtabixpp.a" "tabix.o"))))
-        (replace 'install
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let* ((out (assoc-ref outputs "out"))
-                   (lib (string-append out "/lib"))
-                   (bin (string-append out "/bin")))
-              (install-file "tabix++" bin)
-              (install-file "libtabixpp.so" lib)
-              (install-file "libtabixpp.a" lib)
-              (install-file "tabix.hpp" (string-append out "/include"))
-              (mkdir-p (string-append lib "/pkgconfig"))
-              (with-output-to-file (string-append lib "/pkgconfig/tabixpp.pc")
-                (lambda _
-                  (format #t "prefix=~a~@
+    (list #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
+                               (string-append "CXX=" #$(cxx-for-target))
+                               "HTS_HEADERS="
+                               (string-append "HTS_LIB="
+                                              (search-input-file %build-inputs
+                                                                 "/lib/libhts.a"))
+                               "INCLUDES=")
+          #:tests? #f ; There are no tests to run.
+          #:phases
+          #~(modify-phases %standard-phases
+              (delete 'configure) ; There is no configure phase.
+              ;; Build shared and static libraries.
+              (add-after 'build 'build-libraries
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (invoke #$(cxx-for-target)
+                          "-shared" "-o" "libtabixpp.so" "tabix.o" "-lhts")
+                  (invoke #$(ar-for-target) "rcs" "libtabixpp.a" "tabix.o")))
+              (replace 'install
+                (lambda* (#:key outputs #:allow-other-keys)
+                  (let* ((out (assoc-ref outputs "out"))
+                         (lib (string-append out "/lib"))
+                         (bin (string-append out "/bin")))
+                    (install-file "tabix++" bin)
+                    (install-file "libtabixpp.so" lib)
+                    (install-file "libtabixpp.a" lib)
+                    (install-file "tabix.hpp" (string-append out "/include"))
+                    (mkdir-p (string-append lib "/pkgconfig"))
+                    (with-output-to-file (string-append lib "/pkgconfig/tabixpp.pc")
+                      (lambda _
+                        (format #t "prefix=~a~@
                           exec_prefix=${prefix}~@
                           libdir=${exec_prefix}/lib~@
                           includedir=${prefix}/include~@
@@ -14093,8 +13558,7 @@ mutations from scRNA-Seq data.")
                           Description: C++ wrapper around tabix project~@
                           Libs: -L${libdir} -ltabixpp~@
                           Cflags: -I${includedir}~%"
-                          out ,version)))
-              #t))))))
+                                out #$version)))))))))
    (home-page "https://github.com/ekg/tabixpp")
    (synopsis "C++ wrapper around tabix project")
    (description "This is a C++ wrapper around the Tabix project which abstracts
@@ -14116,57 +13580,106 @@ some of the details of opening and jumping in tabix-indexed files.")
          (base32 "0i9d8zrxpiracw3mxzd9siybpy62p06rqz9mc2w93arajgbk45bs"))))
       (build-system gnu-build-system)
       (arguments
-       `(#:tests? #f ; There are no tests to run.
-         #:make-flags '("libsw.a" "all")
+       (list
+         #:tests? #f ; There are no tests to run.
+         #:make-flags
+         #~(list (string-append "CXX=" #$(cxx-for-target))
+                 "libsw.a" "all")
          #:phases
-         (modify-phases %standard-phases
-           (delete 'configure) ; There is no configure phase.
-           (add-after 'unpack 'patch-source
-             (lambda _
-               (substitute* "Makefile"
-                 (("-c ") "-c -fPIC "))
-               #t))
-           (add-after 'build 'build-dynamic
-             (lambda _
-               (invoke "g++"
-                       "-shared" "-o" "libsmithwaterman.so"
-                       "smithwaterman.o" "SmithWatermanGotoh.o"
-                       "disorder.o" "BandedSmithWaterman.o"
-                       "LeftAlign.o" "Repeats.o" "IndelAllele.o")))
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (bin (string-append out "/bin"))
-                      (lib (string-append out "/lib")))
-                 (install-file "smithwaterman" bin)
-                 (for-each
-                   (lambda (file)
-                     (install-file file (string-append out "/include/smithwaterman")))
-                   (find-files "." "\\.h$"))
-                 (install-file "libsmithwaterman.so" lib)
-                 (install-file "libsw.a" lib)
-                 (mkdir-p (string-append lib "/pkgconfig"))
-                 (with-output-to-file (string-append lib "/pkgconfig/smithwaterman.pc")
-                   (lambda _
-                     (format #t "prefix=~a~@
-                             exec_prefix=${prefix}~@
-                             libdir=${exec_prefix}/lib~@
-                             includedir=${prefix}/include/smithwaterman~@
-                             ~@
-                             ~@
-                             Name: smithwaterman~@
-                             Version: ~a~@
-                             Description: smith-waterman-gotoh alignment algorithm~@
-                             Libs: -L${libdir} -lsmithwaterman~@
-                             Cflags: -I${includedir}~%"
-                             out ,version))))
-               #t)))))
+         #~(modify-phases %standard-phases
+             (delete 'configure) ; There is no configure phase.
+             (add-after 'unpack 'patch-source
+               (lambda _
+                 (substitute* "Makefile"
+                   (("-c ") "-c -fPIC "))
+                 #$@(if (%current-target-system)
+                     #~((substitute* "Makefile"
+                          (("\tld")
+                           (string-append "\t" #$(%current-target-system) "-ld"))
+                          (("\tar")
+                           (string-append "\t" #$(%current-target-system) "-ar"))))
+                     '())))
+             (add-after 'build 'build-dynamic
+               (lambda _
+                 (invoke #$(cxx-for-target)
+                         "-shared" "-o" "libsmithwaterman.so"
+                         "smithwaterman.o" "SmithWatermanGotoh.o"
+                         "disorder.o" "BandedSmithWaterman.o"
+                         "LeftAlign.o" "Repeats.o" "IndelAllele.o")))
+             (replace 'install
+               (lambda* (#:key outputs #:allow-other-keys)
+                 (let* ((out (assoc-ref outputs "out"))
+                        (bin (string-append out "/bin"))
+                        (lib (string-append out "/lib")))
+                   (install-file "smithwaterman" bin)
+                   (for-each
+                     (lambda (file)
+                       (install-file file (string-append out "/include/smithwaterman")))
+                     (find-files "." "\\.h$"))
+                   (install-file "libsmithwaterman.so" lib)
+                   (install-file "libsw.a" lib)
+                   (mkdir-p (string-append lib "/pkgconfig"))
+                   (with-output-to-file (string-append lib "/pkgconfig/smithwaterman.pc")
+                     (lambda _
+                       (format #t "prefix=~a~@
+                               exec_prefix=${prefix}~@
+                               libdir=${exec_prefix}/lib~@
+                               includedir=${prefix}/include/smithwaterman~@
+                               ~@
+                               ~@
+                               Name: smithwaterman~@
+                               Version: ~a~@
+                               Description: smith-waterman-gotoh alignment algorithm~@
+                               Libs: -L${libdir} -lsmithwaterman~@
+                               Cflags: -I${includedir}~%"
+                               out #$version)))))))))
       (home-page "https://github.com/ekg/smithwaterman")
       (synopsis "Implementation of the Smith-Waterman algorithm")
       (description "Implementation of the Smith-Waterman algorithm.")
       ;; The licensing terms are unclear: https://github.com/ekg/smithwaterman/issues/9.
       (license (list license:gpl2 license:expat)))))
 
+(define-public sylamer
+  (package
+    (name "sylamer")
+    (version "18-131")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/micans/sylamer/")
+                    (commit "aa75c3584797c0c15f860addb645f7bc1dd7627d")))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1ddiwlrdghhb4574rvfw0brjp9gs5l6nfsy82h0m4mvz1dr3gkj5"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:tests? #f                       ; no test target
+      #:make-flags
+      #~(list (string-append "GSLPREFIX=" #$(this-package-input "gsl")))
+      #:phases
+      '(modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "Makefile"
+               (("cp sylamer \\$\\(HOME\\)/local/bin")
+                (string-append "install -D -t " (assoc-ref outputs "out")
+                               "/bin sylamer")))
+             (install-file "Makefile" "src")
+             (chdir "src"))))))
+    (inputs (list gsl zlib))
+    (home-page "https://www.ebi.ac.uk/research/enright/software/sylamer")
+    (synopsis "Asses microRNA binding and siRNA off-target effects")
+    (description "Sylamer is a system for finding significantly over or
+under-represented words in sequences according to a sorted gene list.
+Typically it is used to find significant enrichment or depletion of microRNA
+or siRNA seed sequences from microarray expression data.  Sylamer is extremely
+fast and can be applied to genome-wide datasets with ease.  Results are
+plotted in terms of a significance landscape plot.  These plots show
+significance profiles for each word studied across the sorted genelist.")
+    (license license:gpl3+)))
+
 (define-public multichoose
   (package
     (name "multichoose")
@@ -14250,36 +13763,37 @@ neural networks.")
        (base32 "0rp1blskhzxf7vbh253ibpxbgl9wwgyzf1wbkxndi08d3j4vcss9"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ; Unclear how to run tests: https://github.com/ekg/fastahack/issues/15
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure) ; There is no configure phase.
-           (add-after 'unpack 'patch-source
-             (lambda _
-               (substitute* "Makefile"
-                 (("-c ") "-c -fPIC "))
-               #t))
-         (add-after 'build 'build-dynamic
-           (lambda _
-             (invoke "g++"
-                     "-shared" "-o" "libfastahack.so"
-                     "Fasta.o" "FastaHack.o" "split.o" "disorder.o")))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (lib (string-append out "/lib"))
-                    (bin (string-append out "/bin")))
-               (mkdir-p (string-append out "/include/fastahack"))
-               (for-each
-                 (lambda (file)
-                   (install-file file (string-append out "/include/fastahack")))
-                 (find-files "." "\\.h$"))
-               (install-file "fastahack" bin)
-               (install-file "libfastahack.so" lib)
-               (mkdir-p (string-append lib "/pkgconfig"))
-               (with-output-to-file (string-append lib "/pkgconfig/fastahack.pc")
+     (list #:make-flags #~(list (string-append "CXX=" #$(cxx-for-target)))
+           ;; Unclear how to run tests: https://github.com/ekg/fastahack/issues/15
+           #:tests? #f
+           #:phases
+           #~(modify-phases %standard-phases
+               (delete 'configure) ; There is no configure phase.
+               (add-after 'unpack 'patch-source
+                 (lambda _
+                   (substitute* "Makefile"
+                     (("-c ") "-c -fPIC "))))
+               (add-after 'build 'build-dynamic
                  (lambda _
-                   (format #t "prefix=~a~@
+                   (invoke #$(cxx-for-target)
+                           "-shared" "-o" "libfastahack.so"
+                           "Fasta.o" "FastaHack.o" "split.o" "disorder.o")))
+               (replace 'install
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (let* ((out (assoc-ref outputs "out"))
+                          (lib (string-append out "/lib"))
+                          (bin (string-append out "/bin")))
+                     (mkdir-p (string-append out "/include/fastahack"))
+                     (for-each
+                      (lambda (file)
+                        (install-file file (string-append out "/include/fastahack")))
+                      (find-files "." "\\.h$"))
+                     (install-file "fastahack" bin)
+                     (install-file "libfastahack.so" lib)
+                     (mkdir-p (string-append lib "/pkgconfig"))
+                     (with-output-to-file (string-append lib "/pkgconfig/fastahack.pc")
+                       (lambda _
+                         (format #t "prefix=~a~@
                            exec_prefix=${prefix}~@
                            libdir=${exec_prefix}/lib~@
                            includedir=${prefix}/include/fastahack~@
@@ -14290,8 +13804,7 @@ neural networks.")
                            Description: Indexing and sequence extraction from FASTA files~@
                            Libs: -L${libdir} -lfastahack~@
                            Cflags: -I${includedir}~%"
-                           out ,version))))
-             #t)))))
+                                 out #$version)))))))))
     (home-page "https://github.com/ekg/fastahack")
     (synopsis "Indexing and sequence extraction from FASTA files")
     (description "Fastahack is a small application for indexing and
@@ -14304,7 +13817,7 @@ library automatically handles index file generation and use.")
 (define-public vcflib
   (package
     (name "vcflib")
-    (version "1.0.2")
+    (version "1.0.3")
     (source
      (origin
        (method git-fetch)
@@ -14313,31 +13826,30 @@ library automatically handles index file generation and use.")
               (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1k1z3876kbzifj1sqfzsf3lgb4rw779hvkg6ryxbyq5bc2paj9kh"))
+        (base32 "1r7pnajg997zdjkf1b38m14v0zqnfx52w7nbldwh1xpbpahb1hjh"))
        (modules '((guix build utils)))
        (snippet
-        '(begin
-           (substitute* "CMakeLists.txt"
-             ((".*fastahack.*") "")
-             ((".*smithwaterman.*") "")
-             (("(pkg_check_modules\\(TABIXPP)" text)
-              (string-append
+        #~(begin
+            (substitute* "CMakeLists.txt"
+              ((".*fastahack.*") "")
+              ((".*smithwaterman.*") "")
+              (("(pkg_check_modules\\(TABIXPP)" text)
+               (string-append
                 "pkg_check_modules(FASTAHACK REQUIRED fastahack)\n"
                 "pkg_check_modules(SMITHWATERMAN REQUIRED smithwaterman)\n"
                 text))
-             (("\\$\\{TABIXPP_LIBRARIES\\}" text)
-              (string-append "${FASTAHACK_LIBRARIES} "
-                             "${SMITHWATERMAN_LIBRARIES} "
-                             text)))
-           (substitute* (find-files "." "\\.(h|c)(pp)?$")
-             (("\"SmithWatermanGotoh.h\"") "<smithwaterman/SmithWatermanGotoh.h>")
-             (("\"convert.h\"") "<smithwaterman/convert.h>")
-             (("\"disorder.h\"") "<smithwaterman/disorder.h>")
-             (("Fasta.h") "fastahack/Fasta.h"))
-           (for-each delete-file-recursively
-                     '("fastahack" "filevercmp" "fsom" "googletest" "intervaltree"
-                       "libVCFH" "multichoose" "smithwaterman"))
-           #t))))
+              (("\\$\\{TABIXPP_LIBRARIES\\}" text)
+               (string-append "${FASTAHACK_LIBRARIES} "
+                              "${SMITHWATERMAN_LIBRARIES} "
+                              text)))
+            (substitute* (find-files "." "\\.(h|c)(pp)?$")
+              (("\"SmithWatermanGotoh.h\"") "<smithwaterman/SmithWatermanGotoh.h>")
+              (("\"convert.h\"") "<smithwaterman/convert.h>")
+              (("\"disorder.h\"") "<smithwaterman/disorder.h>")
+              (("Fasta.h") "fastahack/Fasta.h"))
+            (for-each delete-file-recursively
+                      '("fastahack" "filevercmp" "fsom" "googletest" "intervaltree"
+                        "libVCFH" "multichoose" "smithwaterman"))))))
     (build-system cmake-build-system)
     (inputs
      (list bzip2
@@ -14358,41 +13870,47 @@ library automatically handles index file generation and use.")
        ("intervaltree-src" ,(package-source intervaltree))
        ("multichoose-src" ,(package-source multichoose))))
     (arguments
-     `(#:tests? #f ; no tests
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'build-shared-library
-           (lambda _
-             (substitute* "CMakeLists.txt"
-               (("vcflib STATIC") "vcflib SHARED"))
-             (substitute* "test/Makefile"
-               (("libvcflib.a") "libvcflib.so"))
-             #t))
-         (add-after 'unpack 'unpack-submodule-sources
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((unpack (lambda (source target)
-                             (mkdir target)
-                             (with-directory-excursion target
-                               (if (file-is-directory? (assoc-ref inputs source))
-                                   (copy-recursively (assoc-ref inputs source) ".")
-                                   (invoke "tar" "xvf"
-                                           (assoc-ref inputs source)
-                                           "--strip-components=1"))))))
-               (and
-                (unpack "filevercmp-src" "filevercmp")
-                (unpack "fsom-src" "fsom")
-                (unpack "intervaltree-src" "intervaltree")
-                (unpack "multichoose-src" "multichoose"))
-               #t)))
-         ;; This pkg-config file is provided by other distributions.
-         (add-after 'install 'install-pkg-config-file
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (pkgconfig (string-append out "/lib/pkgconfig")))
-               (mkdir-p pkgconfig)
-               (with-output-to-file (string-append pkgconfig "/vcflib.pc")
+     (list #:configure-flags
+           #~(list (string-append
+                    "-DPKG_CONFIG_EXECUTABLE="
+                    (search-input-file
+                     %build-inputs (string-append
+                                    "/bin/" #$(pkg-config-for-target)))))
+           #:tests? #f ; no tests
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'build-shared-library
                  (lambda _
-                   (format #t "prefix=~a~@
+                   (substitute* "CMakeLists.txt"
+                     (("vcflib STATIC") "vcflib SHARED"))
+                   (substitute* "test/Makefile"
+                     (("libvcflib.a") "libvcflib.so"))))
+               (add-after 'unpack 'unpack-submodule-sources
+                 (lambda* (#:key inputs native-inputs #:allow-other-keys)
+                   (let ((unpack (lambda (source target)
+                                   (mkdir target)
+                                   (with-directory-excursion target
+                                     (let ((source (or (assoc-ref inputs source)
+                                                       (assoc-ref native-inputs source))))
+                                       (if (file-is-directory? source)
+                                           (copy-recursively source ".")
+                                           (invoke "tar" "xvf"
+                                                   source
+                                                   "--strip-components=1")))))))
+                     (and
+                      (unpack "filevercmp-src" "filevercmp")
+                      (unpack "fsom-src" "fsom")
+                      (unpack "intervaltree-src" "intervaltree")
+                      (unpack "multichoose-src" "multichoose")))))
+               ;; This pkg-config file is provided by other distributions.
+               (add-after 'install 'install-pkg-config-file
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (let* ((out (assoc-ref outputs "out"))
+                          (pkgconfig (string-append out "/lib/pkgconfig")))
+                     (mkdir-p pkgconfig)
+                     (with-output-to-file (string-append pkgconfig "/vcflib.pc")
+                       (lambda _
+                         (format #t "prefix=~a~@
                            exec_prefix=${prefix}~@
                            libdir=${exec_prefix}/lib~@
                            includedir=${prefix}/include~@
@@ -14403,8 +13921,7 @@ library automatically handles index file generation and use.")
                            Description: C++ library for parsing and manipulating VCF files~@
                            Libs: -L${libdir} -lvcflib~@
                            Cflags: -I${includedir}~%"
-                           out ,version)))
-                 #t))))))
+                                 out #$version)))))))))
     (home-page "https://github.com/vcflib/vcflib/")
     (synopsis "Library for parsing and manipulating VCF files")
     (description "Vcflib provides methods to manipulate and interpret
@@ -14441,6 +13958,7 @@ manipulations on VCF files.")
        ("parallel" ,parallel)
        ("perl" ,perl)
        ("pkg-config" ,pkg-config)
+       ("python" ,python)
        ("samtools" ,samtools)
        ("simde" ,simde)
        ;; This submodule is needed to run the tests.
@@ -15275,11 +14793,11 @@ translates between different variant encodings.")
       (license license:asl2.0))))
 
 (define-public r-signac
-  (let ((commit "e0512d348adeda4a3f23a2e8f56d1fe09840e03c")
-        (revision "1"))
+  (let ((commit "458e647b503c3472b0b98c0aeca934f452e039ee")
+        (revision "2"))
     (package
       (name "r-signac")
-      (version (git-version "1.1.1" revision commit))
+      (version (git-version "1.6.0" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -15288,16 +14806,12 @@ translates between different variant encodings.")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32
-           "1yihhrv7zs87ax61la1nb4y12lg3knraw4b20k5digbcwm8488lb"))))
+          (base32 "1hgwpgighkvfkai80n4d2252s4sdpa4faag4ncdiylicl5wa7lbj"))))
       (properties `((upstream-name . "Signac")))
       (build-system r-build-system)
       (inputs (list zlib))
       (propagated-inputs
-       (list r-annotationfilter
-             r-biocgenerics
-             r-biostrings
-             r-biovizbase
+       (list r-biocgenerics
              r-data-table
              r-dplyr
              r-fastmatch
@@ -15305,7 +14819,6 @@ translates between different variant encodings.")
              r-future-apply
              r-genomeinfodb
              r-genomicranges
-             r-ggbio
              r-ggforce
              r-ggplot2
              r-ggrepel
@@ -15316,6 +14829,7 @@ translates between different variant encodings.")
              r-matrix
              r-patchwork
              r-pbapply
+             r-qlcmatrix
              r-rcpp
              r-rcpproll
              r-rsamtools
@@ -15324,7 +14838,8 @@ translates between different variant encodings.")
              r-seurat
              r-seuratobject
              r-stringi
-             r-tidyr))
+             r-tidyr
+             r-tidyselect))
       (home-page "https://github.com/timoast/signac/")
       (synopsis "Analysis of single-cell chromatin data")
       (description
@@ -15722,7 +15237,11 @@ populations.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1k8hllr5if6k2mm2zj391fv40sfc008cjm04l9vgfsdppb80i112"))))
+                "1k8hllr5if6k2mm2zj391fv40sfc008cjm04l9vgfsdppb80i112"))
+              (snippet
+               #~(begin
+                   (use-modules ((guix build utils)))
+                   (delete-file "src/scregseg/_utils.c")))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #false                  ; tests require network access
@@ -16069,3 +15588,155 @@ workflows from concise descriptions in ccwl.  It is implemented as an
 @acronym{EDSL, Embedded Domain Specific Language} in the Scheme programming
 language.")
     (license license:gpl3+)))
+
+(define-public wfmash
+  (package
+    (name "wfmash")
+    (version "0.8.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/ekg/wfmash/releases/download/v"
+                           version "/wfmash-v" version ".tar.gz"))
+       (sha256
+        (base32
+         "031cm1arpfckvihb28vlk69mirpnmlag81zcscfba1bac58wvr7c"))
+       (snippet
+        #~(begin
+            (use-modules (guix build utils))
+            ;; Unbundle atomic-queue.
+            (delete-file-recursively "src/common/atomic_queue")
+            (substitute* "src/align/include/computeAlignments.hpp"
+              (("\"common/atomic_queue/atomic_queue.h\"")
+               "<atomic_queue/atomic_queue.h>"))
+            ;; Remove compiler optimizations.
+            (substitute* (find-files "." "CMakeLists\\.txt")
+              (("-mcx16 ") "")
+              (("-march=native ") ""))
+            ;; Allow building on architectures other than x86_64.
+            (substitute* "src/common/dset64.hpp"
+              (("!__x86_64__") "0"))))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+       #:phases
+       #~(modify-phases %standard-phases
+           (replace 'check
+             ;; Adapted from .github/workflows/test_on_push.yml
+             (lambda* (#:key tests? inputs #:allow-other-keys)
+               (when tests?
+                 (let ((samtools (search-input-file inputs "/bin/samtools")))
+                   ;; This is the easiest way to access the data
+                   ;; needed for the test suite.
+                   (symlink (string-append "../wfmash-v" #$version "/data")
+                            "data")
+                   (and
+                     ;; This test takes 60 minutes on riscv64-linux.
+                     #$@(if (not (target-riscv64?))
+                          #~((begin
+                               ;; Test with a subset of the LPA dataset (PAF output)
+                               (setenv "ASAN_OPTIONS" "detect_leaks=1:symbolize=1")
+                               (setenv "LSAN_OPTIONS" "verbosity=0:log_threads=1")
+                               (with-output-to-file "LPA.subset.paf"
+                                 (lambda _
+                                   (invoke "bin/wfmash"
+                                           "data/LPA.subset.fa.gz"
+                                           "data/LPA.subset.fa.gz"
+                                           "-X" "-n" "10" "-T" "wflign_info."
+                                           "-u" "./")))
+                               (invoke "head" "LPA.subset.paf")))
+                          #~())
+                     ;; This test takes about 5 hours on riscv64-linux.
+                     #$@(if (not (target-riscv64?))
+                          #~((begin
+                               ;; Test with a subset of the LPA dataset (SAM output)
+                               (setenv "ASAN_OPTIONS" "detect_leaks=1:symbolize=1")
+                               (setenv "LSAN_OPTIONS" "verbosity=0:log_threads=1")
+                               (with-output-to-file "LPA.subset.sam"
+                                 (lambda _
+                                   (invoke "bin/wfmash"
+                                           "data/LPA.subset.fa.gz"
+                                           "data/LPA.subset.fa.gz"
+                                           "-X" "-N" "-a" "-T" "wflign_info.")))
+                               (with-output-to-file "LPA.subset.sam-view"
+                                 (lambda _
+                                   (invoke samtools "view" "LPA.subset.sam" "-bS")))
+                               (with-output-to-file "LPA.subset.bam"
+                                 (lambda _
+                                   (invoke samtools "sort" "LPA.subset.sam-view")))
+                               (invoke samtools "index" "LPA.subset.bam")
+                               ;; samtools view LPA.subset.bam | head | cut -f 1-9
+                               ;(invoke samtools "view" "LPA.subset.bam")
+                               ;; There should be an easier way to do this with pipes.
+                               (with-output-to-file "LPA.subset.bam-incr1"
+                                 (lambda _
+                                   (invoke samtools "view" "LPA.subset.bam")))
+                               (with-output-to-file "LPA.subset.bam-incr2"
+                                 (lambda _
+                                   (invoke "head" "LPA.subset.bam-incr1")))
+                               (invoke "cut" "-f" "1-9" "LPA.subset.bam-incr2")))
+                          #~())
+                     ;; This test takes 60 minutes on riscv64-linux.
+                     #$@(if (not (target-riscv64?))
+                          #~((begin
+                               ;; Test with a subset of the LPA dataset,
+                               ;; setting a lower identity threshold (PAF output)
+                               (setenv "ASAN_OPTIONS" "detect_leaks=1:symbolize=1")
+                               (setenv "LSAN_OPTIONS" "verbosity=0:log_threads=1")
+                               (with-output-to-file "LPA.subset.p90.paf"
+                                 (lambda _
+                                   (invoke "bin/wfmash"
+                                           "data/LPA.subset.fa.gz"
+                                           "data/LPA.subset.fa.gz"
+                                           "-X" "-p" "90" "-n" "10"
+                                           "-T" "wflign_info.")))
+                               (invoke "head" "LPA.subset.p90.paf")))
+                          #~())
+                     (begin
+                       ;; Test aligning short reads (500 bps) to a reference (SAM output)
+                       (setenv "ASAN_OPTIONS" "detect_leaks=1:symbolize=1")
+                       (setenv "LSAN_OPTIONS" "verbosity=0:log_threads=1")
+                       (with-output-to-file "reads.500bps.sam"
+                         (lambda _
+                           (invoke "bin/wfmash"
+                                   "data/reference.fa.gz"
+                                   "data/reads.500bps.fa.gz"
+                                   "-s" "0.5k" "-N" "-a")))
+                       (with-output-to-file "reads.500bps.sam-view"
+                         (lambda _
+                           (invoke samtools "view" "reads.500bps.sam" "-bS")))
+                       (with-output-to-file "reads.500bps.bam"
+                         (lambda _
+                           (invoke samtools "sort" "reads.500bps.sam-view")))
+                       (invoke samtools "index" "reads.500bps.bam")
+                       (with-output-to-file "reads.500bps.bam-view"
+                         (lambda _
+                           (invoke samtools "view" "reads.500bps.bam")))
+                       (invoke "head" "reads.500bps.bam-view"))
+                     (begin
+                       ;; Test with few very short reads (255bps) (PAF output)
+                       (setenv "ASAN_OPTIONS" "detect_leaks=1:symbolize=1")
+                       (setenv "LSAN_OPTIONS" "verbosity=0:log_threads=1")
+                       (with-output-to-file "reads.255bps.paf"
+                         (lambda _
+                           (invoke "bin/wfmash"
+                                   "data/reads.255bps.fa.gz"
+                                   "data/reads.255bps.fa.gz"
+                                   "-X" "-w" "16")))
+                       (invoke "head" "reads.255bps.paf"))))))))))
+    (inputs
+     (list atomic-queue
+           gsl
+           htslib
+           jemalloc
+           zlib))
+    (native-inputs
+     (list samtools))
+    (synopsis "Base-accurate DNA sequence aligner")
+    (description "@code{wfmash} is a DNA sequence read mapper based on mash
+distances and the wavefront alignment algorithm.  It is a fork of MashMap that
+implements base-level alignment via the wflign tiled wavefront global
+alignment algorithm.  It completes MashMap with a high-performance alignment
+module capable of computing base-level alignments for very large sequences.")
+    (home-page "https://github.com/ekg/wfmash")
+    (license license:expat)))