mirror of
https://https.git.savannah.gnu.org/git/guix.git/
synced 2025-07-14 19:10:49 +02:00
* 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>
147 lines
4.4 KiB
Diff
147 lines
4.4 KiB
Diff
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
|
|
|