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.
- {spacr-0.3.2/spacr.egg-info → spacr-0.3.22}/PKG-INFO +28 -25
- spacr-0.3.22/notebooks/cv_scoring_nb.ipynb +171 -0
- spacr-0.3.22/notebooks/machine_learning_spacr_nb.ipynb +101 -0
- {spacr-0.3.2 → spacr-0.3.22}/setup.py +28 -26
- {spacr-0.3.2 → spacr-0.3.22}/spacr/core.py +105 -1
- {spacr-0.3.2 → spacr-0.3.22}/spacr/deep_spacr.py +171 -25
- {spacr-0.3.2 → spacr-0.3.22}/spacr/io.py +80 -121
- {spacr-0.3.2 → spacr-0.3.22}/spacr/ml.py +153 -66
- {spacr-0.3.2 → spacr-0.3.22}/spacr/plot.py +429 -7
- {spacr-0.3.2 → spacr-0.3.22}/spacr/settings.py +6 -5
- {spacr-0.3.2 → spacr-0.3.22}/spacr/submodules.py +7 -6
- {spacr-0.3.2 → spacr-0.3.22}/spacr/toxo.py +9 -4
- {spacr-0.3.2 → spacr-0.3.22}/spacr/utils.py +152 -13
- {spacr-0.3.2 → spacr-0.3.22/spacr.egg-info}/PKG-INFO +28 -25
- {spacr-0.3.2 → spacr-0.3.22}/spacr.egg-info/SOURCES.txt +2 -1
- {spacr-0.3.2 → spacr-0.3.22}/spacr.egg-info/requires.txt +27 -24
- spacr-0.3.2/empty.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/.readthedocs.yaml +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/LICENSE +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/MANIFEST.in +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/README.rst +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/deploy_docs.sh +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/requirements.txt +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/Makefile +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/doctrees/environment.pickle +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/index.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/app_annotate.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/app_classify.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/app_make_masks.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/app_mask.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/app_measure.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/app_sequencing.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/app_umap.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/core.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/deep_spacr.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/graph_learning.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/gui.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/gui_core.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/gui_elements.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/gui_utils.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/io.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/logger.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/measure.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/plot.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/sequencing.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/settings.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/sim.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/timelapse.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_modules/spacr/utils.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_sources/index.rst.txt +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_sources/modules.rst.txt +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_sources/spacr.rst.txt +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/basic.css +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/badge_only.css +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/lato-bold.woff +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/lato-bold.woff2 +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/lato-normal.woff +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/fonts/lato-normal.woff2 +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/css/theme.css +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/doctools.js +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/documentation_options.js +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/file.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/jquery.js +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/js/badge_only.js +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/js/html5shiv-printshiv.min.js +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/js/html5shiv.min.js +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/js/theme.js +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/language_data.js +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/minus.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/plus.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/pygments.css +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/searchtools.js +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/_static/sphinx_highlight.js +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/genindex.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/index.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/modules.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/objects.inv +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/py-modindex.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/search.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/searchindex.js +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/_build/html/spacr.html +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/conf.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/index.rst +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/make.bat +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/modules.rst +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/docs/source/spacr.rst +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/environment.yaml +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/fonts/OpenSans-Regular.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/notebooks/deep_learning_spacr.ipynb +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/notebooks/spacr_0.1_all_settings_git.ipynb +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/notebooks/spacr_0.1_minimal.ipynb +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/path/home/carruthers/datasets/plate1/measurements/measurements.db +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/path/home/carruthers/datasets/plate1/settings/measure_crop_settings.csv +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/path/settings/preprocess_generate_masks_settings.csv +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/requirements.txt +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/settings/measure_crop_settings.csv +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/setup.cfg +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/setup_docs.sh +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/source/conf.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/source/index.rst +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/source/modules.rst +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/source/setup.rst +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/source/spacr.rst +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/__init__.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/__main__.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/app_annotate.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/app_classify.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/app_make_masks.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/app_mask.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/app_measure.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/app_sequencing.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/app_umap.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/cellpose.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/gui.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/gui_core.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/gui_elements.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/gui_utils.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/logger.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/measure.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/mediar.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/openai.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/.gitignore +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/LICENSE +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/README.md +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/SetupDict.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/config/baseline.json +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/config/mediar_example.json +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/config/pred/pred_mediar.json +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/config/step1_pretraining/phase1.json +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/config/step1_pretraining/phase2.json +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/config/step2_finetuning/finetuning1.json +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/config/step2_finetuning/finetuning2.json +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/config/step3_prediction/base_prediction.json +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/config/step3_prediction/ensemble_tta.json +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/BasePredictor.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/BaseTrainer.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/Baseline/Predictor.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/Baseline/Trainer.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/Baseline/__init__.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/Baseline/utils.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/MEDIAR/EnsemblePredictor.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/MEDIAR/Predictor.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/MEDIAR/Trainer.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/MEDIAR/__init__.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/MEDIAR/utils.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/__init__.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/core/utils.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/evaluate.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/generate_mapping.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/image/examples/img1.tiff +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/image/examples/img2.tif +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/image/failure_cases.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/image/mediar_framework.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/image/mediar_model.PNG +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/image/mediar_results.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/main.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/predict.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/requirements.txt +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/__init__.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/data_utils/__init__.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/data_utils/custom/CellAware.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/data_utils/custom/LoadImage.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/data_utils/custom/NormalizeImage.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/data_utils/custom/__init__.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/data_utils/custom/modalities.pkl +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/data_utils/datasetter.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/data_utils/transforms.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/data_utils/utils.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/measures.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/models/MEDIARFormer.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/models/__init__.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/MEDIAR/train_tools/utils.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/data/lopit.csv +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/data/toxoplasma_metadata.csv +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/OFL.txt +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/OpenSans-Italic-VariableFont_wdth,wght.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/OpenSans-VariableFont_wdth,wght.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/README.txt +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-Bold.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-BoldItalic.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-ExtraBold.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-ExtraBoldItalic.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-Italic.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-Light.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-LightItalic.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-Medium.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-MediumItalic.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-Regular.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-SemiBold.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans-SemiBoldItalic.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-Bold.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-BoldItalic.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-ExtraBold.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-ExtraBoldItalic.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-Italic.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-Light.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-LightItalic.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-Medium.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-MediumItalic.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-Regular.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-SemiBold.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_Condensed-SemiBoldItalic.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Bold.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-BoldItalic.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-ExtraBold.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-ExtraBoldItalic.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Italic.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Light.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-LightItalic.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Medium.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-MediumItalic.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Regular.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-SemiBold.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-SemiBoldItalic.ttf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/abort.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/annotate.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/cellpose_all.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/cellpose_masks.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/classify.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/convert.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/default.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/dna_matrix.mp4 +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/download.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/logo.pdf +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/logo_spacr.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/logo_spacr_1.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/make_masks.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/map_barcodes.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/mask.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/measure.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/ml_analyze.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/plaque.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/recruitment.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/regression.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/run.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/sequencing.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/settings.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/train_cellpose.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/icons/umap.png +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/images/plate1_E01_T0001F001L01A01Z01C02.tif +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/images/plate1_E01_T0001F001L01A02Z01C01.tif +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/resources/images/plate1_E01_T0001F001L01A03Z01C03.tif +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/sequencing.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/sim.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/timelapse.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr/version.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr.egg-info/dependency_links.txt +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr.egg-info/entry_points.txt +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/spacr.egg-info/top_level.txt +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/tests/test_annotate_app.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/tests/test_core.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/tests/test_gui_classify_app.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/tests/test_gui_mask_app.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/tests/test_gui_measure_app.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/tests/test_gui_sim_app.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/tests/test_gui_utils.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/tests/test_io.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/tests/test_mask_app.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/tests/test_measure.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/tests/test_plot.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/tests/test_sim.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/tests/test_timelapse.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/tests/test_train.py +0 -0
- {spacr-0.3.2 → spacr-0.3.22}/tests/test_umap.py +0 -0
- {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.
|
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:
|
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:
|
34
|
-
Requires-Dist:
|
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:
|
64
|
-
Requires-Dist:
|
65
|
-
Requires-Dist:
|
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
|
-
'
|
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
|
-
'
|
30
|
-
'
|
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
|
-
'
|
60
|
-
'
|
61
|
-
'
|
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.
|
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
|