spacr 0.2.3__py3-none-any.whl → 0.2.5__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/app_annotate.py +3 -4
- spacr/core.py +100 -282
- spacr/gui.py +20 -38
- spacr/gui_core.py +406 -499
- spacr/gui_elements.py +395 -60
- spacr/gui_utils.py +393 -73
- spacr/io.py +130 -50
- spacr/measure.py +199 -154
- spacr/plot.py +108 -42
- spacr/resources/font/open_sans/OFL.txt +93 -0
- spacr/resources/font/open_sans/OpenSans-Italic-VariableFont_wdth,wght.ttf +0 -0
- spacr/resources/font/open_sans/OpenSans-VariableFont_wdth,wght.ttf +0 -0
- spacr/resources/font/open_sans/README.txt +100 -0
- spacr/resources/font/open_sans/static/OpenSans-Bold.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans-BoldItalic.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans-ExtraBold.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans-ExtraBoldItalic.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans-Italic.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans-Light.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans-LightItalic.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans-Medium.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans-MediumItalic.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans-Regular.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans-SemiBold.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans-SemiBoldItalic.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_Condensed-Bold.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_Condensed-BoldItalic.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_Condensed-ExtraBold.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_Condensed-ExtraBoldItalic.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_Condensed-Italic.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_Condensed-Light.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_Condensed-LightItalic.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_Condensed-Medium.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_Condensed-MediumItalic.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_Condensed-Regular.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_Condensed-SemiBold.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_Condensed-SemiBoldItalic.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Bold.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-BoldItalic.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-ExtraBold.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-ExtraBoldItalic.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Italic.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Light.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-LightItalic.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Medium.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-MediumItalic.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Regular.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-SemiBold.ttf +0 -0
- spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-SemiBoldItalic.ttf +0 -0
- spacr/resources/icons/logo.pdf +2786 -6
- spacr/resources/icons/logo_spacr.png +0 -0
- spacr/resources/icons/logo_spacr_1.png +0 -0
- spacr/settings.py +12 -87
- spacr/utils.py +45 -10
- {spacr-0.2.3.dist-info → spacr-0.2.5.dist-info}/METADATA +5 -1
- spacr-0.2.5.dist-info/RECORD +100 -0
- spacr-0.2.3.dist-info/RECORD +0 -58
- {spacr-0.2.3.dist-info → spacr-0.2.5.dist-info}/LICENSE +0 -0
- {spacr-0.2.3.dist-info → spacr-0.2.5.dist-info}/WHEEL +0 -0
- {spacr-0.2.3.dist-info → spacr-0.2.5.dist-info}/entry_points.txt +0 -0
- {spacr-0.2.3.dist-info → spacr-0.2.5.dist-info}/top_level.txt +0 -0
Binary file
|
Binary file
|
spacr/settings.py
CHANGED
@@ -220,6 +220,7 @@ def get_measure_crop_settings(settings):
|
|
220
220
|
|
221
221
|
settings.setdefault('src', 'path')
|
222
222
|
settings.setdefault('verbose', False)
|
223
|
+
settings.setdefault('experiment', 'exp')
|
223
224
|
|
224
225
|
# Test mode
|
225
226
|
settings.setdefault('test_mode', False)
|
@@ -252,8 +253,6 @@ def get_measure_crop_settings(settings):
|
|
252
253
|
|
253
254
|
# Operational settings
|
254
255
|
settings.setdefault('plot',False)
|
255
|
-
settings.setdefault('plot_filtration',False)
|
256
|
-
settings.setdefault('representative_images', False)
|
257
256
|
settings.setdefault('n_jobs', os.cpu_count()-2)
|
258
257
|
|
259
258
|
# Object settings
|
@@ -268,24 +267,9 @@ def get_measure_crop_settings(settings):
|
|
268
267
|
settings.setdefault('cytoplasm_min_size',0)
|
269
268
|
settings.setdefault('merge_edge_pathogen_cells', True)
|
270
269
|
|
271
|
-
# Miscellaneous settings
|
272
|
-
settings.setdefault('experiment', 'exp')
|
273
|
-
settings.setdefault('cells', ['HeLa'])
|
274
|
-
settings.setdefault('cell_loc', None)
|
275
|
-
settings.setdefault('pathogens', ['ME49Dku80WT', 'ME49Dku80dgra8:GRA8', 'ME49Dku80dgra8', 'ME49Dku80TKO'])
|
276
|
-
settings.setdefault('pathogen_loc', [['c1', 'c2', 'c3', 'c4', 'c5', 'c6'], ['c7', 'c8', 'c9', 'c10', 'c11', 'c12'], ['c13', 'c14', 'c15', 'c16', 'c17', 'c18'], ['c19', 'c20', 'c21', 'c22', 'c23', 'c24']])
|
277
|
-
settings.setdefault('treatments', ['BR1', 'BR2', 'BR3'])
|
278
|
-
settings.setdefault('treatment_loc', [['c1', 'c2', 'c7', 'c8', 'c13', 'c14', 'c19', 'c20'], ['c3', 'c4', 'c9', 'c10', 'c15', 'c16', 'c21', 'c22'], ['c5', 'c6', 'c11', 'c12', 'c17', 'c18', 'c23', 'c24']])
|
279
|
-
settings.setdefault('channel_of_interest', 2)
|
280
|
-
settings.setdefault('compartments', ['pathogen', 'cytoplasm'])
|
281
|
-
settings.setdefault('measurement', 'mean_intensity')
|
282
|
-
settings.setdefault('nr_imgs', 32)
|
283
|
-
settings.setdefault('um_per_pixel', 0.1)
|
284
|
-
|
285
270
|
if settings['test_mode']:
|
286
271
|
settings['verbose'] = True
|
287
272
|
settings['plot'] = True
|
288
|
-
settings['plot_filtration'] = True
|
289
273
|
test_imgs = settings['test_nr']
|
290
274
|
print(f'Test mode enabled with {test_imgs} images, plotting set to True')
|
291
275
|
|
@@ -554,8 +538,6 @@ expected_types = {
|
|
554
538
|
"png_dims": list,
|
555
539
|
"normalize_by": str,
|
556
540
|
"save_measurements": bool,
|
557
|
-
"representative_images": bool,
|
558
|
-
"plot_filtration": bool,
|
559
541
|
"include_uninfected": bool,
|
560
542
|
"dialate_pngs": bool,
|
561
543
|
"dialate_png_ratios": list,
|
@@ -742,60 +724,6 @@ expected_types = {
|
|
742
724
|
"fraction_threshold": float,
|
743
725
|
}
|
744
726
|
|
745
|
-
def check_settings_v1(vars_dict, expected_types,q=None):
|
746
|
-
from .gui_utils import parse_list
|
747
|
-
settings = {}
|
748
|
-
# Define the expected types for each key, including None where applicable
|
749
|
-
|
750
|
-
for key, (label, widget, var) in vars_dict.items():
|
751
|
-
if key not in expected_types:
|
752
|
-
if key not in ["General","Nucleus","Cell","Pathogen","Timelapse","Plot","Object Image","Annotate Data","Measurements","Advanced","Miscellaneous","Test"]:
|
753
|
-
q.put(f"Key {key} not found in expected types.")
|
754
|
-
continue
|
755
|
-
|
756
|
-
value = var.get()
|
757
|
-
expected_type = expected_types.get(key, str)
|
758
|
-
|
759
|
-
try:
|
760
|
-
if key in ["png_size", "pathogen_plate_metadata", "treatment_plate_metadata"]:
|
761
|
-
parsed_value = ast.literal_eval(value) if value else None
|
762
|
-
if isinstance(parsed_value, list):
|
763
|
-
if all(isinstance(i, list) for i in parsed_value) or all(not isinstance(i, list) for i in parsed_value):
|
764
|
-
settings[key] = parsed_value
|
765
|
-
else:
|
766
|
-
raise ValueError("Invalid format: Mixed list and list of lists")
|
767
|
-
else:
|
768
|
-
raise ValueError("Invalid format for list or list of lists")
|
769
|
-
elif expected_type == list:
|
770
|
-
settings[key] = parse_list(value) if value else None
|
771
|
-
elif expected_type == bool:
|
772
|
-
settings[key] = value if isinstance(value, bool) else value.lower() in ['true', '1', 't', 'y', 'yes']
|
773
|
-
elif expected_type == (int, type(None)):
|
774
|
-
settings[key] = int(value) if value else None
|
775
|
-
elif expected_type == (float, type(None)):
|
776
|
-
settings[key] = float(value) if value else None
|
777
|
-
elif expected_type == (int, float):
|
778
|
-
settings[key] = float(value) if '.' in value else int(value)
|
779
|
-
elif expected_type == (str, type(None)):
|
780
|
-
settings[key] = str(value) if value else None
|
781
|
-
elif isinstance(expected_type, tuple):
|
782
|
-
for typ in expected_type:
|
783
|
-
try:
|
784
|
-
settings[key] = typ(value) if value else None
|
785
|
-
break
|
786
|
-
except (ValueError, TypeError):
|
787
|
-
continue
|
788
|
-
else:
|
789
|
-
raise ValueError
|
790
|
-
else:
|
791
|
-
settings[key] = expected_type(value) if value else None
|
792
|
-
except (ValueError, SyntaxError):
|
793
|
-
expected_type_name = ' or '.join([t.__name__ for t in expected_type]) if isinstance(expected_type, tuple) else expected_type.__name__
|
794
|
-
q.put(f"Error: Invalid format for {key}. Expected type: {expected_type_name}.")
|
795
|
-
return
|
796
|
-
|
797
|
-
return settings
|
798
|
-
|
799
727
|
def check_settings(vars_dict, expected_types, q=None):
|
800
728
|
from .gui_utils import parse_list
|
801
729
|
|
@@ -805,7 +733,7 @@ def check_settings(vars_dict, expected_types, q=None):
|
|
805
733
|
|
806
734
|
settings = {}
|
807
735
|
|
808
|
-
for key, (label, widget, var) in vars_dict.items():
|
736
|
+
for key, (label, widget, var, _) in vars_dict.items():
|
809
737
|
if key not in expected_types:
|
810
738
|
if key not in ["General", "Nucleus", "Cell", "Pathogen", "Timelapse", "Plot", "Object Image", "Annotate Data", "Measurements", "Advanced", "Miscellaneous", "Test"]:
|
811
739
|
q.put(f"Key {key} not found in expected types.")
|
@@ -856,7 +784,7 @@ def check_settings(vars_dict, expected_types, q=None):
|
|
856
784
|
|
857
785
|
def generate_fields(variables, scrollable_frame):
|
858
786
|
from .gui_utils import create_input_field
|
859
|
-
from .gui_elements import spacrToolTip
|
787
|
+
from .gui_elements import set_dark_style, spacrToolTip
|
860
788
|
row = 1
|
861
789
|
vars_dict = {}
|
862
790
|
tooltips = {
|
@@ -1014,7 +942,6 @@ def generate_fields(variables, scrollable_frame):
|
|
1014
942
|
"plot_by_cluster": "(bool) - Whether to plot images by clusters.",
|
1015
943
|
"plot_cluster_grids": "(bool) - Whether to plot grids of clustered images.",
|
1016
944
|
"plot_control": "(dict) - Control settings for plotting.",
|
1017
|
-
"plot_filtration": "(bool) - Whether to plot the filtration steps.",
|
1018
945
|
"plot_images": "(bool) - Whether to plot images.",
|
1019
946
|
"plot_nr": "(int) - Number of plots to generate.",
|
1020
947
|
"plot_outlines": "(bool) - Whether to plot outlines of segmented objects.",
|
@@ -1036,7 +963,6 @@ def generate_fields(variables, scrollable_frame):
|
|
1036
963
|
"remove_image_canvas": "(bool) - Whether to remove the image canvas after plotting.",
|
1037
964
|
"remove_low_variance_features": "(bool) - Whether to remove low variance features from the analysis.",
|
1038
965
|
"remove_row_column_effect": "(bool) - Whether to remove row and column effects from the data.",
|
1039
|
-
"representative_images": "(bool) - Whether to save representative images of the segmented objects (Not working yet).",
|
1040
966
|
"resize": "(bool) - Resize factor for the images.",
|
1041
967
|
"resample": "(bool) - Whether to resample the images during processing.",
|
1042
968
|
"rescale": "(float) - Rescaling factor for the images.",
|
@@ -1080,17 +1006,19 @@ def generate_fields(variables, scrollable_frame):
|
|
1080
1006
|
"um_per_pixel": "(float) - The micrometers per pixel for the images."
|
1081
1007
|
}
|
1082
1008
|
|
1083
|
-
|
1084
1009
|
for key, (var_type, options, default_value) in variables.items():
|
1085
|
-
label, widget, var = create_input_field(scrollable_frame.scrollable_frame, key, row, var_type, options, default_value)
|
1086
|
-
vars_dict[key] = (label, widget, var) # Store the label, widget, and variable
|
1010
|
+
label, widget, var, frame = create_input_field(scrollable_frame.scrollable_frame, key, row, var_type, options, default_value)
|
1011
|
+
vars_dict[key] = (label, widget, var, frame) # Store the label, widget, and variable
|
1087
1012
|
|
1088
1013
|
# Add tooltip to the label if it exists in the tooltips dictionary
|
1089
1014
|
if key in tooltips:
|
1090
1015
|
spacrToolTip(label, tooltips[key])
|
1016
|
+
|
1091
1017
|
row += 1
|
1018
|
+
|
1092
1019
|
return vars_dict
|
1093
1020
|
|
1021
|
+
|
1094
1022
|
categories = {
|
1095
1023
|
"General": ["src", "metadata_type", "custom_regex", "experiment", "channels", "magnification", "channel_dims"],
|
1096
1024
|
"Paths":["grna", "barcodes"],
|
@@ -1100,9 +1028,9 @@ categories = {
|
|
1100
1028
|
"Cell": ["cell_intensity_range", "cell_size_range", "cell_chann_dim", "cell_channel", "cell_background", "cell_Signal_to_noise", "cell_CP_prob", "cell_FT", "remove_background_cell", "cell_min_size", "cell_mask_dim", "cytoplasm", "cytoplasm_min_size", "include_uninfected", "merge_edge_pathogen_cells", "adjust_cells"],
|
1101
1029
|
"Pathogen": ["pathogen_intensity_range", "pathogen_size_range", "pathogen_chann_dim", "pathogen_channel", "pathogen_background", "pathogen_Signal_to_noise", "pathogen_CP_prob", "pathogen_FT", "pathogen_model", "remove_background_pathogen", "pathogen_min_size", "pathogen_mask_dim"],
|
1102
1030
|
"Timelapse": ["fps", "timelapse_displacement", "timelapse_memory", "timelapse_frame_limits", "timelapse_remove_transient", "timelapse_mode", "timelapse_objects", "compartments"],
|
1103
|
-
"Plot": ["plot_control", "plot_nr", "
|
1031
|
+
"Plot": ["plot_control", "plot_nr", "examples_to_plot", "normalize_plots", "normalize", "cmap", "figuresize", "plot_cluster_grids", "img_zoom", "row_limit", "color_by", "plot_images", "smooth_lines", "plot_points", "plot_outlines", "black_background", "plot_by_cluster", "heatmap_feature","grouping","min_max","cmap","save_figure"],
|
1104
1032
|
"Object Image": ["save_png", "dialate_pngs", "dialate_png_ratios", "png_size", "png_dims", "save_arrays", "normalize_by", "dialate_png_ratios", "crop_mode", "dialate_pngs", "normalize", "use_bounding_box"],
|
1105
|
-
"Annotate Data": ["nc_loc", "pc_loc", "nc", "pc", "cell_plate_metadata","pathogen_types", "pathogen_plate_metadata", "treatment_plate_metadata", "metadata_types", "cell_types", "target","positive_control","negative_control", "location_column", "treatment_loc", "cells", "cell_loc", "pathogens", "pathogen_loc", "channel_of_interest", "measurement", "treatments", "
|
1033
|
+
"Annotate Data": ["nc_loc", "pc_loc", "nc", "pc", "cell_plate_metadata","pathogen_types", "pathogen_plate_metadata", "treatment_plate_metadata", "metadata_types", "cell_types", "target","positive_control","negative_control", "location_column", "treatment_loc", "cells", "cell_loc", "pathogens", "pathogen_loc", "channel_of_interest", "measurement", "treatments", "um_per_pixel", "nr_imgs", "exclude", "exclude_conditions", "mix", "pos", "neg"],
|
1106
1034
|
"Measurements": ["remove_image_canvas", "remove_highly_correlated", "homogeneity", "homogeneity_distances", "radial_dist", "calculate_correlation", "manders_thresholds", "save_measurements", "tables", "image_nr", "dot_size", "filter_by", "remove_highly_correlated_features", "remove_low_variance_features", "channel_of_interest"],
|
1107
1035
|
"Advanced": ["plate_dict", "target_intensity_min", "cells_per_well", "include_multinucleated", "include_multiinfected", "include_noninfected", "backgrounds", "plot", "timelapse", "schedule", "test_size","exclude","n_repeats","top_features", "model_type","minimum_cell_count","n_estimators","preprocess", "remove_background", "normalize", "lower_percentile", "merge_pathogens", "batch_size", "filter", "save", "masks", "verbose", "randomize", "n_jobs", "train_mode","amsgrad","use_checkpoint","gradient_accumulation","gradient_accumulation_steps","intermedeate_save","pin_memory","n_jobs","channels","augment"],
|
1108
1036
|
"Clustering": ["eps","min_samples","analyze_clusters","clustering","remove_cluster_noise"],
|
@@ -1114,7 +1042,7 @@ categories = {
|
|
1114
1042
|
}
|
1115
1043
|
|
1116
1044
|
descriptions = {
|
1117
|
-
'mask': "Generate
|
1045
|
+
'mask': "\n\nHelp:\n- Generate Cells, Nuclei, Pathogens, and Cytoplasm masks from intensity images in src.\n- To ensure that spacr is installed correctly:\n- 1. Downloade the training set (click Download).\n- 2. Import settings (click settings navigate to downloaded dataset settings folder and import preprocess_generate_masks_settings.csv).\n- 3. Run the module.\n- 4. Proceed to the Measure module (click Measure in the menue bar).\n- For further help, click the Help button in the menue bar.",
|
1118
1046
|
|
1119
1047
|
'measure': "Capture Measurements from Cells, Nuclei, Pathogens, and Cytoplasm objects. Generate single object PNG images for one or several objects. (Requires masks from the Mask module). Function: measure_crop from spacr.measure.\n\nKey Features:\n- Comprehensive Measurement Capture: Obtain detailed measurements for various cellular components, including area, perimeter, intensity, and more.\n- Image Generation: Create high-resolution PNG images of individual objects, facilitating further analysis and visualization.\n- Mask Dependency: Requires accurate masks generated by the Mask module to ensure precise measurements.",
|
1120
1048
|
|
@@ -1143,10 +1071,7 @@ def set_annotate_default_settings(settings):
|
|
1143
1071
|
settings.setdefault('src', 'path')
|
1144
1072
|
settings.setdefault('image_type', 'cell_png')
|
1145
1073
|
settings.setdefault('channels', 'r,g,b')
|
1146
|
-
settings.setdefault('
|
1147
|
-
settings.setdefault('img_size', [200, 200])
|
1148
|
-
settings.setdefault('rows', 10)
|
1149
|
-
settings.setdefault('columns', 18)
|
1074
|
+
settings.setdefault('img_size', 200)
|
1150
1075
|
settings.setdefault('annotation_column', 'test')
|
1151
1076
|
settings.setdefault('normalize', 'False')
|
1152
1077
|
settings.setdefault('percentiles', [2, 98])
|
spacr/utils.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import sys, os, re, sqlite3, torch, torchvision, random, string, shutil, cv2, tarfile, glob, psutil, platform
|
1
|
+
import sys, os, re, sqlite3, torch, torchvision, random, string, shutil, cv2, tarfile, glob, psutil, platform
|
2
2
|
|
3
3
|
import numpy as np
|
4
4
|
from cellpose import models as cp_models
|
@@ -87,6 +87,40 @@ from scipy.stats import f_oneway, kruskal
|
|
87
87
|
from sklearn.cluster import KMeans
|
88
88
|
from scipy import stats
|
89
89
|
|
90
|
+
|
91
|
+
def print_progress(files_processed, files_to_process, n_jobs, time_ls=None, batch_size=None, operation_type=""):
|
92
|
+
if isinstance(files_processed, list):
|
93
|
+
files_processed = len(set(files_processed))
|
94
|
+
if isinstance(files_to_process, list):
|
95
|
+
files_to_process = len(set(files_to_process))
|
96
|
+
if isinstance(batch_size, list):
|
97
|
+
batch_size = len(batch_size)
|
98
|
+
|
99
|
+
if not isinstance(files_processed, int):
|
100
|
+
try:
|
101
|
+
files_processed = int(files_processed)
|
102
|
+
except:
|
103
|
+
files_processed = 0
|
104
|
+
if not isinstance(files_to_process, int):
|
105
|
+
try:
|
106
|
+
files_to_process = int(files_to_process)
|
107
|
+
except:
|
108
|
+
files_to_process = 0
|
109
|
+
|
110
|
+
time_info = ""
|
111
|
+
if time_ls is not None:
|
112
|
+
average_time = np.mean(time_ls) if len(time_ls) > 0 else 0
|
113
|
+
time_left = (((files_to_process - files_processed) * average_time) / n_jobs) / 60
|
114
|
+
if batch_size is None:
|
115
|
+
time_info = f'Time/image: {average_time:.3f}sec, Time_left: {time_left:.3f} min.'
|
116
|
+
else:
|
117
|
+
average_time_img = average_time / batch_size
|
118
|
+
time_info = f'Time/batch: {average_time:.3f}sec, Time/image: {average_time_img:.3f}sec, Time_left: {time_left:.3f} min.'
|
119
|
+
|
120
|
+
print(f'Progress: {files_processed}/{files_to_process}, operation_type: {operation_type} {time_info}')
|
121
|
+
|
122
|
+
|
123
|
+
|
90
124
|
def reset_mp():
|
91
125
|
current_method = get_start_method()
|
92
126
|
system = platform.system()
|
@@ -2934,11 +2968,13 @@ def _choose_model(model_name, device, object_type='cell', restore_type=None, obj
|
|
2934
2968
|
if restore_type == None:
|
2935
2969
|
if model_name in ['cyto', 'cyto2', 'cyto3', 'nuclei']:
|
2936
2970
|
model = cp_models.Cellpose(gpu=torch.cuda.is_available(), model_type=model_name, device=device)
|
2937
|
-
|
2971
|
+
return model
|
2938
2972
|
else:
|
2939
2973
|
if object_type == 'nucleus':
|
2940
2974
|
restore = f'{type}_nuclei'
|
2941
2975
|
model = denoise.CellposeDenoiseModel(gpu=torch.cuda.is_available(), model_type="nuclei",restore_type=restore, chan2_restore=False, device=device)
|
2976
|
+
return model
|
2977
|
+
|
2942
2978
|
else:
|
2943
2979
|
restore = f'{type}_cyto3'
|
2944
2980
|
if model_name =='cyto2':
|
@@ -2946,8 +2982,7 @@ def _choose_model(model_name, device, object_type='cell', restore_type=None, obj
|
|
2946
2982
|
if model_name =='cyto':
|
2947
2983
|
chan2_restore = False
|
2948
2984
|
model = denoise.CellposeDenoiseModel(gpu=torch.cuda.is_available(), model_type="cyto3",restore_type=restore, chan2_restore=chan2_restore, device=device)
|
2949
|
-
|
2950
|
-
return model
|
2985
|
+
return model
|
2951
2986
|
|
2952
2987
|
class SelectChannels:
|
2953
2988
|
def __init__(self, channels):
|
@@ -3593,22 +3628,22 @@ def delete_folder(folder_path):
|
|
3593
3628
|
def measure_test_mode(settings):
|
3594
3629
|
|
3595
3630
|
if settings['test_mode']:
|
3596
|
-
if not os.path.basename(settings['
|
3597
|
-
all_files = os.listdir(settings['
|
3631
|
+
if not os.path.basename(settings['src']) == 'test':
|
3632
|
+
all_files = os.listdir(settings['src'])
|
3598
3633
|
random_files = random.sample(all_files, settings['test_nr'])
|
3599
3634
|
|
3600
|
-
src = os.path.join(os.path.dirname(settings['
|
3635
|
+
src = os.path.join(os.path.dirname(settings['src']),'test', 'merged')
|
3601
3636
|
if os.path.exists(src):
|
3602
3637
|
delete_folder(src)
|
3603
3638
|
os.makedirs(src, exist_ok=True)
|
3604
3639
|
|
3605
3640
|
for file in random_files:
|
3606
|
-
shutil.copy(os.path.join(settings['
|
3641
|
+
shutil.copy(os.path.join(settings['src'], file), os.path.join(src,file))
|
3607
3642
|
|
3608
|
-
settings['
|
3643
|
+
settings['src'] = src
|
3609
3644
|
print(f'Changed source folder to {src} for test mode')
|
3610
3645
|
else:
|
3611
|
-
print(f'Test mode enabled, using source folder {settings["
|
3646
|
+
print(f'Test mode enabled, using source folder {settings["src"]}')
|
3612
3647
|
|
3613
3648
|
return settings
|
3614
3649
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: spacr
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.5
|
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
|
@@ -39,6 +39,10 @@ Requires-Dist: ttf-opensans >=2020.10.30
|
|
39
39
|
Requires-Dist: customtkinter <6.0,>=5.2.2
|
40
40
|
Requires-Dist: biopython <2.0,>=1.80
|
41
41
|
Requires-Dist: lxml <6.0,>=5.1.0
|
42
|
+
Requires-Dist: psutil <6.0,>=5.9.8
|
43
|
+
Requires-Dist: gputil <2.0,>=1.4.0
|
44
|
+
Requires-Dist: gpustat <2.0,>=1.1.1
|
45
|
+
Requires-Dist: pyautogui <1.0,>=0.9.54
|
42
46
|
Requires-Dist: huggingface-hub <0.25,>=0.24.0
|
43
47
|
Provides-Extra: dev
|
44
48
|
Requires-Dist: pytest <3.11,>=3.9 ; extra == 'dev'
|
@@ -0,0 +1,100 @@
|
|
1
|
+
spacr/__init__.py,sha256=pJ7Mm7Kb1DhHIdLmNgMILFVWJ9QAG47pT0M6wtiXl8E,1465
|
2
|
+
spacr/__main__.py,sha256=bkAJJD2kjIqOP-u1kLvct9jQQCeUXzlEjdgitwi1Lm8,75
|
3
|
+
spacr/app_annotate.py,sha256=nEIL7Fle9CDKGo3sucG_03DgjUQt5W1M1IHBIpVBr08,2171
|
4
|
+
spacr/app_classify.py,sha256=urTP_wlZ58hSyM5a19slYlBxN0PdC-9-ga0hvq8CGWc,165
|
5
|
+
spacr/app_make_masks.py,sha256=pqDhRpluiHZz-kPX2Zh_KbYe4TsU43qYBa_7f-rsjpw,1694
|
6
|
+
spacr/app_mask.py,sha256=l-dBY8ftzCMdDe6-pXc2Nh_u-idNL9G7UOARiLJBtds,153
|
7
|
+
spacr/app_measure.py,sha256=_K7APYIeOKpV6e_LcqabBjvEi7mfq9Fch8175x1x0k8,162
|
8
|
+
spacr/app_sequencing.py,sha256=DjG26jy4cpddnV8WOOAIiExtOe9MleVMY4MFa5uTo5w,157
|
9
|
+
spacr/app_umap.py,sha256=ZWAmf_OsIKbYvolYuWPMYhdlVe-n2CADoJulAizMiEo,153
|
10
|
+
spacr/chris.py,sha256=YlBjSgeZaY8HPy6jkrT_ISAnCMAKVfvCxF0I9eAZLFM,2418
|
11
|
+
spacr/core.py,sha256=WBVZfuVJPqI7hXaZVLPWCbe-CCLDNjsCB3nHCF2Axmg,148064
|
12
|
+
spacr/deep_spacr.py,sha256=ASBsN4JpHp_3S-91JUsB34IWTjTGPYI7jKV2qZnUR5M,37005
|
13
|
+
spacr/graph_learning.py,sha256=1tR-ZxvXE3dBz1Saw7BeVFcrsUFu9OlUZeZVifih9eo,13070
|
14
|
+
spacr/gui.py,sha256=NoqaHYjqvyiexfXMsFWrRYjcyqAOhEIYnR-82LkKzdk,7277
|
15
|
+
spacr/gui_core.py,sha256=UqX0JE7mCi_4TlVCtEMMTHSUEC2BvZSVUmWzue2HYok,30756
|
16
|
+
spacr/gui_elements.py,sha256=ISGt_gEozMx_BWWgXvcgEEKeqvCxfmoCDVHWlrJ1roQ,106811
|
17
|
+
spacr/gui_utils.py,sha256=nRH1bEXjrTsfgp01H7ayIkimN0v7G163XjiruGwySP0,28050
|
18
|
+
spacr/io.py,sha256=UYISLJgwpwyoTxKy1v1wzFQ6cLX77h2rHh4t5fF1_4w,115461
|
19
|
+
spacr/logger.py,sha256=7Zqr3TuuOQLWT32gYr2q1qvv7x0a2JhLANmZcnBXAW8,670
|
20
|
+
spacr/measure.py,sha256=A_n7y6cF4FL2VDggLaeeKdoWLx8UeHmUZL54NFM_jvI,54742
|
21
|
+
spacr/plot.py,sha256=4o9X76ur2kBe6TtOrbIPfo04iC60OZ1rNJoegBxtLmk,72361
|
22
|
+
spacr/sequencing.py,sha256=fHZRnoMSxmhMdadkei3lUeBdckqFyptWdQyWsDW3aaU,83304
|
23
|
+
spacr/settings.py,sha256=QS8D7zrhxyArRsavfz2w2bh6VnYJk3rUBwoGdE5Qqfc,61254
|
24
|
+
spacr/sim.py,sha256=FveaVgBi3eypO2oVB5Dx-v0CC1Ny7UPfXkJiiRRodAk,71212
|
25
|
+
spacr/sim_app.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
26
|
+
spacr/timelapse.py,sha256=KMYCgHzf9LTZe-lWl5mvH2EjbKRE6OhpwdY13wEumGc,39504
|
27
|
+
spacr/utils.py,sha256=TT2gb2nmhNSwkHheaOfpDPXhpE90_6Er3nA77gAbO3U,188225
|
28
|
+
spacr/version.py,sha256=axH5tnGwtgSnJHb5IDhiu4Zjk5GhLyAEDRe-rnaoFOA,409
|
29
|
+
spacr/resources/font/open_sans/OFL.txt,sha256=bGMoWBRrE2RcdzDiuYiB8A9OVFlJ0sA2imWwce2DAdo,4484
|
30
|
+
"spacr/resources/font/open_sans/OpenSans-Italic-VariableFont_wdth,wght.ttf",sha256=QSoWv9h46CRX_fdlqFM3O2d3-PF3R1srnb4zUezcLm0,580280
|
31
|
+
"spacr/resources/font/open_sans/OpenSans-VariableFont_wdth,wght.ttf",sha256=E3RLvAefD0kuT7OxShXSQrjZYA-qzUI9WM35N_6nzms,529700
|
32
|
+
spacr/resources/font/open_sans/README.txt,sha256=-ZB4ocy30PWpgUpWm_djuTyBe_NiE1yEFG7H-zODBbA,3518
|
33
|
+
spacr/resources/font/open_sans/static/OpenSans-Bold.ttf,sha256=vHPEXlgQoJcevq7062w13shGB9vgLaZ1f59D2Vi22l8,130860
|
34
|
+
spacr/resources/font/open_sans/static/OpenSans-BoldItalic.ttf,sha256=tiGd9Fy-5vh25rKPZoNI4YB7H7mtEY6n1ocEHw0zI4Q,136360
|
35
|
+
spacr/resources/font/open_sans/static/OpenSans-ExtraBold.ttf,sha256=DAeBB3dmNBMRYr5Go4JFOZBAwr7MSV6T1p2bbt1lqY0,131244
|
36
|
+
spacr/resources/font/open_sans/static/OpenSans-ExtraBoldItalic.ttf,sha256=oDRGYhCusJ9__bySUKzNH1w-L7isv9O-iqFUmT7EPZs,136928
|
37
|
+
spacr/resources/font/open_sans/static/OpenSans-Italic.ttf,sha256=XqvWf-PYtbXu5kUE6p5KXvdmW2Q1d-8Rfzwy_aZ80p8,136604
|
38
|
+
spacr/resources/font/open_sans/static/OpenSans-Light.ttf,sha256=RurTiXjijzKtfcENRn7-jYtXhv-YAgw3GKKW-I738cw,130804
|
39
|
+
spacr/resources/font/open_sans/static/OpenSans-LightItalic.ttf,sha256=TqxQLBDa9mCOU-fbhteXaYkDc-u9VHKle7y3V4m8URA,136896
|
40
|
+
spacr/resources/font/open_sans/static/OpenSans-Medium.ttf,sha256=KrFWKUJKzobUKdvA5ae-sw0q89uZiisDpxYB7mllwzQ,130976
|
41
|
+
spacr/resources/font/open_sans/static/OpenSans-MediumItalic.ttf,sha256=v0NvTDTSySHQ8tSZfnhUBQpg_qqJu6zGBK6JatJUyos,136796
|
42
|
+
spacr/resources/font/open_sans/static/OpenSans-Regular.ttf,sha256=ZTBIAnfaYu_eBH6ybnin5TLRz67skWA-aNY4drlmnw0,130832
|
43
|
+
spacr/resources/font/open_sans/static/OpenSans-SemiBold.ttf,sha256=5gMTXMOxIAxyYLNPN_nLHyF4pCs2MDfiah4YJ2q3i_A,130760
|
44
|
+
spacr/resources/font/open_sans/static/OpenSans-SemiBoldItalic.ttf,sha256=sb8sWCggtXA9vNM5tdyXI1wUUYXQ-ruwnCJO-HIVJms,136724
|
45
|
+
spacr/resources/font/open_sans/static/OpenSans_Condensed-Bold.ttf,sha256=CIWGlNIDGR-928YD8NguGNEEwnlBYir6S4_wzKyhK2A,130372
|
46
|
+
spacr/resources/font/open_sans/static/OpenSans_Condensed-BoldItalic.ttf,sha256=dd_-wIDY3AM6l5T_JTYUo4D1H34Tmq5I2vEuvpqkrsQ,136240
|
47
|
+
spacr/resources/font/open_sans/static/OpenSans_Condensed-ExtraBold.ttf,sha256=98s7bdAITVn2b6nlI4tLuBkq1pSfmaFnPJELgyripT4,130812
|
48
|
+
spacr/resources/font/open_sans/static/OpenSans_Condensed-ExtraBoldItalic.ttf,sha256=Yh7na-RGr-rH4T_uNLv6cGefmQfyALsb1Qrf4c5xp30,136652
|
49
|
+
spacr/resources/font/open_sans/static/OpenSans_Condensed-Italic.ttf,sha256=K8gjp2YPH9NLDCpX3ZrNRv7fCser4yoUbS6JXojzkQI,136588
|
50
|
+
spacr/resources/font/open_sans/static/OpenSans_Condensed-Light.ttf,sha256=wcbhJiAM7-BGpJ82qwIMDcyEQJVnGXcTJzlFmAR4etY,130472
|
51
|
+
spacr/resources/font/open_sans/static/OpenSans_Condensed-LightItalic.ttf,sha256=4eYPQJMjKmJ_QuIVuP6hQag4mVYxg5wVJFV8h28zd_c,136760
|
52
|
+
spacr/resources/font/open_sans/static/OpenSans_Condensed-Medium.ttf,sha256=acH5RzYjKjt9ePPfhjwvdWHau9FxkgVNCCVzxUBUM6Y,130520
|
53
|
+
spacr/resources/font/open_sans/static/OpenSans_Condensed-MediumItalic.ttf,sha256=vL_D1ucljgIr9sz4FSoWkg38QLVbxMglTBX0_01o3Vo,136700
|
54
|
+
spacr/resources/font/open_sans/static/OpenSans_Condensed-Regular.ttf,sha256=9ZSB0mD3qvxsRpbdhgjMvhJxTJjmT41hQi7nWvuUl7U,130492
|
55
|
+
spacr/resources/font/open_sans/static/OpenSans_Condensed-SemiBold.ttf,sha256=F5ld4DVfj5bpv37MfcrisKrdWosy6C85CVibgmFpMhw,130524
|
56
|
+
spacr/resources/font/open_sans/static/OpenSans_Condensed-SemiBoldItalic.ttf,sha256=bDVD8CkRaVOD96JJBURtnawSs8vspPKCNsBHW9SCBk0,136792
|
57
|
+
spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Bold.ttf,sha256=saQFKWcgcpqcyyIV744l-gMfKKdKI6eC7gA7Eg2SqIc,131168
|
58
|
+
spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-BoldItalic.ttf,sha256=wTHNHKW51uSs5WjuDM881pe51U25ezzIg4pKiQkkksE,137104
|
59
|
+
spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-ExtraBold.ttf,sha256=NWASkgz4LTrSPDAipCY41ul2Z5XDMeUleDE8C7Nt6RI,131744
|
60
|
+
spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-ExtraBoldItalic.ttf,sha256=PZSxtpkBYq79eWqnTh4KcwtaoAd_QFA6AYfdtvZI-bc,137584
|
61
|
+
spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Italic.ttf,sha256=bHPr5WeX4zrP-VaVVHquxysTBlnRog8lfrh2z2ydf1g,137000
|
62
|
+
spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Light.ttf,sha256=ks1IgCjNng7ksZNOSKaqBefxvwTGXrgQTySGy0nfIJY,131128
|
63
|
+
spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-LightItalic.ttf,sha256=-Xa1RlfcMxM1QYpjMNbNRv-a5ka8m5o5h-3P7gsMoRs,137220
|
64
|
+
spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Medium.ttf,sha256=a-MrWOsGFqIGqpQXeaZyxruXqU3hMC2eHpWNa4wq8RE,130976
|
65
|
+
spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-MediumItalic.ttf,sha256=vJfOBlOVmx_MXbkgSdxHdzSSeALkd253C4Srr84Qvq8,137068
|
66
|
+
spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-Regular.ttf,sha256=skg4DCl15zL9ZD4MAL9fOt4WjonKYBUOMj46ItSAe5Q,130848
|
67
|
+
spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-SemiBold.ttf,sha256=uCiR97jg6sUHtGKVPNtJEg1zZG5Y9ArQ-raqBGjaeGg,130856
|
68
|
+
spacr/resources/font/open_sans/static/OpenSans_SemiCondensed-SemiBoldItalic.ttf,sha256=a5-0oOIrtJltQRa64uFKCdtcjzPvEJ71f_cYavG2i3E,137132
|
69
|
+
spacr/resources/icons/abort.png,sha256=avtIRT7aCJsdZ1WnY_rZStm6cCji5bYPLnlptdcTNcM,6583
|
70
|
+
spacr/resources/icons/annotate.png,sha256=GFgh7DiUMwPG_-xE6W1qU8V_qzSwBi1xKenfoaQxeFA,15495
|
71
|
+
spacr/resources/icons/cellpose_all.png,sha256=HVWOIOBF8p3-On-2UahwMyQXp7awsoC5yWExU1ahDag,20271
|
72
|
+
spacr/resources/icons/cellpose_masks.png,sha256=HVWOIOBF8p3-On-2UahwMyQXp7awsoC5yWExU1ahDag,20271
|
73
|
+
spacr/resources/icons/classify.png,sha256=-iv4sqAwUVJO3CG6fHKHf3_BB0s-I2i4prg-iR7dSBM,35897
|
74
|
+
spacr/resources/icons/default.png,sha256=KoNhaSHukO4wDyivyYEgSbb5mGj-sAxmhKikLLtNpWs,20341
|
75
|
+
spacr/resources/icons/download.png,sha256=1nUoWRaTc4vIsK6gompdeqk0cIv2GdH-gCNHaEBX6Mc,20467
|
76
|
+
spacr/resources/icons/logo.pdf,sha256=VB4cS41V3VV_QxD7l6CwdQKQiYLErugLBxWoCoxjQU0,377925
|
77
|
+
spacr/resources/icons/logo_spacr.png,sha256=qG3e3bdrAefhl1281rfo0R2XP0qA-c-oaBCXjxMGXkw,42587
|
78
|
+
spacr/resources/icons/logo_spacr_1.png,sha256=g9y2ZmnV3hab8r1idDfytm8AaHbBiQdu_93Jd7YKzwA,610892
|
79
|
+
spacr/resources/icons/make_masks.png,sha256=iB4kaTgbgyygSJSNstVKhRIXKSgWYkeh7Gt3ox-kWDI,42493
|
80
|
+
spacr/resources/icons/map_barcodes.png,sha256=ED6yCopk3hP7tICSvT8U_qA1bOOb0WHqmxVkmRxnbtE,7896
|
81
|
+
spacr/resources/icons/mask.png,sha256=DcBes-3UJ7XjRfj_P4RttRp680ZKZeH9a-DSk7bIF5U,37658
|
82
|
+
spacr/resources/icons/measure.png,sha256=Gd-dlN-3Z8D_XngJnChNme8D63KEJMFs_cBv7wT2vOY,40938
|
83
|
+
spacr/resources/icons/ml_analyze.png,sha256=Wc9a_LpG2XffiMfXxn0yUmGP40IXzlAV7bHXQf7m_2o,15754
|
84
|
+
spacr/resources/icons/recruitment.png,sha256=dlVh2ebV_f3rhRFBiL0hDtlUeBSIeg0d4vny8A8IAdo,25067
|
85
|
+
spacr/resources/icons/regression.png,sha256=WIrKY4fSojBOCDkHno4Qb-KH7jcHh6G67dOKzczaU1I,42267
|
86
|
+
spacr/resources/icons/run.png,sha256=ICzyAvsRBCXNAbdn5N3PxCxxVyqxkfC4zOI5Zc8vbxQ,8974
|
87
|
+
spacr/resources/icons/sequencing.png,sha256=P9E_Y76ZysWMKst3_hAw-_4F510XPW1l1TsDElVzt4o,17775
|
88
|
+
spacr/resources/icons/settings.png,sha256=y5Ow5BxJDDsrqom0VNbOMDGGUs6odxbSMDy6y4r_F0w,22269
|
89
|
+
spacr/resources/icons/spacr_logo_rotation.gif,sha256=bgIx1Hx41Ob90SY-q3PBa3CSxtVRnF9XX-ApUSr0wvY,1502560
|
90
|
+
spacr/resources/icons/train_cellpose.png,sha256=_PZ_R_B6azuUACmscScAkugmgLZvCPKQFGIAsszqNLk,3858
|
91
|
+
spacr/resources/icons/umap.png,sha256=dOLF3DeLYy9k0nkUybiZMe1wzHQwLJFRmgccppw-8bI,27457
|
92
|
+
spacr/resources/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model,sha256=z8BbHWZPRnE9D_BHO0fBREE85c1vkltDs-incs2ytXQ,26566572
|
93
|
+
spacr/resources/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model_settings.csv,sha256=fBAGuL_B8ERVdVizO3BHozTDSbZUh1yFzsYK3wkQN68,420
|
94
|
+
spacr/resources/models/cp/toxo_pv_lumen.CP_model,sha256=2y_CindYhmTvVwBH39SNILF3rI3x9SsRn6qrMxHy3l0,26562451
|
95
|
+
spacr-0.2.5.dist-info/LICENSE,sha256=SR-2MeGc6SCM1UORJYyarSWY_A-JaOMFDj7ReSs9tRM,1083
|
96
|
+
spacr-0.2.5.dist-info/METADATA,sha256=fiV7Ivmrb4xlR-6ACV2hT5in8bRgPkiqZrB3K4TP-Ds,5194
|
97
|
+
spacr-0.2.5.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
98
|
+
spacr-0.2.5.dist-info/entry_points.txt,sha256=BMC0ql9aNNpv8lUZ8sgDLQMsqaVnX5L535gEhKUP5ho,296
|
99
|
+
spacr-0.2.5.dist-info/top_level.txt,sha256=GJPU8FgwRXGzKeut6JopsSRY2R8T3i9lDgya42tLInY,6
|
100
|
+
spacr-0.2.5.dist-info/RECORD,,
|
spacr-0.2.3.dist-info/RECORD
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
spacr/__init__.py,sha256=pJ7Mm7Kb1DhHIdLmNgMILFVWJ9QAG47pT0M6wtiXl8E,1465
|
2
|
-
spacr/__main__.py,sha256=bkAJJD2kjIqOP-u1kLvct9jQQCeUXzlEjdgitwi1Lm8,75
|
3
|
-
spacr/app_annotate.py,sha256=xA39bsgvrQlY8P22cUC7sAaw4O57tgZawZtsANmY0ek,2302
|
4
|
-
spacr/app_classify.py,sha256=urTP_wlZ58hSyM5a19slYlBxN0PdC-9-ga0hvq8CGWc,165
|
5
|
-
spacr/app_make_masks.py,sha256=pqDhRpluiHZz-kPX2Zh_KbYe4TsU43qYBa_7f-rsjpw,1694
|
6
|
-
spacr/app_mask.py,sha256=l-dBY8ftzCMdDe6-pXc2Nh_u-idNL9G7UOARiLJBtds,153
|
7
|
-
spacr/app_measure.py,sha256=_K7APYIeOKpV6e_LcqabBjvEi7mfq9Fch8175x1x0k8,162
|
8
|
-
spacr/app_sequencing.py,sha256=DjG26jy4cpddnV8WOOAIiExtOe9MleVMY4MFa5uTo5w,157
|
9
|
-
spacr/app_umap.py,sha256=ZWAmf_OsIKbYvolYuWPMYhdlVe-n2CADoJulAizMiEo,153
|
10
|
-
spacr/chris.py,sha256=YlBjSgeZaY8HPy6jkrT_ISAnCMAKVfvCxF0I9eAZLFM,2418
|
11
|
-
spacr/core.py,sha256=wL6E1MMNrRyvyileqsTOnQ3lhABnw_L6O-4UApZGL84,160216
|
12
|
-
spacr/deep_spacr.py,sha256=ASBsN4JpHp_3S-91JUsB34IWTjTGPYI7jKV2qZnUR5M,37005
|
13
|
-
spacr/graph_learning.py,sha256=1tR-ZxvXE3dBz1Saw7BeVFcrsUFu9OlUZeZVifih9eo,13070
|
14
|
-
spacr/gui.py,sha256=bA1Qy6D9aeL_Qe0Xeql8bRkbbFajAMGTZZR3uBzIW1Q,8495
|
15
|
-
spacr/gui_core.py,sha256=x6_LvAED2QUf52mmrx_UQjSZ6PBshO3ra5MA44o43z4,35071
|
16
|
-
spacr/gui_elements.py,sha256=NM8fCdp1IPJ2z4WyB1qE44rCEGezt2I0PZ5OcwU8UY8,92183
|
17
|
-
spacr/gui_utils.py,sha256=KeIFh3SgOEw1QQ48utm4bVzjUauVZwy5oYrUrD94VWs,13615
|
18
|
-
spacr/io.py,sha256=f7cVn48wNUEj6Teky4p3ojoivAdMUmPll2s0MzJkKD0,112068
|
19
|
-
spacr/logger.py,sha256=7Zqr3TuuOQLWT32gYr2q1qvv7x0a2JhLANmZcnBXAW8,670
|
20
|
-
spacr/measure.py,sha256=RzcD8rsUaOZUYB-zcbaUZcJbrwT0IIW5G7qvb__SO-E,55616
|
21
|
-
spacr/plot.py,sha256=DYJEoK1kz2ih6ZGvKiA3xTqeIeKQNhuQKwgrscopFxA,69101
|
22
|
-
spacr/sequencing.py,sha256=fHZRnoMSxmhMdadkei3lUeBdckqFyptWdQyWsDW3aaU,83304
|
23
|
-
spacr/settings.py,sha256=2fAyGl8lzkkpB3MJJoywo0hCEg9CjziLWkXF0Miv3mM,65569
|
24
|
-
spacr/sim.py,sha256=FveaVgBi3eypO2oVB5Dx-v0CC1Ny7UPfXkJiiRRodAk,71212
|
25
|
-
spacr/sim_app.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
26
|
-
spacr/timelapse.py,sha256=KMYCgHzf9LTZe-lWl5mvH2EjbKRE6OhpwdY13wEumGc,39504
|
27
|
-
spacr/utils.py,sha256=OQ8sSBH6VWx2xP_vh4ILJT71B46DFFhsq-Y6WxYdGhI,186891
|
28
|
-
spacr/version.py,sha256=axH5tnGwtgSnJHb5IDhiu4Zjk5GhLyAEDRe-rnaoFOA,409
|
29
|
-
spacr/resources/icons/abort.png,sha256=avtIRT7aCJsdZ1WnY_rZStm6cCji5bYPLnlptdcTNcM,6583
|
30
|
-
spacr/resources/icons/annotate.png,sha256=GFgh7DiUMwPG_-xE6W1qU8V_qzSwBi1xKenfoaQxeFA,15495
|
31
|
-
spacr/resources/icons/cellpose_all.png,sha256=HVWOIOBF8p3-On-2UahwMyQXp7awsoC5yWExU1ahDag,20271
|
32
|
-
spacr/resources/icons/cellpose_masks.png,sha256=HVWOIOBF8p3-On-2UahwMyQXp7awsoC5yWExU1ahDag,20271
|
33
|
-
spacr/resources/icons/classify.png,sha256=-iv4sqAwUVJO3CG6fHKHf3_BB0s-I2i4prg-iR7dSBM,35897
|
34
|
-
spacr/resources/icons/default.png,sha256=KoNhaSHukO4wDyivyYEgSbb5mGj-sAxmhKikLLtNpWs,20341
|
35
|
-
spacr/resources/icons/download.png,sha256=1nUoWRaTc4vIsK6gompdeqk0cIv2GdH-gCNHaEBX6Mc,20467
|
36
|
-
spacr/resources/icons/logo_spacr.png,sha256=g9y2ZmnV3hab8r1idDfytm8AaHbBiQdu_93Jd7YKzwA,610892
|
37
|
-
spacr/resources/icons/make_masks.png,sha256=iB4kaTgbgyygSJSNstVKhRIXKSgWYkeh7Gt3ox-kWDI,42493
|
38
|
-
spacr/resources/icons/map_barcodes.png,sha256=ED6yCopk3hP7tICSvT8U_qA1bOOb0WHqmxVkmRxnbtE,7896
|
39
|
-
spacr/resources/icons/mask.png,sha256=DcBes-3UJ7XjRfj_P4RttRp680ZKZeH9a-DSk7bIF5U,37658
|
40
|
-
spacr/resources/icons/measure.png,sha256=Gd-dlN-3Z8D_XngJnChNme8D63KEJMFs_cBv7wT2vOY,40938
|
41
|
-
spacr/resources/icons/ml_analyze.png,sha256=Wc9a_LpG2XffiMfXxn0yUmGP40IXzlAV7bHXQf7m_2o,15754
|
42
|
-
spacr/resources/icons/recruitment.png,sha256=dlVh2ebV_f3rhRFBiL0hDtlUeBSIeg0d4vny8A8IAdo,25067
|
43
|
-
spacr/resources/icons/regression.png,sha256=WIrKY4fSojBOCDkHno4Qb-KH7jcHh6G67dOKzczaU1I,42267
|
44
|
-
spacr/resources/icons/run.png,sha256=ICzyAvsRBCXNAbdn5N3PxCxxVyqxkfC4zOI5Zc8vbxQ,8974
|
45
|
-
spacr/resources/icons/sequencing.png,sha256=P9E_Y76ZysWMKst3_hAw-_4F510XPW1l1TsDElVzt4o,17775
|
46
|
-
spacr/resources/icons/settings.png,sha256=y5Ow5BxJDDsrqom0VNbOMDGGUs6odxbSMDy6y4r_F0w,22269
|
47
|
-
spacr/resources/icons/spacr_logo_rotation.gif,sha256=bgIx1Hx41Ob90SY-q3PBa3CSxtVRnF9XX-ApUSr0wvY,1502560
|
48
|
-
spacr/resources/icons/train_cellpose.png,sha256=_PZ_R_B6azuUACmscScAkugmgLZvCPKQFGIAsszqNLk,3858
|
49
|
-
spacr/resources/icons/umap.png,sha256=dOLF3DeLYy9k0nkUybiZMe1wzHQwLJFRmgccppw-8bI,27457
|
50
|
-
spacr/resources/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model,sha256=z8BbHWZPRnE9D_BHO0fBREE85c1vkltDs-incs2ytXQ,26566572
|
51
|
-
spacr/resources/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model_settings.csv,sha256=fBAGuL_B8ERVdVizO3BHozTDSbZUh1yFzsYK3wkQN68,420
|
52
|
-
spacr/resources/models/cp/toxo_pv_lumen.CP_model,sha256=2y_CindYhmTvVwBH39SNILF3rI3x9SsRn6qrMxHy3l0,26562451
|
53
|
-
spacr-0.2.3.dist-info/LICENSE,sha256=SR-2MeGc6SCM1UORJYyarSWY_A-JaOMFDj7ReSs9tRM,1083
|
54
|
-
spacr-0.2.3.dist-info/METADATA,sha256=mZZJ6JqrQ9ylV-VttPd1xyx6U7mtAgLZhB-8ghjl6bQ,5049
|
55
|
-
spacr-0.2.3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
56
|
-
spacr-0.2.3.dist-info/entry_points.txt,sha256=BMC0ql9aNNpv8lUZ8sgDLQMsqaVnX5L535gEhKUP5ho,296
|
57
|
-
spacr-0.2.3.dist-info/top_level.txt,sha256=GJPU8FgwRXGzKeut6JopsSRY2R8T3i9lDgya42tLInY,6
|
58
|
-
spacr-0.2.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|