unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] gnu: Add bedtools
@ 2014-12-12 10:11 Ricardo Wurmus
  2014-12-12 23:00 ` Ludovic Courtès
  2014-12-13  6:42 ` Mark H Weaver
  0 siblings, 2 replies; 6+ messages in thread
From: Ricardo Wurmus @ 2014-12-12 10:11 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 750 bytes --]

This is a patch to add bedtools to the bioinformatics module.  It
depends on samtools and is part of the bioinformatics module created
with the samtools patch.

Since there is no install phase in the Makefile I had to write a
replacement to copy all tools from the build bin/ directory to the
output /bin/ directory.  I don't know if it is better to explicitly list
the tools to copy or if this should rather be done with a glob pattern.

Another source of ugliness in the recipe is the
patch-makefile-SHELL-definition phase which is really just
patch-makefile-SHELL but working on ":=" definitions rather than
"=" assignments.  Augmenting patch-makefile-SHELL to handle definitions
as well would result in a cleaner package recipe.

Cheers,
rekado


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-bedtools.patch --]
[-- Type: text/x-patch, Size: 4431 bytes --]

From c8d71da303ff6b82a30db542d382cab57a00699e Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
Date: Thu, 11 Dec 2014 17:37:16 +0100
Subject: [PATCH] gnu: Add bedtools

* gnu/packages/bioinformatics.scm (bedtools): New variable.
---
 gnu/packages/bioinformatics.scm | 68 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 68 insertions(+)

diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 6f6178a..bcc5d43 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -28,6 +28,74 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python))
 
+(define-public bedtools
+  (package
+    (name "bedtools")
+    (version "2.22.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/arq5x/bedtools2/archive/v"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "16aq0w3dmbd0853j32xk9jin4vb6v6fgakfyvrsmsjizzbn3fpfl"))))
+    (build-system gnu-build-system)
+    (inputs `(("python" ,python)
+              ("samtools" ,samtools)
+              ("zlib" ,zlib)))
+    (arguments
+     '(#:test-target "test"
+       #:phases
+       (alist-cons-after
+        'unpack 'patch-makefile-SHELL-definition
+                (lambda _
+                  ;; patch-makefile-SHELL cannot be used here as it does not
+                  ;; yet patch definitions with `:='.  Since changes to
+                  ;; patch-makefile-SHELL result in a full rebuild, features
+                  ;; of patch-makefile-SHELL are reimplemented here.
+                  (define (find-shell name)
+                    (let ((shell
+                           (search-path (search-path-as-string->list (getenv "PATH"))
+                                        name)))
+                      (unless shell
+                        (format (current-error-port)
+                                "patch-makefile-SHELL: warning: no binary for shell `~a' found in $PATH~%"
+                                name))
+                      shell))
+                  (substitute* "Makefile"
+                    (("^SHELL := .*$") (string-append "SHELL := " (find-shell "bash") " -e \n"))))
+                (alist-delete
+                 'configure
+                 (alist-replace
+                  'install (lambda* (#:key outputs #:allow-other-keys)
+                             (let* ((out (assoc-ref outputs "out"))
+                                    (bin (string-append out "/bin"))
+                                    (tools
+                                     '("bamToFastq" "mapBed" "shuffleBed" "bed12ToBed6" "bedToBam"
+                                       "multiIntersectBed" "complementBed" "randomBed" "tagBam" "sortBed"
+                                       "annotateBed" "clusterBed" "fastaFromBed" "coverageBed" "bedpeToBam"
+                                       "pairToPair" "subtractBed" "nucBed" "expandCols" "bedToIgv" "slopBed"
+                                       "closestBed" "windowMaker" "linksBed" "getOverlap" "mergeBed" "windowBed"
+                                       "flankBed" "pairToBed" "intersectBed" "bamToBed" "multiBamCov"
+                                       "unionBedGraphs" "genomeCoverageBed" "groupBy" "maskFastaFromBed"
+                                       "bedtools")))
+                               (mkdir-p bin)
+                               (map (lambda (tool)
+                                      (copy-file (string-append "bin/" tool)
+                                                 (string-append bin "/" tool)))
+                                    tools)))
+                  %standard-phases)))))
+    (home-page "https://github.com/arq5x/bedtools2")
+    (synopsis "Swiss army knife for genome arithmetic")
+    (description
+     "Collectively, the bedtools utilities are a swiss-army knife of tools for
+a wide-range of genomics analysis tasks.  The most widely-used tools enable
+genome arithmetic: that is, set theory on the genome.  For example, bedtools
+allows one to intersect, merge, count, complement, and shuffle genomic
+intervals from multiple files in widely-used genomic file formats such as BAM,
+BED, GFF/GTF, VCF.")
+    (license license:gpl2)))
+
 (define-public samtools
   (package
     (name "samtools")
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread
[parent not found: <20141215155541.GA19757@jocasta.intra>]

end of thread, other threads:[~2014-12-16 17:18 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-12 10:11 [PATCH] gnu: Add bedtools Ricardo Wurmus
2014-12-12 23:00 ` Ludovic Courtès
2014-12-13  6:42 ` Mark H Weaver
2014-12-15 15:46   ` Ricardo Wurmus
2014-12-16 17:18     ` Ludovic Courtès
     [not found] <20141215155541.GA19757@jocasta.intra>
     [not found] ` <idj61db7vu0.fsf@bimsb-sys02.mdc-berlin.net>
2014-12-16 10:15   ` John Darrington

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).