diff options
-rw-r--r-- | gn/packages/bioinformatics.scm | 435 | ||||
-rw-r--r-- | gn/packages/perl.scm | 196 |
2 files changed, 627 insertions, 4 deletions
diff --git a/gn/packages/bioinformatics.scm b/gn/packages/bioinformatics.scm index 91901a6..677de1d 100644 --- a/gn/packages/bioinformatics.scm +++ b/gn/packages/bioinformatics.scm @@ -12,12 +12,14 @@ #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system meson) + #:use-module (guix build-system perl) #:use-module (guix build-system python) #:use-module (guix build-system trivial) #:use-module (guix build-system waf) #:use-module (gnu packages) #:use-module (gn packages crates-io) #:use-module (gn packages java) + #:use-module (gn packages perl) #:use-module (gn packages python) #:use-module (gn packages twint) #:use-module (gnu packages algebra) @@ -2407,3 +2409,436 @@ To run the bundled rtg-tools software you will also need java. The @code{icedtea:jdk} output should work nicely.") (license (list license:expat ; bundled jsoncpp, klib license:bsd-2)))) + +(define-public braker + (package + (name "braker") + (version "2.1.6") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Gaius-Augustus/BRAKER") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0jx9ycyh8s42yb4va84mcjyh7m95wzvf42skc3p4pvc5r7c5ns41")))) + (build-system perl-build-system) + (arguments + `(#:modules ((srfi srfi-26) + (guix build perl-build-system) + (guix build utils)) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "prove" "-l" "t")))) + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (with-directory-excursion "scripts" + (for-each (cut install-file <> bin) + (find-files "." "\\.(py|pl|pm)$")) + (for-each + (cut wrap-script <> + `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB") + ,bin))) + ;; braker.pl is the entry point so wrap it separately. + (delete (string-append bin "/braker.pl") + (find-files bin "\\.pl$"))) + (wrap-script (string-append bin "/braker.pl") + `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB") + ,bin)) + `("PATH" ":" prefix (;,(assoc-ref inputs "augustus") + ;,(assoc-ref inputs "genemark") + ,(assoc-ref inputs "bamtools") + ,(assoc-ref inputs "samtools") + ,(assoc-ref inputs "prothint") + ;,(assoc-ref inputs "genomethreader") + ,(assoc-ref inputs "spaln") + ,(assoc-ref inputs "exonerate") + ,(assoc-ref inputs "ncbi-blast") + ,(assoc-ref inputs "diamond") + ,(assoc-ref inputs "cdbfasta") + ;,(assoc-ref inputs "gushr") + ;,(assoc-ref inputs "ucsc") + )) + ;`("GENEMARK_PATH" "=" (,(string-append (assoc-ref inputs "genemark") "/bin"))) + ;`("AUGUSTUS_BIN_PATH" "=" (,(string-append (assoc-ref inputs "augustus") "/bin"))) + ;`("AUGUSTUS_AUGUSTUS_SCRIPTS_PATH" "=" (,(string-append (assoc-ref inputs "augustus") "/bin/augustus_scripts"))) + `("PYTHON3_PATH" "=" (,(string-append (assoc-ref inputs "python") "/bin"))) + `("BAMTOOLS_PATH" "=" (,(string-append (assoc-ref inputs "bamtools") "/bin"))) + `("DIAMOND_PATH" "=" (,(string-append (assoc-ref inputs "diamond") "/bin"))) + `("BLAST_PATH" "=" (,(string-append (assoc-ref inputs "blast+") "/bin"))) + `("PROTHINT_PATH" "=" (,(string-append (assoc-ref inputs "prothint") "/bin"))) + `("SAMTOOLS_PATH" "=" (,(string-append (assoc-ref inputs "samtools") "/bin"))) + `("CDBTOOLS_PATH" "=" (,(string-append (assoc-ref inputs "cdbfasta") "/bin"))) + `("ALIGNMENT_TOOL_PATH" "=" (,(string-append (assoc-ref inputs "spaln") "/bin/spaln") + ,(string-append (assoc-ref inputs "exonerate") "/bin/exonerate"))) + ;`("MAKEHUB_PATH" "=" (,(string-append (assoc-ref inputs "makehub") "/bin"))) + ) + )))) + ))) + (inputs + `( + ("guile" ,guile-3.0) ; for wrap-script + + ;("augustus" ,augustus) + ;("genemark" ,genemark) + ("bamtools" ,bamtools) + ("samtools" ,samtools) + ("prothint" ,prothint) + ;("genometracker" ,genometracker) + ("spaln" ,spaln) + ("exonerate" ,exonerate) + ("ncbi-blast" ,blast+) + ("diamond" ,diamond) + ("cbdfasta" ,cbdfasta) ; provides cdbfasta and cdbyank + ;("gushr" ,gushr) + ;("makehub" ,makehub) + ;("ucsc" ,ucsc-genome-browser) ; provides bin/twoBitInfo and bin/faToTwoBit + + ("perl" ,perl) + ("perl-hash-merge" ,perl-hash-merge) + ("perl-math-utils" ,perl-math-utils) + ("perl-mce" ,perl-mce) + ("perl-module-load-conditional" ,perl-module-load-conditional) + ("perl-parallel-forkmanager" ,perl-parallel-forkmanager) + ("perl-yaml" ,perl-yaml) + ("python" ,python) + )) + (native-inputs + `( + )) + (home-page "https://github.com/Gaius-Augustus/BRAKER") + (synopsis + "Pipeline for fully automated prediction of protein coding gene structures") + (description "The rapidly growing number of sequenced genomes requires +fully automated methods for accurate gene structure annotation. With this goal +in mind, we have developed BRAKER1, a combination of GeneMark-ET and AUGUSTUS +that uses genomic and RNA-Seq data to automatically generate full gene structure +annotations in novel genome. +However, the quality of RNA-Seq data that is available for annotating a novel +genome is variable, and in some cases, RNA-Seq data is not available, at all. +BRAKER2 is an extension of BRAKER1 which allows for fully automated training of +the gene prediction tools GeneMark-EX and AUGUSTUS from RNA-Seq and/or protein +homology information, and that integrates the extrinsic evidence from RNA-Seq +and protein homology information into the prediction. +In contrast to other available methods that rely on protein homology +information, BRAKER2 reaches high gene prediction accuracy even in the absence +of the annotation of very closely related species and in the absence of +RNA-Seq data.") + (license license:artistic2.0))) + +(define-public prothint + (package + (name "prothint") + (version "2.6.0") + (source + (origin + ;; Tests not included in release. + (method git-fetch) + (uri (git-reference + (url "https://github.com/gatech-genemark/ProtHint") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0fwz8rxlmfxn5im2ck0jnqi3qaps1rnpkbh0l8k0waw2di5982zf")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Lets at least remove the executables ... + (delete-file "dependencies/diamond") + (delete-file "dependencies/probuild") + (delete-file "dependencies/spaln") + (delete-file "dependencies/spaln_boundary_scorer"))))) + (build-system perl-build-system) + (arguments + `(#:tests? #f ; TODO: Test suite fails, or packaging is wrong? + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'adjust-source + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "bin/spalnBatch.sh" + (("\\$binDir/\\.\\./dependencies/spaln\\\"") + (string-append (assoc-ref inputs "spaln") "/bin/spaln\"")) + (("\\$binDir/\\.\\./dependencies/spaln_boundary_scorer\\\"") + (string-append (assoc-ref inputs "spaln-boundary-scorer") + "/bin/spaln_boundary_scorer\"")) + (("\\$binDir/\\.\\./dependencies/spaln_table\\\"") + (string-append (assoc-ref inputs "spaln") + "/share/spaln/table\"")) + ))) + (delete 'configure) + (delete 'build) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (substitute* "tests/common.py" + (("/bin/bash") (which "bash"))) + (invoke "./tests/test_ProtHint.py") + (invoke "./tests/test_Spaln.py") + (invoke "./tests/test_iter.py")))) + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (with-directory-excursion "scripts" + (for-each (cut install-file <> bin) + (find-files "bin" "\\.(pl|py|sh)$")) + (for-each + (cut wrap-script <> + `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB")))) + (find-files bin "\\.pl$")) + (for-each + (cut wrap-script <> + `("PATH" ":" prefix (,(assoc-ref inputs "coreutils") + ,(assoc-ref inputs "diamond") + ;,(assoc-ref inputs "genemark") + ,(assoc-ref inputs "grep") + ,(assoc-ref inputs "spaln")))) + (find-files bin "\\.py$"))))))))) + (inputs + `(("guile" ,guile-3.0) ; for wrap-script + + ;("genemark" ,genemark) + ("spaln" ,spaln) + ("spaln-boundary-scorer" ,spaln-boundary-scorer) + ("diamond" ,diamond) + ("grep" ,grep) + + ("perl" ,perl) + ("perl-mce" ,perl-mce) + ("perl-math-utils" ,perl-math-utils) + ("perl-yaml" ,perl-yaml) + ("python" ,python))) + (home-page "https://github.com/gatech-genemark/ProtHint") + (synopsis + "Protein hint generation pipeline for gene finding in eukaryotic genomes") + (description "ProtHint is a pipeline for predicting and scoring hints (in +the form of introns, start and stop codons) in the genome of interest by mapping +and spliced aligning predicted genes to a database of reference protein +sequences.") + ;; Licensee may use the Product solely for Licensee's own internal research purposes. + (license license:non-copyleft))) + +(define-public cdbfasta + (let ((commit "014498c66eebdd59b6f1b97e8aad0fcedbdd20b1") ; Oct 5, 2018 + (revision "4")) + (package + (name "cdbfasta") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/gpertea/cdbfasta") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1gqgv3q9qwdq6lqnxd9xnfc7bzkxkiz4crr0vmywafsvwvg6nghk")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; TODO: run test suite. + #:phases + (modify-phases %standard-phases + (delete 'configure) ; No configure script. + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "perl" "perltest.pl" "<fasta.cidx>" "<key>")))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((bin (string-append (assoc-ref outputs "out") + "/bin/"))) + (install-file "cdbfasta" bin) + (install-file "cdbyank" bin) + #t)))))) + (inputs + `(("zlib" ,zlib))) + (native-inputs + `(("perl" ,perl))) + (home-page "https://github.com/gpertea/cdbfasta") + (synopsis "CDB (Constant DataBase) indexing and retrieval tools for FASTA files") + (description + "This package provides platform independent file-based hashing tools +(cdbfasta and cdbyank) that can be used for creating indices for quick retrieval +of any particular sequences from large multi-FASTA files.") + (license license:artistic2.0)))) + +(define-public spaln + (package + (name "spaln") + (version "2.4.11") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ogotoh/spaln") + (commit (string-append "ver." version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "049jmaf06v8h8b7fxnwf713dg1hkpb1nf3v4glkvxmq9jwv3d90y")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (let ((out (assoc-ref %outputs "out"))) + (list "--use_zlib=1" + (string-append "--exec_prefix=" out "/bin") + (string-append "--table_dir=" out "/share/spaln/table") + (string-append "--alndbs_dir=" out "/share/spaln/seqdb"))) + #:test-target "test" + #:tests? #f ; test.sh not included in source + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "src"))) + (add-before 'configure 'adjust-source + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "Makefile.in" + (("CFLAGS =") "CFLAGS +=") + (("(\\s+)\\./makmdm.*" all space) + (string-append space "chmod +w $(table_dir)/mdm_*\n" all + space "chmod -w $(table_dir)/mdm_*\n"))))) + (replace 'configure + (lambda* (#:key configure-flags #:allow-other-keys) + ;; The custom configure script doesn't recognize some common flags. + (apply invoke "./configure" configure-flags))) + ;; Move 'check phase to after 'install. + (delete 'check) + (add-after 'install 'check + (assoc-ref %standard-phases 'check)) + (add-after 'install 'make-tarballs-writable + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (for-each make-file-writable (find-files out "\\.gz$"))))) + (add-after 'install 'install-manpages + (lambda* (#:key outputs #:allow-other-keys) + (let ((man1 (string-append (assoc-ref outputs "out") + "/share/man/man1"))) + (mkdir-p man1) + (install-file "../spaln.1" man1) + (install-file "../sortgrcd.1" man1)))) + (add-before 'install-license-files 'chdir + (lambda _ + (chdir "../")))))) + (inputs + `(("zlib" ,zlib))) + (home-page "https://github.com/ogotoh/spaln") + (synopsis + "Genome mapping and spliced alignment of cDNA or amino acid sequences") + (description "@acronym{Spaln, space-efficient spliced alignment} is a +stand-alone program that maps and aligns a set of cDNA or protein sequences onto +a whole genomic sequence in a single job. Spaln also performs spliced or +ordinary alignment after rapid similarity search against a protein sequence +database, if a genomic segment or an amino acid sequence is given as a query.") + (license license:gpl2+))) + +(define-public spaln-boundary-scorer + (let ((commit "b48977154a75a8559ff0398b8858dc2a51768632") + (revision "1")) + (package + (name "spaln-boundary-scorer") + (version "0.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/gatech-genemark/spaln-boundary-scorer") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1f2q37kgw1vk0g3xqq7dkq2wvl6vsfbc58g9g487mq7prjb7nkqc")))) + (build-system gnu-build-system) + (arguments + `(#:test-target "test" + #:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'check + (lambda* (#:key tests? test-target #:allow-other-keys) + (when tests? + (invoke "make" test-target) + (invoke "./test/t_spaln_boundary_scorer")))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((bin (string-append (assoc-ref outputs "out") "/bin"))) + (install-file "spaln_boundary_scorer" bin))))))) + (home-page "https://github.com/gatech-genemark/spaln-boundary-scorer") + (synopsis + "Parse introns, starts, stops and exons from Spaln's alignment output and scores them") + (description "Spaln boundary scorer parses introns, starts, stops and +exons from Spaln's alignment output and scores them. Introns, starts and stops +are scored based on local alignment quality around their boundaries.") + ;; https://github.com/gatech-genemark/spaln-boundary-scorer/issues/1 + (license license:non-copyleft)))) + +;; Not currently working +(define-public genemark + (package + (name "genemark") + (version "4.68") + (source + (origin + (method url-fetch) + (uri "file:///gnu/store/1xjfwgqz6kif8a9dy0hlc3a67vjrpipx-gmes_linux_64.tar.gz") + (file-name "gmes_linux_64.tar.gz") + (sha256 + (base32 + "11j7fr3jmammicvdphq69sh8wmi56aipxiimb6vdfc9z3lafz308")) + (modules '((guix build utils))) + (snippet + '(begin + (delete-file-recursively "ProtHint"))))) + (build-system gnu-build-system) + (arguments + `( + #:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (add-after 'unpack 'add-license-key + (lambda _ + (setenv "HOME" (getcwd)) + ;; Provided key good until ~ 2022-09-04 + (with-output-to-file ".gm_key" + (lambda _ + (format #t + "AACCCACTCACGGGCCAGGGTTTGAGCACTCGAGCTAGTGCAGCATGTTTTTTTTTTTTTTTTCATATGAGCGCCAGTGG~@ + 454168340~%"))))) + ;; This doesn't work, it's statically linked + ;(add-after 'unpack 'set-interpreter + ; (lambda* (#:key inputs #:allow-other-keys) + ; (invoke "patchelf" "--set-interpreter" (car (find-files (assoc-ref inputs "libc") "ld-linux.*\\.so")) "gmhmme3"))) + (replace 'check + (lambda _ + (invoke "bash" "check_install.bash"))) + ))) + (inputs + `(("perl" ,perl) + ("perl-hash-merge" ,perl-hash-merge) + ("perl-mce" ,perl-mce) + ("perl-math-utils" ,perl-math-utils) + ("perl-parallel-forkmanager" ,perl-parallel-forkmanager) + ("perl-yaml" ,perl-yaml) + ("python" ,python))) + (native-inputs + `( + ;("patchelf" ,patchelf) + )) + (home-page "http://exon.gatech.edu/GeneMark/license_download.cgi") + (synopsis "") + (description "") + ;; Precompiled binary + (supported-systems '("x86_64-linux")) + ;; Licensee may use the Product solely for Licensee's own internal research purposes. + (license license:non-copyleft))) diff --git a/gn/packages/perl.scm b/gn/packages/perl.scm index 7945b15..65f3d30 100644 --- a/gn/packages/perl.scm +++ b/gn/packages/perl.scm @@ -19,24 +19,26 @@ (define-module (gn packages perl) #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages) + #:use-module (gnu packages autotools) #:use-module (gnu packages compression) #:use-module (gnu packages databases) - #:use-module (gnu packages readline) - #:use-module (gnu packages autotools) #:use-module (gnu packages java) #:use-module (gnu packages libffi) + #:use-module (gnu packages perl) + #:use-module (gnu packages perl-check) #:use-module (gnu packages python) #:use-module (gnu packages ragel) + #:use-module (gnu packages readline) #:use-module (gnu packages ruby) #:use-module (gnu packages tls) + #:use-module (gnu packages xml) + #:use-module (gnu packages web) #:use-module (gnu packages version-control) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix build-system gnu) - #:use-module (gnu packages xml) - #:use-module (gnu packages web) #:use-module (guix build-system perl)) (define-public perl-time-parsedate ; guix: old lib and tests failing - works though @@ -96,3 +98,189 @@ (synopsis "Pjotr's time logger") (description "None") (license license:gpl2+)))) + +(define-public perl-mce + (package + (name "perl-mce") + (version "1.874") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/M/MA/MARIOROY/MCE-" + version + ".tar.gz")) + (sha256 + (base32 + "1l6khsmwzfr88xb81kdvmdskxgz3pm4yz2ybxkbml4bmhh0y62fq")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-sereal-decoder" ,perl-sereal-decoder) + ("perl-sereal-encoder" ,perl-sereal-encoder))) + (home-page "https://metacpan.org/release/MCE") + (synopsis + "Many-Core Engine for Perl providing parallel processing capabilities") + (description "MCE spawns a pool of workers and therefore does not fork a +new process per each element of data. Instead, MCE follows a bank queuine +model. MCE enhances that model by adding the ability to chunk the next n +elements from the input stream to the next available worker.") + (license license:perl-license))) + +(define-public perl-sereal-decoder + (package + (name "perl-sereal-decoder") + (version "4.018") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/Y/YV/YVES/Sereal-Decoder-" + version + ".tar.gz")) + (sha256 + (base32 + "0wfdixpm3p94mnng474l0nh9mjiy8q8hbrbh2af4vwn2hmazr91f")) + (modules '((guix build utils))) + (snippet + '(begin + (delete-file-recursively "zstd"))))) + (build-system perl-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-source + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "inc/Sereal/BuildTools.pm" + (("-lzstd") + (string-append "-L" (assoc-ref inputs "zstd:lib") + "/lib -lzstd")))))))) + (native-inputs + `(("perl-test-deep" ,perl-test-deep) + ("perl-test-differences" ,perl-test-differences) + ("perl-test-longstring" ,perl-test-longstring) + ("perl-test-warn" ,perl-test-warn))) + (inputs + `(("zstd:lib" ,zstd "lib"))) + (home-page "https://metacpan.org/release/Sereal-Decoder") + (synopsis "Fast, compact, powerful binary deserialization") + (description + "Sereal::Decoder implements a deserializer for an efficient, +compact-output, and feature-rich binary protocol called Sereal.") + (license license:perl-license))) + +(define-public perl-sereal-encoder + (package + (name "perl-sereal-encoder") + (version "4.018") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/Y/YV/YVES/Sereal-Encoder-" + version + ".tar.gz")) + (sha256 + (base32 + "0z9dbkr8ggjqb5g1sikxhy1a359bg08gs3vfg9icqm6xx4gjsv6p")) + (modules '((guix build utils))) + (snippet + '(begin + (delete-file-recursively "zstd"))))) + (build-system perl-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-source + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "inc/Sereal/BuildTools.pm" + (("-lzstd") + (string-append "-L" (assoc-ref inputs "zstd:lib") + "/lib -lzstd")))))))) + (native-inputs + `(("perl-sereal-decoder" ,perl-sereal-decoder) + ("perl-test-deep" ,perl-test-deep) + ("perl-test-differences" ,perl-test-differences) + ("perl-test-longstring" ,perl-test-longstring) + ("perl-test-warn" ,perl-test-warn))) + (inputs + `(("zstd:lib" ,zstd "lib"))) + (home-page "https://metacpan.org/release/Sereal-Encoder") + (synopsis "Fast, compact, powerful binary serialization") + (description + "Sereal::Encoder implements an efficient, compact-output, and feature-rich +serializer using a binary protocol called Sereal.") + (license license:perl-license))) + +(define-public perl-module-load-conditional + (package + (name "perl-module-load-conditional") + (version "0.74") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/B/BI/BINGOS/Module-Load-Conditional-" + version + ".tar.gz")) + (sha256 + (base32 + "0c57c3632657hyhkijxhrk5jsfd09q4dm5d0qbmz281q76lm9hsl")))) + (build-system perl-build-system) + (home-page "https://metacpan.org/release/Module-Load-Conditional") + (synopsis "Looking up module information / loading at runtime") + (description + "Module::Load::Conditional provides simple ways to query and possibly load +any of the modules you have installed on your system during runtime. It is able +to load multiple modules at once or none at all if one of them was not able to +load. It also takes care of any error checking and so forth.") + (license license:perl-license))) + +(define-public perl-scalar-util-numeric + (package + (name "perl-scalar-util-numeric") + (version "0.40") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/C/CH/CHOCOLATE/Scalar-Util-Numeric-" + version + ".tar.gz")) + (sha256 + (base32 + "0h24rji5rkwa0mkggmr5anin92dg87ygnhhr3idxn0q785ninl6p")))) + (build-system perl-build-system) + (home-page "https://metacpan.org/release/Scalar-Util-Numeric") + (synopsis "numeric tests for perl scalars") + (description + "Scalar::Util::Numeric exports a number of wrappers around perl's builtin +@code{looks_like_number} function, which returns the numeric type of its +argument, or 0 if it isn't numeric.") + (license license:perl-license))) + +(define-public perl-math-utils + (package + (name "perl-math-utils") + (version "1.14") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/J/JG/JGAMBLE/Math-Utils-" + version + ".tar.gz")) + (sha256 + (base32 + "1596bwij103w4w5m7102c7bj9x4sjr8a7cibp5qjcqkafgh0m8l8")))) + (build-system perl-build-system) + (native-inputs + `(("perl-module-build" ,perl-module-build))) + (home-page "https://metacpan.org/release/Math-Utils") + (synopsis "Useful mathematical functions not in Perl") + (description + "Math::Utils is a broad collection of useful mathematical functions not +available in core perl. In addition to general-purpose functions such as +log10(), log2(), floor() or fsum(), there are generators to create comparison +functions for floating point (non-integer) numbers as well as some polynomial +operations on plain lists of coefficients.") + (license license:perl-license))) |