about summary refs log tree commit diff
diff options
context:
space:
mode:
authorpjotr2026-05-07 22:47:41 +0000
committerpjotr2026-05-07 22:47:41 +0000
commit5542d606118ed04a38dd8200876bb7fe7a145dc0 (patch)
tree340607c95a50e11f82ffbef6e1262538eb7c61cb
parent1ed1bcb79144a8c60092f19db9dd4eaeff7d18e6 (diff)
downloadguix-bioinformatics-5542d606118ed04a38dd8200876bb7fe7a145dc0.tar.gz
Final state of changes: HEAD main
  - gn/packages/pangenome.scm:
    - vg-1.71 (new): inherited from vg, pinned to v1.71.0.
    - wfmash-0.14-snapshot (new): inherited from wfmash-0.14, pinned to commit 7bf8988.                       - pggb: inputs swap wfmash-0.14 → wfmash-0.14-snapshot. (Fixes the CIGAR skew everyone hit, not just
  the workshop.)
-rw-r--r--gn/packages/pangenome.scm75
1 files changed, 73 insertions, 2 deletions
diff --git a/gn/packages/pangenome.scm b/gn/packages/pangenome.scm
index e2a1fa1..e2758ee 100644
--- a/gn/packages/pangenome.scm
+++ b/gn/packages/pangenome.scm
@@ -48,6 +48,7 @@
   #:use-module (gnu packages elf)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages java)
   #:use-module (gnu packages llvm)
@@ -978,7 +979,10 @@ The path-guided stochastic gradient descent based 1D sort implemented in
            smoothxg
            time
            util-linux
-           wfmash-0.14))
+           ;; Pinned to the wfmash-0.14 post-release snapshot used by
+           ;; the workshop (commit 7bf8988); also avoids the ABI skew
+           ;; with the surrounding wfmash-0.14 release.
+           wfmash-0.14-snapshot))
     (home-page "https://doi.org/10.1101/2023.04.05.535718")
     (synopsis "PanGenome Graph Builder")
     (description "pggb builds pangenome variation graphs from a set of input
@@ -1027,6 +1031,56 @@ sequences using wfmash, seqwish, smoothxg, and gfaffix.")
        (prepend jemalloc)
        (delete "libdeflate")))))
 
+(define-public wfmash-0.14-snapshot
+  ;; wfmash-0.14 pinned at a post-0.14.0 commit for the workshop.
+  ;; Inherits everything from wfmash-0.14; overrides only the source
+  ;; (now a git snapshot) and the build-check-prerequisites phase that
+  ;; hardcodes the upstream tarball directory name.
+  (let* ((commit "7bf89888a09d517635c77822e9ea922e7dfc7fb6")
+         (revision "0")
+         (snapshot-version (git-version "0.14.0" revision commit))
+         ;; Out-of-source cmake build: cwd is .../build/, source is at
+         ;; ../source/ (gnu-build-system unpacks git-fetch checkouts
+         ;; into a directory literally named "source", regardless of
+         ;; the package's file-name).
+         (source-dir "source"))
+    (package
+      (inherit wfmash-0.14)
+      (version snapshot-version)
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/waveygang/wfmash")
+               (commit commit)))
+         (file-name source-dir)
+         (sha256
+          (base32 "0gffr253c571pzr7a8rmj8ir6i0nspbrsmqa727wmsgzc277ms0n"))
+         (snippet
+          #~(begin
+              (use-modules (guix build utils))
+              (delete-file-recursively "src/common/atomic_queue")
+              (substitute* "src/align/include/computeAlignments.hpp"
+                (("\"common/atomic_queue/atomic_queue.h\"")
+                 "<atomic_queue/atomic_queue.h>"))
+              (substitute* (find-files "." "CMakeLists\\.txt")
+                (("-march=native ") ""))))))
+      (arguments
+       (substitute-keyword-arguments (package-arguments wfmash-0.14)
+         ((#:phases phases #~%standard-phases)
+          #~(modify-phases #$phases
+              (replace 'build-check-prerequisites
+                (lambda _
+                  (let ((wfa2-lib #$(string-append
+                                     "../" source-dir
+                                     "/src/common/wflign/deps/WFA2-lib")))
+                    (substitute* (string-append wfa2-lib "/Makefile")
+                      (("-march=x86-64-v3") ""))
+                    (substitute* (string-append wfa2-lib "/tests/wfa.utest.sh")
+                      (("\\\\time -v") "time"))
+                    (invoke "make" "-C" wfa2-lib
+                            #$(string-append "CC=" (cc-for-target)))))))))))))
+
 ;; wfa2-lib v2.3.6 with cmake build, pkg-config support
 (define-public wfa2-lib/cmake
   (package
@@ -1863,6 +1917,18 @@ and supporting tools like minimap2, samtools, bedtools, bwa-mem2, meryl,
 kfilt, miniprot, pangene, wally, and vcfbub.")
     (license license:expat)))
 
+(define mempang-workshop-pangenomes
+  ;; pangenomes propagates the current vg (1.72.0) and wfmash-0.14
+  ;; release; the workshop is pinned to vg 1.71.0 and a wfmash-0.14
+  ;; post-release commit.  Drop both here so the workshop can list
+  ;; the pinned versions directly without a profile collision.
+  (package
+    (inherit pangenomes)
+    (propagated-inputs
+     (modify-inputs (package-propagated-inputs pangenomes)
+       (delete "vg")
+       (delete "wfmash")))))
+
 (define-public mempang-workshop
   (package
     (name "mempang-workshop")
@@ -1876,7 +1942,12 @@ kfilt, miniprot, pangene, wally, and vcfbub.")
                (use-modules (guix build utils))
                (mkdir-p (string-append #$output "/bin")))))
     (propagated-inputs
-     (list pangenomes
+     (list mempang-workshop-pangenomes
+           vg-1.71
+           wfmash-0.14-snapshot
+           ;; libgcc_s.so.1 for the prebuilt impop_k (Part 6) binaries
+           ;; that ship with the MarsicoFL/memimpopk repo.
+           (list gcc "lib")
            bc
            bcftools
            coreutils