pathology-image-features 0.2.0__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.
Files changed (344) hide show
  1. pathology_image_features-0.2.0/.gitignore +16 -0
  2. pathology_image_features-0.2.0/.python-version +1 -0
  3. pathology_image_features-0.2.0/.readthedocs.yaml +13 -0
  4. pathology_image_features-0.2.0/LICENSE +21 -0
  5. pathology_image_features-0.2.0/PKG-INFO +65 -0
  6. pathology_image_features-0.2.0/README.md +40 -0
  7. pathology_image_features-0.2.0/boilerplate/class_template.txt +20 -0
  8. pathology_image_features-0.2.0/boilerplate/create_package.py +64 -0
  9. pathology_image_features-0.2.0/boilerplate/process_template.txt +36 -0
  10. pathology_image_features-0.2.0/docs/Makefile +20 -0
  11. pathology_image_features-0.2.0/docs/build/doctrees/advanced_usage.doctree +0 -0
  12. pathology_image_features-0.2.0/docs/build/doctrees/ann_io.doctree +0 -0
  13. pathology_image_features-0.2.0/docs/build/doctrees/background.doctree +0 -0
  14. pathology_image_features-0.2.0/docs/build/doctrees/basic_usage.doctree +0 -0
  15. pathology_image_features-0.2.0/docs/build/doctrees/environment.pickle +0 -0
  16. pathology_image_features-0.2.0/docs/build/doctrees/graph_data.doctree +0 -0
  17. pathology_image_features-0.2.0/docs/build/doctrees/index.doctree +0 -0
  18. pathology_image_features-0.2.0/docs/build/doctrees/installation.doctree +0 -0
  19. pathology_image_features-0.2.0/docs/build/doctrees/io_operations.doctree +0 -0
  20. pathology_image_features-0.2.0/docs/build/doctrees/visualization.doctree +0 -0
  21. pathology_image_features-0.2.0/docs/build/html/.buildinfo +4 -0
  22. pathology_image_features-0.2.0/docs/build/html/_images/annotated_data_visualization.png +0 -0
  23. pathology_image_features-0.2.0/docs/build/html/_images/graphviz_example.png +0 -0
  24. pathology_image_features-0.2.0/docs/build/html/_sources/advanced_usage.rst.txt +128 -0
  25. pathology_image_features-0.2.0/docs/build/html/_sources/ann_io.rst.txt +20 -0
  26. pathology_image_features-0.2.0/docs/build/html/_sources/background.rst.txt +105 -0
  27. pathology_image_features-0.2.0/docs/build/html/_sources/basic_usage.rst.txt +223 -0
  28. pathology_image_features-0.2.0/docs/build/html/_sources/graph_data.rst.txt +56 -0
  29. pathology_image_features-0.2.0/docs/build/html/_sources/index.rst.txt +40 -0
  30. pathology_image_features-0.2.0/docs/build/html/_sources/installation.rst.txt +44 -0
  31. pathology_image_features-0.2.0/docs/build/html/_sources/io_operations.rst.txt +9 -0
  32. pathology_image_features-0.2.0/docs/build/html/_sources/visualization.rst.txt +61 -0
  33. pathology_image_features-0.2.0/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js +123 -0
  34. pathology_image_features-0.2.0/docs/build/html/_static/base-stemmer.js +476 -0
  35. pathology_image_features-0.2.0/docs/build/html/_static/basic.css +906 -0
  36. pathology_image_features-0.2.0/docs/build/html/_static/css/badge_only.css +1 -0
  37. pathology_image_features-0.2.0/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  38. pathology_image_features-0.2.0/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  39. pathology_image_features-0.2.0/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  40. pathology_image_features-0.2.0/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  41. pathology_image_features-0.2.0/docs/build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  42. pathology_image_features-0.2.0/docs/build/html/_static/css/fonts/fontawesome-webfont.svg +2671 -0
  43. pathology_image_features-0.2.0/docs/build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  44. pathology_image_features-0.2.0/docs/build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  45. pathology_image_features-0.2.0/docs/build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  46. pathology_image_features-0.2.0/docs/build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  47. pathology_image_features-0.2.0/docs/build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  48. pathology_image_features-0.2.0/docs/build/html/_static/css/fonts/lato-bold.woff +0 -0
  49. pathology_image_features-0.2.0/docs/build/html/_static/css/fonts/lato-bold.woff2 +0 -0
  50. pathology_image_features-0.2.0/docs/build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  51. pathology_image_features-0.2.0/docs/build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  52. pathology_image_features-0.2.0/docs/build/html/_static/css/fonts/lato-normal.woff +0 -0
  53. pathology_image_features-0.2.0/docs/build/html/_static/css/fonts/lato-normal.woff2 +0 -0
  54. pathology_image_features-0.2.0/docs/build/html/_static/css/theme.css +4 -0
  55. pathology_image_features-0.2.0/docs/build/html/_static/doctools.js +150 -0
  56. pathology_image_features-0.2.0/docs/build/html/_static/documentation_options.js +13 -0
  57. pathology_image_features-0.2.0/docs/build/html/_static/english-stemmer.js +1066 -0
  58. pathology_image_features-0.2.0/docs/build/html/_static/file.png +0 -0
  59. pathology_image_features-0.2.0/docs/build/html/_static/fonts/Lato/lato-bold.eot +0 -0
  60. pathology_image_features-0.2.0/docs/build/html/_static/fonts/Lato/lato-bold.ttf +0 -0
  61. pathology_image_features-0.2.0/docs/build/html/_static/fonts/Lato/lato-bold.woff +0 -0
  62. pathology_image_features-0.2.0/docs/build/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
  63. pathology_image_features-0.2.0/docs/build/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  64. pathology_image_features-0.2.0/docs/build/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  65. pathology_image_features-0.2.0/docs/build/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  66. pathology_image_features-0.2.0/docs/build/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  67. pathology_image_features-0.2.0/docs/build/html/_static/fonts/Lato/lato-italic.eot +0 -0
  68. pathology_image_features-0.2.0/docs/build/html/_static/fonts/Lato/lato-italic.ttf +0 -0
  69. pathology_image_features-0.2.0/docs/build/html/_static/fonts/Lato/lato-italic.woff +0 -0
  70. pathology_image_features-0.2.0/docs/build/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
  71. pathology_image_features-0.2.0/docs/build/html/_static/fonts/Lato/lato-regular.eot +0 -0
  72. pathology_image_features-0.2.0/docs/build/html/_static/fonts/Lato/lato-regular.ttf +0 -0
  73. pathology_image_features-0.2.0/docs/build/html/_static/fonts/Lato/lato-regular.woff +0 -0
  74. pathology_image_features-0.2.0/docs/build/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
  75. pathology_image_features-0.2.0/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  76. pathology_image_features-0.2.0/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  77. pathology_image_features-0.2.0/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  78. pathology_image_features-0.2.0/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  79. pathology_image_features-0.2.0/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  80. pathology_image_features-0.2.0/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  81. pathology_image_features-0.2.0/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  82. pathology_image_features-0.2.0/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  83. pathology_image_features-0.2.0/docs/build/html/_static/graphviz.css +12 -0
  84. pathology_image_features-0.2.0/docs/build/html/_static/jquery.js +2 -0
  85. pathology_image_features-0.2.0/docs/build/html/_static/js/badge_only.js +1 -0
  86. pathology_image_features-0.2.0/docs/build/html/_static/js/theme.js +1 -0
  87. pathology_image_features-0.2.0/docs/build/html/_static/js/versions.js +228 -0
  88. pathology_image_features-0.2.0/docs/build/html/_static/language_data.js +13 -0
  89. pathology_image_features-0.2.0/docs/build/html/_static/minus.png +0 -0
  90. pathology_image_features-0.2.0/docs/build/html/_static/plus.png +0 -0
  91. pathology_image_features-0.2.0/docs/build/html/_static/pygments.css +75 -0
  92. pathology_image_features-0.2.0/docs/build/html/_static/searchtools.js +693 -0
  93. pathology_image_features-0.2.0/docs/build/html/_static/sphinx_highlight.js +159 -0
  94. pathology_image_features-0.2.0/docs/build/html/advanced_usage.html +226 -0
  95. pathology_image_features-0.2.0/docs/build/html/ann_io.html +412 -0
  96. pathology_image_features-0.2.0/docs/build/html/background.html +212 -0
  97. pathology_image_features-0.2.0/docs/build/html/basic_usage.html +334 -0
  98. pathology_image_features-0.2.0/docs/build/html/genindex.html +251 -0
  99. pathology_image_features-0.2.0/docs/build/html/graph_data.html +163 -0
  100. pathology_image_features-0.2.0/docs/build/html/index.html +166 -0
  101. pathology_image_features-0.2.0/docs/build/html/installation.html +151 -0
  102. pathology_image_features-0.2.0/docs/build/html/io_operations.html +129 -0
  103. pathology_image_features-0.2.0/docs/build/html/objects.inv +0 -0
  104. pathology_image_features-0.2.0/docs/build/html/py-modindex.html +141 -0
  105. pathology_image_features-0.2.0/docs/build/html/search.html +126 -0
  106. pathology_image_features-0.2.0/docs/build/html/searchindex.js +1 -0
  107. pathology_image_features-0.2.0/docs/build/html/visualization.html +164 -0
  108. pathology_image_features-0.2.0/docs/images/annotated_data_visualization.png +0 -0
  109. pathology_image_features-0.2.0/docs/images/axis_major_length_vis.png +0 -0
  110. pathology_image_features-0.2.0/docs/images/dist_vis.png +0 -0
  111. pathology_image_features-0.2.0/docs/images/graphviz_example.png +0 -0
  112. pathology_image_features-0.2.0/docs/images/layer_vis.png +0 -0
  113. pathology_image_features-0.2.0/docs/images/mst_vis.png +0 -0
  114. pathology_image_features-0.2.0/docs/images/single_structure_vis.png +0 -0
  115. pathology_image_features-0.2.0/docs/make.bat +35 -0
  116. pathology_image_features-0.2.0/docs/source/_templates/custom_class.rst +17 -0
  117. pathology_image_features-0.2.0/docs/source/_templates/custom_module.rst +61 -0
  118. pathology_image_features-0.2.0/docs/source/advanced_usage.rst +128 -0
  119. pathology_image_features-0.2.0/docs/source/ann_io.rst +20 -0
  120. pathology_image_features-0.2.0/docs/source/background.rst +105 -0
  121. pathology_image_features-0.2.0/docs/source/basic_usage.rst +222 -0
  122. pathology_image_features-0.2.0/docs/source/conf.py +59 -0
  123. pathology_image_features-0.2.0/docs/source/graph_data.rst +56 -0
  124. pathology_image_features-0.2.0/docs/source/index.rst +40 -0
  125. pathology_image_features-0.2.0/docs/source/installation.rst +44 -0
  126. pathology_image_features-0.2.0/docs/source/io_operations.rst +9 -0
  127. pathology_image_features-0.2.0/docs/source/visualization.rst +61 -0
  128. pathology_image_features-0.2.0/examples/data/annotated_data_visualization.png +0 -0
  129. pathology_image_features-0.2.0/examples/data/combined_data_transformation_vis.gv +72 -0
  130. pathology_image_features-0.2.0/examples/data/combined_data_transformation_vis.gv.pdf +0 -0
  131. pathology_image_features-0.2.0/examples/data/histology_annotations.json +1 -0
  132. pathology_image_features-0.2.0/examples/data/histology_annotations.xml +4320 -0
  133. pathology_image_features-0.2.0/examples/data/histology_annotationsLayer1.geojson +1 -0
  134. pathology_image_features-0.2.0/examples/data/histology_annotationsLayer1.png +0 -0
  135. pathology_image_features-0.2.0/examples/data/histology_annotationsLayer2.geojson +1 -0
  136. pathology_image_features-0.2.0/examples/data/histology_annotationsLayer3.geojson +1 -0
  137. pathology_image_features-0.2.0/examples/data/histology_image.svs +0 -0
  138. pathology_image_features-0.2.0/examples/data/pipeline_visualization.vz +21 -0
  139. pathology_image_features-0.2.0/examples/data/pipeline_visualization.vz.pdf +0 -0
  140. pathology_image_features-0.2.0/examples/data/process_outputs/102050ff29da482ab549ff6e.tiff +0 -0
  141. pathology_image_features-0.2.0/examples/data/process_outputs/160423d603e74254a3bcf2f8.tiff +0 -0
  142. pathology_image_features-0.2.0/examples/data/process_outputs/172c4992e0d64179a74fe097.tiff +0 -0
  143. pathology_image_features-0.2.0/examples/data/process_outputs/592ef158b8334e8491bacb8e.tiff +0 -0
  144. pathology_image_features-0.2.0/examples/data/process_outputs/multi_part_process.gv +262 -0
  145. pathology_image_features-0.2.0/examples/data/process_outputs/multi_part_process.gv.pdf +0 -0
  146. pathology_image_features-0.2.0/examples/example_dsa_item.py +70 -0
  147. pathology_image_features-0.2.0/examples/example_multi_part_process.py +83 -0
  148. pathology_image_features-0.2.0/examples/example_pipeline_reconstruction.py +111 -0
  149. pathology_image_features-0.2.0/examples/snakemake-example/README.md +164 -0
  150. pathology_image_features-0.2.0/examples/snakemake-example/example_area_workflow/.gitattributes +2 -0
  151. pathology_image_features-0.2.0/examples/snakemake-example/example_area_workflow/.gitignore +3 -0
  152. pathology_image_features-0.2.0/examples/snakemake-example/example_area_workflow/Snakefile +28 -0
  153. pathology_image_features-0.2.0/examples/snakemake-example/example_area_workflow/data/slide_0.svs +0 -0
  154. pathology_image_features-0.2.0/examples/snakemake-example/example_area_workflow/data/slide_0.xml +4320 -0
  155. pathology_image_features-0.2.0/examples/snakemake-example/example_area_workflow/environment.yaml +6 -0
  156. pathology_image_features-0.2.0/examples/snakemake-example/example_area_workflow/outputs/slide_0.csv +12 -0
  157. pathology_image_features-0.2.0/examples/snakemake-example/example_area_workflow/pixi.lock +1315 -0
  158. pathology_image_features-0.2.0/examples/snakemake-example/example_area_workflow/pixi.toml +12 -0
  159. pathology_image_features-0.2.0/examples/snakemake-example/example_area_workflow/scripts/calculate_area.py +31 -0
  160. pathology_image_features-0.2.0/examples/snakemake-example/example_area_workflow/scripts/convert_aperio.py +10 -0
  161. pathology_image_features-0.2.0/examples/snakemake-example/example_area_workflow/scripts/create_subjects.py +20 -0
  162. pathology_image_features-0.2.0/examples/snakemake-example/example_vis_workflow/.gitattributes +2 -0
  163. pathology_image_features-0.2.0/examples/snakemake-example/example_vis_workflow/.gitignore +3 -0
  164. pathology_image_features-0.2.0/examples/snakemake-example/example_vis_workflow/Snakefile +14 -0
  165. pathology_image_features-0.2.0/examples/snakemake-example/example_vis_workflow/data/slide0.json +1 -0
  166. pathology_image_features-0.2.0/examples/snakemake-example/example_vis_workflow/data/slide0.svs +0 -0
  167. pathology_image_features-0.2.0/examples/snakemake-example/example_vis_workflow/environment.yaml +6 -0
  168. pathology_image_features-0.2.0/examples/snakemake-example/example_vis_workflow/pixi.lock +1315 -0
  169. pathology_image_features-0.2.0/examples/snakemake-example/example_vis_workflow/pixi.toml +12 -0
  170. pathology_image_features-0.2.0/examples/snakemake-example/example_vis_workflow/scripts/vis_pifo_object.py +65 -0
  171. pathology_image_features-0.2.0/pyproject.toml +44 -0
  172. pathology_image_features-0.2.0/src/pathology_image_features/__init__.py +0 -0
  173. pathology_image_features-0.2.0/src/pathology_image_features/ann_io/README.md +51 -0
  174. pathology_image_features-0.2.0/src/pathology_image_features/ann_io/__init__.py +33 -0
  175. pathology_image_features-0.2.0/src/pathology_image_features/ann_io/convert.py +340 -0
  176. pathology_image_features-0.2.0/src/pathology_image_features/ann_io/read.py +123 -0
  177. pathology_image_features-0.2.0/src/pathology_image_features/ann_io/write.py +108 -0
  178. pathology_image_features-0.2.0/src/pathology_image_features/ontology/__init__.py +372 -0
  179. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/Resource/Container/Container.py +39 -0
  180. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/Resource/Container/SpatialObjectCollection/SpatialObjectCollection.py +307 -0
  181. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/Resource/Container/SpatialObjectCollection/__init__.py +11 -0
  182. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/Resource/Container/__init__.py +3 -0
  183. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/Resource/Container/network_graph/__init__.py +3 -0
  184. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/Resource/Container/network_graph/directed_graph/__init__.py +7 -0
  185. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/Resource/Container/network_graph/directed_graph/directed_graph.py +42 -0
  186. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/Resource/Container/network_graph/directed_graph/nearest_neighbor_graph/__init__.py +3 -0
  187. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/Resource/Container/network_graph/directed_graph/nearest_neighbor_graph/nearest_neighbor_graph.py +59 -0
  188. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/Resource/Container/network_graph/network_graph.py +22 -0
  189. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/Resource/Container/network_graph/undirected_graph/__init__.py +3 -0
  190. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/Resource/Container/network_graph/undirected_graph/undirected_acyclic_graph/__init__.py +3 -0
  191. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/Resource/Container/network_graph/undirected_graph/undirected_acyclic_graph/undirected_acyclic_graph.py +60 -0
  192. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/Resource/Container/network_graph/undirected_graph/undirected_graph.py +32 -0
  193. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/Resource/Container/tessellation/__init__.py +3 -0
  194. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/Resource/Container/tessellation/tessellation.py +244 -0
  195. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/Resource/Resource.py +23 -0
  196. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/Resource/__init__.py +3 -0
  197. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/SpatialObject/SpatialObject.py +252 -0
  198. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/SpatialObject/__init__.py +7 -0
  199. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/__init__.py +308 -0
  200. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/__init__.py +5 -0
  201. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/__init__.py +3 -0
  202. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/data_entity.py +19 -0
  203. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/data_transformation_parameter/__init__.py +9 -0
  204. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/data_transformation_parameter/data_transformation_parameter.py +36 -0
  205. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/data_transformation_parameter/numeric_parameter/__init__.py +7 -0
  206. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/data_transformation_parameter/numeric_parameter/numeric_parameter.py +42 -0
  207. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/data_transformation_parameter/spatial_predicate/__init__.py +23 -0
  208. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/data_transformation_parameter/spatial_predicate/spatial_predicate.py +182 -0
  209. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/data_transformation_parameter/string_parameter/__init__.py +7 -0
  210. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/data_transformation_parameter/string_parameter/string_parameter.py +89 -0
  211. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/homogenous_data_collection/__init__.py +5 -0
  212. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/homogenous_data_collection/data_set_of_features/__init__.py +3 -0
  213. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/homogenous_data_collection/data_set_of_features/data_set_of_features.py +130 -0
  214. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/homogenous_data_collection/homogenous_data_collection.py +31 -0
  215. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/homogenous_data_collection/image_data_set/__init__.py +7 -0
  216. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/homogenous_data_collection/image_data_set/annotated_image_data_set/__init__.py +11 -0
  217. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/homogenous_data_collection/image_data_set/annotated_image_data_set/annotated_image_data_set.py +211 -0
  218. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/homogenous_data_collection/image_data_set/image_data_set.py +358 -0
  219. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/image_data_set_annotation/__init__.py +11 -0
  220. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/image_data_set_annotation/image_data_set_annotation.py +192 -0
  221. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/image_data_set_annotation/image_data_set_pixel_mask/__init__.py +9 -0
  222. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/image_data_set_annotation/image_data_set_pixel_mask/image_data_set_heat_map/__init__.py +0 -0
  223. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/image_data_set_annotation/image_data_set_pixel_mask/image_data_set_heat_map/image_data_set_heat_map.py +32 -0
  224. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/data_entity/image_data_set_annotation/image_data_set_pixel_mask/image_data_set_pixel_mask.py +262 -0
  225. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/directive_information_entity/__init__.py +3 -0
  226. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/directive_information_entity/directive_information_entity.py +22 -0
  227. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/directive_information_entity/plan_specification/__init__.py +7 -0
  228. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/directive_information_entity/plan_specification/algorithm/__init__.py +3 -0
  229. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/directive_information_entity/plan_specification/algorithm/algorithm.py +22 -0
  230. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/directive_information_entity/plan_specification/algorithm/machine_learning_algorithm/__init__.py +6 -0
  231. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/directive_information_entity/plan_specification/algorithm/machine_learning_algorithm/machine_learning_algorithm.py +27 -0
  232. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/directive_information_entity/plan_specification/plan_specification.py +44 -0
  233. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/directive_information_entity/plan_specification/software/__init__.py +17 -0
  234. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/directive_information_entity/plan_specification/software/software.py +80 -0
  235. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/information_content_entity.py +33 -0
  236. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/value_specification/__init__.py +3 -0
  237. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/value_specification/scalar_value_specification/__init__.py +3 -0
  238. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/value_specification/scalar_value_specification/scalar_value_specification.py +35 -0
  239. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/information_content_entity/value_specification/value_specification.py +22 -0
  240. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/__init__.py +5 -0
  241. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/__init__.py +6 -0
  242. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/__init__.py +7 -0
  243. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/completely_executed_planned_process.py +19 -0
  244. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_annotation/__init__.py +7 -0
  245. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_annotation/data_annotation.py +60 -0
  246. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/__init__.py +5 -0
  247. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/data_aggregation_process/__init__.py +6 -0
  248. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/data_aggregation_process/data_aggregation_process.py +47 -0
  249. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/data_aggregation_process/descriptive_statistical_calculation_data_transformation/__init__.py +31 -0
  250. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/data_aggregation_process/descriptive_statistical_calculation_data_transformation/descriptive_statistical_calculation_data_transformation.py +248 -0
  251. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/data_filtration_process/__init__.py +0 -0
  252. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/data_filtration_process/data_filtration_process.py +61 -0
  253. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/data_transformation.py +285 -0
  254. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/__init__.py +7 -0
  255. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_based_machine_learning_algorithm_execution/__init__.py +5 -0
  256. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_based_machine_learning_algorithm_execution/image_based_machine_learning_algorithm_execution.py +34 -0
  257. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_based_machine_learning_algorithm_execution/image_based_machine_learning_algorithm_inference/__init__.py +11 -0
  258. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_based_machine_learning_algorithm_execution/image_based_machine_learning_algorithm_inference/image_based_machine_learning_algorithm_inference.py +85 -0
  259. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_characteristic_quantification_process/__init__.py +7 -0
  260. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_characteristic_quantification_process/image_characteristic_quantification_process.py +76 -0
  261. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_characteristic_quantification_process/image_intensity_characteristic_quantification_process/__init__.py +13 -0
  262. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_characteristic_quantification_process/image_intensity_characteristic_quantification_process/image_intensity_characteristic_quantification_process.py +95 -0
  263. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_characteristic_quantification_process/image_morphological_characteristic_quantification_process/__init__.py +7 -0
  264. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_characteristic_quantification_process/image_morphological_characteristic_quantification_process/image_morphological_characteristic_quantification_process.py +33 -0
  265. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_characteristic_quantification_process/image_morphological_characteristic_quantification_process/image_shape_characteristic_quantification_process/__init__.py +21 -0
  266. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_characteristic_quantification_process/image_morphological_characteristic_quantification_process/image_shape_characteristic_quantification_process/image_shape_characteristic_quantification_process.py +567 -0
  267. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_characteristic_quantification_process/image_morphological_characteristic_quantification_process/image_size_characteristic_quantification_process/__init__.py +17 -0
  268. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_characteristic_quantification_process/image_morphological_characteristic_quantification_process/image_size_characteristic_quantification_process/image_size_characteristic_quantification_process.py +283 -0
  269. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_characteristic_quantification_process/image_spatial_position_characteristic_quantification_process/__init__.py +15 -0
  270. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_characteristic_quantification_process/image_spatial_position_characteristic_quantification_process/image_spatial_position_characteristic_quantification_process.py +224 -0
  271. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_characteristic_quantification_process/image_spatial_position_characteristic_quantification_process/image_spatial_relationship_characteristic_quantification_process/__init__.py +23 -0
  272. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_characteristic_quantification_process/image_spatial_position_characteristic_quantification_process/image_spatial_relationship_characteristic_quantification_process/image_spatial_relationship_characteristic_quantification_process.py +206 -0
  273. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_data_set_analysis.py +35 -0
  274. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_data_set_annotation_transformation/__init__.py +13 -0
  275. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/image_data_set_analysis/image_data_set_annotation_transformation/image_data_set_annotation_transformation.py +303 -0
  276. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/network_analysis/__init__.py +13 -0
  277. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/network_analysis/network_analysis.py +52 -0
  278. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/network_analysis/network_graph_construction/__init__.py +6 -0
  279. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/network_analysis/network_graph_construction/nearest_neighbor_graph_construction/__init__.py +9 -0
  280. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/network_analysis/network_graph_construction/nearest_neighbor_graph_construction/nearest_neighbor_graph_construction.py +156 -0
  281. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/network_analysis/network_graph_construction/network_graph_construction.py +71 -0
  282. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/tessellation_analysis/__init__.py +5 -0
  283. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/tessellation_analysis/tessellation_analysis.py +60 -0
  284. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/tessellation_analysis/tessellation_construction/__init__.py +11 -0
  285. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/data_transformation/tessellation_analysis/tessellation_construction/tessellation_construction.py +121 -0
  286. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/machine_learning/__init__.py +13 -0
  287. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/machine_learning/machine_learning.py +101 -0
  288. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/machine_learning/machine_learning_model_inference/__init__.py +11 -0
  289. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/machine_learning/machine_learning_model_inference/machine_learning_model_inference.py +83 -0
  290. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/planned_process/planned_process.py +19 -0
  291. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/process/process.py +19 -0
  292. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/unit/__init__.py +5 -0
  293. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/unit/angle_unit/__init__.py +5 -0
  294. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/unit/angle_unit/angle_unit.py +21 -0
  295. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/unit/angle_unit/plane_angle_unit/__init__.py +7 -0
  296. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/unit/angle_unit/plane_angle_unit/plane_angle_unit.py +47 -0
  297. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/unit/area_unit/__init__.py +15 -0
  298. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/unit/area_unit/area_unit.py +52 -0
  299. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/unit/dimensionless_unit/__init__.py +6 -0
  300. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/unit/dimensionless_unit/dimensionless_unit.py +30 -0
  301. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/unit/dimensionless_unit/ratio_unit/__init__.py +8 -0
  302. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/unit/dimensionless_unit/ratio_unit/ratio_unit.py +32 -0
  303. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/unit/information_unit/__init__.py +7 -0
  304. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/unit/information_unit/image_resolution_unit/__init__.py +4 -0
  305. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/unit/information_unit/image_resolution_unit/image_resolution_unit.py +19 -0
  306. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/unit/information_unit/image_resolution_unit/spatial_resolution_unit/__init__.py +5 -0
  307. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/unit/information_unit/image_resolution_unit/spatial_resolution_unit/spatial_resolution_unit.py +27 -0
  308. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/unit/information_unit/information_unit.py +35 -0
  309. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/unit/length_unit/__init__.py +7 -0
  310. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/unit/length_unit/length_unit.py +36 -0
  311. pathology_image_features-0.2.0/src/pathology_image_features/ontology/classes/unit/unit.py +19 -0
  312. pathology_image_features-0.2.0/src/pathology_image_features/ontology/datatypes.py +20 -0
  313. pathology_image_features-0.2.0/src/pathology_image_features/ontology/individuals/__init__.py +0 -0
  314. pathology_image_features-0.2.0/src/pathology_image_features/ontology/individuals/unit.py +86 -0
  315. pathology_image_features-0.2.0/src/pathology_image_features/ontology/pifo.owl +5615 -0
  316. pathology_image_features-0.2.0/src/pathology_image_features/ontology/properties/__init__.py +304 -0
  317. pathology_image_features-0.2.0/src/pathology_image_features/ontology/restrictions/__init__.py +582 -0
  318. pathology_image_features-0.2.0/src/pathology_image_features/utils/README.md +9 -0
  319. pathology_image_features-0.2.0/src/pathology_image_features/utils/__init__.py +0 -0
  320. pathology_image_features-0.2.0/src/pathology_image_features/utils/general.py +268 -0
  321. pathology_image_features-0.2.0/src/pathology_image_features/utils/visualization.py +251 -0
  322. pathology_image_features-0.2.0/src/pathology_image_features.egg-info/PKG-INFO +66 -0
  323. pathology_image_features-0.2.0/src/pathology_image_features.egg-info/SOURCES.txt +164 -0
  324. pathology_image_features-0.2.0/src/pathology_image_features.egg-info/dependency_links.txt +1 -0
  325. pathology_image_features-0.2.0/src/pathology_image_features.egg-info/requires.txt +15 -0
  326. pathology_image_features-0.2.0/src/pathology_image_features.egg-info/top_level.txt +1 -0
  327. pathology_image_features-0.2.0/tests/data/histology_annotations.json +1 -0
  328. pathology_image_features-0.2.0/tests/data/histology_annotations.xml +4320 -0
  329. pathology_image_features-0.2.0/tests/data/histology_annotationsLayer1.geojson +1 -0
  330. pathology_image_features-0.2.0/tests/data/histology_annotationsLayer1.png +0 -0
  331. pathology_image_features-0.2.0/tests/data/histology_annotationsLayer2.geojson +1 -0
  332. pathology_image_features-0.2.0/tests/data/histology_annotationsLayer3.geojson +1 -0
  333. pathology_image_features-0.2.0/tests/data/histology_image.svs +0 -0
  334. pathology_image_features-0.2.0/tests/data/test_graph_viz.gv +286 -0
  335. pathology_image_features-0.2.0/tests/data/test_graph_viz.gv.pdf +0 -0
  336. pathology_image_features-0.2.0/tests/data/test_voronoi_graph_viz.gv +255 -0
  337. pathology_image_features-0.2.0/tests/data/test_voronoi_graph_viz.gv.pdf +0 -0
  338. pathology_image_features-0.2.0/tests/test_image_feature.py +72 -0
  339. pathology_image_features-0.2.0/tests/test_io.py +225 -0
  340. pathology_image_features-0.2.0/tests/test_serialize_restriction.py +83 -0
  341. pathology_image_features-0.2.0/tests/test_spatial.py +70 -0
  342. pathology_image_features-0.2.0/tests/test_subclass.py +98 -0
  343. pathology_image_features-0.2.0/tests/test_tesselation_pipeline.py +93 -0
  344. pathology_image_features-0.2.0/uv.lock +1942 -0
@@ -0,0 +1,16 @@
1
+ dist/*
2
+ tmp/*
3
+ build/*
4
+ .pytest_cache/*
5
+ update_instructions.md
6
+ .vscode/*
7
+ *.sqlite3
8
+ *.sqlite3-journal
9
+ *.pyc
10
+ *.ttl
11
+ ./examples/*.csv
12
+ ./examples/*.owl
13
+ examples/snakemake-example/.snakemake/
14
+ examples/snakemake-example/example_area_workflow/.snakemake/
15
+ examples/snakemake-example/example_area_workflow/.pixi/
16
+ examples/snakemake-example/example_vis_workflow/.snakemake/
@@ -0,0 +1 @@
1
+ 3.11
@@ -0,0 +1,13 @@
1
+ version: 2
2
+
3
+ build:
4
+ os: ubuntu-22.04
5
+ tools:
6
+ python: "3.12"
7
+
8
+ python:
9
+ install:
10
+ - requirements: docs/requirements.txt
11
+
12
+ sphinx:
13
+ configuration: docs/source/conf.py
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 spborder
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,65 @@
1
+ Metadata-Version: 2.5
2
+ Name: pathology-image-features
3
+ Version: 0.2.0
4
+ Summary: Package implementation of terms from the Pathology Image Features Ontology (PIFO).
5
+ Author-email: Sam Border <sam.border2256@gmail.com>
6
+ License: LICENSE
7
+ License-File: LICENSE
8
+ Requires-Python: >=3.11
9
+ Requires-Dist: girder-client>=5.0.10
10
+ Requires-Dist: graphviz>=0.21
11
+ Requires-Dist: large-image-converter>=1.34.2
12
+ Requires-Dist: lxml>=6.1.1
13
+ Requires-Dist: matplotlib>=3.10.9
14
+ Requires-Dist: ontology-package-boilerplate>=0.1.0
15
+ Requires-Dist: pandas>=3.0.3
16
+ Requires-Dist: pytest>=9.1.1
17
+ Requires-Dist: rasterio>=1.4.4
18
+ Requires-Dist: rdflib>=7.6.0
19
+ Requires-Dist: scikit-image>=0.26.0
20
+ Requires-Dist: shapely>=2.1.2
21
+ Requires-Dist: sphinx-rtd-theme>=3.1.0
22
+ Requires-Dist: sphinx>=9.0.4
23
+ Requires-Dist: typing-extensions>=4.15.0
24
+ Description-Content-Type: text/markdown
25
+
26
+ # pathology-image-features
27
+ Repository dedicated to defining a functional feature ontology for pathology data.
28
+
29
+ ## Installation
30
+ `pathology-image-features` is deployed through PyPI and can be installed using:
31
+
32
+ ```bash
33
+ $ pip install pathology-image-features
34
+ ```
35
+
36
+ ## Usage
37
+
38
+ Example script defining an image feature/calculating/visualizing/etc.
39
+
40
+ ## Contributing
41
+
42
+ Find some example contribution guidelines and reference that in a separate file
43
+
44
+ ## License
45
+
46
+ `pathology-image-features` is licensed under the terms of the MIT License.
47
+
48
+ ## Citation
49
+ If you find this project to be useful in your own research, please consider citing:
50
+
51
+ ```
52
+ @article{
53
+ title={},
54
+ author={},
55
+ journal={},
56
+ volume={},
57
+ number={},
58
+ pages={},
59
+ year={},
60
+ publisher={}
61
+ }
62
+ ```
63
+
64
+
65
+
@@ -0,0 +1,40 @@
1
+ # pathology-image-features
2
+ Repository dedicated to defining a functional feature ontology for pathology data.
3
+
4
+ ## Installation
5
+ `pathology-image-features` is deployed through PyPI and can be installed using:
6
+
7
+ ```bash
8
+ $ pip install pathology-image-features
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ Example script defining an image feature/calculating/visualizing/etc.
14
+
15
+ ## Contributing
16
+
17
+ Find some example contribution guidelines and reference that in a separate file
18
+
19
+ ## License
20
+
21
+ `pathology-image-features` is licensed under the terms of the MIT License.
22
+
23
+ ## Citation
24
+ If you find this project to be useful in your own research, please consider citing:
25
+
26
+ ```
27
+ @article{
28
+ title={},
29
+ author={},
30
+ journal={},
31
+ volume={},
32
+ number={},
33
+ pages={},
34
+ year={},
35
+ publisher={}
36
+ }
37
+ ```
38
+
39
+
40
+
@@ -0,0 +1,20 @@
1
+ """
2
+
3
+ Class template provided by pathology-image-features.
4
+ Extracted from: $ontology_file_path at $current_datetime
5
+
6
+ """
7
+
8
+ $parent_imports
9
+
10
+ from rdflib import URIRef, Literal
11
+ from rdflib.namespace import RDF, OWL, RDFS
12
+
13
+
14
+ class $name($base_class):
15
+ """
16
+ $definition
17
+ """
18
+ iri = URIRef("$iri")
19
+
20
+ $annotation_properties
@@ -0,0 +1,64 @@
1
+ """
2
+
3
+ Creating package using ontology-package-boilerplate
4
+
5
+ """
6
+
7
+ import os
8
+ import sys
9
+
10
+ from rdflib import URIRef
11
+
12
+ sys.path.append("./src/")
13
+
14
+ from ontology_package_boilerplate import create
15
+
16
+ from pathology_image_features.ontology.classes import Thing
17
+ from pathology_image_features.ontology.classes.information_content_entity import (
18
+ information_content_entity,
19
+ )
20
+
21
+
22
+ def update():
23
+ data_annotation = URIRef("http://purl.obolibrary.org/obo/PIFO_0000135")
24
+ template_path = "./boilerplate/class_template.txt"
25
+ create(
26
+ ontology_filepath="./src/pathology_image_features/ontology/pifo.owl",
27
+ destination_path="./src/pathology_image_features/ontology/classes/process/planned_process/completely_executed_planned_process/",
28
+ base_class_obj=Thing,
29
+ scope=[data_annotation],
30
+ class_template=template_path,
31
+ clean=False,
32
+ verbose=True,
33
+ ignore_empty_annotations=True,
34
+ )
35
+
36
+
37
+ def main():
38
+ template_path = "./boilerplate/class_template.txt"
39
+ create(
40
+ ontology_filepath="./src/pathology_image_features/ontology/pifo.owl",
41
+ destination_path="./src/pathology_image_features/ontology/classes/",
42
+ base_class_obj=Thing,
43
+ scope=[],
44
+ class_template=template_path,
45
+ clean=True,
46
+ verbose=True,
47
+ )
48
+
49
+ process_uri = URIRef("http://purl.obolibrary.org/obo/BFO_0000015")
50
+ process_template_path = "./boilerplate/process_template.txt"
51
+ create(
52
+ ontology_filepath="./src/pathology_image_features/ontology/pifo.owl",
53
+ destination_path="./src/pathology_image_features/ontology/classes/",
54
+ base_class_obj=Thing,
55
+ scope=[process_uri],
56
+ class_template=process_template_path,
57
+ clean=True,
58
+ verbose=True,
59
+ )
60
+
61
+
62
+ if __name__ == "__main__":
63
+ # main()
64
+ update()
@@ -0,0 +1,36 @@
1
+ """
2
+
3
+ Class template provided by pathology-image-features.
4
+ Extracted from: $ontology_file_path at $current_datetime
5
+
6
+ """
7
+
8
+ $parent_imports
9
+ $property_imports
10
+
11
+ from rdflib import URIRef, Literal
12
+ from rdflib.namespace import RDF, OWL, RDFS
13
+
14
+ from ontology import PIFO
15
+
16
+ class $class_name($base_class):
17
+ """
18
+ $definition
19
+ """
20
+ iri = URIRef("$iri")
21
+
22
+ $annotation_properties
23
+
24
+ @staticmethod
25
+ def _pull(input_data_item):
26
+ """
27
+ This method extracts the relevant data type from a given subject and returns it.
28
+ """
29
+ return input_data_item
30
+
31
+ def _run(self, input):
32
+ """
33
+ This method runs the process on the given input.
34
+ """
35
+ input = self._pull(input)
36
+ return input
@@ -0,0 +1,20 @@
1
+ # Minimal makefile for Sphinx documentation
2
+ #
3
+
4
+ # You can set these variables from the command line, and also
5
+ # from the environment for the first two.
6
+ SPHINXOPTS ?=
7
+ SPHINXBUILD ?= sphinx-build
8
+ SOURCEDIR = source
9
+ BUILDDIR = build
10
+
11
+ # Put it first so that "make" without argument is like "make help".
12
+ help:
13
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14
+
15
+ .PHONY: help Makefile
16
+
17
+ # Catch-all target: route all unknown targets to Sphinx using the new
18
+ # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19
+ %: Makefile
20
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@@ -0,0 +1,4 @@
1
+ # Sphinx build info version 1
2
+ # This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
3
+ config: 73b0bdf381427242917661b7ca5fe495
4
+ tags: 645f666f9bcd5a90fca523b33c5a78b7
@@ -0,0 +1,128 @@
1
+ Advanced Usage
2
+ ===============
3
+
4
+ Adding properties and restrictions to classes is a good way to preserve some desired functionality when classes are serialized so that all new instances of that class have the same property values.
5
+
6
+ Properties
7
+ ----------
8
+
9
+ Three different types of properties are implemented in *pathology-image-features*. These are:
10
+
11
+ - **Annotation Properties** (strings which describe what a class or instance is)
12
+ - **Object Properties** (links between classes/instances and other classes/instances)
13
+ - **Datatype Properties** (assignments of data values to classes/instances)
14
+
15
+ Properties can be accessed for new instances of a class through it's attributes. Properties are automatically given an "alias" which (in most cases) is resolvable to a valid Python attribute name.
16
+ This alias is either the "rdfs:label" value for the property, the result of replacing the spaces in the "rdfs:label" value with underscores, or the final portion of the URI for the property after removing it's namespace.
17
+
18
+ For example, the property "is about" (IAO:0000136) can be accessed from an instance in the following ways:
19
+
20
+ .. code-block:: python
21
+
22
+ print(f'{instance.is_about=}')
23
+ print('------------------------')
24
+ print(f'{instance.get_property("is about")=}')
25
+ print('------------------------')
26
+ print(f'{instance.get_property("http://purl.obolibrary.org/obo/IAO_0000136")=}')
27
+ print('------------------------')
28
+
29
+
30
+ Object and Datatype Properties have a "range" which defines the type of value that can be assigned to them. This is where you can specify both Python data types (for Datatype properties) and class/instance types for Object Properties.
31
+ They also have a "domain" which defines which classes can use this property. Both domain and range can consist of either lists of classes or single classes.
32
+ New properties can be defined using the following:
33
+
34
+ .. code-block:: python
35
+
36
+ from pathology_image_features.ontology.properties import ObjectProperty, AnnotationProperty, DatatypeProperty
37
+
38
+ package_version = AnnotationProperty(iri = "http://example.org/package_version", definition = "The version of a package used.", name = "package version")
39
+ user_login_name = DatatypeProperty(iri = "http://example.org/user_login_name", definition = "The login name of the user.", name = "user login name", range = str)
40
+
41
+ # Where User and Group are defined classes elsewhere
42
+ user_group = ObjectProperty(iri = "http://example.org/user_group", definition = "The group the user belongs to.", name = "user group", domain = User, range = Group)
43
+
44
+
45
+ After creating a new property, you can register it with the current graph using the 'register_property' method. This allows you to refer to it in class attributes and restrictions using it's alias.
46
+
47
+ .. code-block:: python
48
+
49
+ from pathology_image_features.ontology import PIFO
50
+ from pathology_image_features.ontology.restrictions import Only
51
+ from somewhere import user_group, User, GroupA
52
+
53
+ PIFO.register_property(user_group)
54
+
55
+ class UserInGroupA(User):
56
+ """A class which is represented by any user belonging to Group A."""
57
+ equivalent_to = Only(on_property="user_group", on_class=GroupA)
58
+
59
+
60
+
61
+ Restrictions
62
+ ------------
63
+
64
+ Restrictions are used to describe classes based on some property requirements. In *pathology-image-features*, the class attribute 'equivalent_to' is where restrictions are accessed and applied on the creation of new instances.
65
+
66
+ Builtin restriction types include:
67
+
68
+ - Some: Specifying that at least instances of this class must have at least one value for a property that matches a given class.
69
+ - Only: Specifying that only instances of this class may have a specified property/value combination.
70
+ - Cardinality -> MinCardinality, MaxCardinality, ExactCardinality: Specifying that an instance must have a minimum, maximum, or exact number of values for a given property.
71
+
72
+ Combinations of Restrictions can also be made using the "And", "Or", and "Not" classes.
73
+
74
+ .. code-block:: python
75
+
76
+ from pathology_image_features.ontology.restrictions import And, Or, Not, Some, Only, MinCardinality, MaxCardinality, ExactCardinality
77
+
78
+ class UserInGroup(User):
79
+ """A class representing users which belong to at most one group."""
80
+ equivalent_to = And([
81
+ Some(on_property="user_group", on_class=Group), # Must have the user_group property (whose range is already Group so this is redundant)
82
+ MaxCardinality(on_property="user_group", value = 1) # Must have at most one value for the user_group property
83
+ ])
84
+
85
+ # Since the property "user_group" has a defined domain and range, the "Some" restriction can be omitted.
86
+ class UserInGroup(User):
87
+ equivalent_to = MaxCardinality(on_property="user_group", value = 1)
88
+
89
+ class UserInMultipleGroups(User):
90
+ """A class representing users which belong to more than one group."""
91
+ equivalent_to = MinCardinality(on_property="user_group", value = 2)
92
+
93
+
94
+ Different behavior can be registered for instance creation when a "equivalent_to" attribute is present for a class. In some cases, it may be desirable to raise an error if a new instance does not have a value for a property which is defined in a Restriction.
95
+
96
+ Restriction subclasses have a "on_missing" keyword argument on initialization which can be replaced with either "None" or a custom Callable to indicate what should be done if a property is not found for a given instance. By default, *pathology-image-features* will create a new instance of the "on_class" property and assign it to that instance if it is not present.
97
+
98
+ .. code-block:: python
99
+
100
+ class UserInGroup(User):
101
+ equivalent_to = MaxCardinality(on_property="user_group", value = 1, on_missing=None)
102
+
103
+ # This will cause an error as no "user_group" value was provided to the instance
104
+ new_user = UserInGroup()
105
+
106
+ # This will not raise an error as the "user_group" value is specified for this instance
107
+ new_user = UserInGroup(user_group=GroupA())
108
+
109
+ def custom_on_missing(restriction, instance):
110
+ """If you want to set a default value as "GroupA" for non-grouped UserInGroup instances."""
111
+ default_val = GroupA()
112
+ user_group.__set__(instance, default_val)
113
+
114
+ setattr(
115
+ instance.__class__,
116
+ "user_group",
117
+ property(
118
+ lambda inst: user_group.__get__(inst),
119
+ lambda inst, val: user_group.__set__(inst,val),
120
+ lambda inst: user_group.__delete__(inst)
121
+ )
122
+ )
123
+
124
+ class UserInGroup(User):
125
+ equivalent_to = MaxCardinality(on_property="user_group", value = 1, on_missing=custom_on_missing)
126
+
127
+ new_user = UserInGroup()
128
+ print(f'{isinstance(new_user.user_group[0], GroupA)}') # Will print True
@@ -0,0 +1,20 @@
1
+ Annotations I/O
2
+ ================
3
+
4
+ Reading Annotations
5
+ ^^^^^^^^^^^^^^^^^^^
6
+
7
+ .. automodule:: pathology_image_features.ann_io.read
8
+ :members:
9
+
10
+ Converting Annotations
11
+ ^^^^^^^^^^^^^^^^^^^^^^
12
+
13
+ .. automodule:: pathology_image_features.ann_io.convert
14
+ :members:
15
+
16
+ Writing Annotations
17
+ ^^^^^^^^^^^^^^^^^^^
18
+
19
+ .. automodule:: pathology_image_features.ann_io.write
20
+ :members:
@@ -0,0 +1,105 @@
1
+ Background
2
+ =============
3
+
4
+ *pathology-image-features* builds off of ontology principles to standardize common processes in an image analysis pipeline, specifically
5
+ for the analysis of pathology data. This allows for better understanding how different types of quantitative metrics and processes
6
+ are related to each other, as well as preparing data for input into an RDF/graph database.
7
+
8
+ With this library, one can:
9
+
10
+ - Read annotations for whole slide images (WSIs) from a variety of formats
11
+ - Extract corresponding image regions for individual structures
12
+ - String together complicated processes with minimal coding required
13
+ - Define quantitative feature extraction pipelines with built-in documentation
14
+
15
+ Why use ontology? What is ontology?
16
+ ------------------------------------
17
+
18
+ In philosophy, ontology is the study of *being* (`Wikipedia <https://en.wikipedia.org/wiki/Ontology>`_). Ontologists collaborate (and sometimes argue)
19
+ on the fundamental structure of reality and every entity within it. How different entities are defined, how they relate to one another, how
20
+ individual "instances" of an entity are differentiated, and how sub-categories of entities are distinguished all fall under the umbrella of ontology.
21
+
22
+ The highly specific nature of ontological concepts results in a highly formalized language for definitions which can be difficult for non-ontology
23
+ experts to understand. One such example of an ontology is the `Basic Formal Ontology <https://github.com/bfo-ontology/BFO-2020>`_. As an "upper-level"
24
+ ontology, the BFO is meant to be as general as possible. This means that you won't find any specific terms relating to physical, chemical, or biological
25
+ entities where a more specific "middle-" or "lower-" level ontology would be more appropriate. The `Gene Ontology <https://github.com/geneontology>`_
26
+ is used for characterizing how individual genes are involved in specific biological processes and is useful for determining what is impacted under
27
+ experimental conditions.
28
+
29
+ Integrating ontology in Python
30
+ -------------------------------
31
+
32
+ In the context of programming, ontology principles are actually employed fairly often without people realizing it. Take a look at the following code
33
+ adapted from `Owlready2 documentation <https://owlready2.readthedocs.io/en/v0.49/intro.html>`_.
34
+
35
+ .. code-block:: python
36
+
37
+ from restaurant.menu import Pizza
38
+ from grocery_store.items import (
39
+ Cheese, PizzaSauce,
40
+ Pepperoni, Sausage,
41
+ Olives, Peppers
42
+ )
43
+
44
+ class VegetarianPizza(Pizza):
45
+ def add_topping(self, topping):
46
+ if type(topping) in [Pepperoni,Sausage]:
47
+ raise Exception('No meat allowed!')
48
+ self.toppings.append(topping)
49
+
50
+ class PepperoniAndCheesePizza(Pizza):
51
+ def add_topping(self, topping):
52
+ if type(topping) not in [Cheese,Pepperoni,PizzaSauce]:
53
+ raise Exception('What part of Pepperoni and Cheese do you not understand??')
54
+ self.toppings.append(topping)
55
+
56
+ We can clearly see that `VegetarianPizza` and `PepperoniAndCheesePizza`, while both being types of `Pizza`, are constrained in the types of toppings
57
+ that can be added to them. Using inheritance in Python, we can avoid restating a large amount of shared properties while assigning specific methods
58
+ and properties to subclasses based on their desired function or characteristics. Extending on this example, we can define which types of customers
59
+ can have which types of `Pizza` based on any dietary restrictions they might have (think `VegetarianCustomer` vs. `CarnivoreCustomer`). In OWL
60
+ (Web Ontology Language), a `VegetarianPizza` can be defined like this (from `pizza.owl <https://github.com/owlcs/pizza-ontology/blob/master/pizza.owl>`_):
61
+
62
+ .. code-block:: xml
63
+
64
+ <owl:Class rdf:about="#VegetarianPizza">
65
+ <rdfs:label xml:lang="pt"
66
+ >PizzaVegetariana</rdfs:label>
67
+ <rdfs:comment xml:lang="en"
68
+ >Any pizza that does not have fish topping and does not have meat topping is a VegetarianPizza. Members of this class do not need to have any toppings at all.</rdfs:comment>
69
+ <owl:equivalentClass>
70
+ <owl:Class>
71
+ <owl:intersectionOf rdf:parseType="Collection">
72
+ <owl:Class rdf:about="#Pizza"/>
73
+ <owl:Class>
74
+ <owl:complementOf>
75
+ <owl:Restriction>
76
+ <owl:onProperty rdf:resource="#hasTopping"/>
77
+ <owl:someValuesFrom rdf:resource="#MeatTopping"/>
78
+ </owl:Restriction>
79
+ </owl:complementOf>
80
+ </owl:Class>
81
+ <owl:Class>
82
+ <owl:complementOf>
83
+ <owl:Restriction>
84
+ <owl:onProperty rdf:resource="#hasTopping"/>
85
+ <owl:someValuesFrom rdf:resource="#FishTopping"/>
86
+ </owl:Restriction>
87
+ </owl:complementOf>
88
+ </owl:Class>
89
+ </owl:intersectionOf>
90
+ </owl:Class>
91
+ </owl:equivalentClass>
92
+ </owl:Class>
93
+
94
+
95
+ Ontology in pathology image analysis
96
+ --------------------------------------
97
+
98
+ Pathology images are different from everyday, ordinary images for a variety of reasons. They are generally very high-resolution, they contain tissue
99
+ which may have a specific type of stain applied, and they sometimes contain annotations of regions of interest (ROIs). In the process of analyzing
100
+ these images, custom workflows are developed and subsequent datasets are constructed consisting of more images, annotations, or quantitative metrics.
101
+
102
+ While writing up an ontology for these different components of an image analysis workflow, we realized that it would be also be beneficial to define the
103
+ actual Python scripts which are used in the execution of these parts within the ontology. Not only would this prevent confusion in how a specific metric
104
+ is calculated, it would also provide a means for serializing a pipeline into a graph database which can be reconstructed and run on subsequent datasets.
105
+ And therefore, *pathology-image-features* was born!