aboutsummaryrefslogtreecommitdiff
path: root/gn/packages/sambamba.scm
blob: 261e325d6b25eb8ad681560c9d9394c191ccd685 (plain)
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+))))