about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEfraim Flashner2021-08-02 12:52:54 +0300
committerEfraim Flashner2021-08-02 12:52:54 +0300
commit2e3c2a1df0b9ad675291d1ae52821ac7bd72e458 (patch)
tree218917a85547f47adbf2ccaeb1884593941276be
parent84022eeab3df3991c6eb6b6ff70e4b3c0142cd3c (diff)
downloadguix-bioinformatics-2e3c2a1df0b9ad675291d1ae52821ac7bd72e458.tar.gz
gn: Add gfaffix.
-rw-r--r--gn/packages/bioinformatics.scm53
-rw-r--r--gn/packages/crates-io.scm176
2 files changed, 229 insertions, 0 deletions
diff --git a/gn/packages/bioinformatics.scm b/gn/packages/bioinformatics.scm
index b5ea52f..b2950ee 100644
--- a/gn/packages/bioinformatics.scm
+++ b/gn/packages/bioinformatics.scm
@@ -8,6 +8,7 @@
   #:use-module (guix git-download)
   #:use-module (guix hg-download)
   #:use-module (guix build-system ant)
+  #:use-module (guix build-system cargo)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system meson)
@@ -15,6 +16,7 @@
   #:use-module (guix build-system trivial)
   #:use-module (guix build-system waf)
   #:use-module (gnu packages)
+  #:use-module (gn packages crates-io)
   #:use-module (gn packages java)
   #:use-module (gn packages python)
   #:use-module (gn packages twint)
@@ -28,6 +30,7 @@
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cran)
+  #:use-module (gnu packages crates-io)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages datastructures)
@@ -56,6 +59,7 @@
   #:use-module (gnu packages readline)
   #:use-module (gnu packages rsync)
   #:use-module (gnu packages ruby)
+  #:use-module (gnu packages rust)
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages shells)
   #:use-module (gnu packages statistics)
@@ -447,6 +451,55 @@ reads.")
 (define-public edirect-gn
   (deprecated-package "edirect-gn" edirect))
 
+(define-public gfaffix
+  (package
+    (name "gfaffix")
+    (version "0.1.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/marschall-lab/GFAffix")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0xpzi0zvaa4pajs4vbp3vkwj2ha8pi62ly7bd8cpf3fi6r32pgdz"))
+        (modules '((guix build utils)))
+        (snippet
+         '(begin
+            (substitute* "Cargo.toml"
+              (("^handlegraph.*") "handlegraph = \"0.7\"\n"))))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:rust ,rust-1.49        ; or later
+       #:cargo-inputs
+       (("rust-clap" ,rust-clap-3)
+        ("rust-rustc-hash" ,rust-rustc-hash-1)
+        ("rust-regex" ,rust-regex-1)
+        ("rust-handlegraph" ,rust-handlegraph-0.7)
+        ("rust-gfa" ,rust-gfa-0.10)
+        ("rust-quick-csv", rust-quick-csv-0.1)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-env-logger" ,rust-env-logger-0.7))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'adjust-dependency-version
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; TODO: Replace the hardcoded version with logic.
+             (substitute* "Cargo.toml"
+               (("\"0.7\"")
+                "{ version = \"0.7.0-alpha.7\" }"))
+             #t)))))
+    (inputs
+     ;; rust-handlegraph@0.7 doesn't get picked up as a rust input.
+     `(("rust-handlegraph-0.7" ,rust-handlegraph-0.7)))
+    (home-page "https://github.com/marschall-lab/GFAffix")
+    (synopsis "Identify walk-preserving shared affixes in variation graphs")
+    (description
+     "GFAffix identifies walk-preserving shared affixes in variation graphs and
+collapses them into a non-redundant graph structure.")
+    (license license:expat)))
+
 ;; TODO: Unbundle zlib, bamtools, tclap
 (define-public sniffles
   (package
diff --git a/gn/packages/crates-io.scm b/gn/packages/crates-io.scm
new file mode 100644
index 0000000..9a619b9
--- /dev/null
+++ b/gn/packages/crates-io.scm
@@ -0,0 +1,176 @@
+(define-module (gn packages crates-io)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system cargo)
+  #:use-module (gnu packages crates-io)
+  #:use-module (gnu packages rust))
+
+
+(define-public rust-boomphf-0.5
+  (package
+    (name "rust-boomphf")
+    (version "0.5.9")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "boomphf" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32 "0braniw72g9yq5006sfgc1g8d4317bb524c694jw6nggizrvg3sf"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-crossbeam-utils" ,rust-crossbeam-utils-0.8)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-rayon" ,rust-rayon-1)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-wyhash" ,rust-wyhash-0.5))
+       #:cargo-development-inputs
+       (("rust-bencher" ,rust-bencher-0.1)
+        ("rust-quickcheck" ,rust-quickcheck-1))))
+    (home-page "https://github.com/10XGenomics/rust-boomphf")
+    (synopsis "Scalable and Efficient Minimal Perfect Hash Functions")
+    (description "This package provides a Rust implementation of
+@url(https://arxiv.org/abs/1702.03154, fast and scalable minimal perfect hashing
+ for massive key sets}.  It generates an @acronym{MPHF, minimal perfect hash
+ functions} for a collection of hashable objects.")
+    (license license:expat)))
+
+(define-public rust-gfa-0.10
+  (package
+    (name "rust-gfa")
+    (version "0.10.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gfa" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32 "1hadm6vfjwyqw41bqci18wb4wv80rydmrag7a5c02pdp1gid14fw"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-anyhow" ,rust-anyhow-1)
+        ("rust-bstr" ,rust-bstr-0.2)
+        ("rust-bytemuck" ,rust-bytemuck-1)
+        ("rust-fnv" ,rust-fnv-1)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-memmap" ,rust-memmap-0.7)
+        ("rust-nom" ,rust-nom-5)
+        ("rust-regex" ,rust-regex-1)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-serde-json" ,rust-serde-json-1))
+       #:cargo-development-inputs
+       (("rust-criterion" ,rust-criterion-0.3))))
+    (home-page "https://github.com/chfi/rs-gfa")
+    (synopsis "Library for working with graphs in the GFA format")
+    (description
+     "This package proides a Rust llibrary for working with graphs in the
+@acronym(GFA, Graphical Fragment Assembly} format.")
+    (license license:expat)))
+
+(define-public rust-handlegraph-0.7
+  ;; After this commit try the next actual release.
+  (let ((commit "a7ca8da640ae442ffd3ef4f5f9f358cd37c7deee")
+        (revision "1"))
+    (package
+      (inherit rust-handlegraph-0.3)
+      (name "rust-handlegraph")
+      (version (git-version "0.7.0-alpha.7" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/chfi/rs-handlegraph")
+                 (commit commit)))
+          (file-name (git-file-name name version))
+          (sha256
+           (base32 "19cxgysxam79k6skanh4q4hafi4aglzcmg5hmm3vfnrzbz9q6js0"))))
+      (arguments
+       `(#:rust ,rust-1.47      ; or later
+         #:cargo-inputs
+         (("rust-anyhow" ,rust-anyhow-1)
+          ("rust-boomphf" ,rust-boomphf-0.5)
+          ("rust-bstr" ,rust-bstr-0.2)
+          ("rust-crossbeam-channel" ,rust-crossbeam-channel-0.5)
+          ("rust-fnv" ,rust-fnv-1)
+          ("rust-gfa" ,rust-gfa-0.10)
+          ("rust-log" ,rust-log-0.4)
+          ("rust-rayon" ,rust-rayon-1)
+          ("rust-succinct" ,rust-succinct-0.5))
+         #:cargo-development-inputs
+         (("rust-quickcheck" ,rust-quickcheck-0.9)
+          ("rust-rand" ,rust-rand-0.7)))))))
+
+(define-public rust-quick-csv-0.1
+  (package
+    (name "rust-quick-csv")
+    (version "0.1.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "quick-csv" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32 "131k8zzlplk2h62wz813jbvm0sk7v3mixwhhq34y9lmp3mqbgx7d"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-rustc-serialize" ,rust-rustc-serialize-0.3))))
+    (home-page "https://github.com/tafia/quick-csv")
+    (synopsis "Quick csv reader and decoder")
+    (description "This package provides a quick csv reader and decoder in Rust.")
+    (license license:expat)))
+
+(define-public rust-succinct-0.5
+  (package
+    (name "rust-succinct")
+    (version "0.5.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "succinct" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32 "0654c9gq50x7djyf25zbzz3d2pc4x3z21wmjj3qbr6d9h4hbd63p"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-byteorder" ,rust-byteorder-1)
+        ("rust-num-traits" ,rust-num-traits-0.2))
+       #:cargo-development-inputs
+       (("rust-quickcheck" ,rust-quickcheck-0.9))))
+    (home-page "https://github.com/tov/succinct-rs")
+    (synopsis "Succinct data structures for Rust")
+    (description "Succinct data structures for Rust.1")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-wyhash-0.5
+  (package
+    (name "rust-wyhash")
+    (version "0.5.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "wyhash" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32 "15f26hvx6nyp4d6iswha7rm3psidxa2k2iab1f1aqgsyq9iy3xms"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-rand-core" ,rust-rand-core-0.6))))
+    (home-page "https://github.com/eldruin/wyhash-rs")
+    (synopsis "Rust implementation of the WyHash algorithm")
+    (description
+     "This package provides a Rust implementation of the WyHash fast portable
+non-cryptographic hashing algorithm and random number generator.")
+    (license (list license:expat license:asl2.0))))