aboutsummaryrefslogtreecommitdiff
path: root/gn/packages/bioinformatics.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gn/packages/bioinformatics.scm')
-rw-r--r--gn/packages/bioinformatics.scm370
1 files changed, 176 insertions, 194 deletions
diff --git a/gn/packages/bioinformatics.scm b/gn/packages/bioinformatics.scm
index 397b38f..3f89abe 100644
--- a/gn/packages/bioinformatics.scm
+++ b/gn/packages/bioinformatics.scm
@@ -47,6 +47,7 @@
#:use-module (gnu packages databases)
#:use-module (gnu packages datastructures)
#:use-module (gnu packages digest)
+ #:use-module (gnu packages documentation)
#:use-module (gnu packages elf)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages gcc)
@@ -1898,14 +1899,13 @@ The path-guided stochastic gradient descent based 1D sort implemented in
(define-public graphaligner
(package
(name "graphaligner")
- (version "1.0.19")
+ (version "1.0.20")
(source (origin
(method url-fetch)
- (uri (string-append "https://github.com/maickrau/GraphAligner/files/"
- "14037134/GraphAligner.tar.gz"))
+ (uri "https://github.com/user-attachments/files/17976913/GraphAligner.tar.gz")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1z1rxvl2pmiqbh670phkx7vma36w90ylp27wyadlbzf32pa2cpdn"))))
+ (base32 "1gs6jds4lazljb1s7s8f1vp0l4j8jvqy6qhb9sck7x66z8157ndm"))))
(build-system gnu-build-system)
(arguments
(list
@@ -1917,16 +1917,17 @@ The path-guided stochastic gradient descent based 1D sort implemented in
(delete 'configure) ; no configure phase
(add-after 'unpack 'patch-source
(lambda* (#:key inputs #:allow-other-keys)
- (let ((concurrentqueue (assoc-ref inputs "concurrentqueue")))
- (delete-file-recursively "concurrentqueue")
- (substitute* "makefile"
- (("-Iconcurrentqueue")
- (string-append "-I" concurrentqueue "/include/concurrentqueue"))
- (("^JEMALLOCFLAGS.*")
- "JEMALLOCFLAGS= `pkg-config --libs jemalloc`\n")
- ;; No need to build statically.
- (("-Wl,-Bstatic") "")
- (("-static-libstdc\\+\\+") "")))))
+ (delete-file-recursively "concurrentqueue")
+ (substitute* "makefile"
+ (("-Iconcurrentqueue")
+ (string-append "-I" (search-input-directory inputs "/include/concurrentqueue")))
+ (("^JEMALLOCFLAGS.*")
+ "JEMALLOCFLAGS= `pkg-config --libs jemalloc`\n")
+ (("`pkg-config --cflags zlib`/bamtools")
+ (string-append "-I " (search-input-directory inputs "include/bamtools")))
+ ;; No need to build statically.
+ (("-Wl,-Bstatic") "")
+ (("-static-libstdc\\+\\+") ""))))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
@@ -1943,7 +1944,8 @@ The path-guided stochastic gradient descent based 1D sort implemented in
pkg-config
sparsehash))
(inputs
- (list boost
+ (list bamtools
+ boost
concurrentqueue
jemalloc
libdivsufsort
@@ -2335,14 +2337,14 @@ in-memory footprint at the cost of packing and unpacking.")
(define-public vg
(package
(name "vg")
- (version "1.50.0")
+ (version "1.61.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/vgteam/vg/releases/download/v"
version "/vg-v" version ".tar.gz"))
(sha256
- (base32 "1n06fh6qvffhbxy7m096r8cy16wi0nm6gfgi3rsjy9zrb7g1jzhs"))
+ (base32 "1yb8ffqq65ma5di42qlj483x42viq5j4xyyg3vpww60gm15n1yxx"))
(snippet
#~(begin
(use-modules (guix build utils))
@@ -2353,194 +2355,174 @@ in-memory footprint at the cost of packing and unpacking.")
(("-mcx16") ""))))))
(build-system gnu-build-system)
(arguments
- `(#:phases
- (modify-phases %standard-phases
- (delete 'configure) ; no configure script
- (add-after 'unpack 'patch-source
- (lambda* (#:key inputs #:allow-other-keys)
- ;; Most of these are so that we can skip bootstrapping some of the sources.
- (substitute* "Makefile"
- ;; PKG_CONFIG_DEPS needs to be substituted to actually link to everything.
- (("cairo libzstd")
- "cairo htslib libzstd libdw libelf protobuf raptor2 sdsl-lite tabixpp vcflib fastahack libdeflate")
-
- ;; Skip the part where we link static libraries special. It doesn't like the changes we make
- (("-Wl,-B.*") "\n")
-
- (("\\$\\(CWD\\)/\\$\\(LIB_DIR\\)/libtabixpp\\.a") "$(LIB_DIR)/libtabixpp.a")
- ((" \\$\\(LIB_DIR\\)/libtabixpp\\.a")
- (string-append " " (search-input-file inputs "/lib/libtabixpp.so")))
- (("\\$\\(LIB_DIR\\)/pkgconfig/tabixpp\\.pc")
- (string-append " " (search-input-file inputs "/lib/pkgconfig/tabixpp.pc")))
-
- (("\\$\\(CWD\\)/\\$\\(LIB_DIR\\)/libhts\\.a") "$(LIB_DIR)/libhts.a")
- ((" \\$\\(LIB_DIR\\)/libhts\\.a")
- (string-append " " (search-input-file inputs "/lib/libhts.so")))
- (("\\$\\(LIB_DIR\\)/pkgconfig/htslib\\.pc")
- (string-append " " (search-input-file inputs "/lib/pkgconfig/htslib.pc")))
-
- (("\\$\\(CWD\\)/\\$\\(LIB_DIR\\)/libdeflate\\.a") "$(LIB_DIR)/libdeflate.a")
- ((" \\$\\(LIB_DIR\\)/libdeflate\\.a")
- (string-append " " (search-input-file inputs "/lib/libdeflate.so")))
-
- ((" \\$\\(LIB_DIR\\)/libvcflib.a")
- (string-append " " (search-input-file inputs "/lib/libvcflib.so")))
- ((" \\$\\(BIN_DIR\\)/vcf2tsv")
- (string-append " " (search-input-file inputs "/bin/vcf2tsv")))
-
- ((" \\$\\(FASTAHACK_DIR\\)/fastahack")
- (string-append " " (search-input-file inputs "/bin/fastahack")))
- (("\\+= \\$\\(OBJ_DIR\\)/Fasta\\.o")
- (string-append "+= " (search-input-file inputs "/lib/libfastahack.so")))
-
- ((" \\$\\(LIB_DIR\\)/libsnappy.a")
- (string-append " " (search-input-file inputs "/lib/libsnappy.so")))
-
- ;; Only link against the libraries in the elfutils package.
- (("-ldwfl -ldw -ldwelf -lelf -lebl") "-ldw -lelf")
- ((" \\$\\(LIB_DIR\\)/libelf.a")
- (string-append " " (search-input-file inputs "/lib/libelf.so")))
- ((" \\$\\(LIB_DIR\\)/libdw.a")
- (string-append " " (search-input-file inputs "/lib/libdw.so")))
-
- ;; We need the Make.helper file in SDSL_DIR for gcsa2
- ;((" \\$\\(LIB_DIR\\)/libsdsl.a")
- ; (string-append " " (search-input-file inputs "/lib/libsdsl.so")))
-
- ((" \\$\\(LIB_DIR\\)/%divsufsort.a")
- (string-append " " (dirname
+ (list
+ #:make-flags
+ #~(list (string-append "CC=" #$(cc-for-target))
+ ;; Set rpath so the validate-runpath phase finds
+ ;; libhandlegraph.so.
+ (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure) ; no configure script
+ (add-after 'unpack 'patch-source
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Most of these are so that we can skip bootstrapping some of the sources.
+ (substitute* "Makefile"
+ ;; PKG_CONFIG_DEPS needs to be substituted to actually link to everything.
+ (("cairo libzstd")
+ "cairo htslib libzstd libdw libelf protobuf raptor2 sdsl-lite tabixpp vcflib fastahack libdeflate")
+
+ ;; Skip the part where we link static libraries special. It doesn't like the changes we make
+ (("-Wl,-B.*") "\n")
+
+ (("\\$\\(CWD\\)/\\$\\(LIB_DIR\\)/libtabixpp\\.a") "$(LIB_DIR)/libtabixpp.a")
+ ((" \\$\\(LIB_DIR\\)/libtabixpp\\.a")
+ (string-append " " (search-input-file inputs "/lib/libtabixpp.so")))
+ (("\\$\\(LIB_DIR\\)/pkgconfig/tabixpp\\.pc")
+ (string-append " " (search-input-file inputs "/lib/pkgconfig/tabixpp.pc")))
+
+ (("\\$\\(CWD\\)/\\$\\(LIB_DIR\\)/libhts\\.a") "$(LIB_DIR)/libhts.a")
+ ((" \\$\\(LIB_DIR\\)/libhts\\.a")
+ (string-append " " (search-input-file inputs "/lib/libhts.so")))
+ (("\\$\\(LIB_DIR\\)/pkgconfig/htslib\\.pc")
+ (string-append " " (search-input-file inputs "/lib/pkgconfig/htslib.pc")))
+
+ (("\\$\\(CWD\\)/\\$\\(LIB_DIR\\)/libdeflate\\.a") "$(LIB_DIR)/libdeflate.a")
+ ((" \\$\\(LIB_DIR\\)/libdeflate\\.a")
+ (string-append " " (search-input-file inputs "/lib/libdeflate.so")))
+
+ ((" \\$\\(LIB_DIR\\)/libvcflib.a")
+ (string-append " " (search-input-file inputs "/lib/libvcflib.so")))
+ ((" \\$\\(BIN_DIR\\)/vcf2tsv")
+ (string-append " " (search-input-file inputs "/bin/vcf2tsv")))
+
+ ((" \\$\\(FASTAHACK_DIR\\)/fastahack")
+ (string-append " " (search-input-file inputs "/bin/fastahack")))
+ (("\\+= \\$\\(OBJ_DIR\\)/Fasta\\.o")
+ (string-append "+= " (search-input-file inputs "/lib/libfastahack.so")))
+
+ ((" \\$\\(LIB_DIR\\)/libsnappy.a")
+ (string-append " " (search-input-file inputs "/lib/libsnappy.so")))
+
+ ;; Only link against the libraries in the elfutils package.
+ (("-ldwfl -ldw -ldwelf -lelf -lebl") "-ldw -lelf")
+ ((" \\$\\(LIB_DIR\\)/libelf.a")
+ (string-append " " (search-input-file inputs "/lib/libelf.so")))
+ ((" \\$\\(LIB_DIR\\)/libdw.a")
+ (string-append " " (search-input-file inputs "/lib/libdw.so")))
+
+ ((" \\$\\(LIB_DIR\\)/%divsufsort.a")
+ (string-append " " (dirname
(search-input-file inputs "/lib/libdivsufsort.so"))
- "%divsufsort.so"))
- ((" \\$\\(LIB_DIR\\)/libdivsufsort.a")
- (string-append " " (search-input-file inputs "/lib/libdivsufsort.so")))
- ((" \\$\\(LIB_DIR\\)/%divsufsort64.a")
- (string-append " " (dirname
+ "%divsufsort.so"))
+ ((" \\$\\(LIB_DIR\\)/libdivsufsort.a")
+ (string-append " " (search-input-file inputs "/lib/libdivsufsort.so")))
+ ((" \\$\\(LIB_DIR\\)/%divsufsort64.a")
+ (string-append " " (dirname
(search-input-file inputs "/lib/libdivsufsort64.so"))
- "%divsufsort64.so"))
- ((" \\$\\(LIB_DIR\\)/libdivsufsort64.a")
- (string-append " " (search-input-file inputs "/lib/libdivsufsort64.so")))
-
- ((" \\$\\(LIB_DIR\\)/libjemalloc.a")
- (string-append " " (search-input-file inputs "/lib/libjemalloc.a")))
-
- ((" \\$\\(INC_DIR\\)/sparsehash")
- (string-append " " (search-input-directory inputs "/include/sparsehash")))
-
- ((" \\$\\(INC_DIR\\)/raptor2")
- (string-append " " (search-input-directory inputs "/include/raptor2")))
- ((" \\$\\(LIB_DIR\\)/libraptor2.a")
- (string-append " " (search-input-file inputs "/lib/libraptor2.so")))
- ((" \\$\\(BIN_DIR\\)/rapper")
- (string-append " " (search-input-file inputs "/bin/rapper"))))))
- (add-after 'unpack 'link-with-some-shared-libraries
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* '("deps/mmmultimap/CMakeLists.txt"
- "deps/xg/CMakeLists.txt"
- "deps/xg/deps/mmmulti/CMakeLists.txt")
- (("\".*libsdsl\\.a\"") "\"-lsdsl\"")
- (("\".*libdivsufsort\\.a\"") "\"-ldivsufsort\"")
- (("\".*libdivsufsort64\\.a\"") "\"-ldivsufsort64\"")
- (("\\$\\{sdsl-lite_INCLUDE\\}")
- (search-input-directory inputs "/include/sdsl"))
- (("\\$\\{sdsl-lite-divsufsort_INCLUDE\\}")
- (dirname
+ "%divsufsort64.so"))
+ ((" \\$\\(LIB_DIR\\)/libdivsufsort64.a")
+ (string-append " " (search-input-file inputs "/lib/libdivsufsort64.so")))
+
+ ((" \\$\\(LIB_DIR\\)/libjemalloc.a")
+ (string-append " " (search-input-file inputs "/lib/libjemalloc.a")))
+
+ ((" \\$\\(INC_DIR\\)/sparsehash")
+ (string-append " " (search-input-directory inputs "/include/sparsehash")))
+
+ ((" \\$\\(INC_DIR\\)/raptor2")
+ (string-append " " (search-input-directory inputs "/include/raptor2")))
+ ((" \\$\\(LIB_DIR\\)/libraptor2.a")
+ (string-append " " (search-input-file inputs "/lib/libraptor2.so")))
+ ((" \\$\\(BIN_DIR\\)/rapper")
+ (string-append " " (search-input-file inputs "/bin/rapper"))))
+ ;; Create obj and lib directories. They do not exist in
+ ;; the release tarball.
+ (mkdir "deps/libbdsg/bdsg/obj")
+ (mkdir "deps/libbdsg/lib")
+ ;; Do not remove obj and lib directories in the clean
+ ;; target.
+ (substitute* "deps/libbdsg/Makefile"
+ (("\\[ ! -e \\$\\(OBJ_DIR\\) \\][^\n]*") "")
+ (("\\[ ! -e \\$\\(LIB_DIR\\) \\][^\n]*") ""))))
+ (add-after 'unpack 'link-with-some-shared-libraries
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* '("deps/mmmultimap/CMakeLists.txt"
+ "deps/xg/CMakeLists.txt"
+ "deps/xg/deps/mmmulti/CMakeLists.txt")
+ (("\".*libsdsl\\.a\"") "\"-lsdsl\"")
+ (("\".*libdivsufsort\\.a\"") "\"-ldivsufsort\"")
+ (("\".*libdivsufsort64\\.a\"") "\"-ldivsufsort64\"")
+ (("\\$\\{sdsl-lite_INCLUDE\\}")
+ (search-input-directory inputs "/include/sdsl"))
+ (("\\$\\{sdsl-lite-divsufsort_INCLUDE\\}")
+ (dirname
(search-input-file inputs "/include/divsufsort.h"))))))
- #;
- (add-before 'patch-source 'use-shared-libvg
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (substitute* "Makefile"
- (("libvg\\.a") "libvg.so")
- ;; Have the linker find the shared library.
- (("\\$\\(LIB_DIR\\)/libvg.\\$\\(SHARED_SUFFIX\\) \\$\\(LDFLAGS\\)")
- "-lvg $(LDFLAGS)")
- (("\\$\\(LDFLAGS\\) \\$\\(LIB_DIR\\)/libvg.so")
- "$(LDFLAGS) -lvg"))
- (setenv "LDFLAGS" (string-append "-Wl,-rpath="
- (assoc-ref outputs "out") "/lib"))
-
- ;; We need to tell a number of dependencies to build with -fPIC.
- (substitute* "Makefile"
- (("^CXXFLAGS := -O3")
- (string-append "CFLAGS := -fPIC\n"
- "CXXFLAGS := -O3 -fPIC"))
- (("^export CXXFLAGS")
- (string-append "export CFLAGS\n"
- "$(info CFLAGS are $(CFLAGS))\n"
- "export CXXFLAGS"))
- ((" \\$\\(LIB_DIR\\)/libjemalloc.a")
- (string-append " " (assoc-ref inputs "jemalloc")
- "/lib/libjemalloc_pic.a")))
- ;; We don't want to pull in all the global CXXFLAGS here.
- (substitute* "deps/sublinear-Li-Stephens/makefile"
- (("^CXXFLAGS:=") "CXXFLAGS:= -fPIC "))
- ;; CMAKE_CXX_FLAGS aren't set globally.
- (substitute* "deps/kff-cpp-api/CMakeLists.txt"
- (("CMAKE_CXX_FLAGS \"") "CMAKE_CXX_FLAGS \" -fPIC "))))
- (add-after 'unpack 'dont-build-shared-vgio
- (lambda _
- ;; vg will link with libvgio and fail the 'validate-runpath phase.
- (substitute* "deps/libvgio/CMakeLists.txt"
- (("TARGETS vgio vgio_static") "TARGETS vgio_static"))))
- (add-after 'unpack 'fix-fastahack-dependency
- (lambda _
- (substitute* (append (list "src/aligner.hpp"
- "src/vg.hpp")
- (find-files "deps/vcflib/src" "\\.cpp$"))
- (("Fasta.h") "fastahack/Fasta.h"))
- (substitute* '("deps/vcflib/src/Variant.h"
- "src/constructor.hpp"
- "src/index_registry.cpp")
- (("<Fasta.h>") "\"fastahack/Fasta.h\""))))
- (add-after 'unpack 'adjust-tests
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((bash-tap (assoc-ref inputs "bash-tap")))
- (substitute* (find-files "test/t")
- (("BASH_TAP_ROOT.*")
- (string-append "BASH_TAP_ROOT=" bash-tap "/bin\n"))
- ((".*bash-tap-bootstrap")
- (string-append ". " bash-tap "/bin/bash-tap-bootstrap")))
- (substitute* "test/t/02_vg_construct.t"
- (("../deps/fastahack/fastahack") (which "fastahack"))
- (("../bin/vcf2tsv") (which "vcf2tsv")))
- ;; Lets skip the 9 failing tests for now. They fail with our
- ;; bash-tap and the bundled one.
- (substitute* "test/t/02_vg_construct.t"
- ((".*self-inconsistent.*") "is $(true) \"\" \"\"\n"))
- (substitute* "test/t/07_vg_map.t"
- ;; Change in fasta's output
- (("identity\\) 1 \"") "identity) 1.0 \""))
- (substitute* '("test/t/07_vg_map.t"
- "test/t/33_vg_mpmap.t")
- ((".*node id.*") "is $(true) \"\" \"\"\n"))
- (substitute* "test/t/48_vg_convert.t"
- (("true \"vg.*") "true \"true\"\n"))
- (substitute* "test/t/50_vg_giraffe.t"
- ((".*A long read can.*") "is $(true) \"\" \"\"\n")
- ((".*A long read has.*") "is $(true) \"\" \"\"\n")
- ((".*Long read minimizer.*") "is $(true) \"\" \"\"\n"))
- ;; Don't test the docs, we're not providing npm
- (substitute* "Makefile"
- ((".*test-docs.*") "")))))
- (add-after 'build 'build-manpages
- (lambda* (#:key inputs #:allow-other-keys)
- (when (assoc-ref inputs "asciidoctor")
- (invoke "make" "man"))))
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (install-file "bin/vg" (string-append out "/bin"))
- ;(install-file "lib/libvg.so" (string-append out "/lib"))
- (for-each
+ (add-after 'unpack 'dont-build-shared-vgio
+ (lambda _
+ ;; vg will link with libvgio and fail the 'validate-runpath phase.
+ (substitute* "deps/libvgio/CMakeLists.txt"
+ (("TARGETS vgio vgio_static") "TARGETS vgio_static"))))
+ (add-after 'unpack 'fix-fastahack-dependency
+ (lambda _
+ (substitute* (append (list "src/aligner.hpp"
+ "src/vg.hpp")
+ (find-files "deps/vcflib/src" "\\.cpp$"))
+ (("Fasta.h") "fastahack/Fasta.h"))
+ (substitute* '("deps/vcflib/src/Variant.h"
+ "src/constructor.hpp"
+ "src/index_registry.cpp")
+ (("<Fasta.h>") "\"fastahack/Fasta.h\""))))
+ (add-after 'unpack 'adjust-tests
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((bash-tap (assoc-ref inputs "bash-tap")))
+ (substitute* (find-files "test/t")
+ (("BASH_TAP_ROOT.*")
+ (string-append "BASH_TAP_ROOT=" bash-tap "/bin\n"))
+ ((".*bash-tap-bootstrap")
+ (string-append ". " bash-tap "/bin/bash-tap-bootstrap")))
+ (substitute* "test/t/02_vg_construct.t"
+ (("../deps/fastahack/fastahack") (which "fastahack"))
+ (("../bin/vcf2tsv") (which "vcf2tsv")))
+ ;; Lets skip the 9 failing tests for now. They fail with our
+ ;; bash-tap and the bundled one.
+ (substitute* "test/t/02_vg_construct.t"
+ ((".*self-inconsistent.*") "is $(true) \"\" \"\"\n"))
+ (substitute* "test/t/07_vg_map.t"
+ ;; Change in fasta's output
+ (("identity\\) 1 \"") "identity) 1.0 \""))
+ (substitute* '("test/t/07_vg_map.t"
+ "test/t/33_vg_mpmap.t")
+ ((".*node id.*") "is $(true) \"\" \"\"\n"))
+ (substitute* "test/t/48_vg_convert.t"
+ (("true \"vg.*") "true \"true\"\n"))
+ (substitute* "test/t/50_vg_giraffe.t"
+ ((".*A long read can.*") "is $(true) \"\" \"\"\n")
+ ((".*A long read has.*") "is $(true) \"\" \"\"\n")
+ ((".*Long read minimizer.*") "is $(true) \"\" \"\"\n"))
+ ;; Don't test the docs, we're not providing npm
+ (substitute* "Makefile"
+ ((".*test-docs.*") "")))))
+ (add-after 'build 'build-manpages
+ (lambda* (#:key inputs #:allow-other-keys)
+ (invoke "make" "man")))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (install-file "bin/vg" (string-append out "/bin"))
+ (install-file "lib/libhandlegraph.so" (string-append out "/lib"))
+ (for-each
(lambda (file)
(install-file file (string-append out "/share/man/man1")))
(find-files "doc/man" "\\.1$"))))))
- #:test-target "test"))
+ #:test-target "test"))
(native-inputs
(append
(if (supported-package? ruby-asciidoctor)
(list ruby-asciidoctor)
'())
- (list bash-tap
+ (list asciidoc
+ bash-tap
bc
cmake-minimal
jq