about summary refs log tree commit diff
diff options
context:
space:
mode:
authorpjotrp2026-04-15 12:02:33 +0200
committerpjotrp2026-04-15 12:02:33 +0200
commitfd691f93def9e431d2a1fbd719c1332a88c430f3 (patch)
tree224871095d724e2eeebd918853852d1c7173428d
parentb816d1ee91db57de62cef0a6abc0fb45cbbac8ee (diff)
downloadguix-bioinformatics-fd691f93def9e431d2a1fbd719c1332a88c430f3.tar.gz
Added bandageNG
-rw-r--r--gn/packages/pangenome.scm74
1 files changed, 73 insertions, 1 deletions
diff --git a/gn/packages/pangenome.scm b/gn/packages/pangenome.scm
index a11bde2..5073c75 100644
--- a/gn/packages/pangenome.scm
+++ b/gn/packages/pangenome.scm
@@ -36,6 +36,7 @@
   #:use-module (gnu packages time)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages cpp)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages elf)
@@ -43,6 +44,7 @@
   #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages protobuf)
+  #:use-module (gnu packages qt)
   #:use-module (gnu packages rdf)
   #:use-module (gnu packages ruby)
   #:use-module (gnu packages ruby-xyz)
@@ -1123,6 +1125,74 @@ multiple sequence alignment.")
         license:zlib
         license:boost1.0))))
 
+(define-public bandage-ng
+  (package
+    (name "bandage-ng")
+    (version "2026.4.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/asl/BandageNG")
+                    (commit (string-append "v" version))
+                    (recursive? #t)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "071inw1dd0m430p1qh7w2zdvz7y586hgvhhahwv99016l601ha3c"))))
+    (build-system cmake-build-system)
+    (inputs
+     (list cli11
+           lexy
+           qtbase
+           qtsvg
+           qtwayland
+           (list zstd "lib")))
+    (native-inputs
+     (list pkg-config))
+    (arguments
+     (list
+      #:configure-flags
+      #~(list "-DCMAKE_BUILD_TYPE=Release"
+              "-DFETCHCONTENT_FULLY_DISCONNECTED=ON")
+      #:tests? #f  ; tests require display
+      #:modules '((guix build cmake-build-system)
+                  (guix build utils)
+                  (ice-9 textual-ports))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'use-system-deps
+            (lambda _
+              ;; Use system zlib instead of bundled zlib-ng
+              (substitute* "thirdparty/CMakeLists.txt"
+                (("if \\(CMAKE_OSX_ARCHITECTURES\\)")
+                 "if (TRUE)"))
+              ;; Remove FetchContent block and replace with find_package
+              (use-modules (ice-9 textual-ports))
+              (let ((text (call-with-input-file "CMakeLists.txt"
+                            get-string-all)))
+                ;; Remove lines between "include(FetchContent)" and
+                ;; "FetchContent_MakeAvailable(zstd)" inclusive
+                (let ((start (string-contains text "include(FetchContent)"))
+                      (end-marker "FetchContent_MakeAvailable(zstd)"))
+                  (let ((end (+ (string-contains text end-marker)
+                                (string-length end-marker)
+                                1)))  ; +1 for newline
+                    (call-with-output-file "CMakeLists.txt"
+                      (lambda (out)
+                        (display (substring text 0 start) out)
+                        (display "find_package(lexy REQUIRED)\n" out)
+                        (display "find_package(CLI11 REQUIRED)\n" out)
+                        (display "find_library(ZSTD_LIB zstd REQUIRED)\nfind_path(ZSTD_INCLUDE_DIR zstd.h REQUIRED)\nadd_library(zstd::libzstd_shared SHARED IMPORTED)\nset_target_properties(zstd::libzstd_shared PROPERTIES IMPORTED_LOCATION ${ZSTD_LIB})\ntarget_include_directories(zstd::libzstd_shared INTERFACE ${ZSTD_INCLUDE_DIR})\n" out)
+                        (display (substring text end) out))))))
+              (substitute* "CMakeLists.txt"
+                (("libzstd_static") "zstd::libzstd_shared")
+                (("\\$\\{zstd_SOURCE_DIR\\}/lib") "")))))))
+    (home-page "https://github.com/asl/BandageNG")
+    (synopsis "Visualize de novo assembly graphs")
+    (description "BandageNG is a program for visualising de novo assembly
+graphs.  It extends the original Bandage with new features including support
+for GFA format, annotations, and improved rendering.")
+    (license license:gpl3+)))
+
 (define-public pangenomes
   (package
     (name "pangenomes")
@@ -1136,7 +1206,8 @@ multiple sequence alignment.")
                (use-modules (guix build utils))
                (mkdir-p (string-append #$output "/bin")))))
     (propagated-inputs
-     (list bedtools
+     (list bandage-ng
+           bedtools
            bwa-mem2
            cosigt
            fastga-rs
@@ -1158,6 +1229,7 @@ multiple sequence alignment.")
            smoothxg
            vcfbub
            vcflib
+           vg
            wally
            wfmash))
     (home-page "https://github.com/pangenome")