aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gn/packages/riscv.scm169
1 files changed, 3 insertions, 166 deletions
diff --git a/gn/packages/riscv.scm b/gn/packages/riscv.scm
index 4c40429..9e63665 100644
--- a/gn/packages/riscv.scm
+++ b/gn/packages/riscv.scm
@@ -10,19 +10,11 @@
;;;
(define-module (gn packages riscv)
- #:use-module (guix utils)
- #:use-module (guix packages)
- #:use-module (guix git-download)
- #:use-module (guix build-system gnu)
- #:use-module (guix build-system cmake)
- #:use-module ((guix licenses) #:prefix license:)
- #:use-module (gnu packages)
#:use-module (gnu packages base)
- #:use-module (gnu packages bioinformatics)
#:use-module (gnu packages cpp)
- #:use-module (gnu packages compression)
- #:use-module (gnu packages jemalloc)
- #:use-module (gnu packages maths))
+ #:use-module (guix git-download)
+ #:use-module (guix packages)
+ #:use-module (guix build-system gnu))
;; Static hello, for testing
@@ -48,158 +40,3 @@
(sha256
(base32
"1dh8x0ikfwk0by5avwfv9gvr9ay6jy13yr66rvgw9wwyxmklz848")))))))
-
-(define-public wfmash
- (let ((version "0.7.0")
- (commit "81b8292479648058c6986da808afba0eadcce8d0")
- (package-revision "26"))
- (package
- (name "wfmash")
- (version (git-version version package-revision commit))
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/ekg/wfmash.git")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0nfmbnmlk2ji5f651dkv0jl1h3d1lp2npldwhdiyylp96z3yz8zb"))
- (modules '((guix build utils)))
- (snippet '(begin
- (delete-file-recursively "src/common/atomic_queue")
- (substitute* "src/align/include/computeAlignments.hpp"
- (("\"common/atomic_queue/atomic_queue.h\"")
- "<atomic_queue/atomic_queue.h>"))))))
- (build-system cmake-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'remove-x86-specific-compile-flags
- (lambda _
- (substitute* (find-files "." "CMakeLists\\.txt")
- (("-mcx16") "")
- (("-march=native") ""))
- (substitute* "src/common/dset64.hpp"
- (("__x86_64__" all) (string-append all " && " all)))))
- ;; This stashes our build version in the executable
- (add-after 'unpack 'set-version
- (lambda _
- (mkdir "include")
- (with-output-to-file "include/wfmash_git_version.hpp"
- (lambda ()
- (format #t "#define WFMASH_GIT_VERSION \"~a\"~%" version)))))
- (replace 'check
- ;; Adapted from .github/workflows/test_on_push.yml
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (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"
- "../source/data/LPA.subset.fa.gz"
- "../source/data/LPA.subset.fa.gz"
- "-X" "-n" "10" "-T" "wflign_info.")))
- (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"
- "../source/data/LPA.subset.fa.gz"
- "../source/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"
- "../source/data/LPA.subset.fa.gz"
- "../source/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"
- "../source/data/reference.fa.gz"
- "../source/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"
- "../source/data/reads.255bps.fa.gz"
- "../source/data/reads.255bps.fa.gz"
- "-X")))
- (invoke "head" "reads.255bps.paf")))))))
- #:make-flags (list (string-append "CC=" ,(cc-for-target))
- (string-append "CXX=" ,(cxx-for-target)))))
- (inputs (list atomic-queue
- gsl
- htslib
- jemalloc
- zlib))
- (native-inputs
- (list samtools))
- (synopsis "base-accurate DNA sequence alignments using WFA and mashmap2")
- (description "wfmash is a fork of MashMap that implements
-base-level alignment using the wavefront alignment algorithm WFA. It
-completes an alignment module in MashMap and extends it to enable
-multithreaded operation. A single command-line interface simplfies
-usage. The PAF output format is harmonized and made equivalent to that
-in minimap2, and has been validated as input to seqwish.")
- (home-page "https://github.com/ekg/wfmash")
- (license license:expat))))