hoa-tools 1.0.2b1__tar.gz → 1.0.4__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.

Files changed (239) hide show
  1. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/.pre-commit-config.yaml +1 -1
  2. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/.vscode/settings.json +2 -1
  3. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/PKG-INFO +3 -1
  4. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/docs/how_to.md +4 -0
  5. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/docs/release-notes.md +12 -0
  6. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/docs/tutorial/registration.py +5 -1
  7. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/pyproject.toml +13 -0
  8. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/_version.py +2 -2
  9. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/dataset.py +16 -0
  10. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/registration.py +41 -7
  11. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools.egg-info/PKG-INFO +3 -1
  12. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools.egg-info/requires.txt +2 -0
  13. hoa_tools-1.0.4/tests/test_registration.py +119 -0
  14. hoa_tools-1.0.2b1/tests/test_registration.py +0 -24
  15. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/.github/dependabot.yml +0 -0
  16. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/.github/workflows/publish.yml +0 -0
  17. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/.github/workflows/tests.yml +0 -0
  18. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/.gitignore +0 -0
  19. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/.gitmodules +0 -0
  20. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/.readthedocs.yml +0 -0
  21. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/CITATION.cff +0 -0
  22. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/LICENSE.md +0 -0
  23. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/MANIFEST.in +0 -0
  24. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/README.md +0 -0
  25. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/docs/api/dataset.md +0 -0
  26. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/docs/api/index.md +0 -0
  27. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/docs/api/inventory.md +0 -0
  28. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/docs/api/metadata.md +0 -0
  29. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/docs/api/types.md +0 -0
  30. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/docs/api/voi.md +0 -0
  31. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/docs/development.md +0 -0
  32. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/docs/index.md +0 -0
  33. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/docs/tutorial/dataset.py +0 -0
  34. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/docs/tutorial/fetching_data.py +0 -0
  35. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/docs/tutorial/index.md +0 -0
  36. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/docs/tutorial/inventory.py +0 -0
  37. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/docs/tutorial/vois.py +0 -0
  38. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/mkdocs.yml +0 -0
  39. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/ruff.toml +0 -0
  40. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/schemas/github-issue-forms.json +0 -0
  41. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/setup.cfg +0 -0
  42. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/__init__.py +0 -0
  43. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/_n5.py +0 -0
  44. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/A186_lung_right_VOI-3_4.26um_bm18.json +0 -0
  45. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/A186_lung_right_complete-organ_24.132um_bm18.json +0 -0
  46. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-124_lung_upper_lobe_complete-organ_26.38um_bm05.json +0 -0
  47. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-01.2_2.22um_bm05.json +0 -0
  48. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-01.2b_2.22um_bm05.json +0 -0
  49. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-01_6.24um_bm05.json +0 -0
  50. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-02.2_2.22um_bm05.json +0 -0
  51. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-02_6.24um_bm05.json +0 -0
  52. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-03.2_2.22um_bm05.json +0 -0
  53. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-03_6.24um_bm05.json +0 -0
  54. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-03b-bis_2.2um_bm05.json +0 -0
  55. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-04-bis_6.5um_bm05.json +0 -0
  56. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-04.2_2.22um_bm05.json +0 -0
  57. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-04_6.24um_bm05.json +0 -0
  58. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-05.2_2.22um_bm05.json +0 -0
  59. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-05_6.24um_bm05.json +0 -0
  60. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-08.2_2.22um_bm05.json +0 -0
  61. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-09.2_2.22um_bm05.json +0 -0
  62. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-10.2_2.22um_bm05.json +0 -0
  63. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-aa-bis_2.2um_bm05.json +0 -0
  64. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-aa_0.65um_bm05.json +0 -0
  65. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-sx20_6.24um_bm05.json +0 -0
  66. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_complete-upper-lobe-bis_25.25um_bm05.json +0 -0
  67. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_complete-upper-lobe_26.38um_bm05.json +0 -0
  68. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/FO-20-129_lung_right_upper_lobe_core-biopsy_2.25um_bm05.json +0 -0
  69. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/GLR-163_lung_right_lower_lobe_core-biopsy_2.45um_bm05.json +0 -0
  70. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_L-vent-muscle_2.22um_bm05.json +0 -0
  71. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_LR-vent-muscles-ramus-interventricularis-anterior_6.05um_bm05.json +0 -0
  72. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_ROI-01_6.5um_bm18.json +0 -0
  73. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_ROI-02_6.5um_bm18.json +0 -0
  74. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_ROI-03_6.5um_bm18.json +0 -0
  75. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_complete-organ_19.89um_bm18.json +0 -0
  76. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_complete-organ_25.08um_bm05.json +0 -0
  77. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_kidney_left_central-column_1.29um_bm05.json +0 -0
  78. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_kidney_left_central-column_6.05um_bm05.json +0 -0
  79. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_kidney_left_complete-organ_25.08um_bm05.json +0 -0
  80. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_FSC-A_2.51um_bm05.json +0 -0
  81. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_FSC-A_25.25um_bm05.json +0 -0
  82. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_FSC-A_6.5um_bm05.json +0 -0
  83. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_FSC-B_2.51um_bm05.json +0 -0
  84. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_FSC-B_25.25um_bm05.json +0 -0
  85. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_FSC-B_6.5um_bm05.json +0 -0
  86. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-01-upper-lobe-apical_2.45um_bm05.json +0 -0
  87. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-01-upper-lobe-apical_2.5um_bm05.json +0 -0
  88. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-01-upper-lobe-apical_6.05um_bm05.json +0 -0
  89. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-01-upper-lobe-apical_6.5um_bm05.json +0 -0
  90. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-02-lower-lobe-basal_2.45um_bm05.json +0 -0
  91. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-02-lower-lobe-basal_6.05um_bm05.json +0 -0
  92. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-02b-upper-lobe-apical_2.5um_bm05.json +0 -0
  93. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-02b-upper-lobe-medial_6.5um_bm05.json +0 -0
  94. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-03-upper-lobe-apical_2.5um_bm05.json +0 -0
  95. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-03_6.5um_bm05.json +0 -0
  96. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-03b-interlobular-fissure_6.5um_bm05.json +0 -0
  97. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-04-upper-lobe-medial_2.5um_bm05.json +0 -0
  98. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-04b-lower-lobe-basal-medial_6.5um_bm05.json +0 -0
  99. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-05-lower-lobe-basal_2.5um_bm05.json +0 -0
  100. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-05-upper-lobe-apical_6.5um_bm05.json +0 -0
  101. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-06-lower-lobe-basal_2.45um_bm05.json +0 -0
  102. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-06-lower-lobe-basal_6.05um_bm05.json +0 -0
  103. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_complete-organ_25.08um_bm05.json +0 -0
  104. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_spleen_central-column_1.29um_bm05.json +0 -0
  105. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_spleen_central-column_6.05um_bm05.json +0 -0
  106. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-27_spleen_complete-organ_25.08um_bm05.json +0 -0
  107. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_brain_cerebellum-occipital_6.05um_bm05.json +0 -0
  108. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_brain_cerebellum_2.45um_bm05.json +0 -0
  109. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_brain_complete-organ_25.08um_bm05.json +0 -0
  110. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_brain_frontal_2.45um_bm05.json +0 -0
  111. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_brain_hippocampus_2.45um_bm05.json +0 -0
  112. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_brain_hippocampus_6.05um_bm05.json +0 -0
  113. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-01_6.36um_bm18.json +0 -0
  114. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-01_6.5um_bm05.json +0 -0
  115. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-02_6.36um_bm18.json +0 -0
  116. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-02_6.5um_bm05.json +0 -0
  117. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-03_6.36um_bm18.json +0 -0
  118. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-03_6.5um_bm05.json +0 -0
  119. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-04_6.5um_bm05.json +0 -0
  120. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-05_6.36um_bm18.json +0 -0
  121. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-06_6.36um_bm18.json +0 -0
  122. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-07_6.36um_bm18.json +0 -0
  123. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_complete-organ_19.89um_bm18.json +0 -0
  124. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_complete-organ_25.17um_bm05.json +0 -0
  125. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_kidney_complete-organ_25.0um_bm05.json +0 -0
  126. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2020-31_kidney_lateral-transect_2.5um_bm05.json +0 -0
  127. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-02_6.54um_bm18.json +0 -0
  128. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-03_6.54um_bm18.json +0 -0
  129. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-13_6.36um_bm18.json +0 -0
  130. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_VOI-02.1_2.256um_bm18.json +0 -0
  131. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_VOI-03.2_2.256um_bm18.json +0 -0
  132. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_VOI-13.1_2.256um_bm18.json +0 -0
  133. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_complete-organ_23.42um_bm18.json +0 -0
  134. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_complete-organ_25.25um_bm05.json +0 -0
  135. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-01_6.36um_bm18.json +0 -0
  136. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-01_6.5um_bm05.json +0 -0
  137. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-02_6.36um_bm18.json +0 -0
  138. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-02_6.5um_bm05.json +0 -0
  139. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-03_6.36um_bm18.json +0 -0
  140. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-03_6.5um_bm05.json +0 -0
  141. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-04_6.36um_bm18.json +0 -0
  142. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-05_6.36um_bm18.json +0 -0
  143. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-06_6.36um_bm18.json +0 -0
  144. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-07_6.36um_bm18.json +0 -0
  145. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-1.1_2.256um_bm18.json +0 -0
  146. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-1.2_2.256um_bm18.json +0 -0
  147. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-3.1_2.256um_bm18.json +0 -0
  148. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-4.1_2.256um_bm18.json +0 -0
  149. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-4.2_2.256um_bm18.json +0 -0
  150. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-4.3_2.256um_bm18.json +0 -0
  151. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-5.1_2.256um_bm18.json +0 -0
  152. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-7.1_2.256um_bm18.json +0 -0
  153. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_complete-organ_19.85um_bm18.json +0 -0
  154. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_complete-organ_25.08um_bm05.json +0 -0
  155. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_left_VOI-01.1_2.6um_bm05.json +0 -0
  156. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_left_VOI-01_6.49um_bm05.json +0 -0
  157. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_left_VOI-02.1_2.6um_bm05.json +0 -0
  158. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_left_VOI-02_6.49um_bm05.json +0 -0
  159. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_left_complete-organ_25.14um_bm05.json +0 -0
  160. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_VOI-01.1_2.6um_bm05.json +0 -0
  161. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_VOI-01_6.5um_bm05.json +0 -0
  162. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_VOI-02.1_2.6um_bm05.json +0 -0
  163. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_VOI-02_6.5um_bm05.json +0 -0
  164. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_VOI-03.1_2.6um_bm05.json +0 -0
  165. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_VOI-03_6.5um_bm05.json +0 -0
  166. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_complete-organ_25.0um_bm05.json +0 -0
  167. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-17_spleen_complete-organ_25.0um_bm05.json +0 -0
  168. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-01_6.51um_bm18.json +0 -0
  169. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-02_6.51um_bm18.json +0 -0
  170. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-04_6.51um_bm18.json +0 -0
  171. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-05_6.51um_bm18.json +0 -0
  172. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-06_6.51um_bm18.json +0 -0
  173. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-07_6.51um_bm18.json +0 -0
  174. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-1.1_2.26um_bm18.json +0 -0
  175. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-1.2_2.26um_bm18.json +0 -0
  176. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-3.1_2.26um_bm18.json +0 -0
  177. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-4.1_2.26um_bm18.json +0 -0
  178. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-4.2_2.26um_bm18.json +0 -0
  179. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-5.1_2.26um_bm18.json +0 -0
  180. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-6.1_2.26um_bm18.json +0 -0
  181. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-7.1_2.26um_bm18.json +0 -0
  182. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_complete-organ_19.89um_bm18.json +0 -0
  183. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/LADAF-2022-13_kidney_2_complete-organ_15.77um_bm18.json +0 -0
  184. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-01_6.51um_bm18.json +0 -0
  185. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-02_6.51um_bm18.json +0 -0
  186. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-03_6.51um_bm18.json +0 -0
  187. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-04_6.51um_bm18.json +0 -0
  188. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-05_6.51um_bm18.json +0 -0
  189. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-06_6.51um_bm18.json +0 -0
  190. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-08_6.51um_bm18.json +0 -0
  191. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-28_heart_complete-organ_19.85um_bm18.json +0 -0
  192. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-28_heart_complete-organ_25.27um_bm05.json +0 -0
  193. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-28_kidney_complete-organ_25.0um_bm05.json +0 -0
  194. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-01_2.5um_bm05.json +0 -0
  195. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-01_6.5um_bm05.json +0 -0
  196. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-01b_6.5um_bm05.json +0 -0
  197. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-02_2.5um_bm05.json +0 -0
  198. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-02_6.5um_bm05.json +0 -0
  199. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-03_2.5um_bm05.json +0 -0
  200. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-03_6.5um_bm05.json +0 -0
  201. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-04_2.5um_bm05.json +0 -0
  202. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-04_6.5um_bm05.json +0 -0
  203. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-05_2.5um_bm05.json +0 -0
  204. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-05_6.5um_bm05.json +0 -0
  205. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_complete-organ_19.57um_bm18.json +0 -0
  206. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_brain_complete-organ_25.33um_bm05.json +0 -0
  207. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_heart_ROI-03_6.5um_bm05.json +0 -0
  208. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-01_2.5um_bm05.json +0 -0
  209. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-02_2.5um_bm05.json +0 -0
  210. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-04_6.5um_bm05.json +0 -0
  211. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-05b_6.5um_bm05.json +0 -0
  212. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_heart_complete-organ_19.89um_bm18.json +0 -0
  213. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_heart_complete-organ_25.25um_bm05.json +0 -0
  214. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_kidney_VOI-01_1.4um_bm05.json +0 -0
  215. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_kidney_VOI-01_6.5um_bm05.json +0 -0
  216. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_kidney_VOI-02_6.5um_bm05.json +0 -0
  217. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_kidney_VOI-03_6.5um_bm05.json +0 -0
  218. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_kidney_complete-organ_25.38um_bm05.json +0 -0
  219. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_lung_left_ROI-2.1_2.256um_bm18.json +0 -0
  220. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_lung_left_ROI-3.1_2.256um_bm18.json +0 -0
  221. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_lung_left_ROI-5.3_2.256um_bm18.json +0 -0
  222. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_lung_left_VOI-01_6.5um_bm05.json +0 -0
  223. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_lung_left_VOI-02_6.5um_bm05.json +0 -0
  224. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_lung_left_VOI-04_6.5um_bm05.json +0 -0
  225. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_lung_left_VOI-05_6.5um_bm05.json +0 -0
  226. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/data/metadata/metadata/S-20-29_lung_left_complete-organ_25.31um_bm05.json +0 -0
  227. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/inventory.py +0 -0
  228. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/metadata.py +0 -0
  229. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/py.typed +0 -0
  230. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/types.py +0 -0
  231. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools/voi.py +0 -0
  232. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools.egg-info/SOURCES.txt +0 -0
  233. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools.egg-info/dependency_links.txt +0 -0
  234. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/src/hoa_tools.egg-info/top_level.txt +0 -0
  235. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/tests/cassettes/test_remote_array.yaml +0 -0
  236. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/tests/cassettes/test_remote_array_zarr.yaml +0 -0
  237. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/tests/test_dataset.py +0 -0
  238. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/tests/test_inventory.py +0 -0
  239. {hoa_tools-1.0.2b1 → hoa_tools-1.0.4}/tests/test_voi.py +0 -0
@@ -3,7 +3,7 @@ ci:
3
3
 
4
4
  repos:
5
5
  - repo: https://github.com/astral-sh/ruff-pre-commit
6
- rev: v0.11.8
6
+ rev: v0.11.9
7
7
  hooks:
8
8
  - id: ruff
9
9
  - id: ruff-format
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "python.testing.pytestArgs": ["tests"],
3
3
  "python.testing.unittestEnabled": false,
4
- "python.testing.pytestEnabled": true
4
+ "python.testing.pytestEnabled": true,
5
+ "python.analysis.typeCheckingMode": "strict"
5
6
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hoa-tools
3
- Version: 1.0.2b1
3
+ Version: 1.0.4
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
@@ -4,3 +4,7 @@
4
4
 
5
5
  Download the private metadata JSON files to a directory on your computer,
6
6
  then use [hoa_tools.dataset.change_metadata_directory][].
7
+
8
+ ## Find all datasets registered to a given dataset?
9
+
10
+ Use [hoa_tools.dataset.Dataset.get_registered][].
@@ -1,5 +1,17 @@
1
1
  # Release notes
2
2
 
3
+ ## 1.0.4
4
+
5
+ - Fixed a bug that prevented transforming VOIs between two datasets that
6
+ are indirectly registered.
7
+
8
+ ## 1.0.3
9
+
10
+ - Added the ability to transform between datasets that are indirectly registered,
11
+ for example two zoom datasets that are registered to the same common overview dataset.
12
+ - Added [hoa_tools.dataset.Dataset.get_registered][] to get all datasets registered
13
+ (directly or indirectly) to a given dataset.
14
+
3
15
  ## 1.0.2
4
16
 
5
17
  - 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, a zoom dataset, and defining a VOI in the zoom 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 = [
@@ -76,11 +78,22 @@ skip = 'schemas/*'
76
78
  minversion = "6.0"
77
79
  testpaths = ["tests"]
78
80
  addopts = [
81
+ "-ra",
79
82
  "--color=yes",
80
83
  "--cov=hoa_tools",
81
84
  "--cov-report=xml",
82
85
  "--verbose",
83
86
  "--doctest-rst",
87
+ "-vv",
88
+ "--strict-config",
89
+ "--strict-markers",
90
+ ]
91
+ xfail_strict = true
92
+ log_cli_level = "INFO"
93
+ filterwarnings = [
94
+ "error",
95
+ # coming from simpleITK
96
+ "ignore:builtin type Swig.* has no __module__ attribute:DeprecationWarning",
84
97
  ]
85
98
 
86
99
  [tool.coverage]
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '1.0.2b1'
21
- __version_tuple__ = version_tuple = (1, 0, 2, 'b1')
20
+ __version__ = version = '1.0.4'
21
+ __version_tuple__ = version_tuple = (1, 0, 4)
@@ -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,18 @@ class RegistrationInventory:
28
32
  """
29
33
  Create registration inventory.
30
34
  """
31
- self._registrations: dict[tuple[str, str], sitk.Transform] = {}
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._registrations
41
+ try:
42
+ nx.shortest_path(self._graph, item[0].name, item[1].name)
43
+ except nx.exception.NetworkXNoPath:
44
+ return False
45
+ else:
46
+ return True
38
47
 
39
48
  def get_registration(
40
49
  self, *, source_dataset: Dataset, target_dataset: Dataset
@@ -42,7 +51,28 @@ class RegistrationInventory:
42
51
  """
43
52
  Get a registration.
44
53
  """
45
- return self._registrations[(source_dataset.name, target_dataset.name)]
54
+ try:
55
+ path = nx.shortest_path(
56
+ self._graph, source_dataset.name, target_dataset.name
57
+ )
58
+ except nx.exception.NetworkXNoPath:
59
+ msg = (
60
+ f"No registration path between {source_dataset.name} and "
61
+ f"{target_dataset.name}"
62
+ )
63
+ raise ValueError(msg) from None
64
+
65
+ transforms: list[sitk.Transform] = [
66
+ self._graph[p1][p2]["transform"] for p1, p2 in itertools.pairwise(path)
67
+ ]
68
+ if len(transforms) == 1:
69
+ return transforms[0]
70
+
71
+ ndim = 3
72
+ t = sitk.CompositeTransform(ndim) # type: ignore[no-untyped-call]
73
+ for transform in transforms:
74
+ t.AddTransform(transform) # type: ignore[no-untyped-call]
75
+ return t
46
76
 
47
77
  def add_registration(
48
78
  self,
@@ -59,16 +89,20 @@ class RegistrationInventory:
59
89
  This will override any already defined transforms for these two datasets.
60
90
 
61
91
  """
62
- self._registrations[(source_dataset.name, target_dataset.name)] = transform
63
- self._registrations[(target_dataset.name, source_dataset.name)] = (
64
- transform.GetInverse() # type: ignore[no-untyped-call]
92
+ self._graph.add_edge(
93
+ source_dataset.name, target_dataset.name, transform=transform
94
+ )
95
+ self._graph.add_edge(
96
+ target_dataset.name,
97
+ source_dataset.name,
98
+ transform=transform.GetInverse(), # type: ignore[no-untyped-call]
65
99
  )
66
100
 
67
101
  def _clear(self) -> None:
68
102
  """
69
103
  Remove all registrations.
70
104
  """
71
- self._registrations = {}
105
+ self._graph = nx.DiGraph()
72
106
 
73
107
 
74
108
  def build_transform(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hoa-tools
3
- Version: 1.0.2b1
3
+ Version: 1.0.4
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,6 @@
1
1
  dask[array]
2
2
  gcsfs>2023
3
+ networkx>=3
3
4
  pandas>=2
4
5
  pydantic>=2
5
6
  simpleitk
@@ -13,6 +14,7 @@ pre-commit
13
14
  ruff
14
15
  jupyterlab
15
16
  jupytext
17
+ types-networkx
16
18
  pandas-stubs
17
19
  datamodel-code-generator
18
20
 
@@ -0,0 +1,119 @@
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
+ assert (d1, d2) not in hoa_tools.registration.Inventory
75
+
76
+ with pytest.raises(
77
+ ValueError,
78
+ match=(
79
+ "No registration path between S-20-29_brain_VOI-04_6.5um_bm05 and "
80
+ "LADAF-2020-27_spleen_complete-organ_25.08um_bm05"
81
+ ),
82
+ ):
83
+ hoa_tools.registration.Inventory.get_registration(
84
+ source_dataset=d1, target_dataset=d2
85
+ )
86
+
87
+
88
+ def test_registered() -> None:
89
+ # Test getting transform between two datasets that aren't directly registered
90
+ d = hoa_tools.dataset.get_dataset("S-20-29_brain_VOI-04_6.5um_bm05")
91
+ registered = d.get_registered()
92
+ assert {d.name for d in registered} == {
93
+ "S-20-29_brain_complete-organ_25.33um_bm05",
94
+ "S-20-29_brain_VOI-04_2.5um_bm05",
95
+ "S-20-29_brain_VOI-03_6.5um_bm05",
96
+ "S-20-29_brain_VOI-01_2.5um_bm05",
97
+ "S-20-29_brain_VOI-03_2.5um_bm05",
98
+ "S-20-29_brain_VOI-01b_6.5um_bm05",
99
+ "S-20-29_brain_VOI-02_2.5um_bm05",
100
+ "S-20-29_brain_VOI-01_6.5um_bm05",
101
+ "S-20-29_brain_VOI-02_6.5um_bm05",
102
+ "S-20-29_brain_VOI-05_2.5um_bm05",
103
+ "S-20-29_brain_VOI-04_6.5um_bm05",
104
+ "S-20-29_brain_VOI-05_6.5um_bm05",
105
+ }
106
+
107
+
108
+ def test_transform_zoom_to_zoom() -> None:
109
+ zoom1 = hoa_tools.dataset.get_dataset("LADAF-2021-64_heart_VOI-07_6.51um_bm18")
110
+ zoom2 = hoa_tools.dataset.get_dataset("LADAF-2021-64_heart_VOI-7.1_2.26um_bm18")
111
+
112
+ voi = hoa_tools.voi.VOI(
113
+ dataset=zoom1,
114
+ downsample_level=0,
115
+ lower_corner={"x": 3434, "y": 2060, "z": 2656},
116
+ size={"x": 256, "y": 256, "z": 128},
117
+ )
118
+
119
+ voi.transform_to(zoom2)
@@ -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