spacr 0.3.43__tar.gz → 0.3.45__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 (278) hide show
  1. {spacr-0.3.43/spacr.egg-info → spacr-0.3.45}/PKG-INFO +1 -1
  2. {spacr-0.3.43 → spacr-0.3.45}/setup.py +1 -1
  3. {spacr-0.3.43 → spacr-0.3.45}/spacr/cellpose.py +63 -71
  4. {spacr-0.3.43 → spacr-0.3.45}/spacr/io.py +6 -16
  5. {spacr-0.3.43 → spacr-0.3.45}/spacr/ml.py +4 -3
  6. {spacr-0.3.43 → spacr-0.3.45}/spacr/plot.py +264 -10
  7. {spacr-0.3.43 → spacr-0.3.45}/spacr/settings.py +7 -15
  8. {spacr-0.3.43 → spacr-0.3.45}/spacr/submodules.py +113 -68
  9. {spacr-0.3.43 → spacr-0.3.45}/spacr/toxo.py +5 -116
  10. {spacr-0.3.43 → spacr-0.3.45}/spacr/utils.py +37 -5
  11. {spacr-0.3.43 → spacr-0.3.45/spacr.egg-info}/PKG-INFO +1 -1
  12. {spacr-0.3.43 → spacr-0.3.45}/.readthedocs.yaml +0 -0
  13. {spacr-0.3.43 → spacr-0.3.45}/LICENSE +0 -0
  14. {spacr-0.3.43 → spacr-0.3.45}/MANIFEST.in +0 -0
  15. {spacr-0.3.43 → spacr-0.3.45}/README.rst +0 -0
  16. {spacr-0.3.43 → spacr-0.3.45}/deploy_docs.sh +0 -0
  17. {spacr-0.3.43 → spacr-0.3.45}/docs/requirements.txt +0 -0
  18. {spacr-0.3.43 → spacr-0.3.45}/docs/source/Makefile +0 -0
  19. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/doctrees/environment.pickle +0 -0
  20. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/index.html +0 -0
  21. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/app_annotate.html +0 -0
  22. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/app_classify.html +0 -0
  23. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/app_make_masks.html +0 -0
  24. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/app_mask.html +0 -0
  25. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/app_measure.html +0 -0
  26. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/app_sequencing.html +0 -0
  27. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/app_umap.html +0 -0
  28. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/core.html +0 -0
  29. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/deep_spacr.html +0 -0
  30. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/graph_learning.html +0 -0
  31. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/gui.html +0 -0
  32. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/gui_core.html +0 -0
  33. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/gui_elements.html +0 -0
  34. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/gui_utils.html +0 -0
  35. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/io.html +0 -0
  36. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/logger.html +0 -0
  37. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/measure.html +0 -0
  38. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/plot.html +0 -0
  39. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/sequencing.html +0 -0
  40. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/settings.html +0 -0
  41. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/sim.html +0 -0
  42. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/timelapse.html +0 -0
  43. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_modules/spacr/utils.html +0 -0
  44. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_sources/index.rst.txt +0 -0
  45. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_sources/modules.rst.txt +0 -0
  46. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_sources/spacr.rst.txt +0 -0
  47. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  48. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/basic.css +0 -0
  49. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/css/badge_only.css +0 -0
  50. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  51. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  52. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  53. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  54. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  55. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
  56. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  57. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  58. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  59. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  60. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  61. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/css/fonts/lato-bold.woff +0 -0
  62. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/css/fonts/lato-bold.woff2 +0 -0
  63. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  64. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  65. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/css/fonts/lato-normal.woff +0 -0
  66. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/css/fonts/lato-normal.woff2 +0 -0
  67. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/css/theme.css +0 -0
  68. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/doctools.js +0 -0
  69. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/documentation_options.js +0 -0
  70. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/file.png +0 -0
  71. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/jquery.js +0 -0
  72. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/js/badge_only.js +0 -0
  73. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/js/html5shiv-printshiv.min.js +0 -0
  74. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/js/html5shiv.min.js +0 -0
  75. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/js/theme.js +0 -0
  76. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/language_data.js +0 -0
  77. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/minus.png +0 -0
  78. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/plus.png +0 -0
  79. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/pygments.css +0 -0
  80. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/searchtools.js +0 -0
  81. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/_static/sphinx_highlight.js +0 -0
  82. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/genindex.html +0 -0
  83. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/index.html +0 -0
  84. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/modules.html +0 -0
  85. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/objects.inv +0 -0
  86. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/py-modindex.html +0 -0
  87. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/search.html +0 -0
  88. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/searchindex.js +0 -0
  89. {spacr-0.3.43 → spacr-0.3.45}/docs/source/_build/html/spacr.html +0 -0
  90. {spacr-0.3.43 → spacr-0.3.45}/docs/source/conf.py +0 -0
  91. {spacr-0.3.43 → spacr-0.3.45}/docs/source/index.rst +0 -0
  92. {spacr-0.3.43 → spacr-0.3.45}/docs/source/make.bat +0 -0
  93. {spacr-0.3.43 → spacr-0.3.45}/docs/source/modules.rst +0 -0
  94. {spacr-0.3.43 → spacr-0.3.45}/docs/source/spacr.rst +0 -0
  95. {spacr-0.3.43 → spacr-0.3.45}/environment.yaml +0 -0
  96. {spacr-0.3.43 → spacr-0.3.45}/fonts/OpenSans-Regular.ttf +0 -0
  97. {spacr-0.3.43 → spacr-0.3.45}/notebooks/cv_scoring_nb.ipynb +0 -0
  98. {spacr-0.3.43 → spacr-0.3.45}/notebooks/deep_learning_spacr.ipynb +0 -0
  99. {spacr-0.3.43 → spacr-0.3.45}/notebooks/machine_learning_spacr_nb.ipynb +0 -0
  100. {spacr-0.3.43 → spacr-0.3.45}/notebooks/spacr_0.1_all_settings_git.ipynb +0 -0
  101. {spacr-0.3.43 → spacr-0.3.45}/notebooks/spacr_0.1_minimal.ipynb +0 -0
  102. {spacr-0.3.43 → spacr-0.3.45}/path/home/carruthers/datasets/plate1/measurements/measurements.db +0 -0
  103. {spacr-0.3.43 → spacr-0.3.45}/path/home/carruthers/datasets/plate1/settings/measure_crop_settings.csv +0 -0
  104. {spacr-0.3.43 → spacr-0.3.45}/path/settings/preprocess_generate_masks_settings.csv +0 -0
  105. {spacr-0.3.43 → spacr-0.3.45}/requirements.txt +0 -0
  106. {spacr-0.3.43 → spacr-0.3.45}/settings/measure_crop_settings.csv +0 -0
  107. {spacr-0.3.43 → spacr-0.3.45}/setup.cfg +0 -0
  108. {spacr-0.3.43 → spacr-0.3.45}/setup_docs.sh +0 -0
  109. {spacr-0.3.43 → spacr-0.3.45}/source/conf.py +0 -0
  110. {spacr-0.3.43 → spacr-0.3.45}/source/index.rst +0 -0
  111. {spacr-0.3.43 → spacr-0.3.45}/source/modules.rst +0 -0
  112. {spacr-0.3.43 → spacr-0.3.45}/source/setup.rst +0 -0
  113. {spacr-0.3.43 → spacr-0.3.45}/source/spacr.rst +0 -0
  114. {spacr-0.3.43 → spacr-0.3.45}/spacr/__init__.py +0 -0
  115. {spacr-0.3.43 → spacr-0.3.45}/spacr/__main__.py +0 -0
  116. {spacr-0.3.43 → spacr-0.3.45}/spacr/app_annotate.py +0 -0
  117. {spacr-0.3.43 → spacr-0.3.45}/spacr/app_classify.py +0 -0
  118. {spacr-0.3.43 → spacr-0.3.45}/spacr/app_make_masks.py +0 -0
  119. {spacr-0.3.43 → spacr-0.3.45}/spacr/app_mask.py +0 -0
  120. {spacr-0.3.43 → spacr-0.3.45}/spacr/app_measure.py +0 -0
  121. {spacr-0.3.43 → spacr-0.3.45}/spacr/app_sequencing.py +0 -0
  122. {spacr-0.3.43 → spacr-0.3.45}/spacr/app_umap.py +0 -0
  123. {spacr-0.3.43 → spacr-0.3.45}/spacr/core.py +0 -0
  124. {spacr-0.3.43 → spacr-0.3.45}/spacr/deep_spacr.py +0 -0
  125. {spacr-0.3.43 → spacr-0.3.45}/spacr/gui.py +0 -0
  126. {spacr-0.3.43 → spacr-0.3.45}/spacr/gui_core.py +0 -0
  127. {spacr-0.3.43 → spacr-0.3.45}/spacr/gui_elements.py +0 -0
  128. {spacr-0.3.43 → spacr-0.3.45}/spacr/gui_utils.py +0 -0
  129. {spacr-0.3.43 → spacr-0.3.45}/spacr/logger.py +0 -0
  130. {spacr-0.3.43 → spacr-0.3.45}/spacr/measure.py +0 -0
  131. {spacr-0.3.43 → spacr-0.3.45}/spacr/mediar.py +0 -0
  132. {spacr-0.3.43 → spacr-0.3.45}/spacr/openai.py +0 -0
  133. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/.gitignore +0 -0
  134. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/LICENSE +0 -0
  135. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/README.md +0 -0
  136. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/SetupDict.py +0 -0
  137. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/config/baseline.json +0 -0
  138. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/config/mediar_example.json +0 -0
  139. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/config/pred/pred_mediar.json +0 -0
  140. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/config/step1_pretraining/phase1.json +0 -0
  141. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/config/step1_pretraining/phase2.json +0 -0
  142. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/config/step2_finetuning/finetuning1.json +0 -0
  143. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/config/step2_finetuning/finetuning2.json +0 -0
  144. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/config/step3_prediction/base_prediction.json +0 -0
  145. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/config/step3_prediction/ensemble_tta.json +0 -0
  146. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/core/BasePredictor.py +0 -0
  147. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/core/BaseTrainer.py +0 -0
  148. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/core/Baseline/Predictor.py +0 -0
  149. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/core/Baseline/Trainer.py +0 -0
  150. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/core/Baseline/__init__.py +0 -0
  151. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/core/Baseline/utils.py +0 -0
  152. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/core/MEDIAR/EnsemblePredictor.py +0 -0
  153. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/core/MEDIAR/Predictor.py +0 -0
  154. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/core/MEDIAR/Trainer.py +0 -0
  155. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/core/MEDIAR/__init__.py +0 -0
  156. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/core/MEDIAR/utils.py +0 -0
  157. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/core/__init__.py +0 -0
  158. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/core/utils.py +0 -0
  159. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/evaluate.py +0 -0
  160. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/generate_mapping.py +0 -0
  161. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/image/examples/img1.tiff +0 -0
  162. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/image/examples/img2.tif +0 -0
  163. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/image/failure_cases.png +0 -0
  164. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/image/mediar_framework.png +0 -0
  165. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/image/mediar_model.PNG +0 -0
  166. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/image/mediar_results.png +0 -0
  167. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/main.py +0 -0
  168. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/predict.py +0 -0
  169. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/requirements.txt +0 -0
  170. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/train_tools/__init__.py +0 -0
  171. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/train_tools/data_utils/__init__.py +0 -0
  172. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/train_tools/data_utils/custom/CellAware.py +0 -0
  173. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/train_tools/data_utils/custom/LoadImage.py +0 -0
  174. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/train_tools/data_utils/custom/NormalizeImage.py +0 -0
  175. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/train_tools/data_utils/custom/__init__.py +0 -0
  176. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/train_tools/data_utils/custom/modalities.pkl +0 -0
  177. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/train_tools/data_utils/datasetter.py +0 -0
  178. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/train_tools/data_utils/transforms.py +0 -0
  179. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/train_tools/data_utils/utils.py +0 -0
  180. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/train_tools/measures.py +0 -0
  181. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/train_tools/models/MEDIARFormer.py +0 -0
  182. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/train_tools/models/__init__.py +0 -0
  183. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/MEDIAR/train_tools/utils.py +0 -0
  184. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/data/lopit.csv +0 -0
  185. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/data/toxoplasma_metadata.csv +0 -0
  186. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/OFL.txt +0 -0
  187. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/OpenSans-Italic-VariableFont_wdth,wght.ttf +0 -0
  188. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/OpenSans-VariableFont_wdth,wght.ttf +0 -0
  189. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/README.txt +0 -0
  190. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans-Bold.ttf +0 -0
  191. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans-BoldItalic.ttf +0 -0
  192. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans-ExtraBold.ttf +0 -0
  193. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans-ExtraBoldItalic.ttf +0 -0
  194. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans-Italic.ttf +0 -0
  195. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans-Light.ttf +0 -0
  196. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans-LightItalic.ttf +0 -0
  197. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans-Medium.ttf +0 -0
  198. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans-MediumItalic.ttf +0 -0
  199. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans-Regular.ttf +0 -0
  200. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans-SemiBold.ttf +0 -0
  201. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans-SemiBoldItalic.ttf +0 -0
  202. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_Condensed-Bold.ttf +0 -0
  203. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_Condensed-BoldItalic.ttf +0 -0
  204. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_Condensed-ExtraBold.ttf +0 -0
  205. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_Condensed-ExtraBoldItalic.ttf +0 -0
  206. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_Condensed-Italic.ttf +0 -0
  207. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_Condensed-Light.ttf +0 -0
  208. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_Condensed-LightItalic.ttf +0 -0
  209. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_Condensed-Medium.ttf +0 -0
  210. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_Condensed-MediumItalic.ttf +0 -0
  211. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_Condensed-Regular.ttf +0 -0
  212. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_Condensed-SemiBold.ttf +0 -0
  213. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_Condensed-SemiBoldItalic.ttf +0 -0
  214. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Bold.ttf +0 -0
  215. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-BoldItalic.ttf +0 -0
  216. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-ExtraBold.ttf +0 -0
  217. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-ExtraBoldItalic.ttf +0 -0
  218. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Italic.ttf +0 -0
  219. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Light.ttf +0 -0
  220. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-LightItalic.ttf +0 -0
  221. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Medium.ttf +0 -0
  222. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-MediumItalic.ttf +0 -0
  223. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Regular.ttf +0 -0
  224. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-SemiBold.ttf +0 -0
  225. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-SemiBoldItalic.ttf +0 -0
  226. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/abort.png +0 -0
  227. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/annotate.png +0 -0
  228. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/cellpose_all.png +0 -0
  229. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/cellpose_masks.png +0 -0
  230. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/classify.png +0 -0
  231. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/convert.png +0 -0
  232. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/default.png +0 -0
  233. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/dna_matrix.mp4 +0 -0
  234. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/download.png +0 -0
  235. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/logo.pdf +0 -0
  236. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/logo_spacr.png +0 -0
  237. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/logo_spacr_1.png +0 -0
  238. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/make_masks.png +0 -0
  239. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/map_barcodes.png +0 -0
  240. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/mask.png +0 -0
  241. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/measure.png +0 -0
  242. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/ml_analyze.png +0 -0
  243. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/plaque.png +0 -0
  244. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/recruitment.png +0 -0
  245. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/regression.png +0 -0
  246. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/run.png +0 -0
  247. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/sequencing.png +0 -0
  248. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/settings.png +0 -0
  249. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/train_cellpose.png +0 -0
  250. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/icons/umap.png +0 -0
  251. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/images/plate1_E01_T0001F001L01A01Z01C02.tif +0 -0
  252. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/images/plate1_E01_T0001F001L01A02Z01C01.tif +0 -0
  253. {spacr-0.3.43 → spacr-0.3.45}/spacr/resources/images/plate1_E01_T0001F001L01A03Z01C03.tif +0 -0
  254. {spacr-0.3.43 → spacr-0.3.45}/spacr/sequencing.py +0 -0
  255. {spacr-0.3.43 → spacr-0.3.45}/spacr/sim.py +0 -0
  256. {spacr-0.3.43 → spacr-0.3.45}/spacr/timelapse.py +0 -0
  257. {spacr-0.3.43 → spacr-0.3.45}/spacr/version.py +0 -0
  258. {spacr-0.3.43 → spacr-0.3.45}/spacr.egg-info/SOURCES.txt +0 -0
  259. {spacr-0.3.43 → spacr-0.3.45}/spacr.egg-info/dependency_links.txt +0 -0
  260. {spacr-0.3.43 → spacr-0.3.45}/spacr.egg-info/entry_points.txt +0 -0
  261. {spacr-0.3.43 → spacr-0.3.45}/spacr.egg-info/requires.txt +0 -0
  262. {spacr-0.3.43 → spacr-0.3.45}/spacr.egg-info/top_level.txt +0 -0
  263. {spacr-0.3.43 → spacr-0.3.45}/tests/test_annotate_app.py +0 -0
  264. {spacr-0.3.43 → spacr-0.3.45}/tests/test_core.py +0 -0
  265. {spacr-0.3.43 → spacr-0.3.45}/tests/test_gui_classify_app.py +0 -0
  266. {spacr-0.3.43 → spacr-0.3.45}/tests/test_gui_mask_app.py +0 -0
  267. {spacr-0.3.43 → spacr-0.3.45}/tests/test_gui_measure_app.py +0 -0
  268. {spacr-0.3.43 → spacr-0.3.45}/tests/test_gui_sim_app.py +0 -0
  269. {spacr-0.3.43 → spacr-0.3.45}/tests/test_gui_utils.py +0 -0
  270. {spacr-0.3.43 → spacr-0.3.45}/tests/test_io.py +0 -0
  271. {spacr-0.3.43 → spacr-0.3.45}/tests/test_mask_app.py +0 -0
  272. {spacr-0.3.43 → spacr-0.3.45}/tests/test_measure.py +0 -0
  273. {spacr-0.3.43 → spacr-0.3.45}/tests/test_plot.py +0 -0
  274. {spacr-0.3.43 → spacr-0.3.45}/tests/test_sim.py +0 -0
  275. {spacr-0.3.43 → spacr-0.3.45}/tests/test_timelapse.py +0 -0
  276. {spacr-0.3.43 → spacr-0.3.45}/tests/test_train.py +0 -0
  277. {spacr-0.3.43 → spacr-0.3.45}/tests/test_umap.py +0 -0
  278. {spacr-0.3.43 → spacr-0.3.45}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: spacr
3
- Version: 0.3.43
3
+ Version: 0.3.45
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
@@ -67,7 +67,7 @@ dependencies = [
67
67
 
68
68
  setup(
69
69
  name="spacr",
70
- version="0.3.43",
70
+ version="0.3.45",
71
71
  author="Einar Birnir Olafsson",
72
72
  author_email="olafsson@med.umich.com",
73
73
  description="Spatial phenotype analysis of crisp screens (SpaCr)",
@@ -5,50 +5,23 @@ from cellpose import models as cp_models
5
5
  from IPython.display import display
6
6
  from multiprocessing import Pool
7
7
  from skimage.transform import resize as resizescikit
8
+ from scipy.ndimage import binary_fill_holes
8
9
 
9
10
  def identify_masks_finetune(settings):
10
11
 
11
12
  from .plot import print_mask_and_flows
12
- from .utils import resize_images_and_labels, print_progress
13
+ from .utils import resize_images_and_labels, print_progress, save_settings, fill_holes_in_mask
13
14
  from .io import _load_normalized_images_and_labels, _load_images_and_labels
14
15
  from .settings import get_identify_masks_finetune_default_settings
15
16
 
16
17
  settings = get_identify_masks_finetune_default_settings(settings)
17
- src=settings['src']
18
- dst=settings['dst']
19
- model_name=settings['model_name']
20
- custom_model=settings['custom_model']
21
- channels = settings['channels']
22
- background = settings['background']
23
- remove_background=settings['remove_background']
24
- Signal_to_noise = settings['Signal_to_noise']
25
- CP_prob = settings['CP_prob']
26
- diameter=settings['diameter']
27
- batch_size=settings['batch_size']
28
- flow_threshold=settings['flow_threshold']
29
- save=settings['save']
30
- verbose=settings['verbose']
31
-
32
- # static settings
33
- normalize = settings['normalize']
34
- percentiles = settings['percentiles']
35
- circular = settings['circular']
36
- invert = settings['invert']
37
- resize = settings['resize']
38
-
39
- if resize:
40
- target_height = settings['target_height']
41
- target_width = settings['target_width']
42
-
43
- rescale = settings['rescale']
44
- resample = settings['resample']
45
- grayscale = settings['grayscale']
46
-
18
+ save_settings(settings, name='generate_cellpose_masks', show=True)
19
+ dst = os.path.join(settings['src'], 'masks')
47
20
  os.makedirs(dst, exist_ok=True)
48
21
 
49
- if not custom_model is None:
50
- if not os.path.exists(custom_model):
51
- print(f'Custom model not found: {custom_model}')
22
+ if not settings['custom_model'] is None:
23
+ if not os.path.exists(settings['custom_model']):
24
+ print(f"Custom model not found: {settings['custom_model']}")
52
25
  return
53
26
 
54
27
  if not torch.cuda.is_available():
@@ -56,42 +29,60 @@ def identify_masks_finetune(settings):
56
29
 
57
30
  device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
58
31
 
59
- if custom_model == None:
60
- model = cp_models.CellposeModel(gpu=True, model_type=model_name, device=device)
61
- print(f'Loaded model: {model_name}')
32
+ if settings['custom_model'] == None:
33
+ model = cp_models.CellposeModel(gpu=True, model_type=settings['model_name'], device=device)
34
+ print(f"Loaded model: {settings['model_name']}")
62
35
  else:
63
- model = cp_models.CellposeModel(gpu=torch.cuda.is_available(), model_type=None, pretrained_model=custom_model, diam_mean=diameter, device=device)
36
+ model = cp_models.CellposeModel(gpu=torch.cuda.is_available(), model_type=None, pretrained_model=settings['custom_model'], diam_mean=settings['diameter'], device=device)
64
37
  print("Pretrained Model Loaded:", model.pretrained_model)
65
38
 
66
- chans = [2, 1] if model_name == 'cyto2' else [0,0] if model_name == 'nucleus' else [1,0] if model_name == 'cyto' else [2, 0]
39
+ chans = [2, 1] if settings['model_name'] == 'cyto2' else [0,0] if settings['model_name'] == 'nucleus' else [1,0] if settings['model_name'] == 'cyto' else [2, 0]
67
40
 
68
- if grayscale:
41
+ if settings['grayscale']:
69
42
  chans=[0, 0]
70
43
 
71
- print(f'Using channels: {chans} for model of type {model_name}')
44
+ print(f"Using channels: {chans} for model of type {settings['model_name']}")
72
45
 
73
- if verbose == True:
74
- print(f'Cellpose settings: Model: {model_name}, channels: {channels}, cellpose_chans: {chans}, diameter:{diameter}, flow_threshold:{flow_threshold}, cellprob_threshold:{CP_prob}')
46
+ if settings['verbose'] == True:
47
+ print(f"Cellpose settings: Model: {settings['model_name']}, channels: {settings['channels']}, cellpose_chans: {chans}, diameter:{settings['diameter']}, flow_threshold:{settings['flow_threshold']}, cellprob_threshold:{settings['CP_prob']}")
75
48
 
76
- all_image_files = [os.path.join(src, f) for f in os.listdir(src) if f.endswith('.tif')]
77
- mask_files = set(os.listdir(os.path.join(src, 'masks')))
78
- all_image_files = [f for f in all_image_files if os.path.basename(f) not in mask_files]
49
+ image_files = [os.path.join(settings['src'], f) for f in os.listdir(settings['src']) if f.endswith('.tif')]
50
+ mask_files = set(os.listdir(os.path.join(settings['src'], 'masks')))
51
+ all_image_files = [f for f in image_files if os.path.basename(f) not in mask_files]
79
52
  random.shuffle(all_image_files)
53
+
54
+ print(f"Found {len(image_files)} Images with {len(mask_files)} masks. Generating masks for {len(all_image_files)} images")
55
+
56
+ if len(all_image_files) == 0:
57
+ print(f"Either no images were found in {settings['src']} or all images have masks in {settings['dst']}")
58
+ return
59
+
80
60
 
81
61
  time_ls = []
82
- for i in range(0, len(all_image_files), batch_size):
62
+ for i in range(0, len(all_image_files), settings['batch_size']):
83
63
  gc.collect()
84
- image_files = all_image_files[i:i+batch_size]
64
+ image_files = all_image_files[i:i+settings['batch_size']]
85
65
 
86
- if normalize:
87
- images, _, image_names, _, orig_dims = _load_normalized_images_and_labels(image_files=image_files, label_files=None, channels=channels, percentiles=percentiles, circular=circular, invert=invert, visualize=verbose, remove_background=remove_background, background=background, Signal_to_noise=Signal_to_noise, target_height=target_height, target_width=target_width)
66
+ if settings['normalize']:
67
+ images, _, image_names, _, orig_dims = _load_normalized_images_and_labels(image_files=image_files,
68
+ label_files=None,
69
+ channels=settings['channels'],
70
+ percentiles=settings['percentiles'],
71
+ invert=settings['invert'],
72
+ visualize=settings['verbose'],
73
+ remove_background=settings['remove_background'],
74
+ background=settings['background'],
75
+ Signal_to_noise=settings['Signal_to_noise'],
76
+ target_height=settings['target_height'],
77
+ target_width=settings['target_width'])
78
+
88
79
  images = [np.squeeze(img) if img.shape[-1] == 1 else img for img in images]
89
80
  else:
90
- images, _, image_names, _ = _load_images_and_labels(image_files=image_files, label_files=None, circular=circular, invert=invert)
81
+ images, _, image_names, _ = _load_images_and_labels(image_files=image_files, label_files=None, invert=settings['invert'])
91
82
  images = [np.squeeze(img) if img.shape[-1] == 1 else img for img in images]
92
83
  orig_dims = [(image.shape[0], image.shape[1]) for image in images]
93
- if resize:
94
- images, _ = resize_images_and_labels(images, None, target_height, target_width, True)
84
+ if settings['resize']:
85
+ images, _ = resize_images_and_labels(images, None, settings['target_height'], settings['target_width'], True)
95
86
 
96
87
  for file_index, stack in enumerate(images):
97
88
  start = time.time()
@@ -99,11 +90,11 @@ def identify_masks_finetune(settings):
99
90
  normalize=False,
100
91
  channels=chans,
101
92
  channel_axis=3,
102
- diameter=diameter,
103
- flow_threshold=flow_threshold,
104
- cellprob_threshold=CP_prob,
105
- rescale=rescale,
106
- resample=resample,
93
+ diameter=settings['diameter'],
94
+ flow_threshold=settings['flow_threshold'],
95
+ cellprob_threshold=settings['CP_prob'],
96
+ rescale=settings['rescale'],
97
+ resample=settings['resample'],
107
98
  progress=True)
108
99
 
109
100
  if len(output) == 4:
@@ -112,8 +103,11 @@ def identify_masks_finetune(settings):
112
103
  mask, flows, _ = output
113
104
  else:
114
105
  raise ValueError("Unexpected number of return values from model.eval()")
106
+
107
+ if settings['fill_in']:
108
+ mask = fill_holes_in_mask(mask).astype(mask.dtype)
115
109
 
116
- if resize:
110
+ if settings['resize']:
117
111
  dims = orig_dims[file_index]
118
112
  mask = resizescikit(mask, dims, order=0, preserve_range=True, anti_aliasing=False).astype(mask.dtype)
119
113
 
@@ -122,14 +116,13 @@ def identify_masks_finetune(settings):
122
116
  time_ls.append(duration)
123
117
  files_processed = len(images)
124
118
  files_to_process = file_index+1
125
- print_progress(files_processed, files_to_process, n_jobs=1, time_ls=time_ls)
126
- print_progress(files_processed, files_to_process, n_jobs=1, time_ls=time_ls, batch_size=None, operation_type="")
119
+ print_progress(files_processed, files_to_process, n_jobs=1, time_ls=time_ls, batch_size=None, operation_type="generate cellpose masks")
127
120
 
128
- if verbose:
129
- if resize:
121
+ if settings['verbose']:
122
+ if settings['resize']:
130
123
  stack = resizescikit(stack, dims, preserve_range=True, anti_aliasing=False).astype(stack.dtype)
131
- print_mask_and_flows(stack, mask, flows, overlay=True)
132
- if save:
124
+ print_mask_and_flows(stack, mask, flows)
125
+ if settings['save']:
133
126
  os.makedirs(dst, exist_ok=True)
134
127
  output_filename = os.path.join(dst, image_names[file_index])
135
128
  cv2.imwrite(output_filename, mask)
@@ -137,7 +130,7 @@ def identify_masks_finetune(settings):
137
130
  gc.collect()
138
131
  return
139
132
 
140
- def generate_masks_from_imgs(src, model, model_name, batch_size, diameter, cellprob_threshold, flow_threshold, grayscale, save, normalize, channels, percentiles, circular, invert, plot, resize, target_height, target_width, remove_background, background, Signal_to_noise, verbose):
133
+ def generate_masks_from_imgs(src, model, model_name, batch_size, diameter, cellprob_threshold, flow_threshold, grayscale, save, normalize, channels, percentiles, invert, plot, resize, target_height, target_width, remove_background, background, Signal_to_noise, verbose):
141
134
 
142
135
  from .io import _load_images_and_labels, _load_normalized_images_and_labels
143
136
  from .utils import resize_images_and_labels, resizescikit, print_progress
@@ -162,11 +155,11 @@ def generate_masks_from_imgs(src, model, model_name, batch_size, diameter, cellp
162
155
  image_files = all_image_files[i:i+batch_size]
163
156
 
164
157
  if normalize:
165
- images, _, image_names, _, orig_dims = _load_normalized_images_and_labels(image_files, None, channels, percentiles, circular, invert, plot, remove_background, background, Signal_to_noise, target_height, target_width)
158
+ images, _, image_names, _, orig_dims = _load_normalized_images_and_labels(image_files, None, channels, percentiles, invert, plot, remove_background, background, Signal_to_noise, target_height, target_width)
166
159
  images = [np.squeeze(img) if img.shape[-1] == 1 else img for img in images]
167
160
  orig_dims = [(image.shape[0], image.shape[1]) for image in images]
168
161
  else:
169
- images, _, image_names, _ = _load_images_and_labels(image_files, None, circular, invert)
162
+ images, _, image_names, _ = _load_images_and_labels(image_files, None, invert)
170
163
  images = [np.squeeze(img) if img.shape[-1] == 1 else img for img in images]
171
164
  orig_dims = [(image.shape[0], image.shape[1]) for image in images]
172
165
  if resize:
@@ -207,12 +200,11 @@ def generate_masks_from_imgs(src, model, model_name, batch_size, diameter, cellp
207
200
  if plot:
208
201
  if resize:
209
202
  stack = resizescikit(stack, dims, preserve_range=True, anti_aliasing=False).astype(stack.dtype)
210
- print_mask_and_flows(stack, mask, flows, overlay=True)
203
+ print_mask_and_flows(stack, mask, flows)
211
204
  if save:
212
205
  output_filename = os.path.join(dst, image_names[file_index])
213
206
  cv2.imwrite(output_filename, mask)
214
207
 
215
-
216
208
  def check_cellpose_models(settings):
217
209
 
218
210
  from .settings import get_check_cellpose_models_default_settings
@@ -231,7 +223,7 @@ def check_cellpose_models(settings):
231
223
 
232
224
  model = cp_models.CellposeModel(gpu=True, model_type=model_name, device=device)
233
225
  print(f'Using {model_name}')
234
- generate_masks_from_imgs(src, model, model_name, settings['batch_size'], settings['diameter'], settings['CP_prob'], settings['flow_threshold'], settings['grayscale'], settings['save'], settings['normalize'], settings['channels'], settings['percentiles'], settings['circular'], settings['invert'], settings['plot'], settings['resize'], settings['target_height'], settings['target_width'], settings['remove_background'], settings['background'], settings['Signal_to_noise'], settings['verbose'])
226
+ generate_masks_from_imgs(src, model, model_name, settings['batch_size'], settings['diameter'], settings['CP_prob'], settings['flow_threshold'], settings['grayscale'], settings['save'], settings['normalize'], settings['channels'], settings['percentiles'], settings['invert'], settings['plot'], settings['resize'], settings['target_height'], settings['target_width'], settings['remove_background'], settings['background'], settings['Signal_to_noise'], settings['verbose'])
235
227
 
236
228
  return
237
229
 
@@ -129,7 +129,7 @@ def process_non_tif_non_2D_images(folder):
129
129
  except Exception as e:
130
130
  print(f"Error processing {filename}: {str(e)}")
131
131
 
132
- def _load_images_and_labels(image_files, label_files, circular=False, invert=False):
132
+ def _load_images_and_labels(image_files, label_files, invert=False):
133
133
 
134
134
  from .utils import invert_image, apply_mask
135
135
 
@@ -151,8 +151,6 @@ def _load_images_and_labels(image_files, label_files, circular=False, invert=Fal
151
151
  image = cellpose.io.imread(img_file)
152
152
  if invert:
153
153
  image = invert_image(image)
154
- if circular:
155
- image = apply_mask(image, output_value=0)
156
154
  label = cellpose.io.imread(lbl_file)
157
155
  if image.max() > 1:
158
156
  image = image / image.max()
@@ -163,16 +161,12 @@ def _load_images_and_labels(image_files, label_files, circular=False, invert=Fal
163
161
  image = cellpose.io.imread(img_file)
164
162
  if invert:
165
163
  image = invert_image(image)
166
- if circular:
167
- image = apply_mask(image, output_value=0)
168
164
  if image.max() > 1:
169
165
  image = image / image.max()
170
166
  images.append(image)
171
167
  elif not image_files is None:
172
168
  for lbl_file in label_files:
173
169
  label = cellpose.io.imread(lbl_file)
174
- if circular:
175
- label = apply_mask(label, output_value=0)
176
170
  labels.append(label)
177
171
 
178
172
  if not image_files is None:
@@ -192,9 +186,8 @@ def _load_images_and_labels(image_files, label_files, circular=False, invert=Fal
192
186
  return images, labels, image_names, label_names
193
187
 
194
188
  def _load_normalized_images_and_labels(image_files, label_files, channels=None, percentiles=None,
195
- circular=False, invert=False, visualize=False,
196
- remove_background=False, background=0, Signal_to_noise=10,
197
- target_height=None, target_width=None):
189
+ invert=False, visualize=False, remove_background=False,
190
+ background=0, Signal_to_noise=10, target_height=None, target_width=None):
198
191
 
199
192
  from .plot import normalize_and_visualize, plot_resize
200
193
  from .utils import invert_image, apply_mask
@@ -233,8 +226,6 @@ def _load_normalized_images_and_labels(image_files, label_files, channels=None,
233
226
 
234
227
  if invert:
235
228
  image = invert_image(image)
236
- if circular:
237
- image = apply_mask(image, output_value=0)
238
229
 
239
230
  # Select specific channels if needed
240
231
  if channels is not None and image.ndim == 3:
@@ -301,7 +292,7 @@ def _load_normalized_images_and_labels(image_files, label_files, channels=None,
301
292
 
302
293
  return normalized_images, labels, image_names, label_names, orig_dims
303
294
 
304
- def _load_normalized_images_and_labels_v1(image_files, label_files, channels=None, percentiles=None, circular=False, invert=False, visualize=False, remove_background=False, background=0, Signal_to_noise=10, target_height=None, target_width=None):
295
+ def _load_normalized_images_and_labels_v1(image_files, label_files, channels=None, percentiles=None, invert=False, visualize=False, remove_background=False, background=0, Signal_to_noise=10, target_height=None, target_width=None):
305
296
 
306
297
  from .plot import normalize_and_visualize, plot_resize
307
298
  from .utils import invert_image, apply_mask
@@ -339,8 +330,6 @@ def _load_normalized_images_and_labels_v1(image_files, label_files, channels=Non
339
330
  orig_dims.append((image.shape[0], image.shape[1]))
340
331
  if invert:
341
332
  image = invert_image(image)
342
- if circular:
343
- image = apply_mask(image, output_value=0)
344
333
 
345
334
  # If specific channels are specified, select them
346
335
  if channels is not None and image.ndim == 3:
@@ -2146,7 +2135,8 @@ def _load_and_concatenate_arrays(src, channels, cell_chann_dim, nucleus_chann_di
2146
2135
  # For each of the other folders, load the array and add it to 'stack_ls'
2147
2136
  for folder in folder_paths[1:]:
2148
2137
  array_path = os.path.join(folder, filename)
2149
- array = np.load(array_path)
2138
+ #array = np.load(array_path)
2139
+ array = np.load(array_path, allow_pickle=True)
2150
2140
  if array.ndim == 2:
2151
2141
  array = np.expand_dims(array, axis=-1) # Add an extra dimension if the array is 2D
2152
2142
  stack_ls.append(array)
@@ -450,13 +450,14 @@ def perform_regression(settings):
450
450
  else:
451
451
  return df
452
452
 
453
-
454
-
455
453
  settings = get_perform_regression_default_settings(settings)
456
454
  count_data_df, score_data_df = _perform_regression_read_data(settings)
457
455
  results_path, results_path_gene, results_path_grna, hits_path, res_folder, csv_path = _perform_regression_set_paths(settings)
458
456
  save_settings(settings, name='regression', show=True)
459
457
 
458
+ count_source = os.path.dirname(settings['count_data'][0])
459
+ volcano_path = os.path.join(count_source, 'volcano_plot.pdf')
460
+
460
461
  if isinstance(settings['filter_value'], list):
461
462
  filter_value = settings['filter_value']
462
463
  else:
@@ -548,7 +549,7 @@ def perform_regression(settings):
548
549
  base_dir = os.path.dirname(os.path.abspath(__file__))
549
550
  metadata_path = os.path.join(base_dir, 'resources', 'data', 'lopit.csv')
550
551
 
551
- custom_volcano_plot(data_path, metadata_path, metadata_column='tagm_location', point_size=200, figsize=20, threshold=reg_threshold, split_axis_lims=settings['split_axis_lims'])
552
+ custom_volcano_plot(data_path, metadata_path, metadata_column='tagm_location', point_size=200, figsize=20, threshold=reg_threshold, split_axis_lims=settings['split_axis_lims'], save_path=volcano_path)
552
553
  #custom_volcano_plot(data_path_gene, metadata_path, metadata_column='tagm_location', point_size=50, figsize=20, threshold=reg_threshold)
553
554
  #custom_volcano_plot(data_path_grna, metadata_path, metadata_column='tagm_location', point_size=50, figsize=20, threshold=reg_threshold)
554
555