spacr 1.0.5__tar.gz → 1.0.7__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 (668) hide show
  1. {spacr-1.0.5/spacr.egg-info → spacr-1.0.7}/PKG-INFO +1 -1
  2. spacr-1.0.7/docs/_images/logo_spacr.png +0 -0
  3. {spacr-1.0.5 → spacr-1.0.7}/setup.py +1 -4
  4. {spacr-1.0.5 → spacr-1.0.7}/spacr/__init__.py +0 -9
  5. {spacr-1.0.5 → spacr-1.0.7}/spacr/core.py +1 -357
  6. {spacr-1.0.5 → spacr-1.0.7}/spacr/deep_spacr.py +1 -3
  7. {spacr-1.0.5 → spacr-1.0.7}/spacr/gui.py +30 -15
  8. {spacr-1.0.5 → spacr-1.0.7}/spacr/gui_core.py +21 -28
  9. spacr-1.0.7/spacr/gui_elements.py +1724 -0
  10. {spacr-1.0.5 → spacr-1.0.7}/spacr/gui_utils.py +3 -7
  11. {spacr-1.0.5 → spacr-1.0.7}/spacr/io.py +14 -4
  12. {spacr-1.0.5 → spacr-1.0.7}/spacr/plot.py +57 -0
  13. spacr-1.0.7/spacr/resources/data/lopit.csv +3833 -0
  14. spacr-1.0.7/spacr/resources/icons/activation.png +0 -0
  15. spacr-1.0.7/spacr/resources/icons/flow_chart_v3.png +0 -0
  16. spacr-1.0.7/spacr/resources/icons/logo_spacr.png +0 -0
  17. {spacr-1.0.5 → spacr-1.0.7}/spacr/settings.py +2 -2
  18. {spacr-1.0.5 → spacr-1.0.7}/spacr/spacr_cellpose.py +0 -1
  19. {spacr-1.0.5 → spacr-1.0.7}/spacr/utils.py +51 -1
  20. {spacr-1.0.5 → spacr-1.0.7/spacr.egg-info}/PKG-INFO +1 -1
  21. {spacr-1.0.5 → spacr-1.0.7}/spacr.egg-info/SOURCES.txt +2 -122
  22. {spacr-1.0.5 → spacr-1.0.7}/spacr.egg-info/entry_points.txt +0 -3
  23. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans-ExtraBold.ttf +0 -0
  24. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans-ExtraBoldItalic.ttf +0 -0
  25. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans-Medium.ttf +0 -0
  26. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans-MediumItalic.ttf +0 -0
  27. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_Condensed-Bold.ttf +0 -0
  28. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_Condensed-BoldItalic.ttf +0 -0
  29. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_Condensed-ExtraBold.ttf +0 -0
  30. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_Condensed-ExtraBoldItalic.ttf +0 -0
  31. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_Condensed-Italic.ttf +0 -0
  32. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_Condensed-Light.ttf +0 -0
  33. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_Condensed-LightItalic.ttf +0 -0
  34. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_Condensed-Medium.ttf +0 -0
  35. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_Condensed-MediumItalic.ttf +0 -0
  36. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_Condensed-Regular.ttf +0 -0
  37. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_Condensed-SemiBold.ttf +0 -0
  38. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_Condensed-SemiBoldItalic.ttf +0 -0
  39. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_SemiCondensed-Bold.ttf +0 -0
  40. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_SemiCondensed-BoldItalic.ttf +0 -0
  41. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_SemiCondensed-ExtraBold.ttf +0 -0
  42. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_SemiCondensed-ExtraBoldItalic.ttf +0 -0
  43. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_SemiCondensed-Italic.ttf +0 -0
  44. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_SemiCondensed-Light.ttf +0 -0
  45. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_SemiCondensed-LightItalic.ttf +0 -0
  46. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_SemiCondensed-Medium.ttf +0 -0
  47. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_SemiCondensed-MediumItalic.ttf +0 -0
  48. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_SemiCondensed-Regular.ttf +0 -0
  49. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_SemiCondensed-SemiBold.ttf +0 -0
  50. spacr-1.0.5/docs/resources/font/open_sans/static/OpenSans_SemiCondensed-SemiBoldItalic.ttf +0 -0
  51. spacr-1.0.5/docs/resources/tutorial/1_mask/gui/Screenshot from 2025-06-25 22-03-41.png +0 -0
  52. spacr-1.0.5/docs/resources/tutorial/1_mask/gui/Screenshot from 2025-06-25 22-07-50.png +0 -0
  53. spacr-1.0.5/docs/resources/tutorial/1_mask/gui/Screenshot from 2025-06-25 22-08-06.png +0 -0
  54. spacr-1.0.5/docs/resources/tutorial/1_mask/gui/Screenshot from 2025-06-25 22-08-19.png +0 -0
  55. spacr-1.0.5/docs/resources/tutorial/1_mask/gui/Screenshot from 2025-06-25 22-08-37.png +0 -0
  56. spacr-1.0.5/docs/resources/tutorial/1_mask/gui/Screenshot from 2025-06-25 22-08-55.png +0 -0
  57. spacr-1.0.5/docs/resources/tutorial/1_mask/gui/Screenshot from 2025-06-25 22-09-03.png +0 -0
  58. spacr-1.0.5/docs/resources/tutorial/1_mask/gui/Screenshot from 2025-06-25 22-09-20.png +0 -0
  59. spacr-1.0.5/docs/resources/tutorial/1_mask/gui/Screenshot from 2025-06-25 22-09-34.png +0 -0
  60. spacr-1.0.5/docs/resources/tutorial/1_mask/gui/Screenshot from 2025-06-25 22-09-43.png +0 -0
  61. spacr-1.0.5/docs/resources/tutorial/1_mask/gui/Screenshot from 2025-06-25 22-09-56.png +0 -0
  62. spacr-1.0.5/docs/resources/tutorial/1_mask/gui/Screenshot from 2025-06-25 22-10-25.png +0 -0
  63. spacr-1.0.5/docs/resources/tutorial/1_mask/gui/Screenshot from 2025-06-25 22-11-04.png +0 -0
  64. spacr-1.0.5/docs/resources/tutorial/1_mask/gui/Screenshot from 2025-06-25 22-11-11.png +0 -0
  65. spacr-1.0.5/docs/resources/tutorial/1_mask/gui/Screenshot from 2025-06-25 22-11-18.png +0 -0
  66. spacr-1.0.5/docs/resources/tutorial/1_mask/gui/Screenshot from 2025-06-25 22-11-27.png +0 -0
  67. spacr-1.0.5/docs/resources/tutorial/1_mask/gui/gui.png +0 -0
  68. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_00_code.txt +0 -37
  69. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_code.txt +0 -1
  70. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_00_text.txt +0 -3
  71. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_02_text.txt +0 -63
  72. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_04_text.txt +0 -20
  73. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_06_text.txt +0 -4
  74. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_08_text.txt +0 -1
  75. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_19_text.txt +0 -1
  76. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_21_text.txt +0 -4
  77. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_23_text.txt +0 -1
  78. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_34_text.txt +0 -1
  79. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_36_text.txt +0 -4
  80. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_38_text.txt +0 -1
  81. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_49_text.txt +0 -23
  82. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_51_text.txt +0 -1
  83. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_53_text.txt +0 -1
  84. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_55_text.txt +0 -1
  85. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_57_text.txt +0 -1
  86. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_59_text.txt +0 -1
  87. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_61_text.txt +0 -1
  88. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_63_text.txt +0 -1
  89. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_65_text.txt +0 -1
  90. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_67_text.txt +0 -1
  91. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_01_out_69_text.txt +0 -2
  92. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/cell_02_code.txt +0 -0
  93. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/console_output.js +0 -63
  94. spacr-1.0.5/docs/resources/tutorial/1_mask/notebook/console_output.txt +0 -63
  95. spacr-1.0.5/docs/resources/tutorial/2_measure/notebook/2_spacr_generate_mesurments_crop_images-ipynb/cell_00_code.txt +0 -25
  96. spacr-1.0.5/docs/resources/tutorial/2_measure/notebook/2_spacr_generate_mesurments_crop_images-ipynb/cell_01_code.txt +0 -1
  97. spacr-1.0.5/docs/resources/tutorial/2_measure/notebook/2_spacr_generate_mesurments_crop_images-ipynb/cell_01_out_00_text.txt +0 -3
  98. spacr-1.0.5/docs/resources/tutorial/2_measure/notebook/2_spacr_generate_mesurments_crop_images-ipynb/cell_01_out_02_text.txt +0 -1
  99. spacr-1.0.5/docs/resources/tutorial/2_measure/notebook/2_spacr_generate_mesurments_crop_images-ipynb/cell_01_out_04_text.txt +0 -2
  100. spacr-1.0.5/docs/resources/tutorial/2_measure/notebook/2_spacr_generate_mesurments_crop_images-ipynb/cell_01_out_10_text.txt +0 -1
  101. spacr-1.0.5/docs/resources/tutorial/2_measure/notebook/2_spacr_generate_mesurments_crop_images-ipynb/cell_01_out_16_text.txt +0 -1
  102. spacr-1.0.5/docs/resources/tutorial/2_measure/notebook/2_spacr_generate_mesurments_crop_images-ipynb/cell_01_out_22_text.txt +0 -1
  103. spacr-1.0.5/docs/resources/tutorial/2_measure/notebook/2_spacr_generate_mesurments_crop_images-ipynb/cell_01_out_28_text.txt +0 -1
  104. spacr-1.0.5/docs/resources/tutorial/2_measure/notebook/2_spacr_generate_mesurments_crop_images-ipynb/cell_01_out_34_text.txt +0 -1
  105. spacr-1.0.5/docs/resources/tutorial/2_measure/notebook/2_spacr_generate_mesurments_crop_images-ipynb/cell_01_out_40_text.txt +0 -1
  106. spacr-1.0.5/docs/resources/tutorial/2_measure/notebook/2_spacr_generate_mesurments_crop_images-ipynb/cell_01_out_46_text.txt +0 -1
  107. spacr-1.0.5/docs/resources/tutorial/2_measure/notebook/2_spacr_generate_mesurments_crop_images-ipynb/cell_01_out_52_text.txt +0 -1
  108. spacr-1.0.5/docs/resources/tutorial/2_measure/notebook/2_spacr_generate_mesurments_crop_images-ipynb/cell_01_out_58_text.txt +0 -1
  109. spacr-1.0.5/docs/resources/tutorial/2_measure/notebook/2_spacr_generate_mesurments_crop_images-ipynb/cell_01_out_64_text.txt +0 -2
  110. spacr-1.0.5/docs/resources/tutorial/2_measure/notebook/2_spacr_generate_mesurments_crop_images-ipynb/cell_02_code.txt +0 -0
  111. spacr-1.0.5/spacr/app_annotate.py +0 -64
  112. spacr-1.0.5/spacr/app_make_masks.py +0 -44
  113. spacr-1.0.5/spacr/app_umap.py +0 -8
  114. spacr-1.0.5/spacr/gui_elements.py +0 -3398
  115. spacr-1.0.5/spacr/resources/data/lopit.csv +0 -3833
  116. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans-ExtraBold.ttf +0 -0
  117. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans-ExtraBoldItalic.ttf +0 -0
  118. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans-Medium.ttf +0 -0
  119. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans-MediumItalic.ttf +0 -0
  120. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_Condensed-Bold.ttf +0 -0
  121. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_Condensed-BoldItalic.ttf +0 -0
  122. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_Condensed-ExtraBold.ttf +0 -0
  123. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_Condensed-ExtraBoldItalic.ttf +0 -0
  124. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_Condensed-Italic.ttf +0 -0
  125. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_Condensed-Light.ttf +0 -0
  126. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_Condensed-LightItalic.ttf +0 -0
  127. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_Condensed-Medium.ttf +0 -0
  128. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_Condensed-MediumItalic.ttf +0 -0
  129. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_Condensed-Regular.ttf +0 -0
  130. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_Condensed-SemiBold.ttf +0 -0
  131. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_Condensed-SemiBoldItalic.ttf +0 -0
  132. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Bold.ttf +0 -0
  133. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-BoldItalic.ttf +0 -0
  134. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-ExtraBold.ttf +0 -0
  135. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-ExtraBoldItalic.ttf +0 -0
  136. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Italic.ttf +0 -0
  137. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Light.ttf +0 -0
  138. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-LightItalic.ttf +0 -0
  139. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Medium.ttf +0 -0
  140. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-MediumItalic.ttf +0 -0
  141. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Regular.ttf +0 -0
  142. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-SemiBold.ttf +0 -0
  143. spacr-1.0.5/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-SemiBoldItalic.ttf +0 -0
  144. spacr-1.0.5/spacr/resources/icons/flow_chart_v3.png +0 -0
  145. spacr-1.0.5/spacr/resources/icons/logo.pdf +2 -2790
  146. spacr-1.0.5/spacr/resources/icons/logo_spacr.png +0 -0
  147. spacr-1.0.5/spacr/resources/icons/logo_spacr_1.png +0 -0
  148. spacr-1.0.5/spacr/sim.py +0 -1692
  149. {spacr-1.0.5 → spacr-1.0.7}/LICENSE +0 -0
  150. {spacr-1.0.5 → spacr-1.0.7}/MANIFEST.in +0 -0
  151. {spacr-1.0.5 → spacr-1.0.7}/README.rst +0 -0
  152. {spacr-1.0.5 → spacr-1.0.7}/deploy_docs.sh +0 -0
  153. {spacr-1.0.5 → spacr-1.0.7}/docs/.doctrees/environment.pickle +0 -0
  154. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/.doctrees/environment.pickle +0 -0
  155. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_images/logo_spacr.png +0 -0
  156. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/index.html +0 -0
  157. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/app_annotate.html +0 -0
  158. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/app_classify.html +0 -0
  159. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/app_make_masks.html +0 -0
  160. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/app_mask.html +0 -0
  161. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/app_measure.html +0 -0
  162. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/app_sequencing.html +0 -0
  163. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/app_umap.html +0 -0
  164. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/core.html +0 -0
  165. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/deep_spacr.html +0 -0
  166. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/gui.html +0 -0
  167. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/gui_core.html +0 -0
  168. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/gui_elements.html +0 -0
  169. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/gui_utils.html +0 -0
  170. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/io.html +0 -0
  171. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/logger.html +0 -0
  172. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/measure.html +0 -0
  173. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/ml.html +0 -0
  174. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/plot.html +0 -0
  175. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/sequencing.html +0 -0
  176. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/settings.html +0 -0
  177. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/sim.html +0 -0
  178. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/sp_stats.html +0 -0
  179. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/spacr_cellpose.html +0 -0
  180. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/submodules.html +0 -0
  181. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/timelapse.html +0 -0
  182. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/toxo.html +0 -0
  183. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/utils.html +0 -0
  184. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_modules/spacr/version.html +0 -0
  185. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/index.rst.txt +0 -0
  186. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/app_annotate/index.rst.txt +0 -0
  187. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/app_classify/index.rst.txt +0 -0
  188. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/app_make_masks/index.rst.txt +0 -0
  189. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/app_mask/index.rst.txt +0 -0
  190. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/app_measure/index.rst.txt +0 -0
  191. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/app_sequencing/index.rst.txt +0 -0
  192. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/app_umap/index.rst.txt +0 -0
  193. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/core/index.rst.txt +0 -0
  194. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/deep_spacr/index.rst.txt +0 -0
  195. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/gui/index.rst.txt +0 -0
  196. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/gui_core/index.rst.txt +0 -0
  197. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/gui_elements/index.rst.txt +0 -0
  198. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/gui_utils/index.rst.txt +0 -0
  199. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/index.rst.txt +0 -0
  200. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/io/index.rst.txt +0 -0
  201. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/logger/index.rst.txt +0 -0
  202. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/measure/index.rst.txt +0 -0
  203. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/ml/index.rst.txt +0 -0
  204. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/plot/index.rst.txt +0 -0
  205. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/sequencing/index.rst.txt +0 -0
  206. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/settings/index.rst.txt +0 -0
  207. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/sim/index.rst.txt +0 -0
  208. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/sp_stats/index.rst.txt +0 -0
  209. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/spacr_cellpose/index.rst.txt +0 -0
  210. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/submodules/index.rst.txt +0 -0
  211. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/timelapse/index.rst.txt +0 -0
  212. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/toxo/index.rst.txt +0 -0
  213. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/utils/index.rst.txt +0 -0
  214. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/api/spacr/version/index.rst.txt +0 -0
  215. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_sources/index.rst.txt +0 -0
  216. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  217. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/basic.css +0 -0
  218. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/css/badge_only.css +0 -0
  219. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  220. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  221. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  222. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  223. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  224. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
  225. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  226. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  227. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  228. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  229. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  230. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/css/fonts/lato-bold.woff +0 -0
  231. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/css/fonts/lato-bold.woff2 +0 -0
  232. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  233. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  234. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/css/fonts/lato-normal.woff +0 -0
  235. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/css/fonts/lato-normal.woff2 +0 -0
  236. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/css/theme.css +0 -0
  237. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/custom.css +0 -0
  238. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/doctools.js +0 -0
  239. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/documentation_options.js +0 -0
  240. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/file.png +0 -0
  241. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/Lato/lato-bold.eot +0 -0
  242. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/Lato/lato-bold.ttf +0 -0
  243. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/Lato/lato-bold.woff +0 -0
  244. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
  245. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  246. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  247. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  248. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  249. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/Lato/lato-italic.eot +0 -0
  250. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/Lato/lato-italic.ttf +0 -0
  251. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/Lato/lato-italic.woff +0 -0
  252. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
  253. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/Lato/lato-regular.eot +0 -0
  254. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/Lato/lato-regular.ttf +0 -0
  255. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/Lato/lato-regular.woff +0 -0
  256. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
  257. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  258. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  259. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  260. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  261. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  262. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  263. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  264. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  265. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/graphviz.css +0 -0
  266. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/jquery.js +0 -0
  267. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/js/badge_only.js +0 -0
  268. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/js/theme.js +0 -0
  269. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/js/versions.js +0 -0
  270. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/language_data.js +0 -0
  271. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/logo_spacr.png +0 -0
  272. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/minus.png +0 -0
  273. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/plus.png +0 -0
  274. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/pygments.css +0 -0
  275. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/searchtools.js +0 -0
  276. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/_static/sphinx_highlight.js +0 -0
  277. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/index.html +0 -0
  278. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/app_annotate/index.html +0 -0
  279. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/app_classify/index.html +0 -0
  280. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/app_make_masks/index.html +0 -0
  281. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/app_mask/index.html +0 -0
  282. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/app_measure/index.html +0 -0
  283. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/app_sequencing/index.html +0 -0
  284. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/app_umap/index.html +0 -0
  285. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/core/index.html +0 -0
  286. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/deep_spacr/index.html +0 -0
  287. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/gui/index.html +0 -0
  288. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/gui_core/index.html +0 -0
  289. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/gui_elements/index.html +0 -0
  290. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/gui_utils/index.html +0 -0
  291. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/index.html +0 -0
  292. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/io/index.html +0 -0
  293. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/logger/index.html +0 -0
  294. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/measure/index.html +0 -0
  295. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/ml/index.html +0 -0
  296. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/plot/index.html +0 -0
  297. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/sequencing/index.html +0 -0
  298. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/settings/index.html +0 -0
  299. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/sim/index.html +0 -0
  300. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/sp_stats/index.html +0 -0
  301. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/spacr_cellpose/index.html +0 -0
  302. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/submodules/index.html +0 -0
  303. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/timelapse/index.html +0 -0
  304. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/toxo/index.html +0 -0
  305. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/utils/index.html +0 -0
  306. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/api/spacr/version/index.html +0 -0
  307. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/genindex.html +0 -0
  308. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/index.html +0 -0
  309. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/objects.inv +0 -0
  310. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/py-modindex.html +0 -0
  311. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/search.html +0 -0
  312. {spacr-1.0.5 → spacr-1.0.7}/docs/_build/html/searchindex.js +0 -0
  313. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/SetupDict.html +0 -0
  314. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/core/BasePredictor.html +0 -0
  315. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/core/BaseTrainer.html +0 -0
  316. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/core/Baseline/Predictor.html +0 -0
  317. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/core/Baseline/Trainer.html +0 -0
  318. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/core/Baseline/utils.html +0 -0
  319. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/core/MEDIAR/EnsemblePredictor.html +0 -0
  320. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/core/MEDIAR/Predictor.html +0 -0
  321. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/core/MEDIAR/Trainer.html +0 -0
  322. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/core/MEDIAR/utils.html +0 -0
  323. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/core/utils.html +0 -0
  324. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/evaluate.html +0 -0
  325. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/generate_mapping.html +0 -0
  326. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/index.html +0 -0
  327. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/main.html +0 -0
  328. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/predict.html +0 -0
  329. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/app_annotate.html +0 -0
  330. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/app_classify.html +0 -0
  331. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/app_make_masks.html +0 -0
  332. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/app_mask.html +0 -0
  333. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/app_measure.html +0 -0
  334. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/app_sequencing.html +0 -0
  335. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/app_umap.html +0 -0
  336. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/chat_bot.html +0 -0
  337. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/core.html +0 -0
  338. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/deep_spacr.html +0 -0
  339. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/gui.html +0 -0
  340. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/gui_core.html +0 -0
  341. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/gui_elements.html +0 -0
  342. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/gui_utils.html +0 -0
  343. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/io.html +0 -0
  344. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/logger.html +0 -0
  345. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/measure.html +0 -0
  346. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/mediar.html +0 -0
  347. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/ml.html +0 -0
  348. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/plot.html +0 -0
  349. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/sequencing.html +0 -0
  350. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/settings.html +0 -0
  351. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/sim.html +0 -0
  352. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/sp_stats.html +0 -0
  353. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/spacr_cellpose.html +0 -0
  354. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/submodules.html +0 -0
  355. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/timelapse.html +0 -0
  356. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/toxo.html +0 -0
  357. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/utils.html +0 -0
  358. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/spacr/version.html +0 -0
  359. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/train_tools/data_utils/custom/CellAware.html +0 -0
  360. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/train_tools/data_utils/custom/LoadImage.html +0 -0
  361. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/train_tools/data_utils/custom/NormalizeImage.html +0 -0
  362. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/train_tools/data_utils/datasetter.html +0 -0
  363. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/train_tools/data_utils/transforms.html +0 -0
  364. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/train_tools/data_utils/utils.html +0 -0
  365. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/train_tools/measures.html +0 -0
  366. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/train_tools/models/MEDIARFormer.html +0 -0
  367. {spacr-1.0.5 → spacr-1.0.7}/docs/_modules/train_tools/utils.html +0 -0
  368. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/SetupDict/index.rst.txt +0 -0
  369. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/core/BasePredictor/index.rst.txt +0 -0
  370. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/core/BaseTrainer/index.rst.txt +0 -0
  371. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/core/Baseline/Predictor/index.rst.txt +0 -0
  372. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/core/Baseline/Trainer/index.rst.txt +0 -0
  373. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/core/Baseline/index.rst.txt +0 -0
  374. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/core/Baseline/utils/index.rst.txt +0 -0
  375. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/core/MEDIAR/EnsemblePredictor/index.rst.txt +0 -0
  376. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/core/MEDIAR/Predictor/index.rst.txt +0 -0
  377. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/core/MEDIAR/Trainer/index.rst.txt +0 -0
  378. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/core/MEDIAR/index.rst.txt +0 -0
  379. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/core/MEDIAR/utils/index.rst.txt +0 -0
  380. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/core/index.rst.txt +0 -0
  381. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/core/utils/index.rst.txt +0 -0
  382. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/evaluate/index.rst.txt +0 -0
  383. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/generate_mapping/index.rst.txt +0 -0
  384. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/index.rst.txt +0 -0
  385. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/main/index.rst.txt +0 -0
  386. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/predict/index.rst.txt +0 -0
  387. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/app_annotate/index.rst.txt +0 -0
  388. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/app_classify/index.rst.txt +0 -0
  389. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/app_make_masks/index.rst.txt +0 -0
  390. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/app_mask/index.rst.txt +0 -0
  391. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/app_measure/index.rst.txt +0 -0
  392. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/app_sequencing/index.rst.txt +0 -0
  393. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/app_umap/index.rst.txt +0 -0
  394. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/chat_bot/index.rst.txt +0 -0
  395. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/core/index.rst.txt +0 -0
  396. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/deep_spacr/index.rst.txt +0 -0
  397. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/gui/index.rst.txt +0 -0
  398. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/gui_core/index.rst.txt +0 -0
  399. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/gui_elements/index.rst.txt +0 -0
  400. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/gui_utils/index.rst.txt +0 -0
  401. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/index.rst.txt +0 -0
  402. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/io/index.rst.txt +0 -0
  403. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/logger/index.rst.txt +0 -0
  404. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/measure/index.rst.txt +0 -0
  405. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/mediar/index.rst.txt +0 -0
  406. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/ml/index.rst.txt +0 -0
  407. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/openai/index.rst.txt +0 -0
  408. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/plot/index.rst.txt +0 -0
  409. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/sequencing/index.rst.txt +0 -0
  410. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/settings/index.rst.txt +0 -0
  411. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/sim/index.rst.txt +0 -0
  412. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/sp_stats/index.rst.txt +0 -0
  413. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/spacr_cellpose/index.rst.txt +0 -0
  414. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/submodules/index.rst.txt +0 -0
  415. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/timelapse/index.rst.txt +0 -0
  416. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/toxo/index.rst.txt +0 -0
  417. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/utils/index.rst.txt +0 -0
  418. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/spacr/version/index.rst.txt +0 -0
  419. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/train_tools/data_utils/custom/CellAware/index.rst.txt +0 -0
  420. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/train_tools/data_utils/custom/LoadImage/index.rst.txt +0 -0
  421. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/train_tools/data_utils/custom/NormalizeImage/index.rst.txt +0 -0
  422. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/train_tools/data_utils/custom/index.rst.txt +0 -0
  423. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/train_tools/data_utils/datasetter/index.rst.txt +0 -0
  424. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/train_tools/data_utils/index.rst.txt +0 -0
  425. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/train_tools/data_utils/transforms/index.rst.txt +0 -0
  426. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/train_tools/data_utils/utils/index.rst.txt +0 -0
  427. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/train_tools/index.rst.txt +0 -0
  428. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/train_tools/measures/index.rst.txt +0 -0
  429. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/train_tools/models/MEDIARFormer/index.rst.txt +0 -0
  430. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/train_tools/models/index.rst.txt +0 -0
  431. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/api/train_tools/utils/index.rst.txt +0 -0
  432. {spacr-1.0.5 → spacr-1.0.7}/docs/_sources/index.rst.txt +0 -0
  433. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  434. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/basic.css +0 -0
  435. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/css/badge_only.css +0 -0
  436. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  437. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  438. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  439. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  440. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/css/fonts/fontawesome-webfont.eot +0 -0
  441. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/css/fonts/fontawesome-webfont.svg +0 -0
  442. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  443. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/css/fonts/fontawesome-webfont.woff +0 -0
  444. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  445. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/css/fonts/lato-bold-italic.woff +0 -0
  446. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  447. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/css/fonts/lato-bold.woff +0 -0
  448. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/css/fonts/lato-bold.woff2 +0 -0
  449. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/css/fonts/lato-normal-italic.woff +0 -0
  450. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  451. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/css/fonts/lato-normal.woff +0 -0
  452. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/css/fonts/lato-normal.woff2 +0 -0
  453. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/css/theme.css +0 -0
  454. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/custom.css +0 -0
  455. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/doctools.js +0 -0
  456. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/documentation_options.js +0 -0
  457. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/file.png +0 -0
  458. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/Lato/lato-bold.eot +0 -0
  459. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/Lato/lato-bold.ttf +0 -0
  460. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/Lato/lato-bold.woff +0 -0
  461. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/Lato/lato-bold.woff2 +0 -0
  462. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  463. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  464. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  465. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  466. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/Lato/lato-italic.eot +0 -0
  467. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/Lato/lato-italic.ttf +0 -0
  468. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/Lato/lato-italic.woff +0 -0
  469. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/Lato/lato-italic.woff2 +0 -0
  470. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/Lato/lato-regular.eot +0 -0
  471. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/Lato/lato-regular.ttf +0 -0
  472. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/Lato/lato-regular.woff +0 -0
  473. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/Lato/lato-regular.woff2 +0 -0
  474. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  475. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  476. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  477. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  478. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  479. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  480. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  481. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  482. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/graphviz.css +0 -0
  483. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/jquery.js +0 -0
  484. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/js/badge_only.js +0 -0
  485. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/js/theme.js +0 -0
  486. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/js/versions.js +0 -0
  487. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/language_data.js +0 -0
  488. {spacr-1.0.5/docs/_images → spacr-1.0.7/docs/_static}/logo_spacr.png +0 -0
  489. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/minus.png +0 -0
  490. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/plus.png +0 -0
  491. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/pygments.css +0 -0
  492. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/searchtools.js +0 -0
  493. {spacr-1.0.5 → spacr-1.0.7}/docs/_static/sphinx_highlight.js +0 -0
  494. {spacr-1.0.5 → spacr-1.0.7}/docs/api/index.html +0 -0
  495. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/app_annotate/index.html +0 -0
  496. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/app_classify/index.html +0 -0
  497. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/app_make_masks/index.html +0 -0
  498. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/app_mask/index.html +0 -0
  499. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/app_measure/index.html +0 -0
  500. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/app_sequencing/index.html +0 -0
  501. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/app_umap/index.html +0 -0
  502. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/core/index.html +0 -0
  503. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/deep_spacr/index.html +0 -0
  504. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/gui/index.html +0 -0
  505. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/gui_core/index.html +0 -0
  506. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/gui_elements/index.html +0 -0
  507. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/gui_utils/index.html +0 -0
  508. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/index.html +0 -0
  509. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/io/index.html +0 -0
  510. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/logger/index.html +0 -0
  511. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/measure/index.html +0 -0
  512. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/ml/index.html +0 -0
  513. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/plot/index.html +0 -0
  514. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/sequencing/index.html +0 -0
  515. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/settings/index.html +0 -0
  516. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/sim/index.html +0 -0
  517. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/sp_stats/index.html +0 -0
  518. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/spacr_cellpose/index.html +0 -0
  519. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/submodules/index.html +0 -0
  520. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/timelapse/index.html +0 -0
  521. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/toxo/index.html +0 -0
  522. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/utils/index.html +0 -0
  523. {spacr-1.0.5 → spacr-1.0.7}/docs/api/spacr/version/index.html +0 -0
  524. {spacr-1.0.5 → spacr-1.0.7}/docs/genindex.html +0 -0
  525. {spacr-1.0.5 → spacr-1.0.7}/docs/index.html +0 -0
  526. {spacr-1.0.5 → spacr-1.0.7}/docs/objects.inv +0 -0
  527. {spacr-1.0.5 → spacr-1.0.7}/docs/py-modindex.html +0 -0
  528. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/font/open_sans/OFL.txt +0 -0
  529. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/font/open_sans/OpenSans-Italic-VariableFont_wdth,wght.ttf +0 -0
  530. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/font/open_sans/OpenSans-VariableFont_wdth,wght.ttf +0 -0
  531. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/font/open_sans/README.txt +0 -0
  532. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/font/open_sans/static/OpenSans-Bold.ttf +0 -0
  533. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/font/open_sans/static/OpenSans-BoldItalic.ttf +0 -0
  534. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/font/open_sans/static/OpenSans-Italic.ttf +0 -0
  535. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/font/open_sans/static/OpenSans-Light.ttf +0 -0
  536. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/font/open_sans/static/OpenSans-LightItalic.ttf +0 -0
  537. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/font/open_sans/static/OpenSans-Regular.ttf +0 -0
  538. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/font/open_sans/static/OpenSans-SemiBold.ttf +0 -0
  539. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/font/open_sans/static/OpenSans-SemiBoldItalic.ttf +0 -0
  540. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/icons/abort.png +0 -0
  541. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/icons/classify.png +0 -0
  542. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/icons/default.png +0 -0
  543. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/icons/download.png +0 -0
  544. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/icons/map_barcodes.png +0 -0
  545. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/icons/mask.png +0 -0
  546. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/icons/measure.png +0 -0
  547. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/icons/regression.png +0 -0
  548. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/icons/run.png +0 -0
  549. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/icons/settings.png +0 -0
  550. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/1_mask/gui/001_placeholder.png +0 -0
  551. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/1_mask/gui/002_placeholder.png +0 -0
  552. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/1_mask/gui/003_placeholder.png +0 -0
  553. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/1_mask/gui/004_placeholder.png +0 -0
  554. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/1_mask/notebook/img1.png +0 -0
  555. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/1_mask/notebook/img2.png +0 -0
  556. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/1_mask/notebook/img3.png +0 -0
  557. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/1_mask/notebook/img4.png +0 -0
  558. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/1_mask/notebook/img5.png +0 -0
  559. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/2_measure/gui/001_placeholder.png +0 -0
  560. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/2_measure/gui/002_placeholder.png +0 -0
  561. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/2_measure/gui/003_placeholder.png +0 -0
  562. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/2_measure/gui/004_placeholder.png +0 -0
  563. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/2_measure/notebook/img1.png +0 -0
  564. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/2_measure/notebook/img2.png +0 -0
  565. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/2_measure/notebook/img3.png +0 -0
  566. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/3_classify/gui/001_placeholder.png +0 -0
  567. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/3_classify/gui/002_placeholder.png +0 -0
  568. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/3_classify/gui/003_placeholder.png +0 -0
  569. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/3_classify/gui/004_placeholder.png +0 -0
  570. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/3_classify/notebook/img1.png +0 -0
  571. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/3_classify/notebook/img2.png +0 -0
  572. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/3_classify/notebook/img3.png +0 -0
  573. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/3_classify/notebook/img4.png +0 -0
  574. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/3_classify/notebook/img5.png +0 -0
  575. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/4_map_barcodes/gui/001_placeholder.png +0 -0
  576. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/4_map_barcodes/gui/002_placeholder.png +0 -0
  577. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/4_map_barcodes/gui/003_placeholder.png +0 -0
  578. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/4_map_barcodes/gui/004_placeholder.png +0 -0
  579. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/4_map_barcodes/notebook/img1.png +0 -0
  580. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/4_map_barcodes/notebook/img2.png +0 -0
  581. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/4_map_barcodes/notebook/img3.png +0 -0
  582. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/4_map_barcodes/notebook/img4.png +0 -0
  583. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/4_map_barcodes/notebook/img5.png +0 -0
  584. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/5_regression/gui/001_placeholder.png +0 -0
  585. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/5_regression/gui/002_placeholder.png +0 -0
  586. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/5_regression/gui/003_placeholder.png +0 -0
  587. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/5_regression/gui/004_placeholder.png +0 -0
  588. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/5_regression/notebook/img1.png +0 -0
  589. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/5_regression/notebook/img2.png +0 -0
  590. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/5_regression/notebook/img3.png +0 -0
  591. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/5_regression/notebook/img4.png +0 -0
  592. {spacr-1.0.5 → spacr-1.0.7}/docs/resources/tutorial/5_regression/notebook/img5.png +0 -0
  593. {spacr-1.0.5 → spacr-1.0.7}/docs/search.html +0 -0
  594. {spacr-1.0.5 → spacr-1.0.7}/docs/searchindex.js +0 -0
  595. {spacr-1.0.5 → spacr-1.0.7}/docs/source/_static/custom.css +0 -0
  596. {spacr-1.0.5/docs → spacr-1.0.7/docs/source}/_static/logo_spacr.png +0 -0
  597. {spacr-1.0.5 → spacr-1.0.7}/docs/source/conf.py +0 -0
  598. {spacr-1.0.5 → spacr-1.0.7}/docs/source/index.rst +0 -0
  599. {spacr-1.0.5 → spacr-1.0.7}/docs/tutorial/1_mask_gen_gui.html +0 -0
  600. {spacr-1.0.5 → spacr-1.0.7}/docs/tutorial/1_mask_gen_notebook.html +0 -0
  601. {spacr-1.0.5 → spacr-1.0.7}/docs/tutorial/2_measure_gui.html +0 -0
  602. {spacr-1.0.5 → spacr-1.0.7}/docs/tutorial/2_measure_notebook.html +0 -0
  603. {spacr-1.0.5 → spacr-1.0.7}/docs/tutorial/3_classify_gui.html +0 -0
  604. {spacr-1.0.5 → spacr-1.0.7}/docs/tutorial/3_classify_notebook.html +0 -0
  605. {spacr-1.0.5 → spacr-1.0.7}/docs/tutorial/4_map_barcodes_gui.html +0 -0
  606. {spacr-1.0.5 → spacr-1.0.7}/docs/tutorial/4_map_barcodes_notebook.html +0 -0
  607. {spacr-1.0.5 → spacr-1.0.7}/docs/tutorial/5_regression_gui.html +0 -0
  608. {spacr-1.0.5 → spacr-1.0.7}/docs/tutorial/5_regression_notebook.html +0 -0
  609. {spacr-1.0.5 → spacr-1.0.7}/docs/tutorial/index.html +0 -0
  610. {spacr-1.0.5 → spacr-1.0.7}/environment.yaml +0 -0
  611. {spacr-1.0.5 → spacr-1.0.7}/fonts/OpenSans-Regular.ttf +0 -0
  612. {spacr-1.0.5 → spacr-1.0.7}/pyproject.toml +0 -0
  613. {spacr-1.0.5 → spacr-1.0.7}/requirements.txt +0 -0
  614. {spacr-1.0.5 → spacr-1.0.7}/rtd_trigger.txt +0 -0
  615. {spacr-1.0.5 → spacr-1.0.7}/setup.cfg +0 -0
  616. {spacr-1.0.5 → spacr-1.0.7}/setup_docs.sh +0 -0
  617. {spacr-1.0.5 → spacr-1.0.7}/spacr/__main__.py +0 -0
  618. {spacr-1.0.5 → spacr-1.0.7}/spacr/app_classify.py +0 -0
  619. {spacr-1.0.5 → spacr-1.0.7}/spacr/app_mask.py +0 -0
  620. {spacr-1.0.5 → spacr-1.0.7}/spacr/app_measure.py +0 -0
  621. {spacr-1.0.5 → spacr-1.0.7}/spacr/app_sequencing.py +0 -0
  622. {spacr-1.0.5 → spacr-1.0.7}/spacr/logger.py +0 -0
  623. {spacr-1.0.5 → spacr-1.0.7}/spacr/measure.py +0 -0
  624. {spacr-1.0.5 → spacr-1.0.7}/spacr/ml.py +0 -0
  625. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/data/toxoplasma_metadata.csv +0 -0
  626. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/font/open_sans/OFL.txt +0 -0
  627. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/font/open_sans/OpenSans-Italic-VariableFont_wdth,wght.ttf +0 -0
  628. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/font/open_sans/OpenSans-VariableFont_wdth,wght.ttf +0 -0
  629. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/font/open_sans/README.txt +0 -0
  630. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/font/open_sans/static/OpenSans-Bold.ttf +0 -0
  631. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/font/open_sans/static/OpenSans-BoldItalic.ttf +0 -0
  632. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/font/open_sans/static/OpenSans-Italic.ttf +0 -0
  633. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/font/open_sans/static/OpenSans-Light.ttf +0 -0
  634. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/font/open_sans/static/OpenSans-LightItalic.ttf +0 -0
  635. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/font/open_sans/static/OpenSans-Regular.ttf +0 -0
  636. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/font/open_sans/static/OpenSans-SemiBold.ttf +0 -0
  637. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/font/open_sans/static/OpenSans-SemiBoldItalic.ttf +0 -0
  638. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/abort.png +0 -0
  639. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/annotate.png +0 -0
  640. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/cellpose_all.png +0 -0
  641. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/cellpose_masks.png +0 -0
  642. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/classify.png +0 -0
  643. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/convert.png +0 -0
  644. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/default.png +0 -0
  645. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/download.png +0 -0
  646. /spacr-1.0.5/docs/source/_static/logo_spacr.png → /spacr-1.0.7/spacr/resources/icons/logo_spacr_v1.png +0 -0
  647. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/make_masks.png +0 -0
  648. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/map_barcodes.png +0 -0
  649. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/mask.png +0 -0
  650. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/measure.png +0 -0
  651. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/ml_analyze.png +0 -0
  652. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/plaque.png +0 -0
  653. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/recruitment.png +0 -0
  654. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/regression.png +0 -0
  655. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/run.png +0 -0
  656. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/sequencing.png +0 -0
  657. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/settings.png +0 -0
  658. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/train_cellpose.png +0 -0
  659. {spacr-1.0.5 → spacr-1.0.7}/spacr/resources/icons/umap.png +0 -0
  660. {spacr-1.0.5 → spacr-1.0.7}/spacr/sequencing.py +0 -0
  661. {spacr-1.0.5 → spacr-1.0.7}/spacr/sp_stats.py +0 -0
  662. {spacr-1.0.5 → spacr-1.0.7}/spacr/submodules.py +0 -0
  663. {spacr-1.0.5 → spacr-1.0.7}/spacr/timelapse.py +0 -0
  664. {spacr-1.0.5 → spacr-1.0.7}/spacr/toxo.py +0 -0
  665. {spacr-1.0.5 → spacr-1.0.7}/spacr/version.py +0 -0
  666. {spacr-1.0.5 → spacr-1.0.7}/spacr.egg-info/dependency_links.txt +0 -0
  667. {spacr-1.0.5 → spacr-1.0.7}/spacr.egg-info/requires.txt +0 -0
  668. {spacr-1.0.5 → spacr-1.0.7}/spacr.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: spacr
3
- Version: 1.0.5
3
+ Version: 1.0.7
4
4
  Summary: Spatial phenotype analysis of crisp screens (SpaCr)
5
5
  Home-page: https://github.com/EinarOlafsson/spacr
6
6
  Author: Einar Birnir Olafsson
Binary file
@@ -72,7 +72,7 @@ dependencies = [
72
72
  'huggingface-hub>=0.24.0,<0.25'
73
73
  ]
74
74
 
75
- VERSION = "1.0.5"
75
+ VERSION = "1.0.7"
76
76
 
77
77
  setup(
78
78
  name="spacr",
@@ -91,10 +91,7 @@ setup(
91
91
  'console_scripts': [
92
92
  'mask=spacr.app_mask:start_mask_app',
93
93
  'measure=spacr.app_measure:start_measure_app',
94
- 'make_masks=spacr.app_make_masks:gui_make_masks',
95
- 'annotate=spacr.app_annotate:gui_annotate',
96
94
  'classify=spacr.app_classify:start_classify_app',
97
- 'sim=spacr.app_sim:gui_sim',
98
95
  'spacr=spacr.gui:gui_app',
99
96
  ],
100
97
  },
@@ -15,21 +15,17 @@ from . import utils
15
15
  from . import settings
16
16
  from . import plot
17
17
  from . import measure
18
- from . import sim
19
18
  from . import sequencing
20
19
  from . import timelapse
21
20
  from . import deep_spacr
22
- from . import app_annotate
23
21
  from . import gui_utils
24
22
  from . import gui_elements
25
23
  from . import gui_core
26
24
  from . import gui
27
- from . import app_make_masks
28
25
  from . import app_mask
29
26
  from . import app_measure
30
27
  from . import app_classify
31
28
  from . import app_sequencing
32
- from . import app_umap
33
29
  from . import submodules
34
30
  from . import ml
35
31
  from . import toxo
@@ -44,23 +40,18 @@ __all__ = [
44
40
  "settings",
45
41
  "plot",
46
42
  "measure",
47
- "sim",
48
43
  "sequencing",
49
44
  "timelapse",
50
45
  "deep_spacr",
51
- "app_annotate",
52
46
  "gui_utils",
53
47
  "gui_elements",
54
48
  "gui_core",
55
49
  "gui",
56
- "app_make_masks",
57
50
  "app_mask",
58
51
  "app_measure",
59
52
  "app_classify",
60
53
  "app_sequencing",
61
- "app_umap",
62
54
  "submodules",
63
- "openai",
64
55
  "ml",
65
56
  "toxo",
66
57
  "spacr_cellpose",
@@ -1,7 +1,6 @@
1
1
  import os, gc, torch, time, random
2
2
  import numpy as np
3
3
  import pandas as pd
4
- import matplotlib.pyplot as plt
5
4
  from IPython.display import display
6
5
 
7
6
  import warnings
@@ -238,6 +237,7 @@ def generate_cellpose_masks(src, settings, object_type):
238
237
  model_name = object_settings['model_name']
239
238
 
240
239
  cellpose_channels = _get_cellpose_channels(src, settings['nucleus_channel'], settings['pathogen_channel'], settings['cell_channel'])
240
+
241
241
  if settings['verbose']:
242
242
  print(cellpose_channels)
243
243
 
@@ -448,362 +448,6 @@ def generate_cellpose_masks(src, settings, object_type):
448
448
  torch.cuda.empty_cache()
449
449
  return
450
450
 
451
- def generate_image_umap(settings={}):
452
- """
453
- Generate UMAP or tSNE embedding and visualize the data with clustering.
454
-
455
- Parameters:
456
- settings (dict): Dictionary containing the following keys:
457
- src (str): Source directory containing the data.
458
- row_limit (int): Limit the number of rows to process.
459
- tables (list): List of table names to read from the database.
460
- visualize (str): Visualization type.
461
- image_nr (int): Number of images to display.
462
- dot_size (int): Size of dots in the scatter plot.
463
- n_neighbors (int): Number of neighbors for UMAP.
464
- figuresize (int): Size of the figure.
465
- black_background (bool): Whether to use a black background.
466
- remove_image_canvas (bool): Whether to remove the image canvas.
467
- plot_outlines (bool): Whether to plot outlines.
468
- plot_points (bool): Whether to plot points.
469
- smooth_lines (bool): Whether to smooth lines.
470
- verbose (bool): Whether to print verbose output.
471
- embedding_by_controls (bool): Whether to use embedding from controls.
472
- col_to_compare (str): Column to compare for control-based embedding.
473
- pos (str): Positive control value.
474
- neg (str): Negative control value.
475
- clustering (str): Clustering method ('DBSCAN' or 'KMeans').
476
- exclude (list): List of columns to exclude from the analysis.
477
- plot_images (bool): Whether to plot images.
478
- reduction_method (str): Dimensionality reduction method ('UMAP' or 'tSNE').
479
- save_figure (bool): Whether to save the figure as a PDF.
480
-
481
- Returns:
482
- pd.DataFrame: DataFrame with the original data and an additional column 'cluster' containing the cluster identity.
483
- """
484
-
485
- from .io import _read_and_join_tables
486
- from .utils import get_db_paths, preprocess_data, reduction_and_clustering, remove_noise, generate_colors, correct_paths, plot_embedding, plot_clusters_grid, cluster_feature_analysis, map_condition
487
- from .settings import set_default_umap_image_settings
488
- settings = set_default_umap_image_settings(settings)
489
-
490
- if isinstance(settings['src'], str):
491
- settings['src'] = [settings['src']]
492
-
493
- if settings['plot_images'] is False:
494
- settings['black_background'] = False
495
-
496
- if settings['color_by']:
497
- settings['remove_cluster_noise'] = False
498
- settings['plot_outlines'] = False
499
- settings['smooth_lines'] = False
500
-
501
- print(f'Generating Image UMAP ...')
502
- settings_df = pd.DataFrame(list(settings.items()), columns=['Key', 'Value'])
503
- settings_dir = os.path.join(settings['src'][0],'settings')
504
- settings_csv = os.path.join(settings_dir,'embedding_settings.csv')
505
- os.makedirs(settings_dir, exist_ok=True)
506
- settings_df.to_csv(settings_csv, index=False)
507
- display(settings_df)
508
-
509
- db_paths = get_db_paths(settings['src'])
510
- tables = settings['tables'] + ['png_list']
511
- all_df = pd.DataFrame()
512
-
513
- for i,db_path in enumerate(db_paths):
514
- df = _read_and_join_tables(db_path, table_names=tables)
515
- df, image_paths_tmp = correct_paths(df, settings['src'][i])
516
- all_df = pd.concat([all_df, df], axis=0)
517
- #image_paths.extend(image_paths_tmp)
518
-
519
- all_df['cond'] = all_df['columnID'].apply(map_condition, neg=settings['neg'], pos=settings['pos'], mix=settings['mix'])
520
-
521
- if settings['exclude_conditions']:
522
- if isinstance(settings['exclude_conditions'], str):
523
- settings['exclude_conditions'] = [settings['exclude_conditions']]
524
- row_count_before = len(all_df)
525
- all_df = all_df[~all_df['cond'].isin(settings['exclude_conditions'])]
526
- if settings['verbose']:
527
- print(f'Excluded {row_count_before - len(all_df)} rows after excluding: {settings["exclude_conditions"]}, rows left: {len(all_df)}')
528
-
529
- if settings['row_limit'] is not None:
530
- all_df = all_df.sample(n=settings['row_limit'], random_state=42)
531
-
532
- image_paths = all_df['png_path'].to_list()
533
-
534
- if settings['embedding_by_controls']:
535
-
536
- # Extract and reset the index for the column to compare
537
- col_to_compare = all_df[settings['col_to_compare']].reset_index(drop=True)
538
- print(col_to_compare)
539
- #if settings['only_top_features']:
540
- # column_list = None
541
-
542
- # Preprocess the data to obtain numeric data
543
- numeric_data = preprocess_data(all_df, settings['filter_by'], settings['remove_highly_correlated'], settings['log_data'], settings['exclude'])
544
-
545
- # Convert numeric_data back to a DataFrame to align with col_to_compare
546
- numeric_data_df = pd.DataFrame(numeric_data)
547
-
548
- # Ensure numeric_data_df and col_to_compare are properly aligned
549
- numeric_data_df = numeric_data_df.reset_index(drop=True)
550
-
551
- # Assign the column back to numeric_data_df
552
- numeric_data_df[settings['col_to_compare']] = col_to_compare
553
-
554
- # Subset the dataframe based on specified column values for controls
555
- positive_control_df = numeric_data_df[numeric_data_df[settings['col_to_compare']] == settings['pos']].copy()
556
- negative_control_df = numeric_data_df[numeric_data_df[settings['col_to_compare']] == settings['neg']].copy()
557
- control_numeric_data_df = pd.concat([positive_control_df, negative_control_df])
558
-
559
- # Drop the comparison column from numeric_data_df and control_numeric_data_df
560
- numeric_data_df = numeric_data_df.drop(columns=[settings['col_to_compare']])
561
- control_numeric_data_df = control_numeric_data_df.drop(columns=[settings['col_to_compare']])
562
-
563
- # Convert numeric_data_df and control_numeric_data_df back to numpy arrays
564
- numeric_data = numeric_data_df.values
565
- control_numeric_data = control_numeric_data_df.values
566
-
567
- # Train the reducer on control data
568
- _, _, reducer = reduction_and_clustering(control_numeric_data, settings['n_neighbors'], settings['min_dist'], settings['metric'], settings['eps'], settings['min_samples'], settings['clustering'], settings['reduction_method'], settings['verbose'], n_jobs=settings['n_jobs'], mode='fit', model=False)
569
-
570
- # Apply the trained reducer to the entire dataset
571
- numeric_data = preprocess_data(all_df, settings['filter_by'], settings['remove_highly_correlated'], settings['log_data'], settings['exclude'])
572
- embedding, labels, _ = reduction_and_clustering(numeric_data, settings['n_neighbors'], settings['min_dist'], settings['metric'], settings['eps'], settings['min_samples'], settings['clustering'], settings['reduction_method'], settings['verbose'], n_jobs=settings['n_jobs'], mode=None, model=reducer)
573
-
574
- else:
575
- if settings['resnet_features']:
576
- # placeholder for resnet features, not implemented yet
577
- pass
578
- #numeric_data, embedding, labels = generate_umap_from_images(image_paths, settings['n_neighbors'], settings['min_dist'], settings['metric'], settings['clustering'], settings['eps'], settings['min_samples'], settings['n_jobs'], settings['verbose'])
579
- else:
580
- # Apply the trained reducer to the entire dataset
581
- numeric_data = preprocess_data(all_df, settings['filter_by'], settings['remove_highly_correlated'], settings['log_data'], settings['exclude'])
582
- embedding, labels, _ = reduction_and_clustering(numeric_data, settings['n_neighbors'], settings['min_dist'], settings['metric'], settings['eps'], settings['min_samples'], settings['clustering'], settings['reduction_method'], settings['verbose'], n_jobs=settings['n_jobs'])
583
-
584
- if settings['remove_cluster_noise']:
585
- # Remove noise from the clusters (removes -1 labels from DBSCAN)
586
- embedding, labels = remove_noise(embedding, labels)
587
-
588
- # Plot the results
589
- if settings['color_by']:
590
- if settings['embedding_by_controls']:
591
- labels = all_df[settings['color_by']]
592
- else:
593
- labels = all_df[settings['color_by']]
594
-
595
- # Generate colors for the clusters
596
- colors = generate_colors(len(np.unique(labels)), settings['black_background'])
597
-
598
- # Plot the embedding
599
- umap_plt = plot_embedding(embedding, image_paths, labels, settings['image_nr'], settings['img_zoom'], colors, settings['plot_by_cluster'], settings['plot_outlines'], settings['plot_points'], settings['plot_images'], settings['smooth_lines'], settings['black_background'], settings['figuresize'], settings['dot_size'], settings['remove_image_canvas'], settings['verbose'])
600
- if settings['plot_cluster_grids'] and settings['plot_images']:
601
- grid_plt = plot_clusters_grid(embedding, labels, settings['image_nr'], image_paths, colors, settings['figuresize'], settings['black_background'], settings['verbose'])
602
-
603
- # Save figure as PDF if required
604
- if settings['save_figure']:
605
- results_dir = os.path.join(settings['src'][0], 'results')
606
- os.makedirs(results_dir, exist_ok=True)
607
- reduction_method = settings['reduction_method'].upper()
608
- embedding_path = os.path.join(results_dir, f'{reduction_method}_embedding.pdf')
609
- umap_plt.savefig(embedding_path, format='pdf')
610
- print(f'Saved {reduction_method} embedding to {embedding_path} and grid to {embedding_path}')
611
- if settings['plot_cluster_grids'] and settings['plot_images']:
612
- grid_path = os.path.join(results_dir, f'{reduction_method}_grid.pdf')
613
- grid_plt.savefig(grid_path, format='pdf')
614
- print(f'Saved {reduction_method} embedding to {embedding_path} and grid to {grid_path}')
615
-
616
- # Add cluster labels to the dataframe
617
- if len(labels) > 0:
618
- all_df['cluster'] = labels
619
- else:
620
- all_df['cluster'] = 1 # Assign a default cluster label
621
- print("No clusters found. Consider reducing 'min_samples' or increasing 'eps' for DBSCAN.")
622
-
623
- # Save the results to a CSV file
624
- results_dir = os.path.join(settings['src'][0], 'results')
625
- results_csv = os.path.join(results_dir,'embedding_results.csv')
626
- os.makedirs(results_dir, exist_ok=True)
627
- all_df.to_csv(results_csv, index=False)
628
- print(f'Results saved to {results_csv}')
629
-
630
- if settings['analyze_clusters']:
631
- combined_results = cluster_feature_analysis(all_df)
632
- results_dir = os.path.join(settings['src'][0], 'results')
633
- cluster_results_csv = os.path.join(results_dir,'cluster_results.csv')
634
- os.makedirs(results_dir, exist_ok=True)
635
- combined_results.to_csv(cluster_results_csv, index=False)
636
- print(f'Cluster results saved to {cluster_results_csv}')
637
-
638
- return all_df
639
-
640
- def reducer_hyperparameter_search(settings={}, reduction_params=None, dbscan_params=None, kmeans_params=None, save=False):
641
- """
642
- Perform a hyperparameter search for UMAP or tSNE on the given data.
643
-
644
- Parameters:
645
- settings (dict): Dictionary containing the following keys:
646
- src (str): Source directory containing the data.
647
- row_limit (int): Limit the number of rows to process.
648
- tables (list): List of table names to read from the database.
649
- filter_by (str): Column to filter the data.
650
- sample_size (int): Number of samples to use for the hyperparameter search.
651
- remove_highly_correlated (bool): Whether to remove highly correlated columns.
652
- log_data (bool): Whether to log transform the data.
653
- verbose (bool): Whether to print verbose output.
654
- reduction_method (str): Dimensionality reduction method ('UMAP' or 'tSNE').
655
- reduction_params (list): List of dictionaries containing hyperparameters to test for the reduction method.
656
- dbscan_params (list): List of dictionaries containing DBSCAN hyperparameters to test.
657
- kmeans_params (list): List of dictionaries containing KMeans hyperparameters to test.
658
- pointsize (int): Size of the points in the scatter plot.
659
- save (bool): Whether to save the resulting plot as a file.
660
-
661
- Returns:
662
- None
663
- """
664
-
665
- from .io import _read_and_join_tables
666
- from .utils import get_db_paths, preprocess_data, search_reduction_and_clustering, generate_colors, map_condition
667
- from .settings import set_default_umap_image_settings
668
-
669
- settings = set_default_umap_image_settings(settings)
670
- pointsize = settings['dot_size']
671
- if isinstance(dbscan_params, dict):
672
- dbscan_params = [dbscan_params]
673
-
674
- if isinstance(kmeans_params, dict):
675
- kmeans_params = [kmeans_params]
676
-
677
- if isinstance(reduction_params, dict):
678
- reduction_params = [reduction_params]
679
-
680
- # Determine reduction method based on the keys in reduction_param
681
- if any('n_neighbors' in param for param in reduction_params):
682
- reduction_method = 'umap'
683
- elif any('perplexity' in param for param in reduction_params):
684
- reduction_method = 'tsne'
685
- elif any('perplexity' in param for param in reduction_params) and any('n_neighbors' in param for param in reduction_params):
686
- raise ValueError("Reduction parameters must include 'n_neighbors' for UMAP or 'perplexity' for tSNE, not both.")
687
-
688
- if settings['reduction_method'].lower() != reduction_method:
689
- settings['reduction_method'] = reduction_method
690
- print(f'Changed reduction method to {reduction_method} based on the provided parameters.')
691
-
692
- if settings['verbose']:
693
- display(pd.DataFrame(list(settings.items()), columns=['Key', 'Value']))
694
-
695
- db_paths = get_db_paths(settings['src'])
696
-
697
- tables = settings['tables']
698
- all_df = pd.DataFrame()
699
- for db_path in db_paths:
700
- df = _read_and_join_tables(db_path, table_names=tables)
701
- all_df = pd.concat([all_df, df], axis=0)
702
-
703
- all_df['cond'] = all_df['columnID'].apply(map_condition, neg=settings['neg'], pos=settings['pos'], mix=settings['mix'])
704
-
705
- if settings['exclude_conditions']:
706
- if isinstance(settings['exclude_conditions'], str):
707
- settings['exclude_conditions'] = [settings['exclude_conditions']]
708
- row_count_before = len(all_df)
709
- all_df = all_df[~all_df['cond'].isin(settings['exclude_conditions'])]
710
- if settings['verbose']:
711
- print(f'Excluded {row_count_before - len(all_df)} rows after excluding: {settings["exclude_conditions"]}, rows left: {len(all_df)}')
712
-
713
- if settings['row_limit'] is not None:
714
- all_df = all_df.sample(n=settings['row_limit'], random_state=42)
715
-
716
- numeric_data = preprocess_data(all_df, settings['filter_by'], settings['remove_highly_correlated'], settings['log_data'], settings['exclude'])
717
-
718
- # Combine DBSCAN and KMeans parameters
719
- clustering_params = []
720
- if dbscan_params:
721
- for param in dbscan_params:
722
- param['method'] = 'dbscan'
723
- clustering_params.append(param)
724
- if kmeans_params:
725
- for param in kmeans_params:
726
- param['method'] = 'kmeans'
727
- clustering_params.append(param)
728
-
729
- print('Testing paramiters:', reduction_params)
730
- print('Testing clustering paramiters:', clustering_params)
731
-
732
- # Calculate the grid size
733
- grid_rows = len(reduction_params)
734
- grid_cols = len(clustering_params)
735
-
736
- fig_width = grid_cols*10
737
- fig_height = grid_rows*10
738
-
739
- fig, axs = plt.subplots(grid_rows, grid_cols, figsize=(fig_width, fig_height))
740
-
741
- # Make sure axs is always an array of axes
742
- axs = np.atleast_1d(axs)
743
-
744
- # Iterate through the Cartesian product of reduction and clustering hyperparameters
745
- for i, reduction_param in enumerate(reduction_params):
746
- for j, clustering_param in enumerate(clustering_params):
747
- if len(clustering_params) <= 1:
748
- axs[i].axis('off')
749
- ax = axs[i]
750
- elif len(reduction_params) <= 1:
751
- axs[j].axis('off')
752
- ax = axs[j]
753
- else:
754
- ax = axs[i, j]
755
-
756
- # Perform dimensionality reduction and clustering
757
- if settings['reduction_method'].lower() == 'umap':
758
- n_neighbors = reduction_param.get('n_neighbors', 15)
759
-
760
- if isinstance(n_neighbors, float):
761
- n_neighbors = int(n_neighbors * len(numeric_data))
762
-
763
- min_dist = reduction_param.get('min_dist', 0.1)
764
- embedding, labels = search_reduction_and_clustering(numeric_data, n_neighbors, min_dist, settings['metric'],
765
- clustering_param.get('eps', 0.5), clustering_param.get('min_samples', 5),
766
- clustering_param['method'], settings['reduction_method'], settings['verbose'], reduction_param, n_jobs=settings['n_jobs'])
767
-
768
- elif settings['reduction_method'].lower() == 'tsne':
769
- perplexity = reduction_param.get('perplexity', 30)
770
-
771
- if isinstance(perplexity, float):
772
- perplexity = int(perplexity * len(numeric_data))
773
-
774
- embedding, labels = search_reduction_and_clustering(numeric_data, perplexity, 0.1, settings['metric'],
775
- clustering_param.get('eps', 0.5), clustering_param.get('min_samples', 5),
776
- clustering_param['method'], settings['reduction_method'], settings['verbose'], reduction_param, n_jobs=settings['n_jobs'])
777
-
778
- else:
779
- raise ValueError(f"Unsupported reduction method: {settings['reduction_method']}. Supported methods are 'UMAP' and 'tSNE'")
780
-
781
- # Plot the results
782
- if settings['color_by']:
783
- unique_groups = all_df[settings['color_by']].unique()
784
- colors = generate_colors(len(unique_groups), False)
785
- for group, color in zip(unique_groups, colors):
786
- indices = all_df[settings['color_by']] == group
787
- ax.scatter(embedding[indices, 0], embedding[indices, 1], s=pointsize, label=f"{group}", color=color)
788
- else:
789
- unique_labels = np.unique(labels)
790
- colors = generate_colors(len(unique_labels), False)
791
- for label, color in zip(unique_labels, colors):
792
- ax.scatter(embedding[labels == label, 0], embedding[labels == label, 1], s=pointsize, label=f"Cluster {label}", color=color)
793
-
794
- ax.set_title(f"{settings['reduction_method']} {reduction_param}\n{clustering_param['method']} {clustering_param}")
795
- ax.legend()
796
-
797
- plt.tight_layout()
798
- if save:
799
- results_dir = os.path.join(settings['src'], 'results')
800
- os.makedirs(results_dir, exist_ok=True)
801
- plt.savefig(os.path.join(results_dir, 'hyperparameter_search.pdf'))
802
- else:
803
- plt.show()
804
-
805
- return
806
-
807
451
  def generate_screen_graphs(settings):
808
452
  """
809
453
  Generate screen graphs for different measurements in a given source directory.
@@ -1,10 +1,8 @@
1
- import os, torch, time, gc, datetime, cv2
1
+ import os, torch, time, gc, datetime
2
2
  torch.backends.cudnn.benchmark = True
3
-
4
3
  import numpy as np
5
4
  import pandas as pd
6
5
  from torch.optim import Adagrad, AdamW
7
- from torch.autograd import grad
8
6
  from torch.optim.lr_scheduler import StepLR
9
7
  import torch.nn.functional as F
10
8
  import matplotlib.pyplot as plt
@@ -4,6 +4,7 @@ from multiprocessing import set_start_method
4
4
  from .gui_elements import spacrButton, create_menu_bar, set_dark_style
5
5
  from .gui_core import initiate_root
6
6
  from screeninfo import get_monitors
7
+ import webbrowser
7
8
 
8
9
  class MainApp(tk.Tk):
9
10
  def __init__(self, default_app=None):
@@ -22,6 +23,7 @@ class MainApp(tk.Tk):
22
23
  for monitor in get_monitors():
23
24
  if monitor.x <= x < monitor.x + monitor.width and monitor.y <= y < monitor.y + monitor.height:
24
25
  width = monitor.width
26
+ self.width = width
25
27
  height = monitor.height
26
28
  break
27
29
  else:
@@ -42,22 +44,15 @@ class MainApp(tk.Tk):
42
44
  self.main_gui_apps = {
43
45
  "Mask": (lambda frame: initiate_root(self, 'mask'), "Generate cellpose masks for cells, nuclei and pathogen images."),
44
46
  "Measure": (lambda frame: initiate_root(self, 'measure'), "Measure single object intensity and morphological feature. Crop and save single object image"),
45
- "Annotate": (lambda frame: initiate_root(self, 'annotate'), "Annotation single object images on a grid. Annotations are saved to database."),
46
- "Make Masks": (lambda frame: initiate_root(self, 'make_masks'), "Adjust pre-existing Cellpose models to your specific dataset for improved performance"),
47
47
  "Classify": (lambda frame: initiate_root(self, 'classify'), "Train Torch Convolutional Neural Networks (CNNs) or Transformers to classify single object images."),
48
48
  }
49
49
 
50
50
  self.additional_gui_apps = {
51
- "Umap": (lambda frame: initiate_root(self, 'umap'), "Generate UMAP embeddings with datapoints represented as images."),
52
- "Train Cellpose": (lambda frame: initiate_root(self, 'train_cellpose'), "Train custom Cellpose models."),
53
51
  "ML Analyze": (lambda frame: initiate_root(self, 'ml_analyze'), "Machine learning analysis of data."),
54
- "Cellpose Masks": (lambda frame: initiate_root(self, 'cellpose_masks'), "Generate Cellpose masks."),
55
- "Cellpose All": (lambda frame: initiate_root(self, 'cellpose_all'), "Run Cellpose on all images."),
56
52
  "Map Barcodes": (lambda frame: initiate_root(self, 'map_barcodes'), "Map barcodes to data."),
57
53
  "Regression": (lambda frame: initiate_root(self, 'regression'), "Perform regression analysis."),
58
54
  "Recruitment": (lambda frame: initiate_root(self, 'recruitment'), "Analyze recruitment data."),
59
55
  "Activation": (lambda frame: initiate_root(self, 'activation'), "Generate activation maps of computer vision models and measure channel-activation correlation."),
60
- "Plaque": (lambda frame: initiate_root(self, 'analyze_plaques'), "Analyze plaque data.")
61
56
  }
62
57
 
63
58
  self.selected_app = tk.StringVar()
@@ -88,6 +83,13 @@ class MainApp(tk.Tk):
88
83
  set_dark_style(ttk.Style(), containers=[self.content_frame, self.inner_frame])
89
84
 
90
85
  self.create_startup_screen()
86
+
87
+ def _update_wraplength(self, event):
88
+ if self.description_label.winfo_exists():
89
+ # Use the actual width of the inner_frame as a proxy for full width
90
+ available_width = self.inner_frame.winfo_width()
91
+ if available_width > 0:
92
+ self.description_label.config(wraplength=int(available_width * 0.9)) # or 0.9
91
93
 
92
94
  def create_startup_screen(self):
93
95
  self.clear_frame(self.inner_frame)
@@ -99,18 +101,30 @@ class MainApp(tk.Tk):
99
101
  additional_buttons_frame = tk.Frame(self.inner_frame)
100
102
  additional_buttons_frame.pack(pady=10)
101
103
  set_dark_style(ttk.Style(), containers=[additional_buttons_frame])
102
-
103
- description_frame = tk.Frame(self.inner_frame, height=70)
104
+
105
+ description_frame = tk.Frame(self.inner_frame)
104
106
  description_frame.pack(fill=tk.X, pady=10)
105
- description_frame.pack_propagate(False)
107
+ description_frame.columnconfigure(0, weight=1)
108
+
106
109
  set_dark_style(ttk.Style(), containers=[description_frame])
110
+ style_out = set_dark_style(ttk.Style())
111
+ font_loader = style_out['font_loader']
112
+ font_size = style_out['font_size']
113
+
114
+ self.description_label = tk.Label( description_frame, text="", wraplength=int(self.width * 0.9), justify="center", font=font_loader.get_font(size=font_size), fg=self.color_settings['fg_color'], bg=self.color_settings['bg_color'])
115
+
116
+ # Pack it without expanding
117
+ self.description_label.pack(pady=10)
107
118
 
108
- self.description_label = tk.Label(description_frame, text="", wraplength=800, justify="center", font=('Helvetica', 12), fg=self.color_settings['fg_color'], bg=self.color_settings['bg_color'])
109
- self.description_label.pack(fill=tk.BOTH, pady=10)
110
-
111
- logo_button = spacrButton(main_buttons_frame, text="SpaCr", command=lambda: self.load_app("logo_spacr", initiate_root), icon_name="logo_spacr", size=100, show_text=False)
119
+ # Force character width and center it
120
+ self.description_label.configure(width=int(self.width * 0.5 // 7))
121
+ self.description_label.pack_configure(anchor='center')
122
+
123
+ #logo_button = spacrButton(main_buttons_frame, text="SpaCR", command=lambda: self.load_app("logo_spacr", initiate_root), icon_name="logo_spacr", size=100, show_text=False)
124
+ logo_button = spacrButton(main_buttons_frame,text="SpaCR",command=lambda: webbrowser.open_new("https://einarolafsson.github.io/spacr/tutorial/"),icon_name="logo_spacr",size=100,show_text=False)
125
+
112
126
  logo_button.grid(row=0, column=0, padx=5, pady=5)
113
- self.main_buttons[logo_button] = "SpaCr provides a flexible toolset to extract single-cell images and measurements from high-content cell painting experiments, train deep-learning models to classify cellular/subcellular phenotypes, simulate, and analyze pooled CRISPR-Cas9 imaging screens."
127
+ self.main_buttons[logo_button] = "spaCR provides a flexible toolset to extract single-cell images and measurements from high-content cell painting experiments, train deep-learning models to classify cellular/subcellular phenotypes, simulate, and analyze pooled CRISPR-Cas9 imaging screens. Click to open the spaCR tutorial in your browser."
114
128
 
115
129
  for i, (app_name, app_data) in enumerate(self.main_gui_apps.items()):
116
130
  app_func, app_desc = app_data
@@ -125,6 +139,7 @@ class MainApp(tk.Tk):
125
139
  self.additional_buttons[button] = app_desc
126
140
 
127
141
  self.update_description()
142
+ self.inner_frame.bind("<Configure>", self._update_wraplength)
128
143
 
129
144
  def update_description(self):
130
145
  for button, desc in {**self.main_buttons, **self.additional_buttons}.items():
@@ -1266,36 +1266,29 @@ def initiate_root(parent, settings_type='mask'):
1266
1266
  fig_queue = Queue()
1267
1267
  parent_frame, vertical_container, horizontal_container, settings_container = setup_frame(parent_frame)
1268
1268
 
1269
- if settings_type == 'annotate':
1270
- from .app_annotate import initiate_annotation_app
1271
- initiate_annotation_app(horizontal_container)
1272
- elif settings_type == 'make_masks':
1273
- from .app_make_masks import initiate_make_mask_app
1274
- initiate_make_mask_app(horizontal_container)
1269
+ scrollable_frame, vars_dict = setup_settings_panel(settings_container, settings_type)
1270
+ print('setup_settings_panel')
1271
+ canvas, canvas_widget = setup_plot_section(vertical_container, settings_type)
1272
+ console_output, _ = setup_console(vertical_container) #, chatbot)
1273
+ button_scrollable_frame, btn_col = setup_button_section(horizontal_container, settings_type)
1274
+
1275
+ if num_cores > 12:
1276
+ _, usage_bars, btn_col = setup_usage_panel(horizontal_container, btn_col, uppdate_frequency)
1275
1277
  else:
1276
- scrollable_frame, vars_dict = setup_settings_panel(settings_container, settings_type)
1277
- print('setup_settings_panel')
1278
- canvas, canvas_widget = setup_plot_section(vertical_container, settings_type)
1279
- console_output, _ = setup_console(vertical_container) #, chatbot)
1280
- button_scrollable_frame, btn_col = setup_button_section(horizontal_container, settings_type)
1281
-
1282
- if num_cores > 12:
1283
- _, usage_bars, btn_col = setup_usage_panel(horizontal_container, btn_col, uppdate_frequency)
1284
- else:
1285
- usage_bars = []
1278
+ usage_bars = []
1286
1279
 
1287
- set_globals(thread_control, q, console_output, parent_frame, vars_dict, canvas, canvas_widget, scrollable_frame, fig_queue, progress_bar, usage_bars)
1288
- description_text = descriptions.get(settings_type, "No description available for this module.")
1289
-
1290
- q.put(f"Console")
1291
- q.put(f" ")
1292
- q.put(description_text)
1293
-
1294
- process_console_queue()
1295
- process_fig_queue()
1296
- create_menu_bar(parent)
1297
- after_id = parent_window.after(uppdate_frequency, lambda: main_thread_update_function(parent_window, q, fig_queue, canvas_widget))
1298
- parent_window.after_tasks.append(after_id)
1280
+ set_globals(thread_control, q, console_output, parent_frame, vars_dict, canvas, canvas_widget, scrollable_frame, fig_queue, progress_bar, usage_bars)
1281
+ description_text = descriptions.get(settings_type, "No description available for this module.")
1282
+
1283
+ q.put(f"Console")
1284
+ q.put(f" ")
1285
+ q.put(description_text)
1286
+
1287
+ process_console_queue()
1288
+ process_fig_queue()
1289
+ create_menu_bar(parent)
1290
+ after_id = parent_window.after(uppdate_frequency, lambda: main_thread_update_function(parent_window, q, fig_queue, canvas_widget))
1291
+ parent_window.after_tasks.append(after_id)
1299
1292
 
1300
1293
  print("Root initialization complete")
1301
1294
  return parent_frame, vars_dict