gnu: Add dropseq-tools.

* gnu/packages/bioinformatics.scm (dropseq-tools): New variable.
This commit is contained in:
Ricardo Wurmus 2018-03-01 19:41:49 +01:00 committed by Ricardo Wurmus
parent 72299db9fe
commit 1adeef3194
No known key found for this signature in database
GPG key ID: 197A5888235FACAC

View file

@ -12504,3 +12504,140 @@ (define-public java-biojava-alignment-4.0
@item reading and writing of popular alignment file formats;
@item a single-, or multi- threaded multiple sequence alignment algorithm.
@end itemize\n")))
(define-public dropseq-tools
(package
(name "dropseq-tools")
(version "1.13")
(source
(origin
(method url-fetch)
(uri "http://mccarrolllab.com/download/1276/")
(file-name (string-append "dropseq-tools-" version ".zip"))
(sha256
(base32
"0yrffckxqk5l8b5xb6z4laq157zd9mdypr2p4b4vq2bhjzi1sj0s"))
;; Delete bundled libraries
(modules '((guix build utils)))
(snippet
'(begin
(for-each delete-file (find-files "jar/lib" "\\.jar$"))
(delete-file-recursively "3rdParty")))))
(build-system ant-build-system)
(arguments
`(#:tests? #f ; test data are not included
#:test-target "test"
#:build-target "all"
#:source-dir "public/src/"
#:jdk ,icedtea-8
#:make-flags
(list (string-append "-Dpicard.executable.dir="
(assoc-ref %build-inputs "java-picard")
"/share/java/"))
#:modules ((ice-9 match)
(srfi srfi-1)
(guix build utils)
(guix build java-utils)
(guix build ant-build-system))
#:phases
(modify-phases %standard-phases
;; All dependencies must be linked to "lib", because that's where
;; they will be searched for when the Class-Path property of the
;; manifest is computed.
(add-after 'unpack 'record-references
(lambda* (#:key inputs #:allow-other-keys)
(mkdir-p "jar/lib")
(let ((dirs (filter-map (match-lambda
((name . dir)
(if (and (string-prefix? "java-" name)
(not (string=? name "java-testng")))
dir #f)))
inputs)))
(for-each (lambda (jar)
(symlink jar (string-append "jar/lib/" (basename jar))))
(append-map (lambda (dir) (find-files dir "\\.jar$"))
dirs)))
#t))
;; There is no installation target
(replace 'install
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(share (string-append out "/share/java/"))
(lib (string-append share "/lib/"))
(scripts (list "BAMTagHistogram"
"BAMTagofTagCounts"
"BaseDistributionAtReadPosition"
"CollapseBarcodesInPlace"
"CollapseTagWithContext"
"ConvertToRefFlat"
"CreateIntervalsFiles"
"DetectBeadSynthesisErrors"
"DigitalExpression"
"Drop-seq_alignment.sh"
"FilterBAM"
"FilterBAMByTag"
"GatherGeneGCLength"
"GatherMolecularBarcodeDistributionByGene"
"GatherReadQualityMetrics"
"PolyATrimmer"
"ReduceGTF"
"SelectCellsByNumTranscripts"
"SingleCellRnaSeqMetricsCollector"
"TagBamWithReadSequenceExtended"
"TagReadWithGeneExon"
"TagReadWithInterval"
"TrimStartingSequence"
"ValidateReference")))
(for-each mkdir-p (list bin share lib))
(install-file "dist/dropseq.jar" share)
(for-each (lambda (script)
(chmod script #o555)
(install-file script bin))
scripts)
(substitute* (map (lambda (script)
(string-append bin "/" script))
scripts)
(("^java") (which "java"))
(("jar_deploy_dir=.*")
(string-append "jar_deploy_dir=" share "\n"))))
#t))
;; FIXME: We do this after stripping jars because we don't want it to
;; copy all these jars and strip them. We only want to install
;; links. Arguably, this is a problem with the ant-build-system.
(add-after 'strip-jar-timestamps 'install-links
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(share (string-append out "/share/java/"))
(lib (string-append share "/lib/")))
(for-each (lambda (jar)
(symlink (readlink jar)
(string-append lib (basename jar))))
(find-files "jar/lib" "\\.jar$")))
#t)))))
(inputs
`(("jdk" ,icedtea-8)
("java-picard" ,java-picard-2.10.3)
("java-log4j-1.2-api" ,java-log4j-1.2-api)
("java-commons-math3" ,java-commons-math3)
("java-commons-jexl2" ,java-commons-jexl-2)
("java-commons-collections4" ,java-commons-collections4)
("java-commons-lang2" ,java-commons-lang)
("java-commons-io" ,java-commons-io)
("java-snappy-1.0.3-rc3" ,java-snappy-1)
("java-guava" ,java-guava)
("java-la4j" ,java-la4j)
("java-biojava-core" ,java-biojava-core-4.0)
("java-biojava-alignment" ,java-biojava-alignment-4.0)
("java-jdistlib" ,java-jdistlib)
("java-simple-xml" ,java-simple-xml)
("java-snakeyaml" ,java-snakeyaml)))
(native-inputs
`(("unzip" ,unzip)
("java-testng" ,java-testng)))
(home-page "http://mccarrolllab.com/dropseq/")
(synopsis "Tools for Drop-seq analyses")
(description "Drop-seq is a technology to enable biologists to
analyze RNA expression genome-wide in thousands of individual cells at
once. This package provides tools to perform Drop-seq analyses.")
(license license:expat)))