spacr 0.2.4__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/core.py +56 -67
- spacr/gui.py +20 -38
- spacr/gui_core.py +390 -489
- spacr/gui_elements.py +309 -59
- spacr/gui_utils.py +361 -73
- spacr/io.py +42 -46
- spacr/measure.py +198 -151
- 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 +11 -83
- spacr/utils.py +13 -33
- {spacr-0.2.4.dist-info → spacr-0.2.5.dist-info}/METADATA +5 -1
- spacr-0.2.5.dist-info/RECORD +100 -0
- spacr-0.2.4.dist-info/RECORD +0 -58
- {spacr-0.2.4.dist-info → spacr-0.2.5.dist-info}/LICENSE +0 -0
- {spacr-0.2.4.dist-info → spacr-0.2.5.dist-info}/WHEEL +0 -0
- {spacr-0.2.4.dist-info → spacr-0.2.5.dist-info}/entry_points.txt +0 -0
- {spacr-0.2.4.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
|
|
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,33 +87,12 @@ from scipy.stats import f_oneway, kruskal
|
|
87
87
|
from sklearn.cluster import KMeans
|
88
88
|
from scipy import stats
|
89
89
|
|
90
|
-
def print_progress_v1(files_processed, files_to_process, n_jobs, time_ls=None, batch_size=None, operation_type=""):
|
91
|
-
if isinstance(files_processed, list):
|
92
|
-
files_processed = len(files_processed)
|
93
|
-
if isinstance(files_to_process, list):
|
94
|
-
files_to_process = len(files_to_process)
|
95
|
-
if isinstance(batch_size, list):
|
96
|
-
batch_size = len(batch_size)
|
97
|
-
|
98
|
-
if time_ls is not None:
|
99
|
-
average_time = np.mean(time_ls) if len(time_ls) > 0 else 0
|
100
|
-
time_left = (((files_to_process-files_processed)*average_time)/n_jobs)/60
|
101
|
-
if batch_size is None:
|
102
|
-
print(f'Time/image: {average_time:.3f}sec')
|
103
|
-
print(f'Time_left: {time_left:.3f} min.')
|
104
|
-
else:
|
105
|
-
average_time_img = average_time/batch_size
|
106
|
-
print(f'Time/batch:{average_time:.3f}sec')
|
107
|
-
print(f'Time/image {average_time_img:.3f}')
|
108
|
-
print(f'Time_left: {time_left:.3f} min.')
|
109
|
-
|
110
|
-
print(f'Progress: {files_processed}/{files_to_process}, operation_type: {operation_type}')
|
111
90
|
|
112
91
|
def print_progress(files_processed, files_to_process, n_jobs, time_ls=None, batch_size=None, operation_type=""):
|
113
92
|
if isinstance(files_processed, list):
|
114
|
-
files_processed = len(files_processed)
|
93
|
+
files_processed = len(set(files_processed))
|
115
94
|
if isinstance(files_to_process, list):
|
116
|
-
files_to_process = len(files_to_process)
|
95
|
+
files_to_process = len(set(files_to_process))
|
117
96
|
if isinstance(batch_size, list):
|
118
97
|
batch_size = len(batch_size)
|
119
98
|
|
@@ -2989,11 +2968,13 @@ def _choose_model(model_name, device, object_type='cell', restore_type=None, obj
|
|
2989
2968
|
if restore_type == None:
|
2990
2969
|
if model_name in ['cyto', 'cyto2', 'cyto3', 'nuclei']:
|
2991
2970
|
model = cp_models.Cellpose(gpu=torch.cuda.is_available(), model_type=model_name, device=device)
|
2992
|
-
|
2971
|
+
return model
|
2993
2972
|
else:
|
2994
2973
|
if object_type == 'nucleus':
|
2995
2974
|
restore = f'{type}_nuclei'
|
2996
2975
|
model = denoise.CellposeDenoiseModel(gpu=torch.cuda.is_available(), model_type="nuclei",restore_type=restore, chan2_restore=False, device=device)
|
2976
|
+
return model
|
2977
|
+
|
2997
2978
|
else:
|
2998
2979
|
restore = f'{type}_cyto3'
|
2999
2980
|
if model_name =='cyto2':
|
@@ -3001,8 +2982,7 @@ def _choose_model(model_name, device, object_type='cell', restore_type=None, obj
|
|
3001
2982
|
if model_name =='cyto':
|
3002
2983
|
chan2_restore = False
|
3003
2984
|
model = denoise.CellposeDenoiseModel(gpu=torch.cuda.is_available(), model_type="cyto3",restore_type=restore, chan2_restore=chan2_restore, device=device)
|
3004
|
-
|
3005
|
-
return model
|
2985
|
+
return model
|
3006
2986
|
|
3007
2987
|
class SelectChannels:
|
3008
2988
|
def __init__(self, channels):
|
@@ -3648,22 +3628,22 @@ def delete_folder(folder_path):
|
|
3648
3628
|
def measure_test_mode(settings):
|
3649
3629
|
|
3650
3630
|
if settings['test_mode']:
|
3651
|
-
if not os.path.basename(settings['
|
3652
|
-
all_files = os.listdir(settings['
|
3631
|
+
if not os.path.basename(settings['src']) == 'test':
|
3632
|
+
all_files = os.listdir(settings['src'])
|
3653
3633
|
random_files = random.sample(all_files, settings['test_nr'])
|
3654
3634
|
|
3655
|
-
src = os.path.join(os.path.dirname(settings['
|
3635
|
+
src = os.path.join(os.path.dirname(settings['src']),'test', 'merged')
|
3656
3636
|
if os.path.exists(src):
|
3657
3637
|
delete_folder(src)
|
3658
3638
|
os.makedirs(src, exist_ok=True)
|
3659
3639
|
|
3660
3640
|
for file in random_files:
|
3661
|
-
shutil.copy(os.path.join(settings['
|
3641
|
+
shutil.copy(os.path.join(settings['src'], file), os.path.join(src,file))
|
3662
3642
|
|
3663
|
-
settings['
|
3643
|
+
settings['src'] = src
|
3664
3644
|
print(f'Changed source folder to {src} for test mode')
|
3665
3645
|
else:
|
3666
|
-
print(f'Test mode enabled, using source folder {settings["
|
3646
|
+
print(f'Test mode enabled, using source folder {settings["src"]}')
|
3667
3647
|
|
3668
3648
|
return settings
|
3669
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.4.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=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=iAH6de2dW0nKVtVeBjdWOhSW_KoHlVDVOoOsHb6vGC0,148884
|
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=4II8TscaDHDvRXc4D-azQyAeVGNkqyN6_HaNhkjij4s,35546
|
16
|
-
spacr/gui_elements.py,sha256=Qo22e4t3Mut_hsHqBGlpyS4ZRThLhu0l_DurBXBgzW8,96354
|
17
|
-
spacr/gui_utils.py,sha256=ySSDDYmY80h_Wk2Nb1oxbugRU2TWt6N7BwusUl_-wRo,14970
|
18
|
-
spacr/io.py,sha256=Dehuqn_oGo0gcyezQIw9rUUvO7oOHDWuMkPDSCgyrp8,115521
|
19
|
-
spacr/logger.py,sha256=7Zqr3TuuOQLWT32gYr2q1qvv7x0a2JhLANmZcnBXAW8,670
|
20
|
-
spacr/measure.py,sha256=W5_yuLnsFSafuZNcKzVsCTJSTfpbNgrGTuxG1OVb0iU,55283
|
21
|
-
spacr/plot.py,sha256=DYJEoK1kz2ih6ZGvKiA3xTqeIeKQNhuQKwgrscopFxA,69101
|
22
|
-
spacr/sequencing.py,sha256=fHZRnoMSxmhMdadkei3lUeBdckqFyptWdQyWsDW3aaU,83304
|
23
|
-
spacr/settings.py,sha256=deX0pNwTqyHojpCTiF060RSK5oPeSEcS_s6UlVc0x3Q,65442
|
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=r23Cd94HT3q1kMIbyEmyvJVnnDOY16plvUXVwxuX1PE,189256
|
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.4.dist-info/LICENSE,sha256=SR-2MeGc6SCM1UORJYyarSWY_A-JaOMFDj7ReSs9tRM,1083
|
54
|
-
spacr-0.2.4.dist-info/METADATA,sha256=CK0hbhbcv2TXBF8zRgO8fQRLnWDiEWPn5xmkjtfMSIQ,5049
|
55
|
-
spacr-0.2.4.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
56
|
-
spacr-0.2.4.dist-info/entry_points.txt,sha256=BMC0ql9aNNpv8lUZ8sgDLQMsqaVnX5L535gEhKUP5ho,296
|
57
|
-
spacr-0.2.4.dist-info/top_level.txt,sha256=GJPU8FgwRXGzKeut6JopsSRY2R8T3i9lDgya42tLInY,6
|
58
|
-
spacr-0.2.4.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|