From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Woodcroft Subject: [PATCH 22/22] gnu: Add roary. Date: Wed, 27 Jul 2016 22:54:23 +1000 Message-ID: References: <20160727125423.7768-1-donttrustben@gmail.com> Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:55455) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bSONK-0000XZ-NU for guix-devel@gnu.org; Wed, 27 Jul 2016 08:55:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bSONH-0004mn-LA for guix-devel@gnu.org; Wed, 27 Jul 2016 08:55:50 -0400 Received: from mail-pa0-x241.google.com ([2607:f8b0:400e:c03::241]:33051) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bSONH-0004mX-AZ for guix-devel@gnu.org; Wed, 27 Jul 2016 08:55:47 -0400 Received: by mail-pa0-x241.google.com with SMTP id q2so1755782pap.0 for ; Wed, 27 Jul 2016 05:55:47 -0700 (PDT) Received: from localhost.localdomain ([103.25.181.216]) by smtp.googlemail.com with ESMTPSA id o80sm9177941pfa.67.2016.07.27.05.55.43 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 27 Jul 2016 05:55:45 -0700 (PDT) In-Reply-To: <20160727125423.7768-1-donttrustben@gmail.com> In-Reply-To: References: List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: guix-devel@gnu.org * gnu/packages/bioinformatics.scm (roary): New variable. --- gnu/packages/bioinformatics.scm | 120 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 4e599a7..7d4139b 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -63,6 +63,7 @@ #:use-module (gnu packages mpi) #:use-module (gnu packages ncurses) #:use-module (gnu packages pcre) + #:use-module (gnu packages parallel) #:use-module (gnu packages pdf) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -3297,6 +3298,125 @@ format. It runs quickly, in an unsupervised fashion, handles gaps, handles partial genes, and identifies translation initiation sites.") (license license:gpl3+))) +(define-public roary + (package + (name "roary") + (version "3.6.6") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/A/AJ/AJPAGE/Bio-Roary-" + version ".tar.gz")) + (sha256 + (base32 + "1qscm97xa6vxxxlbh730gyp3b001abcg8iy2hvaqymc596x7hpi3")))) + (build-system perl-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'delete-bundled-binaries + (lambda _ + (delete-file-recursively "binaries") + #t)) + (delete 'configure) + (delete 'build) + (replace 'check + (lambda _ + ;; The tests are not run by default, so we run each test file + ;; directly. + (setenv "PATH" (string-append (getcwd) "/bin" ":" + (getenv "PATH"))) + (setenv "PERL5LIB" (string-append (getcwd) "/lib" ":" + (getenv "PERL5LIB"))) + (zero? (length (filter (lambda (file) + (display file)(display "\n") + (not (zero? (system* "perl" file)))) + (find-files "t" ".*\\.t$")))))) + (replace 'install + ;; There is no 'install' target in the Makefile. + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (perl (string-append out "/lib/perl5/site_perl")) + (roary-plots "contrib/roary_plots")) + (mkdir-p bin) + (mkdir-p perl) + (copy-recursively "bin" bin) + (copy-recursively "lib" perl) + #t))) + (add-after 'install 'wrap-programs + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (perl5lib (getenv "PERL5LIB")) + (path (getenv "PATH"))) + (for-each (lambda (prog) + (let ((binary (string-append out "/" prog))) + (wrap-program binary + `("PERL5LIB" ":" prefix + (,(string-append perl5lib ":" out + "/lib/perl5/site_perl")))) + (wrap-program binary + `("PATH" ":" prefix + (,(string-append path ":" out "/bin")))))) + (find-files "bin" ".*[^R]$")) + (let ((file + (string-append out "/bin/roary-create_pan_genome_plots.R")) + (r-site-lib (getenv "R_LIBS_SITE")) + (coreutils-path + (string-append (assoc-ref inputs "coreutils") "/bin"))) + (wrap-program file + `("R_LIBS_SITE" ":" prefix + (,(string-append r-site-lib ":" out "/site-library/")))) + (wrap-program file + `("PATH" ":" prefix + (,(string-append coreutils-path ":" out "/bin")))))) + #t))))) + (native-inputs + `(("perl-env-path" ,perl-env-path) + ("perl-test-files" ,perl-test-files) + ("perl-test-most" ,perl-test-most) + ("perl-test-output" ,perl-test-output))) + (inputs + `(("perl-array-utils" ,perl-array-utils) + ("bioperl" ,bioperl-minimal) + ("perl-exception-class" ,perl-exception-class) + ("perl-file-find-rule" ,perl-file-find-rule) + ("perl-file-grep" ,perl-file-grep) + ("perl-file-slurper" ,perl-file-slurper) + ("perl-file-which" ,perl-file-which) + ("perl-graph" ,perl-graph) + ("perl-graph-readwrite" ,perl-graph-readwrite) + ("perl-log-log4perl" ,perl-log-log4perl) + ("perl-moose" ,perl-moose) + ("perl-perlio-utf8_strict" ,perl-perlio-utf8_strict) + ("perl-text-csv" ,perl-text-csv) + ("bedtools" ,bedtools) + ("cd-hit" ,cd-hit) + ("blast+" ,blast+) + ("mcl" ,mcl) + ("parallel" ,parallel) + ("prank" ,prank) + ("mafft" ,mafft) + ("fasttree" ,fasttree) + ("grep" ,grep) + ("sed" ,sed) + ("gawk" ,gawk) + ("r" ,r) + ("r-ggplot2" ,r-ggplot2) + ("coreutils" ,coreutils))) + (home-page "http://sanger-pathogens.github.io/Roary") + (synopsis "High speed stand-alone pan genome pipeline") + (description + "Roary is a high speed stand alone pan genome pipeline, which takes +annotated assemblies in GFF3 format (produced by the Prokka program) and +calculates the pan genome. Using a standard desktop PC, it can analyse +datasets with thousands of samples, without compromising the quality of the +results. 128 samples can be analysed in under 1 hour using 1 GB of RAM and a +single processor. Roary is not intended for meta-genomics or for comparing +extremely diverse sets of genomes.") + (license license:gpl3))) + (define-public raxml (package (name "raxml") -- 2.9.1