unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
To: guix-devel@gnu.org
Subject: [PATCH] gnu: Add bedtools
Date: Fri, 12 Dec 2014 11:11:50 +0100	[thread overview]
Message-ID: <idj388lkwih.fsf@bimsb-sys02.mdc-berlin.net> (raw)

[-- 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


             reply	other threads:[~2014-12-12 10:12 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-12 10:11 Ricardo Wurmus [this message]
2014-12-12 23:00 ` [PATCH] gnu: Add bedtools 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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=idj388lkwih.fsf@bimsb-sys02.mdc-berlin.net \
    --to=ricardo.wurmus@mdc-berlin.de \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).