spacr 0.2.56__py3-none-any.whl → 0.2.61__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/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', True)
7
- settings.setdefault('include_multinucleated', True)
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', 50)
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', 50)
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', 50)
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', 60)
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',True)
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','annotation')
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()-2
353
+ cores = os.cpu_count()-4
355
354
 
356
355
  settings.setdefault('src','path')
357
- settings.setdefault('dataset_mode','annotation')
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',True)
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('verbose',False)
397
- settings.setdefault('apply_model_to_dataset',False)
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',20)
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',True)
435
- settings.setdefault('include_multinucleated',True)
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": bool,
635
- "include_multinucleated": bool,
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, type(None)),
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", "train_mode","amsgrad","use_checkpoint","gradient_accumulation","gradient_accumulation_steps","intermedeate_save","pin_memory"]
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": "(bool) - Whether to include multinucleated cells in the analysis.",
1018
- "include_multiinfected": "(bool) - Whether to include multi-infected cells in the analysis.",
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="", metricks=None):
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}, {metricks}, operation_type: {operation_type} {time_info}')
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, loader_name, loss, epoch):
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)+'_'+loader_name])
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'\rModel parameters: Architecture: {model_type} init_weights: {init_weights} dropout_rate: {dropout_rate} use_checkpoint: {use_checkpoint}', end='\r', flush=True)
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
- print(base_model)
1788
+ if verbose:
1789
+ print(base_model)
1789
1790
 
1790
1791
  return base_model
1791
1792
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: spacr
3
- Version: 0.2.56
3
+ Version: 0.2.61
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
@@ -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=3r32IJlvT6ReN7cgAU2frFkdACQyN48mgUETNzrTrwE,160329
12
- spacr/deep_spacr.py,sha256=Yge4Tu6k7jjIQhuCAOVZkDS8dQR1cDvYtySfahAp6Lg,40153
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=p2Rx97U92KDM4DW1hfFuYRh_4mQ1aSN_0ieOH0vB2g8,30933
16
- spacr/gui_elements.py,sha256=grC-_jlyJir3W-GLbnN5zTfq9D7ef-KCt_WnlvKXmpY,111819
17
- spacr/gui_utils.py,sha256=gWDO-BESGsNR26g9t1xy3BLwSdIDXHSmJ7w34V-A56E,28094
18
- spacr/io.py,sha256=YVykRy_kgC0LF7oBdJoqtnFoTEGx5mfldboHpZXxe9E,115603
15
+ spacr/gui_core.py,sha256=8aoxVLwt8evl_mZG6xHxhRgf5nq35bfay12OOSJos5Q,40148
16
+ spacr/gui_elements.py,sha256=z00Xk16TxqMUXKat0rGmw2DHDFzuXoY0C1Tlg6LZpEI,110662
17
+ spacr/gui_utils.py,sha256=h84IcxKqcUZfatLybIMszc_xVVsBrdGKWzPdfV1oM3w,28474
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=4o9X76ur2kBe6TtOrbIPfo04iC60OZ1rNJoegBxtLmk,72361
21
+ spacr/plot.py,sha256=CICY2h6sNiY6bGKkw6ZYmro_FixXkKxZpIIOoSuMw94,73963
22
22
  spacr/sequencing.py,sha256=dt4urG5tL85qh2sGEi2F9rtOqBQR-eCfcqOvcAtQIzg,75849
23
- spacr/settings.py,sha256=Vbm1F5I926t3CJ0E7Y3m9pMIFZz1DzzSKNil6kDChIM,67904
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=Q1MgPMSf6coNta4mcb6UaWGtnGW1JeruJa7SxtOzvMk,188567
27
+ spacr/utils.py,sha256=M0lbpquOIxJi4iMH2_GAu0iB7jysifPNW3wzNuH1V4I,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.56.dist-info/LICENSE,sha256=SR-2MeGc6SCM1UORJYyarSWY_A-JaOMFDj7ReSs9tRM,1083
96
- spacr-0.2.56.dist-info/METADATA,sha256=yXp1WrJwtCMC3ha79ztaaqzfvPa95B2mmVCAm9Uirgk,5259
97
- spacr-0.2.56.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
98
- spacr-0.2.56.dist-info/entry_points.txt,sha256=BMC0ql9aNNpv8lUZ8sgDLQMsqaVnX5L535gEhKUP5ho,296
99
- spacr-0.2.56.dist-info/top_level.txt,sha256=GJPU8FgwRXGzKeut6JopsSRY2R8T3i9lDgya42tLInY,6
100
- spacr-0.2.56.dist-info/RECORD,,
95
+ spacr-0.2.61.dist-info/LICENSE,sha256=SR-2MeGc6SCM1UORJYyarSWY_A-JaOMFDj7ReSs9tRM,1083
96
+ spacr-0.2.61.dist-info/METADATA,sha256=Bh2O70K6G8eMEuz-OQSr66GSsluRZG1mIqMVO6ycLAU,5259
97
+ spacr-0.2.61.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
98
+ spacr-0.2.61.dist-info/entry_points.txt,sha256=BMC0ql9aNNpv8lUZ8sgDLQMsqaVnX5L535gEhKUP5ho,296
99
+ spacr-0.2.61.dist-info/top_level.txt,sha256=GJPU8FgwRXGzKeut6JopsSRY2R8T3i9lDgya42tLInY,6
100
+ spacr-0.2.61.dist-info/RECORD,,
File without changes