guix-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#35792] [PATCH 7/7] gnu: Add freebayes.


From: Pjotr Prins
Subject: [bug#35792] [PATCH 7/7] gnu: Add freebayes.
Date: Thu, 1 Aug 2019 09:38:35 -0500
User-agent: NeoMutt/20170113 (1.7.2)

Can someone push this?

On Sat, May 18, 2019 at 07:26:40PM +0200, Pierre Neidhardt wrote:
> * gnu/packages/bioinformatics.scm (freebayes): New variable.
> ---
>  gnu/packages/bioinformatics.scm | 127 ++++++++++++++++++++++++++++++++
>  1 file changed, 127 insertions(+)
> 
> diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
> index 665c807de9..704db184eb 100644
> --- a/gnu/packages/bioinformatics.scm
> +++ b/gnu/packages/bioinformatics.scm
> @@ -15103,3 +15103,130 @@ and operating on records of genomic variation as it 
> can be described by the VCF
>  format, and a collection of command-line utilities for executing complex
>  manipulations on VCF files.")
>        (license license:expat))))
> +
> +(define-public freebayes
> +  (let ((commit "3ce827d8ebf89bb3bdc097ee0fe7f46f9f30d5fb")
> +        (revision "1")
> +        (version "1.0.2"))
> +    (package
> +      (name "freebayes")
> +      (version (git-version version revision commit))
> +      (source (origin
> +                (method git-fetch)
> +                (uri (git-reference
> +                      (url "https://github.com/ekg/freebayes.git";)
> +                      (commit commit)))
> +                (file-name (git-file-name name version))
> +                (sha256
> +                 (base32 
> "1sbzwmcbn78ybymjnhwk7qc5r912azy5vqz2y7y81616yc3ba2a2"))))
> +      (build-system gnu-build-system)
> +      (inputs
> +       `(("zlib" ,zlib)
> +         ("htslib" ,htslib)))
> +      (native-inputs
> +       `(("bc" ,bc)                     ; Needed for running tests.
> +         ("samtools" ,samtools)         ; Needed for running tests.
> +         ("parallel" ,parallel)         ; Needed for running tests.
> +         ("procps" ,procps)             ; Needed for running tests.
> +         ("bamtools" ,bamtools)
> +         ("bamtools" ,bamtools)
> +         ("vcflib-src" ,(package-source vcflib))
> +         ;; These are submodules for the vcflib version used in freebayes.
> +         ;; This package builds against the .o files so we need to extract 
> the source.
> +         ("tabixpp-src" ,(package-source tabixpp-freebayes))
> +         ("smithwaterman-src" ,(package-source smithwaterman))
> +         ("multichoose-src" ,(package-source multichoose))
> +         ("fsom-src" ,(package-source fsom))
> +         ("filevercmp-src" ,(package-source filevercmp))
> +         ("fastahack-src" ,(package-source fastahack))
> +         ("intervaltree-src"
> +          ,(origin
> +             (method url-fetch)
> +             (uri (string-append
> +                   "https://github.com/ekg/intervaltree/archive/";
> +                   "dbb4c513d1ad3baac516fc1484c995daf9b42838" ".tar.gz"))
> +             (file-name "intervaltree-src.tar.gz")
> +             (sha256
> +              (base32 
> "19prwpn2wxsrijp5svfqvfcxl5nj7zdhm3jycd5kqhl9nifpmcks"))))
> +         ;; These submodules are needed to run the tests.
> +         ("bash-tap-src" ,(package-source bash-tap))
> +         ("test-simple-bash-src"
> +          ,(origin
> +             (method git-fetch)
> +             (uri (git-reference
> +                   (url "https://github.com/ingydotnet/test-simple-bash/";)
> +                   (commit "124673ff204b01c8e96b7fc9f9b32ee35d898acc")))
> +             (file-name "test-simple-bash-src.tar.gz")
> +             (sha256
> +              (base32 
> "043plp6z0x9yf7mdpky1fw7zcpwn1p47px95w9mh16603zqqqpga"))))))
> +      (arguments
> +       `(#:tests? #f    ; TODO: Re-enable when we have grep with perl 
> support.
> +         #:phases
> +         (modify-phases %standard-phases
> +           (delete 'configure)
> +           (add-after 'unpack 'unpack-submodule-sources
> +             (lambda* (#:key inputs #:allow-other-keys)
> +               (let ((unpack (lambda (source target)
> +                               (with-directory-excursion target
> +                                 (if (file-is-directory? (assoc-ref inputs 
> source))
> +                                     (copy-recursively (assoc-ref inputs 
> source) ".")
> +                                     (invoke "tar" "xvf"
> +                                             (assoc-ref inputs source)
> +                                             "--strip-components=1"))))))
> +                 (and
> +                  (unpack "vcflib-src" "vcflib")
> +                  (unpack "fastahack-src" "vcflib/fastahack")
> +                  (unpack "filevercmp-src" "vcflib/filevercmp")
> +                  (unpack "fsom-src" "vcflib/fsom")
> +                  (unpack "intervaltree-src" "vcflib/intervaltree")
> +                  (unpack "multichoose-src" "vcflib/multichoose")
> +                  (unpack "smithwaterman-src" "vcflib/smithwaterman")
> +                  (unpack "tabixpp-src" "vcflib/tabixpp")
> +                  (unpack "test-simple-bash-src" "test/test-simple-bash")
> +                  (unpack "bash-tap-src" "test/bash-tap")))))
> +           (add-after 'unpack-submodule-sources 'fix-makefile
> +             (lambda* (#:key inputs #:allow-other-keys)
> +               ;; We don't have the .git folder to get the version tag from.
> +               (substitute* '("vcflib/Makefile")
> +                 (("^GIT_VERSION.*") (string-append "GIT_VERSION = v" 
> ,version)))))
> +           (replace 'build
> +             (lambda* (#:key inputs make-flags #:allow-other-keys)
> +               (with-directory-excursion "vcflib"
> +                 (with-directory-excursion "tabixpp"
> +                   (pk "Compile tabixpp before compiling the main project.")
> +                   (let ((htslib-ref (assoc-ref inputs "htslib")))
> +                     (invoke "make" "HTS_HEADERS="
> +                             (string-append "HTS_LIB=" htslib-ref 
> "/lib/libhts.a")
> +                             (string-append "LIBPATH=-L. -L" htslib-ref 
> "/include"))))
> +                 (pk "Compile vcflib before compiling the main project.")
> +                 (invoke "make" "CC=gcc"
> +                         (string-append "CFLAGS=\"" "-Itabixpp "
> +                                        "-I" (assoc-ref inputs "htslib") 
> "/include " "\"")
> +                         "all"))
> +               (pk "Compile the main project.")
> +               (with-directory-excursion "src"
> +                 (substitute* "Makefile"
> +                   (("-I\\$\\(BAMTOOLS_ROOT\\)/src") 
> "-I$(BAMTOOLS_ROOT)/include/bamtools"))
> +                 (invoke "make"
> +                         (string-append "BAMTOOLS_ROOT="
> +                                        (assoc-ref inputs "bamtools"))))))
> +           (replace 'install
> +             (lambda* (#:key outputs #:allow-other-keys)
> +               (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
> +                 (install-file "bin/freebayes" bin)
> +                 (install-file "bin/bamleftalign" bin))))
> +           ;; TODO: There are three tests that fail.  All because of the -P
> +           ;; (--perl-regexp) option in grep, which is not compiled into the
> +           ;; version of grep in Guix.
> +           (replace 'check
> +             (lambda* (#:key tests? #:allow-other-keys)
> +               (when tests?
> +                 (invoke "make" "test")))))))
> +      (home-page "https://github.com/ekg/freebayes";)
> +      (synopsis "Haplotype-based variant detector")
> +      (description "FreeBayes is a Bayesian genetic variant detector 
> designed to
> +find small polymorphisms, specifically SNPs (single-nucleotide 
> polymorphisms),
> +indels (insertions and deletions), MNPs (multi-nucleotide polymorphisms), and
> +complex events (composite insertion and substitution events) smaller than the
> +length of a short-read sequencing alignment.")
> +      (license license:expat))))
> -- 
> 2.21.0
> 
> 
> 
> 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]