gnu: Add salmon.
* gnu/packages/bioinformatics.scm (libstadenio-for-salmon, spdlog-for-salmon, bwa-for-salmon, salmon): New variables.
This commit is contained in:
		
							parent
							
								
									8d77a085a7
								
							
						
					
					
						commit
						7762646d95
					
				
					 1 changed files with 263 additions and 0 deletions
				
			
		|  | @ -11307,3 +11307,266 @@ reference or de-novo assembly) to quantify.  All you need to run sailfish is a | |||
| fasta file containing your reference transcripts and a (set of) fasta/fastq | ||||
| file(s) containing your reads.") | ||||
|     (license license:gpl3+))) | ||||
| 
 | ||||
| (define libstadenio-for-salmon | ||||
|   (package | ||||
|     (name "libstadenio") | ||||
|     (version "1.14.8") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|                     (url "https://github.com/COMBINE-lab/staden-io_lib.git") | ||||
|                     (commit (string-append "v" version)))) | ||||
|               (file-name (string-append name "-" version "-checkout")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1x8kxxqxl892vwfbprlbyfwkkv7c34ggkc94892x9x0g37x5nbwx")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments '(#:parallel-tests? #f)) ; not supported | ||||
|     (inputs | ||||
|      `(("zlib" ,zlib))) | ||||
|     (native-inputs | ||||
|      `(("perl" ,perl)))                 ; for tests | ||||
|     (home-page "https://github.com/COMBINE-lab/staden-io_lib") | ||||
|     (synopsis "General purpose trace and experiment file library") | ||||
|     (description "This package provides a library of file reading and writing | ||||
| code to provide a general purpose Trace file (and Experiment File) reading | ||||
| interface. | ||||
| 
 | ||||
| The following file formats are supported: | ||||
| 
 | ||||
| @enumerate | ||||
| @item SCF trace files | ||||
| @item ABI trace files | ||||
| @item ALF trace files | ||||
| @item ZTR trace files | ||||
| @item SFF trace archives | ||||
| @item SRF trace archives | ||||
| @item Experiment files | ||||
| @item Plain text files | ||||
| @item SAM/BAM sequence files | ||||
| @item CRAM sequence files | ||||
| @end enumerate\n") | ||||
|     (license license:bsd-3))) | ||||
| 
 | ||||
| (define spdlog-for-salmon | ||||
|   (package | ||||
|     (name "spdlog") | ||||
|     (version "0.14.0") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|                     (url "https://github.com/COMBINE-lab/spdlog.git") | ||||
|                     (commit (string-append "v" version)))) | ||||
|               (file-name (string-append name "-" version "-checkout")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "13730429gwlabi432ilpnja3sfvy0nn2719vnhhmii34xcdyc57q")))) | ||||
|     (build-system cmake-build-system) | ||||
|     (home-page "https://github.com/COMBINE-lab/spdlog") | ||||
|     (synopsis "Very fast C++ logging library") | ||||
|     (description "Spdlog is a very fast header-only C++ logging library with | ||||
| performance as its primary goal.") | ||||
|     (license license:expat))) | ||||
| 
 | ||||
| ;; This is a modified variant of bwa for use with Salmon. It installs a | ||||
| ;; library to avoid having to build this as part of Salmon. | ||||
| (define bwa-for-salmon | ||||
|   (package (inherit bwa) | ||||
|     (name "bwa") | ||||
|     (version "0.7.12.5") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|                     (url "https://github.com/COMBINE-lab/bwa.git") | ||||
|                     (commit (string-append "v" version)))) | ||||
|               (file-name (string-append "bwa-for-salmon-" version "-checkout")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1z2qa64y0c5hky10510x137mnzlhz6k8qf27csw4w9j6qihq95gb")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      '(#:tests? #f ;no "check" target | ||||
|        #:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (replace 'install | ||||
|            (lambda* (#:key outputs #:allow-other-keys) | ||||
|              (let* ((out (assoc-ref outputs "out")) | ||||
|                     (bin (string-append out "/bin")) | ||||
|                     (lib (string-append out "/lib")) | ||||
|                     (doc (string-append out "/share/doc/bwa")) | ||||
|                     (man (string-append out "/share/man/man1")) | ||||
|                     (inc (string-append out "/include/bwa"))) | ||||
|                (install-file "bwa" bin) | ||||
|                (install-file "README.md" doc) | ||||
|                (install-file "bwa.1" man) | ||||
|                (install-file "libbwa.a" lib) | ||||
|                (mkdir-p lib) | ||||
|                (mkdir-p inc) | ||||
|                (for-each (lambda (file) | ||||
|                            (install-file file inc)) | ||||
|                          (find-files "." "\\.h$"))) | ||||
|              #t)) | ||||
|          ;; no "configure" script | ||||
|          (delete 'configure)))))) | ||||
| 
 | ||||
| (define-public salmon | ||||
|   (package | ||||
|     (name "salmon") | ||||
|     (version "0.9.1") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|                     (url "https://github.com/COMBINE-lab/salmon.git") | ||||
|                     (commit (string-append "v" version)))) | ||||
|               (file-name (string-append name "-" version "-checkout")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1zi1ff4i7y2ykk0vdzysgwzzzv166vg2x77pj1mf4baclavxj87a")) | ||||
|               (modules '((guix build utils))) | ||||
|               (snippet | ||||
|                '(begin | ||||
|                   ;; Delete bundled headers for eigen3. | ||||
|                   (delete-file-recursively "include/eigen3/") | ||||
|                   #t)))) | ||||
|     (build-system cmake-build-system) | ||||
|     (arguments | ||||
|      `(#:configure-flags | ||||
|        (list (string-append "-DBOOST_INCLUDEDIR=" | ||||
|                             (assoc-ref %build-inputs "boost") | ||||
|                             "/include/") | ||||
|              (string-append "-DBOOST_LIBRARYDIR=" | ||||
|                             (assoc-ref %build-inputs "boost") | ||||
|                             "/lib/") | ||||
|              (string-append "-DBoost_LIBRARIES=" | ||||
|                             "-lboost_iostreams " | ||||
|                             "-lboost_filesystem " | ||||
|                             "-lboost_system " | ||||
|                             "-lboost_thread " | ||||
|                             "-lboost_timer " | ||||
|                             "-lboost_chrono " | ||||
|                             "-lboost_program_options") | ||||
|              "-DBoost_FOUND=TRUE" | ||||
|              "-DTBB_LIBRARIES=tbb tbbmalloc" | ||||
|              ;; Don't download RapMap---we already have it! | ||||
|              "-DFETCHED_RAPMAP=1") | ||||
|        #:phases | ||||
|        (modify-phases %standard-phases | ||||
|          ;; Boost cannot be found, even though it's right there. | ||||
|          (add-after 'unpack 'do-not-look-for-boost | ||||
|            (lambda* (#:key inputs #:allow-other-keys) | ||||
|              (substitute* "CMakeLists.txt" | ||||
|                (("find_package\\(Boost 1\\.53\\.0") "#")))) | ||||
|          (add-after 'unpack 'do-not-phone-home | ||||
|            (lambda _ | ||||
|              (substitute* "src/Salmon.cpp" | ||||
|                (("getVersionMessage\\(\\)") "\"\"")))) | ||||
|          (add-after 'unpack 'prepare-rapmap | ||||
|            (lambda* (#:key inputs #:allow-other-keys) | ||||
|              (let ((src "external/install/src/rapmap/") | ||||
|                    (include "external/install/include/rapmap/") | ||||
|                    (rapmap (assoc-ref inputs "rapmap"))) | ||||
|                (mkdir-p src) | ||||
|                (mkdir-p include) | ||||
|                (for-each (lambda (file) | ||||
|                            (install-file file src)) | ||||
|                          (find-files (string-append rapmap "/src") "\\.(c|cpp)")) | ||||
|                (copy-recursively (string-append rapmap "/include") include) | ||||
|                (for-each delete-file '("external/install/include/rapmap/xxhash.h" | ||||
|                                        "external/install/include/rapmap/FastxParser.hpp" | ||||
|                                        "external/install/include/rapmap/concurrentqueue.h" | ||||
|                                        "external/install/include/rapmap/FastxParserThreadUtils.hpp" | ||||
|                                        "external/install/src/rapmap/FastxParser.cpp" | ||||
|                                        "external/install/src/rapmap/xxhash.c"))))) | ||||
|          (add-after 'unpack 'use-system-libraries | ||||
|            (lambda* (#:key inputs #:allow-other-keys) | ||||
|              (substitute* "src/CMakeLists.txt" | ||||
|                (("\\$\\{GAT_SOURCE_DIR\\}/external/install/include/jellyfish-2.2..") | ||||
|                 (string-append (assoc-ref inputs "jellyfish") | ||||
|                                "/include/jellyfish-" ,(package-version jellyfish))) | ||||
|                (("\\$\\{GAT_SOURCE_DIR\\}/external/install/lib/libjellyfish-2.0.a") | ||||
|                 (string-append (assoc-ref inputs "jellyfish") | ||||
|                                "/lib/libjellyfish-2.0.a")) | ||||
|                (("\\$\\{GAT_SOURCE_DIR\\}/external/install/lib/libdivsufsort.a") | ||||
|                 (string-append (assoc-ref inputs "libdivsufsort") | ||||
|                                "/lib/libdivsufsort.so")) | ||||
|                (("\\$\\{GAT_SOURCE_DIR\\}/external/install/lib/libstaden-read.a") | ||||
|                 (string-append (assoc-ref inputs "libstadenio-for-salmon") | ||||
|                                "/lib/libstaden-read.a")) | ||||
|                (("\\$\\{GAT_SOURCE_DIR\\}/external/install/lib/libbwa.a") | ||||
|                 (string-append (assoc-ref inputs "bwa") "/lib/libbwa.a")) | ||||
|                (("\\$\\{GAT_SOURCE_DIR\\}/external/install/lib/libdivsufsort64.a") | ||||
|                 (string-append (assoc-ref inputs "libdivsufsort") | ||||
|                                "/lib/libdivsufsort64.so"))) | ||||
|              (substitute* "CMakeLists.txt" | ||||
|                ;; Don't prefer static libs | ||||
|                (("SET\\(CMAKE_FIND_LIBRARY_SUFFIXES.*") "") | ||||
|                (("set\\(TBB_LIBRARIES") "message(") | ||||
|                (("find_package\\(Jellyfish.*") "") | ||||
|                (("ExternalProject_Add\\(libcereal") "message(") | ||||
|                (("ExternalProject_Add\\(libbwa") "message(") | ||||
|                (("ExternalProject_Add\\(libjellyfish") "message(") | ||||
|                (("ExternalProject_Add\\(libgff") "message(") | ||||
|                (("ExternalProject_Add\\(libtbb") "message(") | ||||
|                (("ExternalProject_Add\\(libspdlog") "message(") | ||||
|                (("ExternalProject_Add\\(libdivsufsort") "message(") | ||||
|                (("ExternalProject_Add\\(libstadenio") "message(") | ||||
|                (("ExternalProject_Add_Step\\(") "message(")) | ||||
| 
 | ||||
|              ;; Ensure that all headers can be found | ||||
|              (setenv "CPLUS_INCLUDE_PATH" | ||||
|                      (string-append (getenv "CPLUS_INCLUDE_PATH") | ||||
|                                     ":" | ||||
|                                     (assoc-ref inputs "bwa") | ||||
|                                     "/include/bwa" | ||||
|                                     ":" | ||||
|                                     (assoc-ref inputs "eigen") | ||||
|                                     "/include/eigen3")) | ||||
|              (setenv "CPATH" | ||||
|                      (string-append (assoc-ref inputs "bwa") | ||||
|                                     "/include/bwa" | ||||
|                                     ":" | ||||
|                                     (assoc-ref inputs "eigen") | ||||
|                                     "/include/eigen3")) | ||||
|              #t)) | ||||
|          ;; CMAKE_INSTALL_PREFIX does not exist when the tests are | ||||
|          ;; run.  It only exists after the install phase. | ||||
|          (add-after 'unpack 'fix-tests | ||||
|            (lambda _ | ||||
|              (substitute* "src/CMakeLists.txt" | ||||
|                (("DTOPLEVEL_DIR=\\$\\{CMAKE_INSTALL_PREFIX") | ||||
|                 "DTOPLEVEL_DIR=${GAT_SOURCE_DIR")) | ||||
|              #t))))) | ||||
|     (inputs | ||||
|      `(("boost" ,boost) | ||||
|        ("bwa" ,bwa-for-salmon) | ||||
|        ("bzip2" ,bzip2) | ||||
|        ("cereal" ,cereal) | ||||
|        ("eigen" ,eigen) | ||||
|        ("rapmap" ,(origin | ||||
|                     (method git-fetch) | ||||
|                     (uri (git-reference | ||||
|                           (url "https://github.com/COMBINE-lab/RapMap.git") | ||||
|                           (commit (string-append "salmon-v" version)))) | ||||
|                     (file-name (string-append "rapmap-salmon-v" version "-checkout")) | ||||
|                     (sha256 | ||||
|                      (base32 | ||||
|                       "1yc12yqsz6f0r8sg1qnk57xg34aqwc9jbqq6gd5ys28xw3plj98p")))) | ||||
|        ("jemalloc" ,jemalloc) | ||||
|        ("jellyfish" ,jellyfish) | ||||
|        ("libgff" ,libgff) | ||||
|        ("tbb" ,tbb) | ||||
|        ("libdivsufsort" ,libdivsufsort) | ||||
|        ("libstadenio-for-salmon" ,libstadenio-for-salmon) | ||||
|        ("spdlog-for-salmon" ,spdlog-for-salmon) | ||||
|        ("xz" ,xz) | ||||
|        ("zlib" ,zlib))) | ||||
|     (home-page "https://github.com/COMBINE-lab/salmon") | ||||
|     (synopsis "Quantification from RNA-seq reads using lightweight alignments") | ||||
|     (description "Salmon is a program to produce highly-accurate, | ||||
| transcript-level quantification estimates from RNA-seq data.  Salmon achieves | ||||
| its accuracy and speed via a number of different innovations, including the | ||||
| use of lightweight alignments (accurate but fast-to-compute proxies for | ||||
| traditional read alignments) and massively-parallel stochastic collapsed | ||||
| variational inference.") | ||||
|     (license license:gpl3+))) | ||||
|  |  | |||
		Reference in a new issue