hoa-tools 1.0.10__py3-none-any.whl

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.
Files changed (313) hide show
  1. hoa_tools/__init__.py +5 -0
  2. hoa_tools/_n5.py +10 -0
  3. hoa_tools/_version.py +34 -0
  4. hoa_tools/data/metadata/metadata/A129_lung_VOI-02_2.0um_bm18.json +286 -0
  5. hoa_tools/data/metadata/metadata/A186_lung_right_VOI-3_4.26um_bm18.json +275 -0
  6. hoa_tools/data/metadata/metadata/A186_lung_right_complete-organ_24.132um_bm18.json +269 -0
  7. hoa_tools/data/metadata/metadata/AUMC-005_uterus_complete-organ_20.026um_bm18.json +331 -0
  8. hoa_tools/data/metadata/metadata/FO-20-124_lung_upper_lobe_VOI-01_2.5um_bm05.json +211 -0
  9. hoa_tools/data/metadata/metadata/FO-20-124_lung_upper_lobe_VOI-01_6.5um_bm05.json +217 -0
  10. hoa_tools/data/metadata/metadata/FO-20-124_lung_upper_lobe_VOI-02_2.5um_bm05.json +211 -0
  11. hoa_tools/data/metadata/metadata/FO-20-124_lung_upper_lobe_VOI-02_6.5um_bm05.json +217 -0
  12. hoa_tools/data/metadata/metadata/FO-20-124_lung_upper_lobe_VOI-03_2.5um_bm05.json +211 -0
  13. hoa_tools/data/metadata/metadata/FO-20-124_lung_upper_lobe_VOI-03_6.5um_bm05.json +217 -0
  14. hoa_tools/data/metadata/metadata/FO-20-124_lung_upper_lobe_VOI-04_6.5um_bm05.json +211 -0
  15. hoa_tools/data/metadata/metadata/FO-20-124_lung_upper_lobe_VOI-07_2.5um_bm05.json +211 -0
  16. hoa_tools/data/metadata/metadata/FO-20-124_lung_upper_lobe_VOI-08_2.5um_bm05.json +211 -0
  17. hoa_tools/data/metadata/metadata/FO-20-124_lung_upper_lobe_central-column_6.24um_bm05.json +214 -0
  18. hoa_tools/data/metadata/metadata/FO-20-124_lung_upper_lobe_complete-organ_26.38um_bm05.json +208 -0
  19. hoa_tools/data/metadata/metadata/FO-20-125_lung_complete-organ_26.38um_bm05.json +208 -0
  20. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-01.2_2.22um_bm05.json +210 -0
  21. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-01.2b_2.22um_bm05.json +210 -0
  22. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-01_6.24um_bm05.json +214 -0
  23. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-02.2_2.22um_bm05.json +210 -0
  24. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-02_6.24um_bm05.json +214 -0
  25. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-03.2_2.22um_bm05.json +210 -0
  26. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-03_6.24um_bm05.json +214 -0
  27. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-03b-bis_2.2um_bm05.json +210 -0
  28. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-04-bis_6.5um_bm05.json +210 -0
  29. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-04.2_2.22um_bm05.json +210 -0
  30. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-04_6.24um_bm05.json +214 -0
  31. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-05.2_2.22um_bm05.json +210 -0
  32. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-05_6.24um_bm05.json +214 -0
  33. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-08.2_2.22um_bm05.json +210 -0
  34. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-09.2_2.22um_bm05.json +210 -0
  35. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-10.2_2.22um_bm05.json +210 -0
  36. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-aa-bis_2.2um_bm05.json +210 -0
  37. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-aa_0.65um_bm05.json +199 -0
  38. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_VOI-sx20_6.24um_bm05.json +214 -0
  39. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_complete-upper-lobe-bis_25.25um_bm05.json +204 -0
  40. hoa_tools/data/metadata/metadata/FO-20-129_lung_left_upper_lobe_complete-upper-lobe_26.38um_bm05.json +208 -0
  41. hoa_tools/data/metadata/metadata/FO-20-129_lung_right_upper_lobe_core-biopsy_2.25um_bm05.json +204 -0
  42. hoa_tools/data/metadata/metadata/FO-20-135_lung_complete-organ_25.25um_bm05.json +204 -0
  43. hoa_tools/data/metadata/metadata/FO-20-153_lung_complete-organ_25.25um_bm05.json +204 -0
  44. hoa_tools/data/metadata/metadata/FO-20-154_lung_col1_2.5um_bm05.json +204 -0
  45. hoa_tools/data/metadata/metadata/FO-20-154_lung_col1_6.5um_bm05.json +210 -0
  46. hoa_tools/data/metadata/metadata/FO-20-154_lung_col2_2.5um_bm05.json +204 -0
  47. hoa_tools/data/metadata/metadata/FO-20-154_lung_col2_6.5um_bm05.json +210 -0
  48. hoa_tools/data/metadata/metadata/FO-20-154_lung_col3_2.5um_bm05.json +204 -0
  49. hoa_tools/data/metadata/metadata/FO-20-154_lung_col4_2.5um_bm05.json +204 -0
  50. hoa_tools/data/metadata/metadata/FO-20-154_lung_col5_2.5um_bm05.json +204 -0
  51. hoa_tools/data/metadata/metadata/FO-20-154_lung_col6_2.5um_bm05.json +204 -0
  52. hoa_tools/data/metadata/metadata/FO-20-154_lung_col7_2.5um_bm05.json +204 -0
  53. hoa_tools/data/metadata/metadata/FO-20-154_lung_complete-organ_25.25um_bm05.json +204 -0
  54. hoa_tools/data/metadata/metadata/FO-20-155_lung_col1_2.5um_bm05.json +204 -0
  55. hoa_tools/data/metadata/metadata/FO-20-155_lung_col1_6.5um_bm05.json +210 -0
  56. hoa_tools/data/metadata/metadata/FO-20-155_lung_col2_2.5um_bm05.json +204 -0
  57. hoa_tools/data/metadata/metadata/FO-20-155_lung_col2_6.5um_bm05.json +210 -0
  58. hoa_tools/data/metadata/metadata/FO-20-155_lung_col3_2.5um_bm05.json +204 -0
  59. hoa_tools/data/metadata/metadata/FO-20-155_lung_col3_6.5um_bm05.json +210 -0
  60. hoa_tools/data/metadata/metadata/FO-20-155_lung_col4_6.5um_bm05.json +210 -0
  61. hoa_tools/data/metadata/metadata/FO-20-155_lung_col6_2.5um_bm05.json +210 -0
  62. hoa_tools/data/metadata/metadata/FO-20-155_lung_complete-organ_25.28um_bm05.json +199 -0
  63. hoa_tools/data/metadata/metadata/FO-20-160_lung_complete-organ_25.0um_bm05.json +199 -0
  64. hoa_tools/data/metadata/metadata/GLR-163_lung_right_lower_lobe_core-biopsy_2.45um_bm05.json +204 -0
  65. hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_L-vent-muscle_2.22um_bm05.json +210 -0
  66. hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_LR-vent-muscles-ramus-interventricularis-anterior_6.05um_bm05.json +210 -0
  67. hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_ROI-01_6.5um_bm18.json +272 -0
  68. hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_ROI-02_6.5um_bm18.json +272 -0
  69. hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_ROI-03_6.5um_bm18.json +272 -0
  70. hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_complete-organ_19.89um_bm18.json +252 -0
  71. hoa_tools/data/metadata/metadata/LADAF-2020-27_heart_complete-organ_25.08um_bm05.json +204 -0
  72. hoa_tools/data/metadata/metadata/LADAF-2020-27_kidney_left_central-column_1.29um_bm05.json +210 -0
  73. hoa_tools/data/metadata/metadata/LADAF-2020-27_kidney_left_central-column_6.05um_bm05.json +210 -0
  74. hoa_tools/data/metadata/metadata/LADAF-2020-27_kidney_left_complete-organ_25.08um_bm05.json +204 -0
  75. hoa_tools/data/metadata/metadata/LADAF-2020-27_kidney_right_complete-organ_25.0um_bm05.json +204 -0
  76. hoa_tools/data/metadata/metadata/LADAF-2020-27_liver_complete-organ_19.61um_bm18.json +266 -0
  77. hoa_tools/data/metadata/metadata/LADAF-2020-27_liver_complete-organ_25.25um_bm05.json +204 -0
  78. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_FSC-A_2.51um_bm05.json +199 -0
  79. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_FSC-A_25.25um_bm05.json +205 -0
  80. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_FSC-A_6.5um_bm05.json +199 -0
  81. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_FSC-B_2.51um_bm05.json +199 -0
  82. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_FSC-B_25.25um_bm05.json +205 -0
  83. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_FSC-B_6.5um_bm05.json +199 -0
  84. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-01-upper-lobe-apical_2.45um_bm05.json +210 -0
  85. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-01-upper-lobe-apical_2.5um_bm05.json +210 -0
  86. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-01-upper-lobe-apical_6.05um_bm05.json +210 -0
  87. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-01-upper-lobe-apical_6.5um_bm05.json +205 -0
  88. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-02-lower-lobe-basal_2.45um_bm05.json +210 -0
  89. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-02-lower-lobe-basal_6.05um_bm05.json +210 -0
  90. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-02b-upper-lobe-apical_2.5um_bm05.json +210 -0
  91. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-02b-upper-lobe-medial_6.5um_bm05.json +205 -0
  92. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-03-upper-lobe-apical_2.5um_bm05.json +210 -0
  93. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-03_6.5um_bm05.json +205 -0
  94. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-03b-interlobular-fissure_6.5um_bm05.json +205 -0
  95. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-04-upper-lobe-medial_2.5um_bm05.json +210 -0
  96. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-04b-lower-lobe-basal-medial_6.5um_bm05.json +205 -0
  97. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-05-lower-lobe-basal_2.5um_bm05.json +210 -0
  98. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-05-upper-lobe-apical_6.5um_bm05.json +205 -0
  99. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-06-lower-lobe-basal_2.45um_bm05.json +210 -0
  100. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_VOI-06-lower-lobe-basal_6.05um_bm05.json +210 -0
  101. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_left_complete-organ_25.08um_bm05.json +204 -0
  102. hoa_tools/data/metadata/metadata/LADAF-2020-27_lung_right_complete-organ_19.61um_bm18.json +266 -0
  103. hoa_tools/data/metadata/metadata/LADAF-2020-27_spleen_central-column_1.29um_bm05.json +210 -0
  104. hoa_tools/data/metadata/metadata/LADAF-2020-27_spleen_central-column_6.05um_bm05.json +210 -0
  105. hoa_tools/data/metadata/metadata/LADAF-2020-27_spleen_complete-organ_25.08um_bm05.json +204 -0
  106. hoa_tools/data/metadata/metadata/LADAF-2020-31_brain_cerebellum-occipital_6.05um_bm05.json +210 -0
  107. hoa_tools/data/metadata/metadata/LADAF-2020-31_brain_cerebellum_2.45um_bm05.json +210 -0
  108. hoa_tools/data/metadata/metadata/LADAF-2020-31_brain_complete-organ_25.08um_bm05.json +204 -0
  109. hoa_tools/data/metadata/metadata/LADAF-2020-31_brain_frontal_2.45um_bm05.json +210 -0
  110. hoa_tools/data/metadata/metadata/LADAF-2020-31_brain_hippocampus_2.45um_bm05.json +204 -0
  111. hoa_tools/data/metadata/metadata/LADAF-2020-31_brain_hippocampus_6.05um_bm05.json +210 -0
  112. hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-01_6.36um_bm18.json +246 -0
  113. hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-01_6.5um_bm05.json +205 -0
  114. hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-02_6.36um_bm18.json +246 -0
  115. hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-02_6.5um_bm05.json +205 -0
  116. hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-03_6.36um_bm18.json +246 -0
  117. hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-03_6.5um_bm05.json +205 -0
  118. hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-04_6.5um_bm05.json +205 -0
  119. hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-05_6.36um_bm18.json +246 -0
  120. hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-06_6.36um_bm18.json +246 -0
  121. hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_ROI-07_6.36um_bm18.json +246 -0
  122. hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_complete-organ_19.89um_bm18.json +252 -0
  123. hoa_tools/data/metadata/metadata/LADAF-2020-31_heart_complete-organ_25.17um_bm05.json +204 -0
  124. hoa_tools/data/metadata/metadata/LADAF-2020-31_kidney_complete-organ_25.0um_bm05.json +204 -0
  125. hoa_tools/data/metadata/metadata/LADAF-2020-31_kidney_lateral-transect_2.5um_bm05.json +211 -0
  126. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-01_6.54um_bm18.json +258 -0
  127. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-02_6.54um_bm18.json +258 -0
  128. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-03_6.54um_bm18.json +258 -0
  129. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-04_6.54um_bm18.json +258 -0
  130. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-05_6.54um_bm18.json +258 -0
  131. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-06_6.54um_bm18.json +258 -0
  132. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-07_6.54um_bm18.json +258 -0
  133. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-08_6.54um_bm18.json +258 -0
  134. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-09_6.54um_bm18.json +258 -0
  135. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-10_6.54um_bm18.json +258 -0
  136. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-11_6.36um_bm18.json +246 -0
  137. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-12_6.36um_bm18.json +246 -0
  138. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-13_6.36um_bm18.json +246 -0
  139. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-14_6.36um_bm18.json +246 -0
  140. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_ROI-15_6.36um_bm18.json +246 -0
  141. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_VOI-02.1_2.256um_bm18.json +272 -0
  142. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_VOI-03.2_2.256um_bm18.json +272 -0
  143. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_VOI-13.1_2.256um_bm18.json +272 -0
  144. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_complete-organ_23.42um_bm18.json +266 -0
  145. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_complete-organ_25.25um_bm05.json +218 -0
  146. hoa_tools/data/metadata/metadata/LADAF-2021-17_brain_complete-organ_7.72um_bm18.json +240 -0
  147. hoa_tools/data/metadata/metadata/LADAF-2021-17_colon_VOI-01_1.444um_bm05.json +255 -0
  148. hoa_tools/data/metadata/metadata/LADAF-2021-17_colon_VOI-01_4.502um_bm18.json +261 -0
  149. hoa_tools/data/metadata/metadata/LADAF-2021-17_colon_VOI-07_1.444um_bm05.json +255 -0
  150. hoa_tools/data/metadata/metadata/LADAF-2021-17_colon_VOI-11_4.502um_bm18.json +261 -0
  151. hoa_tools/data/metadata/metadata/LADAF-2021-17_colon_complete-organ_20.025um_bm18.json +260 -0
  152. hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-01_6.36um_bm18.json +246 -0
  153. hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-01_6.5um_bm05.json +265 -0
  154. hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-02_6.36um_bm18.json +246 -0
  155. hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-02_6.5um_bm05.json +265 -0
  156. hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-03_6.36um_bm18.json +246 -0
  157. hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-03_6.5um_bm05.json +265 -0
  158. hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-04_6.36um_bm18.json +246 -0
  159. hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-05_6.36um_bm18.json +246 -0
  160. hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-06_6.36um_bm18.json +246 -0
  161. hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-07_6.36um_bm18.json +246 -0
  162. hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-1.1_2.256um_bm18.json +272 -0
  163. hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-1.2_2.256um_bm18.json +272 -0
  164. hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-3.1_2.256um_bm18.json +272 -0
  165. hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-4.1_2.256um_bm18.json +272 -0
  166. hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-4.2_2.256um_bm18.json +272 -0
  167. hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-4.3_2.256um_bm18.json +272 -0
  168. hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-5.1_2.256um_bm18.json +272 -0
  169. hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_ROI-7.1_2.256um_bm18.json +272 -0
  170. hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_complete-organ_19.85um_bm18.json +240 -0
  171. hoa_tools/data/metadata/metadata/LADAF-2021-17_heart_complete-organ_25.08um_bm05.json +252 -0
  172. hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_left_VOI-01.1_2.6um_bm05.json +258 -0
  173. hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_left_VOI-01_6.49um_bm05.json +258 -0
  174. hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_left_VOI-02.1_2.6um_bm05.json +258 -0
  175. hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_left_VOI-02_6.49um_bm05.json +258 -0
  176. hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_left_complete-organ_25.14um_bm05.json +252 -0
  177. hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_VOI-01.1_2.6um_bm05.json +258 -0
  178. hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_VOI-01_6.5um_bm05.json +258 -0
  179. hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_VOI-02.1_2.6um_bm05.json +258 -0
  180. hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_VOI-02_6.5um_bm05.json +258 -0
  181. hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_VOI-03.1_2.6um_bm05.json +258 -0
  182. hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_VOI-03_6.5um_bm05.json +258 -0
  183. hoa_tools/data/metadata/metadata/LADAF-2021-17_kidney_right_complete-organ_25.0um_bm05.json +218 -0
  184. hoa_tools/data/metadata/metadata/LADAF-2021-17_liver_VOI-01_4.14um_bm18.json +233 -0
  185. hoa_tools/data/metadata/metadata/LADAF-2021-17_liver_VOI-02_4.14um_bm18.json +233 -0
  186. hoa_tools/data/metadata/metadata/LADAF-2021-17_liver_VOI-03_4.14um_bm18.json +233 -0
  187. hoa_tools/data/metadata/metadata/LADAF-2021-17_liver_VOI-08_4.14um_bm18.json +233 -0
  188. hoa_tools/data/metadata/metadata/LADAF-2021-17_liver_complete-organ_22.56um_bm18.json +240 -0
  189. hoa_tools/data/metadata/metadata/LADAF-2021-17_lung_left_complete-organ_22.56um_bm18.json +240 -0
  190. hoa_tools/data/metadata/metadata/LADAF-2021-17_lung_right_VOI-01_5.05um_bm18.json +246 -0
  191. hoa_tools/data/metadata/metadata/LADAF-2021-17_lung_right_VOI-03_5.05um_bm18.json +246 -0
  192. hoa_tools/data/metadata/metadata/LADAF-2021-17_lung_right_VOI-04_5.05um_bm18.json +246 -0
  193. hoa_tools/data/metadata/metadata/LADAF-2021-17_lung_right_VOI-05_5.05um_bm18.json +246 -0
  194. hoa_tools/data/metadata/metadata/LADAF-2021-17_lung_right_VOI-06_5.05um_bm18.json +246 -0
  195. hoa_tools/data/metadata/metadata/LADAF-2021-17_lung_right_VOI-07_5.05um_bm18.json +246 -0
  196. hoa_tools/data/metadata/metadata/LADAF-2021-17_lung_right_VOI-08_5.05um_bm18.json +240 -0
  197. hoa_tools/data/metadata/metadata/LADAF-2021-17_lung_right_VOI-09_5.05um_bm18.json +240 -0
  198. hoa_tools/data/metadata/metadata/LADAF-2021-17_lung_right_VOI-10_5.05um_bm18.json +240 -0
  199. hoa_tools/data/metadata/metadata/LADAF-2021-17_lung_right_VOI-11_5.05um_bm18.json +246 -0
  200. hoa_tools/data/metadata/metadata/LADAF-2021-17_lung_right_complete-organ_21.64um_bm18.json +280 -0
  201. hoa_tools/data/metadata/metadata/LADAF-2021-17_prostate_complete-scan_23.42um_bm18.json +266 -0
  202. hoa_tools/data/metadata/metadata/LADAF-2021-17_spleen_complete-organ_25.0um_bm05.json +218 -0
  203. hoa_tools/data/metadata/metadata/LADAF-2021-17_testis_1_VOI-01_2.02um_bm18.json +233 -0
  204. hoa_tools/data/metadata/metadata/LADAF-2021-17_testis_1_complete-organ_9.595um_bm18.json +227 -0
  205. hoa_tools/data/metadata/metadata/LADAF-2021-17_testis_2_VOI-02_2.02um_bm18.json +233 -0
  206. hoa_tools/data/metadata/metadata/LADAF-2021-17_testis_2_complete-organ_9.595um_bm18.json +227 -0
  207. hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-01_6.51um_bm18.json +246 -0
  208. hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-02_6.51um_bm18.json +246 -0
  209. hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-04_6.51um_bm18.json +246 -0
  210. hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-05_6.51um_bm18.json +246 -0
  211. hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-06_6.51um_bm18.json +246 -0
  212. hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-07_6.51um_bm18.json +246 -0
  213. hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-1.1_2.26um_bm18.json +272 -0
  214. hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-1.2_2.26um_bm18.json +272 -0
  215. hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-3.1_2.26um_bm18.json +272 -0
  216. hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-4.1_2.26um_bm18.json +272 -0
  217. hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-4.2_2.26um_bm18.json +272 -0
  218. hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-5.1_2.26um_bm18.json +272 -0
  219. hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-6.1_2.26um_bm18.json +272 -0
  220. hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_VOI-7.1_2.26um_bm18.json +272 -0
  221. hoa_tools/data/metadata/metadata/LADAF-2021-64_heart_complete-organ_19.89um_bm18.json +252 -0
  222. hoa_tools/data/metadata/metadata/LADAF-2022-13_kidney_1_complete-organ_15.77um_bm18.json +266 -0
  223. hoa_tools/data/metadata/metadata/LADAF-2022-13_kidney_2_complete-organ_15.77um_bm18.json +266 -0
  224. hoa_tools/data/metadata/metadata/LADAF-2022-13_prostate_complete-organ_14.72um_bm18.json +244 -0
  225. hoa_tools/data/metadata/metadata/LADAF-2022-16_prostate_complete-organ_15.75um_bm18.json +266 -0
  226. hoa_tools/data/metadata/metadata/LADAF-2022-16_spleen_complete-organ_15.75um_bm18.json +266 -0
  227. hoa_tools/data/metadata/metadata/LADAF-2022-27_kidney_bottom_complete-organ_15.75um_bm18.json +266 -0
  228. hoa_tools/data/metadata/metadata/LADAF-2022-27_kidney_top_complete-organ_15.75um_bm18.json +266 -0
  229. hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-01-tricuspid-valve_12.02um_bm05.json +258 -0
  230. hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-01_6.51um_bm18.json +246 -0
  231. hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-02_6.51um_bm18.json +246 -0
  232. hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-03_6.51um_bm18.json +246 -0
  233. hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-04_6.51um_bm18.json +246 -0
  234. hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-05_6.51um_bm18.json +246 -0
  235. hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-06_6.51um_bm18.json +246 -0
  236. hoa_tools/data/metadata/metadata/S-20-28_heart_VOI-08_6.51um_bm18.json +246 -0
  237. hoa_tools/data/metadata/metadata/S-20-28_heart_complete-organ_19.85um_bm18.json +240 -0
  238. hoa_tools/data/metadata/metadata/S-20-28_heart_complete-organ_25.27um_bm05.json +204 -0
  239. hoa_tools/data/metadata/metadata/S-20-28_kidney_VOI-01_2.5um_bm05.json +224 -0
  240. hoa_tools/data/metadata/metadata/S-20-28_kidney_VOI-01_6.51um_bm05.json +210 -0
  241. hoa_tools/data/metadata/metadata/S-20-28_kidney_VOI-02_2.5um_bm05.json +224 -0
  242. hoa_tools/data/metadata/metadata/S-20-28_kidney_VOI-02_6.51um_bm05.json +210 -0
  243. hoa_tools/data/metadata/metadata/S-20-28_kidney_VOI-03_2.5um_bm05.json +224 -0
  244. hoa_tools/data/metadata/metadata/S-20-28_kidney_VOI-04_2.5um_bm05.json +224 -0
  245. hoa_tools/data/metadata/metadata/S-20-28_kidney_VOI-05_2.5um_bm05.json +224 -0
  246. hoa_tools/data/metadata/metadata/S-20-28_kidney_VOI-06_2.5um_bm05.json +218 -0
  247. hoa_tools/data/metadata/metadata/S-20-28_kidney_VOI-07_2.5um_bm05.json +224 -0
  248. hoa_tools/data/metadata/metadata/S-20-28_kidney_complete-organ_25.0um_bm05.json +204 -0
  249. hoa_tools/data/metadata/metadata/S-20-28_lung_right_lower_lobe_overview_19.89um_bm18.json +252 -0
  250. hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-01_2.5um_bm05.json +224 -0
  251. hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-01_6.54um_bm18.json +258 -0
  252. hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-01_6.5um_bm05.json +224 -0
  253. hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-01b_6.5um_bm05.json +224 -0
  254. hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-02_2.5um_bm05.json +224 -0
  255. hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-02_6.54um_bm18.json +258 -0
  256. hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-02_6.5um_bm05.json +224 -0
  257. hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-03_2.5um_bm05.json +224 -0
  258. hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-03_6.54um_bm18.json +258 -0
  259. hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-03_6.5um_bm05.json +224 -0
  260. hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-04_2.5um_bm05.json +224 -0
  261. hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-04_6.54um_bm18.json +258 -0
  262. hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-04_6.5um_bm05.json +224 -0
  263. hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-05_2.5um_bm05.json +224 -0
  264. hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-05_6.54um_bm18.json +258 -0
  265. hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-05_6.5um_bm05.json +224 -0
  266. hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-06_6.54um_bm18.json +258 -0
  267. hoa_tools/data/metadata/metadata/S-20-29_brain_VOI-07_6.54um_bm18.json +258 -0
  268. hoa_tools/data/metadata/metadata/S-20-29_brain_complete-organ_19.57um_bm18.json +240 -0
  269. hoa_tools/data/metadata/metadata/S-20-29_brain_complete-organ_25.33um_bm05.json +199 -0
  270. hoa_tools/data/metadata/metadata/S-20-29_heart_ROI-03_6.5um_bm05.json +210 -0
  271. hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-01_2.5um_bm05.json +210 -0
  272. hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-01_6.51um_bm18.json +246 -0
  273. hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-01_6.5um_bm05.json +210 -0
  274. hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-02_2.5um_bm05.json +210 -0
  275. hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-02_6.51um_bm18.json +246 -0
  276. hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-02_6.5um_bm05.json +210 -0
  277. hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-03_6.51um_bm18.json +246 -0
  278. hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-04_6.51um_bm18.json +246 -0
  279. hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-04_6.5um_bm05.json +210 -0
  280. hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-05_6.51um_bm18.json +246 -0
  281. hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-05b_6.5um_bm05.json +210 -0
  282. hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-06_6.51um_bm18.json +246 -0
  283. hoa_tools/data/metadata/metadata/S-20-29_heart_VOI-07_6.51um_bm18.json +246 -0
  284. hoa_tools/data/metadata/metadata/S-20-29_heart_complete-organ_19.89um_bm18.json +252 -0
  285. hoa_tools/data/metadata/metadata/S-20-29_heart_complete-organ_25.25um_bm05.json +199 -0
  286. hoa_tools/data/metadata/metadata/S-20-29_kidney_VOI-01_1.4um_bm05.json +204 -0
  287. hoa_tools/data/metadata/metadata/S-20-29_kidney_VOI-01_6.5um_bm05.json +210 -0
  288. hoa_tools/data/metadata/metadata/S-20-29_kidney_VOI-02_6.5um_bm05.json +210 -0
  289. hoa_tools/data/metadata/metadata/S-20-29_kidney_VOI-03_6.5um_bm05.json +210 -0
  290. hoa_tools/data/metadata/metadata/S-20-29_kidney_complete-organ_25.38um_bm05.json +204 -0
  291. hoa_tools/data/metadata/metadata/S-20-29_lung_left_ROI-2.1_2.256um_bm18.json +266 -0
  292. hoa_tools/data/metadata/metadata/S-20-29_lung_left_ROI-3.1_2.256um_bm18.json +272 -0
  293. hoa_tools/data/metadata/metadata/S-20-29_lung_left_ROI-5.3_2.256um_bm18.json +272 -0
  294. hoa_tools/data/metadata/metadata/S-20-29_lung_left_VOI-01_6.5um_bm05.json +210 -0
  295. hoa_tools/data/metadata/metadata/S-20-29_lung_left_VOI-02_6.5um_bm05.json +210 -0
  296. hoa_tools/data/metadata/metadata/S-20-29_lung_left_VOI-04_6.5um_bm05.json +210 -0
  297. hoa_tools/data/metadata/metadata/S-20-29_lung_left_VOI-05_6.5um_bm05.json +210 -0
  298. hoa_tools/data/metadata/metadata/S-20-29_lung_left_complete-organ_25.31um_bm05.json +199 -0
  299. hoa_tools/data/metadata/metadata/S-21-33_brain_complete-organ_19.57um_bm18.json +240 -0
  300. hoa_tools/data/metadata/metadata/S-21-46_brain_complete-organ_19.57um_bm18.json +240 -0
  301. hoa_tools/data/metadata/metadata/S-22-16_brain_complete-organ_19.59um_bm18.json +266 -0
  302. hoa_tools/dataset.py +295 -0
  303. hoa_tools/inventory.py +30 -0
  304. hoa_tools/metadata.py +772 -0
  305. hoa_tools/py.typed +0 -0
  306. hoa_tools/registration.py +125 -0
  307. hoa_tools/types.py +59 -0
  308. hoa_tools/voi.py +230 -0
  309. hoa_tools-1.0.10.dist-info/METADATA +108 -0
  310. hoa_tools-1.0.10.dist-info/RECORD +313 -0
  311. hoa_tools-1.0.10.dist-info/WHEEL +5 -0
  312. hoa_tools-1.0.10.dist-info/licenses/LICENSE.md +27 -0
  313. hoa_tools-1.0.10.dist-info/top_level.txt +1 -0
hoa_tools/metadata.py ADDED
@@ -0,0 +1,772 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: metadata-schema.json
3
+ # timestamp: 2025-10-22T15:38:14+00:00
4
+
5
+ from __future__ import annotations
6
+
7
+ from datetime import date as date_aliased
8
+ from typing import Annotated, Literal
9
+
10
+ from pydantic import BaseModel, ConfigDict, Field, RootModel
11
+
12
+
13
+ class Orcid(RootModel[str]):
14
+ root: Annotated[
15
+ str,
16
+ Field(
17
+ description="ORCID iD",
18
+ pattern="^\\d{4}-\\d{4}-\\d{4}-\\d{3}[0-9X]{1}$",
19
+ title="Orcid",
20
+ ),
21
+ ]
22
+
23
+
24
+ class Contributor(BaseModel):
25
+ first_name: Annotated[str, Field(title="First Name")]
26
+ last_name: Annotated[str, Field(title="Last Name")]
27
+ orcid: Annotated[Orcid | None, Field(description="ORCID iD", title="Orcid")] = None
28
+ roles: Annotated[
29
+ list[
30
+ Literal[
31
+ "Conceptualization",
32
+ "Data curation",
33
+ "Formal analysis",
34
+ "Funding acquisition",
35
+ "Investigation",
36
+ "Methodology",
37
+ "Project administration",
38
+ "Resources",
39
+ "Software",
40
+ "Supervision",
41
+ "Validation",
42
+ "Vlisualization",
43
+ "Writing - original draft",
44
+ "Writing - review & editing",
45
+ ]
46
+ ],
47
+ Field(
48
+ description="Contributor role(s), following the Contributor Role Taxonomy (CReditT)",
49
+ title="Roles",
50
+ ),
51
+ ]
52
+
53
+
54
+ class Data(BaseModel):
55
+ shape: Annotated[
56
+ list,
57
+ Field(
58
+ description="Array shape for dataset.",
59
+ max_length=3,
60
+ min_length=3,
61
+ title="Shape",
62
+ ),
63
+ ]
64
+ voxel_size_um: Annotated[
65
+ float,
66
+ Field(
67
+ description="Isotropic size of a single voxel, in micrometers.",
68
+ gt=0.0,
69
+ title="Voxel size",
70
+ ),
71
+ ]
72
+ gcs_url: Annotated[
73
+ str,
74
+ Field(
75
+ description="URL to data in Google Cloud Storage. Starts with either n5:// or zarr:// to specify whether data is in N5 or OME-Zarr 0.4 format.",
76
+ title="Google cloud storage URL",
77
+ ),
78
+ ]
79
+
80
+
81
+ class Age(RootModel[int]):
82
+ root: Annotated[int, Field(description="Age in years at death.", ge=0, title="Age")]
83
+
84
+
85
+ class Weight(RootModel[float]):
86
+ root: Annotated[
87
+ float, Field(description="Weight in kg at death.", gt=0.0, title="Weight")
88
+ ]
89
+
90
+
91
+ class Height(RootModel[float]):
92
+ root: Annotated[
93
+ float, Field(description="Height in cm at death.", gt=0.0, title="Height")
94
+ ]
95
+
96
+
97
+ class Donor(BaseModel):
98
+ model_config = ConfigDict(
99
+ extra="forbid",
100
+ )
101
+ id: Annotated[str, Field(description="Unique donor ID.", title="ID")]
102
+ age: Annotated[
103
+ Age | Literal["<18", ">18"] | None,
104
+ Field(description="Age in years at death.", title="Age"),
105
+ ] = None
106
+ sex: Annotated[Literal["M", "F"] | None, Field(title="Sex")] = None
107
+ weight: Annotated[
108
+ Weight | None, Field(description="Weight in kg at death.", title="Weight")
109
+ ] = None
110
+ height: Annotated[
111
+ Height | None, Field(description="Height in cm at death.", title="Height")
112
+ ] = None
113
+ cause_of_death: Annotated[str | None, Field(title="Cause of death")] = None
114
+ date_of_death: Annotated[date_aliased | None, Field(title="Date of death")] = None
115
+ medical_history: Annotated[str | None, Field(title="Medical history")] = None
116
+ diabetes: Annotated[
117
+ Literal["Type 2", "No", "Yes"] | None, Field(title="Diabetes history")
118
+ ] = None
119
+ hypertension: Annotated[
120
+ Literal["Yes", "No"] | None, Field(title="Hypertension history")
121
+ ] = None
122
+ smoker: Annotated[
123
+ Literal["Never", "Yes"] | None, Field(title="Smoking history")
124
+ ] = None
125
+
126
+
127
+ class Proposal(BaseModel):
128
+ proposal_number: Annotated[
129
+ Literal["md1252", "md1290", "md1389"],
130
+ Field(description="Proposal number.", title="Proposal Number"),
131
+ ]
132
+ title: Annotated[str, Field(description="Proposal title.", title="Title")]
133
+ proposers: Annotated[
134
+ list[str], Field(description="Proposal proposers.", title="Proposers")
135
+ ]
136
+
137
+
138
+ class Registration(BaseModel):
139
+ source_dataset: Annotated[
140
+ str,
141
+ Field(
142
+ description="Name of dataset that is registered (this dataset).",
143
+ title="Source Dataset",
144
+ ),
145
+ ]
146
+ target_dataset: Annotated[
147
+ str,
148
+ Field(
149
+ description="Name of dataset that this dataset is registered to.",
150
+ title="Target Dataset",
151
+ ),
152
+ ]
153
+ translation: Annotated[
154
+ list,
155
+ Field(
156
+ description="Translation vector.",
157
+ max_length=3,
158
+ min_length=3,
159
+ title="Translation",
160
+ ),
161
+ ]
162
+ rotation: Annotated[
163
+ float, Field(description="Rotation in degrees about z-axis", title="Rotation")
164
+ ]
165
+ scale: Annotated[
166
+ float, Field(description="Isotropic scaling factor.", title="Scale")
167
+ ]
168
+
169
+
170
+ class PostMortemIntervalHours(RootModel[float]):
171
+ root: Annotated[
172
+ float,
173
+ Field(
174
+ description="Interval between death and fixation, in hours.",
175
+ ge=0.0,
176
+ title="Post-mortem interval",
177
+ ),
178
+ ]
179
+
180
+
181
+ class Sample(BaseModel):
182
+ organ: Annotated[
183
+ Literal[
184
+ "brain",
185
+ "breast",
186
+ "clitoris",
187
+ "colon",
188
+ "eye",
189
+ "femaleGenitalia",
190
+ "kidney",
191
+ "liver",
192
+ "lung",
193
+ "heart",
194
+ "oesophagus",
195
+ "spinalCord",
196
+ "spine",
197
+ "spleen",
198
+ "heart+lungs",
199
+ "pancreas",
200
+ "placenta",
201
+ "prostate",
202
+ "testis",
203
+ "uterus",
204
+ "thoracicBlock",
205
+ "soleus",
206
+ "achillesTendon",
207
+ "knee",
208
+ "tibia",
209
+ ],
210
+ Field(description="Organ name.", title="Organ"),
211
+ ]
212
+ organ_context: Annotated[
213
+ str | None,
214
+ Field(
215
+ description="Human-readable context for location of the dataset within the whole organ. Only present for some zoom datasets.",
216
+ examples=["upper_lobe", "left", "tumor"],
217
+ title="Organ Context",
218
+ ),
219
+ ] = None
220
+ post_mortem_interval_hours: Annotated[
221
+ PostMortemIntervalHours | None,
222
+ Field(
223
+ description="Interval between death and fixation, in hours.",
224
+ title="Post-mortem interval",
225
+ ),
226
+ ] = None
227
+ fixation_method: Annotated[
228
+ Literal["immersion", "perfusion"] | None,
229
+ Field(description="Fixation preparation method.", title="Fixation Method"),
230
+ ] = None
231
+ fixation_medium: Annotated[
232
+ str | None, Field(description="Fixation medium", title="Fixation Medium")
233
+ ] = None
234
+ organ_infilled: Annotated[bool | str | None, Field(title="Organ Infilled")] = None
235
+ stabilisation_medium: Annotated[
236
+ Literal["agar cubes", "crushed agar", "beads"] | None,
237
+ Field(title="Stabilisation Medium"),
238
+ ] = None
239
+ degassing_method: Annotated[
240
+ Literal["inline", "vacuum", "vacuum+inline"] | None,
241
+ Field(title="Degassing Method"),
242
+ ] = None
243
+ scan_solvent: Annotated[
244
+ Literal["formalin", "ethanol"] | None,
245
+ Field(description="Scan medium solvent.", title="Scan Solvent"),
246
+ ] = None
247
+ scan_solvent_concentration: Annotated[
248
+ float | None,
249
+ Field(
250
+ description="Scan medium solvent concentration in percent.",
251
+ title="Solvent concentration",
252
+ ),
253
+ ] = None
254
+ scan_temperature: Annotated[
255
+ str | float | None,
256
+ Field(
257
+ description="Temperature during scan, in degees celsius (if a number).",
258
+ title="Scan Temperature",
259
+ ),
260
+ ] = "room temperature"
261
+
262
+
263
+ class Energy(RootModel[float]):
264
+ root: Annotated[
265
+ float,
266
+ Field(
267
+ description="Energy used during the scan, measured in keV.",
268
+ gt=0.0,
269
+ title="Energy",
270
+ ),
271
+ ]
272
+
273
+
274
+ class CurrentStart(RootModel[float]):
275
+ root: Annotated[
276
+ float,
277
+ Field(
278
+ description="Current of the synchrotron at the start of the scan, measured in mA.",
279
+ gt=0.0,
280
+ title="Current Start",
281
+ ),
282
+ ]
283
+
284
+
285
+ class NFrames(RootModel[int]):
286
+ root: Annotated[
287
+ int,
288
+ Field(
289
+ description="Number of frames acquired during the scan.",
290
+ gt=0,
291
+ title="Number of frames",
292
+ ),
293
+ ]
294
+
295
+
296
+ class NRef(RootModel[int]):
297
+ root: Annotated[
298
+ int,
299
+ Field(
300
+ description="Number of reference images collected during the scan.",
301
+ ge=0,
302
+ title="Number of references",
303
+ ),
304
+ ]
305
+
306
+
307
+ class NDark(RootModel[int]):
308
+ root: Annotated[
309
+ int,
310
+ Field(
311
+ description="Number of dark images (without illumination) collected during the scan.",
312
+ ge=0,
313
+ title="Number of darks",
314
+ ),
315
+ ]
316
+
317
+
318
+ class LatencyTime(RootModel[float]):
319
+ root: Annotated[
320
+ float,
321
+ Field(
322
+ description="Inactive time between active sensor times, measured in seconds.",
323
+ gt=0.0,
324
+ title="Latency Time",
325
+ ),
326
+ ]
327
+
328
+
329
+ class ExposureTime(RootModel[float]):
330
+ root: Annotated[
331
+ float,
332
+ Field(
333
+ description="Exposure time of a single frame, measured in seconds. This is the sub-frame time multiplied by the number of sub-frames.",
334
+ gt=0.0,
335
+ title="Exposure Time",
336
+ ),
337
+ ]
338
+
339
+
340
+ class SubframeTime(RootModel[float]):
341
+ root: Annotated[
342
+ float,
343
+ Field(
344
+ description="Exposure time of a single sub-frame, measured in seconds.",
345
+ gt=0.0,
346
+ title="Subframe Time",
347
+ ),
348
+ ]
349
+
350
+
351
+ class NSubframes(RootModel[int]):
352
+ root: Annotated[
353
+ int,
354
+ Field(
355
+ description="Number of frames accumulated per exposure.",
356
+ gt=0,
357
+ title="Number of sub-frames",
358
+ ),
359
+ ]
360
+
361
+
362
+ class NScans(RootModel[int]):
363
+ root: Annotated[
364
+ int,
365
+ Field(
366
+ description="Total number of scans. For a helical scan this is always 1. For a zseries this is the total number of scans concatenated to make the full data volume.",
367
+ gt=0,
368
+ title="Number of scans",
369
+ ),
370
+ ]
371
+
372
+
373
+ class ScanTime(RootModel[float]):
374
+ root: Annotated[
375
+ float,
376
+ Field(
377
+ description="Total duration of a single scan in seconds.",
378
+ gt=0.0,
379
+ title="Scan Time",
380
+ ),
381
+ ]
382
+
383
+
384
+ class OpticMagnification(RootModel[float]):
385
+ root: Annotated[
386
+ float,
387
+ Field(
388
+ description="Magnification in the optical setup.",
389
+ gt=0.0,
390
+ title="Optic Magnification",
391
+ ),
392
+ ]
393
+
394
+
395
+ class DistanceSourceSample(RootModel[float]):
396
+ root: Annotated[
397
+ float,
398
+ Field(
399
+ description="Distance between the source and the sample, measured in millimeters.",
400
+ gt=0.0,
401
+ title="Source-sample distance",
402
+ ),
403
+ ]
404
+
405
+
406
+ class DistanceSampleDetector(RootModel[float]):
407
+ root: Annotated[
408
+ float,
409
+ Field(
410
+ description="Distance between the sample and the detector, measured in millimeters.",
411
+ gt=0.0,
412
+ title="Sample-detector distance",
413
+ ),
414
+ ]
415
+
416
+
417
+ class SensorRoiXSize(RootModel[int]):
418
+ root: Annotated[
419
+ int,
420
+ Field(
421
+ description="Number of pixels in the x-dimension of the sensor's region of interest (ROI).",
422
+ gt=0,
423
+ title="Sensor Roi X Size",
424
+ ),
425
+ ]
426
+
427
+
428
+ class SensorRoiYSize(RootModel[int]):
429
+ root: Annotated[
430
+ int,
431
+ Field(
432
+ description="Number of pixels in the y-dimension of the sensor's region of interest (ROI).",
433
+ gt=0,
434
+ title="Sensor Roi Y Size",
435
+ ),
436
+ ]
437
+
438
+
439
+ class SensorBinning(RootModel[list]):
440
+ root: Annotated[
441
+ list,
442
+ Field(
443
+ description="Pixel binning on the sensor.",
444
+ max_length=2,
445
+ min_length=2,
446
+ title="Sensor Binning",
447
+ ),
448
+ ]
449
+
450
+
451
+ class XrayMagnification(RootModel[float]):
452
+ root: Annotated[
453
+ float,
454
+ Field(
455
+ description="Magnification of X-rays due to divergence between the source and detector.",
456
+ gt=0.0,
457
+ title="Xray Magnification",
458
+ ),
459
+ ]
460
+
461
+
462
+ class Scan(BaseModel):
463
+ date: Annotated[
464
+ date_aliased,
465
+ Field(description="Date when the scan was performed.", title="Date"),
466
+ ]
467
+ beamline: Annotated[
468
+ Literal["BM05", "BM18"],
469
+ Field(description="ESRF beamline where scan was performed.", title="Beamline"),
470
+ ]
471
+ energy: Annotated[
472
+ Energy | None,
473
+ Field(
474
+ description="Energy used during the scan, measured in keV.", title="Energy"
475
+ ),
476
+ ] = None
477
+ current_start: Annotated[
478
+ CurrentStart | None,
479
+ Field(
480
+ description="Current of the synchrotron at the start of the scan, measured in mA.",
481
+ title="Current Start",
482
+ ),
483
+ ] = None
484
+ filling_mode: Annotated[
485
+ Literal[
486
+ "16 bunch",
487
+ "7/8 multibunch",
488
+ "uniform multibunch",
489
+ "28*12+1 bunch",
490
+ "4 bunch",
491
+ "2*1/3 multibunch",
492
+ ]
493
+ | None,
494
+ Field(
495
+ description="Mode of filling used in the synchrotron storage ring.",
496
+ title="Filling Mode",
497
+ ),
498
+ ] = None
499
+ n_frames: Annotated[
500
+ NFrames | None,
501
+ Field(
502
+ description="Number of frames acquired during the scan.",
503
+ title="Number of frames",
504
+ ),
505
+ ] = None
506
+ n_ref: Annotated[
507
+ NRef | None,
508
+ Field(
509
+ description="Number of reference images collected during the scan.",
510
+ title="Number of references",
511
+ ),
512
+ ] = None
513
+ n_dark: Annotated[
514
+ NDark | None,
515
+ Field(
516
+ description="Number of dark images (without illumination) collected during the scan.",
517
+ title="Number of darks",
518
+ ),
519
+ ] = None
520
+ latency_time: Annotated[
521
+ LatencyTime | None,
522
+ Field(
523
+ description="Inactive time between active sensor times, measured in seconds.",
524
+ title="Latency Time",
525
+ ),
526
+ ] = None
527
+ exposure_time: Annotated[
528
+ ExposureTime | None,
529
+ Field(
530
+ description="Exposure time of a single frame, measured in seconds. This is the sub-frame time multiplied by the number of sub-frames.",
531
+ title="Exposure Time",
532
+ ),
533
+ ] = None
534
+ subframe_time: Annotated[
535
+ SubframeTime | None,
536
+ Field(
537
+ description="Exposure time of a single sub-frame, measured in seconds.",
538
+ title="Subframe Time",
539
+ ),
540
+ ] = None
541
+ n_subframes: Annotated[
542
+ NSubframes | None,
543
+ Field(
544
+ description="Number of frames accumulated per exposure.",
545
+ title="Number of sub-frames",
546
+ ),
547
+ ] = None
548
+ scan_type: Annotated[
549
+ Literal["helical", "zseries"],
550
+ Field(description="Type of scan.", title="Scan Type"),
551
+ ]
552
+ scan_range: Annotated[
553
+ float,
554
+ Field(
555
+ description="Angular range of a single scan in degrees.",
556
+ gt=0.0,
557
+ title="Scan Range",
558
+ ),
559
+ ]
560
+ n_scans: Annotated[
561
+ NScans | None,
562
+ Field(
563
+ description="Total number of scans. For a helical scan this is always 1. For a zseries this is the total number of scans concatenated to make the full data volume.",
564
+ title="Number of scans",
565
+ ),
566
+ ] = None
567
+ acquisition: Annotated[
568
+ Literal["half", "quarter"] | None,
569
+ Field(description="Type of tomographic acquisition.", title="Acquisition"),
570
+ ] = None
571
+ z_step: Annotated[
572
+ float | None,
573
+ Field(description="Displacement in millimeters between scans.", title="Z Step"),
574
+ ] = None
575
+ scan_time: Annotated[
576
+ ScanTime | None,
577
+ Field(
578
+ description="Total duration of a single scan in seconds.", title="Scan Time"
579
+ ),
580
+ ] = None
581
+ filters: Annotated[
582
+ list[str] | None,
583
+ Field(description="List of filters used during the scan.", title="Filters"),
584
+ ] = None
585
+ scintillator: Annotated[
586
+ Literal[
587
+ "LuAG:Ce 1000um",
588
+ "LuAG:Ce 100um",
589
+ "LuAG:Ce 100um, reflective",
590
+ "LuAG:Ce 100um, lead glass meniscus",
591
+ "LuAG:Ce 2000um",
592
+ "LuAG:Ce 2000um, reflective",
593
+ "Multi LuAG:Ce 2000um, reflective",
594
+ "LuAG:Ce 200um",
595
+ "LuAG:Ce 250um",
596
+ "LuAG:Ce 250um, reflective",
597
+ "LuAG:Ce 25um",
598
+ "LuAG:Ce 50um",
599
+ "LuAG:Ce 50um, reflective",
600
+ "LuAG:Ce 500um",
601
+ "LySO:Ce 8.5um",
602
+ "LySO:Ce 23um",
603
+ "LySO:Ce 2000um, reflective",
604
+ "Gadox 60um",
605
+ "CSI trixell structured 650um, 5um pitch",
606
+ "GGG 8um",
607
+ "GGG 20um",
608
+ "GAGG 1000um, reflective",
609
+ "GAGG 100um, reflective",
610
+ "GAGG 50um, reflective",
611
+ "Dual LySO:Ce 5000um, reflective",
612
+ ]
613
+ | None,
614
+ Field(
615
+ description="Scintillator used for converting X-rays to visible light.",
616
+ title="Scintillator",
617
+ ),
618
+ ] = None
619
+ optic: Annotated[
620
+ Literal[
621
+ "Zoom",
622
+ "DZoom",
623
+ "10x 0.4NA reflective optic",
624
+ "Hasselblad tandem optic 100mm/300mm",
625
+ "Hasselblad revolved 100 100",
626
+ "LAFIP2 optic with canon 50mm",
627
+ "Fixed x10",
628
+ "Fixed x2.85",
629
+ "Fixed x2",
630
+ "Fixed x1",
631
+ "Fixed x0.5",
632
+ "Fixed x0.125",
633
+ "Fixed x0.1",
634
+ "Twinmic 5",
635
+ "Twinmic 10",
636
+ "Twinmic 20",
637
+ "Triplemic 10",
638
+ ]
639
+ | None,
640
+ Field(description="Optical components used during the scan", title="Optic"),
641
+ ] = None
642
+ optic_magnification: Annotated[
643
+ OpticMagnification | None,
644
+ Field(
645
+ description="Magnification in the optical setup.",
646
+ title="Optic Magnification",
647
+ ),
648
+ ] = None
649
+ distance_source_sample: Annotated[
650
+ DistanceSourceSample | None,
651
+ Field(
652
+ description="Distance between the source and the sample, measured in millimeters.",
653
+ title="Source-sample distance",
654
+ ),
655
+ ] = None
656
+ distance_sample_detector: Annotated[
657
+ DistanceSampleDetector | None,
658
+ Field(
659
+ description="Distance between the sample and the detector, measured in millimeters.",
660
+ title="Sample-detector distance",
661
+ ),
662
+ ] = None
663
+ sensor_name: Annotated[
664
+ Literal["PCO edge 4.2 CLHS", "Iris15"] | None,
665
+ Field(
666
+ description="Name of the sensor used during the scan.", title="Sensor Name"
667
+ ),
668
+ ] = None
669
+ sensor_mode: Annotated[
670
+ Literal["rolling shutter", "FFM"] | None,
671
+ Field(
672
+ description="Operating mode of the sensor during the scan.",
673
+ title="Sensor Mode",
674
+ ),
675
+ ] = None
676
+ sensor_roi_x_size: Annotated[
677
+ SensorRoiXSize | None,
678
+ Field(
679
+ description="Number of pixels in the x-dimension of the sensor's region of interest (ROI).",
680
+ title="Sensor Roi X Size",
681
+ ),
682
+ ] = None
683
+ sensor_roi_y_size: Annotated[
684
+ SensorRoiYSize | None,
685
+ Field(
686
+ description="Number of pixels in the y-dimension of the sensor's region of interest (ROI).",
687
+ title="Sensor Roi Y Size",
688
+ ),
689
+ ] = None
690
+ sensor_binning: Annotated[
691
+ SensorBinning | None,
692
+ Field(description="Pixel binning on the sensor.", title="Sensor Binning"),
693
+ ] = None
694
+ pixel_size: Annotated[
695
+ float,
696
+ Field(
697
+ description="Size of a pixel at the sample, measured in micrometers.",
698
+ gt=0.0,
699
+ title="Pixel Size",
700
+ ),
701
+ ]
702
+ xray_magnification: Annotated[
703
+ XrayMagnification | None,
704
+ Field(
705
+ description="Magnification of X-rays due to divergence between the source and detector.",
706
+ title="Xray Magnification",
707
+ ),
708
+ ] = None
709
+ technique: Annotated[
710
+ Literal["Hierarchical Phase-Contrast Tomography (HiP-CT)"],
711
+ Field(title="Experimental technique."),
712
+ ] = "Hierarchical Phase-Contrast Tomography (HiP-CT)"
713
+ experiment_type: Annotated[str | None, Field(title="Experiment Type")] = (
714
+ "Tomography"
715
+ )
716
+
717
+
718
+ class Citation(BaseModel):
719
+ title: Annotated[str, Field(description="Citation title", title="Title")]
720
+ contributors: Annotated[
721
+ list[Contributor],
722
+ Field(
723
+ description="Dataset contributors, listed alphabetically by name.",
724
+ title="Contributors",
725
+ ),
726
+ ]
727
+ doi: Annotated[str | None, Field(description="Dataset DOI", title="Doi")] = None
728
+ author_list: Annotated[
729
+ list[str],
730
+ Field(
731
+ description="Author list. If citing this data, please use this authorship list in the order given",
732
+ title="Author List",
733
+ ),
734
+ ]
735
+
736
+
737
+ class HOAMetadata(BaseModel):
738
+ model_config = ConfigDict(
739
+ extra="forbid",
740
+ )
741
+ name: Annotated[str, Field(description="Unique name for dataset.", title="Name")]
742
+ dataset_type: Annotated[
743
+ Literal["overview", "zoom"],
744
+ Field(
745
+ description="Type of dataset. Overview datasets contain the full sample. Zoom datasets contain a zoom into a particular volume of interest within the sample.",
746
+ title="Dataset Type",
747
+ ),
748
+ ]
749
+ voi: Annotated[
750
+ str,
751
+ Field(
752
+ description="Volume of interest name. For zoom datasets this gives a unique identifier among zoom datasets taken within the same sample.",
753
+ title="Volume of Interest",
754
+ ),
755
+ ]
756
+ data: Annotated[Data, Field(description="Data metadata")]
757
+ sample: Annotated[Sample, Field(description="Sample metadata")]
758
+ donor: Annotated[Donor, Field(description="Donor metadata")]
759
+ scan: Annotated[Scan, Field(description="Scan metadata")]
760
+ proposal: Annotated[Proposal, Field(description="Beamtime proposal metadata")]
761
+ registration: Annotated[
762
+ Registration | None,
763
+ Field(
764
+ description="Metadata mapping high resolution volume of interest datasets to a full organ dataset. Not present for full organ datasets.",
765
+ title="Registration parameters",
766
+ ),
767
+ ] = None
768
+ citation: Annotated[Citation, Field(title="Dataset citation")]
769
+ metadata_version: Annotated[
770
+ Literal["1.1"],
771
+ Field(description="Version of this metadata file.", title="Metadata Version"),
772
+ ] = "1.1"