spacr 0.3.2__tar.gz → 0.3.22__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 (279) hide show
  1. {spacr-0.3.2/spacr.egg-info → spacr-0.3.22}/PKG-INFO +28 -25
  2. spacr-0.3.22/notebooks/cv_scoring_nb.ipynb +171 -0
  3. spacr-0.3.22/notebooks/machine_learning_spacr_nb.ipynb +101 -0
  4. {spacr-0.3.2 → spacr-0.3.22}/setup.py +28 -26
  5. {spacr-0.3.2 → spacr-0.3.22}/spacr/core.py +105 -1
  6. {spacr-0.3.2 → spacr-0.3.22}/spacr/deep_spacr.py +171 -25
  7. {spacr-0.3.2 → spacr-0.3.22}/spacr/io.py +80 -121
  8. {spacr-0.3.2 → spacr-0.3.22}/spacr/ml.py +153 -66
  9. {spacr-0.3.2 → spacr-0.3.22}/spacr/plot.py +429 -7
  10. {spacr-0.3.2 → spacr-0.3.22}/spacr/settings.py +6 -5
  11. {spacr-0.3.2 → spacr-0.3.22}/spacr/submodules.py +7 -6
  12. {spacr-0.3.2 → spacr-0.3.22}/spacr/toxo.py +9 -4
  13. {spacr-0.3.2 → spacr-0.3.22}/spacr/utils.py +152 -13
  14. {spacr-0.3.2 → spacr-0.3.22/spacr.egg-info}/PKG-INFO +28 -25
  15. {spacr-0.3.2 → spacr-0.3.22}/spacr.egg-info/SOURCES.txt +2 -1
  16. {spacr-0.3.2 → spacr-0.3.22}/spacr.egg-info/requires.txt +27 -24
  17. spacr-0.3.2/empty.py +0 -0
  18. {spacr-0.3.2 → spacr-0.3.22}/.readthedocs.yaml +0 -0
  19. {spacr-0.3.2 → spacr-0.3.22}/LICENSE +0 -0
  20. {spacr-0.3.2 → spacr-0.3.22}/MANIFEST.in +0 -0
  21. {spacr-0.3.2 → spacr-0.3.22}/README.rst +0 -0
  22. {spacr-0.3.2 → spacr-0.3.22}/deploy_docs.sh +0 -0
  23. {spacr-0.3.2 → spacr-0.3.22}/docs/requirements.txt +0 -0
  24. {spacr-0.3.2 → spacr-0.3.22}/docs/source/Makefile +0 -0
  25. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/doctrees/environment.pickle +0 -0
  26. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/index.html +0 -0
  27. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/app_annotate.html +0 -0
  28. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/app_classify.html +0 -0
  29. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/app_make_masks.html +0 -0
  30. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/app_mask.html +0 -0
  31. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/app_measure.html +0 -0
  32. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/app_sequencing.html +0 -0
  33. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/app_umap.html +0 -0
  34. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/core.html +0 -0
  35. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/deep_spacr.html +0 -0
  36. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/graph_learning.html +0 -0
  37. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/gui.html +0 -0
  38. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/gui_core.html +0 -0
  39. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/gui_elements.html +0 -0
  40. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/gui_utils.html +0 -0
  41. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/io.html +0 -0
  42. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/logger.html +0 -0
  43. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/measure.html +0 -0
  44. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/plot.html +0 -0
  45. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/sequencing.html +0 -0
  46. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/settings.html +0 -0
  47. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/sim.html +0 -0
  48. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/timelapse.html +0 -0
  49. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/utils.html +0 -0
  50. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_sources/index.rst.txt +0 -0
  51. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_sources/modules.rst.txt +0 -0
  52. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_sources/spacr.rst.txt +0 -0
  53. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  54. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/basic.css +0 -0
  55. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/badge_only.css +0 -0
  56. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  57. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  58. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  59. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  60. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  61. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
  62. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  63. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  64. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  65. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  66. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  67. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/lato-bold.woff +0 -0
  68. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/lato-bold.woff2 +0 -0
  69. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  70. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  71. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/lato-normal.woff +0 -0
  72. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/lato-normal.woff2 +0 -0
  73. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/theme.css +0 -0
  74. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/doctools.js +0 -0
  75. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/documentation_options.js +0 -0
  76. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/file.png +0 -0
  77. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/jquery.js +0 -0
  78. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/js/badge_only.js +0 -0
  79. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/js/html5shiv-printshiv.min.js +0 -0
  80. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/js/html5shiv.min.js +0 -0
  81. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/js/theme.js +0 -0
  82. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/language_data.js +0 -0
  83. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/minus.png +0 -0
  84. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/plus.png +0 -0
  85. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/pygments.css +0 -0
  86. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/searchtools.js +0 -0
  87. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/sphinx_highlight.js +0 -0
  88. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/genindex.html +0 -0
  89. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/index.html +0 -0
  90. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/modules.html +0 -0
  91. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/objects.inv +0 -0
  92. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/py-modindex.html +0 -0
  93. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/search.html +0 -0
  94. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/searchindex.js +0 -0
  95. {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/spacr.html +0 -0
  96. {spacr-0.3.2 → spacr-0.3.22}/docs/source/conf.py +0 -0
  97. {spacr-0.3.2 → spacr-0.3.22}/docs/source/index.rst +0 -0
  98. {spacr-0.3.2 → spacr-0.3.22}/docs/source/make.bat +0 -0
  99. {spacr-0.3.2 → spacr-0.3.22}/docs/source/modules.rst +0 -0
  100. {spacr-0.3.2 → spacr-0.3.22}/docs/source/spacr.rst +0 -0
  101. {spacr-0.3.2 → spacr-0.3.22}/environment.yaml +0 -0
  102. {spacr-0.3.2 → spacr-0.3.22}/fonts/OpenSans-Regular.ttf +0 -0
  103. {spacr-0.3.2 → spacr-0.3.22}/notebooks/deep_learning_spacr.ipynb +0 -0
  104. {spacr-0.3.2 → spacr-0.3.22}/notebooks/spacr_0.1_all_settings_git.ipynb +0 -0
  105. {spacr-0.3.2 → spacr-0.3.22}/notebooks/spacr_0.1_minimal.ipynb +0 -0
  106. {spacr-0.3.2 → spacr-0.3.22}/path/home/carruthers/datasets/plate1/measurements/measurements.db +0 -0
  107. {spacr-0.3.2 → spacr-0.3.22}/path/home/carruthers/datasets/plate1/settings/measure_crop_settings.csv +0 -0
  108. {spacr-0.3.2 → spacr-0.3.22}/path/settings/preprocess_generate_masks_settings.csv +0 -0
  109. {spacr-0.3.2 → spacr-0.3.22}/requirements.txt +0 -0
  110. {spacr-0.3.2 → spacr-0.3.22}/settings/measure_crop_settings.csv +0 -0
  111. {spacr-0.3.2 → spacr-0.3.22}/setup.cfg +0 -0
  112. {spacr-0.3.2 → spacr-0.3.22}/setup_docs.sh +0 -0
  113. {spacr-0.3.2 → spacr-0.3.22}/source/conf.py +0 -0
  114. {spacr-0.3.2 → spacr-0.3.22}/source/index.rst +0 -0
  115. {spacr-0.3.2 → spacr-0.3.22}/source/modules.rst +0 -0
  116. {spacr-0.3.2 → spacr-0.3.22}/source/setup.rst +0 -0
  117. {spacr-0.3.2 → spacr-0.3.22}/source/spacr.rst +0 -0
  118. {spacr-0.3.2 → spacr-0.3.22}/spacr/__init__.py +0 -0
  119. {spacr-0.3.2 → spacr-0.3.22}/spacr/__main__.py +0 -0
  120. {spacr-0.3.2 → spacr-0.3.22}/spacr/app_annotate.py +0 -0
  121. {spacr-0.3.2 → spacr-0.3.22}/spacr/app_classify.py +0 -0
  122. {spacr-0.3.2 → spacr-0.3.22}/spacr/app_make_masks.py +0 -0
  123. {spacr-0.3.2 → spacr-0.3.22}/spacr/app_mask.py +0 -0
  124. {spacr-0.3.2 → spacr-0.3.22}/spacr/app_measure.py +0 -0
  125. {spacr-0.3.2 → spacr-0.3.22}/spacr/app_sequencing.py +0 -0
  126. {spacr-0.3.2 → spacr-0.3.22}/spacr/app_umap.py +0 -0
  127. {spacr-0.3.2 → spacr-0.3.22}/spacr/cellpose.py +0 -0
  128. {spacr-0.3.2 → spacr-0.3.22}/spacr/gui.py +0 -0
  129. {spacr-0.3.2 → spacr-0.3.22}/spacr/gui_core.py +0 -0
  130. {spacr-0.3.2 → spacr-0.3.22}/spacr/gui_elements.py +0 -0
  131. {spacr-0.3.2 → spacr-0.3.22}/spacr/gui_utils.py +0 -0
  132. {spacr-0.3.2 → spacr-0.3.22}/spacr/logger.py +0 -0
  133. {spacr-0.3.2 → spacr-0.3.22}/spacr/measure.py +0 -0
  134. {spacr-0.3.2 → spacr-0.3.22}/spacr/mediar.py +0 -0
  135. {spacr-0.3.2 → spacr-0.3.22}/spacr/openai.py +0 -0
  136. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/.gitignore +0 -0
  137. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/LICENSE +0 -0
  138. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/README.md +0 -0
  139. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/SetupDict.py +0 -0
  140. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/config/baseline.json +0 -0
  141. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/config/mediar_example.json +0 -0
  142. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/config/pred/pred_mediar.json +0 -0
  143. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/config/step1_pretraining/phase1.json +0 -0
  144. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/config/step1_pretraining/phase2.json +0 -0
  145. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/config/step2_finetuning/finetuning1.json +0 -0
  146. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/config/step2_finetuning/finetuning2.json +0 -0
  147. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/config/step3_prediction/base_prediction.json +0 -0
  148. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/config/step3_prediction/ensemble_tta.json +0 -0
  149. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/BasePredictor.py +0 -0
  150. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/BaseTrainer.py +0 -0
  151. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/Baseline/Predictor.py +0 -0
  152. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/Baseline/Trainer.py +0 -0
  153. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/Baseline/__init__.py +0 -0
  154. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/Baseline/utils.py +0 -0
  155. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/MEDIAR/EnsemblePredictor.py +0 -0
  156. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/MEDIAR/Predictor.py +0 -0
  157. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/MEDIAR/Trainer.py +0 -0
  158. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/MEDIAR/__init__.py +0 -0
  159. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/MEDIAR/utils.py +0 -0
  160. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/__init__.py +0 -0
  161. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/utils.py +0 -0
  162. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/evaluate.py +0 -0
  163. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/generate_mapping.py +0 -0
  164. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/image/examples/img1.tiff +0 -0
  165. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/image/examples/img2.tif +0 -0
  166. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/image/failure_cases.png +0 -0
  167. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/image/mediar_framework.png +0 -0
  168. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/image/mediar_model.PNG +0 -0
  169. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/image/mediar_results.png +0 -0
  170. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/main.py +0 -0
  171. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/predict.py +0 -0
  172. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/requirements.txt +0 -0
  173. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/__init__.py +0 -0
  174. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/data_utils/__init__.py +0 -0
  175. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/data_utils/custom/CellAware.py +0 -0
  176. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/data_utils/custom/LoadImage.py +0 -0
  177. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/data_utils/custom/NormalizeImage.py +0 -0
  178. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/data_utils/custom/__init__.py +0 -0
  179. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/data_utils/custom/modalities.pkl +0 -0
  180. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/data_utils/datasetter.py +0 -0
  181. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/data_utils/transforms.py +0 -0
  182. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/data_utils/utils.py +0 -0
  183. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/measures.py +0 -0
  184. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/models/MEDIARFormer.py +0 -0
  185. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/models/__init__.py +0 -0
  186. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/utils.py +0 -0
  187. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/data/lopit.csv +0 -0
  188. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/data/toxoplasma_metadata.csv +0 -0
  189. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/OFL.txt +0 -0
  190. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/OpenSans-Italic-VariableFont_wdth,wght.ttf +0 -0
  191. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/OpenSans-VariableFont_wdth,wght.ttf +0 -0
  192. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/README.txt +0 -0
  193. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-Bold.ttf +0 -0
  194. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-BoldItalic.ttf +0 -0
  195. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-ExtraBold.ttf +0 -0
  196. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-ExtraBoldItalic.ttf +0 -0
  197. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-Italic.ttf +0 -0
  198. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-Light.ttf +0 -0
  199. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-LightItalic.ttf +0 -0
  200. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-Medium.ttf +0 -0
  201. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-MediumItalic.ttf +0 -0
  202. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-Regular.ttf +0 -0
  203. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-SemiBold.ttf +0 -0
  204. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-SemiBoldItalic.ttf +0 -0
  205. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-Bold.ttf +0 -0
  206. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-BoldItalic.ttf +0 -0
  207. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-ExtraBold.ttf +0 -0
  208. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-ExtraBoldItalic.ttf +0 -0
  209. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-Italic.ttf +0 -0
  210. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-Light.ttf +0 -0
  211. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-LightItalic.ttf +0 -0
  212. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-Medium.ttf +0 -0
  213. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-MediumItalic.ttf +0 -0
  214. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-Regular.ttf +0 -0
  215. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-SemiBold.ttf +0 -0
  216. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-SemiBoldItalic.ttf +0 -0
  217. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Bold.ttf +0 -0
  218. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-BoldItalic.ttf +0 -0
  219. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-ExtraBold.ttf +0 -0
  220. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-ExtraBoldItalic.ttf +0 -0
  221. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Italic.ttf +0 -0
  222. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Light.ttf +0 -0
  223. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-LightItalic.ttf +0 -0
  224. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Medium.ttf +0 -0
  225. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-MediumItalic.ttf +0 -0
  226. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Regular.ttf +0 -0
  227. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-SemiBold.ttf +0 -0
  228. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-SemiBoldItalic.ttf +0 -0
  229. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/abort.png +0 -0
  230. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/annotate.png +0 -0
  231. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/cellpose_all.png +0 -0
  232. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/cellpose_masks.png +0 -0
  233. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/classify.png +0 -0
  234. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/convert.png +0 -0
  235. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/default.png +0 -0
  236. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/dna_matrix.mp4 +0 -0
  237. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/download.png +0 -0
  238. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/logo.pdf +0 -0
  239. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/logo_spacr.png +0 -0
  240. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/logo_spacr_1.png +0 -0
  241. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/make_masks.png +0 -0
  242. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/map_barcodes.png +0 -0
  243. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/mask.png +0 -0
  244. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/measure.png +0 -0
  245. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/ml_analyze.png +0 -0
  246. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/plaque.png +0 -0
  247. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/recruitment.png +0 -0
  248. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/regression.png +0 -0
  249. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/run.png +0 -0
  250. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/sequencing.png +0 -0
  251. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/settings.png +0 -0
  252. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/train_cellpose.png +0 -0
  253. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/umap.png +0 -0
  254. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/images/plate1_E01_T0001F001L01A01Z01C02.tif +0 -0
  255. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/images/plate1_E01_T0001F001L01A02Z01C01.tif +0 -0
  256. {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/images/plate1_E01_T0001F001L01A03Z01C03.tif +0 -0
  257. {spacr-0.3.2 → spacr-0.3.22}/spacr/sequencing.py +0 -0
  258. {spacr-0.3.2 → spacr-0.3.22}/spacr/sim.py +0 -0
  259. {spacr-0.3.2 → spacr-0.3.22}/spacr/timelapse.py +0 -0
  260. {spacr-0.3.2 → spacr-0.3.22}/spacr/version.py +0 -0
  261. {spacr-0.3.2 → spacr-0.3.22}/spacr.egg-info/dependency_links.txt +0 -0
  262. {spacr-0.3.2 → spacr-0.3.22}/spacr.egg-info/entry_points.txt +0 -0
  263. {spacr-0.3.2 → spacr-0.3.22}/spacr.egg-info/top_level.txt +0 -0
  264. {spacr-0.3.2 → spacr-0.3.22}/tests/test_annotate_app.py +0 -0
  265. {spacr-0.3.2 → spacr-0.3.22}/tests/test_core.py +0 -0
  266. {spacr-0.3.2 → spacr-0.3.22}/tests/test_gui_classify_app.py +0 -0
  267. {spacr-0.3.2 → spacr-0.3.22}/tests/test_gui_mask_app.py +0 -0
  268. {spacr-0.3.2 → spacr-0.3.22}/tests/test_gui_measure_app.py +0 -0
  269. {spacr-0.3.2 → spacr-0.3.22}/tests/test_gui_sim_app.py +0 -0
  270. {spacr-0.3.2 → spacr-0.3.22}/tests/test_gui_utils.py +0 -0
  271. {spacr-0.3.2 → spacr-0.3.22}/tests/test_io.py +0 -0
  272. {spacr-0.3.2 → spacr-0.3.22}/tests/test_mask_app.py +0 -0
  273. {spacr-0.3.2 → spacr-0.3.22}/tests/test_measure.py +0 -0
  274. {spacr-0.3.2 → spacr-0.3.22}/tests/test_plot.py +0 -0
  275. {spacr-0.3.2 → spacr-0.3.22}/tests/test_sim.py +0 -0
  276. {spacr-0.3.2 → spacr-0.3.22}/tests/test_timelapse.py +0 -0
  277. {spacr-0.3.2 → spacr-0.3.22}/tests/test_train.py +0 -0
  278. {spacr-0.3.2 → spacr-0.3.22}/tests/test_umap.py +0 -0
  279. {spacr-0.3.2 → spacr-0.3.22}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: spacr
3
- Version: 0.3.2
3
+ Version: 0.3.22
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
@@ -10,34 +10,41 @@ Classifier: License :: OSI Approved :: MIT License
10
10
  Classifier: Operating System :: OS Independent
11
11
  Description-Content-Type: text/x-rst
12
12
  License-File: LICENSE
13
- Requires-Dist: torch<3.0,>=2.0
14
- Requires-Dist: torchvision<1.0,>=0.1
15
- Requires-Dist: torch-geometric<3.0,>=2.5
16
13
  Requires-Dist: numpy<2.0,>=1.26.4
17
- Requires-Dist: bottleneck<2.0,>=1.3.6
18
- Requires-Dist: numexpr<3.0,>=2.8.4
19
14
  Requires-Dist: pandas<3.0,>=2.2.1
20
- Requires-Dist: statsmodels<1.0,>=0.14.1
15
+ Requires-Dist: scipy<2.0,>=1.12.0
16
+ Requires-Dist: cellpose<4.0,>=3.0.6
21
17
  Requires-Dist: scikit-image<1.0,>=0.22.0
22
18
  Requires-Dist: scikit-learn<2.0,>=1.4.1
23
- Requires-Dist: seaborn<1.0,>=0.13.2
24
- Requires-Dist: matplotlib<4.0,>=3.8.3
25
- Requires-Dist: shap<1.0,>=0.45.0
26
- Requires-Dist: pillow<11.0,>=10.2.0
27
- Requires-Dist: imageio<3.0,>=2.34.0
28
- Requires-Dist: scipy<2.0,>=1.12.0
29
- Requires-Dist: ipywidgets<9.0,>=8.1.2
30
19
  Requires-Dist: mahotas<2.0,>=1.4.13
31
20
  Requires-Dist: btrack<1.0,>=0.6.5
32
21
  Requires-Dist: trackpy<1.0,>=0.6.2
33
- Requires-Dist: cellpose<4.0,>=3.0.6
34
- Requires-Dist: IPython<9.0,>=8.18.1
22
+ Requires-Dist: statsmodels<1.0,>=0.14.1
23
+ Requires-Dist: shap<1.0,>=0.45.0
24
+ Requires-Dist: torch<3.0,>=2.0
25
+ Requires-Dist: torchvision<1.0,>=0.1
26
+ Requires-Dist: torch-geometric<3.0,>=2.5
27
+ Requires-Dist: torchcam<1.0,>=0.4.0
28
+ Requires-Dist: transformers<5.0,>=4.45.2
29
+ Requires-Dist: segmentation_models_pytorch>=0.3.3
30
+ Requires-Dist: monai>=1.3.0
31
+ Requires-Dist: captum<1.0,>=0.7.0
32
+ Requires-Dist: seaborn<1.0,>=0.13.2
33
+ Requires-Dist: matplotlib<4.0,>=3.8.3
34
+ Requires-Dist: adjustText<2.0,>=1.2.0
35
+ Requires-Dist: bottleneck<2.0,>=1.3.6
36
+ Requires-Dist: numexpr<3.0,>=2.8.4
35
37
  Requires-Dist: opencv-python-headless<5.0,>=4.9.0.80
38
+ Requires-Dist: pillow<11.0,>=10.2.0
39
+ Requires-Dist: tifffile>=2023.4.12
40
+ Requires-Dist: nd2reader<4.0,>=3.3.0
41
+ Requires-Dist: czifile
42
+ Requires-Dist: imageio<3.0,>=2.34.0
43
+ Requires-Dist: pingouin<1.0,>=0.5.5
36
44
  Requires-Dist: umap-learn<1.0,>=0.5.6
37
45
  Requires-Dist: ttkthemes<4.0,>=3.2.2
38
46
  Requires-Dist: xgboost<3.0,>=2.0.3
39
47
  Requires-Dist: PyWavelets<2.0,>=1.6.0
40
- Requires-Dist: torchcam<1.0,>=0.4.0
41
48
  Requires-Dist: ttf_opensans>=2020.10.30
42
49
  Requires-Dist: customtkinter<6.0,>=5.2.2
43
50
  Requires-Dist: biopython<2.0,>=1.80
@@ -50,19 +57,15 @@ Requires-Dist: tables<4.0,>=3.8.0
50
57
  Requires-Dist: rapidfuzz<4.0,>=3.9
51
58
  Requires-Dist: keyring<16.0,>=15.1
52
59
  Requires-Dist: screeninfo<1.0,>=0.8.1
53
- Requires-Dist: ipykernel
54
- Requires-Dist: gdown
55
60
  Requires-Dist: fastremap>=1.14.1
56
- Requires-Dist: monai>=1.3.0
57
61
  Requires-Dist: pytz>=2023.3.post1
58
- Requires-Dist: segmentation_models_pytorch>=0.3.3
59
- Requires-Dist: tifffile>=2023.4.12
60
62
  Requires-Dist: tqdm>=4.65.0
61
63
  Requires-Dist: wandb>=0.16.2
62
64
  Requires-Dist: openai<2.0,>=1.50.2
63
- Requires-Dist: nd2reader<4.0,>=3.3.0
64
- Requires-Dist: czifile
65
- Requires-Dist: adjustText<2.0,>=1.2.0
65
+ Requires-Dist: gdown
66
+ Requires-Dist: IPython<9.0,>=8.18.1
67
+ Requires-Dist: ipykernel
68
+ Requires-Dist: ipywidgets<9.0,>=8.1.2
66
69
  Requires-Dist: huggingface-hub<0.25,>=0.24.0
67
70
  Provides-Extra: dev
68
71
  Requires-Dist: pytest<3.11,>=3.9; extra == "dev"
@@ -0,0 +1,171 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": null,
6
+ "id": "b370394d",
7
+ "metadata": {
8
+ "scrolled": true
9
+ },
10
+ "outputs": [],
11
+ "source": [
12
+ "# Description: Generate train and test folders with class subfolders for training DL models.\n",
13
+ "from spacr.io import generate_training_dataset\n",
14
+ "\n",
15
+ "settings = {'src':'path or list of paths',\n",
16
+ " 'dataset_mode':'metadata',\n",
17
+ " 'test_split':0.1,\n",
18
+ " 'metadata_type_by':'col',\n",
19
+ " 'class_metadata':[['c1'],['c2']],\n",
20
+ " 'png_type':'cell_png',\n",
21
+ " 'nuclei_limit':True,\n",
22
+ " 'pathogen_limit':3,\n",
23
+ " 'uninfected':False,\n",
24
+ " 'size':None}\n",
25
+ "\n",
26
+ "generate_training_dataset(settings)"
27
+ ]
28
+ },
29
+ {
30
+ "cell_type": "code",
31
+ "execution_count": null,
32
+ "id": "cb293108",
33
+ "metadata": {
34
+ "scrolled": false
35
+ },
36
+ "outputs": [],
37
+ "source": [
38
+ "# Description: Train a torch model to classify single object images\n",
39
+ "from spacr.deep_spacr import train_test_model\n",
40
+ "\n",
41
+ "settings = {'src':'path', \n",
42
+ " 'train':True,\n",
43
+ " 'test': False,\n",
44
+ " 'custom_model':False,\n",
45
+ " 'custom_model_path':None,\n",
46
+ " 'classes':['nc','pc'],\n",
47
+ " 'model_type':'maxvit_t',\n",
48
+ " 'optimizer_type':'adamw',\n",
49
+ " 'schedule':'reduce_lr_on_plateau', #reduce_lr_on_plateau, step_lr\n",
50
+ " 'loss_type':'focal_loss', #binary_cross_entropy_with_logits, #focal_loss\n",
51
+ " 'normalize':True,\n",
52
+ " 'image_size':224,\n",
53
+ " 'batch_size':64,\n",
54
+ " 'epochs':100,\n",
55
+ " 'val_split':0.1,\n",
56
+ " 'learning_rate':0.0001,\n",
57
+ " 'weight_decay':0.00001,\n",
58
+ " 'dropout_rate':0.1,\n",
59
+ " 'init_weights':True,\n",
60
+ " 'amsgrad':True,\n",
61
+ " 'use_checkpoint':True,\n",
62
+ " 'gradient_accumulation':True,\n",
63
+ " 'gradient_accumulation_steps':4,\n",
64
+ " 'intermedeate_save':True,\n",
65
+ " 'pin_memory':True,\n",
66
+ " 'n_jobs':30,\n",
67
+ " 'train_channels':['r','g','b'],\n",
68
+ " 'augment':False,\n",
69
+ " 'verbose':True}\n",
70
+ "\n",
71
+ "train_test_model(settings)"
72
+ ]
73
+ },
74
+ {
75
+ "cell_type": "code",
76
+ "execution_count": null,
77
+ "id": "09107d9a",
78
+ "metadata": {},
79
+ "outputs": [],
80
+ "source": [
81
+ "# Description: Generate a tar file containing single object images.\n",
82
+ "from spacr.io import generate_dataset\n",
83
+ "\n",
84
+ "settings = {'src':'path or list of paths',\n",
85
+ " 'file_metadata':None,\n",
86
+ " 'experiment':'tsg101_screen_plate1',\n",
87
+ " 'sample':None}\n",
88
+ "\n",
89
+ "generate_dataset(settings)"
90
+ ]
91
+ },
92
+ {
93
+ "cell_type": "code",
94
+ "execution_count": null,
95
+ "id": "c52af6e8",
96
+ "metadata": {},
97
+ "outputs": [],
98
+ "source": [
99
+ "# Description: Classify images in a tar dataset with a trained torch model.\n",
100
+ "from spacr.core import apply_model_to_tar\n",
101
+ "\n",
102
+ "settings = {'tar_path':'path',\n",
103
+ " 'model_path':'path', \n",
104
+ " 'file_type':'cell_png',\n",
105
+ " 'image_size':224,\n",
106
+ " 'batch_size':64,\n",
107
+ " 'normalize':True,\n",
108
+ " 'score_threshold':0.5,\n",
109
+ " 'n_jobs':30,\n",
110
+ " 'verbose':True}\n",
111
+ "\n",
112
+ "result_df = spacr.core.apply_model_to_tar(settings)"
113
+ ]
114
+ },
115
+ {
116
+ "cell_type": "code",
117
+ "execution_count": null,
118
+ "id": "5b36a8ec",
119
+ "metadata": {},
120
+ "outputs": [],
121
+ "source": [
122
+ "# Description: Fix a regression model to estimate the effect size of gRNAs on cell scores.\n",
123
+ "# \n",
124
+ "\n",
125
+ "from spacr.ml import perform_regression\n",
126
+ "import pandas as pd\n",
127
+ "%matplotlib inline\n",
128
+ "\n",
129
+ "settings = {'count_data':'path',\n",
130
+ " 'score_data':'path',\n",
131
+ " 'highlight':'string',\n",
132
+ " 'fraction_threshold':0.1,\n",
133
+ " 'dependent_variable': 'prediction_probability_class_1',\n",
134
+ " 'transform':'log',\n",
135
+ " 'agg_type':'median',\n",
136
+ " 'min_cell_count':25,\n",
137
+ " 'regression_type':'ols',\n",
138
+ " 'random_row_column_effects':False,\n",
139
+ " 'plate':None,\n",
140
+ " 'cov_type':None,\n",
141
+ " 'alpha':0.8,\n",
142
+ " 'nc':'c1',\n",
143
+ " 'pc':'c2',\n",
144
+ " 'other':'c3'}\n",
145
+ "\n",
146
+ "coef_df = perform_regression(settings)"
147
+ ]
148
+ }
149
+ ],
150
+ "metadata": {
151
+ "kernelspec": {
152
+ "display_name": "spacr",
153
+ "language": "python",
154
+ "name": "spacr"
155
+ },
156
+ "language_info": {
157
+ "codemirror_mode": {
158
+ "name": "ipython",
159
+ "version": 3
160
+ },
161
+ "file_extension": ".py",
162
+ "mimetype": "text/x-python",
163
+ "name": "python",
164
+ "nbconvert_exporter": "python",
165
+ "pygments_lexer": "ipython3",
166
+ "version": "3.9.19"
167
+ }
168
+ },
169
+ "nbformat": 4,
170
+ "nbformat_minor": 5
171
+ }
@@ -0,0 +1,101 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": null,
6
+ "id": "9e030e83",
7
+ "metadata": {
8
+ "scrolled": true
9
+ },
10
+ "outputs": [],
11
+ "source": [
12
+ "# Description: Train a ML model to classigy cells based on measurement data\n",
13
+ "\n",
14
+ "from spacr.ml import generate_ml_scores\n",
15
+ "%matplotlib inline\n",
16
+ "\n",
17
+ "settings = {'src':'path',\n",
18
+ " 'model_type_ml':'xgboost',\n",
19
+ " 'heatmap_feature':'predictions',\n",
20
+ " 'grouping':'mean',\n",
21
+ " 'min_max':'allq',\n",
22
+ " 'cmap':'viridis',\n",
23
+ " 'n_estimators':100,\n",
24
+ " 'test_size':0.2,\n",
25
+ " 'location_column':'col',\n",
26
+ " 'positive_control':'c2',\n",
27
+ " 'negative_control':'c1',\n",
28
+ " 'exclude':None,\n",
29
+ " 'include_multinucleated':True,\n",
30
+ " 'include_multiinfected':3,\n",
31
+ " 'include_noninfected':True,\n",
32
+ " 'n_repeats':10,\n",
33
+ " 'top_features':30,\n",
34
+ " 'channel_of_interest':1,\n",
35
+ " 'minimum_cell_count':25,\n",
36
+ " 'remove_low_variance_features':True,\n",
37
+ " 'remove_highly_correlated_features':True,\n",
38
+ " 'verbose':False,\n",
39
+ " 'n_jobs':10}\n",
40
+ "\n",
41
+ "results = spacr.ml.generate_ml_scores(settings)"
42
+ ]
43
+ },
44
+ {
45
+ "cell_type": "code",
46
+ "execution_count": null,
47
+ "id": "e316cb19",
48
+ "metadata": {
49
+ "scrolled": false
50
+ },
51
+ "outputs": [],
52
+ "source": [
53
+ "# Description: Fix a regression model to estimate the effect size of gRNAs on cell scores.\n",
54
+ "\n",
55
+ "from spacr.ml import perform_regression\n",
56
+ "import pandas as pd\n",
57
+ "%matplotlib inline\n",
58
+ "\n",
59
+ "settings = {'count_data':'path',\n",
60
+ " 'score_data':'path',\n",
61
+ " 'highlight':'string',\n",
62
+ " 'fraction_threshold':0.1,\n",
63
+ " 'dependent_variable': 'prediction_probability_class_1',\n",
64
+ " 'transform':'log',\n",
65
+ " 'agg_type':'median',\n",
66
+ " 'min_cell_count':25,\n",
67
+ " 'regression_type':'ols',\n",
68
+ " 'random_row_column_effects':False,\n",
69
+ " 'plate':None,\n",
70
+ " 'cov_type':None,\n",
71
+ " 'alpha':0.8,\n",
72
+ " 'nc':'c1',\n",
73
+ " 'pc':'c2',\n",
74
+ " 'other':'c3'}\n",
75
+ "\n",
76
+ "coef_df = perform_regression(settings)"
77
+ ]
78
+ }
79
+ ],
80
+ "metadata": {
81
+ "kernelspec": {
82
+ "display_name": "spacr",
83
+ "language": "python",
84
+ "name": "spacr"
85
+ },
86
+ "language_info": {
87
+ "codemirror_mode": {
88
+ "name": "ipython",
89
+ "version": 3
90
+ },
91
+ "file_extension": ".py",
92
+ "mimetype": "text/x-python",
93
+ "name": "python",
94
+ "nbconvert_exporter": "python",
95
+ "pygments_lexer": "ipython3",
96
+ "version": "3.9.19"
97
+ }
98
+ },
99
+ "nbformat": 4,
100
+ "nbformat_minor": 5
101
+ }
@@ -6,34 +6,41 @@ with open("README.rst", "r", encoding="utf-8") as fh:
6
6
  long_description = fh.read()
7
7
 
8
8
  dependencies = [
9
- 'torch>=2.0,<3.0',
10
- 'torchvision>=0.1,<1.0',
11
- 'torch-geometric>=2.5,<3.0',
12
9
  'numpy>=1.26.4,<2.0',
13
- 'bottleneck>=1.3.6,<2.0',
14
- 'numexpr>=2.8.4,<3.0',
15
10
  'pandas>=2.2.1,<3.0',
16
- 'statsmodels>=0.14.1,<1.0',
11
+ 'scipy>=1.12.0,<2.0',
12
+ 'cellpose>=3.0.6,<4.0',
17
13
  'scikit-image>=0.22.0,<1.0',
18
14
  'scikit-learn>=1.4.1,<2.0',
19
- 'seaborn>=0.13.2,<1.0',
20
- 'matplotlib>=3.8.3,<4.0',
21
- 'shap>=0.45.0,<1.0',
22
- 'pillow>=10.2.0,<11.0',
23
- 'imageio>=2.34.0,<3.0',
24
- 'scipy>=1.12.0,<2.0',
25
- 'ipywidgets>=8.1.2,<9.0',
26
15
  'mahotas>=1.4.13,<2.0',
27
16
  'btrack>=0.6.5,<1.0',
28
17
  'trackpy>=0.6.2,<1.0',
29
- 'cellpose>=3.0.6,<4.0',
30
- 'IPython>=8.18.1,<9.0',
18
+ 'statsmodels>=0.14.1,<1.0',
19
+ 'shap>=0.45.0,<1.0',
20
+ 'torch>=2.0,<3.0',
21
+ 'torchvision>=0.1,<1.0',
22
+ 'torch-geometric>=2.5,<3.0',
23
+ 'torchcam>=0.4.0,<1.0',
24
+ 'transformers>=4.45.2, <5.0',
25
+ 'segmentation_models_pytorch>=0.3.3',
26
+ 'monai>=1.3.0',
27
+ 'captum>=0.7.0, <1.0',
28
+ 'seaborn>=0.13.2,<1.0',
29
+ 'matplotlib>=3.8.3,<4.0',
30
+ 'adjustText>=1.2.0,<2.0',
31
+ 'bottleneck>=1.3.6,<2.0',
32
+ 'numexpr>=2.8.4,<3.0',
31
33
  'opencv-python-headless>=4.9.0.80,<5.0',
34
+ 'pillow>=10.2.0,<11.0',
35
+ 'tifffile>=2023.4.12',
36
+ 'nd2reader>=3.3.0, <4.0',
37
+ 'czifile',
38
+ 'imageio>=2.34.0,<3.0',
39
+ 'pingouin>=0.5.5,<1.0',
32
40
  'umap-learn>=0.5.6,<1.0',
33
41
  'ttkthemes>=3.2.2,<4.0',
34
42
  'xgboost>=2.0.3,<3.0',
35
43
  'PyWavelets>=1.6.0,<2.0',
36
- 'torchcam>=0.4.0,<1.0',
37
44
  'ttf_opensans>=2020.10.30',
38
45
  'customtkinter>=5.2.2,<6.0',
39
46
  'biopython>=1.80,<2.0',
@@ -46,25 +53,21 @@ dependencies = [
46
53
  'rapidfuzz>=3.9, <4.0',
47
54
  'keyring>=15.1, <16.0',
48
55
  'screeninfo>=0.8.1,<1.0',
49
- 'ipykernel',
50
- 'gdown',
51
56
  'fastremap>=1.14.1',
52
- 'monai>=1.3.0',
53
57
  'pytz>=2023.3.post1',
54
- 'segmentation_models_pytorch>=0.3.3',
55
- 'tifffile>=2023.4.12',
56
58
  'tqdm>=4.65.0',
57
59
  'wandb>=0.16.2',
58
60
  'openai>=1.50.2, <2.0',
59
- 'nd2reader>=3.3.0, <4.0',
60
- 'czifile',
61
- 'adjustText>=1.2.0,<2.0',
61
+ 'gdown',
62
+ 'IPython>=8.18.1,<9.0',
63
+ 'ipykernel',
64
+ 'ipywidgets>=8.1.2,<9.0',
62
65
  'huggingface-hub>=0.24.0,<0.25'
63
66
  ]
64
67
 
65
68
  setup(
66
69
  name="spacr",
67
- version="0.3.2",
70
+ version="0.3.22",
68
71
  author="Einar Birnir Olafsson",
69
72
  author_email="olafsson@med.umich.com",
70
73
  description="Spatial phenotype analysis of crisp screens (SpaCr)",
@@ -114,4 +117,3 @@ for dep in deps:
114
117
  subprocess.run(['pip', 'install', dep], check=True)
115
118
  except subprocess.CalledProcessError:
116
119
  pass
117
-
@@ -844,4 +844,108 @@ def generate_mediar_masks(src, settings, object_type):
844
844
  gc.collect()
845
845
  torch.cuda.empty_cache()
846
846
 
847
- print("Mask generation completed.")
847
+ print("Mask generation completed.")
848
+
849
+ def generate_screen_graphs(settings):
850
+ """
851
+ Generate screen graphs for different measurements in a given source directory.
852
+
853
+ Args:
854
+ src (str or list): Path(s) to the source directory or directories.
855
+ tables (list): List of tables to include in the analysis (default: ['cell', 'nucleus', 'pathogen', 'cytoplasm']).
856
+ graph_type (str): Type of graph to generate (default: 'bar').
857
+ summary_func (str or function): Function to summarize data (default: 'mean').
858
+ y_axis_start (float): Starting value for the y-axis (default: 0).
859
+ error_bar_type (str): Type of error bar to use ('std' or 'sem') (default: 'std').
860
+ theme (str): Theme for the graph (default: 'pastel').
861
+ representation (str): Representation for grouping (default: 'well').
862
+
863
+ Returns:
864
+ figs (list): List of generated figures.
865
+ results (list): List of corresponding result DataFrames.
866
+ """
867
+
868
+ from .plot import spacrGraph
869
+ from .io import _read_and_merge_data
870
+ from.utils import annotate_conditions
871
+
872
+ if isinstance(settings['src'], str):
873
+ srcs = [settings['src']]
874
+ else:
875
+ srcs = settings['src']
876
+
877
+ all_df = pd.DataFrame()
878
+ figs = []
879
+ results = []
880
+
881
+ for src in srcs:
882
+ db_loc = [os.path.join(src, 'measurements', 'measurements.db')]
883
+
884
+ # Read and merge data from the database
885
+ df, _ = _read_and_merge_data(db_loc, settings['tables'], verbose=True, nuclei_limit=settings['nuclei_limit'], pathogen_limit=settings['pathogen_limit'], uninfected=settings['uninfected'])
886
+
887
+ # Annotate the data
888
+ df = annotate_conditions(df, cells=settings['cells'], cell_loc=None, pathogens=settings['controls'], pathogen_loc=settings['controls_loc'], treatments=None, treatment_loc=None)
889
+
890
+ # Calculate recruitment metric
891
+ df['recruitment'] = df['pathogen_channel_1_mean_intensity'] / df['cytoplasm_channel_1_mean_intensity']
892
+
893
+ # Combine with the overall DataFrame
894
+ all_df = pd.concat([all_df, df], ignore_index=True)
895
+
896
+ # Generate individual plot
897
+ plotter = spacrGraph(df,
898
+ grouping_column='pathogen',
899
+ data_column='recruitment',
900
+ graph_type=settings['graph_type'],
901
+ summary_func=settings['summary_func'],
902
+ y_axis_start=settings['y_axis_start'],
903
+ error_bar_type=settings['error_bar_type'],
904
+ theme=settings['theme'],
905
+ representation=settings['representation'])
906
+
907
+ plotter.create_plot()
908
+ fig = plotter.get_figure()
909
+ results_df = plotter.get_results()
910
+
911
+ # Append to the lists
912
+ figs.append(fig)
913
+ results.append(results_df)
914
+
915
+ # Generate plot for the combined data (all_df)
916
+ plotter = spacrGraph(all_df,
917
+ grouping_column='pathogen',
918
+ data_column='recruitment',
919
+ graph_type=settings['graph_type'],
920
+ summary_func=settings['summary_func'],
921
+ y_axis_start=settings['y_axis_start'],
922
+ error_bar_type=settings['error_bar_type'],
923
+ theme=settings['theme'],
924
+ representation=settings['representation'])
925
+
926
+ plotter.create_plot()
927
+ fig = plotter.get_figure()
928
+ results_df = plotter.get_results()
929
+
930
+ figs.append(fig)
931
+ results.append(results_df)
932
+
933
+ # Save figures and results
934
+ for i, fig in enumerate(figs):
935
+ res = results[i]
936
+
937
+ if i < len(srcs):
938
+ source = srcs[i]
939
+ else:
940
+ source = srcs[0]
941
+
942
+ # Ensure the destination folder exists
943
+ dst = os.path.join(source, 'results')
944
+ print(f"Savings results to {dst}")
945
+ os.makedirs(dst, exist_ok=True)
946
+
947
+ # Save the figure and results DataFrame
948
+ fig.savefig(os.path.join(dst, f"figure_controls_{i}_{settings['representation']}_{settings['summary_func']}_{settings['graph_type']}.pdf"), format='pdf')
949
+ res.to_csv(os.path.join(dst, f"results_controls_{i}_{settings['representation']}_{settings['summary_func']}_{settings['graph_type']}.csv"), index=False)
950
+
951
+ return