spacr 0.3.41__py3-none-any.whl → 0.3.42__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/measure.py +4 -4
- spacr/ml.py +26 -26
- spacr/settings.py +18 -13
- spacr/toxo.py +26 -5
- spacr/utils.py +3 -3
- {spacr-0.3.41.dist-info → spacr-0.3.42.dist-info}/METADATA +1 -1
- {spacr-0.3.41.dist-info → spacr-0.3.42.dist-info}/RECORD +11 -11
- {spacr-0.3.41.dist-info → spacr-0.3.42.dist-info}/LICENSE +0 -0
- {spacr-0.3.41.dist-info → spacr-0.3.42.dist-info}/WHEEL +0 -0
- {spacr-0.3.41.dist-info → spacr-0.3.42.dist-info}/entry_points.txt +0 -0
- {spacr-0.3.41.dist-info → spacr-0.3.42.dist-info}/top_level.txt +0 -0
spacr/measure.py
CHANGED
@@ -710,7 +710,7 @@ def _measure_crop_core(index, time_ls, file, settings):
|
|
710
710
|
else:
|
711
711
|
cell_mask = np.zeros_like(data[:, :, 0])
|
712
712
|
settings['cytoplasm'] = False
|
713
|
-
settings['
|
713
|
+
settings['uninfected'] = True
|
714
714
|
|
715
715
|
if settings['nucleus_mask_dim'] is not None:
|
716
716
|
nucleus_mask = data[:, :, settings['nucleus_mask_dim']].astype(data_type)
|
@@ -762,7 +762,7 @@ def _measure_crop_core(index, time_ls, file, settings):
|
|
762
762
|
cytoplasm_mask = _filter_object(cytoplasm_mask, settings['cytoplasm_min_size'])
|
763
763
|
|
764
764
|
if settings['cell_mask_dim'] is not None:
|
765
|
-
cell_mask, nucleus_mask, pathogen_mask, cytoplasm_mask = _exclude_objects(cell_mask, nucleus_mask, pathogen_mask, cytoplasm_mask,
|
765
|
+
cell_mask, nucleus_mask, pathogen_mask, cytoplasm_mask = _exclude_objects(cell_mask, nucleus_mask, pathogen_mask, cytoplasm_mask, uninfected=settings['uninfected'])
|
766
766
|
|
767
767
|
# Update data with the new masks
|
768
768
|
if settings['cell_mask_dim'] is not None:
|
@@ -979,9 +979,9 @@ def measure_crop(settings):
|
|
979
979
|
#_create_database(source_folder+'/measurements/measurements.db')
|
980
980
|
|
981
981
|
if settings['cell_mask_dim'] is None:
|
982
|
-
settings['
|
982
|
+
settings['uninfected'] = True
|
983
983
|
if settings['pathogen_mask_dim'] is None:
|
984
|
-
settings['
|
984
|
+
settings['uninfected'] = True
|
985
985
|
if settings['cell_mask_dim'] is not None and settings['pathogen_min_size'] is not None:
|
986
986
|
settings['cytoplasm'] = True
|
987
987
|
elif settings['cell_mask_dim'] is not None and settings['nucleus_min_size'] is not None:
|
spacr/ml.py
CHANGED
@@ -449,26 +449,28 @@ def perform_regression(settings):
|
|
449
449
|
return df, n_gene
|
450
450
|
else:
|
451
451
|
return df
|
452
|
+
|
453
|
+
|
452
454
|
|
453
455
|
settings = get_perform_regression_default_settings(settings)
|
454
456
|
count_data_df, score_data_df = _perform_regression_read_data(settings)
|
455
457
|
results_path, results_path_gene, results_path_grna, hits_path, res_folder, csv_path = _perform_regression_set_paths(settings)
|
456
458
|
save_settings(settings, name='regression', show=True)
|
459
|
+
|
460
|
+
if isinstance(settings['filter_value'], list):
|
461
|
+
filter_value = settings['filter_value']
|
462
|
+
else:
|
463
|
+
filter_value = []
|
464
|
+
if isinstance(settings['filter_column'], str):
|
465
|
+
filter_column = settings['filter_column']
|
457
466
|
|
458
|
-
score_data_df = clean_controls(score_data_df, settings['
|
467
|
+
score_data_df = clean_controls(score_data_df, settings['filter_value'], settings['filter_column'])
|
459
468
|
print(f"Dependent variable after clean_controls: {len(score_data_df)}")
|
460
469
|
|
461
470
|
dependent_df, dependent_variable = process_scores(score_data_df, settings['dependent_variable'], settings['plate'], settings['min_cell_count'], settings['agg_type'], settings['transform'])
|
462
471
|
print(f"Dependent variable after process_scores: {len(dependent_df)}")
|
463
472
|
|
464
|
-
|
465
|
-
|
466
|
-
if settings['other'] is not None:
|
467
|
-
if isinstance(settings['other'], str):
|
468
|
-
settings['other'] = [settings['other']]
|
469
|
-
filter_value.extend(settings['other'])
|
470
|
-
|
471
|
-
independent_df = process_reads(count_data_df, settings['fraction_threshold'], settings['plate'], filter_column=settings['location_column'], filter_value=filter_value)
|
473
|
+
independent_df = process_reads(count_data_df, settings['fraction_threshold'], settings['plate'], filter_column=filter_column, filter_value=filter_value)
|
472
474
|
independent_df, n_grna, n_gene = _count_variable_instances(independent_df, column_1='grna', column_2='gene')
|
473
475
|
|
474
476
|
print(f"Independent variable after process_reads: {len(independent_df)}")
|
@@ -498,12 +500,14 @@ def perform_regression(settings):
|
|
498
500
|
if settings['controls'] is not None:
|
499
501
|
control_coef_df = grna_coef_df[grna_coef_df['grna'].isin(settings['controls'])]
|
500
502
|
mean_coef = control_coef_df['coefficient'].mean()
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
503
|
+
|
504
|
+
if settings['threshold_method'] in ['var','variance']:
|
505
|
+
coef_mes = control_coef_df['coefficient'].var()
|
506
|
+
elif settings['threshold_method'] in ['std', 'standard_deveation']:
|
507
|
+
coef_mes = control_coef_df['coefficient'].std()
|
508
|
+
else:
|
509
|
+
raise ValueError(f"Unsupported threshold method {settings['threshold_method']}. Supported methods: ['var','variance','std','standard_deveation']")
|
510
|
+
reg_threshold = mean_coef + (settings['threshold_multiplier'] * coef_mes)
|
507
511
|
|
508
512
|
coef_df.to_csv(results_path, index=False)
|
509
513
|
gene_coef_df.to_csv(results_path_gene, index=False)
|
@@ -596,7 +600,7 @@ def process_reads(csv_path, fraction_threshold, plate, filter_column=None, filte
|
|
596
600
|
if isinstance(filter_value, str):
|
597
601
|
filter_value = [filter_value]
|
598
602
|
|
599
|
-
if isinstance(filter_column, list):
|
603
|
+
if isinstance(filter_column, list):
|
600
604
|
for filter_col in filter_column:
|
601
605
|
for value in filter_value:
|
602
606
|
csv_df = csv_df[csv_df[filter_col] != value]
|
@@ -659,16 +663,12 @@ def check_normality(data, variable_name, verbose=False):
|
|
659
663
|
print(f"Normal distribution: The data for {variable_name} is not normally distributed.")
|
660
664
|
return False
|
661
665
|
|
662
|
-
def clean_controls(df,
|
663
|
-
if
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
df = df[~df['column'].isin([pc])]
|
669
|
-
if other != None:
|
670
|
-
df = df[~df['column'].isin([other])]
|
671
|
-
print(f'Removed data from {nc, pc, other}')
|
666
|
+
def clean_controls(df,values, column):
|
667
|
+
if column in df.columns:
|
668
|
+
if isinstance(values, list):
|
669
|
+
for value in values:
|
670
|
+
df = df[~df[column].isin([value])]
|
671
|
+
print(f'Removed data from {value}')
|
672
672
|
return df
|
673
673
|
|
674
674
|
def process_scores(df, dependent_variable, plate, min_cell_count=25, agg_type='mean', transform=None, regression_type='ols'):
|
spacr/settings.py
CHANGED
@@ -261,7 +261,7 @@ def get_measure_crop_settings(settings={}):
|
|
261
261
|
settings.setdefault('nucleus_mask_dim',None)
|
262
262
|
settings.setdefault('pathogen_mask_dim',None)
|
263
263
|
settings.setdefault('cytoplasm',False)
|
264
|
-
settings.setdefault('
|
264
|
+
settings.setdefault('uninfected',True)
|
265
265
|
settings.setdefault('cell_min_size',0)
|
266
266
|
settings.setdefault('nucleus_min_size',0)
|
267
267
|
settings.setdefault('pathogen_min_size',0)
|
@@ -527,26 +527,31 @@ def set_generate_dataset_defaults(settings):
|
|
527
527
|
return settings
|
528
528
|
|
529
529
|
def get_perform_regression_default_settings(settings):
|
530
|
-
settings.setdefault('
|
531
|
-
settings.setdefault('
|
530
|
+
settings.setdefault('count_data','list of paths')
|
531
|
+
settings.setdefault('score_data','list of paths')
|
532
|
+
settings.setdefault('positive_control','239740')
|
533
|
+
settings.setdefault('negative_control','233460')
|
534
|
+
settings.setdefault('controls',['000000_1','000000_10','000000_11','000000_12','000000_13','000000_14','000000_15','000000_16','000000_17','000000_18','000000_19','000000_20','000000_21','000000_22','000000_23','000000_24','000000_25','000000_26','000000_27','000000_28','000000_29','000000_3','000000_30','000000_31','000000_32','000000_4','000000_5','000000_6','000000_8','000000_9'])
|
535
|
+
settings.setdefault('fraction_threshold',0.12)
|
536
|
+
settings.setdefault('dependent_variable','pred')
|
537
|
+
settings.setdefault('threshold_method','std')
|
538
|
+
settings.setdefault('threshold_multiplier',3)
|
532
539
|
settings.setdefault('transform',None)
|
533
540
|
settings.setdefault('agg_type','mean')
|
534
541
|
settings.setdefault('min_cell_count',25)
|
535
542
|
settings.setdefault('regression_type','ols')
|
536
543
|
settings.setdefault('random_row_column_effects',False)
|
544
|
+
settings.setdefault('split_axis_lims','')
|
545
|
+
settings.setdefault('plate','')
|
546
|
+
settings.setdefault('cov_type',None)
|
537
547
|
settings.setdefault('alpha',1)
|
538
|
-
settings.setdefault('
|
539
|
-
settings.setdefault('
|
540
|
-
settings.setdefault('nc','c1')
|
541
|
-
settings.setdefault('pc','c2')
|
542
|
-
settings.setdefault('other','c3')
|
548
|
+
settings.setdefault('filter_value',['c1', 'c2', 'c3'])
|
549
|
+
settings.setdefault('filter_column','column')
|
543
550
|
settings.setdefault('plate','plate1')
|
544
551
|
settings.setdefault('class_1_threshold',None)
|
545
|
-
settings.setdefault('cov_type',None)
|
546
552
|
settings.setdefault('metadata_files',['/home/carruthers/Documents/TGME49_Summary.csv','/home/carruthers/Documents/TGGT1_Summary.csv'])
|
547
553
|
settings.setdefault('toxo', True)
|
548
554
|
|
549
|
-
|
550
555
|
if settings['regression_type'] == 'quantile':
|
551
556
|
print(f"Using alpha as quantile for quantile regression, alpha: {settings['alpha']}")
|
552
557
|
settings['agg_type'] = None
|
@@ -664,7 +669,7 @@ expected_types = {
|
|
664
669
|
"png_dims": list,
|
665
670
|
"normalize_by": str,
|
666
671
|
"save_measurements": bool,
|
667
|
-
"
|
672
|
+
"uninfected": bool,
|
668
673
|
"dialate_pngs": bool,
|
669
674
|
"dialate_png_ratios": list,
|
670
675
|
"n_jobs": int,
|
@@ -893,7 +898,7 @@ expected_types = {
|
|
893
898
|
categories = {"Paths":[ "src", "grna", "barcodes", "custom_model_path", "dataset","model_path","grna_csv","row_csv","column_csv"],
|
894
899
|
"General": ["metadata_type", "custom_regex", "experiment", "channels", "magnification", "channel_dims", "apply_model_to_dataset", "generate_training_dataset", "train_DL_model", "segmentation_mode"],
|
895
900
|
"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"],
|
896
|
-
"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", "
|
901
|
+
"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", "uninfected", "merge_edge_pathogen_cells", "adjust_cells", "cells", "cell_loc"],
|
897
902
|
"Nucleus": ["nucleus_intensity_range", "nucleus_size_range", "nucleus_chann_dim", "nucleus_channel", "nucleus_background", "nucleus_Signal_to_noise", "nucleus_CP_prob", "nucleus_FT", "remove_background_nucleus", "nucleus_min_size", "nucleus_mask_dim", "nucleus_loc"],
|
898
903
|
"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", "pathogens", "pathogen_loc", "pathogen_types", "pathogen_plate_metadata", ],
|
899
904
|
"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"],
|
@@ -1083,7 +1088,7 @@ def generate_fields(variables, scrollable_frame):
|
|
1083
1088
|
"nuclei_limit": "(int) - Whether to include multinucleated cells in the analysis.",
|
1084
1089
|
"pathogen_limit": "(int) - Whether to include multi-infected cells in the analysis.",
|
1085
1090
|
"uninfected": "(bool) - Whether to include non-infected cells in the analysis.",
|
1086
|
-
"
|
1091
|
+
"uninfected": "(bool) - Whether to include uninfected cells in the analysis.",
|
1087
1092
|
"init_weights": "(bool) - Whether to initialize weights for the model.",
|
1088
1093
|
"src": "(str) - Path to the folder containing the images.",
|
1089
1094
|
"intermedeate_save": "(bool) - Whether to save intermediate results.",
|
spacr/toxo.py
CHANGED
@@ -136,6 +136,7 @@ def custom_volcano_plot(data_path, metadata_path, metadata_column='tagm_location
|
|
136
136
|
data['variable'].fillna(data['feature'], inplace=True)
|
137
137
|
split_columns = data['variable'].str.split('_', expand=True)
|
138
138
|
data['gene_nr'] = split_columns[0]
|
139
|
+
data = data[data['variable'] != 'Intercept']
|
139
140
|
|
140
141
|
# Load metadata
|
141
142
|
if isinstance(metadata_path, pd.DataFrame):
|
@@ -158,11 +159,14 @@ def custom_volcano_plot(data_path, metadata_path, metadata_column='tagm_location
|
|
158
159
|
merged_data['condition'],
|
159
160
|
categories=['other','pc', 'nc', 'control'],
|
160
161
|
ordered=True)
|
162
|
+
|
163
|
+
|
164
|
+
display(merged_data)
|
161
165
|
|
162
166
|
# Create subplots with a broken y-axis
|
163
167
|
figsize_2 = figsize / 2
|
164
168
|
fig, (ax1, ax2) = plt.subplots(
|
165
|
-
2, 1, figsize=(
|
169
|
+
2, 1, figsize=(figsize, figsize),
|
166
170
|
sharex=True, gridspec_kw={'height_ratios': [1, 3]}
|
167
171
|
)
|
168
172
|
|
@@ -178,11 +182,12 @@ def custom_volcano_plot(data_path, metadata_path, metadata_column='tagm_location
|
|
178
182
|
data=merged_data,
|
179
183
|
x='coefficient',
|
180
184
|
y='-log10(p_value)',
|
181
|
-
hue='condition',
|
182
|
-
style=metadata_column if metadata_column else None,
|
185
|
+
hue='condition', # Keep colors but prevent them from showing in the final legend
|
186
|
+
style=metadata_column if metadata_column else None, # Shape-based legend
|
183
187
|
s=point_size,
|
184
188
|
edgecolor='black',
|
185
189
|
palette=palette,
|
190
|
+
legend='brief', # Capture the full legend initially
|
186
191
|
alpha=0.8,
|
187
192
|
ax=ax2 # Lower plot
|
188
193
|
)
|
@@ -196,6 +201,7 @@ def custom_volcano_plot(data_path, metadata_path, metadata_column='tagm_location
|
|
196
201
|
s=point_size,
|
197
202
|
palette=palette,
|
198
203
|
edgecolor='black',
|
204
|
+
legend=False, # Suppress legend for upper plot
|
199
205
|
alpha=0.8,
|
200
206
|
ax=ax1 # Upper plot
|
201
207
|
)
|
@@ -222,9 +228,24 @@ def custom_volcano_plot(data_path, metadata_path, metadata_column='tagm_location
|
|
222
228
|
ax2.spines['top'].set_visible(False)
|
223
229
|
ax1.tick_params(labelbottom=False)
|
224
230
|
|
225
|
-
ax1.legend_.remove()
|
226
231
|
if ax1.get_legend() is not None:
|
227
|
-
ax1.
|
232
|
+
ax1.legend_.remove()
|
233
|
+
ax1.get_legend().remove() # Extract handles and labels from the legend
|
234
|
+
handles, labels = ax2.get_legend_handles_labels()
|
235
|
+
|
236
|
+
# Identify shape-based legend entries (skip color-based entries)
|
237
|
+
shape_handles = handles[len(set(merged_data['condition'])):]
|
238
|
+
shape_labels = labels[len(set(merged_data['condition'])):]
|
239
|
+
|
240
|
+
# Set the legend with only shape-based entries
|
241
|
+
ax2.legend(
|
242
|
+
shape_handles,
|
243
|
+
shape_labels,
|
244
|
+
bbox_to_anchor=(1.05, 1),
|
245
|
+
loc='upper left',
|
246
|
+
borderaxespad=0.
|
247
|
+
)
|
248
|
+
|
228
249
|
ax1.tick_params(axis='x', which='both', bottom=False, top=False, labelbottom=False)
|
229
250
|
|
230
251
|
# Add vertical threshold lines to both plots
|
spacr/utils.py
CHANGED
@@ -2912,7 +2912,7 @@ def _relabel_parent_with_child_labels(parent_mask, child_mask):
|
|
2912
2912
|
|
2913
2913
|
return parent_mask_new, child_mask
|
2914
2914
|
|
2915
|
-
def _exclude_objects(cell_mask, nucleus_mask, pathogen_mask, cytoplasm_mask,
|
2915
|
+
def _exclude_objects(cell_mask, nucleus_mask, pathogen_mask, cytoplasm_mask, uninfected=True):
|
2916
2916
|
"""
|
2917
2917
|
Exclude objects from the masks based on certain criteria.
|
2918
2918
|
|
@@ -2921,7 +2921,7 @@ def _exclude_objects(cell_mask, nucleus_mask, pathogen_mask, cytoplasm_mask, inc
|
|
2921
2921
|
nucleus_mask (ndarray): Mask representing nucleus.
|
2922
2922
|
pathogen_mask (ndarray): Mask representing pathogens.
|
2923
2923
|
cytoplasm_mask (ndarray): Mask representing cytoplasm.
|
2924
|
-
|
2924
|
+
uninfected (bool, optional): Whether to include uninfected cells. Defaults to True.
|
2925
2925
|
|
2926
2926
|
Returns:
|
2927
2927
|
tuple: A tuple containing the filtered cell mask, nucleus mask, pathogen mask, and cytoplasm mask.
|
@@ -2936,7 +2936,7 @@ def _exclude_objects(cell_mask, nucleus_mask, pathogen_mask, cytoplasm_mask, inc
|
|
2936
2936
|
has_nucleus = np.any(nucleus_mask[cell_region])
|
2937
2937
|
has_cytoplasm = np.any(cytoplasm_mask[cell_region])
|
2938
2938
|
has_pathogen = np.any(pathogen_mask[cell_region])
|
2939
|
-
if
|
2939
|
+
if uninfected:
|
2940
2940
|
if has_nucleus and has_cytoplasm:
|
2941
2941
|
filtered_cells[cell_region] = cell_label
|
2942
2942
|
else:
|
@@ -16,18 +16,18 @@ spacr/gui_elements.py,sha256=w-S1MZdyxt5O3DsNAHNNXy_WGfwBPg0NhwQtCsJeiao,137071
|
|
16
16
|
spacr/gui_utils.py,sha256=7e9DsZIuV7-jh97kEf7v1In_cFzlFueV4SGcGYGpTxw,45454
|
17
17
|
spacr/io.py,sha256=LN_gJq_oqjbf8y-lBtLLZtJi8DLbNdyoGEcBYyOjbhQ,143606
|
18
18
|
spacr/logger.py,sha256=lJhTqt-_wfAunCPl93xE65Wr9Y1oIHJWaZMjunHUeIw,1538
|
19
|
-
spacr/measure.py,sha256=
|
19
|
+
spacr/measure.py,sha256=KdboGXoi85BO5-_6er7932FgjFI7G7tuaQDnWSiEuew,54817
|
20
20
|
spacr/mediar.py,sha256=FwLvbLQW5LQzPgvJZG8Lw7GniA2vbZx6Jv6vIKu7I5c,14743
|
21
|
-
spacr/ml.py,sha256=
|
21
|
+
spacr/ml.py,sha256=vzuEnbQd96mn7T8h3GRsEDnpWSSpxd3ApGMXTiG6b2o,50507
|
22
22
|
spacr/openai.py,sha256=5vBZ3Jl2llYcW3oaTEXgdyCB2aJujMUIO5K038z7w_A,1246
|
23
23
|
spacr/plot.py,sha256=TDGMwiIHjvk6v94WFlIvemU-6JfEik_GmSez51vyvCc,135869
|
24
24
|
spacr/sequencing.py,sha256=t18mgpK6rhWuB1LtFOsPxqgpFXxuUmrD06ecsaVQ0Gw,19655
|
25
|
-
spacr/settings.py,sha256=
|
25
|
+
spacr/settings.py,sha256=x3zcOpVbsxGvq4neW-H08CxzNl8thacy4WOxcIG4TAc,76607
|
26
26
|
spacr/sim.py,sha256=1xKhXimNU3ukzIw-3l9cF3Znc_brW8h20yv8fSTzvss,71173
|
27
27
|
spacr/submodules.py,sha256=AB7s6-cULsaqz-haAaCtXfGEIi8uPZGT4xoCslUJC3Y,18391
|
28
28
|
spacr/timelapse.py,sha256=FSYpUtAVy6xc3lwprRYgyDTT9ysUhfRQ4zrP9_h2mvg,39465
|
29
|
-
spacr/toxo.py,sha256=
|
30
|
-
spacr/utils.py,sha256=
|
29
|
+
spacr/toxo.py,sha256=MVDfkfTl6fhbzg3izLWdtr2arARYIhI1TdScnHtPVqI,16770
|
30
|
+
spacr/utils.py,sha256=Z8lmQJc8sdPvHi0ZmYOahuKtUmDcrYtRYlT4qNZORXU,216396
|
31
31
|
spacr/version.py,sha256=axH5tnGwtgSnJHb5IDhiu4Zjk5GhLyAEDRe-rnaoFOA,409
|
32
32
|
spacr/resources/MEDIAR/.gitignore,sha256=Ff1q9Nme14JUd-4Q3jZ65aeQ5X4uttptssVDgBVHYo8,152
|
33
33
|
spacr/resources/MEDIAR/LICENSE,sha256=yEj_TRDLUfDpHDNM0StALXIt6mLqSgaV2hcCwa6_TcY,1065
|
@@ -150,9 +150,9 @@ spacr/resources/icons/umap.png,sha256=dOLF3DeLYy9k0nkUybiZMe1wzHQwLJFRmgccppw-8b
|
|
150
150
|
spacr/resources/images/plate1_E01_T0001F001L01A01Z01C02.tif,sha256=Tl0ZUfZ_AYAbu0up_nO0tPRtF1BxXhWQ3T3pURBCCRo,7958528
|
151
151
|
spacr/resources/images/plate1_E01_T0001F001L01A02Z01C01.tif,sha256=m8N-V71rA1TT4dFlENNg8s0Q0YEXXs8slIn7yObmZJQ,7958528
|
152
152
|
spacr/resources/images/plate1_E01_T0001F001L01A03Z01C03.tif,sha256=Pbhk7xn-KUP6RSIhJsxQcrHFImBm3GEpLkzx7WOc-5M,7958528
|
153
|
-
spacr-0.3.
|
154
|
-
spacr-0.3.
|
155
|
-
spacr-0.3.
|
156
|
-
spacr-0.3.
|
157
|
-
spacr-0.3.
|
158
|
-
spacr-0.3.
|
153
|
+
spacr-0.3.42.dist-info/LICENSE,sha256=SR-2MeGc6SCM1UORJYyarSWY_A-JaOMFDj7ReSs9tRM,1083
|
154
|
+
spacr-0.3.42.dist-info/METADATA,sha256=_nbP3IjQELrampyAYyt6hfrQBukDHuhlS7CApsMPsQ0,5949
|
155
|
+
spacr-0.3.42.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
|
156
|
+
spacr-0.3.42.dist-info/entry_points.txt,sha256=BMC0ql9aNNpv8lUZ8sgDLQMsqaVnX5L535gEhKUP5ho,296
|
157
|
+
spacr-0.3.42.dist-info/top_level.txt,sha256=GJPU8FgwRXGzKeut6JopsSRY2R8T3i9lDgya42tLInY,6
|
158
|
+
spacr-0.3.42.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|