From a599c69673da59fc129ceefffb73f8958f3d82f0 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 20 Sep 2023 16:03:50 +0300 Subject: seqwish: Update to 0.7.9. --- gn/packages/bioinformatics.scm | 208 ++++++++--------------------------------- 1 file changed, 39 insertions(+), 169 deletions(-) (limited to 'gn/packages/bioinformatics.scm') diff --git a/gn/packages/bioinformatics.scm b/gn/packages/bioinformatics.scm index a303baf..b0865f3 100644 --- a/gn/packages/bioinformatics.scm +++ b/gn/packages/bioinformatics.scm @@ -1592,120 +1592,60 @@ runApp(launch.browser=0, port=4208)~%\n" (scRNA-seq) data analysis.") (license license:agpl3)))) -(define-public seqwish-0.1 +(define-public seqwish (package (name "seqwish") - (version "0.1") + (version "0.7.9") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/ekg/seqwish.git") - (commit (string-append "v" version)))) + (commit (string-append "v" version)) + (recursive? #t))) (file-name (git-file-name name version)) (sha256 - (base32 - "1gp72cmi13hbkmwwhgckmxkbx8w644jc5l6dvvvxdbl6sk8xsi5r")))) - (build-system gnu-build-system) + (base32 "0xnv40kjlb610bk67n4xdqz5dfsjhrqld5bxzblji57k6bb4n66x")) + (patches (search-patches "seqwish-paryfor-riscv.diff")) + (snippet + #~(begin + (use-modules (guix build utils)) + (substitute* '("deps/atomic_queue/Makefile" + "deps/mmmulti/deps/DYNAMIC/CMakeLists.txt" + "deps/mmmulti/deps/atomic_queue/Makefile" + "deps/mmmulti/deps/ips4o/CMakeLists.txt") + (("-march=native") "") + (("-mcx16") "")) + (substitute* '("deps/mmmulti/deps/sdsl-lite/CMakeLists.txt" + "deps/sdsl-lite/CMakeLists.txt") + (("-msse4.2 -march=native") "")))))) + (build-system cmake-build-system) (arguments - `(#:phases + `(#:configure-flags + '(,@(cond ((target-x86-64?) + ;; This seems to be about the minimum + '("-DEXTRA_FLAGS=-march=x86-64-v2")) + ((target-aarch64?) + '("-DEXTRA_FLAGS=-march=armv8-a")) + ((target-riscv64?) + '("-DEXTRA_FLAGS=-march=rv64imafdc")) + ((target-ppc64le?) + '("-DEXTRA_FLAGS=-mcpu=power8")) + ;; The default case is '-march=native' + (else '()))) + #:phases (modify-phases %standard-phases - (delete 'configure) - (replace 'build - (lambda* (#:key inputs #:allow-other-keys) - (let ((sdsl-lite (assoc-ref inputs "sdsl-lite")) - (sufsort (assoc-ref inputs "sufsort")) - (bsort (assoc-ref inputs "bsort")) - (mmap_allocator (assoc-ref inputs "mmap-allocator")) - (tayweeargs (assoc-ref inputs "tayweeargs-source")) - (gzipreader (assoc-ref inputs "gzipreader-source")) - (mmmultimap (assoc-ref inputs "mmmultimap-source")) - (iitii (assoc-ref inputs "iitii-source")) - (ips4o (assoc-ref inputs "ips4o-source"))) - (apply invoke "g++" "-o" "seqwish" - "-O3" "-g" "-std=c++14" "-fopenmp" - "-latomic" "-lz" - (string-append "-I" sdsl-lite "/include") - (string-append "-I" sdsl-lite "/include/sdsl") - (string-append "-I" bsort "/include") - (string-append "-I" tayweeargs) - (string-append "-I" gzipreader) - (string-append "-I" mmmultimap "/src") - (string-append "-I" iitii "/src") - (string-append "-I" mmap_allocator "/include") - (string-append "-I" ips4o) - (append - (find-files "src" ".") - (list - (string-append sdsl-lite "/lib/libsdsl.so") - (string-append sufsort "/lib/libdivsufsort.so") - (string-append sufsort "/lib/libdivsufsort64.so") - (string-append mmap_allocator "/lib/libmmap_allocator.a") - (string-append bsort "/lib/libbsort.a"))))))) (replace 'check - (lambda _ + (lambda* (#:key tests? #:allow-other-keys) ;; Add seqwish to the PATH for the tests. (setenv "PATH" (string-append (getcwd) ":" (getenv "PATH"))) - (with-directory-excursion "test" - (invoke "make")))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (install-file "seqwish" (string-append out "/bin"))) - #t))))) + (when tests? + (with-directory-excursion "../source/test" + (invoke "make")))))))) (inputs - `(("bsort" ,ekg-bsort) - ("mmap-allocator" ,ekg-mmap-allocator) - ("openmpi" ,openmpi) - ("sdsl-lite" ,sdsl-lite) - ("sufsort" ,libdivsufsort) - ("zlib" ,zlib))) + (list jemalloc + zlib)) (native-inputs - `(("prove" ,perl) - ("tayweeargs-source" ,(origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/Taywee/args.git") - (commit "3de44ec671db452cc0c4ef86399b108939768abb"))) - (file-name "tayweeargs-source-for-seqwish") - (sha256 - (base32 - "1v8kq1gvl5waysrfp0s58881rx39mnf3ifdsl6pb3y3c4zaki2xh")))) - ("gzipreader-source" ,(origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/gatoravi/gzip_reader.git") - (commit "0ef26c0399e926087f9d6c4a56067a7bf1fc4f5e"))) - (file-name "gzipreader-source-for-seqwish") - (sha256 - (base32 - "1wy84ksx900840c06w0f1mgzvr7zsfsgxq1b0jdjh8qka26z1r17")))) - ("mmmultimap-source" ,(origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ekg/mmmultimap.git") - (commit "88c734c36563048b0f3acc04dd8856f19e02b75f"))) - (file-name "mmmultimap-source-for-seqwish") - (sha256 - (base32 - "06mnf3bd32s3ngxkl573ylg2qsvlw80r1ksdwamx3fzxa1a5yls0")))) - ("iitii-source" ,(origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ekg/iitii.git") - (commit "85209e07a3ee403fb6557387a7f897cd76be4406"))) - (file-name "iitii-source-for-seqwish") - (sha256 - (base32 - "0sszvffkswf89nkbjmjg3wjwqvy2w0d3wgy3ngy33ma4sy4s025s")))) - ("ips4o-source" ,(origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/SaschaWitt/ips4o.git") - (commit "bff3ccf0bf349497f2bb10f825d160b792236367"))) - (file-name "ips4o-source-for-seqwish") - (sha256 - (base32 - "0yjfvrkiwgmy5cn0a7b9j8jwc3zp0l8j4dl5n0jgz68pdnhlp96h")))))) + (list perl)) (home-page "https://github.com/ekg/seqwish") (synopsis "Alignment to variation graph inducer") (description "Seqwish implements a lossless conversion from pairwise @@ -1720,76 +1660,6 @@ limited by the use of sorted disk-backed arrays and succinct rank/select dictionaries to record a queryable version of the graph.") (license license:expat))) -(define ekg-bsort - (let ((commit "c3ab0d3308424030e0a000645a26d2c10a59a124") - (revision "1")) - (package - (name "bsort") - (version (git-version "0.0.0" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ekg/bsort.git") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0dgpflzcp3vdhbjwbjw347czi86gyk73hxcwjdqnaqh5vg61bdb6")))) - (build-system cmake-build-system) - (arguments - '(#:tests? #f ; no test target - #:out-of-source? #f - #:phases - (modify-phases %standard-phases - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (install-file "bin/bsort" (string-append out "/bin")) - (install-file "src/bsort.hpp" (string-append out "/include")) - (install-file "lib/libbsort.a" (string-append out "/lib"))) - #t))))) - (home-page "") - (synopsis "") - (description "") - (license license:gpl2)))) - -(define ekg-mmap-allocator - (let ((commit "ed61daf094de1c2e1adbe8306287ad52da5f0264") - (revision "1")) - (package - (name "mmap-allocator") - (version (git-version "0.10.1" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ekg/mmap_allocator.git") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1f30b2kpwwzh6333s0qi5samk458ghbnvyycf6rwx6n6j7xswhbw")))) - (build-system gnu-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (delete 'configure) ; no configure script - (add-before 'install 'pre-install - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* "Makefile" - (("HEADERS=") "HEADERS=mmappable_vector.h ") - (("/usr") out)) - (mkdir-p (string-append out "/lib")) - (mkdir (string-append out "/include")) - #t)))) - #:test-target "test")) - (home-page "") - (synopsis "") - (description "") - (license license:lgpl2.0+)))) ; README just says "lpgl". - ;; TODO: Unbundle BBHash, parallel-hashmap, zstr (define-public graphaligner (package -- cgit v1.2.3