about summary refs log tree commit diff
path: root/gn/packages/bioinformatics.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gn/packages/bioinformatics.scm')
-rw-r--r--gn/packages/bioinformatics.scm131
1 files changed, 126 insertions, 5 deletions
diff --git a/gn/packages/bioinformatics.scm b/gn/packages/bioinformatics.scm
index 11a624f..a4d14b0 100644
--- a/gn/packages/bioinformatics.scm
+++ b/gn/packages/bioinformatics.scm
@@ -62,6 +62,113 @@
   #:use-module (gnu packages bootstrap)
   #:use-module (srfi srfi-1))
 
+(define-public contra
+  (package
+    (name "contra")
+    (version "2.0.6")
+    (source (origin
+      (method url-fetch)
+      (uri (string-append
+            "mirror://sourceforge/contra-cnv/CONTRA.v" version ".tar.gz"))
+      (sha256
+       (base32
+        "0agpcm2xh5f0i9n9sx1kvln6mzdksddmh11bvzj6bh76yw5pnw91"))))
+    (build-system gnu-build-system)
+    (propagated-inputs
+     `(("python" ,python-2)
+       ("r" ,r)
+       ("r-dnacopy" ,r-dnacopy)
+       ("bedtools" ,bedtools)
+       ("samtools" ,samtools)))
+    (arguments
+     `(#:tests? #f ; There are no tests.
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build) ; We can use Guix's BEDtools instead.
+         (replace 'install
+           (lambda _
+             (let* ((out (assoc-ref %outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (doc (string-append out "/share/doc/contra")))
+               (mkdir-p bin)
+               (mkdir-p doc)
+               (and
+                (zero? (system* "cp" "--recursive" "scripts" bin))
+                (zero? (system* "cp" "contra.py" bin))
+                (zero? (system* "cp" "baseline.py" bin))
+                ;; There's only a pre-built PDF available.
+                (zero? (system* "cp" "CONTRA_User_Guide.2.0.pdf" doc)))))))))
+    (home-page "http://contra-cnv.sourceforge.net/")
+    (synopsis "Tool for copy number variation (CNV) detection for targeted
+resequencing data")
+    (description "CONTRA is a tool for copy number variation (CNV) detection
+for targeted resequencing data such as those from whole-exome capture data.
+CONTRA calls copy number gains and losses for each target region with key
+strategies including the use of base-level log-ratios to remove GC-content
+bias, correction for an imbalanced library size effect on log-ratios, and the
+estimation of log-ratio variations via binning and interpolation.  It takes
+standard alignment formats (BAM/SAM) and outputs in variant call format
+(VCF 4.0) for easy integration with other next generation sequencing analysis
+package.")
+    (license license:gpl3+)))
+
+(define boost-delly
+  (package (inherit boost)
+    (name "boost-delly")
+    (version "1.57.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://sourceforge/boost/boost_"
+                    (string-map (lambda (x) (if (eq? x #\.) #\_ x)) version)
+                    ".tar.bz2"))
+              (sha256
+               (base32
+                "0rs94vdmg34bwwj23fllva6mhrml2i7mvmlb11zyrk1k5818q34i"))))))
+
+(define-public delly
+  (package
+    (name "delly")
+    (version "0.7.2")
+    (source (origin
+      (method url-fetch)
+      (uri (string-append "https://github.com/tobiasrausch/delly/archive/v"
+            version ".tar.gz"))
+      (sha256
+       (base32 "173mmg43dbxqkyq0kiffz63xbmggr2kzd55mwxci9yfh5md1zprn"))
+      (patches (list (search-patch "delly-use-system-libraries.patch")))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("python" ,python-2)))
+    (inputs
+     `(("boost" ,boost-delly) ; Use version 1.57.0 instead.
+       ("htslib" ,htslib)
+       ("zlib" ,zlib)
+       ("bzip2" ,bzip2)))
+    (arguments
+     `(#:tests? #f ; There are no tests to run.
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure) ; There is no configure phase.
+         (replace 'install
+           (lambda _
+             (let ((bin (string-append (assoc-ref %outputs "out") "/bin")))
+               (install-file "src/cov" bin)
+               (install-file "src/delly" bin)
+               (install-file "src/extract" bin)
+               (install-file "src/iover" bin)
+               (install-file "src/stats" bin)))))))
+    (home-page "https://github.com/tobiasrausch/delly")
+    (synopsis "Integrated structural variant prediction method")
+    (description "Delly is an integrated structural variant prediction method
+that can discover and genotype deletions, tandem duplications, inversions and
+translocations at single-nucleotide resolution in short-read massively parallel
+sequencing data.  It uses paired-ends and split-reads to sensitively and
+accurately delineate genomic rearrangements throughout the genome.  Structural
+variants can be visualized using Delly-maze and Delly-suave.")
+    (license license:gpl3)))
+
 (define-public freec
   (package
     (name "control-freec")
@@ -1141,15 +1248,19 @@ manipulations on VCF files.")
       ("python" ,python-2)
       ("perl" ,perl)))
    (arguments
-    `(#:tests? #f
-      #:phases
+    `(#:phases
       (modify-phases %standard-phases
         (delete 'configure) ; There is no configure phase.
+        ;; The build phase needs to run 'make' twice for the reasons described
+        ;; below.
         (replace 'build
           (lambda* (#:key inputs #:allow-other-keys)
-            ;; The first run creates a Makefile.local file.
+            ;; The first run creates a Makefile.local file.  Make will report
+            ;; the failure to find Makefile.local, but we can ignore this error.
             (system* "make" (string-append "SAMTOOLS=" (assoc-ref inputs "samtools")))
-            ;; The second run actually compiles the program.
+            ;; The second run actually compiles the program.  Now Makefile.local
+            ;; is available, and we should treat an exiting make with an error as
+            ;; a true error.
             (zero? (system* "make"))))
         (replace 'install
           (lambda* (#:key outputs #:allow-other-keys)
@@ -1157,7 +1268,17 @@ manipulations on VCF files.")
               (install-file "src/pindel" bin)
               (install-file "src/pindel2vcf" bin)
               (install-file "src/pindel2vcf4tcga" bin)
-              (install-file "src/sam2pindel" bin)))))))
+              (install-file "src/sam2pindel" bin))))
+        ;; There are multiple test targets, so in order to run all
+        ;; tests, we must run the separate make targets.
+        (replace 'check
+          (lambda* (#:key inputs #:allow-other-keys)
+            (and
+             (zero? (system* "make" "acceptance-tests"))
+             (zero? (system* "make" "coverage-tests"))
+             (zero? (system* "make" "cppcheck"))
+             (zero? (system* "make" "functional-tests"))
+             (zero? (system* "make" "regression-tests"))))))))
    (home-page "https://github.com/genome/pindel")
    (synopsis "Structural variants detector for next-gen sequencing data")
    (description "Pindel can detect breakpoints of large deletions, medium sized