diff options
| author | pjotrp | 2026-04-15 10:32:11 +0200 |
|---|---|---|
| committer | pjotrp | 2026-04-15 10:32:11 +0200 |
| commit | b816d1ee91db57de62cef0a6abc0fb45cbbac8ee (patch) | |
| tree | 130a7a444a394d9f317c3d4ed5c10420dff09f69 /gn/packages | |
| parent | 903a054c61cccb13fd37033d002755cef6367a0c (diff) | |
| download | guix-bioinformatics-b816d1ee91db57de62cef0a6abc0fb45cbbac8ee.tar.gz | |
Added vg package back in
Diffstat (limited to 'gn/packages')
| -rw-r--r-- | gn/packages/pangenome.scm | 265 |
1 files changed, 265 insertions, 0 deletions
diff --git a/gn/packages/pangenome.scm b/gn/packages/pangenome.scm index f0a3cc7..a11bde2 100644 --- a/gn/packages/pangenome.scm +++ b/gn/packages/pangenome.scm @@ -34,9 +34,21 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages time) + #:use-module (gnu packages bash) #:use-module (gnu packages check) + #:use-module (gnu packages curl) + #:use-module (gnu packages documentation) + #:use-module (gnu packages elf) + #:use-module (gnu packages gtk) #:use-module (gnu packages haskell-xyz) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages protobuf) + #:use-module (gnu packages rdf) #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-xyz) + #:use-module (gnu packages tls) + #:use-module (gnu packages vim) + #:use-module (gnu packages web) #:use-module (gnu packages zig) #:use-module (gn packages pangenome-rust) #:use-module (gnu packages python-xyz)) @@ -858,6 +870,259 @@ format, and a collection of command-line utilities for executing complex manipulations on VCF files.") (license license:expat)))) +(define-public vg + (package + (name "vg") + (version "1.72.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 "17s5vd4ry8hys6jkramdkspw5w287airfca68gb6fiapcavqaz0w")) + (snippet + #~(begin + (use-modules (guix build utils)) + (substitute* (find-files "." "(CMakeLists\\.txt|Makefile)") + (("-march=native") "") + (("-mtune=native") "") + (("-msse4.2") "") + (("-mcx16") "")))))) + (build-system gnu-build-system) + (arguments + (list + #:make-flags + #~(list (string-append "CC=" #$(cc-for-target)) + (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) + ;; Add subdirectory include paths for system packages + (let ((extra-includes + (string-join + (list (search-input-directory inputs "/include/vcflib") + (search-input-directory inputs "/include/fastahack") + (search-input-directory inputs "/include/cairo") + (search-input-directory inputs "/include/raptor2")) + ":"))) + (setenv "CPLUS_INCLUDE_PATH" + (string-append extra-includes + ":" (or (getenv "CPLUS_INCLUDE_PATH") ""))) + (setenv "C_INCLUDE_PATH" + (string-append extra-includes + ":" (or (getenv "C_INCLUDE_PATH") "")))) + (substitute* "Makefile" + ;; PKG_CONFIG_DEPS - use external vcflib and fastahack + (("cairo libzstd") + "cairo htslib libzstd libdw libelf protobuf raptor2 sdsl-lite tabixpp vcflib fastahack libdeflate libwfa2") + + ;; Skip the part where we link static libraries special + (("-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"))) + + ;; Use external vcflib + ((" \\$\\(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") "+=") + ;; Add fastahack, smithwaterman, cairo to linker flags + (("-lvcflib") "-lvcflib -lfastahack -lsmithwaterman -lcairo") + + ((" \\$\\(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 + (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")))) + ;; 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-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 '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"))) + ;; Skip failing tests + (substitute* "test/t/02_vg_construct.t" + ((".*self-inconsistent.*") "is $(true) \"\" \"\"\n")) + (substitute* "test/t/07_vg_map.t" + (("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 make-flags #:allow-other-keys) + ;; vg is not in PATH. Replace it with full path. + (substitute* "doc/vgmanmd.py" + (("'vg'") "'./bin/vg'")) + (apply invoke "make" "man" make-flags))) + (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")) + (native-inputs + (append + (if (supported-package? ruby-asciidoctor) + (list ruby-asciidoctor) + '()) + (list asciidoc + bash-tap + bc + cmake-minimal + ghc-pandoc + jq + perl + pkg-config + python + samtools + util-linux + which + xxd))) + (inputs + (list boost + cairo + curl + elfutils + fastahack + htslib + jansson + jemalloc + libdeflate + libdivsufsort + ncurses + openmpi + openssl + protobuf + raptor2 + sdsl-lite + smithwaterman + snappy + sparsehash + tabixpp + vcflib + wfa2-lib/cmake + zlib + (list zstd "lib"))) + (home-page "https://www.biostars.org/t/vg/") + (synopsis "Tools for working with genome variation graphs") + (description "Variation graphs provide a succinct encoding of the sequences +of many genomes. A variation graph (in particular as implemented in vg) is +composed of: +@enumerate +@item nodes, which are labeled by sequences and ids +@item edges, which connect two nodes via either of their respective ends +@item paths, describe genomes, sequence alignments, and annotations (such as +gene models and transcripts) as walks through nodes connected by edges +@end enumerate +This model is similar to sequence graphs that have been used in assembly and +multiple sequence alignment.") + (properties `((release-monitoring-url . "https://github.com/vgteam/vg/releases") + (tunable? . #t))) + (license + (list + license:expat + license:bsd-2 + license:bsd-3 + license:asl2.0 + license:gpl3+ + license:zlib + license:boost1.0)))) + (define-public pangenomes (package (name "pangenomes") |
