aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEfraim Flashner2023-09-20 16:03:50 +0300
committerEfraim Flashner2023-09-20 16:08:25 +0300
commita599c69673da59fc129ceefffb73f8958f3d82f0 (patch)
tree51a7a243903663d1e70a76ae400d815a8d46a15b
parentbfd4ccbbe6ad79ff9a02ca6c8656914f1fc4c414 (diff)
downloadguix-bioinformatics-a599c69673da59fc129ceefffb73f8958f3d82f0.tar.gz
seqwish: Update to 0.7.9.
-rw-r--r--gn/packages/bioinformatics.scm208
-rw-r--r--seqwish-paryfor-riscv.diff20
2 files changed, 59 insertions, 169 deletions
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
diff --git a/seqwish-paryfor-riscv.diff b/seqwish-paryfor-riscv.diff
new file mode 100644
index 0000000..cecf806
--- /dev/null
+++ b/seqwish-paryfor-riscv.diff
@@ -0,0 +1,20 @@
+diff --git a/deps/paryfor/paryfor.hpp b/deps/paryfor/paryfor.hpp
+index b8ced09..0536580 100644
+--- a/deps/paryfor/paryfor.hpp
++++ b/deps/paryfor/paryfor.hpp
+@@ -51,6 +51,15 @@ static inline void spin_loop_pause() noexcept {
+ }
+ } // namespace atomic_queue
+ } // namespace paryfor
++#elif defined(__riscv) && (__riscv_xlen == 64)
++namespace paryfor {
++namespace atomic_queue {
++constexpr int CACHE_LINE_SIZE = 64;
++static inline void spin_loop_pause() noexcept {
++ asm volatile ("nop" ::: "memory");
++}
++}
++}
+ #else
+ #error "Unknown CPU architecture."
+ #endif