Use hexsha to verify junifer-data integrity #434
7 changed files with 39 additions and 28 deletions
1
docs/changes/newsfragments/434.enh
Normal file
1
docs/changes/newsfragments/434.enh
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Add commit SHA check for ``junifer_data`` to simplify data fetching by `Fede Raimondo`_
|
||||||
|
|
@ -15,7 +15,7 @@ from numpy.typing import ArrayLike
|
||||||
from ...utils import logger, raise_error
|
from ...utils import logger, raise_error
|
||||||
from ...utils.singleton import Singleton
|
from ...utils.singleton import Singleton
|
||||||
from ..pipeline_data_registry_base import BasePipelineDataRegistry
|
from ..pipeline_data_registry_base import BasePipelineDataRegistry
|
||||||
from ..utils import JUNIFER_DATA_VERSION, get_dataset_path, get_native_warper
|
from ..utils import JUNIFER_DATA_PARAMS, get_dataset_path, get_native_warper
|
||||||
from ._ants_coordinates_warper import ANTsCoordinatesWarper
|
from ._ants_coordinates_warper import ANTsCoordinatesWarper
|
||||||
from ._fsl_coordinates_warper import FSLCoordinatesWarper
|
from ._fsl_coordinates_warper import FSLCoordinatesWarper
|
||||||
|
|
||||||
|
|
@ -287,7 +287,7 @@ class CoordinatesRegistry(BasePipelineDataRegistry, metaclass=Singleton):
|
||||||
get(
|
get(
|
||||||
file_path=coords_file_path,
|
file_path=coords_file_path,
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
),
|
),
|
||||||
sep="\t",
|
sep="\t",
|
||||||
header=None,
|
header=None,
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ from ...utils.singleton import Singleton
|
||||||
from ..pipeline_data_registry_base import BasePipelineDataRegistry
|
from ..pipeline_data_registry_base import BasePipelineDataRegistry
|
||||||
from ..template_spaces import get_template
|
from ..template_spaces import get_template
|
||||||
from ..utils import (
|
from ..utils import (
|
||||||
JUNIFER_DATA_VERSION,
|
JUNIFER_DATA_PARAMS,
|
||||||
closest_resolution,
|
closest_resolution,
|
||||||
get_dataset_path,
|
get_dataset_path,
|
||||||
get_native_warper,
|
get_native_warper,
|
||||||
|
|
@ -745,7 +745,7 @@ def _load_vickery_patil_mask(
|
||||||
return get(
|
return get(
|
||||||
file_path=Path(f"masks/Vickery-Patil/{mask_fname}"),
|
file_path=Path(f"masks/Vickery-Patil/{mask_fname}"),
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -778,7 +778,7 @@ def _load_ukb_mask(name: str) -> Path:
|
||||||
return get(
|
return get(
|
||||||
file_path=Path(f"masks/UKB/{mask_fname}"),
|
file_path=Path(f"masks/UKB/{mask_fname}"),
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ from ...utils import logger, raise_error, warn_with_log
|
||||||
from ...utils.singleton import Singleton
|
from ...utils.singleton import Singleton
|
||||||
from ..pipeline_data_registry_base import BasePipelineDataRegistry
|
from ..pipeline_data_registry_base import BasePipelineDataRegistry
|
||||||
from ..utils import (
|
from ..utils import (
|
||||||
JUNIFER_DATA_VERSION,
|
JUNIFER_DATA_PARAMS,
|
||||||
closest_resolution,
|
closest_resolution,
|
||||||
get_dataset_path,
|
get_dataset_path,
|
||||||
get_native_warper,
|
get_native_warper,
|
||||||
|
|
@ -639,13 +639,13 @@ def _retrieve_schaefer(
|
||||||
file_path=path_prefix / f"Schaefer2018_{n_rois}Parcels_{yeo_networks}"
|
file_path=path_prefix / f"Schaefer2018_{n_rois}Parcels_{yeo_networks}"
|
||||||
f"Networks_order_FSLMNI152_{resolution}mm.nii.gz",
|
f"Networks_order_FSLMNI152_{resolution}mm.nii.gz",
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
parcellation_label_path = get(
|
parcellation_label_path = get(
|
||||||
file_path=path_prefix
|
file_path=path_prefix
|
||||||
/ f"Schaefer2018_{n_rois}Parcels_{yeo_networks}Networks_order.txt",
|
/ f"Schaefer2018_{n_rois}Parcels_{yeo_networks}Networks_order.txt",
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Load labels
|
# Load labels
|
||||||
|
|
@ -764,13 +764,13 @@ def _retrieve_tian(
|
||||||
parcellation_img_path = get(
|
parcellation_img_path = get(
|
||||||
file_path=parcellation_fname,
|
file_path=parcellation_fname,
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
parcellation_label_path = get(
|
parcellation_label_path = get(
|
||||||
file_path=parcellation_fname_base_3T
|
file_path=parcellation_fname_base_3T
|
||||||
/ f"Tian_Subcortex_S{scale}_3T_label.txt",
|
/ f"Tian_Subcortex_S{scale}_3T_label.txt",
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
# Load labels
|
# Load labels
|
||||||
labels = pd.read_csv(parcellation_label_path, sep=" ", header=None)[
|
labels = pd.read_csv(parcellation_label_path, sep=" ", header=None)[
|
||||||
|
|
@ -783,7 +783,7 @@ def _retrieve_tian(
|
||||||
f"Tian_Subcortex_S{scale}_{magneticfield}.nii.gz"
|
f"Tian_Subcortex_S{scale}_{magneticfield}.nii.gz"
|
||||||
),
|
),
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
# define 7T labels (b/c currently no labels file available for 7T)
|
# define 7T labels (b/c currently no labels file available for 7T)
|
||||||
scale7Trois = {1: 16, 2: 34, 3: 54, 4: 62}
|
scale7Trois = {1: 16, 2: 34, 3: 54, 4: 62}
|
||||||
|
|
@ -855,12 +855,12 @@ def _retrieve_suit(
|
||||||
parcellation_img_path = get(
|
parcellation_img_path = get(
|
||||||
file_path=path_prefix / f"SUIT_{space}Space_{resolution}mm.nii",
|
file_path=path_prefix / f"SUIT_{space}Space_{resolution}mm.nii",
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
parcellation_label_path = get(
|
parcellation_label_path = get(
|
||||||
file_path=path_prefix / f"SUIT_{space}Space_{resolution}mm.tsv",
|
file_path=path_prefix / f"SUIT_{space}Space_{resolution}mm.tsv",
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Load labels
|
# Load labels
|
||||||
|
|
@ -938,20 +938,20 @@ def _retrieve_aicha(
|
||||||
parcellation_img_path = get(
|
parcellation_img_path = get(
|
||||||
file_path=path_prefix / "AICHA.nii",
|
file_path=path_prefix / "AICHA.nii",
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
# Conditional label file fetch
|
# Conditional label file fetch
|
||||||
if version == 1:
|
if version == 1:
|
||||||
parcellation_label_path = get(
|
parcellation_label_path = get(
|
||||||
file_path=path_prefix / "AICHA_vol1.txt",
|
file_path=path_prefix / "AICHA_vol1.txt",
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
elif version == 2:
|
elif version == 2:
|
||||||
parcellation_label_path = get(
|
parcellation_label_path = get(
|
||||||
file_path=path_prefix / "AICHA_vol3.txt",
|
file_path=path_prefix / "AICHA_vol3.txt",
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Load labels
|
# Load labels
|
||||||
|
|
@ -1055,12 +1055,12 @@ def _retrieve_shen(
|
||||||
parcellation_img_path = get(
|
parcellation_img_path = get(
|
||||||
file_path=path_prefix / f"fconn_atlas_{n_rois}_{resolution}mm.nii",
|
file_path=path_prefix / f"fconn_atlas_{n_rois}_{resolution}mm.nii",
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
parcellation_label_path = get(
|
parcellation_label_path = get(
|
||||||
file_path=path_prefix / f"Group_seg{n_rois}_BAindexing_setA.txt",
|
file_path=path_prefix / f"Group_seg{n_rois}_BAindexing_setA.txt",
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
labels = (
|
labels = (
|
||||||
pd.read_csv(
|
pd.read_csv(
|
||||||
|
|
@ -1077,14 +1077,14 @@ def _retrieve_shen(
|
||||||
file_path=path_prefix
|
file_path=path_prefix
|
||||||
/ f"shen_{resolution}mm_268_parcellation.nii.gz",
|
/ f"shen_{resolution}mm_268_parcellation.nii.gz",
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
labels = list(range(1, 269))
|
labels = list(range(1, 269))
|
||||||
elif year == 2019:
|
elif year == 2019:
|
||||||
parcellation_img_path = get(
|
parcellation_img_path = get(
|
||||||
file_path=path_prefix / "Shen_1mm_368_parcellation.nii.gz",
|
file_path=path_prefix / "Shen_1mm_368_parcellation.nii.gz",
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
labels = list(range(1, 369))
|
labels = list(range(1, 369))
|
||||||
|
|
||||||
|
|
@ -1174,13 +1174,13 @@ def _retrieve_yan(
|
||||||
f"{resolution}mm.nii.gz"
|
f"{resolution}mm.nii.gz"
|
||||||
),
|
),
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
parcellation_label_path = get(
|
parcellation_label_path = get(
|
||||||
file_path=path_prefix
|
file_path=path_prefix
|
||||||
/ f"{n_rois}Parcels_Yeo2011_{yeo_networks}Networks_LUT.txt",
|
/ f"{n_rois}Parcels_Yeo2011_{yeo_networks}Networks_LUT.txt",
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
elif kong_networks:
|
elif kong_networks:
|
||||||
# Check kong_networks value
|
# Check kong_networks value
|
||||||
|
|
@ -1199,13 +1199,13 @@ def _retrieve_yan(
|
||||||
f"{resolution}mm.nii.gz"
|
f"{resolution}mm.nii.gz"
|
||||||
),
|
),
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
parcellation_label_path = get(
|
parcellation_label_path = get(
|
||||||
file_path=path_prefix
|
file_path=path_prefix
|
||||||
/ f"{n_rois}Parcels_Kong2022_{kong_networks}Networks_LUT.txt",
|
/ f"{n_rois}Parcels_Kong2022_{kong_networks}Networks_LUT.txt",
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Load label file
|
# Load label file
|
||||||
|
|
@ -1272,7 +1272,7 @@ def _retrieve_brainnetome(
|
||||||
f"BNA-maxprob-thr{threshold}-{resolution}mm.nii.gz"
|
f"BNA-maxprob-thr{threshold}-{resolution}mm.nii.gz"
|
||||||
),
|
),
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Load labels
|
# Load labels
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ from junifer_data import get
|
||||||
from templateflow import api as tflow
|
from templateflow import api as tflow
|
||||||
|
|
||||||
from ..utils import logger, raise_error
|
from ..utils import logger, raise_error
|
||||||
from .utils import JUNIFER_DATA_VERSION, closest_resolution, get_dataset_path
|
from .utils import JUNIFER_DATA_PARAMS, closest_resolution, get_dataset_path
|
||||||
|
|
||||||
|
|
||||||
__all__ = ["get_template", "get_xfm"]
|
__all__ = ["get_template", "get_xfm"]
|
||||||
|
|
@ -40,7 +40,7 @@ def get_xfm(src: str, dst: str) -> Path: # pragma: no cover
|
||||||
return get(
|
return get(
|
||||||
file_path=xfm_file_path,
|
file_path=xfm_file_path,
|
||||||
dataset_path=get_dataset_path(),
|
dataset_path=get_dataset_path(),
|
||||||
tag=JUNIFER_DATA_VERSION,
|
**JUNIFER_DATA_PARAMS,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,8 @@ from ..utils import config, logger, raise_error
|
||||||
|
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
|
"JUNIFER_DATA_HEXSHA",
|
||||||
|
"JUNIFER_DATA_PARAMS",
|
||||||
"JUNIFER_DATA_VERSION",
|
"JUNIFER_DATA_VERSION",
|
||||||
"closest_resolution",
|
"closest_resolution",
|
||||||
"get_dataset_path",
|
"get_dataset_path",
|
||||||
|
|
@ -24,6 +26,14 @@ __all__ = [
|
||||||
# junifer-data version constant
|
# junifer-data version constant
|
||||||
JUNIFER_DATA_VERSION = "1"
|
JUNIFER_DATA_VERSION = "1"
|
||||||
|
|
||||||
|
# junifer-data hexsha constant
|
||||||
|
JUNIFER_DATA_HEXSHA = "e9aecf7b5a2fff82de00d265e02afde42a448647"
|
||||||
|
|
||||||
|
JUNIFER_DATA_PARAMS = {
|
||||||
|
"tag": JUNIFER_DATA_VERSION,
|
||||||
|
"hexsha": JUNIFER_DATA_HEXSHA,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def closest_resolution(
|
def closest_resolution(
|
||||||
resolution: Optional[Union[float, int]],
|
resolution: Optional[Union[float, int]],
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ dependencies = [
|
||||||
"lazy_loader==0.4",
|
"lazy_loader==0.4",
|
||||||
"importlib_metadata; python_version<'3.9'",
|
"importlib_metadata; python_version<'3.9'",
|
||||||
"looseversion==1.3.0; python_version>='3.12'",
|
"looseversion==1.3.0; python_version>='3.12'",
|
||||||
"junifer_data==1.1.0",
|
"junifer_data==1.2.0",
|
||||||
]
|
]
|
||||||
dynamic = ["version"]
|
dynamic = ["version"]
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue