spacr 0.1.6__py3-none-any.whl → 0.1.8__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 +0 -1
- spacr/app_annotate.py +38 -524
- spacr/app_make_masks.py +30 -904
- spacr/core.py +22 -22
- spacr/deep_spacr.py +6 -6
- spacr/gui.py +38 -26
- spacr/gui_core.py +254 -160
- spacr/gui_elements.py +1192 -15
- spacr/gui_utils.py +197 -10
- spacr/gui_wrappers.py +27 -15
- spacr/measure.py +11 -12
- spacr/plot.py +53 -1
- spacr/settings.py +590 -346
- spacr/utils.py +25 -19
- {spacr-0.1.6.dist-info → spacr-0.1.8.dist-info}/METADATA +1 -1
- {spacr-0.1.6.dist-info → spacr-0.1.8.dist-info}/RECORD +20 -20
- {spacr-0.1.6.dist-info → spacr-0.1.8.dist-info}/LICENSE +0 -0
- {spacr-0.1.6.dist-info → spacr-0.1.8.dist-info}/WHEEL +0 -0
- {spacr-0.1.6.dist-info → spacr-0.1.8.dist-info}/entry_points.txt +0 -0
- {spacr-0.1.6.dist-info → spacr-0.1.8.dist-info}/top_level.txt +0 -0
spacr/utils.py
CHANGED
@@ -74,9 +74,18 @@ from scipy import stats
|
|
74
74
|
from .logger import log_function_call
|
75
75
|
from multiprocessing import set_start_method, get_start_method
|
76
76
|
|
77
|
-
import
|
78
|
-
|
79
|
-
|
77
|
+
import torch
|
78
|
+
import torchvision.transforms as transforms
|
79
|
+
from torchvision.models import resnet50
|
80
|
+
from PIL import Image
|
81
|
+
import numpy as np
|
82
|
+
import umap
|
83
|
+
import pandas as pd
|
84
|
+
from sklearn.ensemble import RandomForestClassifier
|
85
|
+
from sklearn.preprocessing import StandardScaler
|
86
|
+
from scipy.stats import f_oneway, kruskal
|
87
|
+
from sklearn.cluster import KMeans
|
88
|
+
from scipy import stats
|
80
89
|
|
81
90
|
def reset_mp():
|
82
91
|
current_method = get_start_method()
|
@@ -472,7 +481,7 @@ def is_list_of_lists(var):
|
|
472
481
|
return True
|
473
482
|
return False
|
474
483
|
|
475
|
-
def normalize_to_dtype(array, p1=2, p2=98, percentile_list=None):
|
484
|
+
def normalize_to_dtype(array, p1=2, p2=98, percentile_list=None, new_dtype=None):
|
476
485
|
"""
|
477
486
|
Normalize each image in the stack to its own percentiles.
|
478
487
|
|
@@ -491,7 +500,16 @@ def normalize_to_dtype(array, p1=2, p2=98, percentile_list=None):
|
|
491
500
|
The normalized stack with the same shape as the input stack.
|
492
501
|
"""
|
493
502
|
|
494
|
-
|
503
|
+
if new_dtype is None:
|
504
|
+
out_range = (0, np.iinfo(array.dtype).max)
|
505
|
+
elif new_dtype in [np.uint8, np.uint16]:
|
506
|
+
out_range = (0, np.iinfo(new_dtype).max)
|
507
|
+
elif new_dtype in ['uint8', 'uint16']:
|
508
|
+
new_dtype = np.uint8 if new_dtype == 'uint8' else np.uint16
|
509
|
+
out_range = (0, np.iinfo(new_dtype).max)
|
510
|
+
else:
|
511
|
+
out_range = (0, np.iinfo(array.dtype).max)
|
512
|
+
|
495
513
|
nimg = array.shape[2]
|
496
514
|
new_stack = np.empty_like(array, dtype=array.dtype)
|
497
515
|
|
@@ -3844,18 +3862,6 @@ def search_reduction_and_clustering(numeric_data, n_neighbors, min_dist, metric,
|
|
3844
3862
|
if verbose:
|
3845
3863
|
print(f'Embedding shape: {embedding.shape}')
|
3846
3864
|
return embedding, labels
|
3847
|
-
import torch
|
3848
|
-
import torchvision.transforms as transforms
|
3849
|
-
from torchvision.models import resnet50
|
3850
|
-
from PIL import Image
|
3851
|
-
import numpy as np
|
3852
|
-
import umap
|
3853
|
-
import pandas as pd
|
3854
|
-
from sklearn.ensemble import RandomForestClassifier
|
3855
|
-
from sklearn.preprocessing import StandardScaler
|
3856
|
-
from scipy.stats import f_oneway, kruskal
|
3857
|
-
from sklearn.cluster import KMeans
|
3858
|
-
from scipy import stats
|
3859
3865
|
|
3860
3866
|
def load_image(image_path):
|
3861
3867
|
"""Load and preprocess an image."""
|
@@ -4050,7 +4056,7 @@ def _merge_cells_based_on_parasite_overlap(parasite_mask, cell_mask, nuclei_mask
|
|
4050
4056
|
|
4051
4057
|
# Relabel the merged cell mask
|
4052
4058
|
relabeled_cell_mask, _ = label(cell_mask, return_num=True)
|
4053
|
-
return relabeled_cell_mask
|
4059
|
+
return relabeled_cell_mask.astype(np.uint16)
|
4054
4060
|
|
4055
4061
|
def adjust_cell_masks(parasite_folder, cell_folder, nuclei_folder, overlap_threshold=5, perimeter_threshold=30):
|
4056
4062
|
|
@@ -4090,7 +4096,7 @@ def adjust_cell_masks(parasite_folder, cell_folder, nuclei_folder, overlap_thres
|
|
4090
4096
|
merged_cell_mask = _merge_cells_based_on_parasite_overlap(parasite_mask, cell_mask, nuclei_mask, overlap_threshold, perimeter_threshold)
|
4091
4097
|
|
4092
4098
|
# Force 16 bit
|
4093
|
-
|
4099
|
+
#merged_cell_mask = merged_cell_mask.astype(np.uint16)
|
4094
4100
|
|
4095
4101
|
# Overwrite the original cell mask file with the merged result
|
4096
4102
|
np.save(cell_path, merged_cell_mask)
|
@@ -1,11 +1,11 @@
|
|
1
|
-
spacr/__init__.py,sha256=
|
1
|
+
spacr/__init__.py,sha256=8uhfJ_RcnX4OmvflNRcts4zxnyfML6xiyIeFGZeMpXg,1416
|
2
2
|
spacr/__main__.py,sha256=bkAJJD2kjIqOP-u1kLvct9jQQCeUXzlEjdgitwi1Lm8,75
|
3
3
|
spacr/alpha.py,sha256=Y95sLEfpK2OSYKRn3M8eUOU33JJeXfV8zhrC4KnwSTY,35244
|
4
4
|
spacr/annotate_app.py,sha256=imQ7ZEXDyM6ce1dxZ1xUS1-KequuF_NCI4xCaPLjvco,29275
|
5
5
|
spacr/annotate_app_v2.py,sha256=imQ7ZEXDyM6ce1dxZ1xUS1-KequuF_NCI4xCaPLjvco,29275
|
6
|
-
spacr/app_annotate.py,sha256=
|
6
|
+
spacr/app_annotate.py,sha256=FhyDBsLdo6etOSvz6et2AhhJn67SwdeYUVDzBJzdw1E,2274
|
7
7
|
spacr/app_classify.py,sha256=urTP_wlZ58hSyM5a19slYlBxN0PdC-9-ga0hvq8CGWc,165
|
8
|
-
spacr/app_make_masks.py,sha256=
|
8
|
+
spacr/app_make_masks.py,sha256=qV3L_2TilGZBAUyBrzaWAayei_tf3XvJdUUDyzEI6hA,1834
|
9
9
|
spacr/app_make_masks_v2.py,sha256=OkNeskNbgep8wQa4ES3jpJjZLfn4yIkGwQOd9r0spfA,30497
|
10
10
|
spacr/app_mask.py,sha256=l-dBY8ftzCMdDe6-pXc2Nh_u-idNL9G7UOARiLJBtds,153
|
11
11
|
spacr/app_measure.py,sha256=_K7APYIeOKpV6e_LcqabBjvEi7mfq9Fch8175x1x0k8,162
|
@@ -14,47 +14,47 @@ spacr/app_umap.py,sha256=ZWAmf_OsIKbYvolYuWPMYhdlVe-n2CADoJulAizMiEo,153
|
|
14
14
|
spacr/chris.py,sha256=YlBjSgeZaY8HPy6jkrT_ISAnCMAKVfvCxF0I9eAZLFM,2418
|
15
15
|
spacr/classify_app.py,sha256=Zi15ryc1ocYitRF4kyxlC27XxGyzfSPdvj2d6ZrSh7E,8446
|
16
16
|
spacr/cli.py,sha256=507jfOOEV8BoL4eeUcblvH-iiDHdBrEVJLu1ghAAPSc,1800
|
17
|
-
spacr/core.py,sha256=
|
18
|
-
spacr/deep_spacr.py,sha256=
|
17
|
+
spacr/core.py,sha256=bm1cApGVTE218Ds3FqqWD5TsF5FF8kclHwPlvdOolzc,160216
|
18
|
+
spacr/deep_spacr.py,sha256=ASBsN4JpHp_3S-91JUsB34IWTjTGPYI7jKV2qZnUR5M,37005
|
19
19
|
spacr/foldseek.py,sha256=YIP1d4Ci6CeA9jSyiv-HTDbNmAmcSM9Y_DaOs7wYzLY,33546
|
20
20
|
spacr/get_alfafold_structures.py,sha256=ehx_MQgb12k3hFecP6cYVlm5TLO8iWjgevy8ESyS3cw,3544
|
21
21
|
spacr/graph_learning.py,sha256=1tR-ZxvXE3dBz1Saw7BeVFcrsUFu9OlUZeZVifih9eo,13070
|
22
|
-
spacr/gui.py,sha256=
|
22
|
+
spacr/gui.py,sha256=OPIMDVVYyAKO3zJIrWkP_YIc9-SwQsVR2S7ynXu1wkQ,8901
|
23
23
|
spacr/gui_2.py,sha256=ZAI5quQYbhQJ40vK0NCqU_UMSPLkpfeQpomBWUSM0fc,6946
|
24
24
|
spacr/gui_annotate.py,sha256=ugBksLGOHdtOLlEuRyyc59TrkYKu3rDf8JxEgiBSVao,6536
|
25
25
|
spacr/gui_classify_app.py,sha256=Zi15ryc1ocYitRF4kyxlC27XxGyzfSPdvj2d6ZrSh7E,8446
|
26
|
-
spacr/gui_core.py,sha256=
|
27
|
-
spacr/gui_elements.py,sha256=
|
26
|
+
spacr/gui_core.py,sha256=PmElJrKHtEGYKpGTGgryxxvUvOHMh-wUmhvuHnyI13w,31833
|
27
|
+
spacr/gui_elements.py,sha256=b0GJCHyrgJFeqB_IdjkXqMbXeC1reiLyiQ6-MTf_UuQ,73305
|
28
28
|
spacr/gui_make_masks_app.py,sha256=tl4M4Q2WQgrrwjRBJVevxJxpNowqzPhWkdCOm2UfRbw,45053
|
29
29
|
spacr/gui_make_masks_app_v2.py,sha256=X3izTBXdCZDlkVe-fbG-jmCQtcAbmK0OIivjyWaLhug,30576
|
30
30
|
spacr/gui_mask_app.py,sha256=mhTl_XzXLFl8Tx3WYEMpdYB_qw9u5JJa0EdkvlcIzAE,10706
|
31
31
|
spacr/gui_measure_app.py,sha256=_C1-XFL5HSquUEEbM_NcxdvHx-socPFCx85MBG4d6xo,10598
|
32
32
|
spacr/gui_run.py,sha256=0x85MJqFtREuWuNeIRLB8hFeibKGszfN14POQQWzPDQ,1998
|
33
33
|
spacr/gui_sim_app.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
34
|
-
spacr/gui_utils.py,sha256=
|
35
|
-
spacr/gui_wrappers.py,sha256
|
34
|
+
spacr/gui_utils.py,sha256=W0blyZ6JTCBzlkZwXqJpg_uUv41vvqbKvJGCigCeWG8,13890
|
35
|
+
spacr/gui_wrappers.py,sha256=-E1SFOmtp7_nfg9QzajI7GJcAcaMug92Pjw7pS1YzjY,4656
|
36
36
|
spacr/io.py,sha256=IoERqSwoxJrInYl-E0WfwFOEDZXFdJofk5DmpbyLGWM,112077
|
37
37
|
spacr/logger.py,sha256=7Zqr3TuuOQLWT32gYr2q1qvv7x0a2JhLANmZcnBXAW8,670
|
38
38
|
spacr/make_masks_app.py,sha256=iGaTwhowoe2JMOSOf8bJwQZTooRhLQx7KO0ewnAmqDY,45138
|
39
39
|
spacr/make_masks_app_v2.py,sha256=X3izTBXdCZDlkVe-fbG-jmCQtcAbmK0OIivjyWaLhug,30576
|
40
40
|
spacr/mask_app.py,sha256=mhTl_XzXLFl8Tx3WYEMpdYB_qw9u5JJa0EdkvlcIzAE,10706
|
41
|
-
spacr/measure.py,sha256=
|
41
|
+
spacr/measure.py,sha256=e36NR8raCkvKHZXvTJgPDwObsmsegvc1dAiCqD3oljk,55751
|
42
42
|
spacr/measure_app.py,sha256=_C1-XFL5HSquUEEbM_NcxdvHx-socPFCx85MBG4d6xo,10598
|
43
43
|
spacr/old_code.py,sha256=jw67DAGoLBd7mWofVzRJSEmCI1Qrff26zIo65SEkV00,13817
|
44
|
-
spacr/plot.py,sha256=
|
44
|
+
spacr/plot.py,sha256=DYJEoK1kz2ih6ZGvKiA3xTqeIeKQNhuQKwgrscopFxA,69101
|
45
45
|
spacr/sequencing.py,sha256=fHZRnoMSxmhMdadkei3lUeBdckqFyptWdQyWsDW3aaU,83304
|
46
|
-
spacr/settings.py,sha256=
|
46
|
+
spacr/settings.py,sha256=CQ93Mb-GjB72yPKcK43jnf22--YRN5kaMYlXwpiRLSc,65699
|
47
47
|
spacr/sim.py,sha256=FveaVgBi3eypO2oVB5Dx-v0CC1Ny7UPfXkJiiRRodAk,71212
|
48
48
|
spacr/sim_app.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
49
49
|
spacr/timelapse.py,sha256=KMYCgHzf9LTZe-lWl5mvH2EjbKRE6OhpwdY13wEumGc,39504
|
50
|
-
spacr/utils.py,sha256=
|
50
|
+
spacr/utils.py,sha256=OQ8sSBH6VWx2xP_vh4ILJT71B46DFFhsq-Y6WxYdGhI,186891
|
51
51
|
spacr/version.py,sha256=axH5tnGwtgSnJHb5IDhiu4Zjk5GhLyAEDRe-rnaoFOA,409
|
52
52
|
spacr/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model,sha256=z8BbHWZPRnE9D_BHO0fBREE85c1vkltDs-incs2ytXQ,26566572
|
53
53
|
spacr/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model_settings.csv,sha256=fBAGuL_B8ERVdVizO3BHozTDSbZUh1yFzsYK3wkQN68,420
|
54
54
|
spacr/models/cp/toxo_pv_lumen.CP_model,sha256=2y_CindYhmTvVwBH39SNILF3rI3x9SsRn6qrMxHy3l0,26562451
|
55
|
-
spacr-0.1.
|
56
|
-
spacr-0.1.
|
57
|
-
spacr-0.1.
|
58
|
-
spacr-0.1.
|
59
|
-
spacr-0.1.
|
60
|
-
spacr-0.1.
|
55
|
+
spacr-0.1.8.dist-info/LICENSE,sha256=SR-2MeGc6SCM1UORJYyarSWY_A-JaOMFDj7ReSs9tRM,1083
|
56
|
+
spacr-0.1.8.dist-info/METADATA,sha256=iOXiNEHaMwhMdS3GpncKdaFEE3xgdoDeK-ndW5eZYdk,5049
|
57
|
+
spacr-0.1.8.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
58
|
+
spacr-0.1.8.dist-info/entry_points.txt,sha256=BMC0ql9aNNpv8lUZ8sgDLQMsqaVnX5L535gEhKUP5ho,296
|
59
|
+
spacr-0.1.8.dist-info/top_level.txt,sha256=GJPU8FgwRXGzKeut6JopsSRY2R8T3i9lDgya42tLInY,6
|
60
|
+
spacr-0.1.8.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|