spacr 0.3.37__tar.gz → 0.3.41__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.37/spacr.egg-info → spacr-0.3.41}/PKG-INFO +1 -1
  2. {spacr-0.3.37 → spacr-0.3.41}/setup.py +1 -1
  3. {spacr-0.3.37 → spacr-0.3.41}/spacr/core.py +1 -1
  4. {spacr-0.3.37 → spacr-0.3.41}/spacr/io.py +20 -13
  5. {spacr-0.3.37 → spacr-0.3.41}/spacr/ml.py +33 -24
  6. {spacr-0.3.37 → spacr-0.3.41}/spacr/plot.py +427 -37
  7. {spacr-0.3.37 → spacr-0.3.41}/spacr/toxo.py +202 -16
  8. {spacr-0.3.37 → spacr-0.3.41}/spacr/utils.py +14 -12
  9. {spacr-0.3.37 → spacr-0.3.41/spacr.egg-info}/PKG-INFO +1 -1
  10. {spacr-0.3.37 → spacr-0.3.41}/.readthedocs.yaml +0 -0
  11. {spacr-0.3.37 → spacr-0.3.41}/LICENSE +0 -0
  12. {spacr-0.3.37 → spacr-0.3.41}/MANIFEST.in +0 -0
  13. {spacr-0.3.37 → spacr-0.3.41}/README.rst +0 -0
  14. {spacr-0.3.37 → spacr-0.3.41}/deploy_docs.sh +0 -0
  15. {spacr-0.3.37 → spacr-0.3.41}/docs/requirements.txt +0 -0
  16. {spacr-0.3.37 → spacr-0.3.41}/docs/source/Makefile +0 -0
  17. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/doctrees/environment.pickle +0 -0
  18. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/index.html +0 -0
  19. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/app_annotate.html +0 -0
  20. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/app_classify.html +0 -0
  21. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/app_make_masks.html +0 -0
  22. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/app_mask.html +0 -0
  23. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/app_measure.html +0 -0
  24. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/app_sequencing.html +0 -0
  25. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/app_umap.html +0 -0
  26. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/core.html +0 -0
  27. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/deep_spacr.html +0 -0
  28. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/graph_learning.html +0 -0
  29. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/gui.html +0 -0
  30. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/gui_core.html +0 -0
  31. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/gui_elements.html +0 -0
  32. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/gui_utils.html +0 -0
  33. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/io.html +0 -0
  34. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/logger.html +0 -0
  35. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/measure.html +0 -0
  36. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/plot.html +0 -0
  37. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/sequencing.html +0 -0
  38. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/settings.html +0 -0
  39. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/sim.html +0 -0
  40. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/timelapse.html +0 -0
  41. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_modules/spacr/utils.html +0 -0
  42. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_sources/index.rst.txt +0 -0
  43. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_sources/modules.rst.txt +0 -0
  44. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_sources/spacr.rst.txt +0 -0
  45. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  46. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/basic.css +0 -0
  47. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/css/badge_only.css +0 -0
  48. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  49. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  50. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  51. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  52. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  53. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
  54. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  55. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  56. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  57. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  58. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  59. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/css/fonts/lato-bold.woff +0 -0
  60. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/css/fonts/lato-bold.woff2 +0 -0
  61. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  62. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  63. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/css/fonts/lato-normal.woff +0 -0
  64. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/css/fonts/lato-normal.woff2 +0 -0
  65. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/css/theme.css +0 -0
  66. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/doctools.js +0 -0
  67. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/documentation_options.js +0 -0
  68. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/file.png +0 -0
  69. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/jquery.js +0 -0
  70. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/js/badge_only.js +0 -0
  71. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/js/html5shiv-printshiv.min.js +0 -0
  72. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/js/html5shiv.min.js +0 -0
  73. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/js/theme.js +0 -0
  74. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/language_data.js +0 -0
  75. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/minus.png +0 -0
  76. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/plus.png +0 -0
  77. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/pygments.css +0 -0
  78. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/searchtools.js +0 -0
  79. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/_static/sphinx_highlight.js +0 -0
  80. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/genindex.html +0 -0
  81. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/index.html +0 -0
  82. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/modules.html +0 -0
  83. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/objects.inv +0 -0
  84. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/py-modindex.html +0 -0
  85. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/search.html +0 -0
  86. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/searchindex.js +0 -0
  87. {spacr-0.3.37 → spacr-0.3.41}/docs/source/_build/html/spacr.html +0 -0
  88. {spacr-0.3.37 → spacr-0.3.41}/docs/source/conf.py +0 -0
  89. {spacr-0.3.37 → spacr-0.3.41}/docs/source/index.rst +0 -0
  90. {spacr-0.3.37 → spacr-0.3.41}/docs/source/make.bat +0 -0
  91. {spacr-0.3.37 → spacr-0.3.41}/docs/source/modules.rst +0 -0
  92. {spacr-0.3.37 → spacr-0.3.41}/docs/source/spacr.rst +0 -0
  93. {spacr-0.3.37 → spacr-0.3.41}/environment.yaml +0 -0
  94. {spacr-0.3.37 → spacr-0.3.41}/fonts/OpenSans-Regular.ttf +0 -0
  95. {spacr-0.3.37 → spacr-0.3.41}/notebooks/cv_scoring_nb.ipynb +0 -0
  96. {spacr-0.3.37 → spacr-0.3.41}/notebooks/deep_learning_spacr.ipynb +0 -0
  97. {spacr-0.3.37 → spacr-0.3.41}/notebooks/machine_learning_spacr_nb.ipynb +0 -0
  98. {spacr-0.3.37 → spacr-0.3.41}/notebooks/spacr_0.1_all_settings_git.ipynb +0 -0
  99. {spacr-0.3.37 → spacr-0.3.41}/notebooks/spacr_0.1_minimal.ipynb +0 -0
  100. {spacr-0.3.37 → spacr-0.3.41}/path/home/carruthers/datasets/plate1/measurements/measurements.db +0 -0
  101. {spacr-0.3.37 → spacr-0.3.41}/path/home/carruthers/datasets/plate1/settings/measure_crop_settings.csv +0 -0
  102. {spacr-0.3.37 → spacr-0.3.41}/path/settings/preprocess_generate_masks_settings.csv +0 -0
  103. {spacr-0.3.37 → spacr-0.3.41}/requirements.txt +0 -0
  104. {spacr-0.3.37 → spacr-0.3.41}/settings/measure_crop_settings.csv +0 -0
  105. {spacr-0.3.37 → spacr-0.3.41}/setup.cfg +0 -0
  106. {spacr-0.3.37 → spacr-0.3.41}/setup_docs.sh +0 -0
  107. {spacr-0.3.37 → spacr-0.3.41}/source/conf.py +0 -0
  108. {spacr-0.3.37 → spacr-0.3.41}/source/index.rst +0 -0
  109. {spacr-0.3.37 → spacr-0.3.41}/source/modules.rst +0 -0
  110. {spacr-0.3.37 → spacr-0.3.41}/source/setup.rst +0 -0
  111. {spacr-0.3.37 → spacr-0.3.41}/source/spacr.rst +0 -0
  112. {spacr-0.3.37 → spacr-0.3.41}/spacr/__init__.py +0 -0
  113. {spacr-0.3.37 → spacr-0.3.41}/spacr/__main__.py +0 -0
  114. {spacr-0.3.37 → spacr-0.3.41}/spacr/app_annotate.py +0 -0
  115. {spacr-0.3.37 → spacr-0.3.41}/spacr/app_classify.py +0 -0
  116. {spacr-0.3.37 → spacr-0.3.41}/spacr/app_make_masks.py +0 -0
  117. {spacr-0.3.37 → spacr-0.3.41}/spacr/app_mask.py +0 -0
  118. {spacr-0.3.37 → spacr-0.3.41}/spacr/app_measure.py +0 -0
  119. {spacr-0.3.37 → spacr-0.3.41}/spacr/app_sequencing.py +0 -0
  120. {spacr-0.3.37 → spacr-0.3.41}/spacr/app_umap.py +0 -0
  121. {spacr-0.3.37 → spacr-0.3.41}/spacr/cellpose.py +0 -0
  122. {spacr-0.3.37 → spacr-0.3.41}/spacr/deep_spacr.py +0 -0
  123. {spacr-0.3.37 → spacr-0.3.41}/spacr/gui.py +0 -0
  124. {spacr-0.3.37 → spacr-0.3.41}/spacr/gui_core.py +0 -0
  125. {spacr-0.3.37 → spacr-0.3.41}/spacr/gui_elements.py +0 -0
  126. {spacr-0.3.37 → spacr-0.3.41}/spacr/gui_utils.py +0 -0
  127. {spacr-0.3.37 → spacr-0.3.41}/spacr/logger.py +0 -0
  128. {spacr-0.3.37 → spacr-0.3.41}/spacr/measure.py +0 -0
  129. {spacr-0.3.37 → spacr-0.3.41}/spacr/mediar.py +0 -0
  130. {spacr-0.3.37 → spacr-0.3.41}/spacr/openai.py +0 -0
  131. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/.gitignore +0 -0
  132. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/LICENSE +0 -0
  133. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/README.md +0 -0
  134. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/SetupDict.py +0 -0
  135. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/config/baseline.json +0 -0
  136. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/config/mediar_example.json +0 -0
  137. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/config/pred/pred_mediar.json +0 -0
  138. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/config/step1_pretraining/phase1.json +0 -0
  139. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/config/step1_pretraining/phase2.json +0 -0
  140. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/config/step2_finetuning/finetuning1.json +0 -0
  141. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/config/step2_finetuning/finetuning2.json +0 -0
  142. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/config/step3_prediction/base_prediction.json +0 -0
  143. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/config/step3_prediction/ensemble_tta.json +0 -0
  144. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/core/BasePredictor.py +0 -0
  145. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/core/BaseTrainer.py +0 -0
  146. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/core/Baseline/Predictor.py +0 -0
  147. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/core/Baseline/Trainer.py +0 -0
  148. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/core/Baseline/__init__.py +0 -0
  149. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/core/Baseline/utils.py +0 -0
  150. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/core/MEDIAR/EnsemblePredictor.py +0 -0
  151. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/core/MEDIAR/Predictor.py +0 -0
  152. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/core/MEDIAR/Trainer.py +0 -0
  153. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/core/MEDIAR/__init__.py +0 -0
  154. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/core/MEDIAR/utils.py +0 -0
  155. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/core/__init__.py +0 -0
  156. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/core/utils.py +0 -0
  157. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/evaluate.py +0 -0
  158. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/generate_mapping.py +0 -0
  159. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/image/examples/img1.tiff +0 -0
  160. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/image/examples/img2.tif +0 -0
  161. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/image/failure_cases.png +0 -0
  162. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/image/mediar_framework.png +0 -0
  163. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/image/mediar_model.PNG +0 -0
  164. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/image/mediar_results.png +0 -0
  165. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/main.py +0 -0
  166. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/predict.py +0 -0
  167. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/requirements.txt +0 -0
  168. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/train_tools/__init__.py +0 -0
  169. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/train_tools/data_utils/__init__.py +0 -0
  170. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/train_tools/data_utils/custom/CellAware.py +0 -0
  171. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/train_tools/data_utils/custom/LoadImage.py +0 -0
  172. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/train_tools/data_utils/custom/NormalizeImage.py +0 -0
  173. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/train_tools/data_utils/custom/__init__.py +0 -0
  174. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/train_tools/data_utils/custom/modalities.pkl +0 -0
  175. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/train_tools/data_utils/datasetter.py +0 -0
  176. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/train_tools/data_utils/transforms.py +0 -0
  177. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/train_tools/data_utils/utils.py +0 -0
  178. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/train_tools/measures.py +0 -0
  179. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/train_tools/models/MEDIARFormer.py +0 -0
  180. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/train_tools/models/__init__.py +0 -0
  181. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/MEDIAR/train_tools/utils.py +0 -0
  182. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/data/lopit.csv +0 -0
  183. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/data/toxoplasma_metadata.csv +0 -0
  184. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/OFL.txt +0 -0
  185. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/OpenSans-Italic-VariableFont_wdth,wght.ttf +0 -0
  186. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/OpenSans-VariableFont_wdth,wght.ttf +0 -0
  187. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/README.txt +0 -0
  188. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans-Bold.ttf +0 -0
  189. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans-BoldItalic.ttf +0 -0
  190. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans-ExtraBold.ttf +0 -0
  191. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans-ExtraBoldItalic.ttf +0 -0
  192. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans-Italic.ttf +0 -0
  193. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans-Light.ttf +0 -0
  194. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans-LightItalic.ttf +0 -0
  195. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans-Medium.ttf +0 -0
  196. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans-MediumItalic.ttf +0 -0
  197. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans-Regular.ttf +0 -0
  198. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans-SemiBold.ttf +0 -0
  199. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans-SemiBoldItalic.ttf +0 -0
  200. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_Condensed-Bold.ttf +0 -0
  201. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_Condensed-BoldItalic.ttf +0 -0
  202. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_Condensed-ExtraBold.ttf +0 -0
  203. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_Condensed-ExtraBoldItalic.ttf +0 -0
  204. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_Condensed-Italic.ttf +0 -0
  205. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_Condensed-Light.ttf +0 -0
  206. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_Condensed-LightItalic.ttf +0 -0
  207. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_Condensed-Medium.ttf +0 -0
  208. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_Condensed-MediumItalic.ttf +0 -0
  209. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_Condensed-Regular.ttf +0 -0
  210. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_Condensed-SemiBold.ttf +0 -0
  211. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_Condensed-SemiBoldItalic.ttf +0 -0
  212. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Bold.ttf +0 -0
  213. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-BoldItalic.ttf +0 -0
  214. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-ExtraBold.ttf +0 -0
  215. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-ExtraBoldItalic.ttf +0 -0
  216. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Italic.ttf +0 -0
  217. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Light.ttf +0 -0
  218. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-LightItalic.ttf +0 -0
  219. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Medium.ttf +0 -0
  220. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-MediumItalic.ttf +0 -0
  221. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Regular.ttf +0 -0
  222. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-SemiBold.ttf +0 -0
  223. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-SemiBoldItalic.ttf +0 -0
  224. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/abort.png +0 -0
  225. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/annotate.png +0 -0
  226. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/cellpose_all.png +0 -0
  227. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/cellpose_masks.png +0 -0
  228. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/classify.png +0 -0
  229. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/convert.png +0 -0
  230. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/default.png +0 -0
  231. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/dna_matrix.mp4 +0 -0
  232. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/download.png +0 -0
  233. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/logo.pdf +0 -0
  234. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/logo_spacr.png +0 -0
  235. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/logo_spacr_1.png +0 -0
  236. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/make_masks.png +0 -0
  237. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/map_barcodes.png +0 -0
  238. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/mask.png +0 -0
  239. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/measure.png +0 -0
  240. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/ml_analyze.png +0 -0
  241. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/plaque.png +0 -0
  242. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/recruitment.png +0 -0
  243. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/regression.png +0 -0
  244. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/run.png +0 -0
  245. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/sequencing.png +0 -0
  246. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/settings.png +0 -0
  247. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/train_cellpose.png +0 -0
  248. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/icons/umap.png +0 -0
  249. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/images/plate1_E01_T0001F001L01A01Z01C02.tif +0 -0
  250. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/images/plate1_E01_T0001F001L01A02Z01C01.tif +0 -0
  251. {spacr-0.3.37 → spacr-0.3.41}/spacr/resources/images/plate1_E01_T0001F001L01A03Z01C03.tif +0 -0
  252. {spacr-0.3.37 → spacr-0.3.41}/spacr/sequencing.py +0 -0
  253. {spacr-0.3.37 → spacr-0.3.41}/spacr/settings.py +0 -0
  254. {spacr-0.3.37 → spacr-0.3.41}/spacr/sim.py +0 -0
  255. {spacr-0.3.37 → spacr-0.3.41}/spacr/submodules.py +0 -0
  256. {spacr-0.3.37 → spacr-0.3.41}/spacr/timelapse.py +0 -0
  257. {spacr-0.3.37 → spacr-0.3.41}/spacr/version.py +0 -0
  258. {spacr-0.3.37 → spacr-0.3.41}/spacr.egg-info/SOURCES.txt +0 -0
  259. {spacr-0.3.37 → spacr-0.3.41}/spacr.egg-info/dependency_links.txt +0 -0
  260. {spacr-0.3.37 → spacr-0.3.41}/spacr.egg-info/entry_points.txt +0 -0
  261. {spacr-0.3.37 → spacr-0.3.41}/spacr.egg-info/requires.txt +0 -0
  262. {spacr-0.3.37 → spacr-0.3.41}/spacr.egg-info/top_level.txt +0 -0
  263. {spacr-0.3.37 → spacr-0.3.41}/tests/test_annotate_app.py +0 -0
  264. {spacr-0.3.37 → spacr-0.3.41}/tests/test_core.py +0 -0
  265. {spacr-0.3.37 → spacr-0.3.41}/tests/test_gui_classify_app.py +0 -0
  266. {spacr-0.3.37 → spacr-0.3.41}/tests/test_gui_mask_app.py +0 -0
  267. {spacr-0.3.37 → spacr-0.3.41}/tests/test_gui_measure_app.py +0 -0
  268. {spacr-0.3.37 → spacr-0.3.41}/tests/test_gui_sim_app.py +0 -0
  269. {spacr-0.3.37 → spacr-0.3.41}/tests/test_gui_utils.py +0 -0
  270. {spacr-0.3.37 → spacr-0.3.41}/tests/test_io.py +0 -0
  271. {spacr-0.3.37 → spacr-0.3.41}/tests/test_mask_app.py +0 -0
  272. {spacr-0.3.37 → spacr-0.3.41}/tests/test_measure.py +0 -0
  273. {spacr-0.3.37 → spacr-0.3.41}/tests/test_plot.py +0 -0
  274. {spacr-0.3.37 → spacr-0.3.41}/tests/test_sim.py +0 -0
  275. {spacr-0.3.37 → spacr-0.3.41}/tests/test_timelapse.py +0 -0
  276. {spacr-0.3.37 → spacr-0.3.41}/tests/test_train.py +0 -0
  277. {spacr-0.3.37 → spacr-0.3.41}/tests/test_umap.py +0 -0
  278. {spacr-0.3.37 → spacr-0.3.41}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: spacr
3
- Version: 0.3.37
3
+ Version: 0.3.41
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.37",
70
+ version="0.3.41",
71
71
  author="Einar Birnir Olafsson",
72
72
  author_email="olafsson@med.umich.com",
73
73
  description="Spatial phenotype analysis of crisp screens (SpaCr)",
@@ -143,7 +143,7 @@ def preprocess_generate_masks(src, settings={}):
143
143
  start = time.time()
144
144
  if i+1 <= settings['examples_to_plot']:
145
145
  file_path = os.path.join(merged_src, file)
146
- plot_image_mask_overlay(file_path, settings['channels'], settings['cell_channel'], settings['nucleus_channel'], settings['pathogen_channel'], figuresize=10, normalize=True, thickness=3, save_pdf=True)
146
+ plot_image_mask_overlay(file_path, settings['channels'], settings['cell_channel'], settings['nucleus_channel'], settings['pathogen_channel'], figuresize=10, percentiles=(1,99), thickness=3, save_pdf=True)
147
147
  stop = time.time()
148
148
  duration = stop-start
149
149
  time_ls.append(duration)
@@ -1686,11 +1686,16 @@ def preprocess_img_data(settings):
1686
1686
  print(f'Found {extension_counts[most_common_extension]} {most_common_extension} files')
1687
1687
  else:
1688
1688
  print(f'Could not find any {valid_ext} files in {src} only found {extension_counts[0]}')
1689
- if os.path.exists(src+'/stack'):
1689
+
1690
+
1691
+
1692
+
1693
+
1694
+ if os.path.exists(os.path.join(src,'stack')):
1690
1695
  print('Found existing stack folder.')
1691
- if os.path.exists(src+'/channel_stack'):
1696
+ if os.path.exists(os.path.join(src,'channel_stack')):
1692
1697
  print('Found existing channel_stack folder.')
1693
- if os.path.exists(src+'/norm_channel_stack'):
1698
+ if os.path.exists(os.path.join(src,'norm_channel_stack')):
1694
1699
  print('Found existing norm_channel_stack folder. Skipping preprocessing')
1695
1700
  return settings, src
1696
1701
 
@@ -1713,12 +1718,13 @@ def preprocess_img_data(settings):
1713
1718
 
1714
1719
  src = _run_test_mode(settings['src'], regex, timelapse, test_images, random_test)
1715
1720
  settings['src'] = src
1716
-
1721
+
1722
+ stack_path = os.path.join(src, 'stack')
1717
1723
  if img_format == None:
1718
- if not os.path.exists(src+'/stack'):
1724
+ if not os.path.exists(stack_path):
1719
1725
  _merge_channels(src, plot=False)
1720
-
1721
- if not os.path.exists(src+'/stack'):
1726
+
1727
+ if not os.path.exists(stack_path):
1722
1728
  try:
1723
1729
  if not img_format == None:
1724
1730
  if timelapse:
@@ -1727,7 +1733,7 @@ def preprocess_img_data(settings):
1727
1733
  _rename_and_organize_image_files(src, regex, batch_size, pick_slice, skip_mode, metadata_type, img_format)
1728
1734
 
1729
1735
  #Make sure no batches will be of only one image
1730
- all_imgs = len(src+'/stack')
1736
+ all_imgs = len(stack_path)
1731
1737
  full_batches = all_imgs // batch_size
1732
1738
  last_batch_size = all_imgs % batch_size
1733
1739
 
@@ -1738,26 +1744,27 @@ def preprocess_img_data(settings):
1738
1744
  raise ValueError("Only one batch of size 1 detected. Adjust the batch size.")
1739
1745
  # If the last batch is of size 1, merge it with the second last batch
1740
1746
  elif full_batches > 0:
1747
+ print(f"all images: {all_imgs}, full batch: {full_batches}, last batch: {last_batch_size}")
1741
1748
  raise ValueError("Last batch of size 1 detected. Adjust the batch size.")
1742
1749
 
1743
1750
  _merge_channels(src, plot=False)
1744
1751
 
1745
1752
  if timelapse:
1746
- _create_movies_from_npy_per_channel(src+'/stack', fps=2)
1753
+ _create_movies_from_npy_per_channel(stack_path, fps=2)
1747
1754
 
1748
1755
  if plot:
1749
1756
  print(f'plotting {nr} images from {src}/stack')
1750
- plot_arrays(src+'/stack', figuresize, cmap, nr=nr, normalize=normalize)
1757
+ plot_arrays(stack_path, figuresize, cmap, nr=nr, normalize=normalize)
1751
1758
 
1752
1759
  if all_to_mip:
1753
- _mip_all(src+'/stack')
1760
+ _mip_all(stack_path)
1754
1761
  if plot:
1755
1762
  print(f'plotting {nr} images from {src}/stack')
1756
- plot_arrays(src+'/stack', figuresize, cmap, nr=nr, normalize=normalize)
1763
+ plot_arrays(stack_path, figuresize, cmap, nr=nr, normalize=normalize)
1757
1764
  except Exception as e:
1758
1765
  print(f"Error: {e}")
1759
1766
 
1760
- concatenate_and_normalize(src=src+'/stack',
1767
+ concatenate_and_normalize(src=stack_path,
1761
1768
  channels=mask_channels,
1762
1769
  save_dtype=np.float32,
1763
1770
  settings=settings)
@@ -134,7 +134,7 @@ def scale_variables(X, y):
134
134
 
135
135
  return X_scaled, y_scaled
136
136
 
137
- def process_model_coefficients(model, regression_type, X, y, highlight):
137
+ def process_model_coefficients(model, regression_type, X, y, nc, pc, controls):
138
138
  """Return DataFrame of model coefficients and p-values."""
139
139
  if regression_type in ['ols', 'gls', 'wls', 'rlm', 'glm', 'mixed', 'quantile', 'logit', 'probit', 'poisson']:
140
140
  coefs = model.params
@@ -169,8 +169,8 @@ def process_model_coefficients(model, regression_type, X, y, highlight):
169
169
  coef_df['p_value'] = np.nan # Placeholder since sklearn doesn't provide p-values
170
170
 
171
171
  coef_df['-log10(p_value)'] = -np.log10(coef_df['p_value'])
172
- coef_df['highlight'] = coef_df['feature'].apply(lambda x: highlight in x)
173
-
172
+ coef_df['grna'] = coef_df['feature'].str.extract(r'\[(.*?)\]')[0]
173
+ coef_df['condition'] = coef_df.apply(lambda row: 'nc' if nc in row['feature'] else 'pc' if pc in row['feature'] else ('control' if row['grna'] in controls else 'other'),axis=1)
174
174
  return coef_df[~coef_df['feature'].str.contains('row|column')]
175
175
 
176
176
  def prepare_formula(dependent_variable, random_row_column_effects=False):
@@ -284,15 +284,13 @@ def check_and_clean_data(df, dependent_variable):
284
284
  df_cleaned['row'] = df['row']
285
285
  df_cleaned['column'] = df['column']
286
286
 
287
- #display(df_cleaned)
288
-
289
287
  # Create a new column 'gene_fraction' that sums the fractions by gene within the same well
290
288
  df_cleaned['gene_fraction'] = df_cleaned.groupby(['prc', 'gene'])['fraction'].transform('sum')
291
289
 
292
290
  print("Data is ready for model fitting.")
293
291
  return df_cleaned
294
292
 
295
- def regression(df, csv_path, dependent_variable='predictions', regression_type=None, alpha=1.0, random_row_column_effects=False, highlight='220950', dst=None, cov_type=None):
293
+ def regression(df, csv_path, dependent_variable='predictions', regression_type=None, alpha=1.0, random_row_column_effects=False, nc='233460', pc='220950', controls=[''], dst=None, cov_type=None, plot=False):
296
294
  from .plot import volcano_plot, plot_histogram
297
295
 
298
296
  # Generate the volcano filename
@@ -312,9 +310,7 @@ def regression(df, csv_path, dependent_variable='predictions', regression_type=N
312
310
  if regression_type is None:
313
311
  regression_type = 'ols' if is_normal else 'glm'
314
312
 
315
- #display('before check_and_clean_data:',df)
316
313
  df = check_and_clean_data(df, dependent_variable)
317
- #display('after check_and_clean_data:',df)
318
314
 
319
315
  # Handle mixed effects if row/column effect is treated as random
320
316
  if random_row_column_effects:
@@ -340,10 +336,10 @@ def regression(df, csv_path, dependent_variable='predictions', regression_type=N
340
336
  model = regression_model(X, y, regression_type=regression_type, groups=groups, alpha=alpha, cov_type=cov_type)
341
337
 
342
338
  # Process the model coefficients
343
- coef_df = process_model_coefficients(model, regression_type, X, y, highlight)
344
-
345
- # Plot the volcano plot
346
- volcano_plot(coef_df, volcano_path)
339
+ coef_df = process_model_coefficients(model, regression_type, X, y, nc, pc, controls)
340
+
341
+ if plot:
342
+ volcano_plot(coef_df, volcano_path)
347
343
 
348
344
  return model, coef_df
349
345
 
@@ -487,19 +483,28 @@ def perform_regression(settings):
487
483
  if settings['transform'] is None:
488
484
  _ = plot_plates(score_data_df, variable=dependent_variable, grouping='mean', min_max='allq', cmap='viridis', min_count=settings['min_cell_count'], dst = res_folder)
489
485
 
490
- model, coef_df = regression(merged_df, csv_path, dependent_variable, settings['regression_type'], settings['alpha'], settings['random_row_column_effects'], highlight=settings['highlight'], dst=res_folder, cov_type=settings['cov_type'])
486
+ model, coef_df = regression(merged_df, csv_path, dependent_variable, settings['regression_type'], settings['alpha'], settings['random_row_column_effects'], nc=settings['negative_control'], pc=settings['positive_control'], controls=settings['controls'], dst=res_folder, cov_type=settings['cov_type'])
491
487
 
492
488
  coef_df['grna'] = coef_df['feature'].apply(lambda x: re.search(r'grna\[(.*?)\]', x).group(1) if 'grna' in x else None)
493
489
  coef_df['gene'] = coef_df['feature'].apply(lambda x: re.search(r'gene\[(.*?)\]', x).group(1) if 'gene' in x else None)
494
490
  coef_df = coef_df.merge(n_grna, how='left', on='grna')
495
491
  coef_df = coef_df.merge(n_gene, how='left', on='gene')
496
- display(coef_df)
497
492
 
498
493
  gene_coef_df = coef_df[coef_df['n_gene'] != None]
499
494
  grna_coef_df = coef_df[coef_df['n_grna'] != None]
500
495
  gene_coef_df = gene_coef_df.dropna(subset=['n_gene'])
501
496
  grna_coef_df = grna_coef_df.dropna(subset=['n_grna'])
502
497
 
498
+ if settings['controls'] is not None:
499
+ control_coef_df = grna_coef_df[grna_coef_df['grna'].isin(settings['controls'])]
500
+ mean_coef = control_coef_df['coefficient'].mean()
501
+ variance_coef = control_coef_df['coefficient'].var()
502
+ std_coef = control_coef_df['coefficient'].std()
503
+ reg_threshold = mean_coef + (3 * std_coef)
504
+
505
+ print('coef_df')
506
+ display(coef_df)
507
+
503
508
  coef_df.to_csv(results_path, index=False)
504
509
  gene_coef_df.to_csv(results_path_gene, index=False)
505
510
  grna_coef_df.to_csv(results_path_grna, index=False)
@@ -509,7 +514,10 @@ def perform_regression(settings):
509
514
 
510
515
  else:
511
516
  significant = coef_df[coef_df['p_value']<= 0.05]
512
- #significant = significant[significant['coefficient'] > 0.1]
517
+ if settings['controls'] is not None:
518
+ significant_high = significant[significant['coefficient'] >= reg_threshold]
519
+ significant_low = significant[significant['coefficient'] <= reg_threshold]
520
+ significant = pd.concat([significant_high, significant_low])
513
521
  significant.sort_values(by='coefficient', ascending=False, inplace=True)
514
522
  significant = significant[~significant['feature'].str.contains('row|column')]
515
523
 
@@ -530,22 +538,24 @@ def perform_regression(settings):
530
538
  grna_merged_df = merge_regression_res_with_metadata(results_path_grna, metadata_file, name=filename)
531
539
 
532
540
  if settings['toxo']:
533
-
534
541
  data_path = merged_df
535
542
  data_path_gene = gene_merged_df
536
543
  data_path_grna = grna_merged_df
537
544
  base_dir = os.path.dirname(os.path.abspath(__file__))
538
545
  metadata_path = os.path.join(base_dir, 'resources', 'data', 'lopit.csv')
539
-
540
- custom_volcano_plot(data_path, metadata_path, metadata_column='tagm_location', string_list=[settings['highlight']], point_size=50, figsize=20)
541
- custom_volcano_plot(data_path_gene, metadata_path, metadata_column='tagm_location', string_list=[settings['highlight']], point_size=50, figsize=20)
542
- custom_volcano_plot(data_path_grna, metadata_path, metadata_column='tagm_location', string_list=[settings['highlight']], point_size=50, figsize=20)
543
546
 
544
- if len(significant) > 2:
545
- metadata_path = os.path.join(base_dir, 'resources', 'data', 'toxoplasma_metadata.csv')
546
- go_term_enrichment_by_column(significant, metadata_path)
547
+ 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'])
548
+ #custom_volcano_plot(data_path_gene, metadata_path, metadata_column='tagm_location', point_size=50, figsize=20, threshold=reg_threshold)
549
+ #custom_volcano_plot(data_path_grna, metadata_path, metadata_column='tagm_location', point_size=50, figsize=20, threshold=reg_threshold)
550
+
551
+ #if len(significant) > 2:
552
+ # metadata_path = os.path.join(base_dir, 'resources', 'data', 'toxoplasma_metadata.csv')
553
+ # go_term_enrichment_by_column(significant, metadata_path)
547
554
 
548
555
  print('Significant Genes')
556
+ grnas = significant['grna'].unique().tolist()
557
+ genes = significant['gene'].unique().tolist()
558
+ print(f"Found p<0.05 coedfficients for {len(grnas)} gRNAs and {len(genes)} genes")
549
559
  display(significant)
550
560
 
551
561
  output = {'results':coef_df,
@@ -763,7 +773,6 @@ def generate_ml_scores(settings):
763
773
  raise ValueError("The 'png_list_df' DataFrame must contain 'prcfo' and 'test' columns.")
764
774
  annotated_df = png_list_df[['prcfo', settings['annotation_column']]].set_index('prcfo')
765
775
  df = annotated_df.merge(df, left_index=True, right_index=True)
766
- #display(df)
767
776
  unique_values = df[settings['annotation_column']].dropna().unique()
768
777
  if len(unique_values) == 1:
769
778
  unannotated_rows = df[df[settings['annotation_column']].isna()].index