summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2025-01-16 22:51:22 +0100
committerRicardo Wurmus <rekado@elephly.net>2025-01-20 21:38:01 +0100
commit69e8a3f2f2a066db0f95f77bb78920d8ecb3ae1b (patch)
tree83aa91019c30b2dee8961a92f56409292b7ee519
parente9bd4e7a4562782d5810a20e354b9c20eda7d866 (diff)
gnu: Add python-bed-reader.
* gnu/packages/bioinformatics.scm (python-bed-reader): New variable. Change-Id: Iad3f1d1c05abe706d8cd52a4d046247a5a9738e2
-rw-r--r--gnu/packages/bioinformatics.scm120
1 files changed, 120 insertions, 0 deletions
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 6aae5b7f7bc..774a6f3f97b 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -85,6 +85,7 @@
#:use-module (gnu packages cran)
#:use-module (gnu packages crates-compression)
#:use-module (gnu packages crates-io)
+ #:use-module (gnu packages crates-web)
#:use-module (gnu packages curl)
#:use-module (gnu packages docbook)
#:use-module (gnu packages documentation)
@@ -2047,6 +2048,125 @@ Format (GFF) with Biopython integration.")
(modify-inputs (package-propagated-inputs python-bcbio-gff)
(replace "python-biopython" python-biopython-1.73))))))
+(define-public python-bed-reader
+ (package
+ (name "python-bed-reader")
+ (version "1.0.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "bed_reader" version))
+ (sha256
+ (base32 "1c8ibwvz3b069w7ffh9aasz16lfkmx4z0249c2v909a21mrkkd6n"))))
+ (build-system cargo-build-system)
+ (arguments
+ (list
+ ;; Many of the tests (both the Rust tests and the Python tests) require
+ ;; Internet access to fetch samples.
+ #:tests? #false
+ #:install-source? #false
+ #:features '(list "extension-module")
+ #:cargo-test-flags '(list "--features=extension-module")
+ #:cargo-inputs
+ `(("rust-anyinput" ,rust-anyinput-0.1)
+ ("rust-bytecount" ,rust-bytecount-0.6)
+ ("rust-byteorder" ,rust-byteorder-1)
+ ("rust-bytes" ,rust-bytes-1)
+ ("rust-cloud-file" ,rust-cloud-file-0.2)
+ ("rust-derive-builder" ,rust-derive-builder-0.20)
+ ("rust-dpc-pariter" ,rust-dpc-pariter-0.4)
+ ("rust-fetch-data" ,rust-fetch-data-0.2)
+ ("rust-futures-util" ,rust-futures-util-0.3)
+ ("rust-itertools" ,rust-itertools-0.13)
+ ("rust-ndarray" ,rust-ndarray-0.16)
+ ("rust-ndarray-npy" ,rust-ndarray-npy-0.9)
+ ("rust-num-traits" ,rust-num-traits-0.2)
+ ("rust-numpy" ,rust-numpy-0.22)
+ ("rust-pyo3" ,rust-pyo3-0.22)
+ ("rust-pyo3-build-config" ,rust-pyo3-build-config-0.22)
+ ("rust-rayon" ,rust-rayon-1)
+ ("rust-statrs" ,rust-statrs-0.17)
+ ("rust-thiserror" ,rust-thiserror-1)
+ ("rust-tokio" ,rust-tokio-1))
+ #:cargo-development-inputs
+ `(("rust-anyhow" ,rust-anyhow-1)
+ ("rust-ndarray-rand" ,rust-ndarray-rand-0.15)
+ ("rust-rusoto-credential" ,rust-rusoto-credential-0.48)
+ ("rust-temp-testdir" ,rust-temp-testdir-0.2)
+ ("rust-thousands" ,rust-thousands-0.2))
+ #:imported-modules
+ (append %cargo-build-system-modules
+ %pyproject-build-system-modules)
+ #:modules
+ '((guix build cargo-build-system)
+ ((guix build pyproject-build-system) #:prefix py:)
+ (guix build utils))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'prepare-python-module
+ (lambda _
+ ;; We don't use maturin.
+ (delete-file "pyproject.toml")
+ (call-with-output-file "pyproject.toml"
+ (lambda (port)
+ (format port "\
+[build-system]
+build-backend = 'setuptools.build_meta'
+requires = ['setuptools']
+")))
+ (call-with-output-file "setup.cfg"
+ (lambda (port)
+ (format port "\
+[metadata]
+name = bed-reader
+version = ~a
+
+[options]
+packages = find:
+
+[options.packages.find]
+exclude =
+ src
+ docs
+ tests
+ Cargo.toml
+" #$version)))))
+ (add-after 'prepare-python-module 'enable-bytecode-determinism
+ (assoc-ref py:%standard-phases 'enable-bytecode-determinism))
+ (add-after 'enable-bytecode-determinism 'build-python-module
+ (assoc-ref py:%standard-phases 'build))
+ (add-after 'build-python-module 'install-python-module
+ (assoc-ref py:%standard-phases 'install))
+ (add-after 'install-python-module 'install-python-library
+ (lambda _
+ (let ((site (string-append #$output "/lib/python"
+ #$(version-major+minor
+ (package-version python))
+ "/site-packages")))
+ (mkdir-p site)
+ (copy-file "target/release/libbed_reader.so"
+ (string-append site "/bed_reader/bed_reader.so")))))
+ (add-after 'install-python-library 'add-install-to-pythonpath
+ (assoc-ref py:%standard-phases 'add-install-to-pythonpath))
+ (add-after 'add-install-to-pythonpath 'check-python
+ (lambda* (#:key tests? test-flags #:allow-other-keys)
+ (when tests?
+ (apply invoke "pytest" "-v" #$output test-flags)))))))
+ (native-inputs (list python-pytest
+ python-pytest-cov
+ python-pytest-datadir
+ python-pytest-doctestplus
+ python-recommonmark
+ python-sphinx))
+ (inputs (list python-wrapper))
+ (propagated-inputs (list python-numpy python-pandas python-pooch))
+ (home-page "https://fastlmm.github.io/")
+ (synopsis "Read and write the PLINK BED format, simply and efficiently")
+ (description
+ "This package lets you read and write the PLINK BED format, simply and
+efficiently.")
+ (license license:asl2.0)))
+
;; Note: the name on PyPi is "biofluff".
(define-public python-biofluff
(package