spacr 0.4.60__py3-none-any.whl → 0.5.0__py3-none-any.whl
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/__init__.py +2 -2
- spacr/core.py +0 -1
- spacr/gui.py +0 -1
- spacr/gui_utils.py +5 -2
- spacr/io.py +168 -178
- spacr/resources/MEDIAR/__pycache__/SetupDict.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/__pycache__/evaluate.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/__pycache__/generate_mapping.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/__pycache__/main.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/core/Baseline/__pycache__/Predictor.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/core/Baseline/__pycache__/Trainer.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/core/Baseline/__pycache__/__init__.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/core/Baseline/__pycache__/utils.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/core/MEDIAR/__pycache__/EnsemblePredictor.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/core/MEDIAR/__pycache__/Predictor.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/core/MEDIAR/__pycache__/Trainer.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/core/MEDIAR/__pycache__/__init__.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/core/MEDIAR/__pycache__/utils.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/core/__pycache__/BasePredictor.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/core/__pycache__/BaseTrainer.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/core/__pycache__/__init__.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/core/__pycache__/utils.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/train_tools/__pycache__/__init__.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/train_tools/__pycache__/measures.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/train_tools/__pycache__/utils.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/train_tools/data_utils/__pycache__/__init__.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/train_tools/data_utils/__pycache__/datasetter.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/train_tools/data_utils/__pycache__/transforms.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/train_tools/data_utils/__pycache__/utils.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/train_tools/data_utils/custom/__pycache__/CellAware.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/train_tools/data_utils/custom/__pycache__/LoadImage.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/train_tools/data_utils/custom/__pycache__/NormalizeImage.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/train_tools/data_utils/custom/__pycache__/__init__.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/train_tools/models/__pycache__/MEDIARFormer.cpython-39.pyc +0 -0
- spacr/resources/MEDIAR/train_tools/models/__pycache__/__init__.cpython-39.pyc +0 -0
- spacr/settings.py +26 -8
- spacr/submodules.py +10 -13
- spacr/timelapse.py +172 -4
- spacr/utils.py +26 -41
- {spacr-0.4.60.dist-info → spacr-0.5.0.dist-info}/METADATA +4 -2
- {spacr-0.4.60.dist-info → spacr-0.5.0.dist-info}/RECORD +46 -17
- spacr/stats.py +0 -221
- /spacr/{cellpose.py → spacr_cellpose.py} +0 -0
- {spacr-0.4.60.dist-info → spacr-0.5.0.dist-info}/LICENSE +0 -0
- {spacr-0.4.60.dist-info → spacr-0.5.0.dist-info}/WHEEL +0 -0
- {spacr-0.4.60.dist-info → spacr-0.5.0.dist-info}/entry_points.txt +0 -0
- {spacr-0.4.60.dist-info → spacr-0.5.0.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
spacr/__init__.py,sha256=
|
1
|
+
spacr/__init__.py,sha256=EoZXwl4lmLKd3TqSTDAw6f6w7PxldhmfxnA3BECsNq8,1413
|
2
2
|
spacr/__main__.py,sha256=bkAJJD2kjIqOP-u1kLvct9jQQCeUXzlEjdgitwi1Lm8,75
|
3
3
|
spacr/app_annotate.py,sha256=W9eLPa_LZIvXsXx_-0iDFEU938LBDvRy6prXo0qF4KQ,2533
|
4
4
|
spacr/app_classify.py,sha256=urTP_wlZ58hSyM5a19slYlBxN0PdC-9-ga0hvq8CGWc,165
|
@@ -7,15 +7,14 @@ spacr/app_mask.py,sha256=l-dBY8ftzCMdDe6-pXc2Nh_u-idNL9G7UOARiLJBtds,153
|
|
7
7
|
spacr/app_measure.py,sha256=_K7APYIeOKpV6e_LcqabBjvEi7mfq9Fch8175x1x0k8,162
|
8
8
|
spacr/app_sequencing.py,sha256=DjG26jy4cpddnV8WOOAIiExtOe9MleVMY4MFa5uTo5w,157
|
9
9
|
spacr/app_umap.py,sha256=ZWAmf_OsIKbYvolYuWPMYhdlVe-n2CADoJulAizMiEo,153
|
10
|
-
spacr/cellpose.py,sha256=RBHMs2vwXcfkj0xqAULpALyzJYXddSRycgZSzmwI7v0,14755
|
11
10
|
spacr/chat_bot.py,sha256=n3Fhqg3qofVXHmh3H9sUcmfYy9MmgRnr48663MVdY9E,1244
|
12
|
-
spacr/core.py,sha256=
|
11
|
+
spacr/core.py,sha256=AwyOjoTti9jN-eGG8j78Rv7ujSxEu13L1R27AS-byyc,51408
|
13
12
|
spacr/deep_spacr.py,sha256=055tIo3WP3elGFiIuSZaLURgu2XyUDxAdbw5ezASEqM,54526
|
14
|
-
spacr/gui.py,sha256=
|
13
|
+
spacr/gui.py,sha256=NhMh96KoArrSAaJBV6PhDQpIC1cQpxgb6SclhRbYG8s,8122
|
15
14
|
spacr/gui_core.py,sha256=AYXZpdKMRezJfS7Xcfztdc2yco6lV21ovwkyKQGbIZg,56206
|
16
15
|
spacr/gui_elements.py,sha256=5a3BOpctBPklsT1NungqS72h1Bg1FArUndE0OfvWD8Y,152646
|
17
|
-
spacr/gui_utils.py,sha256=
|
18
|
-
spacr/io.py,sha256=
|
16
|
+
spacr/gui_utils.py,sha256=RFXxGTe6x749S1i4X66_JtWnzduvFLQJD92pNEirR78,41578
|
17
|
+
spacr/io.py,sha256=TfjurnvojZiLrOUscia4QoEoqyNodNVsUxzx9Q1zBss,158050
|
19
18
|
spacr/logger.py,sha256=lJhTqt-_wfAunCPl93xE65Wr9Y1oIHJWaZMjunHUeIw,1538
|
20
19
|
spacr/measure.py,sha256=Z3u4BU5RzcY82IZuboQ0OsxuXaPVwOlH65Rw6FrL5z4,55045
|
21
20
|
spacr/mediar.py,sha256=FwLvbLQW5LQzPgvJZG8Lw7GniA2vbZx6Jv6vIKu7I5c,14743
|
@@ -23,14 +22,14 @@ spacr/ml.py,sha256=XCRZeX7UkbMctQICIoskeWVx8CCmmCoHNauUOAkfFq0,91692
|
|
23
22
|
spacr/openai.py,sha256=5vBZ3Jl2llYcW3oaTEXgdyCB2aJujMUIO5K038z7w_A,1246
|
24
23
|
spacr/plot.py,sha256=lmpIJozfxMyOyGAMno4j-C7NPjDYRMr29SDAnrV-bb4,170815
|
25
24
|
spacr/sequencing.py,sha256=EY12RdW5QRKpHDRQCw1QoAlxCq8FK2v6WoVa5uuDBXQ,26745
|
26
|
-
spacr/settings.py,sha256
|
25
|
+
spacr/settings.py,sha256=-82YhiT2ox71XikQdbBUHL23dUmsJMB1orxsGWcn1Eo,87191
|
27
26
|
spacr/sim.py,sha256=1xKhXimNU3ukzIw-3l9cF3Znc_brW8h20yv8fSTzvss,71173
|
28
27
|
spacr/sp_stats.py,sha256=mbhwsyIqt5upsSD346qGjdCw7CFBa0tIS7zHU9e0jNI,9536
|
29
|
-
spacr/
|
30
|
-
spacr/submodules.py,sha256=
|
31
|
-
spacr/timelapse.py,sha256=
|
28
|
+
spacr/spacr_cellpose.py,sha256=RBHMs2vwXcfkj0xqAULpALyzJYXddSRycgZSzmwI7v0,14755
|
29
|
+
spacr/submodules.py,sha256=pHa5P3EcpduX-xAEJU7JnK8sLaD5Ay5rSDcfBQBdRxA,82645
|
30
|
+
spacr/timelapse.py,sha256=PqN7mXpjYhPiyU1in2xWSbqdlSFI-X4peI4bIp-q2jo,46106
|
32
31
|
spacr/toxo.py,sha256=GoNfgyH-NJx3WOzNQPgzODir7Jp65fs7UM46XpzcrUo,26056
|
33
|
-
spacr/utils.py,sha256=
|
32
|
+
spacr/utils.py,sha256=mHyvI1q5HTjJ62qW9rVjde_oBPUDdS1JM089ZBM5HMw,231189
|
34
33
|
spacr/version.py,sha256=axH5tnGwtgSnJHb5IDhiu4Zjk5GhLyAEDRe-rnaoFOA,409
|
35
34
|
spacr/resources/MEDIAR/.gitignore,sha256=Ff1q9Nme14JUd-4Q3jZ65aeQ5X4uttptssVDgBVHYo8,152
|
36
35
|
spacr/resources/MEDIAR/LICENSE,sha256=yEj_TRDLUfDpHDNM0StALXIt6mLqSgaV2hcCwa6_TcY,1065
|
@@ -41,6 +40,10 @@ spacr/resources/MEDIAR/generate_mapping.py,sha256=6FqWgAegWExUF2DFc_vOQzH1c7g9-e
|
|
41
40
|
spacr/resources/MEDIAR/main.py,sha256=8KKelA75anJbvpCGXQbAO5OipHE-hx-q04_OB2Z90NQ,3573
|
42
41
|
spacr/resources/MEDIAR/predict.py,sha256=V2GUdy3LM595gCoAjBOk22-QitaKRKRqJX3Hgdc4FEU,2141
|
43
42
|
spacr/resources/MEDIAR/requirements.txt,sha256=7fapaH6LrDiKsdkjkl8oQ8oR2u49-n-OChMWa5wg7fY,225
|
43
|
+
spacr/resources/MEDIAR/__pycache__/SetupDict.cpython-39.pyc,sha256=ZlHtaJj5ar0g69PwxCCK02sYRDsXO0VWsyh9epy-Flw,919
|
44
|
+
spacr/resources/MEDIAR/__pycache__/evaluate.cpython-39.pyc,sha256=k1bUiE-kOuxSQgsiPMyx2mBtpjfzRpUJAgBZ3A7p-tI,1810
|
45
|
+
spacr/resources/MEDIAR/__pycache__/generate_mapping.cpython-39.pyc,sha256=AqyoimBU40KD2YWAHMQygahEJDvpUUMT7koTR2XA8bA,3147
|
46
|
+
spacr/resources/MEDIAR/__pycache__/main.cpython-39.pyc,sha256=fnABJJJyFF_5coyC2F97Ybhc2bh06H5vD6Hn9lOhDeM,2513
|
44
47
|
spacr/resources/MEDIAR/config/baseline.json,sha256=moqZ8Bf0rf1hcoJswp9EvE1IrqSfO4lzJGkj3-emIqc,1603
|
45
48
|
spacr/resources/MEDIAR/config/mediar_example.json,sha256=B6mFpDgCpOJpN4Foj1hC_X4zCRyWXra3XsZ0DBqvGnQ,2114
|
46
49
|
spacr/resources/MEDIAR/config/pred/pred_mediar.json,sha256=oE4YmuPFfH6_rK9PFBRX18aIPalZfni3NYGfRtOhTIU,385
|
@@ -58,11 +61,24 @@ spacr/resources/MEDIAR/core/Baseline/Predictor.py,sha256=mDHSG2jSJyLWr_j2gSzADjf
|
|
58
61
|
spacr/resources/MEDIAR/core/Baseline/Trainer.py,sha256=OzkFeSF0sRn1Wej253I4h99f7v9wD3tKv88YYXLAtd4,3451
|
59
62
|
spacr/resources/MEDIAR/core/Baseline/__init__.py,sha256=WinVVW50c_UhZDcUkX4RESjy8eSQOjMiU-KynfSGP_I,48
|
60
63
|
spacr/resources/MEDIAR/core/Baseline/utils.py,sha256=V2e4a00ZdYFlHFaorLTI1CgX8gt_KFSfrpm_XikygiA,2370
|
64
|
+
spacr/resources/MEDIAR/core/Baseline/__pycache__/Predictor.cpython-39.pyc,sha256=3ibB5dyeWXJx0U839FkacJK8b8cjuiEtA_vbcSbxJXo,1599
|
65
|
+
spacr/resources/MEDIAR/core/Baseline/__pycache__/Trainer.cpython-39.pyc,sha256=swuIuLp2D5AUgVaKbHqRH9nEjKoh8upqXDWPLXAiVBE,2900
|
66
|
+
spacr/resources/MEDIAR/core/Baseline/__pycache__/__init__.cpython-39.pyc,sha256=aJZtG5eSDLEvX6eIipYi7wB4swsSDSP1tEuIuAUBwOo,222
|
67
|
+
spacr/resources/MEDIAR/core/Baseline/__pycache__/utils.cpython-39.pyc,sha256=FNvc-3B_eDkxuGec3H5jYbw3_9PHjl_FiMWWcDnBNwI,1858
|
61
68
|
spacr/resources/MEDIAR/core/MEDIAR/EnsemblePredictor.py,sha256=5BSz3mwe9B26aTQiNhqwDI2VxAOxnvNsjAhYlFMuBDw,3416
|
62
69
|
spacr/resources/MEDIAR/core/MEDIAR/Predictor.py,sha256=FfA012HXmvrMnYJBsovCdgbrWL5-Ca-PwZN1mIsNfik,6763
|
63
70
|
spacr/resources/MEDIAR/core/MEDIAR/Trainer.py,sha256=7OueMwovWxSb8UY033X--KJnk55Mh5EQu6LGdUl8_OU,5745
|
64
71
|
spacr/resources/MEDIAR/core/MEDIAR/__init__.py,sha256=yFkZq29jm8Sf-Bf_h1KAiMaUxU47uBeOMU27m92fjh8,81
|
65
72
|
spacr/resources/MEDIAR/core/MEDIAR/utils.py,sha256=1rcVONsnnPvIEkPW1mu5mCt1YQJqXPtAyEWtxAQIvpE,14641
|
73
|
+
spacr/resources/MEDIAR/core/MEDIAR/__pycache__/EnsemblePredictor.cpython-39.pyc,sha256=YpSc4prS2PUij60N-QA0GTith3_IvJtiVSj022xRU9U,2051
|
74
|
+
spacr/resources/MEDIAR/core/MEDIAR/__pycache__/Predictor.cpython-39.pyc,sha256=FhpgXKQTxrSEKDmm0rjK2VCpNa26acAMo_mhxb9Yypg,5734
|
75
|
+
spacr/resources/MEDIAR/core/MEDIAR/__pycache__/Trainer.cpython-39.pyc,sha256=-VrloUJABkNPALYULmru03q8DffZA6nP4lwt8CwOWdA,3914
|
76
|
+
spacr/resources/MEDIAR/core/MEDIAR/__pycache__/__init__.cpython-39.pyc,sha256=E-CiZVrtO3muL41YDl_jQXw5XMaLFg76Z0lrk6q9Aa4,249
|
77
|
+
spacr/resources/MEDIAR/core/MEDIAR/__pycache__/utils.cpython-39.pyc,sha256=mwIV8N5FeHvuvp9pfoqA_1GOne27xZBjZQO9NpXGUNg,11792
|
78
|
+
spacr/resources/MEDIAR/core/__pycache__/BasePredictor.cpython-39.pyc,sha256=idycg2UkxkFYUk4KMKQi97cVQFceFphsWsQXoAi5cgY,3531
|
79
|
+
spacr/resources/MEDIAR/core/__pycache__/BaseTrainer.cpython-39.pyc,sha256=m45zW3B_rrSS7JgdhcecI7K9nC1krIh52BuhbCmofQE,5866
|
80
|
+
spacr/resources/MEDIAR/core/__pycache__/__init__.cpython-39.pyc,sha256=ws6IijuYzV2A-bcPAQ6EH6QbZoUfbOw-4w719BkPuks,211
|
81
|
+
spacr/resources/MEDIAR/core/__pycache__/utils.cpython-39.pyc,sha256=_4uRfdNgHSqBGYJ3WrzKpcPn8C82Pz8gKT-S47Lcv7o,1078
|
66
82
|
spacr/resources/MEDIAR/image/failure_cases.png,sha256=y9mmqGJ5Q5FNpHCekio_UZdrxGLraRXn2yZLLm__rNI,2390420
|
67
83
|
spacr/resources/MEDIAR/image/mediar_framework.png,sha256=wucJ9Qyoi4Yi_A-D0HyCpEw8-bjFHS7AAeyzfQL7Iks,1048242
|
68
84
|
spacr/resources/MEDIAR/image/mediar_model.PNG,sha256=JQuxGxfGcBY07-JRBGhtDA0FcKnENV_7HVy3uAq3_rE,348059
|
@@ -72,17 +88,30 @@ spacr/resources/MEDIAR/image/examples/img2.tif,sha256=YAk6yYRVOu6Gg8X4BUo_LaSfMZ
|
|
72
88
|
spacr/resources/MEDIAR/train_tools/__init__.py,sha256=XXnPlgCbF3GEfnwIbUB2MniUl2Ve6QOf7jhEuiqbiis,71
|
73
89
|
spacr/resources/MEDIAR/train_tools/measures.py,sha256=LOJmJzLVO4XsJX4XHuppuXknN5HncarDV5url39GRzA,5770
|
74
90
|
spacr/resources/MEDIAR/train_tools/utils.py,sha256=7ISUS0Uw-dU83XD-WFzNTOPBX4SwSoF0iWNGMcGmTZM,1911
|
91
|
+
spacr/resources/MEDIAR/train_tools/__pycache__/__init__.cpython-39.pyc,sha256=VtwSRmJ5rfez2Nknor9k2aP6X2ZSfjFRL-Wws9vRkRE,239
|
92
|
+
spacr/resources/MEDIAR/train_tools/__pycache__/measures.cpython-39.pyc,sha256=WC16KAYzFbvhs5GgqiAEKLXBZk-b3g9WNh8d82eXz74,4069
|
93
|
+
spacr/resources/MEDIAR/train_tools/__pycache__/utils.cpython-39.pyc,sha256=qhkTE774c7CcvlopZUw14NwuOcLgTFCCMvg17Fk6jT0,3139
|
75
94
|
spacr/resources/MEDIAR/train_tools/data_utils/__init__.py,sha256=QVo7-uqgr0vdP4s8nZ47LKDqxabnzbO0MKt8E1sR8as,26
|
76
95
|
spacr/resources/MEDIAR/train_tools/data_utils/datasetter.py,sha256=uiPhC46gQMbeYhpTehX4Qm0_dUQJ6NXaVCg3a19HGpA,6323
|
77
96
|
spacr/resources/MEDIAR/train_tools/data_utils/transforms.py,sha256=vNZQB_qPh-Jeovb1FhnbCUFl6HoV6px7QHa4ZC8RO-Q,5147
|
78
97
|
spacr/resources/MEDIAR/train_tools/data_utils/utils.py,sha256=yJo2BSLr9ARwTkuJwIoSJrZXPE4E3DlPRAT97hQzYwY,2556
|
98
|
+
spacr/resources/MEDIAR/train_tools/data_utils/__pycache__/__init__.cpython-39.pyc,sha256=mEdr6muJpmYu__BYR3JkUYeJHor5KF-9IeqWIOjgIDo,213
|
99
|
+
spacr/resources/MEDIAR/train_tools/data_utils/__pycache__/datasetter.cpython-39.pyc,sha256=7Lzq2gVNRjUIthApeHCk7lBejLrrdD_uFS3aDwNw9kw,4188
|
100
|
+
spacr/resources/MEDIAR/train_tools/data_utils/__pycache__/transforms.cpython-39.pyc,sha256=UAiSu1ZOci0C0MQbIUzrD0CR5-OZkYQwNV_K49nIdNI,2643
|
101
|
+
spacr/resources/MEDIAR/train_tools/data_utils/__pycache__/utils.cpython-39.pyc,sha256=wKA6gDyZ2S2jo6dcOZMjOQoTLL_3BCDYIpbMnY0iJZI,2254
|
79
102
|
spacr/resources/MEDIAR/train_tools/data_utils/custom/CellAware.py,sha256=bG100wH2okxnnEQh0ZRR3GM8n99azB2z5iu7aINXjm0,2865
|
80
103
|
spacr/resources/MEDIAR/train_tools/data_utils/custom/LoadImage.py,sha256=wK69UHjCzq2L2_Ny5m9I5H6DGYRF8yCfmhCA39DOCW4,5431
|
81
104
|
spacr/resources/MEDIAR/train_tools/data_utils/custom/NormalizeImage.py,sha256=7DfWVusYRRuEyA8eXujNyGJz0dubx7b7uhgEzzrh3-4,2152
|
82
105
|
spacr/resources/MEDIAR/train_tools/data_utils/custom/__init__.py,sha256=SalCNvPyiy0rqLpjdoXPXGoWlKf-8K9vtDQ70HXOXe0,80
|
83
106
|
spacr/resources/MEDIAR/train_tools/data_utils/custom/modalities.pkl,sha256=C1D7NkUZ5er7Kdeyhhwjo0IGUvCsVfKPBzcwfaORd8Q,3762
|
107
|
+
spacr/resources/MEDIAR/train_tools/data_utils/custom/__pycache__/CellAware.cpython-39.pyc,sha256=IPYJGexnn0j4SH9tbwLfzDSpbXV5vYCD8GTVUAIWpzo,2588
|
108
|
+
spacr/resources/MEDIAR/train_tools/data_utils/custom/__pycache__/LoadImage.cpython-39.pyc,sha256=A5bW39bHTNkRATcZViewTuGNv_B2X90AHuqcED-u1sk,5007
|
109
|
+
spacr/resources/MEDIAR/train_tools/data_utils/custom/__pycache__/NormalizeImage.cpython-39.pyc,sha256=8RKtHCfmfTU5gSGCIndm69jwqAv_91VUdAVaKrobO0k,2631
|
110
|
+
spacr/resources/MEDIAR/train_tools/data_utils/custom/__pycache__/__init__.cpython-39.pyc,sha256=Ak1y5qjw41KZym40mohudxCmFEAHq2kogSiu3RApSUc,266
|
84
111
|
spacr/resources/MEDIAR/train_tools/models/MEDIARFormer.py,sha256=UN8BYjraTNNdZUAGjl3yF566ERHAHQvj3GAQ6OETUOI,3615
|
85
112
|
spacr/resources/MEDIAR/train_tools/models/__init__.py,sha256=CkY6rZxr-c9XxXNpQbYUYvHXDpf9E6rUmY1bQ47aEP8,28
|
113
|
+
spacr/resources/MEDIAR/train_tools/models/__pycache__/MEDIARFormer.cpython-39.pyc,sha256=460gTi1ZuHormHioEsqVr9kKBWuDSHsUsc-v0lZxK1E,2667
|
114
|
+
spacr/resources/MEDIAR/train_tools/models/__pycache__/__init__.cpython-39.pyc,sha256=HMafk6-ZBmFOKV85xGF0IaG5Xpu5EYEIqb11m110vdw,211
|
86
115
|
spacr/resources/data/lopit.csv,sha256=ERI5f9W8RdJGiSx_khoaylD374f8kmvLia1xjhD_mII,4421709
|
87
116
|
spacr/resources/data/toxoplasma_metadata.csv,sha256=9TXx0VlClDHAxQmaLhoklE8NuETduXaGHZjhR_6lZfs,2969409
|
88
117
|
spacr/resources/font/open_sans/OFL.txt,sha256=bGMoWBRrE2RcdzDiuYiB8A9OVFlJ0sA2imWwce2DAdo,4484
|
@@ -153,9 +182,9 @@ spacr/resources/icons/umap.png,sha256=dOLF3DeLYy9k0nkUybiZMe1wzHQwLJFRmgccppw-8b
|
|
153
182
|
spacr/resources/images/plate1_E01_T0001F001L01A01Z01C02.tif,sha256=Tl0ZUfZ_AYAbu0up_nO0tPRtF1BxXhWQ3T3pURBCCRo,7958528
|
154
183
|
spacr/resources/images/plate1_E01_T0001F001L01A02Z01C01.tif,sha256=m8N-V71rA1TT4dFlENNg8s0Q0YEXXs8slIn7yObmZJQ,7958528
|
155
184
|
spacr/resources/images/plate1_E01_T0001F001L01A03Z01C03.tif,sha256=Pbhk7xn-KUP6RSIhJsxQcrHFImBm3GEpLkzx7WOc-5M,7958528
|
156
|
-
spacr-0.
|
157
|
-
spacr-0.
|
158
|
-
spacr-0.
|
159
|
-
spacr-0.
|
160
|
-
spacr-0.
|
161
|
-
spacr-0.
|
185
|
+
spacr-0.5.0.dist-info/LICENSE,sha256=SR-2MeGc6SCM1UORJYyarSWY_A-JaOMFDj7ReSs9tRM,1083
|
186
|
+
spacr-0.5.0.dist-info/METADATA,sha256=MMF3YheSrFOyZa_qnegHEbPsNnBVc4QoTlOk1dgfk6g,6146
|
187
|
+
spacr-0.5.0.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
|
188
|
+
spacr-0.5.0.dist-info/entry_points.txt,sha256=BMC0ql9aNNpv8lUZ8sgDLQMsqaVnX5L535gEhKUP5ho,296
|
189
|
+
spacr-0.5.0.dist-info/top_level.txt,sha256=GJPU8FgwRXGzKeut6JopsSRY2R8T3i9lDgya42tLInY,6
|
190
|
+
spacr-0.5.0.dist-info/RECORD,,
|
spacr/stats.py
DELETED
@@ -1,221 +0,0 @@
|
|
1
|
-
from scipy.stats import shapiro, normaltest, levene, ttest_ind, mannwhitneyu, kruskal, f_oneway
|
2
|
-
from statsmodels.stats.multicomp import pairwise_tukeyhsd
|
3
|
-
import scikit_posthocs as sp
|
4
|
-
import numpy as np
|
5
|
-
import pandas as pd
|
6
|
-
from scipy.stats import chi2_contingency, fisher_exact
|
7
|
-
import itertools
|
8
|
-
from statsmodels.stats.multitest import multipletests
|
9
|
-
|
10
|
-
|
11
|
-
def choose_p_adjust_method(num_groups, num_data_points):
|
12
|
-
"""
|
13
|
-
Selects the most appropriate p-value adjustment method based on data characteristics.
|
14
|
-
|
15
|
-
Parameters:
|
16
|
-
- num_groups: Number of unique groups being compared
|
17
|
-
- num_data_points: Number of data points per group (assuming balanced groups)
|
18
|
-
|
19
|
-
Returns:
|
20
|
-
- A string representing the recommended p-adjustment method
|
21
|
-
"""
|
22
|
-
num_comparisons = (num_groups * (num_groups - 1)) // 2 # Number of pairwise comparisons
|
23
|
-
|
24
|
-
# Decision logic for choosing the adjustment method
|
25
|
-
if num_comparisons <= 10 and num_data_points > 5:
|
26
|
-
return 'holm' # Balanced between power and Type I error control
|
27
|
-
elif num_comparisons > 10 and num_data_points <= 5:
|
28
|
-
return 'fdr_bh' # FDR control for large number of comparisons and small sample size
|
29
|
-
elif num_comparisons <= 10:
|
30
|
-
return 'sidak' # Less conservative than Bonferroni, good for independent comparisons
|
31
|
-
else:
|
32
|
-
return 'bonferroni' # Very conservative, use for strict control of Type I errors
|
33
|
-
|
34
|
-
def perform_normality_tests(df, grouping_column, data_columns):
|
35
|
-
"""Perform normality tests for each group and data column."""
|
36
|
-
unique_groups = df[grouping_column].unique()
|
37
|
-
normality_results = []
|
38
|
-
|
39
|
-
for column in data_columns:
|
40
|
-
for group in unique_groups:
|
41
|
-
data = df.loc[df[grouping_column] == group, column].dropna()
|
42
|
-
n_samples = len(data)
|
43
|
-
|
44
|
-
if n_samples < 3:
|
45
|
-
# Skip test if there aren't enough data points
|
46
|
-
print(f"Skipping normality test for group '{group}' on column '{column}' - Not enough data.")
|
47
|
-
normality_results.append({
|
48
|
-
'Comparison': f'Normality test for {group} on {column}',
|
49
|
-
'Test Statistic': None,
|
50
|
-
'p-value': None,
|
51
|
-
'Test Name': 'Skipped',
|
52
|
-
'Column': column,
|
53
|
-
'n': n_samples
|
54
|
-
})
|
55
|
-
continue
|
56
|
-
|
57
|
-
# Choose the appropriate normality test based on the sample size
|
58
|
-
if n_samples >= 8:
|
59
|
-
stat, p_value = normaltest(data)
|
60
|
-
test_name = "D'Agostino-Pearson test"
|
61
|
-
else:
|
62
|
-
stat, p_value = shapiro(data)
|
63
|
-
test_name = "Shapiro-Wilk test"
|
64
|
-
|
65
|
-
normality_results.append({
|
66
|
-
'Comparison': f'Normality test for {group} on {column}',
|
67
|
-
'Test Statistic': stat,
|
68
|
-
'p-value': p_value,
|
69
|
-
'Test Name': test_name,
|
70
|
-
'Column': column,
|
71
|
-
'n': n_samples
|
72
|
-
})
|
73
|
-
|
74
|
-
# Check if all groups are normally distributed (p > 0.05)
|
75
|
-
normal_p_values = [result['p-value'] for result in normality_results if result['Column'] == column and result['p-value'] is not None]
|
76
|
-
is_normal = all(p > 0.05 for p in normal_p_values)
|
77
|
-
|
78
|
-
return is_normal, normality_results
|
79
|
-
|
80
|
-
|
81
|
-
def perform_levene_test(df, grouping_column, data_column):
|
82
|
-
"""Perform Levene's test for equal variance."""
|
83
|
-
unique_groups = df[grouping_column].unique()
|
84
|
-
grouped_data = [df.loc[df[grouping_column] == group, data_column].dropna() for group in unique_groups]
|
85
|
-
stat, p_value = levene(*grouped_data)
|
86
|
-
return stat, p_value
|
87
|
-
|
88
|
-
def perform_statistical_tests(df, grouping_column, data_columns, paired=False):
|
89
|
-
"""Perform statistical tests for each data column."""
|
90
|
-
unique_groups = df[grouping_column].unique()
|
91
|
-
test_results = []
|
92
|
-
|
93
|
-
for column in data_columns:
|
94
|
-
grouped_data = [df.loc[df[grouping_column] == group, column].dropna() for group in unique_groups]
|
95
|
-
if len(unique_groups) == 2: # For two groups
|
96
|
-
if paired:
|
97
|
-
print("Performing paired tests (not implemented in this template).")
|
98
|
-
continue # Extend as needed
|
99
|
-
else:
|
100
|
-
# Check normality for two groups
|
101
|
-
is_normal, _ = perform_normality_tests(df, grouping_column, [column])
|
102
|
-
if is_normal:
|
103
|
-
stat, p = ttest_ind(grouped_data[0], grouped_data[1])
|
104
|
-
test_name = 'T-test'
|
105
|
-
else:
|
106
|
-
stat, p = mannwhitneyu(grouped_data[0], grouped_data[1])
|
107
|
-
test_name = 'Mann-Whitney U test'
|
108
|
-
else:
|
109
|
-
# Check normality for multiple groups
|
110
|
-
is_normal, _ = perform_normality_tests(df, grouping_column, [column])
|
111
|
-
if is_normal:
|
112
|
-
stat, p = f_oneway(*grouped_data)
|
113
|
-
test_name = 'One-way ANOVA'
|
114
|
-
else:
|
115
|
-
stat, p = kruskal(*grouped_data)
|
116
|
-
test_name = 'Kruskal-Wallis test'
|
117
|
-
|
118
|
-
test_results.append({
|
119
|
-
'Column': column,
|
120
|
-
'Test Name': test_name,
|
121
|
-
'Test Statistic': stat,
|
122
|
-
'p-value': p,
|
123
|
-
'Groups': len(unique_groups)
|
124
|
-
})
|
125
|
-
|
126
|
-
return test_results
|
127
|
-
|
128
|
-
|
129
|
-
def perform_posthoc_tests(df, grouping_column, data_column, is_normal):
|
130
|
-
"""Perform post-hoc tests for multiple groups with both original and adjusted p-values."""
|
131
|
-
unique_groups = df[grouping_column].unique()
|
132
|
-
posthoc_results = []
|
133
|
-
|
134
|
-
if len(unique_groups) > 2:
|
135
|
-
num_groups = len(unique_groups)
|
136
|
-
num_data_points = len(df[data_column].dropna()) // num_groups # Assuming roughly equal data points per group
|
137
|
-
p_adjust_method = choose_p_adjust_method(num_groups, num_data_points)
|
138
|
-
|
139
|
-
if is_normal:
|
140
|
-
# Tukey's HSD automatically adjusts p-values
|
141
|
-
tukey_result = pairwise_tukeyhsd(df[data_column], df[grouping_column], alpha=0.05)
|
142
|
-
for comparison, p_value in zip(tukey_result._results_table.data[1:], tukey_result.pvalues):
|
143
|
-
posthoc_results.append({
|
144
|
-
'Comparison': f"{comparison[0]} vs {comparison[1]}",
|
145
|
-
'Original p-value': None, # Tukey HSD does not provide raw p-values
|
146
|
-
'Adjusted p-value': p_value,
|
147
|
-
'Adjusted Method': 'Tukey HSD',
|
148
|
-
'Test Name': 'Tukey HSD'
|
149
|
-
})
|
150
|
-
else:
|
151
|
-
# Dunn's test with p-value adjustment
|
152
|
-
raw_dunn_result = sp.posthoc_dunn(df, val_col=data_column, group_col=grouping_column, p_adjust=None)
|
153
|
-
adjusted_dunn_result = sp.posthoc_dunn(df, val_col=data_column, group_col=grouping_column, p_adjust=p_adjust_method)
|
154
|
-
for i, group_a in enumerate(adjusted_dunn_result.index):
|
155
|
-
for j, group_b in enumerate(adjusted_dunn_result.columns):
|
156
|
-
if i < j: # Only consider unique pairs
|
157
|
-
posthoc_results.append({
|
158
|
-
'Comparison': f"{group_a} vs {group_b}",
|
159
|
-
'Original p-value': raw_dunn_result.iloc[i, j],
|
160
|
-
'Adjusted p-value': adjusted_dunn_result.iloc[i, j],
|
161
|
-
'Adjusted Method': p_adjust_method,
|
162
|
-
'Test Name': "Dunn's Post-hoc"
|
163
|
-
})
|
164
|
-
|
165
|
-
return posthoc_results
|
166
|
-
|
167
|
-
def chi_pairwise(raw_counts, verbose=False):
|
168
|
-
"""
|
169
|
-
Perform pairwise chi-square or Fisher's exact tests between all unique group pairs
|
170
|
-
and apply p-value correction.
|
171
|
-
|
172
|
-
Parameters:
|
173
|
-
- raw_counts (DataFrame): Contingency table with group-wise counts.
|
174
|
-
- verbose (bool): Whether to print results for each pair.
|
175
|
-
|
176
|
-
Returns:
|
177
|
-
- pairwise_df (DataFrame): DataFrame with pairwise test results, including corrected p-values.
|
178
|
-
"""
|
179
|
-
pairwise_results = []
|
180
|
-
groups = raw_counts.index.unique() # Use index from raw_counts for group pairs
|
181
|
-
raw_p_values = [] # Store raw p-values for correction later
|
182
|
-
|
183
|
-
# Calculate the number of groups and average number of data points per group
|
184
|
-
num_groups = len(groups)
|
185
|
-
num_data_points = raw_counts.sum(axis=1).mean() # Average total data points per group
|
186
|
-
p_adjust_method = choose_p_adjust_method(num_groups, num_data_points)
|
187
|
-
|
188
|
-
for group1, group2 in itertools.combinations(groups, 2):
|
189
|
-
contingency_table = raw_counts.loc[[group1, group2]].values
|
190
|
-
if contingency_table.shape[1] == 2: # Fisher's Exact Test for 2x2 tables
|
191
|
-
oddsratio, p_value = fisher_exact(contingency_table)
|
192
|
-
test_name = "Fisher's Exact Test"
|
193
|
-
else: # Chi-Square Test for larger tables
|
194
|
-
chi2_stat, p_value, _, _ = chi2_contingency(contingency_table)
|
195
|
-
test_name = 'Pairwise Chi-Square Test'
|
196
|
-
|
197
|
-
pairwise_results.append({
|
198
|
-
'Group 1': group1,
|
199
|
-
'Group 2': group2,
|
200
|
-
'Test Name': test_name,
|
201
|
-
'p-value': p_value
|
202
|
-
})
|
203
|
-
raw_p_values.append(p_value)
|
204
|
-
|
205
|
-
# Apply p-value correction
|
206
|
-
corrected_p_values = multipletests(raw_p_values, method=p_adjust_method)[1]
|
207
|
-
|
208
|
-
# Add corrected p-values to results
|
209
|
-
for i, result in enumerate(pairwise_results):
|
210
|
-
result['p-value_adj'] = corrected_p_values[i]
|
211
|
-
|
212
|
-
pairwise_df = pd.DataFrame(pairwise_results)
|
213
|
-
|
214
|
-
pairwise_df['adj'] = p_adjust_method
|
215
|
-
|
216
|
-
if verbose:
|
217
|
-
# Print pairwise results
|
218
|
-
print("\nPairwise Frequency Analysis Results:")
|
219
|
-
print(pairwise_df.to_string(index=False))
|
220
|
-
|
221
|
-
return pairwise_df
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|