├── .gitignore ├── README.md ├── mashmap-make-the-aligner-as-well.patch ├── xg.scm ├── gbwtgraph.scm ├── mashmap.scm ├── gyeet.scm ├── vt.scm ├── mashz.scm ├── odgi.scm ├── maffer.scm ├── gimbricate.scm ├── edyeet.scm ├── seqwish.scm ├── mmseqs2.scm ├── freebayes.scm ├── paf2dot.scm ├── wfmash.scm ├── vcflib.scm ├── smoothxg.scm ├── shasta-make-install-target-configurable.patch ├── pggb.scm ├── graphaligner.scm ├── shasta.scm └── gfaffix.scm /.gitignore: -------------------------------------------------------------------------------- 1 | \#* 2 | .#* 3 | *~ 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # guix genomics packages 2 | 3 | This repo contains guix package definitions (aka guile build scripts) for bioinformatics tools that I author and deploy. 4 | 5 | ## usage 6 | 7 | To install packages from these definitions, **specify the path of this repository** as your `GUIX_PACKAGE_PATH`. 8 | For instance, to install `wfmash` from within this repository directory: 9 | 10 | ```bash 11 | GUIX_PACKAGE_PATH=. guix package -i wfmash 12 | ``` 13 | 14 | If the guix-genomics repository directory were in your home directory, you might do this: 15 | 16 | ```bash 17 | GUIX_PACKAGE_PATH=~/guix-genomics guix package -i wfmash 18 | ``` 19 | 20 | You do this to tell where guix to look for additional package specifications. 21 | These specifications live in the scheme definitions in this repository. 22 | 23 | ## updating 24 | 25 | To build and update a package, first change the commit id and/or version in its .scm file and then run: 26 | 27 | ``` 28 | tool=tool_name; GUIX_PACKAGE_PATH=. guix build $tool && GUIX_PACKAGE_PATH=. guix package -i $tool && git commit -a -m 'update '$tool && git push origin master 29 | `` 30 | -------------------------------------------------------------------------------- /mashmap-make-the-aligner-as-well.patch: -------------------------------------------------------------------------------- 1 | From 0a50082e59a74f74a0a95de0d80b2cd9a023a203 Mon Sep 17 00:00:00 2001 2 | From: Erik Garrison 3 | Date: Thu, 18 Jun 2020 23:18:31 +0200 4 | Subject: [PATCH] make the aligner as well 5 | 6 | --- 7 | Makefile.in | 6 +++--- 8 | 1 file changed, 3 insertions(+), 3 deletions(-) 9 | 10 | diff --git a/Makefile.in b/Makefile.in 11 | index 3e36139..375a240 100644 12 | --- a/Makefile.in 13 | +++ b/Makefile.in 14 | @@ -13,7 +13,7 @@ endif 15 | SOURCE_1=src/map/mash_map.cpp 16 | SOURCE_2=src/align/align.cpp 17 | 18 | -all : mashmap 19 | +all : mashmap mashmap-align 20 | 21 | mashmap : 22 | $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(SOURCE_1) -o mashmap @mathlib@ -lstdc++ -lz -lm -lpthread 23 | @@ -21,9 +21,9 @@ mashmap : 24 | mashmap-align : 25 | $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(SOURCE_2) -o mashmap-align @mathlib@ -lstdc++ -lz -lm -lpthread 26 | 27 | -install : mashmap 28 | +install : mashmap mashmap-align 29 | mkdir -p @prefix@/bin/ 30 | - cp `pwd`/mashmap @prefix@/bin/ 31 | + cp `pwd`/mashmap `pwd`/mashmap-align @prefix@/bin/ 32 | 33 | clean : 34 | -rm -f mashmap 35 | -- 36 | 2.25.1 37 | 38 | -------------------------------------------------------------------------------- /xg.scm: -------------------------------------------------------------------------------- 1 | (define-module (xg) 2 | #:use-module (guix packages) 3 | #:use-module (guix git-download) 4 | #:use-module (guix build-system cmake) 5 | #:use-module ((guix licenses) #:prefix license:) 6 | #:use-module (gnu packages base) 7 | #:use-module (gnu packages gcc) 8 | #:use-module (gnu packages cmake) 9 | #:use-module (gnu packages version-control) 10 | #:use-module (gnu packages python) 11 | #:use-module (gnu packages python-xyz) 12 | #:use-module (gnu packages wget) 13 | #:use-module (gnu packages curl) 14 | #:use-module (gnu packages bash) 15 | #:use-module (gnu packages compression)) 16 | 17 | (define-public xg 18 | (let ((version "0.1.0") 19 | (commit "c414da4b7cd39a34d37e2c6ea977142093638814") 20 | (package-revision "1")) 21 | (package 22 | (name "xg") 23 | (version (string-append version "+" (string-take commit 7) "-" package-revision)) 24 | (source (origin 25 | (method git-fetch) 26 | (uri (git-reference 27 | (url "https://github.com/vgteam/xg.git") 28 | (commit commit) 29 | (recursive? #t))) 30 | (file-name (git-file-name name version)) 31 | (sha256 32 | (base32 33 | "055l2cb1ys0gg2qi3aha355y33811k5i43a91hf6g1p9k4knwvsg")))) 34 | (build-system cmake-build-system) 35 | (arguments 36 | `(#:phases 37 | (modify-phases 38 | %standard-phases 39 | (delete 'check)) 40 | #:make-flags (list "CC=gcc"))) 41 | (native-inputs 42 | `(("cmake" ,cmake) 43 | ("glibc" ,glibc) 44 | ("gcc" ,gcc-9) 45 | ("zlib" ,zlib))) 46 | (synopsis "succinct static genome variation graph index") 47 | (description 48 | "The XG index is a succinct, static index for genome variation graphs. 49 | This utility reads GFA and writes XG format version of the graph. It 50 | may also be used to annotate the nodes of graphs in GFA with path 51 | positions.") 52 | (home-page "https://github.com/vgteam/xg") 53 | (license license:expat)))) 54 | 55 | -------------------------------------------------------------------------------- /gbwtgraph.scm: -------------------------------------------------------------------------------- 1 | (define-module (gbwtgraph) 2 | #:use-module (guix packages) 3 | #:use-module (guix git-download) 4 | #:use-module (guix build-system cmake) 5 | #:use-module ((guix licenses) #:prefix license:) 6 | #:use-module (gnu packages base) 7 | #:use-module (gnu packages gcc) 8 | #:use-module (gnu packages cmake) 9 | #:use-module (gnu packages version-control) 10 | #:use-module (gnu packages python) 11 | #:use-module (gnu packages python-xyz) 12 | #:use-module (gnu packages wget) 13 | #:use-module (gnu packages curl) 14 | #:use-module (gnu packages bash) 15 | #:use-module (gnu packages compression)) 16 | 17 | (define-public gbwtgraph 18 | (let ((version "0.0.0") 19 | (commit "0d79d48dd6f2b21e065c6925d7d6b7a41d17d4a8") 20 | (package-revision "1")) 21 | (package 22 | (name "gbwtgraph") 23 | (version (string-append version "+" (string-take commit 7) "-" package-revision)) 24 | (source (origin 25 | (method git-fetch) 26 | (uri (git-reference 27 | (url "https://github.com/ekg/gbwtgraph.git") 28 | (commit commit) 29 | (recursive? #t))) 30 | (file-name (git-file-name name version)) 31 | (sha256 32 | (base32 33 | "02db3lpri5pdciqhqza07ymlj6qh5dqhxapjh4r36zy62cva118j")))) 34 | (build-system cmake-build-system) 35 | (arguments 36 | `(#:phases 37 | (modify-phases 38 | %standard-phases 39 | (delete 'check)) 40 | #:make-flags (list "CC=gcc"))) 41 | (native-inputs 42 | `(("cmake" ,cmake) 43 | ("glibc" ,glibc) 44 | ("gcc" ,gcc-9) 45 | ("zlib" ,zlib))) 46 | (synopsis "GBWT-based handle graph for succinct genome graph storage and query") 47 | (description 48 | "The GBWTGraph represents the graph induced by the haplotypes stored 49 | in a GBWT index. It uses the GBWT index for graph topology and stores 50 | the node sequences in plain form for fast extraction.") 51 | (home-page "https://github.com/vgteam/gbwtgraph") 52 | (license license:expat)))) 53 | 54 | -------------------------------------------------------------------------------- /mashmap.scm: -------------------------------------------------------------------------------- 1 | (define-module (mashmap) 2 | #:use-module (guix packages) 3 | #:use-module (guix git-download) 4 | #:use-module (guix build-system gnu) 5 | #:use-module ((guix licenses) #:prefix license:) 6 | #:use-module (gnu packages) 7 | #:use-module (gnu packages base) 8 | #:use-module (gnu packages crypto) 9 | #:use-module (gnu packages gcc) 10 | #:use-module (gnu packages cmake) 11 | #:use-module (gnu packages tls) 12 | #:use-module (gnu packages python) 13 | #:use-module (gnu packages curl) 14 | #:use-module (gnu packages bash) 15 | #:use-module (gnu packages maths) 16 | #:use-module (gnu packages autotools) 17 | #:use-module (gnu packages compression)) 18 | 19 | (define-public mashmap 20 | (let ((version "2.0") 21 | (commit "ea584d75d978cb82bd2508ced516c0fda68e74f4") 22 | (package-revision "1")) 23 | (package 24 | (name "mashmap") 25 | (version (string-append version "+" (string-take commit 7) "-" package-revision)) 26 | (source (origin 27 | (method git-fetch) 28 | (uri (git-reference 29 | (url "https://github.com/ekg/MashMap.git") 30 | (commit commit) 31 | (recursive? #f))) 32 | (file-name (git-file-name name version)) 33 | (sha256 34 | (base32 35 | "0ycvgvx0zgaz6d4y8f6s22kf3bs582cgxf834w28nb2fkprk7xsh")))) 36 | ;(patches (search-patches "mashmap-make-the-aligner-as-well.patch")))) 37 | (build-system gnu-build-system) 38 | (arguments 39 | `(#:make-flags 40 | '("CC=gcc" "CXX=g++") 41 | #:phases 42 | (modify-phases 43 | %standard-phases 44 | (delete 'check)))) 45 | (native-inputs 46 | `(("gsl" ,gsl) 47 | ("autoconf" ,autoconf) 48 | ("zlib" ,zlib))) 49 | (synopsis "A fast approximate aligner for long DNA sequences") 50 | (description "MashMap implements a fast and approximate algorithm for computing local alignment boundaries between long DNA sequences.") 51 | (home-page "https://github.com/marbl/MashMap") 52 | (license license:expat)))) 53 | -------------------------------------------------------------------------------- /gyeet.scm: -------------------------------------------------------------------------------- 1 | (define-module (gyeet) 2 | #:use-module (guix packages) 3 | #:use-module (guix git-download) 4 | #:use-module (guix build-system cmake) 5 | #:use-module ((guix licenses) #:prefix license:) 6 | #:use-module (gnu packages base) 7 | #:use-module (gnu packages gcc) 8 | #:use-module (gnu packages cmake) 9 | #:use-module (gnu packages version-control) 10 | #:use-module (gnu packages python) 11 | #:use-module (gnu packages python-xyz) 12 | #:use-module (gnu packages wget) 13 | #:use-module (gnu packages curl) 14 | #:use-module (gnu packages bash) 15 | #:use-module (gnu packages compression)) 16 | 17 | (define-public gyeet 18 | (let ((version "0.0.0") 19 | (commit "7965dd0a193ac32aa30e2bb079cee3a2b1a43f3b") 20 | (package-revision "1")) 21 | (package 22 | (name "gyeet") 23 | (version (string-append version "+" (string-take commit 7) "-" package-revision)) 24 | (source (origin 25 | (method git-fetch) 26 | (uri (git-reference 27 | (url "https://github.com/ekg/gyeet.git") 28 | (commit commit) 29 | (recursive? #t))) 30 | (file-name (git-file-name name version)) 31 | (sha256 32 | (base32 33 | "1kygg3j733ys1i3rabvmdqxjxiq2qakxfgpz3q9j9gwni4893307")))) 34 | (build-system cmake-build-system) 35 | (arguments 36 | `(#:phases 37 | (modify-phases 38 | %standard-phases 39 | (delete 'check)) 40 | #:make-flags (list "CC=gcc"))) 41 | (native-inputs 42 | `(("cmake" ,cmake) 43 | ("glibc" ,glibc) 44 | ("gcc" ,gcc-9) 45 | ("zlib" ,zlib))) 46 | (synopsis "gyeet sequence to graph hacked mapper") 47 | (description 48 | "gyeet maps sequences to a graph using a linearization trick. Locally, 49 | if the graph is partially ordered, then standard alignment with Myers' 50 | bit-parallel model will result in an approximately correct alignment. 51 | By scoring in graph space, we avoid additional bias from using a linear 52 | model.") 53 | (home-page "https://github.com/ekg/freebayes") 54 | (license license:expat)))) 55 | 56 | -------------------------------------------------------------------------------- /vt.scm: -------------------------------------------------------------------------------- 1 | (define-module (vt) 2 | #:use-module (guix packages) 3 | #:use-module (guix git-download) 4 | #:use-module (guix build-system gnu) 5 | #:use-module ((guix licenses) #:prefix license:) 6 | #:use-module (gnu packages base) 7 | #:use-module (gnu packages crypto) 8 | #:use-module (gnu packages gcc) 9 | #:use-module (gnu packages cmake) 10 | #:use-module (gnu packages tls) 11 | #:use-module (gnu packages python) 12 | #:use-module (gnu packages curl) 13 | #:use-module (gnu packages bash) 14 | #:use-module (gnu packages compression)) 15 | 16 | (define-public vt 17 | (let ((version "0.57721") 18 | (commit "88da43649b5a39ddfc00d8a8f4d494fad50d5eec") 19 | (package-revision "2")) 20 | (package 21 | (name "vt") 22 | (version (string-append version "+" (string-take commit 7) "-" package-revision)) 23 | (source (origin 24 | (method git-fetch) 25 | (uri (git-reference 26 | (url "https://github.com/atks/vt.git") 27 | (commit commit) 28 | (recursive? #f))) 29 | (file-name (git-file-name name version)) 30 | (sha256 31 | (base32 32 | "1bfaaywi487l28vvsz4g501qngqpif6wncrhf3ydbjk91jf4jq99")))) 33 | (build-system gnu-build-system) 34 | (arguments 35 | 36 | `(#:make-flags 37 | '("CC=gcc" "CXX=g++") 38 | #:phases 39 | (modify-phases 40 | %standard-phases 41 | (delete 'configure) 42 | (replace 'install 43 | (lambda* (#:key outputs #:allow-other-keys) 44 | (let ((bin (string-append (assoc-ref outputs "out") "/bin"))) 45 | (install-file "vt" bin)))) 46 | (delete 'check)))) 47 | (native-inputs 48 | `(("curl" ,curl) 49 | ("gcc" ,gcc-9) 50 | ("crypto++" ,crypto++) 51 | ("openssl" ,openssl) 52 | ("zlib" ,zlib))) 53 | (synopsis "A tool set for short variant discovery in genetic sequence data.") 54 | (description "A tool set for short variant discovery in genetic sequence data.") 55 | (home-page "http://genome.sph.umich.edu/wiki/vt" ) 56 | (license license:expat)))) 57 | -------------------------------------------------------------------------------- /mashz.scm: -------------------------------------------------------------------------------- 1 | (define-module (mashz) 2 | #:use-module (guix packages) 3 | #:use-module (guix git-download) 4 | #:use-module (guix build-system cmake) 5 | #:use-module ((guix licenses) #:prefix license:) 6 | #:use-module (gnu packages) 7 | #:use-module (gnu packages base) 8 | #:use-module (gnu packages crypto) 9 | #:use-module (gnu packages gcc) 10 | #:use-module (gnu packages cmake) 11 | #:use-module (gnu packages tls) 12 | #:use-module (gnu packages python) 13 | #:use-module (gnu packages curl) 14 | #:use-module (gnu packages bash) 15 | #:use-module (gnu packages maths) 16 | #:use-module (gnu packages autotools) 17 | #:use-module (gnu packages compression)) 18 | 19 | (define-public mashz 20 | (let ((version "0.0.1") 21 | (commit "085e43da5aaad2e62708758311d465048c9c423c") 22 | (package-revision "1")) 23 | (package 24 | (name "mashz") 25 | (version (string-append version "+" (string-take commit 7) "-" package-revision)) 26 | (source (origin 27 | (method git-fetch) 28 | (uri (git-reference 29 | (url "https://github.com/urbanslug/mashz.git") 30 | (commit commit) 31 | (recursive? #f))) 32 | (file-name (git-file-name name version)) 33 | (sha256 34 | (base32 35 | "0z6j20rd9bbp9xwxwmnvn3zsmrm428s0hrcdkzbfyv98s678x85l")))) 36 | (build-system cmake-build-system) 37 | (arguments 38 | `(#:phases 39 | (modify-phases 40 | %standard-phases 41 | (delete 'check)) 42 | ;;#:configure-flags '("-DBUILD_TESTING=false") 43 | #:make-flags (list "CC=gcc CXX=g++"))) 44 | (native-inputs 45 | `(("cmake" ,cmake) 46 | ("gsl" ,gsl) 47 | ("gcc" ,gcc-10) 48 | ("zlib" ,zlib))) 49 | (synopsis "base-accurate DNA sequence alignments using lastz and mashmap2") 50 | (description "mashz uses mashmap to perform approximate matching to somewhat roughly identify similar regions and then runs lastz over these regions to performs base level alignment and get a more accurate alignment.") 51 | (home-page "https://github.com/urbanslug/mashz") 52 | (license license:expat)))) 53 | -------------------------------------------------------------------------------- /odgi.scm: -------------------------------------------------------------------------------- 1 | (define-module (odgi) 2 | #:use-module (guix packages) 3 | #:use-module (guix git-download) 4 | #:use-module (guix build-system cmake) 5 | #:use-module ((guix licenses) #:prefix license:) 6 | #:use-module (guix utils) 7 | #:use-module (gnu packages gcc) 8 | #:use-module (gnu packages pkg-config) 9 | #:use-module (gnu packages jemalloc) 10 | #:use-module (gnu packages python)) 11 | 12 | (define-public odgi 13 | (let ((version "0.8.3") 14 | (commit "d55a6aa4ba83472a094c9cf57101413eb7cf7862") 15 | (package-revision "3")) 16 | (package 17 | (name "odgi") 18 | (version (string-append version "+" (string-take commit 7) "-" package-revision)) 19 | (source (origin 20 | (method git-fetch) 21 | (uri (git-reference 22 | (url "https://github.com/vgteam/odgi.git") 23 | (commit commit) 24 | (recursive? #t))) 25 | (file-name (git-file-name name version)) 26 | (sha256 27 | (base32 28 | "0mmw7qhcba1g4d52hwx69fcrarc25dmzk1dzjj55n3dj67qbwyav")))) 29 | (build-system cmake-build-system) 30 | (arguments 31 | `(#:phases 32 | (modify-phases 33 | %standard-phases 34 | ;; This stashes our build version in the executable 35 | (add-after 'unpack 'set-version 36 | (lambda _ 37 | (mkdir "include") 38 | (with-output-to-file "include/odgi_git_version.hpp" 39 | (lambda () 40 | (format #t "#define ODGI_GIT_VERSION \"~a\"~%" version))) 41 | #t)) 42 | (delete 'check)) 43 | #:make-flags (list ,(string-append "CC=" (cc-for-target))))) 44 | (native-inputs 45 | `(("python" ,python) 46 | ("jemalloc" ,jemalloc) 47 | ("pkg-config" ,pkg-config) 48 | ("gcc" ,gcc-11))) 49 | (synopsis "odgi optimized dynamic sequence graph implementation") 50 | (description 51 | "odgi provides an efficient, succinct dynamic DNA sequence graph model, as well 52 | as a host of algorithms that allow the use of such graphs in bioinformatic 53 | analyses.") 54 | (home-page "https://github.com/vgteam/odgi") 55 | (license license:expat)))) 56 | 57 | -------------------------------------------------------------------------------- /maffer.scm: -------------------------------------------------------------------------------- 1 | (define-module (maffer) 2 | #:use-module (guix packages) 3 | #:use-module (guix git-download) 4 | #:use-module (guix build-system cmake) 5 | #:use-module ((guix licenses) #:prefix license:) 6 | #:use-module (gnu packages base) 7 | #:use-module (gnu packages gcc) 8 | #:use-module (gnu packages cmake) 9 | #:use-module (gnu packages version-control) 10 | #:use-module (gnu packages python) 11 | #:use-module (gnu packages python-xyz) 12 | #:use-module (gnu packages wget) 13 | #:use-module (gnu packages curl) 14 | #:use-module (gnu packages bash) 15 | #:use-module (gnu packages compression)) 16 | 17 | (define-public maffer 18 | (let ((version "0.1.1") 19 | (commit "69efa1fdf78ba47d70f1bce58e1f23cb64dd1554") 20 | (package-revision "1")) 21 | (package 22 | (name "maffer") 23 | (version (string-append version "+" (string-take commit 7) "-" package-revision)) 24 | (source (origin 25 | (method git-fetch) 26 | (uri (git-reference 27 | (url "https://github.com/pangenome/maffer.git") 28 | (commit commit) 29 | (recursive? #t))) 30 | (file-name (git-file-name name version)) 31 | (sha256 32 | (base32 33 | "12kbw0mvrjj1xfhffvj1myjbb7c9p166fjqdzry5livvr0d7rywx")))) 34 | (build-system cmake-build-system) 35 | (arguments 36 | `(#:phases 37 | (modify-phases 38 | %standard-phases 39 | (delete 'check)) 40 | #:make-flags (list "CC=gcc"))) 41 | (native-inputs 42 | `(("cmake" ,cmake) 43 | ("glibc" ,glibc) 44 | ("gcc" ,gcc-9) 45 | ("zlib" ,zlib))) 46 | (synopsis "extract MSAs from genome variation graphs") 47 | (description 48 | "This tool projects between pangenomic variation graphs stored in 49 | GFAv1, which can be used to encode whole genome alignments, and the 50 | multiple alignment format MAF, which represents only the linearizable 51 | components of such an alignment graph. Its goal is to allow tools like 52 | seqwish, which efficiently construct whole genome alignment graphs 53 | from collections of sequences and pairwise alignments between them, to 54 | be applied to comparative genomics problems.") 55 | (home-page "https://github.com/pangenome/maffer") 56 | (license license:expat)))) 57 | 58 | -------------------------------------------------------------------------------- /gimbricate.scm: -------------------------------------------------------------------------------- 1 | (define-module (gimbricate) 2 | #:use-module (guix packages) 3 | #:use-module (guix git-download) 4 | #:use-module (guix build-system cmake) 5 | #:use-module ((guix licenses) #:prefix license:) 6 | #:use-module (gnu packages base) 7 | #:use-module (gnu packages gcc) 8 | #:use-module (gnu packages cmake) 9 | #:use-module (gnu packages python) 10 | #:use-module (gnu packages wget) 11 | #:use-module (gnu packages bash) 12 | #:use-module (gnu packages compression)) 13 | 14 | (define-public gimbricate 15 | (let ((version "0.1.0") 16 | (commit "849a7fb1360e7b1e09d361d65f3f9f1316f33875") 17 | (package-revision "2")) 18 | (package 19 | (name "gimbricate") 20 | (version (string-append version "+" (string-take commit 7) "-" package-revision)) 21 | (source (origin 22 | (method git-fetch) 23 | (uri (git-reference 24 | (url "https://github.com/ekg/gimbricate.git") 25 | (commit commit) 26 | (recursive? #t))) 27 | (file-name (git-file-name name version)) 28 | (sha256 29 | (base32 30 | "1skmncd9aan7ffv7fxzzs93dhgjj1hmn8z994m5sqrwsafzd20rm")))) 31 | (build-system cmake-build-system) 32 | (arguments 33 | `(#:phases 34 | (modify-phases 35 | %standard-phases 36 | (delete 'check)))) 37 | (native-inputs 38 | `(("gcc" ,gcc-9) 39 | ("cmake" ,cmake) 40 | ("zlib" ,zlib))) 41 | (synopsis "Corrects the overlaps in DNA sequence graphs by realigning sequence ends.") 42 | (description 43 | "Almost no overlap-based assembly methods produce correct GFAv1 44 | output. Invariably, some overlaps are incorrectly defined. (The major exception 45 | to this are De Bruijn assemblers, which have fixed length overlaps that are 46 | correct by definition.) In some methods (like shasta), the overlaps are 47 | systematically slightly wrong, due to their derivation from run length encoded 48 | sequences. It can help to correct these, because it lets us \"bluntify\" the 49 | graph. This produces a graph in which each base in the graph exists on only one 50 | node, which is a desirable property for variation graph and other pangenomic 51 | reference models") 52 | (home-page "https://github.com/ekg/freebayes") 53 | (license license:expat)))) 54 | -------------------------------------------------------------------------------- /edyeet.scm: -------------------------------------------------------------------------------- 1 | (define-module (edyeet) 2 | #:use-module (guix packages) 3 | #:use-module (guix git-download) 4 | #:use-module (guix build-system cmake) 5 | #:use-module ((guix licenses) #:prefix license:) 6 | #:use-module (gnu packages) 7 | #:use-module (gnu packages base) 8 | #:use-module (gnu packages crypto) 9 | #:use-module (gnu packages gcc) 10 | #:use-module (gnu packages cmake) 11 | #:use-module (gnu packages tls) 12 | #:use-module (gnu packages python) 13 | #:use-module (gnu packages curl) 14 | #:use-module (gnu packages bash) 15 | #:use-module (gnu packages maths) 16 | #:use-module (gnu packages autotools) 17 | #:use-module (gnu packages compression)) 18 | 19 | (define-public edyeet 20 | (let ((version "0.3.0") 21 | (commit "776a0c82e7ebf9ea7def055d12e19d6bb0aa5383") 22 | (package-revision "2")) 23 | (package 24 | (name "edyeet") 25 | (version (string-append version "+" (string-take commit 7) "-" package-revision)) 26 | (source (origin 27 | (method git-fetch) 28 | (uri (git-reference 29 | (url "https://github.com/ekg/edyeet.git") 30 | (commit commit) 31 | (recursive? #f))) 32 | (file-name (git-file-name name version)) 33 | (sha256 34 | (base32 35 | "0pxpfjplf78l1nv73lnfbz78rshwbjv4cadd8aazgw1cxhwzb7a6")))) 36 | (build-system cmake-build-system) 37 | (arguments 38 | `(#:phases 39 | (modify-phases 40 | %standard-phases 41 | (delete 'check)) 42 | ;;#:configure-flags '("-DBUILD_TESTING=false") 43 | #:make-flags (list "CC=gcc CXX=g++"))) 44 | (native-inputs 45 | `(("cmake" ,cmake) 46 | ("gsl" ,gsl) 47 | ("gcc" ,gcc-10) 48 | ("zlib" ,zlib))) 49 | (synopsis "base-accurate DNA sequence alignments using edlib and mashmap2") 50 | (description "edyeet is a fork of MashMap that implements 51 | base-level alignment using edlib. It completes an alignment module in 52 | MashMap and extends it to enable multithreaded operation. A single 53 | command-line interface simplfies usage. The PAF output format is 54 | harmonized and made equivalent to that in minimap2, and has been 55 | validated as input to seqwish.") 56 | (home-page "https://github.com/ekg/edyeet") 57 | (license license:expat)))) 58 | -------------------------------------------------------------------------------- /seqwish.scm: -------------------------------------------------------------------------------- 1 | (define-module (seqwish) 2 | #:use-module (guix packages) 3 | #:use-module (guix git-download) 4 | #:use-module (guix build-system cmake) 5 | #:use-module ((guix licenses) #:prefix license:) 6 | #:use-module (gnu packages gcc) 7 | #:use-module (gnu packages jemalloc) 8 | #:use-module (gnu packages compression)) 9 | 10 | (define-public seqwish 11 | (let ((version "0.7.6") 12 | (commit "f44b402f0c2e02988d431d9b2e5eba9727cf93a9") 13 | (package-revision "1")) 14 | (package 15 | (name "seqwish") 16 | (version (string-append version "+" (string-take commit 7) "-" package-revision)) 17 | (source (origin 18 | (method git-fetch) 19 | (uri (git-reference 20 | (url "https://github.com/ekg/seqwish.git") 21 | (commit commit) 22 | (recursive? #t))) 23 | (file-name (git-file-name name version)) 24 | (sha256 25 | (base32 26 | "1m3zkzyjmg08ip42s8abw111fxdz19zmiy5v4f886lbh447n4iy4")))) 27 | (build-system cmake-build-system) 28 | (arguments 29 | `(#:tests? #f 30 | #:phases 31 | (modify-phases 32 | %standard-phases 33 | ;; This stashes our build version in the executable 34 | (add-after 'unpack 'set-version 35 | (lambda _ 36 | (mkdir "include") 37 | (with-output-to-file "include/seqwish_git_version.hpp" 38 | (lambda () 39 | (format #t "#define SEQWISH_GIT_VERSION \"~a\"~%" version))) 40 | #t)) 41 | (delete 'check)) 42 | )) 43 | (inputs 44 | `(("gcc" ,gcc-11) 45 | ("jemalloc" ,jemalloc) 46 | ("zlib" ,zlib))) 47 | (synopsis "variation graph inducer") 48 | (description 49 | "seqwish implements a lossless conversion from pairwise alignments between 50 | sequences to a variation graph encoding the sequences and their alignments. As 51 | input we typically take all-versus-all alignments, but the exact structure of 52 | the alignment set may be defined in an application specific way. This algorithm 53 | uses a series of disk-backed sorts and passes over the alignment and sequence 54 | inputs to allow the graph to be constructed from very large inputs that are 55 | commonly encountered when working with large numbers of noisy input sequences.") 56 | (home-page "https://github.com/ekg/freebayes") 57 | (license license:expat)))) 58 | -------------------------------------------------------------------------------- /mmseqs2.scm: -------------------------------------------------------------------------------- 1 | (define-module (mmseqs2) 2 | #:use-module (guix packages) 3 | #:use-module (guix git-download) 4 | #:use-module (guix build-system cmake) 5 | #:use-module ((guix licenses) #:prefix license:) 6 | #:use-module (gnu packages base) 7 | #:use-module (gnu packages gcc) 8 | #:use-module (gnu packages cmake) 9 | #:use-module (gnu packages version-control) 10 | #:use-module (gnu packages python) 11 | #:use-module (gnu packages python-xyz) 12 | #:use-module (gnu packages wget) 13 | #:use-module (gnu packages curl) 14 | #:use-module (gnu packages bash) 15 | #:use-module (gnu packages vim) 16 | #:use-module (gnu packages compression)) 17 | 18 | (define-public mmseqs2 19 | (let ((version "11") 20 | (commit "290668474611312a94a868bf041b38c8618f5ef6") 21 | (package-revision "1")) 22 | (package 23 | (name "mmseqs2") 24 | (version (string-append version "+" (string-take commit 7) "-" package-revision)) 25 | (source (origin 26 | (method git-fetch) 27 | (uri (git-reference 28 | (url "https://github.com/soedinglab/MMseqs2.git") 29 | (commit commit) 30 | (recursive? #f))) 31 | (file-name (git-file-name name version)) 32 | (sha256 33 | (base32 34 | "17yw20k585ywdr8ii3n7gmsgrclwl8fq9a374s5h16b4jfjscy3w")))) 35 | (build-system cmake-build-system) 36 | (arguments 37 | `(#:phases 38 | (modify-phases 39 | %standard-phases 40 | (delete 'check)) 41 | #:configure-flags '("-DCMAKE_BUILD_TYPE=Release"))) 42 | (native-inputs 43 | `(("cmake" ,cmake) 44 | ("glibc" ,glibc) 45 | ("gcc" ,gcc-9) 46 | ("zlib" ,zlib) 47 | ("xxd" ,xxd))) 48 | (synopsis "ultra fast and sensitive search and clustering suite") 49 | (description 50 | "MMseqs2 (Many-against-Many sequence searching) is a software suite to 51 | search and cluster huge protein and nucleotide sequence sets. MMseqs2 52 | is open source GPL-licensed software implemented in C++ for Linux, 53 | MacOS, and (as beta version, via cygwin) Windows. The software is 54 | designed to run on multiple cores and servers and exhibits very good 55 | scalability. MMseqs2 can run 10000 times faster than BLAST. At 100 56 | times its speed it achieves almost the same sensitivity. It can 57 | perform profile searches with the same sensitivity as PSI-BLAST at 58 | over 400 times its speed.") 59 | (home-page "https://mmseqs.com/") 60 | (license license:gpl3+)))) 61 | 62 | -------------------------------------------------------------------------------- /freebayes.scm: -------------------------------------------------------------------------------- 1 | (define-module (freebayes) 2 | #:use-module (guix packages) 3 | #:use-module (guix git-download) 4 | #:use-module (guix build-system cmake) 5 | #:use-module ((guix licenses) #:prefix license:) 6 | #:use-module (gnu packages base) 7 | #:use-module (gnu packages gcc) 8 | #:use-module (gnu packages cmake) 9 | #:use-module (gnu packages python) 10 | #:use-module (gnu packages wget) 11 | #:use-module (gnu packages bash) 12 | #:use-module (gnu packages compression)) 13 | 14 | (define-public freebayes 15 | (let ((version "1.3.2") 16 | (commit "71a3e1c5eb8083a6f4205b65918323251162634a") 17 | (package-revision "2")) 18 | (package 19 | (name "freebayes") 20 | (version (string-append version "+" (string-take commit 7) "-" package-revision)) 21 | (source (origin 22 | (method git-fetch) 23 | (uri (git-reference 24 | (url "https://github.com/ekg/freebayes.git") 25 | (commit commit) 26 | (recursive? #t))) 27 | (file-name (git-file-name name version)) 28 | (sha256 29 | (base32 30 | "1nhclcpaa0jz95kvd1dl2gvc14ilaq5qmbmhnd0qg6wmbgm8brdb")))) 31 | (build-system cmake-build-system) 32 | (arguments 33 | `(#:phases 34 | (modify-phases 35 | %standard-phases 36 | ;; Setting the SHELL environment variable is required by SeqLib's configure script 37 | (add-after 'unpack 'set-shell 38 | (lambda _ 39 | (setenv "CONFIG_SHELL" (which "sh")) 40 | #t)) 41 | ;; This stashes our build version in the executable 42 | (add-after 'unpack 'set-version 43 | (lambda _ 44 | (substitute* "src/version_release.txt" (("v1.0.0") ,version)) 45 | #t)) 46 | (delete 'check)))) 47 | (native-inputs 48 | `(("wget" ,wget) 49 | ("gcc" ,gcc-9) 50 | ("cmake" ,cmake) 51 | ("zlib" ,zlib))) 52 | (synopsis "freebayes haplotype-based genetic variant caller") 53 | (description 54 | "freebayes is a Bayesian genetic variant detector designed to find small 55 | polymorphisms, specifically SNPs (single-nucleotide polymorphisms), indels 56 | (insertions and deletions), MNPs (multi-nucleotide polymorphisms), and complex 57 | events (composite insertion and substitution events) smaller than the length of 58 | a short-read sequencing alignment.") 59 | (home-page "https://github.com/ekg/freebayes") 60 | (license license:expat)))) 61 | -------------------------------------------------------------------------------- /paf2dot.scm: -------------------------------------------------------------------------------- 1 | (define-module (paf2dot) 2 | #:use-module (guix packages) 3 | #:use-module (guix git-download) 4 | #:use-module (guix build-system trivial) 5 | #:use-module ((guix licenses) #:prefix license:) 6 | #:use-module (gnu packages) 7 | #:use-module (gnu packages guile) 8 | #:use-module (gnu packages maths) 9 | #:use-module (gnu packages perl) 10 | #:use-module (gnu packages xdisorg)) 11 | 12 | (define-public paf2dot 13 | (let ((version "0.0.0") 14 | (commit "a0896418bcfd4b373337f60349ed48665967f974") 15 | (package-revision "1")) 16 | (package 17 | (name "paf2dot") 18 | (version (string-append version "+" (string-take commit 7) "-" package-revision)) 19 | (source (origin 20 | (method git-fetch) 21 | (uri (git-reference 22 | (url "https://github.com/pangenome/paf2dot.git") 23 | (commit commit))) 24 | (file-name (git-file-name name version)) 25 | (sha256 26 | (base32 27 | "0zr5jv4wjy35bk97hrcvwvi94d4cnvh5mr5230nz56ni6dgz02ic")))) 28 | (build-system trivial-build-system) 29 | (arguments 30 | `(#:modules ((guix build utils)) 31 | #:builder 32 | (begin 33 | (use-modules (guix build utils)) 34 | (let* ((out (assoc-ref %outputs "out")) 35 | (bin (string-append out "/bin")) 36 | (doc (string-append out "/share/doc/" ,name "-" ,version)) 37 | (perl (string-append (assoc-ref %build-inputs "perl") "/bin"))) 38 | (install-file (string-append (assoc-ref %build-inputs "source") "/paf2dot") bin) 39 | (install-file (string-append (assoc-ref %build-inputs "source") "/README.md") doc) 40 | (patch-shebang (string-append bin "/paf2dot") (list perl)) 41 | (wrap-script (string-append out "/bin/paf2dot") 42 | #:guile (string-append (assoc-ref %build-inputs "guile") "/bin/guile") 43 | `("PATH" ":" prefix (,(string-append (assoc-ref %build-inputs "gnuplot") "/bin") 44 | ,(string-append (assoc-ref %build-inputs "xclip") "/bin")))) 45 | #t)))) 46 | (inputs 47 | `(("gnuplot" ,gnuplot) 48 | ("guile" ,guile-3.0) 49 | ("perl" ,perl) 50 | ("xclip" ,xclip))) 51 | (synopsis "visualize alignments in PAF format using gnuplot") 52 | (description "Use gnuplot to generate a dotplot from sequence 53 | alignments in PAF format. Only the alignment / mapping start and end 54 | are plotted.") 55 | (home-page "https://github.com/pangenome/paf2dot") 56 | (license license:expat)))) 57 | -------------------------------------------------------------------------------- /wfmash.scm: -------------------------------------------------------------------------------- 1 | (define-module (wfmash) 2 | #:use-module (guix utils) 3 | #:use-module (guix packages) 4 | #:use-module (guix git-download) 5 | #:use-module (guix build-system cmake) 6 | #:use-module (gnu packages pkg-config) 7 | #:use-module (gnu packages base) 8 | #:use-module ((guix licenses) #:prefix license:) 9 | #:use-module (gnu packages) 10 | #:use-module (gnu packages compression) 11 | #:use-module (gnu packages gcc) 12 | #:use-module (gnu packages jemalloc) 13 | #:use-module (gnu packages version-control) 14 | #:use-module (gnu packages bioinformatics) 15 | #:use-module (gnu packages multiprecision) 16 | #:use-module (gnu packages maths)) 17 | 18 | (define-public wfmash 19 | (let ((version "0.12.5") 20 | (commit "0222f7c957fe03013b2a0c64684474c4ec4d9afb") 21 | (package-revision "1")) 22 | (package 23 | (name "wfmash") 24 | (version (string-append version "-" package-revision "+" (string-take commit 7))) 25 | (source (origin 26 | (method git-fetch) 27 | (uri (git-reference 28 | (url "https://github.com/waveygang/wfmash.git") 29 | (commit commit) 30 | (recursive? #f))) 31 | (file-name (git-file-name name version)) 32 | (sha256 33 | (base32 34 | "1xc9xmzyy7zy5dbqkj70i7xfpaqjpk0jyi2mn7dbkb5yldmw394z")))) 35 | (build-system cmake-build-system) 36 | (arguments 37 | `(#:phases 38 | (modify-phases 39 | %standard-phases 40 | ;; This stashes our build version in the executable 41 | (add-after 'unpack 'set-version 42 | (lambda _ 43 | (mkdir "include") 44 | (with-output-to-file "include/wfmash_git_version.hpp" 45 | (lambda () 46 | (format #t "#define WFMASH_GIT_VERSION \"~a\"~%" version))) 47 | #t)) 48 | (delete 'check)) 49 | #:make-flags (list (string-append "CC=" ,(cc-for-target)) 50 | (string-append "CXX=" ,(cxx-for-target))))) 51 | (inputs 52 | `(("gcc" ,gcc-12) 53 | ("gsl" ,gsl) 54 | ("gmp" ,gmp) 55 | ("make" ,gnu-make) 56 | ("pkg-config" ,pkg-config) 57 | ("jemalloc" ,jemalloc) 58 | ("htslib" ,htslib) 59 | ("git" ,git) 60 | ("zlib" ,zlib))) 61 | (synopsis "base-accurate DNA sequence alignments using WFA and mashmap2") 62 | (description "wfmash is a fork of MashMap that implements 63 | base-level alignment using the wavefront alignment algorithm WFA. It 64 | completes an alignment module in MashMap and extends it to enable 65 | multithreaded operation. A single command-line interface simplfies 66 | usage. The PAF output format is harmonized and made equivalent to that 67 | in minimap2, and has been validated as input to seqwish.") 68 | (home-page "https://github.com/ekg/wfmash") 69 | (license license:expat)))) 70 | -------------------------------------------------------------------------------- /vcflib.scm: -------------------------------------------------------------------------------- 1 | (define-module (vcflib) 2 | #:use-module (guix packages) 3 | #:use-module (guix git-download) 4 | #:use-module (guix build-system cmake) 5 | #:use-module ((guix licenses) #:prefix license:) 6 | #:use-module (gnu packages base) 7 | #:use-module (gnu packages gcc) 8 | #:use-module (gnu packages cmake) 9 | #:use-module (gnu packages python) 10 | #:use-module (gnu packages wget) 11 | #:use-module (gnu packages bash) 12 | #:use-module (gnu packages algebra) 13 | #:use-module (gnu packages base) 14 | #:use-module (gnu packages compression) 15 | #:use-module (gnu packages bioinformatics) 16 | #:use-module (gnu packages build-tools) 17 | #:use-module (gnu packages curl) 18 | #:use-module (gnu packages gcc) 19 | #:use-module (gnu packages gdb) 20 | #:use-module (gnu packages haskell-xyz) 21 | #:use-module (gnu packages llvm) 22 | #:use-module (gnu packages python) 23 | #:use-module (gnu packages python-xyz) 24 | #:use-module (gnu packages parallel) 25 | #:use-module (gnu packages perl) 26 | #:use-module (gnu packages perl6) 27 | #:use-module (gnu packages pkg-config) 28 | #:use-module (gnu packages ruby) 29 | #:use-module (gnu packages compression)) 30 | 31 | (define-public vcflib-dev 32 | (let ((version "1.0.3") 33 | (commit "fdcdaadc2f94332e1d26afa765444b6ae0a57e05") 34 | (package-revision "10")) 35 | (package 36 | (name "vcflib") 37 | (version (string-append version "+" (string-take commit 7) "-" package-revision)) 38 | (source (origin 39 | (method git-fetch) 40 | (uri (git-reference 41 | (url "https://github.com/vcflib/vcflib.git") 42 | (commit commit) 43 | (recursive? #t))) 44 | (file-name (git-file-name name version)) 45 | (sha256 46 | (base32 47 | "1v1671v9qf839ngi953swgc8hs87bfdk34lgh1ky0v4m8zh06p9w")))) 48 | (build-system cmake-build-system) 49 | (arguments 50 | `(#:phases 51 | (modify-phases 52 | %standard-phases 53 | ;; Setting the SHELL environment variable is required by SeqLib's configure script 54 | (add-after 'unpack 'set-shell 55 | (lambda _ 56 | (setenv "CONFIG_SHELL" (which "sh")) 57 | #t)) 58 | (delete 'check)) 59 | #:make-flags (list "CC=gcc"))) 60 | (inputs 61 | `(("curl" ,curl) 62 | ("fastahack" ,fastahack) 63 | ("gcc" ,gcc-11) 64 | ("gdb" ,gdb) 65 | ("htslib" ,htslib) 66 | ("pandoc" ,pandoc) 67 | ("perl" ,perl) 68 | ("python" ,python) 69 | ("pybind11" ,pybind11) 70 | ("ruby" ,ruby) 71 | ("tabixpp" ,tabixpp) 72 | ("xz" ,xz) 73 | ("zlib" ,zlib))) 74 | (native-inputs 75 | `(("pkg-config" ,pkg-config))) 76 | (synopsis "vcflib variant call file (VCF) manipulation and analysis") 77 | (description 78 | "vcflib provides methods to manipulate and interpret sequence variation as it 79 | can be described by VCF. It is both: an API for parsing and operating on 80 | records of genomic variation as it can be described by the VCF format, and a 81 | collection of command-line utilities for executing complex manipulations on VCF 82 | files.") 83 | (home-page "https://github.com/vcflib/vcflib") 84 | (license license:expat)))) 85 | -------------------------------------------------------------------------------- /smoothxg.scm: -------------------------------------------------------------------------------- 1 | (define-module (smoothxg) 2 | #:use-module (guix utils) 3 | #:use-module (guix packages) 4 | #:use-module (guix git-download) 5 | #:use-module (guix build-system cmake) 6 | #:use-module ((guix licenses) #:prefix license:) 7 | #:use-module (gnu packages compression) 8 | #:use-module (gnu packages gcc) 9 | #:use-module (gnu packages pkg-config) 10 | #:use-module (gnu packages jemalloc) 11 | #:use-module (gnu packages python) 12 | #:use-module (gnu packages python-xyz) 13 | #:use-module (gnu packages version-control)) 14 | 15 | (define-public smoothxg 16 | (let ((version "0.6.8") 17 | (commit "aaa0b283e13ca57c4e6e4e67a03451925f5342f1") 18 | (package-revision "1")) 19 | (package 20 | (name "smoothxg") 21 | (version (string-append version "+" (string-take commit 7) "-" package-revision)) 22 | (source (origin 23 | (method git-fetch) 24 | (uri (git-reference 25 | (url "https://github.com/ekg/smoothxg.git") 26 | (commit commit) 27 | (recursive? #t))) 28 | (file-name (git-file-name name version)) 29 | (sha256 30 | (base32 31 | "1xlms668y740hy6bn656rzhp53y87pwy09zlbk07d9dbmn67f1vk")))) 32 | (build-system cmake-build-system) 33 | (arguments 34 | `(#:phases 35 | (modify-phases 36 | %standard-phases 37 | ;; This stashes our build version in the executable 38 | (add-after 'unpack 'set-version 39 | (lambda _ 40 | (mkdir "include") 41 | (with-output-to-file "include/smoothxg_git_version.hpp" 42 | (lambda () 43 | (format #t "#define SMOOTHXG_GIT_VERSION \"~a\"~%" version))) 44 | #t)) 45 | (delete 'check)) 46 | #:make-flags (list ,(string-append "CC=" (cc-for-target))))) 47 | (native-inputs 48 | `(("pybind11" ,pybind11) 49 | ("python" ,python))) 50 | (inputs 51 | `(("gcc" ,gcc-11) 52 | ("jemalloc" ,jemalloc) 53 | ("pkg-config" ,pkg-config) 54 | ("zlib" ,zlib) 55 | ("zstd" ,zstd "lib"))) 56 | (synopsis "linearize and simplify variation graphs using blocked partial order alignment") 57 | (description 58 | "Pangenome graphs built from raw sets of alignments may have complex 59 | local structures generated by common patterns of genome 60 | variation. These local nonlinearities can introduce difficulty in 61 | downstream analyses, visualization, and interpretation of variation 62 | graphs. 63 | 64 | smoothxg finds blocks of paths that are collinear within a variation 65 | graph. It applies partial order alignment to each block, yielding an 66 | acyclic variation graph. Then, to yield a smoothed graph, it walks 67 | the original paths to lace these subgraphs together. The resulting 68 | graph only contains cyclic or inverting structures larger than the 69 | chosen block size, and is otherwise manifold linear. In addition to 70 | providing a linear structure to the graph, smoothxg can be used to 71 | extract the consensus pangenome graph by applying the heaviest bundle 72 | algorithm to each chain. 73 | 74 | To find blocks, smoothxg applies a greedy algorithm that assumes that 75 | the graph nodes are sorted according to their occurence in the graph's 76 | embedded paths. The path-guided stochastic gradient descent based 1D 77 | sort implemented in odgi sort -Y is designed to provide this kind of 78 | sort.") 79 | (home-page "https://github.com/ekg/smoothxg") 80 | (license license:expat)))) 81 | 82 | -------------------------------------------------------------------------------- /shasta-make-install-target-configurable.patch: -------------------------------------------------------------------------------- 1 | diff --git a/CMakeLists.txt b/CMakeLists.txt 2 | index 288833f..6e1a449 100644 3 | --- a/CMakeLists.txt 4 | +++ b/CMakeLists.txt 5 | @@ -117,18 +117,15 @@ endif(BUILD_DYNAMIC_EXECUTABLE) 6 | 7 | 8 | 9 | -# Install to the shasta-install directory. 10 | -set(CMAKE_INSTALL_PREFIX .) 11 | - 12 | # Install the scripts. 13 | file(GLOB SCRIPTS scripts/*.py scripts/*.sh) 14 | -install(PROGRAMS ${SCRIPTS} DESTINATION shasta-install/bin) 15 | +install(PROGRAMS ${SCRIPTS} DESTINATION share/shasta/scripts) 16 | 17 | # Install the configuration files. 18 | -install(DIRECTORY conf DESTINATION shasta-install USE_SOURCE_PERMISSIONS) 19 | +install(DIRECTORY conf DESTINATION share/shasta USE_SOURCE_PERMISSIONS) 20 | 21 | # Install the docs directory. 22 | -install(DIRECTORY docs DESTINATION shasta-install) 23 | +install(DIRECTORY docs DESTINATION share/shasta) 24 | 25 | # The targets built in each subdirectory are 26 | # installed by the cmake file of each subdirectory. 27 | diff --git a/dynamicExecutable/CMakeLists.txt b/dynamicExecutable/CMakeLists.txt 28 | index f3ecb18..0afb7dd 100644 29 | --- a/dynamicExecutable/CMakeLists.txt 30 | +++ b/dynamicExecutable/CMakeLists.txt 31 | @@ -80,10 +80,10 @@ if(BUILD_DEBUG) 32 | endif(BUILD_DEBUG) 33 | 34 | # Install the dynamic executable into the bin directory. 35 | -install(TARGETS shastaDynamicExecutable DESTINATION shasta-install/bin) 36 | +install(TARGETS shastaDynamicExecutable DESTINATION bin) 37 | 38 | # When install is complete, create the AppImage. 39 | if(BUILD_APPIMAGE) 40 | -install(CODE "execute_process(COMMAND ${CMAKE_SOURCE_DIR}/AppImage/CreateAppImage.py shasta-install)") 41 | +install(CODE "execute_process(COMMAND ${CMAKE_SOURCE_DIR}/AppImage/CreateAppImage.py share/shasta/appimage)") 42 | endif(BUILD_APPIMAGE) 43 | 44 | diff --git a/dynamicLibrary/CMakeLists.txt b/dynamicLibrary/CMakeLists.txt 45 | index c143d07..fc0b141 100644 46 | --- a/dynamicLibrary/CMakeLists.txt 47 | +++ b/dynamicLibrary/CMakeLists.txt 48 | @@ -88,8 +88,8 @@ target_link_libraries( 49 | shastaDynamicLibrary 50 | atomic png boost_program_options pthread z spoa ${SHASTA_PYTHON_LIBRARIES}) 51 | 52 | -# Install the shared library into the bin directory. 53 | -install(TARGETS shastaDynamicLibrary DESTINATION shasta-install/bin) 54 | +# Install the shared library into the lib directory. 55 | +install(TARGETS shastaDynamicLibrary DESTINATION lib) 56 | 57 | 58 | 59 | diff --git a/staticExecutable/CMakeLists.txt b/staticExecutable/CMakeLists.txt 60 | index e811e82..46c0653 100644 61 | --- a/staticExecutable/CMakeLists.txt 62 | +++ b/staticExecutable/CMakeLists.txt 63 | @@ -101,7 +101,7 @@ if(NOT MACOS) 64 | SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++ -static-libgcc") 65 | endif(NOT MACOS) 66 | 67 | -# The static executable goes to the bin directory. 68 | -install(TARGETS shastaStaticExecutable DESTINATION shasta-install/bin) 69 | +# The static executable goes to the lib directory. 70 | +install(TARGETS shastaStaticExecutable DESTINATION bin) 71 | 72 | 73 | diff --git a/staticLibrary/CMakeLists.txt b/staticLibrary/CMakeLists.txt 74 | index 004bc3e..e88389b 100644 75 | --- a/staticLibrary/CMakeLists.txt 76 | +++ b/staticLibrary/CMakeLists.txt 77 | @@ -66,8 +66,8 @@ set_target_properties(shastaStaticLibrary PROPERTIES OUTPUT_NAME "shasta") 78 | set_target_properties(shastaStaticLibrary PROPERTIES PREFIX "") 79 | set_target_properties(shastaStaticLibrary PROPERTIES DEFINE_SYMBOL "") 80 | 81 | -# Install the static library into the bin directory. 82 | -install(TARGETS shastaStaticLibrary DESTINATION shasta-install/bin) 83 | +# Install the static library into the lib directory. 84 | +install(TARGETS shastaStaticLibrary DESTINATION lib) 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /pggb.scm: -------------------------------------------------------------------------------- 1 | (define-module (pggb) 2 | #:use-module (guix packages) 3 | #:use-module (guix git-download) 4 | #:use-module (guix build-system trivial) 5 | ;#:use-module (gfaffix) 6 | #:use-module (seqwish) 7 | #:use-module (smoothxg) 8 | #:use-module (odgi) 9 | #:use-module ((guix licenses) #:prefix license:) 10 | #:use-module (gnu packages) 11 | #:use-module (gnu packages algebra) 12 | #:use-module (gnu packages bioinformatics) 13 | #:use-module (wfmash) 14 | #:use-module (gnu packages bash) 15 | #:use-module (gnu packages compression) 16 | #:use-module (gnu packages guile) 17 | #:use-module (gnu packages time)) 18 | 19 | (define-public pggb 20 | (let ((version "0.5.4") 21 | (commit "d1cc34b840bcdf8570546c3aa35d9bf6868b60e7") 22 | (package-revision "6")) 23 | (package 24 | (name "pggb") 25 | (version (string-append version "+" (string-take commit 7) "-" package-revision)) 26 | (source (origin 27 | (method git-fetch) 28 | (uri (git-reference 29 | (url "https://github.com/pangenome/pggb.git") 30 | (commit commit))) 31 | (file-name (git-file-name name version)) 32 | (sha256 33 | (base32 34 | "11sr6bjpjjzi0aqqq3dwgn9cpg86v966db2v3nzd17ani9s73dv7")))) 35 | (build-system trivial-build-system) 36 | (arguments 37 | `(#:modules ((guix build utils)) 38 | #:builder 39 | (begin 40 | (use-modules (guix build utils)) 41 | (let* ((out (assoc-ref %outputs "out")) 42 | (bin (string-append out "/bin")) 43 | (doc (string-append out "/share/doc/" ,name "-" ,version)) 44 | (bash (string-append (assoc-ref %build-inputs "bash") "/bin"))) 45 | (install-file (string-append (assoc-ref %build-inputs "source") "/pggb") bin) 46 | (install-file (string-append (assoc-ref %build-inputs "source") "/LICENSE") doc) 47 | (patch-shebang (string-append bin "/pggb") (list bash)) 48 | (wrap-script (string-append out "/bin/pggb") 49 | #:guile (string-append (assoc-ref %build-inputs "guile") "/bin/guile") 50 | `("PATH" ":" prefix (,(string-append (assoc-ref %build-inputs "bc") "/bin") 51 | ,(string-append (assoc-ref %build-inputs "odgi") "/bin") 52 | ,(string-append (assoc-ref %build-inputs "pigz") "/bin") 53 | ,(string-append (assoc-ref %build-inputs "seqwish") "/bin") 54 | ,(string-append (assoc-ref %build-inputs "smoothxg") "/bin") 55 | ,(string-append (assoc-ref %build-inputs "vcflib") "/bin") 56 | ,(string-append (assoc-ref %build-inputs "bcftools") "/bin") 57 | ,(string-append (assoc-ref %build-inputs "time") "/bin") 58 | ;,(string-append (assoc-ref %build-inputs "gfaffix") "/bin") 59 | ,(string-append (assoc-ref %build-inputs "wfmash") "/bin")))) 60 | #t)))) 61 | (inputs 62 | `(("bash" ,bash-minimal) 63 | ("bc" ,bc) 64 | ("guile" ,guile-3.0) 65 | ("odgi" ,odgi) 66 | ("pigz" ,pigz) 67 | ("seqwish" ,seqwish) 68 | ("smoothxg" ,smoothxg) 69 | ("vcflib" ,vcflib) 70 | ("bcftools" ,bcftools) 71 | ("time" ,time) 72 | ;("gfaffix" ,gfaffix) 73 | ("wfmash" ,wfmash))) 74 | (synopsis "Pangenome graph builder") 75 | (description "This pangenome graph construction pipeline renders 76 | a collection of sequences into a pangenome graph (in the variation 77 | graph model). Its goal is to build a graph that is locally directed 78 | and acyclic while preserving large-scale variation. Maintaining local 79 | linearity is important for the interpretation, visualization, and 80 | reuse of pangenome variation graphs.") 81 | (home-page "https://github.com/pangenome/pggb") 82 | (license license:expat)))) 83 | -------------------------------------------------------------------------------- /graphaligner.scm: -------------------------------------------------------------------------------- 1 | 2 | (define-module (graphaligner) 3 | #:use-module (guix packages) 4 | #:use-module (guix download) 5 | #:use-module (guix git-download) 6 | #:use-module (guix build-system gnu) 7 | #:use-module ((guix licenses) #:prefix license:) 8 | #:use-module (gnu packages boost) 9 | #:use-module (gnu packages compression) 10 | #:use-module (gnu packages datastructures) 11 | #:use-module (gnu packages jemalloc) 12 | #:use-module (gnu packages maths) 13 | #:use-module (gnu packages perl) 14 | #:use-module (gnu packages pkg-config) 15 | #:use-module (gnu packages protobuf)) 16 | 17 | (define-public graphaligner 18 | (let ((version "1.0.13") 19 | (commit "131a50b1508ea0e0cc4ee89c91970d8d3195490b") 20 | (package-revision "2")) 21 | (package 22 | (name "graphaligner") 23 | (version (string-append version "+" (string-take commit 7) "-" package-revision)) 24 | (source (origin 25 | (method git-fetch) 26 | (uri (git-reference 27 | (url "https://github.com/maickrau/GraphAligner.git") 28 | (commit commit) 29 | (recursive? #t))) 30 | (file-name (git-file-name name version)) 31 | (sha256 32 | (base32 33 | "1l10dl2z9ivdpg60525ag33h7bnhhcpjjxc87605clvd04wcji6c")))) 34 | (build-system gnu-build-system) 35 | (arguments 36 | `(#:tests? #f ; no tests 37 | #:make-flags '("all") 38 | #:phases 39 | (modify-phases 40 | %standard-phases 41 | (add-after 'unpack 'patch-version 42 | (lambda _ 43 | (substitute* "makefile" 44 | (("VERSION .*") (string-append "VERSION = " ,version "\n"))) 45 | #t)) 46 | (add-after 'unpack 'no-static-linking 47 | (lambda _ 48 | (substitute* "makefile" 49 | (("-Wl,-Bstatic") "") 50 | (("-static-libstdc\\+\\+") "")) 51 | #t)) 52 | ;(add-after 'unpack 'kill-jemalloc 53 | ; (lambda* (#:key inputs #:allow-other-keys) 54 | ; (substitute* "makefile" 55 | ; (("$(JEMALLOCFLAGS) ") "")) 56 | ; #t)) 57 | (delete 'configure) ; no configure phase 58 | (replace 'install 59 | (lambda* (#:key outputs #:allow-other-keys) 60 | (let ((out (assoc-ref outputs "out"))) 61 | (for-each 62 | (lambda (program) 63 | (install-file program (string-append out "/bin"))) 64 | (find-files "bin")) 65 | (for-each 66 | (lambda (header) 67 | (install-file header (string-append out "/include"))) 68 | (find-files "src" "\\.h(pp)?$"))) 69 | #t))))) 70 | (native-inputs 71 | `(("jemalloc@4.5.0:bin" ,jemalloc-4.5.0 "bin") 72 | ("pkg-config" ,pkg-config) 73 | ("sparsehash" ,sparsehash))) 74 | (inputs 75 | `(("boost" ,boost) 76 | ("jemalloc@4.5.0" ,jemalloc-4.5.0) 77 | ("libdivsufsort" ,libdivsufsort) 78 | ("mummer" ,mummer) 79 | ("protobuf" ,protobuf) 80 | ("sdsl-lite" ,sdsl-lite) 81 | ("zlib" ,zlib))) 82 | (home-page "https://github.com/maickrau/GraphAligner") 83 | (synopsis "Seed-and-extend program for aligning genome graphs") 84 | (description "Seed-and-extend program for aligning long error-prone reads to 85 | genome graphs. For a description of the bitvector alignment extension 86 | algorithm, see 87 | @url{https://academic.oup.com/bioinformatics/advance-article/doi/10.1093/bioinformatics/btz162/5372677 88 | here}.") 89 | (license license:expat)))) 90 | 91 | (define-public mummer 92 | (package 93 | (name "mummer") 94 | (version "4.0.0beta2") 95 | (source 96 | (origin 97 | (method url-fetch) 98 | (uri (string-append "https://github.com/mummer4/mummer/releases/" 99 | "download/v" version "/mummer-" version ".tar.gz")) 100 | (sha256 101 | (base32 102 | "14qvrmf0gkl4alnh8zgxlzmvwc027arfawl96i7jk75z33j7dknf")))) 103 | (build-system gnu-build-system) 104 | (inputs 105 | `(("gnuplot" ,gnuplot) 106 | ("perl" ,perl))) 107 | (home-page "http://mummer.sourceforge.net/") 108 | (synopsis "Efficient sequence alignment of full genomes") 109 | (description "MUMmer is a versatil alignment tool for DNA and protein sequences.") 110 | (license license:artistic2.0))) 111 | -------------------------------------------------------------------------------- /shasta.scm: -------------------------------------------------------------------------------- 1 | (define-module (shasta) 2 | #:use-module (guix packages) 3 | #:use-module (guix git-download) 4 | #:use-module (guix utils) 5 | #:use-module (guix build-system cmake) 6 | #:use-module ((guix licenses) #:prefix license:) 7 | #:use-module (gnu packages) 8 | #:use-module (gnu packages autotools) 9 | #:use-module (gnu packages bioinformatics) 10 | #:use-module (gnu packages boost) 11 | #:use-module (gnu packages check) 12 | #:use-module (gnu packages compression) 13 | #:use-module (gnu packages curl) 14 | #:use-module (gnu packages graphviz) 15 | #:use-module (gnu packages image) 16 | #:use-module (gnu packages python) 17 | #:use-module (gnu packages python-xyz)) 18 | 19 | 20 | (define-public shasta 21 | (package 22 | (name "shasta") 23 | (version "0.7.0") 24 | (source (origin 25 | (method git-fetch) 26 | (uri (git-reference 27 | (url "https://github.com/chanzuckerberg/shasta") 28 | (commit version))) 29 | (file-name (git-file-name name version)) 30 | (sha256 31 | (base32 32 | "0nqzgmk6p15ir207v0rkxmzrjv97frjwpnqis40qjx1z9w9188ry")) 33 | (patches (search-patches "shasta-make-install-target-configurable.patch")))) 34 | (build-system cmake-build-system) 35 | (arguments 36 | `(#:configure-flags 37 | (list "-DBUILD_STATIC_EXECUTABLE=OFF" 38 | "-DBUILD_STATIC_LIBRARY=OFF" 39 | "-DBUILD_NATIVE=OFF" 40 | (string-append "-DBUILD_ID=\"Shasta Release " ,version "\"")) 41 | #:phases 42 | (modify-phases %standard-phases 43 | (add-after 'unpack 'fix-pybind11 44 | (lambda _ 45 | (substitute* "dynamicLibrary/CMakeLists.txt" 46 | (("python3 -m pybind11 --includes") "python3-config --includes") 47 | (("/usr/bin/python3-config") "python3-config")) 48 | #t)) 49 | (add-after 'unpack 'prepare-for-tests 50 | (lambda _ 51 | (rename-file "tests/TinyTest.fasta.gz" "../TinyTest.fasta.gz") 52 | #t)) 53 | (add-after 'unpack 'fix-rpath 54 | (lambda _ 55 | (substitute* "dynamicExecutable/CMakeLists.txt" 56 | (("set_target_properties\\(shastaDynamicExecutable PROPERTIES INSTALL_RPATH.*$") "")) 57 | #t)) 58 | (add-after 'install 'create-symlink 59 | (lambda* (#:key outputs #:allow-other-keys) 60 | (let ((out (assoc-ref %outputs "out"))) 61 | (with-directory-excursion (string-append out "/bin") 62 | (symlink "shastaDynamic" "shasta")) 63 | #t))) 64 | (replace 'check 65 | (lambda* (#:key tests? #:allow-other-keys) 66 | (when tests? 67 | (invoke "gunzip" "../TinyTest.fasta.gz") 68 | (invoke "dynamicExecutable/shastaDynamic" 69 | "--Align.alignMethod" "3" 70 | "--input" "../TinyTest.fasta")) 71 | #t))))) 72 | (inputs 73 | `(("boost" ,boost) 74 | ("libpng" ,libpng) 75 | ("python" ,python) 76 | ("spoa" ,spoa) 77 | ("zlib" ,zlib))) 78 | (native-inputs 79 | `(("blast+" ,blast+) 80 | ("graphviz" ,graphviz) 81 | ("marginPhase" ,marginPhase) 82 | ("pybind11" ,pybind11) 83 | ("seqan" ,seqan-2))) 84 | (synopsis "De novo assembly from Oxford Nanopore reads") 85 | (description 86 | "The goal of the Shasta long read assembler is to rapidly produce 87 | accurate assembled sequence using as input DNA reads generated by 88 | Oxford Nanopore flow cells. Computational methods used by the Shasta 89 | assembler include: Using a run-length representation of the read 90 | sequence. This makes the assembly process more resilient to errors in 91 | homopolymer repeat counts, which are the most common type of errors in 92 | Oxford Nanopore reads. Using in some phases of the computation a 93 | representation of the read sequence based on markers, a fixed subset 94 | of short k-mers (k ≈ 10).") 95 | (home-page "https://chanzuckerberg.github.io/shasta") 96 | (license license:expat))) 97 | 98 | (define-public spoa 99 | (package 100 | (name "spoa") 101 | (version "3.4.0") ; This version for shasta-0.7.0. 102 | (source (origin 103 | (method git-fetch) 104 | (uri (git-reference 105 | (url "https://github.com/rvaser/spoa") 106 | (commit version) 107 | (recursive? #t))) 108 | (file-name (git-file-name name version)) 109 | (sha256 110 | (base32 111 | "177n64d92hwjqisvpb1s4v3kbqni7wlbw2l16wgddhi0hd25lqkf")))) 112 | (build-system cmake-build-system) 113 | (arguments 114 | `(#:configure-flags 115 | (list "-DCMAKE_CXX_FLAGS=-O3 -fPIC" 116 | "-DCMAKE_C_FLAGS=-O3 -fPIC" 117 | "-DBUILD_SHARED_LIBS=ON" 118 | "-Dspoa_generate_dispatch=ON" 119 | "-Dspoa_optimize_for_native=ON" 120 | "-Dspoa_build_tests=ON") 121 | #:phases 122 | (modify-phases %standard-phases 123 | (replace 'check 124 | (lambda* (#:key tests? #:allow-other-keys) 125 | (when tests? 126 | (invoke "./bin/spoa_test")) 127 | #t))))) 128 | (synopsis "SIMD partial order alignment tool/library") 129 | (description 130 | "@acronym{Spoa, SIMD POA} is a c++ implementation of the @acronym{partial 131 | order alignment, POA} algorithm (as described in 132 | 10.1093/bioinformatics/18.3.452) which is used to generate consensus sequences 133 | (as described in 10.1093/bioinformatics/btg109). It supports three alignment 134 | modes: local (Smith-Waterman), global (Needleman-Wunsch) and semi-global 135 | alignment (overlap), and three gap modes: linear, affine and convex (piecewise 136 | affine). It supports Intel SSE4.1+ and AVX2 vectorization (marginally faster 137 | due to high latency shifts).") 138 | (home-page "https://github.com/rvaser/spoa.git") 139 | (license license:expat))) 140 | 141 | (define-public marginPhase 142 | (let ((version "0.0.0") 143 | (commit "a58020d2e15d599625b5a41580ca2f609d967421") 144 | (package-revision "2")) 145 | (package 146 | (name "marginPhase") 147 | (version (string-append version "+" (string-take commit 7) "-" package-revision)) 148 | (source (origin 149 | (method git-fetch) 150 | (uri (git-reference 151 | (url "https://github.com/benedictpaten/marginPhase.git") 152 | (commit commit) 153 | (recursive? #t))) 154 | (file-name (git-file-name name version)) 155 | (sha256 156 | (base32 157 | "0w0hgz49jak4v2gaypqs1ydxa7mgqa07yvanqk4pgn80lzdhih0p")))) 158 | (build-system cmake-build-system) 159 | (arguments 160 | `(#:tests? #f ; no tests 161 | #:configure-flags 162 | (list "-DCMAKE_CXX_FLAGS=-O3 -fPIC" 163 | "-DCMAKE_C_FLAGS=-O3 -fPIC") 164 | #:phases 165 | (modify-phases %standard-phases 166 | (add-after 'unpack 'kill-htslib 167 | (lambda _ 168 | (substitute* "CMakeLists.txt" 169 | (("COMMAND autoheader") 170 | (string-append "COMMAND autoheader && sed -i 's%/bin/sh%" 171 | (which "sh") "%' ./configure"))) 172 | #t))))) 173 | (native-inputs 174 | `(("autoconf" ,autoconf) 175 | ("curl" ,curl) 176 | ("htslib" ,htslib) 177 | ("zlib" ,zlib))) 178 | (synopsis "simultaneous haplotyping and genotyping") 179 | (description "MarginPhase combines haplotyping and genotyping.") 180 | (home-page "https://github.com/rvaser/spoa.git") 181 | (license license:expat)))) 182 | -------------------------------------------------------------------------------- /gfaffix.scm: -------------------------------------------------------------------------------- 1 | (define-module (gfaffix) 2 | #:use-module (guix utils) 3 | #:use-module (guix packages) 4 | #:use-module (guix download) 5 | #:use-module (guix git-download) 6 | #:use-module (guix build-system cargo) 7 | #:use-module ((guix licenses) #:prefix license:) 8 | #:use-module (gnu packages) 9 | #:use-module (gnu packages crates-io) 10 | #:use-module (gnu packages crates-graphics) 11 | #:use-module (gnu packages rust)) 12 | 13 | (define-public gfaffix 14 | (package 15 | (name "gfaffix") 16 | (version "0.1.3") 17 | (source 18 | (origin 19 | (method git-fetch) 20 | (uri (git-reference 21 | (url "https://github.com/marschall-lab/GFAffix") 22 | (commit version))) 23 | (file-name (git-file-name name version)) 24 | (sha256 25 | (base32 "1biss5qv6ag1dfkn1nspwd528hpzgn8i4jydvbv2z7yv7sc685rh")) 26 | (modules '((guix build utils))) 27 | (snippet 28 | '(begin 29 | (substitute* "Cargo.toml" 30 | (("^handlegraph.*") "handlegraph = \"0.7\"\n")))))) 31 | (build-system cargo-build-system) 32 | (arguments 33 | `(#:install-source? #f 34 | #:cargo-inputs 35 | (("rust-clap" ,rust-clap-3.1) 36 | ("rust-rustc-hash" ,rust-rustc-hash-1) 37 | ("rust-regex" ,rust-regex-1) 38 | ("rust-handlegraph" ,rust-handlegraph-0.7) 39 | ("rust-gfa" ,rust-gfa-0.10) 40 | ("rust-quick-csv", rust-quick-csv-0.1) 41 | ("rust-log" ,rust-log-0.4) 42 | ("rust-env-logger" ,rust-env-logger-0.7)) 43 | #:phases 44 | (modify-phases %standard-phases 45 | (add-after 'unpack 'adjust-dependency-version 46 | (lambda* (#:key inputs #:allow-other-keys) 47 | (let ((handlebar-version ,(package-version rust-handlegraph-0.7))) 48 | (substitute* "Cargo.toml" 49 | (("\"0.7\"") 50 | (string-append "{ version = \"" handlebar-version "\" }"))))))))) 51 | (home-page "https://github.com/marschall-lab/GFAffix") 52 | (synopsis "Identify walk-preserving shared affixes in variation graphs") 53 | (description 54 | "GFAffix identifies walk-preserving shared affixes in variation graphs and 55 | collapses them into a non-redundant graph structure.") 56 | (license license:expat))) 57 | 58 | (define-public rust-handlegraph-0.7 59 | (package 60 | (inherit rust-handlegraph-0.3) 61 | (name "rust-handlegraph") 62 | (version "0.7.0-alpha.9") 63 | (source 64 | (origin 65 | (method url-fetch) 66 | (uri (crate-uri "handlegraph" version)) 67 | (file-name 68 | (string-append name "-" version ".tar.gz")) 69 | (sha256 70 | (base32 71 | "1frlcdwhycjvizb0gfb0v36vxjdi0jxagl2l2v6dzdjxpaawv9rs")))) 72 | (arguments 73 | `(#:cargo-inputs 74 | (("rust-anyhow" ,rust-anyhow-1) 75 | ("rust-boomphf" ,rust-boomphf-0.5) 76 | ("rust-bstr" ,rust-bstr-0.2) 77 | ("rust-crossbeam-channel" ,rust-crossbeam-channel-0.5) 78 | ("rust-fnv" ,rust-fnv-1) 79 | ("rust-gfa" ,rust-gfa-0.10) 80 | ("rust-log" ,rust-log-0.4) 81 | ("rust-rayon" ,rust-rayon-1) 82 | ("rust-succinct" ,rust-succinct-0.5)) 83 | #:cargo-development-inputs 84 | (("rust-quickcheck" ,rust-quickcheck-0.9) 85 | ("rust-rand" ,rust-rand-0.7)))))) 86 | 87 | (define-public rust-handlegraph-0.7 88 | (package 89 | (inherit rust-handlegraph-0.3) 90 | (name "rust-handlegraph") 91 | (version "0.7.0-alpha.9") 92 | (source 93 | (origin 94 | (method url-fetch) 95 | (uri (crate-uri "handlegraph" version)) 96 | (file-name 97 | (string-append name "-" version ".tar.gz")) 98 | (sha256 99 | (base32 100 | "1frlcdwhycjvizb0gfb0v36vxjdi0jxagl2l2v6dzdjxpaawv9rs")))) 101 | (arguments 102 | `(#:cargo-inputs 103 | (("rust-anyhow" ,rust-anyhow-1) 104 | ("rust-boomphf" ,rust-boomphf-0.5) 105 | ("rust-bstr" ,rust-bstr-0.2) 106 | ("rust-crossbeam-channel" ,rust-crossbeam-channel-0.5) 107 | ("rust-fnv" ,rust-fnv-1) 108 | ("rust-gfa" ,rust-gfa-0.10) 109 | ("rust-log" ,rust-log-0.4) 110 | ("rust-rayon" ,rust-rayon-1) 111 | ("rust-succinct" ,rust-succinct-0.5)) 112 | #:cargo-development-inputs 113 | (("rust-quickcheck" ,rust-quickcheck-0.9) 114 | ("rust-rand" ,rust-rand-0.7)))))) 115 | 116 | (define-public rust-clap-for-jrep 117 | (package 118 | (name "rust-clap") 119 | (version "2.33.0") 120 | (source 121 | (origin 122 | (method url-fetch) 123 | (uri (crate-uri "clap" version)) 124 | (file-name 125 | (string-append name "-" version ".tar.gz")) 126 | (sha256 127 | (base32 128 | "1nf6ld3bims1n5vfzhkvcb55pdzh04bbhzf8nil5vvw05nxzarsh")))) 129 | (build-system cargo-build-system) 130 | (arguments 131 | `(#:cargo-inputs 132 | (("rust-atty" ,rust-atty-0.2) 133 | ("rust-bitflags" ,rust-bitflags-1) 134 | ("rust-clap-derive" ,rust-clap-derive-3) 135 | ("rust-indexmap" ,rust-indexmap-1) 136 | ("rust-os-str-bytes" ,rust-os-str-bytes-2) 137 | ("rust-strsim" ,rust-strsim-0.10) 138 | ("rust-termcolor" ,rust-termcolor-1) 139 | ("rust-ansi-term" ,rust-ansi-term-0.11) 140 | ("rust-terminal-size" ,rust-terminal-size-0.1) 141 | ("rust-textwrap" ,rust-textwrap-0.12) 142 | ("rust-unicode-width" ,rust-unicode-width-0.1) 143 | ("rust-vec-map" ,rust-vec-map-0.8) 144 | ("rust-yaml-rust" ,rust-yaml-rust-0.4)) 145 | #:cargo-development-inputs 146 | (("rust-criterion" ,rust-criterion-0.3) 147 | ("rust-lazy-static" ,rust-lazy-static-1) 148 | ("rust-regex" ,rust-regex-1) 149 | ("rust-version-sync" ,rust-version-sync-0.8)))) 150 | (home-page "https://clap.rs/") 151 | (synopsis "Command Line Argument Parser") 152 | (description 153 | "This package provides a simple to use, efficient, and full-featured 154 | Command Line Argument Parser.") 155 | (license (list license:expat license:asl2.0)))) 156 | 157 | (define-public jrep 158 | (package 159 | (name "jrep") 160 | (version "0.1.3") 161 | (source 162 | (origin 163 | (method git-fetch) 164 | (uri (git-reference 165 | (url "https://github.com/joshua-laughner/jrep") 166 | (commit (string-append "v" version)))) 167 | (file-name (git-file-name name version)) 168 | (sha256 169 | (base32 170 | "0syvlc93w26v856hp5l8ik615dfrvax6hdfzw5kqhaww3siqjaj9")))) 171 | (build-system cargo-build-system) 172 | (arguments 173 | `(#:cargo-inputs 174 | (("rust-clap" ,rust-clap-for-jrep) 175 | ("rust-exitcode" ,rust-exitcode-1) 176 | ("rust-term" ,rust-term-0.7) 177 | ("rust-regex" ,rust-regex-1) 178 | ("rust-serde" ,rust-serde-1) 179 | ("rust-serde-json" ,rust-serde-json-1)))) 180 | (home-page "https://github.com/joshua-laughner/jrep/") 181 | (synopsis "grep for Jupyter notebooks") 182 | (description 183 | "@code{jrep} is @code{grep} for Jupyter notebooks. It is a command line 184 | program that can search across multiple notebooks for specific text, 185 | but limit itself to certain types of cells, source text, output data, 186 | or any combination.") 187 | (license license:gpl3+))) 188 | 189 | (define-public notebook-tools 190 | (let ((commit "a9db1f4f90f6df72d28bf1235ca16b988d7b86be") 191 | (revision "0")) 192 | (package 193 | (name "notebook-tools") 194 | (version commit) 195 | (source 196 | (origin 197 | (method git-fetch) 198 | (uri (git-reference 199 | (url "https://github.com/CADLabs/notebook-tools") 200 | (commit commit))) 201 | (file-name (git-file-name name version)) 202 | (sha256 203 | (base32 204 | "0mmvqjfcsa6fq12rpay9w6ra1q8ijhmm1raqzi4d70y7wsbd20lw")))) 205 | (build-system cargo-build-system) 206 | (arguments 207 | `(#:cargo-inputs 208 | (("rust-clap" ,rust-clap-3) 209 | ("rust-exitcode" ,rust-exitcode-1) 210 | ("rust-term" ,rust-term-0.7) 211 | ("rust-regex" ,rust-regex-1) 212 | ("rust-serde" ,rust-serde-1) 213 | ("rust-serde-json" ,rust-serde-json-1)))) 214 | (home-page "https://github.com/CADLabs/notebook-tools") 215 | (synopsis "Rust CLI tools for manipulation of Jupyter Notebooks") 216 | (description "Rust CLI tools for manipulation of Jupyter Notebooks.") 217 | (license #f)))) ; There is no license. 218 | 219 | ;; replace fields with those from upstream 220 | (define-public rust-clap-3.1 221 | (package 222 | (name "rust-clap") 223 | (version "3.1.6") 224 | (source 225 | (origin 226 | (method url-fetch) 227 | (uri (crate-uri "clap" version)) 228 | (file-name (string-append name "-" version ".tar.gz")) 229 | (sha256 230 | (base32 "08q1hkksfixybnrwrpm44xq028wbn9yr2hnzrax9hihyq8v39jfq")))) 231 | (build-system cargo-build-system) 232 | (arguments 233 | `(#:cargo-inputs 234 | (("rust-atty" ,rust-atty-0.2) 235 | ("rust-backtrace" ,rust-backtrace-0.3) 236 | ("rust-bitflags" ,rust-bitflags-1) 237 | ("rust-clap-derive" ,rust-clap-derive-3.1) 238 | ("rust-indexmap" ,rust-indexmap-1) 239 | ("rust-lazy-static" ,rust-lazy-static-1) 240 | ("rust-os-str-bytes" ,rust-os-str-bytes-6) 241 | ("rust-regex" ,rust-regex-1) 242 | ("rust-strsim" ,rust-strsim-0.10) 243 | ("rust-termcolor" ,rust-termcolor-1) 244 | ("rust-terminal-size" ,rust-terminal-size-0.1) 245 | ("rust-textwrap" ,rust-textwrap-0.15) 246 | ("rust-unicase" ,rust-unicase-2) 247 | ("rust-yaml-rust" ,rust-yaml-rust-0.4)) 248 | #:cargo-development-inputs 249 | (("rust-criterion" ,rust-criterion-0.3) 250 | ("rust-lazy-static" ,rust-lazy-static-1) 251 | ("rust-regex" ,rust-regex-1) 252 | ("rust-rustversion" ,rust-rustversion-1) 253 | ("rust-trybuild" ,rust-trybuild-1) 254 | ("rust-trycmd" ,rust-trycmd-0.12)))) 255 | (home-page "https://github.com/clap-rs/clap") 256 | (synopsis 257 | "A simple to use, efficient, and full-featured Command Line Argument Parser") 258 | (description 259 | "This package provides a simple to use, efficient, and full-featured Command Line 260 | Argument Parser") 261 | (license (list license:expat license:asl2.0)))) 262 | 263 | ;; ready to upstream, WITH rust-clap-derive 264 | ;; replace fields with those from upstream. 265 | (define-public rust-clap-derive-3.1 266 | (package 267 | (name "rust-clap-derive") 268 | (version "3.1.4") 269 | (source 270 | (origin 271 | (method url-fetch) 272 | (uri (crate-uri "clap-derive" version)) 273 | (file-name (string-append name "-" version ".tar.gz")) 274 | (sha256 275 | (base32 "05mz2y6k73wc1gvv9r4mllfqslzvlwkvx77lk7769ag1xlwd15fs")))) 276 | (build-system cargo-build-system) 277 | (arguments 278 | `(#:cargo-inputs 279 | (("rust-heck" ,rust-heck-0.4) 280 | ("rust-proc-macro-error" ,rust-proc-macro-error-1) 281 | ("rust-proc-macro2" ,rust-proc-macro2-1) 282 | ("rust-quote" ,rust-quote-1) 283 | ("rust-syn" ,rust-syn-1)))) 284 | (home-page "https://github.com/clap-rs/clap/tree/master/clap_derive") 285 | (synopsis 286 | "Parse command line argument by defining a struct, derive crate.") 287 | (description 288 | "Parse command line argument by defining a struct, derive crate.") 289 | (license (list license:expat license:asl2.0)))) 290 | 291 | (define-public rust-textwrap-0.15 292 | (package 293 | (name "rust-textwrap") 294 | (version "0.15.0") 295 | (source 296 | (origin 297 | (method url-fetch) 298 | (uri (crate-uri "textwrap" version)) 299 | (file-name (string-append name "-" version ".tar.gz")) 300 | (sha256 301 | (base32 "1yw513k61lfiwgqrfvsjw1a5wpvm0azhpjr2kr0jhnq9c56is55i")))) 302 | (build-system cargo-build-system) 303 | (arguments 304 | `(#:skip-build? #t ; Not all inputs packaged 305 | ;#:tests? #f ; Skip tests for now 306 | #:cargo-inputs 307 | (("rust-hyphenation" ,rust-hyphenation-0.8) 308 | ("rust-smawk" ,rust-smawk-0.3) 309 | ("rust-terminal-size" ,rust-terminal-size-0.1) 310 | ("rust-unicode-linebreak" ,rust-unicode-linebreak-0.1) 311 | ("rust-unicode-width" ,rust-unicode-width-0.1)) 312 | #:cargo-development-inputs 313 | (("rust-criterion" ,rust-criterion-0.3) 314 | ("rust-lipsum" ,rust-lipsum-0.8) 315 | ("rust-termion" ,rust-termion-1) 316 | ;("rust-unic-emoji-char" ,rust-unic-emoji-char-0.9) 317 | ("rust-version-sync" ,rust-version-sync-0.9)))) 318 | (home-page "https://github.com/mgeisler/textwrap") 319 | (synopsis 320 | "Powerful library for word wrapping, indenting, and dedenting strings") 321 | (description 322 | "Powerful library for word wrapping, indenting, and dedenting strings") 323 | (license license:expat))) 324 | 325 | (define-public rust-trycmd-0.12 326 | (package 327 | (name "rust-trycmd") 328 | (version "0.12.2") 329 | (source 330 | (origin 331 | (method url-fetch) 332 | (uri (crate-uri "trycmd" version)) 333 | (file-name (string-append name "-" version ".tar.gz")) 334 | (sha256 335 | (base32 "1rwa5nzq8c5zg7lqmpkf7hyib415yxshd9amp911y8w1zss4s38p")))) 336 | (build-system cargo-build-system) 337 | (arguments 338 | `(;#:skip-build? #t ; Not all inputs at correct versions? 339 | ;#:tests? #f ; Skip tests for now 340 | #:cargo-inputs 341 | (("rust-backtrace" ,rust-backtrace-0.3) 342 | ("rust-concolor" ,rust-concolor-0.0.8) 343 | ("rust-content-inspector" ,rust-content-inspector-0.2) 344 | ("rust-difflib" ,rust-difflib-0.4) 345 | ("rust-dunce" ,rust-dunce-1) 346 | ("rust-escargot" ,rust-escargot-0.5) 347 | ("rust-glob" ,rust-glob-0.3) 348 | ("rust-humantime" ,rust-humantime-2) 349 | ("rust-humantime-serde" ,rust-humantime-serde-1) 350 | ("rust-normalize-line-endings" ,rust-normalize-line-endings-0.3) 351 | ("rust-os-pipe" ,rust-os-pipe-1) 352 | ("rust-rayon" ,rust-rayon-1) 353 | ("rust-schemars" ,rust-schemars-0.8) 354 | ("rust-serde" ,rust-serde-1) 355 | ("rust-serde-json" ,rust-serde-json-1) 356 | ("rust-shlex" ,rust-shlex-1) 357 | ("rust-tempfile" ,rust-tempfile-3) 358 | ("rust-toml-edit" ,rust-toml-edit-0.12) 359 | ("rust-wait-timeout" ,rust-wait-timeout-0.2) 360 | ("rust-walkdir" ,rust-walkdir-2) 361 | ("rust-yansi" ,rust-yansi-0.5)))) 362 | (home-page "https://github.com/assert-rs/trycmd") 363 | (synopsis "Snapshot testing for a herd of CLI tests") 364 | (description "Snapshot testing for a herd of CLI tests") 365 | (license (list license:expat license:asl2.0)))) 366 | 367 | (define-public rust-toml-edit-0.12 368 | (package 369 | (name "rust-toml-edit") 370 | (version "0.12.6") 371 | (source 372 | (origin 373 | (method url-fetch) 374 | (uri (crate-uri "toml-edit" version)) 375 | (file-name (string-append name "-" version ".tar.gz")) 376 | (sha256 377 | (base32 "0wx4wd849bmkqj0gdi041gmpfpvlyhy2ha4zpin69yw9d9npl8cl")))) 378 | (build-system cargo-build-system) 379 | (arguments 380 | `(;#:skip-build? #t ; Not all inputs packaged 381 | ;#:tests? #f ; Skip tests for now 382 | #:cargo-inputs 383 | (("rust-combine" ,rust-combine-4) 384 | ("rust-indexmap" ,rust-indexmap-1) 385 | ("rust-itertools" ,rust-itertools-0.10) 386 | ("rust-kstring" ,rust-kstring-1) 387 | ("rust-serde" ,rust-serde-1)) 388 | #:cargo-development-inputs 389 | (("rust-criterion" ,rust-criterion-0.3) 390 | ;("rust-fs-snapshot" ,rust-fs-snapshot-0.1) 391 | ;("rust-pretty-assertions" ,rust-pretty-assertions-1) 392 | ("rust-serde-json" ,rust-serde-json-1) 393 | ("rust-toml" ,rust-toml-0.5) 394 | ;("rust-toml-test-harness" ,rust-toml-test-harness-0.3) 395 | ))) 396 | (home-page "https://github.com/ordian/toml_edit") 397 | (synopsis "Yet another format-preserving TOML parser.") 398 | (description "Yet another format-preserving TOML parser.") 399 | (license (list license:expat license:asl2.0)))) 400 | 401 | --------------------------------------------------------------------------------