spacr 0.2.56__py3-none-any.whl → 0.2.65__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 +1 -3
- spacr/core.py +135 -472
- spacr/deep_spacr.py +189 -270
- spacr/gui_core.py +294 -86
- spacr/gui_elements.py +335 -82
- spacr/gui_utils.py +100 -49
- spacr/io.py +104 -41
- spacr/plot.py +51 -5
- spacr/sequencing.py +4 -8
- spacr/settings.py +27 -31
- spacr/utils.py +15 -14
- {spacr-0.2.56.dist-info → spacr-0.2.65.dist-info}/METADATA +1 -1
- {spacr-0.2.56.dist-info → spacr-0.2.65.dist-info}/RECORD +17 -17
- {spacr-0.2.56.dist-info → spacr-0.2.65.dist-info}/LICENSE +0 -0
- {spacr-0.2.56.dist-info → spacr-0.2.65.dist-info}/WHEEL +0 -0
- {spacr-0.2.56.dist-info → spacr-0.2.65.dist-info}/entry_points.txt +0 -0
- {spacr-0.2.56.dist-info → spacr-0.2.65.dist-info}/top_level.txt +0 -0
spacr/settings.py
CHANGED
@@ -3,8 +3,8 @@ import os, ast
|
|
3
3
|
def set_default_plot_merge_settings():
|
4
4
|
settings = {}
|
5
5
|
settings.setdefault('include_noninfected', True)
|
6
|
-
settings.setdefault('include_multiinfected',
|
7
|
-
settings.setdefault('include_multinucleated',
|
6
|
+
settings.setdefault('include_multiinfected', 10)
|
7
|
+
settings.setdefault('include_multinucleated', 1)
|
8
8
|
settings.setdefault('remove_background', False)
|
9
9
|
settings.setdefault('filter_min_max', None)
|
10
10
|
settings.setdefault('channel_dims', [0,1,2,3])
|
@@ -20,7 +20,7 @@ def set_default_plot_merge_settings():
|
|
20
20
|
settings.setdefault('normalize', True)
|
21
21
|
settings.setdefault('print_object_number', True)
|
22
22
|
settings.setdefault('nr', 1)
|
23
|
-
settings.setdefault('figuresize',
|
23
|
+
settings.setdefault('figuresize', 10)
|
24
24
|
settings.setdefault('cmap', 'inferno')
|
25
25
|
settings.setdefault('verbose', True)
|
26
26
|
return settings
|
@@ -70,7 +70,7 @@ def set_default_settings_preprocess_generate_masks(src, settings={}):
|
|
70
70
|
|
71
71
|
# Plot settings
|
72
72
|
settings.setdefault('plot', False)
|
73
|
-
settings.setdefault('figuresize',
|
73
|
+
settings.setdefault('figuresize', 10)
|
74
74
|
settings.setdefault('cmap', 'inferno')
|
75
75
|
settings.setdefault('normalize', True)
|
76
76
|
settings.setdefault('normalize_plots', True)
|
@@ -116,7 +116,7 @@ def set_default_settings_preprocess_img_data(settings):
|
|
116
116
|
skip_mode = settings.setdefault('skip_mode', False)
|
117
117
|
|
118
118
|
cmap = settings.setdefault('cmap', 'inferno')
|
119
|
-
figuresize = settings.setdefault('figuresize',
|
119
|
+
figuresize = settings.setdefault('figuresize', 10)
|
120
120
|
normalize = settings.setdefault('normalize', True)
|
121
121
|
save_dtype = settings.setdefault('save_dtype', 'uint16')
|
122
122
|
|
@@ -189,7 +189,7 @@ def set_default_umap_image_settings(settings={}):
|
|
189
189
|
settings.setdefault('remove_cluster_noise', True)
|
190
190
|
settings.setdefault('remove_highly_correlated', True)
|
191
191
|
settings.setdefault('log_data', False)
|
192
|
-
settings.setdefault('figuresize',
|
192
|
+
settings.setdefault('figuresize', 10)
|
193
193
|
settings.setdefault('black_background', True)
|
194
194
|
settings.setdefault('remove_image_canvas', False)
|
195
195
|
settings.setdefault('plot_outlines', True)
|
@@ -314,7 +314,6 @@ def set_default_train_test_model(settings):
|
|
314
314
|
settings.setdefault('batch_size',64)
|
315
315
|
settings.setdefault('epochs',100)
|
316
316
|
settings.setdefault('val_split',0.1)
|
317
|
-
settings.setdefault('train_mode','erm')
|
318
317
|
settings.setdefault('learning_rate',0.001)
|
319
318
|
settings.setdefault('weight_decay',0.00001)
|
320
319
|
settings.setdefault('dropout_rate',0.1)
|
@@ -324,7 +323,7 @@ def set_default_train_test_model(settings):
|
|
324
323
|
settings.setdefault('gradient_accumulation',True)
|
325
324
|
settings.setdefault('gradient_accumulation_steps',4)
|
326
325
|
settings.setdefault('intermedeate_save',True)
|
327
|
-
settings.setdefault('pin_memory',
|
326
|
+
settings.setdefault('pin_memory',False)
|
328
327
|
settings.setdefault('n_jobs',cores)
|
329
328
|
settings.setdefault('train_channels',['r','g','b'])
|
330
329
|
settings.setdefault('augment',False)
|
@@ -334,7 +333,7 @@ def set_default_train_test_model(settings):
|
|
334
333
|
def set_generate_training_dataset_defaults(settings):
|
335
334
|
|
336
335
|
settings.setdefault('src','path')
|
337
|
-
settings.setdefault('dataset_mode','
|
336
|
+
settings.setdefault('dataset_mode','metadata')
|
338
337
|
settings.setdefault('annotation_column','test')
|
339
338
|
settings.setdefault('annotated_classes',[1,2])
|
340
339
|
settings.setdefault('classes',['nc','pc'])
|
@@ -351,10 +350,10 @@ def set_generate_training_dataset_defaults(settings):
|
|
351
350
|
|
352
351
|
def deep_spacr_defaults(settings):
|
353
352
|
|
354
|
-
cores = os.cpu_count()-
|
353
|
+
cores = os.cpu_count()-4
|
355
354
|
|
356
355
|
settings.setdefault('src','path')
|
357
|
-
settings.setdefault('dataset_mode','
|
356
|
+
settings.setdefault('dataset_mode','metadata')
|
358
357
|
settings.setdefault('annotation_column','test')
|
359
358
|
settings.setdefault('annotated_classes',[1,2])
|
360
359
|
settings.setdefault('classes',['nc','pc'])
|
@@ -379,7 +378,6 @@ def deep_spacr_defaults(settings):
|
|
379
378
|
settings.setdefault('batch_size',64)
|
380
379
|
settings.setdefault('epochs',100)
|
381
380
|
settings.setdefault('val_split',0.1)
|
382
|
-
settings.setdefault('train_mode','erm')
|
383
381
|
settings.setdefault('learning_rate',0.001)
|
384
382
|
settings.setdefault('weight_decay',0.00001)
|
385
383
|
settings.setdefault('dropout_rate',0.1)
|
@@ -389,12 +387,13 @@ def deep_spacr_defaults(settings):
|
|
389
387
|
settings.setdefault('gradient_accumulation',True)
|
390
388
|
settings.setdefault('gradient_accumulation_steps',4)
|
391
389
|
settings.setdefault('intermedeate_save',True)
|
392
|
-
settings.setdefault('pin_memory',
|
390
|
+
settings.setdefault('pin_memory',False)
|
393
391
|
settings.setdefault('n_jobs',cores)
|
394
392
|
settings.setdefault('train_channels',['r','g','b'])
|
395
393
|
settings.setdefault('augment',False)
|
396
|
-
settings.setdefault('
|
397
|
-
settings.setdefault('
|
394
|
+
settings.setdefault('preload_batches', 3)
|
395
|
+
settings.setdefault('verbose',True)
|
396
|
+
settings.setdefault('apply_model_to_dataset',True)
|
398
397
|
settings.setdefault('file_metadata',None)
|
399
398
|
settings.setdefault('sample',None)
|
400
399
|
settings.setdefault('experiment','exp.')
|
@@ -404,10 +403,10 @@ def deep_spacr_defaults(settings):
|
|
404
403
|
settings.setdefault('file_type','cell_png')
|
405
404
|
settings.setdefault('generate_training_dataset', True)
|
406
405
|
settings.setdefault('train_DL_model', True)
|
407
|
-
|
408
406
|
return settings
|
409
407
|
|
410
408
|
def get_analyze_recruitment_default_settings(settings):
|
409
|
+
settings.setdefault('src','path')
|
411
410
|
settings.setdefault('target','protein')
|
412
411
|
settings.setdefault('cell_types',['HeLa'])
|
413
412
|
settings.setdefault('cell_plate_metadata',None)
|
@@ -427,12 +426,10 @@ def get_analyze_recruitment_default_settings(settings):
|
|
427
426
|
settings.setdefault('plot',True)
|
428
427
|
settings.setdefault('plot_nr',10)
|
429
428
|
settings.setdefault('plot_control',True)
|
430
|
-
settings.setdefault('figuresize',
|
431
|
-
settings.setdefault('remove_background',False)
|
432
|
-
settings.setdefault('backgrounds',100)
|
429
|
+
settings.setdefault('figuresize',10)
|
433
430
|
settings.setdefault('include_noninfected',True)
|
434
|
-
settings.setdefault('include_multiinfected',
|
435
|
-
settings.setdefault('include_multinucleated',
|
431
|
+
settings.setdefault('include_multiinfected',10)
|
432
|
+
settings.setdefault('include_multinucleated',1)
|
436
433
|
settings.setdefault('cells_per_well',0)
|
437
434
|
settings.setdefault('pathogen_size_range',[0,100000])
|
438
435
|
settings.setdefault('nucleus_size_range',[0,100000])
|
@@ -631,8 +628,8 @@ expected_types = {
|
|
631
628
|
"nr_imgs": int,
|
632
629
|
"um_per_pixel": (int, float),
|
633
630
|
"include_noninfected": bool,
|
634
|
-
"include_multiinfected":
|
635
|
-
"include_multinucleated":
|
631
|
+
"include_multiinfected": int,
|
632
|
+
"include_multinucleated": int,
|
636
633
|
"filter_min_max": (list, type(None)),
|
637
634
|
"channel_dims": list,
|
638
635
|
"backgrounds": list,
|
@@ -726,7 +723,6 @@ expected_types = {
|
|
726
723
|
"image_size": int,
|
727
724
|
"epochs": int,
|
728
725
|
"val_split": float,
|
729
|
-
"train_mode": str,
|
730
726
|
"learning_rate": float,
|
731
727
|
"weight_decay": float,
|
732
728
|
"dropout_rate": float,
|
@@ -741,7 +737,7 @@ expected_types = {
|
|
741
737
|
"augment": bool,
|
742
738
|
"target": str,
|
743
739
|
"cell_types": list,
|
744
|
-
"cell_plate_metadata": (list,
|
740
|
+
"cell_plate_metadata": (list, list),
|
745
741
|
"pathogen_types": list,
|
746
742
|
"pathogen_plate_metadata": (list, list), # This can be a list of lists
|
747
743
|
"treatment_plate_metadata": (list, list), # This can be a list of lists
|
@@ -832,6 +828,7 @@ expected_types = {
|
|
832
828
|
"png_type":str,
|
833
829
|
"custom_model_path":str,
|
834
830
|
"generate_training_dataset":bool,
|
831
|
+
'preload_batches':int,
|
835
832
|
"train_DL_model":bool,
|
836
833
|
}
|
837
834
|
|
@@ -850,12 +847,12 @@ categories = {"General": ["src", "metadata_type", "custom_regex", "experiment",
|
|
850
847
|
"Annotation": ["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"],
|
851
848
|
"Machine Learning":[],
|
852
849
|
"Deep Learning": ["png_type","score_threshold","file_type", "train_channels", "epochs", "loss_type", "optimizer_type","image_size","val_split","learning_rate","weight_decay","dropout_rate", "init_weights", "train", "classes", "augment"],
|
853
|
-
"Generate Dataset":["file_metadata","class_metadata", "annotation_column","annotated_classes", "dataset_mode", "metadata_type_by","custom_measurement", "sample", "size"],
|
850
|
+
"Generate Dataset":["preload_batches", "file_metadata","class_metadata", "annotation_column","annotated_classes", "dataset_mode", "metadata_type_by","custom_measurement", "sample", "size"],
|
854
851
|
"Cellpose":["from_scratch", "n_epochs", "width_height", "model_name", "custom_model", "resample", "rescale", "CP_prob", "flow_threshold", "percentiles", "circular", "invert", "diameter", "grayscale", "background", "Signal_to_noise", "resize", "target_height", "target_width"],
|
855
852
|
"Regression":["class_1_threshold", "plate", "other", "fraction_threshold", "alpha", "remove_row_column_effect", "regression_type", "min_cell_count", "agg_type", "transform", "dependent_variable", "gene_weights_csv"],
|
856
853
|
"Miscellaneous": ["all_to_mip", "pick_slice", "skip_mode", "upscale", "upscale_factor"],
|
857
854
|
"Test": ["test_mode", "test_images", "random_test", "test_nr", "test", "test_split"],
|
858
|
-
"Advanced": ["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_ml", "model_type","minimum_cell_count","n_estimators","preprocess", "remove_background", "normalize", "lower_percentile", "merge_pathogens", "batch_size", "filter", "save", "masks", "verbose", "randomize", "n_jobs", "
|
855
|
+
"Advanced": ["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_ml", "model_type","minimum_cell_count","n_estimators","preprocess", "remove_background", "normalize", "lower_percentile", "merge_pathogens", "batch_size", "filter", "save", "masks", "verbose", "randomize", "n_jobs", "amsgrad","use_checkpoint","gradient_accumulation","gradient_accumulation_steps","intermedeate_save","pin_memory"]
|
859
856
|
}
|
860
857
|
|
861
858
|
category_keys = list(categories.keys())
|
@@ -879,7 +876,7 @@ def check_settings(vars_dict, expected_types, q=None):
|
|
879
876
|
expected_type = expected_types.get(key, str)
|
880
877
|
|
881
878
|
try:
|
882
|
-
if key in ["timelapse_frame_limits", "png_size", "pathogen_loc", "treatment_loc", "pathogen_plate_metadata", "treatment_plate_metadata", "barcode_coordinates", "class_metadata"]:
|
879
|
+
if key in ["cell_plate_metadata", "timelapse_frame_limits", "png_size", "pathogen_loc", "treatment_loc", "pathogen_plate_metadata", "treatment_plate_metadata", "barcode_coordinates", "class_metadata"]:
|
883
880
|
parsed_value = ast.literal_eval(value) if value else None
|
884
881
|
if isinstance(parsed_value, list):
|
885
882
|
if all(isinstance(i, list) for i in parsed_value) or all(not isinstance(i, list) for i in parsed_value):
|
@@ -1014,8 +1011,8 @@ def generate_fields(variables, scrollable_frame):
|
|
1014
1011
|
"image_nr": "(int) - Number of images to process.",
|
1015
1012
|
"image_size": "(int) - Size of the images for training.",
|
1016
1013
|
"img_zoom": "(float) - Zoom factor for the images in plots.",
|
1017
|
-
"include_multinucleated": "(
|
1018
|
-
"include_multiinfected": "(
|
1014
|
+
"include_multinucleated": "(int) - Whether to include multinucleated cells in the analysis.",
|
1015
|
+
"include_multiinfected": "(int) - Whether to include multi-infected cells in the analysis.",
|
1019
1016
|
"include_noninfected": "(bool) - Whether to include non-infected cells in the analysis.",
|
1020
1017
|
"include_uninfected": "(bool) - Whether to include uninfected cells in the analysis.",
|
1021
1018
|
"init_weights": "(bool) - Whether to initialize weights for the model.",
|
@@ -1139,7 +1136,6 @@ def generate_fields(variables, scrollable_frame):
|
|
1139
1136
|
"treatments": "(list) - The treatments to include in the analysis.",
|
1140
1137
|
"top_features": "(int) - Top features to include in the analysis.",
|
1141
1138
|
"train": "(bool) - Whether to train the model.",
|
1142
|
-
"train_mode": "(str) - Mode to use for training the model.",
|
1143
1139
|
"transform": "(dict) - Transformation to apply to the data.",
|
1144
1140
|
"upscale": "(bool) - Whether to upscale the images.",
|
1145
1141
|
"upscale_factor": "(float) - Factor by which to upscale the images.",
|
spacr/utils.py
CHANGED
@@ -87,8 +87,14 @@ from scipy.stats import f_oneway, kruskal
|
|
87
87
|
from sklearn.cluster import KMeans
|
88
88
|
from scipy import stats
|
89
89
|
|
90
|
+
def save_settings(settings, name='settings'):
|
91
|
+
|
92
|
+
settings_df = pd.DataFrame(list(settings.items()), columns=['Key', 'Value'])
|
93
|
+
settings_csv = os.path.join(settings['src'],'settings',f'{name}.csv')
|
94
|
+
os.makedirs(os.path.join(settings['src'],'settings'), exist_ok=True)
|
95
|
+
settings_df.to_csv(settings_csv, index=False)
|
90
96
|
|
91
|
-
def print_progress(files_processed, files_to_process, n_jobs, time_ls=None, batch_size=None, operation_type=""
|
97
|
+
def print_progress(files_processed, files_to_process, n_jobs, time_ls=None, batch_size=None, operation_type=""):
|
92
98
|
if isinstance(files_processed, list):
|
93
99
|
files_processed = len(set(files_processed))
|
94
100
|
if isinstance(files_to_process, list):
|
@@ -116,11 +122,8 @@ def print_progress(files_processed, files_to_process, n_jobs, time_ls=None, batc
|
|
116
122
|
else:
|
117
123
|
average_time_img = average_time / batch_size
|
118
124
|
time_info = f'Time/batch: {average_time:.3f}sec, Time/image: {average_time_img:.3f}sec, Time_left: {time_left:.3f} min.'
|
119
|
-
|
120
|
-
if metricks is None:
|
121
|
-
print(f'Progress: {files_processed}/{files_to_process}, operation_type: {operation_type} {time_info}')
|
122
125
|
else:
|
123
|
-
print(f'Progress: {files_processed}/{files_to_process},
|
126
|
+
print(f'Progress: {files_processed}/{files_to_process}, operation_type: {operation_type} {time_info}')
|
124
127
|
|
125
128
|
def reset_mp():
|
126
129
|
current_method = get_start_method()
|
@@ -1650,7 +1653,7 @@ def split_my_dataset(dataset, split_ratio=0.1):
|
|
1650
1653
|
val_dataset = Subset(dataset, val_indices)
|
1651
1654
|
return train_dataset, val_dataset
|
1652
1655
|
|
1653
|
-
def classification_metrics(all_labels, prediction_pos_probs,
|
1656
|
+
def classification_metrics(all_labels, prediction_pos_probs, loss, epoch):
|
1654
1657
|
"""
|
1655
1658
|
Calculate classification metrics for binary classification.
|
1656
1659
|
|
@@ -1699,11 +1702,9 @@ def classification_metrics(all_labels, prediction_pos_probs, loader_name, loss,
|
|
1699
1702
|
else:
|
1700
1703
|
acc_nc = np.nan
|
1701
1704
|
data_dict = {'accuracy': acc_all, 'neg_accuracy': acc_nc, 'pos_accuracy': acc_pc, 'loss':loss.item(),'prauc':pr_auc, 'optimal_threshold':optimal_threshold}
|
1702
|
-
data_df = pd.DataFrame(data_dict, index=[str(epoch)
|
1705
|
+
data_df = pd.DataFrame(data_dict, index=[str(epoch)])
|
1703
1706
|
return data_df
|
1704
1707
|
|
1705
|
-
|
1706
|
-
|
1707
1708
|
def compute_irm_penalty(losses, dummy_w, device):
|
1708
1709
|
"""
|
1709
1710
|
Computes the Invariant Risk Minimization (IRM) penalty.
|
@@ -1741,7 +1742,7 @@ def compute_irm_penalty(losses, dummy_w, device):
|
|
1741
1742
|
# summary(base_model, (channels, height, width))
|
1742
1743
|
# return
|
1743
1744
|
|
1744
|
-
def choose_model(model_type, device, init_weights=True, dropout_rate=0, use_checkpoint=False, channels=3, height=224, width=224, chan_dict=None, num_classes=2):
|
1745
|
+
def choose_model(model_type, device, init_weights=True, dropout_rate=0, use_checkpoint=False, channels=3, height=224, width=224, chan_dict=None, num_classes=2, verbose=False):
|
1745
1746
|
"""
|
1746
1747
|
Choose a model for classification.
|
1747
1748
|
|
@@ -1773,7 +1774,7 @@ def choose_model(model_type, device, init_weights=True, dropout_rate=0, use_chec
|
|
1773
1774
|
print(f'Invalid model_type: {model_type}. Compatible model_types: {model_types}')
|
1774
1775
|
return
|
1775
1776
|
|
1776
|
-
print(f'
|
1777
|
+
print(f'Model parameters: Architecture: {model_type} init_weights: {init_weights} dropout_rate: {dropout_rate} use_checkpoint: {use_checkpoint}', end='\r', flush=True)
|
1777
1778
|
|
1778
1779
|
if model_type == 'custom':
|
1779
1780
|
|
@@ -1784,8 +1785,8 @@ def choose_model(model_type, device, init_weights=True, dropout_rate=0, use_chec
|
|
1784
1785
|
else:
|
1785
1786
|
print(f'Compatible model_types: {model_types}')
|
1786
1787
|
raise ValueError(f"Invalid model_type: {model_type}")
|
1787
|
-
|
1788
|
-
|
1788
|
+
if verbose:
|
1789
|
+
print(base_model)
|
1789
1790
|
|
1790
1791
|
return base_model
|
1791
1792
|
|
@@ -3450,7 +3451,7 @@ def setup_plot(figuresize, black_background):
|
|
3450
3451
|
fig, ax = plt.subplots(1, 1, figsize=(figuresize, figuresize))
|
3451
3452
|
return fig, ax
|
3452
3453
|
|
3453
|
-
def plot_clusters(ax, embedding, labels, colors, cluster_centers, plot_outlines, plot_points, smooth_lines, figuresize=
|
3454
|
+
def plot_clusters(ax, embedding, labels, colors, cluster_centers, plot_outlines, plot_points, smooth_lines, figuresize=10, dot_size=50, verbose=False):
|
3454
3455
|
unique_labels = np.unique(labels)
|
3455
3456
|
for cluster_label, color, center in zip(unique_labels, colors, cluster_centers):
|
3456
3457
|
cluster_data = embedding[labels == cluster_label]
|
@@ -1,4 +1,4 @@
|
|
1
|
-
spacr/__init__.py,sha256=
|
1
|
+
spacr/__init__.py,sha256=2MqbX2rPedvIqUyAvI5vJ_YGiDeFDF3VU7xSj7TgF5w,1435
|
2
2
|
spacr/__main__.py,sha256=bkAJJD2kjIqOP-u1kLvct9jQQCeUXzlEjdgitwi1Lm8,75
|
3
3
|
spacr/app_annotate.py,sha256=nEIL7Fle9CDKGo3sucG_03DgjUQt5W1M1IHBIpVBr08,2171
|
4
4
|
spacr/app_classify.py,sha256=urTP_wlZ58hSyM5a19slYlBxN0PdC-9-ga0hvq8CGWc,165
|
@@ -8,23 +8,23 @@ 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
10
|
spacr/chris.py,sha256=YlBjSgeZaY8HPy6jkrT_ISAnCMAKVfvCxF0I9eAZLFM,2418
|
11
|
-
spacr/core.py,sha256=
|
12
|
-
spacr/deep_spacr.py,sha256=
|
11
|
+
spacr/core.py,sha256=IDme9j7eeC_49KGaNk_xPOKtpxdcXKMhYtoo3xhjQMM,146502
|
12
|
+
spacr/deep_spacr.py,sha256=a2YewgkQvLV-95NYJAutnojvJmX4S8z_wv6Tb-XIgUI,34484
|
13
13
|
spacr/graph_learning.py,sha256=1tR-ZxvXE3dBz1Saw7BeVFcrsUFu9OlUZeZVifih9eo,13070
|
14
14
|
spacr/gui.py,sha256=dSEQhzZgIOT7SOonbIp07-zXcLaEt6M7sRiIREpDv64,7226
|
15
|
-
spacr/gui_core.py,sha256=
|
16
|
-
spacr/gui_elements.py,sha256=
|
17
|
-
spacr/gui_utils.py,sha256=
|
18
|
-
spacr/io.py,sha256=
|
15
|
+
spacr/gui_core.py,sha256=HXeMfvthY_G371o84Dcr59VLT6AOKQF8r_V9kVzg7h0,38745
|
16
|
+
spacr/gui_elements.py,sha256=7YLyIeK5JFqzevzEruvfQOrfDGOS9ZgD8ZE-dxywp3g,122706
|
17
|
+
spacr/gui_utils.py,sha256=1pZ9QAh6BCVb6BSXciU0V9qFWOSsTtCiC72iGXUdV0c,29941
|
18
|
+
spacr/io.py,sha256=ZtVNbEom8X8p_KfsuWw0glGwLg6S0CfwwevDPGdfiSc,117342
|
19
19
|
spacr/logger.py,sha256=7Zqr3TuuOQLWT32gYr2q1qvv7x0a2JhLANmZcnBXAW8,670
|
20
20
|
spacr/measure.py,sha256=4rmzH_a5Y0s1qALVi6YRut3xpnkJXs5vzeTPCEf3QS8,54871
|
21
|
-
spacr/plot.py,sha256=
|
22
|
-
spacr/sequencing.py,sha256=
|
23
|
-
spacr/settings.py,sha256=
|
21
|
+
spacr/plot.py,sha256=xVnbML7WpAEzdJdrLeYRk6aPinZSiV2dLAeu4mh7n0k,73963
|
22
|
+
spacr/sequencing.py,sha256=y7EB8226B0b0gnGXt6jqBaFVATrM1Y89v3rtHb8XR_k,75746
|
23
|
+
spacr/settings.py,sha256=tDvTBWANeuI6YC_fH5vK2HOOuRgQXIkzyNKDmt1vL4c,67745
|
24
24
|
spacr/sim.py,sha256=FveaVgBi3eypO2oVB5Dx-v0CC1Ny7UPfXkJiiRRodAk,71212
|
25
25
|
spacr/sim_app.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
26
26
|
spacr/timelapse.py,sha256=KMYCgHzf9LTZe-lWl5mvH2EjbKRE6OhpwdY13wEumGc,39504
|
27
|
-
spacr/utils.py,sha256=
|
27
|
+
spacr/utils.py,sha256=5Njrrdhd37Tq09W1cm32941AHmlKrAZiODJGUfOwdCQ,188733
|
28
28
|
spacr/version.py,sha256=axH5tnGwtgSnJHb5IDhiu4Zjk5GhLyAEDRe-rnaoFOA,409
|
29
29
|
spacr/resources/font/open_sans/OFL.txt,sha256=bGMoWBRrE2RcdzDiuYiB8A9OVFlJ0sA2imWwce2DAdo,4484
|
30
30
|
"spacr/resources/font/open_sans/OpenSans-Italic-VariableFont_wdth,wght.ttf",sha256=QSoWv9h46CRX_fdlqFM3O2d3-PF3R1srnb4zUezcLm0,580280
|
@@ -92,9 +92,9 @@ spacr/resources/icons/umap.png,sha256=dOLF3DeLYy9k0nkUybiZMe1wzHQwLJFRmgccppw-8b
|
|
92
92
|
spacr/resources/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model,sha256=z8BbHWZPRnE9D_BHO0fBREE85c1vkltDs-incs2ytXQ,26566572
|
93
93
|
spacr/resources/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model_settings.csv,sha256=fBAGuL_B8ERVdVizO3BHozTDSbZUh1yFzsYK3wkQN68,420
|
94
94
|
spacr/resources/models/cp/toxo_pv_lumen.CP_model,sha256=2y_CindYhmTvVwBH39SNILF3rI3x9SsRn6qrMxHy3l0,26562451
|
95
|
-
spacr-0.2.
|
96
|
-
spacr-0.2.
|
97
|
-
spacr-0.2.
|
98
|
-
spacr-0.2.
|
99
|
-
spacr-0.2.
|
100
|
-
spacr-0.2.
|
95
|
+
spacr-0.2.65.dist-info/LICENSE,sha256=SR-2MeGc6SCM1UORJYyarSWY_A-JaOMFDj7ReSs9tRM,1083
|
96
|
+
spacr-0.2.65.dist-info/METADATA,sha256=M3kT-VwVosUDjXQ9wd6Pux639rG28yhsjVF9eOdx4OI,5259
|
97
|
+
spacr-0.2.65.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
98
|
+
spacr-0.2.65.dist-info/entry_points.txt,sha256=BMC0ql9aNNpv8lUZ8sgDLQMsqaVnX5L535gEhKUP5ho,296
|
99
|
+
spacr-0.2.65.dist-info/top_level.txt,sha256=GJPU8FgwRXGzKeut6JopsSRY2R8T3i9lDgya42tLInY,6
|
100
|
+
spacr-0.2.65.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|