1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
;; Sambamba
(define-module (gn packages sambamba)
#: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 gnu)
#:use-module (gnu packages base)
#:use-module (gnu packages bioinformatics) ; for samtools in sambamba
#:use-module (gnu packages compression)
#:use-module (gnu packages gcc)
#:use-module (gnu packages perl)
#:use-module (gnu packages python)
#:use-module (gnu packages ruby)
#:use-module (gnu packages ldc)
#:use-module (gn packages shell)
#:use-module (srfi srfi-1))
(define-public sambamba
(let ((commit "52ab1eff7070cd3dafad94a15c9fd6e243a45a4d"))
(package
(name "sambamba")
(version (string-append "0.6.6-" (string-take commit 7)))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/pjotrp/sambamba.git")
(commit commit)))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"16nfvmipa1gj7f8c9lqhh5yffdmaic1pzcrm9281dqwywl9w8hsg"))))
(build-system gnu-build-system)
(outputs '("out" ; disable all checks for speed
"debug"))
(inputs
`(("samtools" ,samtools) ; for pileup
("bcftools" ,bcftools) ; for pileup
("lz4" ,lz4)
("zlib" ,zlib)
))
(native-inputs
`(("ldc" ,ldc)
("shunit2" ,shunit2)
("coreutils" ,coreutils) ; for env
("perl" ,perl) ; Needed for building htslib
("ruby" ,ruby) ; Needed for building htslib
("python" ,python-2) ; Needed for building htslib and sambamba
("gcc" ,gcc)
("which" ,which)
("htslib-src"
,(origin
(method url-fetch)
(uri "https://github.com/lomereiter/htslib/archive/2f3c3ea7b301f9b45737a793c0b2dcf0240e5ee5.tar.gz")
;;(uri "https://github.com/samtools/htslib/archive/1.3.tar.gz")
(file-name "htslib-0.2.0-rc10-271-g2f3c3ea-dirty.tar.gz")
(sha256
(base32 "0bl6w856afnbgdsw8bybsxpqsyf2ba3f12rqh47hhpxvv866g08w"))))
;;(base32 "1bqkif7yrqmiqak5yb74kgpb2lsdlg7y344qa1xkdg7k1l4m86i9"))
;;(patches (list (search-patch "htslib-add-cram_to_bam.patch")))))
("biod-src"
,(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/pjotrp/BioD.git")
(commit "b7f1db860d212ee5fb6f9adfb36c6e783aaeb6f5")))
(file-name (string-append "biod-src-" (string-take commit 7) "-checkout"))
(sha256
(base32 "01xkdjdn9lb2b4b5ykzhnrk2rjikagav8b3fyac3zafcfq600cr4"))))
("dlang-undeaD-src"
,(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/dlang/undeaD.git")
(commit "610234f159132f91046d4fb893889fb8ee14cd2f")))
(file-name (string-append "dlang-undeaD-src-" (string-take commit 7) "-checkout"))
(sha256
(base32 "12zxsgvka4a82ghp2gaviph6kz13jzjb5pbc8v6i3rmcnifzpbrl"))))))
(arguments
`(#:phases
(modify-phases %standard-phases
(delete 'configure)
(delete 'check)
(add-after 'unpack 'patch-pileup-d
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "sambamba/pileup.d"
(("string samtoolsBin = null;") (string-append "string samtoolsBin = \"" (which "samtools") "\";"))
(("string bcftoolsBin = null;") (string-append "string bcftoolsBin = \"" (which "bcftools") "\";"))
((" this_app = args[0];") (string-append " this_app = \"" (which "sambamba") "\";")))))
(add-after 'unpack 'unpack-htslib-sources
(lambda* (#:key inputs #:allow-other-keys)
;; The current build compiles htslib statically into the
;; executable. On top of that, we need to patch the latest
;; version of htslib to have it working with Sambamba.
(and (with-directory-excursion "htslib"
(zero? (system* "tar" "xvf" (assoc-ref inputs "htslib-src")
"--strip-components=1")))
(copy-recursively (assoc-ref inputs "dlang-undeaD-src") "undeaD")
(copy-recursively (assoc-ref inputs "biod-src") "BioD"))))
(replace
'build
(lambda* (#:key inputs outputs make-flags #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(debug-out (assoc-ref outputs "debug")))
(zero? (system* "make" "-f" "Makefile.guix" "guix"
(string-append "LDC_LIB_PATH="
(assoc-ref inputs "ldc")
"/lib"))))))
(replace
'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((bin (string-append (assoc-ref outputs "out") "/bin")))
(install-file "build/sambamba" bin)))))))
(home-page "https://github.com/lomereiter/sambamba")
(synopsis "Fast tool for working with SAM, BAM and CRAM files written in D.")
(description
"Sambamba is a high performance modern robust and fast
tool (and library), written in the D programming language, for working
with SAM, BAM and CRAM files. Current parallelised functionality is
an important subset of samtools functionality, including view, index,
sort, markdup, and depth.")
(license license:gpl2+))))
|