hoa-tools 1.0.2__tar.gz → 1.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of hoa-tools might be problematic. Click here for more details.
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/.pre-commit-config.yaml +1 -1
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/.vscode/settings.json +2 -1
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/PKG-INFO +3 -1
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/docs/how_to.md +4 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/docs/release-notes.md +7 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/docs/tutorial/registration.py +5 -1
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/pyproject.toml +3 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/_version.py +2 -2
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/dataset.py +16 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/registration.py +36 -7
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools.egg-info/PKG-INFO +3 -1
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools.egg-info/requires.txt +2 -0
- hoa_tools-1.0.3/tests/test_registration.py +103 -0
- hoa_tools-1.0.2/tests/test_registration.py +0 -24
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/.github/dependabot.yml +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/.github/workflows/publish.yml +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/.github/workflows/tests.yml +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/.gitignore +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/.gitmodules +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/.readthedocs.yml +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/CITATION.cff +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/LICENSE.md +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/MANIFEST.in +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/README.md +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/docs/api/dataset.md +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/docs/api/index.md +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/docs/api/inventory.md +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/docs/api/metadata.md +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/docs/api/types.md +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/docs/api/voi.md +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/docs/development.md +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/docs/index.md +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/docs/tutorial/dataset.py +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/docs/tutorial/fetching_data.py +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/docs/tutorial/index.md +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/docs/tutorial/inventory.py +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/docs/tutorial/vois.py +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/mkdocs.yml +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/ruff.toml +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/schemas/github-issue-forms.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/setup.cfg +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/__init__.py +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/_n5.py +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/A186_lung_right_VOI-3_4.26um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/A186_lung_right_complete-organ_24.132um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-124_lung_upper_lobe_complete-organ_26.38um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-01.2_2.22um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-01.2b_2.22um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-01_6.24um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-02.2_2.22um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-02_6.24um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-03.2_2.22um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-03_6.24um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-03b-bis_2.2um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-04-bis_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-04.2_2.22um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-04_6.24um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-05.2_2.22um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-05_6.24um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-08.2_2.22um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-09.2_2.22um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-10.2_2.22um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-aa-bis_2.2um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-aa_0.65um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-sx20_6.24um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_complete-upper-lobe-bis_25.25um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_complete-upper-lobe_26.38um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_right_upper_lobe_core-biopsy_2.25um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/GLR-163_lung_right_lower_lobe_core-biopsy_2.45um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_L-vent-muscle_2.22um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_LR-vent-muscles-ramus-interventricularis-anterior_6.05um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_ROI-01_6.5um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_ROI-02_6.5um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_ROI-03_6.5um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_complete-organ_19.89um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_complete-organ_25.08um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_kidney_left_central-column_1.29um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_kidney_left_central-column_6.05um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_kidney_left_complete-organ_25.08um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_FSC-A_2.51um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_FSC-A_25.25um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_FSC-A_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_FSC-B_2.51um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_FSC-B_25.25um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_FSC-B_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-01-upper-lobe-apical_2.45um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-01-upper-lobe-apical_2.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-01-upper-lobe-apical_6.05um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-01-upper-lobe-apical_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-02-lower-lobe-basal_2.45um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-02-lower-lobe-basal_6.05um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-02b-upper-lobe-apical_2.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-02b-upper-lobe-medial_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-03-upper-lobe-apical_2.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-03_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-03b-interlobular-fissure_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-04-upper-lobe-medial_2.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-04b-lower-lobe-basal-medial_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-05-lower-lobe-basal_2.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-05-upper-lobe-apical_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-06-lower-lobe-basal_2.45um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-06-lower-lobe-basal_6.05um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_complete-organ_25.08um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_spleen_central-column_1.29um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_spleen_central-column_6.05um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_spleen_complete-organ_25.08um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_brain_cerebellum-occipital_6.05um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_brain_cerebellum_2.45um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_brain_complete-organ_25.08um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_brain_frontal_2.45um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_brain_hippocampus_2.45um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_brain_hippocampus_6.05um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-01_6.36um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-01_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-02_6.36um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-02_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-03_6.36um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-03_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-04_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-05_6.36um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-06_6.36um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-07_6.36um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_complete-organ_19.89um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_complete-organ_25.17um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_kidney_complete-organ_25.0um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_kidney_lateral-transect_2.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-02_6.54um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-03_6.54um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-13_6.36um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_VOI-02.1_2.256um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_VOI-03.2_2.256um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_VOI-13.1_2.256um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_complete-organ_23.42um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_complete-organ_25.25um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-01_6.36um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-01_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-02_6.36um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-02_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-03_6.36um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-03_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-04_6.36um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-05_6.36um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-06_6.36um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-07_6.36um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-1.1_2.256um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-1.2_2.256um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-3.1_2.256um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-4.1_2.256um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-4.2_2.256um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-4.3_2.256um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-5.1_2.256um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-7.1_2.256um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_complete-organ_19.85um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_complete-organ_25.08um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_left_VOI-01.1_2.6um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_left_VOI-01_6.49um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_left_VOI-02.1_2.6um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_left_VOI-02_6.49um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_left_complete-organ_25.14um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_VOI-01.1_2.6um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_VOI-01_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_VOI-02.1_2.6um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_VOI-02_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_VOI-03.1_2.6um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_VOI-03_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_complete-organ_25.0um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_spleen_complete-organ_25.0um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-01_6.51um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-02_6.51um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-04_6.51um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-05_6.51um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-06_6.51um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-07_6.51um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-1.1_2.26um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-1.2_2.26um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-3.1_2.26um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-4.1_2.26um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-4.2_2.26um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-5.1_2.26um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-6.1_2.26um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-7.1_2.26um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_complete-organ_19.89um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/LADAF-2022-13_kidney_2_complete-organ_15.77um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-01_6.51um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-02_6.51um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-03_6.51um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-04_6.51um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-05_6.51um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-06_6.51um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-08_6.51um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-28_heart_complete-organ_19.85um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-28_heart_complete-organ_25.27um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-28_kidney_complete-organ_25.0um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-01_2.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-01_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-01b_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-02_2.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-02_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-03_2.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-03_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-04_2.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-04_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-05_2.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-05_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_complete-organ_19.57um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_complete-organ_25.33um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_heart_ROI-03_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-01_2.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-02_2.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-04_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-05b_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_heart_complete-organ_19.89um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_heart_complete-organ_25.25um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_kidney_VOI-01_1.4um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_kidney_VOI-01_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_kidney_VOI-02_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_kidney_VOI-03_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_kidney_complete-organ_25.38um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_lung_left_ROI-2.1_2.256um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_lung_left_ROI-3.1_2.256um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_lung_left_ROI-5.3_2.256um_bm18.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_lung_left_VOI-01_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_lung_left_VOI-02_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_lung_left_VOI-04_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_lung_left_VOI-05_6.5um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/data/metadata/metadata/S-20-29_lung_left_complete-organ_25.31um_bm05.json +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/inventory.py +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/metadata.py +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/py.typed +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/types.py +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools/voi.py +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools.egg-info/SOURCES.txt +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools.egg-info/dependency_links.txt +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/src/hoa_tools.egg-info/top_level.txt +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/tests/cassettes/test_remote_array.yaml +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/tests/cassettes/test_remote_array_zarr.yaml +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/tests/test_dataset.py +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/tests/test_inventory.py +0 -0
- {hoa_tools-1.0.2 → hoa_tools-1.0.3}/tests/test_voi.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hoa-tools
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: Tools for working with the Human Organ Atlas
|
|
5
5
|
Author-email: David Stansby <d.stansby@ucl.ac.uk>
|
|
6
6
|
License: Copyright (c) 2024, David Stansby
|
|
@@ -44,6 +44,7 @@ Description-Content-Type: text/markdown
|
|
|
44
44
|
License-File: LICENSE.md
|
|
45
45
|
Requires-Dist: dask[array]
|
|
46
46
|
Requires-Dist: gcsfs>2023
|
|
47
|
+
Requires-Dist: networkx>=3
|
|
47
48
|
Requires-Dist: pandas>=2
|
|
48
49
|
Requires-Dist: pydantic>=2
|
|
49
50
|
Requires-Dist: simpleitk
|
|
@@ -56,6 +57,7 @@ Requires-Dist: pre-commit; extra == "dev"
|
|
|
56
57
|
Requires-Dist: ruff; extra == "dev"
|
|
57
58
|
Requires-Dist: jupyterlab; extra == "dev"
|
|
58
59
|
Requires-Dist: jupytext; extra == "dev"
|
|
60
|
+
Requires-Dist: types-networkx; extra == "dev"
|
|
59
61
|
Requires-Dist: pandas-stubs; extra == "dev"
|
|
60
62
|
Requires-Dist: datamodel-code-generator; extra == "dev"
|
|
61
63
|
Provides-Extra: docs
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Release notes
|
|
2
2
|
|
|
3
|
+
## 1.0.3
|
|
4
|
+
|
|
5
|
+
- Added the ability to transform between datasets that are indirectly registered,
|
|
6
|
+
for example two zoom datasets that are registered to the same common overview dataset.
|
|
7
|
+
- Added [hoa_tools.dataset.Dataset.get_registered][] to get all datasets registered
|
|
8
|
+
(directly or indirectly) to a given dataset.
|
|
9
|
+
|
|
3
10
|
## 1.0.2
|
|
4
11
|
|
|
5
12
|
- Fixed the inclusion of the metadata inventory in the distribution on PyPI.
|
|
@@ -12,11 +12,15 @@ import hoa_tools.voi
|
|
|
12
12
|
|
|
13
13
|
# -
|
|
14
14
|
|
|
15
|
-
# Lets start by getting an overview dataset,
|
|
15
|
+
# Lets start by getting an overview dataset, and seeing what datasets are registered to it.
|
|
16
16
|
|
|
17
17
|
overview_dataset = hoa_tools.dataset.get_dataset(
|
|
18
18
|
"S-20-29_brain_complete-organ_25.33um_bm05"
|
|
19
19
|
)
|
|
20
|
+
sorted([d.name for d in overview_dataset.get_registered()])
|
|
21
|
+
|
|
22
|
+
# From these we'll take a zoom dataset, and define a VOI in the zoom dataset.
|
|
23
|
+
|
|
20
24
|
zoom_dataset = hoa_tools.dataset.get_dataset("S-20-29_brain_VOI-04_6.5um_bm05")
|
|
21
25
|
zoom_voi = hoa_tools.voi.VOI(
|
|
22
26
|
dataset=zoom_dataset,
|
|
@@ -26,6 +26,7 @@ classifiers = [
|
|
|
26
26
|
dependencies = [
|
|
27
27
|
"dask[array]",
|
|
28
28
|
"gcsfs>2023",
|
|
29
|
+
"networkx>=3",
|
|
29
30
|
"pandas>=2",
|
|
30
31
|
"pydantic>=2",
|
|
31
32
|
"simpleitk",
|
|
@@ -43,6 +44,7 @@ optional-dependencies = { dev = [
|
|
|
43
44
|
"ruff",
|
|
44
45
|
"jupyterlab",
|
|
45
46
|
"jupytext",
|
|
47
|
+
"types-networkx",
|
|
46
48
|
"pandas-stubs",
|
|
47
49
|
"datamodel-code-generator",
|
|
48
50
|
], docs = [
|
|
@@ -81,6 +83,7 @@ addopts = [
|
|
|
81
83
|
"--cov-report=xml",
|
|
82
84
|
"--verbose",
|
|
83
85
|
"--doctest-rst",
|
|
86
|
+
"-vv",
|
|
84
87
|
]
|
|
85
88
|
|
|
86
89
|
[tool.coverage]
|
|
@@ -17,6 +17,7 @@ from typing import Literal
|
|
|
17
17
|
|
|
18
18
|
import dask.array.core
|
|
19
19
|
import gcsfs
|
|
20
|
+
import networkx as nx
|
|
20
21
|
import numpy as np
|
|
21
22
|
import xarray as xr
|
|
22
23
|
import zarr.core
|
|
@@ -41,6 +42,9 @@ class Dataset(HOAMetadata):
|
|
|
41
42
|
def __str__(self) -> str:
|
|
42
43
|
return f"Dataset(name={self.name})"
|
|
43
44
|
|
|
45
|
+
def __hash__(self) -> int:
|
|
46
|
+
return hash(self.name)
|
|
47
|
+
|
|
44
48
|
def _organ_str(self) -> str:
|
|
45
49
|
"""
|
|
46
50
|
Get name of organ, with organ context appended if present.
|
|
@@ -114,6 +118,18 @@ class Dataset(HOAMetadata):
|
|
|
114
118
|
]
|
|
115
119
|
return sorted(parents, key=lambda c: c.name)
|
|
116
120
|
|
|
121
|
+
def get_registered(self) -> set["Dataset"]:
|
|
122
|
+
"""
|
|
123
|
+
Get a set of all datasets that are registered (even indirectly) to this dataset.
|
|
124
|
+
"""
|
|
125
|
+
import hoa_tools.registration
|
|
126
|
+
|
|
127
|
+
dataset_names = nx.node_connected_component(
|
|
128
|
+
hoa_tools.registration.Inventory._graph.to_undirected(), # noqa: SLF001
|
|
129
|
+
self.name,
|
|
130
|
+
)
|
|
131
|
+
return {get_dataset(name) for name in dataset_names}
|
|
132
|
+
|
|
117
133
|
@property
|
|
118
134
|
def _remote_fmt(self) -> Literal["n5", "zarr"]:
|
|
119
135
|
if self.data.gcs_url.startswith("n5://"):
|
|
@@ -8,6 +8,10 @@ in units of micro-meters (μm).
|
|
|
8
8
|
Transforms are defined using the `SimpleITK` library.
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
|
+
import itertools
|
|
12
|
+
from typing import Any
|
|
13
|
+
|
|
14
|
+
import networkx as nx
|
|
11
15
|
import numpy as np
|
|
12
16
|
import SimpleITK as sitk
|
|
13
17
|
|
|
@@ -28,13 +32,13 @@ class RegistrationInventory:
|
|
|
28
32
|
"""
|
|
29
33
|
Create registration inventory.
|
|
30
34
|
"""
|
|
31
|
-
self.
|
|
35
|
+
self._graph: nx.DiGraph[Any] = nx.DiGraph()
|
|
32
36
|
|
|
33
37
|
def __contains__(self, item: tuple[Dataset, Dataset]) -> bool:
|
|
34
38
|
"""
|
|
35
39
|
Check for existence of registration between two datasets.
|
|
36
40
|
"""
|
|
37
|
-
return (item[0].name, item[1].name) in self.
|
|
41
|
+
return (item[0].name, item[1].name) in self._graph.edges
|
|
38
42
|
|
|
39
43
|
def get_registration(
|
|
40
44
|
self, *, source_dataset: Dataset, target_dataset: Dataset
|
|
@@ -42,7 +46,28 @@ class RegistrationInventory:
|
|
|
42
46
|
"""
|
|
43
47
|
Get a registration.
|
|
44
48
|
"""
|
|
45
|
-
|
|
49
|
+
try:
|
|
50
|
+
path = nx.shortest_path(
|
|
51
|
+
self._graph, source_dataset.name, target_dataset.name
|
|
52
|
+
)
|
|
53
|
+
except nx.exception.NetworkXNoPath:
|
|
54
|
+
msg = (
|
|
55
|
+
f"No registration path between {source_dataset.name} and "
|
|
56
|
+
f"{target_dataset.name}"
|
|
57
|
+
)
|
|
58
|
+
raise ValueError(msg) from None
|
|
59
|
+
|
|
60
|
+
transforms: list[sitk.Transform] = [
|
|
61
|
+
self._graph[p1][p2]["transform"] for p1, p2 in itertools.pairwise(path)
|
|
62
|
+
]
|
|
63
|
+
if len(transforms) == 1:
|
|
64
|
+
return transforms[0]
|
|
65
|
+
|
|
66
|
+
ndim = 3
|
|
67
|
+
t = sitk.CompositeTransform(ndim) # type: ignore[no-untyped-call]
|
|
68
|
+
for transform in transforms:
|
|
69
|
+
t.AddTransform(transform) # type: ignore[no-untyped-call]
|
|
70
|
+
return t
|
|
46
71
|
|
|
47
72
|
def add_registration(
|
|
48
73
|
self,
|
|
@@ -59,16 +84,20 @@ class RegistrationInventory:
|
|
|
59
84
|
This will override any already defined transforms for these two datasets.
|
|
60
85
|
|
|
61
86
|
"""
|
|
62
|
-
self.
|
|
63
|
-
|
|
64
|
-
|
|
87
|
+
self._graph.add_edge(
|
|
88
|
+
source_dataset.name, target_dataset.name, transform=transform
|
|
89
|
+
)
|
|
90
|
+
self._graph.add_edge(
|
|
91
|
+
target_dataset.name,
|
|
92
|
+
source_dataset.name,
|
|
93
|
+
transform=transform.GetInverse(), # type: ignore[no-untyped-call]
|
|
65
94
|
)
|
|
66
95
|
|
|
67
96
|
def _clear(self) -> None:
|
|
68
97
|
"""
|
|
69
98
|
Remove all registrations.
|
|
70
99
|
"""
|
|
71
|
-
self.
|
|
100
|
+
self._graph = nx.DiGraph()
|
|
72
101
|
|
|
73
102
|
|
|
74
103
|
def build_transform(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hoa-tools
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: Tools for working with the Human Organ Atlas
|
|
5
5
|
Author-email: David Stansby <d.stansby@ucl.ac.uk>
|
|
6
6
|
License: Copyright (c) 2024, David Stansby
|
|
@@ -44,6 +44,7 @@ Description-Content-Type: text/markdown
|
|
|
44
44
|
License-File: LICENSE.md
|
|
45
45
|
Requires-Dist: dask[array]
|
|
46
46
|
Requires-Dist: gcsfs>2023
|
|
47
|
+
Requires-Dist: networkx>=3
|
|
47
48
|
Requires-Dist: pandas>=2
|
|
48
49
|
Requires-Dist: pydantic>=2
|
|
49
50
|
Requires-Dist: simpleitk
|
|
@@ -56,6 +57,7 @@ Requires-Dist: pre-commit; extra == "dev"
|
|
|
56
57
|
Requires-Dist: ruff; extra == "dev"
|
|
57
58
|
Requires-Dist: jupyterlab; extra == "dev"
|
|
58
59
|
Requires-Dist: jupytext; extra == "dev"
|
|
60
|
+
Requires-Dist: types-networkx; extra == "dev"
|
|
59
61
|
Requires-Dist: pandas-stubs; extra == "dev"
|
|
60
62
|
Requires-Dist: datamodel-code-generator; extra == "dev"
|
|
61
63
|
Provides-Extra: docs
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
|
|
3
|
+
import hoa_tools.dataset
|
|
4
|
+
import hoa_tools.registration
|
|
5
|
+
import hoa_tools.voi
|
|
6
|
+
from hoa_tools.types import ArrayCoordinate
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def test_transform_voi() -> None:
|
|
10
|
+
overview = hoa_tools.dataset.get_dataset(
|
|
11
|
+
"S-20-29_brain_complete-organ_25.33um_bm05"
|
|
12
|
+
)
|
|
13
|
+
child = hoa_tools.dataset.get_dataset("S-20-29_brain_VOI-04_6.5um_bm05")
|
|
14
|
+
|
|
15
|
+
child_voi = hoa_tools.voi.VOI(
|
|
16
|
+
dataset=child,
|
|
17
|
+
downsample_level=0,
|
|
18
|
+
lower_corner=ArrayCoordinate(x=3434, y=2060, z=2656),
|
|
19
|
+
size=ArrayCoordinate(x=256, y=256, z=128),
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
overview_voi = child_voi.transform_to(overview)
|
|
23
|
+
assert overview_voi.dataset.name == "S-20-29_brain_complete-organ_25.33um_bm05"
|
|
24
|
+
assert overview_voi.downsample_level == 0
|
|
25
|
+
assert overview_voi.lower_corner == ArrayCoordinate(x=2975, y=1689, z=4316)
|
|
26
|
+
assert overview_voi.size == ArrayCoordinate(x=69, y=69, z=33)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def test_inverse_registration() -> None:
|
|
30
|
+
overview = hoa_tools.dataset.get_dataset(
|
|
31
|
+
"S-20-29_brain_complete-organ_25.33um_bm05"
|
|
32
|
+
)
|
|
33
|
+
zoom = hoa_tools.dataset.get_dataset("S-20-29_brain_VOI-04_6.5um_bm05")
|
|
34
|
+
|
|
35
|
+
transform = hoa_tools.registration.Inventory.get_registration(
|
|
36
|
+
source_dataset=zoom, target_dataset=overview
|
|
37
|
+
)
|
|
38
|
+
transform_inv = hoa_tools.registration.Inventory.get_registration(
|
|
39
|
+
source_dataset=overview, target_dataset=zoom
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
assert transform.GetParameters() == (
|
|
43
|
+
0.020069870800809003,
|
|
44
|
+
0.0,
|
|
45
|
+
0.0,
|
|
46
|
+
92062.68586067778,
|
|
47
|
+
30372.305582420606,
|
|
48
|
+
52529.27516774854,
|
|
49
|
+
1.0000012996591003,
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
# Check transform roundtrip
|
|
53
|
+
point = (0, 0, 0)
|
|
54
|
+
assert transform_inv.TransformPoint(transform.TransformPoint(point)) == point
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def test_transform_path() -> None:
|
|
58
|
+
# Test getting transform between two datasets that aren't directly registered
|
|
59
|
+
zoom1 = hoa_tools.dataset.get_dataset("S-20-29_brain_VOI-04_6.5um_bm05")
|
|
60
|
+
zoom2 = hoa_tools.dataset.get_dataset("S-20-29_brain_VOI-05_6.5um_bm05")
|
|
61
|
+
|
|
62
|
+
hoa_tools.registration.Inventory.get_registration(
|
|
63
|
+
source_dataset=zoom1, target_dataset=zoom2
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def test_no_transform_path() -> None:
|
|
68
|
+
# Test getting transform between two datasets that aren't directly registered
|
|
69
|
+
d1 = hoa_tools.dataset.get_dataset("S-20-29_brain_VOI-04_6.5um_bm05")
|
|
70
|
+
d2 = hoa_tools.dataset.get_dataset(
|
|
71
|
+
"LADAF-2020-27_spleen_complete-organ_25.08um_bm05"
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
with pytest.raises(
|
|
75
|
+
ValueError,
|
|
76
|
+
match=(
|
|
77
|
+
"No registration path between S-20-29_brain_VOI-04_6.5um_bm05 and "
|
|
78
|
+
"LADAF-2020-27_spleen_complete-organ_25.08um_bm05"
|
|
79
|
+
),
|
|
80
|
+
):
|
|
81
|
+
hoa_tools.registration.Inventory.get_registration(
|
|
82
|
+
source_dataset=d1, target_dataset=d2
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def test_registered() -> None:
|
|
87
|
+
# Test getting transform between two datasets that aren't directly registered
|
|
88
|
+
d = hoa_tools.dataset.get_dataset("S-20-29_brain_VOI-04_6.5um_bm05")
|
|
89
|
+
registered = d.get_registered()
|
|
90
|
+
assert {d.name for d in registered} == {
|
|
91
|
+
"S-20-29_brain_complete-organ_25.33um_bm05",
|
|
92
|
+
"S-20-29_brain_VOI-04_2.5um_bm05",
|
|
93
|
+
"S-20-29_brain_VOI-03_6.5um_bm05",
|
|
94
|
+
"S-20-29_brain_VOI-01_2.5um_bm05",
|
|
95
|
+
"S-20-29_brain_VOI-03_2.5um_bm05",
|
|
96
|
+
"S-20-29_brain_VOI-01b_6.5um_bm05",
|
|
97
|
+
"S-20-29_brain_VOI-02_2.5um_bm05",
|
|
98
|
+
"S-20-29_brain_VOI-01_6.5um_bm05",
|
|
99
|
+
"S-20-29_brain_VOI-02_6.5um_bm05",
|
|
100
|
+
"S-20-29_brain_VOI-05_2.5um_bm05",
|
|
101
|
+
"S-20-29_brain_VOI-04_6.5um_bm05",
|
|
102
|
+
"S-20-29_brain_VOI-05_6.5um_bm05",
|
|
103
|
+
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import hoa_tools.dataset
|
|
2
|
-
import hoa_tools.registration
|
|
3
|
-
import hoa_tools.voi
|
|
4
|
-
from hoa_tools.types import ArrayCoordinate
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
def test_transform_voi() -> None:
|
|
8
|
-
overview = hoa_tools.dataset.get_dataset(
|
|
9
|
-
"S-20-29_brain_complete-organ_25.33um_bm05"
|
|
10
|
-
)
|
|
11
|
-
child = hoa_tools.dataset.get_dataset("S-20-29_brain_VOI-04_6.5um_bm05")
|
|
12
|
-
|
|
13
|
-
child_voi = hoa_tools.voi.VOI(
|
|
14
|
-
dataset=child,
|
|
15
|
-
downsample_level=0,
|
|
16
|
-
lower_corner=ArrayCoordinate(x=3434, y=2060, z=2656),
|
|
17
|
-
size=ArrayCoordinate(x=256, y=256, z=128),
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
overview_voi = child_voi.transform_to(overview)
|
|
21
|
-
assert overview_voi.dataset.name == "S-20-29_brain_complete-organ_25.33um_bm05"
|
|
22
|
-
assert overview_voi.downsample_level == 0
|
|
23
|
-
assert overview_voi.lower_corner == ArrayCoordinate(x=2975, y=1689, z=4316)
|
|
24
|
-
assert overview_voi.size == ArrayCoordinate(x=69, y=69, z=33)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|