mirror of
https://codeberg.org/guix/guix.git
synced 2025-10-02 02:15:12 +00:00
gnu: python-bed-reader: Fix build and enable tests.
* gnu/packages/bioinformatics.scm (python-bed-reader): Fix build and enable tests. [source]{snippet}: Delete bundled website-related javascript. {patches}: Use the store-cached instead of pooch-cached samples. [arguments]{tests?}: Enable them. {cargo-test-flags}: Skip doc tests. Skip failing tests. {cargo-inputs}: Improve style. {cargo-development-inputs}: Improve style. {phases}: Add phases 'set-data-path, 'patch-data-path to use store-cached samples for library and tests. Rewrite phase 'prepare-python-module to rely more on the existing info in pyproject.toml. Rewrite phase 'check-python entirely, and marginaly rewrite phase 'install-python-library to match 'check-python phase style. {modules}: Adapt accordingly. {propagated-inputs}: Remove python-pooch. Add python-scipy. (bed-sample-files): Add origin, used in python-bed-reader. * gnu/packages/patches/python-bed-reader-use-store-samples.patch: Add patch. * gnu/local.mk: Record patch. Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
This commit is contained in:
parent
e8e46bbeb5
commit
db14ce5c4d
3 changed files with 284 additions and 59 deletions
147
gnu/packages/patches/python-bed-reader-use-store-samples.patch
Normal file
147
gnu/packages/patches/python-bed-reader-use-store-samples.patch
Normal file
|
@ -0,0 +1,147 @@
|
|||
From 7e6bcdfeed54500ca533d2f0eb12078248c43c77 Mon Sep 17 00:00:00 2001
|
||||
Message-ID: <7e6bcdfeed54500ca533d2f0eb12078248c43c77.1743682382.git.ngraves@ngraves.fr>
|
||||
From: Nicolas Graves <ngraves@ngraves.fr>
|
||||
Date: Thu, 3 Apr 2025 11:33:58 +0200
|
||||
Subject: [PATCH] samples: Use deterministic samples in Guix.
|
||||
|
||||
---
|
||||
bed_reader/_sample_data.py | 86 +++++++++-----------------------------
|
||||
1 file changed, 19 insertions(+), 67 deletions(-)
|
||||
|
||||
diff --git a/bed_reader/_sample_data.py b/bed_reader/_sample_data.py
|
||||
index 6ca4cc0..6a1146e 100644
|
||||
--- a/bed_reader/_sample_data.py
|
||||
+++ b/bed_reader/_sample_data.py
|
||||
@@ -1,33 +1,8 @@
|
||||
+import os
|
||||
import tempfile
|
||||
from pathlib import Path, PurePath
|
||||
from typing import Union
|
||||
|
||||
-try:
|
||||
- import pooch
|
||||
-
|
||||
- """
|
||||
- Load sample data.
|
||||
- """
|
||||
-
|
||||
- POOCH = pooch.create(
|
||||
- # Use the default cache folder for the OS
|
||||
- path=pooch.os_cache("bed_reader"),
|
||||
- # The remote data is on Github
|
||||
- base_url="https://raw.githubusercontent.com/"
|
||||
- + "fastlmm/bed-sample-files/main/",
|
||||
- # If this is a development version, get the data from the master branch
|
||||
- version_dev="main",
|
||||
- # The registry specifies the files that can be fetched
|
||||
- env="BED_READER_DATA_DIR",
|
||||
- )
|
||||
-
|
||||
- # Get registry file from package_data
|
||||
- registry_file = Path(__file__).parent / "tests/registry.txt"
|
||||
- # Load this registry file
|
||||
- POOCH.load_registry(registry_file)
|
||||
-except ImportError:
|
||||
- pooch = None
|
||||
-
|
||||
|
||||
def sample_file(filepath: Union[str, Path]) -> str:
|
||||
"""Retrieve a sample .bed file. (Also retrieves associated .fam and .bim files).
|
||||
@@ -40,50 +15,41 @@ def sample_file(filepath: Union[str, Path]) -> str:
|
||||
Returns
|
||||
-------
|
||||
str
|
||||
- Local name of sample .bed file.
|
||||
-
|
||||
-
|
||||
- .. note::
|
||||
- This function requires the :mod:`pooch` package. Install `pooch` with:
|
||||
-
|
||||
- .. code-block:: bash
|
||||
-
|
||||
- pip install --upgrade bed-reader[samples]
|
||||
-
|
||||
-
|
||||
- By default this function puts files under the user's cache directory.
|
||||
- Override this by setting
|
||||
- the `BED_READER_DATA_DIR` environment variable.
|
||||
+ Local path of sample .bed file.
|
||||
|
||||
Example
|
||||
--------
|
||||
|
||||
.. doctest::
|
||||
|
||||
- >>> # pip install bed-reader[samples] # if needed
|
||||
>>> from bed_reader import sample_file
|
||||
>>>
|
||||
>>> file_name = sample_file("small.bed")
|
||||
>>> print(f"The local file name is '{file_name}'")
|
||||
The local file name is '...small.bed'
|
||||
-
|
||||
"""
|
||||
- if pooch is None:
|
||||
- raise ImportError(
|
||||
- "The function sample_file() requires pooch. "
|
||||
- + "Install it with 'pip install --upgrade bed-reader[samples]'.",
|
||||
+ filepath = Path(filepath)
|
||||
+ sample_dir = os.environ.get("BED_READER_DATA_DIR")
|
||||
+ if sample_dir is None:
|
||||
+ raise EnvironmentError(
|
||||
+ "BED_READER_DATA_DIR environment variable is not set. "
|
||||
+ "This should point to the directory containing the sample files."
|
||||
)
|
||||
|
||||
- filepath = Path(filepath)
|
||||
- file_string = str(filepath)
|
||||
- if file_string.lower().endswith(".bed"):
|
||||
- POOCH.fetch(file_string[:-4] + ".fam")
|
||||
- POOCH.fetch(file_string[:-4] + ".bim")
|
||||
- return POOCH.fetch(file_string)
|
||||
+ file_path = Path(sample_dir) / filepath
|
||||
+
|
||||
+ # Check if file exists
|
||||
+ if not file_path.exists():
|
||||
+ raise FileNotFoundError(
|
||||
+ f"Sample file '{filepath}' not found in {sample_dir}. "
|
||||
+ f"Make sure you're using the latest samples in BED_READER_DATA_DIR."
|
||||
+ )
|
||||
+
|
||||
+ return str(file_path)
|
||||
|
||||
|
||||
def sample_url(filepath: Union[str, Path]) -> str:
|
||||
- """Retrieve a URL to a sample .bed file. (Also makes ready associated .fam and .bim files).
|
||||
+ """Retrieve a URL to a sample .bed file.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
@@ -95,25 +61,11 @@ def sample_url(filepath: Union[str, Path]) -> str:
|
||||
str
|
||||
URL to sample .bed file.
|
||||
|
||||
-
|
||||
- .. note::
|
||||
- This function requires the :mod:`pooch` package. Install `pooch` with:
|
||||
-
|
||||
- .. code-block:: bash
|
||||
-
|
||||
- pip install --upgrade bed-reader[samples]
|
||||
-
|
||||
-
|
||||
- By default this function puts files under the user's cache directory.
|
||||
- Override this by setting
|
||||
- the `BED_READER_DATA_DIR` environment variable.
|
||||
-
|
||||
Example
|
||||
--------
|
||||
|
||||
.. doctest::
|
||||
|
||||
- >>> # pip install bed-reader[samples] # if needed
|
||||
>>> from bed_reader import sample_url
|
||||
>>>
|
||||
>>> url = sample_url("small.bed")
|
||||
--
|
||||
2.49.0
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue