diff options
Diffstat (limited to 'gnu/packages/bioinformatics.scm')
-rw-r--r-- | gnu/packages/bioinformatics.scm | 406 |
1 files changed, 292 insertions, 114 deletions
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 02c65eb99a..609c91e7b1 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2015, 2016, 2018, 2019, 2020 Pjotr Prins <pjotr.guix@thebird.nl> ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2016, 2020, 2021 Roel Janssen <roel@gnu.org> -;;; Copyright © 2016-2023 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016-2024 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2020, 2022 Marius Bakke <marius@gnu.org> ;;; Copyright © 2016, 2018 Raoul Bonnal <ilpuccio.febo@gmail.com> ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> @@ -94,7 +94,9 @@ #:use-module (gnu packages gcc) #:use-module (gnu packages gd) #:use-module (gnu packages golang) + #:use-module (gnu packages golang-build) #:use-module (gnu packages golang-check) + #:use-module (gnu packages golang-compression) #:use-module (gnu packages glib) #:use-module (gnu packages graph) #:use-module (gnu packages graphics) @@ -2246,6 +2248,38 @@ parallel. It uses Python's native multiprocessing framework to apply a user defined rule on an input file.") (license license:gpl3))) +(define-public python-pdbfixer + (package + (name "python-pdbfixer") + (version "1.9") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/openmm/pdbfixer") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1zjhb19q5dclkwvzh8n29p31n1vzkhlmmzwqllimi89jsis1cx35")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + '(list "-k" + ;; These tests fail because they require internet access. + (string-append "not test_build_and_simulate.py" + " and not test_cli.py" + " and not test_mutate.py")))) + (propagated-inputs (list openmm python-numpy)) + (native-inputs (list python-pytest)) + (home-page "https://github.com/openmm/pdbfixer") + (synopsis "Application for fixing problems in Protein Data Bank") + (description + "PDBFixer is designed to rectify issues in Protein Data Bank files. +Its intuitive interface simplifies the process of resolving problems +encountered in PDB files prior to simulation tasks.") + (license license:expat))) + (define-public python-peaks2utr (package (name "python-peaks2utr") @@ -2493,6 +2527,70 @@ Python.") ;; licensed lgpl2.1+ (license (list license:expat license:lgpl2.1+)))) +(define-public python-ega-download-client + (package + (name "python-ega-download-client") + (version "5.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/EGA-archive/ega-download-client") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0k9rfq2yyvfxs5sq9lsm8krp9ddx4s18hv85ikf3b37zv24kpwjk")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + '(list + ;; These tests fail because they require internet access. + "--ignore=tests/functional/test_download.py" + "--ignore=tests/functional/test_htsget.py" + "-k" + (string-append "not test_error_5xx" + " and not test_error_too_many_requests" + ;; Something's wrong here. On some powerful machines + ;; (but not on my laptop) these fail, and tests like + ;; test_file_is_saved_into_an_existing_directory_which_was_specified_by_the_user + ;; take a *very* long time to complete. + ;; + ;; It looks like "dataset_in_fire.download" takes an + ;; unusually long time on those machines. We disable + ;; tests that fail under these conditions. + " and not test_download_file" + " and not test_output_file_is_removed_if_md5_was_invalid" + " and not test_post_stats_if_download_succeeded")) + #:phases + '(modify-phases %standard-phases + (add-after 'unpack 'relax-requirements + (lambda _ + (substitute* "setup.py" + (("==") ">="))))))) + (propagated-inputs (list python-htsget python-psutil python-requests + python-tqdm python-urllib3)) + (native-inputs (list python-coverage python-pytest python-pyfakefs + python-responses python-mock)) + (home-page "https://github.com/EGA-archive/ega-download-client") + (synopsis "EGA download client") + (description "PyEGA3 is a tool for viewing and downloading files from +authorized EGA datasets. It uses the EGA data API and has several key +features: + +@itemize +@item Files are transferred over secure https connections and received + unencrypted, so no need for decryption after download. +@item Downloads resume from where they left off in the event that the + connection is interrupted. +@item Supports file segmenting and parallelized download of segments, + improving overall performance. +@item After download completes, file integrity is verified using checksums. +@item Implements the GA4GH-compliant htsget protocol for download of genomic + ranges for data files with accompanying index files. +@end itemize\n") + (license license:asl2.0))) + (define-public python-scdamandtools (package (name "python-scdamandtools") @@ -3660,14 +3758,14 @@ gapped, local, and paired-end alignment modes.") (define-public bowtie1 (package (name "bowtie1") - (version "1.3.0") + (version "1.3.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/bowtie-bio/bowtie/" version "/bowtie-" version "-src.zip")) (sha256 (base32 - "11dbihdnrizc6qhx9xsw77w3q5ssx642alaqzvhxx32ak9glvq04")) + "0q87nhgj9wrnbazcpvqp4594hmyh1isi3s9b2wlghvl4afm1fdg2")) (modules '((guix build utils))) (snippet '(substitute* "Makefile" @@ -3676,16 +3774,22 @@ gapped, local, and paired-end alignment modes.") (("-DBUILD_TIME=.*") "-DBUILD_TIME=\"\\\"0\\\"\""))))) (build-system gnu-build-system) (arguments - `(#:tests? #f ; no "check" target + `(#:tests? #f ; Tests need various perl modules + #:test-target "simple-test" #:make-flags - ,#~(list "CC=gcc" "all" - (string-append "prefix=" #$output)) + ,#~(append #$(if (not (target-x86?)) + #~'("POPCNT_CAPABILITY=0") + #~'()) + (list (string-append "CC=" #$(cc-for-target)) + (string-append "CXX=" #$(cxx-for-target)) + "all" + (string-append "prefix=" #$output))) #:phases (modify-phases %standard-phases (delete 'configure)))) (inputs - (list python-wrapper tbb-2020 zlib)) - (supported-systems '("x86_64-linux")) + (list python-wrapper tbb zlib)) + (supported-systems %64bit-supported-systems) (home-page "https://bowtie-bio.sourceforge.net/index.shtml") (synopsis "Fast aligner for short nucleotide sequence reads") (description @@ -4009,39 +4113,7 @@ omics data.") (license license:bsd-3))) (define-public python-pyega3 - (package - (name "python-pyega3") - (version "3.4.1") - (source (origin - (method url-fetch) - (uri (pypi-uri "pyega3" version)) - (sha256 - (base32 - "1k736in8g27rarx65ym9xk50x53zjg75h37bb8ljynxv04rypx2q")))) - (build-system python-build-system) - (arguments - `(#:tests? #f)) ; The tests require network access. - (native-inputs - (list python-psutil python-htsget)) - (propagated-inputs - (list python-requests python-tqdm python-urllib3 python-responses)) - (home-page "https://github.com/EGA-archive/ega-download-client") - (synopsis "Python client for EGA") - (description "This package is a python-based tool for viewing and -downloading files from authorized EGA datasets. It uses the EGA data API and -has several key features: -@itemize -@item Files are transferred over secure https connections and received - unencrypted, so no need for decryption after download. -@item Downloads resume from where they left off in the event that the - connection is interrupted. -@item Supports file segmenting and parallelized download of segments, - improving overall performance. -@item After download completes, file integrity is verified using checksums. -@item Implements the GA4GH-compliant htsget protocol for download of genomic - ranges for data files with accompanying index files. -@end itemize\n") - (license license:asl2.0))) + (deprecated-package "python-pyega3" python-ega-download-client)) (define-public python-pysam (package @@ -4930,37 +5002,52 @@ Note that this package has been deprecated in favor of @code{pyfaidx}.") (define-public python-schema-salad (package (name "python-schema-salad") - (version "8.2.20211116214159") + (version "8.5.20240102191335") (source - (origin - (method url-fetch) - (uri (pypi-uri "schema-salad" version)) - (sha256 - (base32 - "005dh2y45x92zl8sf2sqjmfvcqr4hrz8dfckgkckv87003v7lwqc")))) + (origin + (method url-fetch) + (uri (pypi-uri "schema-salad" version)) + (sha256 + (base32 + "035202p696i3jylb8b3nm9qcxsqby15hhqn1dl4nrz73a17p0ckx")))) (build-system pyproject-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'skip-failing-tests - (lambda _ - ;; Skip tests that require network access. - (substitute* "schema_salad/tests/test_cwl11.py" - (("^def test_(secondaryFiles|outputBinding)" all) - (string-append "@pytest.mark.skip(reason=" - "\"test requires network access\")\n" - all)))))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'set-version + (lambda _ + ;; Set exact version. + (substitute* "setup.py" + (("use_scm_version=True") + (string-append "version=\"" #$version "\""))))) + (add-before 'check 'skip-failing-tests + (lambda _ + ;; Skip tests that require network access. + (let ((skip-test + (lambda (test-pattern) + (string-append "@pytest.mark.skip(reason=" + "\"test requires network access\")\n" + test-pattern)))) + (substitute* "schema_salad/tests/test_cg.py" + (("^def test_(load(_by_yaml_metaschema|_metaschema|_cwlschema|)|include|idmap|idmap2)\\(" all) + (skip-test all))) + (substitute* "schema_salad/tests/test_cwl11.py" + (("^def test_(secondaryFiles|outputBinding|yaml_tab_error)\\(" all) + (skip-test all))) + (substitute* "schema_salad/tests/test_examples.py" + (("^def test_bad_schemas\\(" all) + (skip-test all))))))))) (propagated-inputs (list python-cachecontrol - python-lockfile - python-mistune + python-importlib-resources + python-mistune-next + python-mypy-extensions python-rdflib - python-rdflib-jsonld python-requests - python-ruamel.yaml - python-typing-extensions)) + python-ruamel.yaml)) (native-inputs - (list python-black python-pytest python-pytest-runner)) + (list python-black python-pytest python-pytest-runner python-pytest-xdist)) (home-page "https://github.com/common-workflow-language/schema_salad") (synopsis "Schema Annotations for Linked Avro Data (SALAD)") (description @@ -5052,10 +5139,104 @@ resources for bioinformatics.") doublets in single-cell RNA-seq data.") (license license:expat))) +(define-public python-cwlformat + (package + (name "python-cwlformat") + (version "2022.02.18") + (source + ;; The PyPI tarball is missing Readme.md. Readme.md is required for the + ;; build. + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rabix/cwl-format") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0agkz2w86k91rc9m5vx5hsqi5nm6fcmzkng6j99hjapz0r9233ql")))) + (build-system pyproject-build-system) + (propagated-inputs + (list python-importlib-resources + python-ruamel.yaml)) + (home-page "https://github.com/rabix/cwl-format") + (synopsis "Prettifier for CWL code") + (description "@code{python-cwlformat} is a specification and a reference +implementation for a very opinionated @acronym{CWL, Common Workflow Language} +code formatter. It outputs CWL in a standardized YAML format.") + (license license:asl2.0))) + +(define-public python-cwl-upgrader + (package + (name "python-cwl-upgrader") + (version "1.2.11") + (source + (origin + (method url-fetch) + (uri (pypi-uri "cwl-upgrader" version)) + (sha256 + (base32 + "12j6z8nvwnzjjyypz59hwj5hmrcri2r6aknw52n9dbj6lbzbdd2p")))) + (build-system pyproject-build-system) + (native-inputs + (list python-pytest)) + (propagated-inputs + (list python-ruamel.yaml + python-schema-salad)) + (home-page "https://github.com/common-workflow-language/cwl-upgrader") + (synopsis "CWL document upgrader") + (description "@code{python-cwl-upgrader} is a standalone upgrader for +@acronym{CWL, Common Workflow Language} documents from version draft-3, v1.0, +and v1.1 to v1.2.") + (license license:asl2.0))) + +(define-public python-cwl-utils + (package + (name "python-cwl-utils") + (version "0.32") + (source + (origin + (method url-fetch) + (uri (pypi-uri "cwl-utils" version)) + (sha256 + (base32 + "06wkw8d8cqm3hnz8xwnysz874gwaym36c358cr7frw5iglhvsj98")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + #~(list "-k" + (string-append "not test_graph_split" + " and not test_load_document_with_remote_uri" + " and not test_remote_packing" + " and not test_remote_packing_github_soft_links" + " and not test_value_from_two_concatenated_expressions")))) + (inputs + (list node)) + (native-inputs + (list python-mypy-extensions + python-pytest + python-pytest-mock + python-pytest-runner)) + (propagated-inputs + (list python-cwl-upgrader + python-cwlformat + python-packaging + python-rdflib + python-requests + python-ruamel.yaml + python-schema-salad)) + (home-page "https://github.com/common-workflow-language/cwl-utils") + (synopsis "Python utilities for CWL") + (description "@code{python-cwl-utils} provides python utilities and +autogenerated classes for loading and parsing CWL v1.0, CWL v1.1, and CWL v1.2 +documents.") + (license license:asl2.0))) + (define-public cwltool (package (name "cwltool") - (version "3.1.20220119140128") + (version "3.1.20240112164112") (source (origin (method git-fetch) (uri (git-reference @@ -5064,56 +5245,51 @@ doublets in single-cell RNA-seq data.") (file-name (git-file-name name version)) (sha256 (base32 - "1jmrm0qrqgka79avc1kq63fgh20gx6g07fc8p3iih4k85vhdyl3f")))) + "1fpc5kqgpbn48g5vlvy64p297x2wm3gfz8casgpk15ap593wwh33")))) (build-system pyproject-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'loosen-version-restrictions - (lambda _ - (substitute* "setup.py" - (("== 1.5.1") ">=1.5.1")))) ; prov - (add-after 'unpack 'dont-use-git - (lambda _ - (substitute* "gittaggers.py" - (("self.git_timestamp_tag\\(\\)") - (string-append "time.strftime('.%Y%m%d%H%M%S', time.gmtime(int(" - (string-drop ,version 4) ")))"))))) - (add-after 'unpack 'modify-tests - (lambda _ - ;; Tries to connect to the internet. - (delete-file "tests/test_content_type.py") - (delete-file "tests/test_udocker.py") - (delete-file "tests/test_http_input.py") - (substitute* "tests/test_load_tool.py" - (("def test_load_graph_fragment_from_packed") - (string-append "@pytest.mark.skip(reason=\"Disabled by Guix\")\n" - "def test_load_graph_fragment_from_packed"))) - (substitute* "tests/test_examples.py" - (("def test_env_filtering") - (string-append "@pytest.mark.skip(reason=\"Disabled by Guix\")\n" - "def test_env_filtering"))) - ;; Tries to use cwl-runners. - (substitute* "tests/test_examples.py" - (("def test_v1_0_arg_empty_prefix_separate_false") - (string-append "@pytest.mark.skip(reason=\"Disabled by Guix\")\n" - "def test_v1_0_arg_empty_prefix_separate_false"))) - - (substitute* '("cwltool/schemas/v1.1/tests/env-tool1.cwl" - "cwltool/schemas/v1.1/tests/env-tool2.cwl" - "cwltool/schemas/v1.1/tests/imported-hint.cwl" - "tests/subgraph/env-tool2.cwl" - "tests/subgraph/env-tool2_req.cwl" - "tests/subgraph/env-wf2_subwf-packed.cwl" - "tests/subgraph/env-tool2_no_env.cwl") - (("\"/bin/sh\"") (string-append "\"" (which "sh") "\""))) - ;; Pytest doesn't know what to do with "-n auto" - (substitute* "tox.ini" - (("-n auto") ""))))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'loosen-version-restrictions + (lambda _ + (substitute* "setup.py" + (("== 1.5.1") "> 1.5.1")))) ; prov + (add-after 'unpack 'set-version + (lambda _ + ;; Set exact version. + (substitute* "setup.py" + (("use_scm_version=True") + (string-append "version=\"" #$version "\""))))) + (add-after 'unpack 'modify-tests + (lambda _ + ;; Tries to connect to the internet. + (delete-file "tests/test_content_type.py") + (delete-file "tests/test_udocker.py") + (delete-file "tests/test_http_input.py") + (substitute* "tests/test_load_tool.py" + (("def test_load_graph_fragment_from_packed") + (string-append "@pytest.mark.skip(reason=\"Disabled by Guix\")\n" + "def test_load_graph_fragment_from_packed"))) + (substitute* "tests/test_examples.py" + (("def test_env_filtering") + (string-append "@pytest.mark.skip(reason=\"Disabled by Guix\")\n" + "def test_env_filtering"))) + ;; Tries to use cwl-runners. + (substitute* "tests/test_examples.py" + (("def test_v1_0_arg_empty_prefix_separate_false") + (string-append "@pytest.mark.skip(reason=\"Disabled by Guix\")\n" + "def test_v1_0_arg_empty_prefix_separate_false"))) + (substitute* '("tests/subgraph/env-tool2.cwl" + "tests/subgraph/env-tool2_req.cwl" + "tests/subgraph/env-wf2_subwf-packed.cwl" + "tests/subgraph/env-tool2_no_env.cwl") + (("\"/bin/sh\"") (string-append "\"" (which "sh") "\"")))))))) (inputs (list python-argcomplete python-bagit python-coloredlogs + python-cwl-utils python-mypy-extensions python-prov python-pydot @@ -5123,6 +5299,7 @@ doublets in single-cell RNA-seq data.") python-ruamel.yaml python-schema-salad python-shellescape + python-spython python-typing-extensions ;; Not listed as needed but still necessary: node)) @@ -5133,7 +5310,8 @@ doublets in single-cell RNA-seq data.") python-pytest python-pytest-cov python-pytest-mock - python-pytest-runner)) + python-pytest-runner + python-pytest-xdist)) (home-page "https://github.com/common-workflow-language/common-workflow-language") (synopsis "Common Workflow Language reference implementation") @@ -11560,11 +11738,11 @@ single-cell data.") (license license:gpl3)))) (define-public r-archr - (let ((commit "92ab814f86be0cea75c661f9827a9549c2cf47f5") + (let ((commit "c61b0645d1482f80dcc24e25fbd915128c1b2500") (revision "1")) (package (name "r-archr") - (version (git-version "1.0.1" revision commit)) + (version (git-version "1.0.2" revision commit)) (source (origin (method git-fetch) @@ -11573,7 +11751,7 @@ single-cell data.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "1m1vp3kkpvd0fcviv5vb3gcbm3w91ih6gm9ivg48swnbqny44kqb")))) + (base32 "0sgdfd8iwgj8cssj2zr3gmshg8nv54q6dd8asjf99i39qkni7p9i")))) (properties `((upstream-name . "ArchR"))) (build-system r-build-system) (propagated-inputs @@ -22308,7 +22486,7 @@ useful for bioinformatic analysis.") #:tests? #false)) ;require network access (propagated-inputs (list go-gopkg-in-check-v1 - go-github.com-ulikunitz-xz + go-github-com-ulikunitz-xz go-github-com-kortschak-utter)) (synopsis "HTS CRAM module for biogo") (description "This package provides tools for handling CRAM files."))) |