gnu: Add dropseq-tools.
* gnu/packages/bioinformatics.scm (dropseq-tools): New variable.
This commit is contained in:
		
							parent
							
								
									72299db9fe
								
							
						
					
					
						commit
						1adeef3194
					
				
					 1 changed files with 137 additions and 0 deletions
				
			
		|  | @ -12504,3 +12504,140 @@ contains | |||
| @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))) | ||||
|  |  | |||
		Reference in a new issue