spacr 0.2.2__py3-none-any.whl → 0.2.21__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.
Files changed (90) hide show
  1. spacr/gui.py +2 -1
  2. spacr/gui_elements.py +1 -5
  3. spacr/resources/icons/abort.png +0 -0
  4. spacr/resources/icons/classify.png +0 -0
  5. spacr/resources/icons/make_masks.png +0 -0
  6. spacr/resources/icons/mask.png +0 -0
  7. spacr/resources/icons/measure.png +0 -0
  8. spacr/resources/icons/recruitment.png +0 -0
  9. spacr/resources/icons/regression.png +0 -0
  10. spacr/resources/icons/run.png +0 -0
  11. spacr/resources/icons/umap.png +0 -0
  12. {spacr-0.2.2.dist-info → spacr-0.2.21.dist-info}/METADATA +1 -1
  13. spacr-0.2.21.dist-info/RECORD +56 -0
  14. spacr/alpha.py +0 -807
  15. spacr/annotate_app.py +0 -670
  16. spacr/annotate_app_v2.py +0 -670
  17. spacr/app_make_masks_v2.py +0 -686
  18. spacr/classify_app.py +0 -201
  19. spacr/cli.py +0 -41
  20. spacr/foldseek.py +0 -779
  21. spacr/get_alfafold_structures.py +0 -72
  22. spacr/gui_2.py +0 -157
  23. spacr/gui_annotate.py +0 -145
  24. spacr/gui_classify_app.py +0 -201
  25. spacr/gui_make_masks_app.py +0 -927
  26. spacr/gui_make_masks_app_v2.py +0 -688
  27. spacr/gui_mask_app.py +0 -249
  28. spacr/gui_measure_app.py +0 -246
  29. spacr/gui_run.py +0 -58
  30. spacr/gui_sim_app.py +0 -0
  31. spacr/gui_wrappers.py +0 -149
  32. spacr/icons/abort.png +0 -0
  33. spacr/icons/abort.svg +0 -1
  34. spacr/icons/download.png +0 -0
  35. spacr/icons/download.svg +0 -1
  36. spacr/icons/download_for_offline_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.png +0 -0
  37. spacr/icons/download_for_offline_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.svg +0 -1
  38. spacr/icons/logo_spacr.png +0 -0
  39. spacr/icons/make_masks.png +0 -0
  40. spacr/icons/make_masks.svg +0 -1
  41. spacr/icons/map_barcodes.png +0 -0
  42. spacr/icons/map_barcodes.svg +0 -1
  43. spacr/icons/mask.png +0 -0
  44. spacr/icons/mask.svg +0 -1
  45. spacr/icons/measure.png +0 -0
  46. spacr/icons/measure.svg +0 -1
  47. spacr/icons/play_circle_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.png +0 -0
  48. spacr/icons/play_circle_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.svg +0 -1
  49. spacr/icons/run.png +0 -0
  50. spacr/icons/run.svg +0 -1
  51. spacr/icons/sequencing.png +0 -0
  52. spacr/icons/sequencing.svg +0 -1
  53. spacr/icons/settings.png +0 -0
  54. spacr/icons/settings.svg +0 -1
  55. spacr/icons/settings_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.png +0 -0
  56. spacr/icons/settings_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.svg +0 -1
  57. spacr/icons/stop_circle_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.png +0 -0
  58. spacr/icons/stop_circle_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.svg +0 -1
  59. spacr/icons/theater_comedy_100dp_E8EAED_FILL0_wght100_GRAD200_opsz48.png +0 -0
  60. spacr/icons/theater_comedy_100dp_E8EAED_FILL0_wght100_GRAD200_opsz48.svg +0 -1
  61. spacr/make_masks_app.py +0 -929
  62. spacr/make_masks_app_v2.py +0 -688
  63. spacr/mask_app.py +0 -249
  64. spacr/measure_app.py +0 -246
  65. spacr/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model +0 -0
  66. spacr/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model_settings.csv +0 -23
  67. spacr/models/cp/toxo_pv_lumen.CP_model +0 -0
  68. spacr/old_code.py +0 -358
  69. spacr/resources/icons/abort.svg +0 -1
  70. spacr/resources/icons/annotate.svg +0 -1
  71. spacr/resources/icons/classify.svg +0 -1
  72. spacr/resources/icons/download.svg +0 -1
  73. spacr/resources/icons/icon.psd +0 -0
  74. spacr/resources/icons/make_masks.svg +0 -1
  75. spacr/resources/icons/map_barcodes.svg +0 -1
  76. spacr/resources/icons/mask.svg +0 -1
  77. spacr/resources/icons/measure.svg +0 -1
  78. spacr/resources/icons/run.svg +0 -1
  79. spacr/resources/icons/run_2.png +0 -0
  80. spacr/resources/icons/run_2.svg +0 -1
  81. spacr/resources/icons/sequencing.svg +0 -1
  82. spacr/resources/icons/settings.svg +0 -1
  83. spacr/resources/icons/train_cellpose.svg +0 -1
  84. spacr/test_gui.py +0 -0
  85. spacr-0.2.2.dist-info/RECORD +0 -126
  86. /spacr/resources/icons/{cellpose.png → cellpose_all.png} +0 -0
  87. {spacr-0.2.2.dist-info → spacr-0.2.21.dist-info}/LICENSE +0 -0
  88. {spacr-0.2.2.dist-info → spacr-0.2.21.dist-info}/WHEEL +0 -0
  89. {spacr-0.2.2.dist-info → spacr-0.2.21.dist-info}/entry_points.txt +0 -0
  90. {spacr-0.2.2.dist-info → spacr-0.2.21.dist-info}/top_level.txt +0 -0
spacr/old_code.py DELETED
@@ -1,358 +0,0 @@
1
- def process_fig_queue_v1():
2
- while not fig_queue.empty():
3
- update_task = fig_queue.get()
4
- try:
5
- update_task()
6
- except Exception as e:
7
- print(f"Error processing fig_queue: {e}")
8
- root.after(100, process_fig_queue)
9
-
10
- def update_figure_in_gui_v1(fig):
11
-
12
-
13
- def task():
14
- global canvas, canvas_widget, fig_queue
15
- disconnect_all_event_handlers(fig)
16
- canvas.figure = fig
17
- fig.set_size_inches(10, 10, forward=True)
18
- for axis in fig.axes:
19
- axis.set_visible(False)
20
- canvas.draw()
21
- canvas_widget.draw()
22
-
23
- fig_queue.put(task)
24
-
25
- def my_show_v1():
26
- fig = plt.gcf()
27
- update_figure_in_gui(fig)
28
-
29
- def disconnect_all_event_handlers(fig):
30
- canvas = fig.canvas
31
- if canvas.callbacks.callbacks:
32
- for event, callback_list in list(canvas.callbacks.callbacks.items()):
33
- for cid in list(callback_list.keys()):
34
- canvas.mpl_disconnect(cid)
35
- return canvas
36
-
37
- def resize_figure_to_canvas(fig, canvas):
38
- canvas_width = canvas.winfo_width()
39
- canvas_height = canvas.winfo_height()
40
-
41
- # Convert pixels to inches for matplotlib
42
- fig_width = canvas_width / fig.dpi
43
- fig_height = canvas_height / fig.dpi
44
-
45
- # Resizing the figure
46
- fig.set_size_inches(fig_width, fig_height, forward=True)
47
-
48
- # Optionally, hide axes
49
- for ax in fig.axes:
50
- ax.set_visible(False)
51
-
52
- return fig
53
-
54
- def process_fig_queue_v1():
55
- global canvas
56
- while not fig_queue.empty():
57
- try:
58
- fig = fig_queue.get_nowait()
59
- canvas.figure = fig
60
- canvas.draw()
61
- except queue.Empty:
62
- pass
63
- except Exception as e:
64
- print(f"Error processing fig_queue: {e}")
65
- traceback.print_exc()
66
- root.after(100, process_fig_queue)
67
-
68
- def process_fig_queue():
69
- while not fig_queue.empty():
70
- try:
71
- fig = fig_queue.get_nowait()
72
- # Signal the main thread to update the GUI with the new figure
73
- root.after_idle(update_canvas_with_figure, fig)
74
- except queue.Empty:
75
- pass
76
- except Exception as e:
77
- print(f"Error processing fig_queue: {e}")
78
- traceback.print_exc()
79
- # Reschedule itself to run again
80
- root.after(100, process_fig_queue)
81
-
82
- def update_canvas_with_figure(fig):
83
- global canvas
84
- # Resize the figure to fit the canvas
85
- canvas_width = canvas.get_tk_widget().winfo_width()
86
- canvas_height = canvas.get_tk_widget().winfo_height()
87
- fig_width = canvas_width / fig.dpi
88
- fig_height = canvas_height / fig.dpi
89
- fig.set_size_inches(fig_width, fig_height, forward=True)
90
- # Hide the axes if needed
91
- for ax in fig.axes:
92
- ax.set_visible(False)
93
- # Update the canvas with the new figure
94
- canvas.figure = fig
95
- canvas.draw_idle() # Use draw_idle for efficiency and thread safety
96
-
97
- def run_mask_gui(q):
98
- global vars_dict
99
- try:
100
- settings = check_mask_gui_settings(vars_dict)
101
- settings = add_mask_gui_defaults(settings)
102
- preprocess_generate_masks_wrapper(settings['src'], settings=settings, advanced_settings={})
103
- except Exception as e:
104
- q.put(f"Error during processing: {e}\n")
105
-
106
- #@log_function_call
107
- def main_thread_update_function(root, q, fig_queue, canvas_widget, progress_label):
108
- try:
109
- while not q.empty():
110
- message = q.get_nowait()
111
- if message.startswith("Progress"):
112
- progress_label.config(text=message)
113
- elif message.startswith("Processing"):
114
- progress_label.config(text=message)
115
- elif message == "" or message == "\r":
116
- pass
117
- elif message.startswith("/"):
118
- pass
119
- elif message.startswith("\\"):
120
- pass
121
- elif message.startswith(""):
122
- pass
123
- else:
124
- print(message)
125
- except Exception as e:
126
- print(f"Error updating GUI canvas: {e}")
127
- #try:
128
- # while not fig_queue.empty():
129
- # fig = fig_queue.get_nowait()
130
- # #if hasattr(canvas_widget, 'figure'):
131
- # #clear_canvas(canvas_widget)
132
- # canvas_widget.figure = fig
133
- #except Exception as e:
134
- # print(f"Error updating GUI figure: {e}")
135
- finally:
136
- root.after(100, lambda: main_thread_update_function(root, q, fig_queue, canvas_widget, progress_label))
137
-
138
- class MPNN(MessagePassing):
139
- def __init__(self, node_in_features, edge_in_features, out_features):
140
- super(MPNN, self).__init__(aggr='mean') # 'mean' aggregation.
141
- self.message_mlp = Sequential(
142
- Linear(node_in_features + edge_in_features, 128),
143
- ReLU(),
144
- Linear(128, out_features)
145
- )
146
- self.update_mlp = Sequential(
147
- Linear(out_features, out_features),
148
- ReLU(),
149
- Linear(out_features, out_features)
150
- )
151
-
152
- def forward(self, x, edge_index, edge_attr):
153
- # x: Node features [N, node_in_features]
154
- # edge_index: Graph connectivity [2, E]
155
- # edge_attr: Edge attributes/features [E, edge_in_features]
156
- return self.propagate(edge_index, x=x, edge_attr=edge_attr)
157
-
158
- def message(self, x_j, edge_attr):
159
- # x_j: Input features of neighbors [E, node_in_features]
160
- # edge_attr: Edge attributes [E, edge_in_features]
161
- tmp = torch.cat([x_j, edge_attr], dim=-1) # Concatenate node features with edge attributes
162
- return self.message_mlp(tmp)
163
-
164
- def update(self, aggr_out):
165
- # aggr_out: Aggregated messages [N, out_features]
166
- return self.update_mlp(aggr_out)
167
-
168
- def weighted_mse_loss(output, target, score_threshold=0.8, high_score_weight=10):
169
- # Assumes output and target are the predicted and true scores, respectively
170
- weights = torch.ones_like(target)
171
- high_score_mask = target >= score_threshold
172
- weights[high_score_mask] = high_score_weight
173
- return ((output - target) ** 2 * weights).mean()
174
-
175
- def generate_single_graph(sequencing, scores):
176
- # Load and preprocess sequencing data
177
- gene_df = pd.read_csv(sequencing)
178
- gene_df = gene_df.rename(columns={"prc": "well_id", "grna": "gene_id", "count": "read_count"})
179
- total_reads_per_well = gene_df.groupby('well_id')['read_count'].sum().reset_index(name='total_reads')
180
- gene_df = gene_df.merge(total_reads_per_well, on='well_id')
181
- gene_df['well_read_fraction'] = gene_df['read_count']/gene_df['total_reads']
182
-
183
- # Load and preprocess cell score data
184
- cell_df = pd.read_csv(scores)
185
- cell_df = cell_df[['prcfo', 'prc', 'pred']].rename(columns={'prcfo': 'cell_id', 'prc': 'well_id', 'pred': 'score'})
186
-
187
- # Initialize mappings
188
- gene_id_to_index = {gene: i for i, gene in enumerate(gene_df['gene_id'].unique())}
189
- cell_id_to_index = {cell: i + len(gene_id_to_index) for i, cell in enumerate(cell_df['cell_id'].unique())}
190
-
191
- # Initialize edge indices and attributes
192
- edge_index = []
193
- edge_attr = []
194
-
195
- # Associate each cell with all genes in the same well
196
- for well_id, group in gene_df.groupby('well_id'):
197
- if well_id in cell_df['well_id'].values:
198
- cell_indices = cell_df[cell_df['well_id'] == well_id]['cell_id'].map(cell_id_to_index).values
199
- gene_indices = group['gene_id'].map(gene_id_to_index).values
200
- fractions = group['well_read_fraction'].values
201
-
202
- for cell_idx in cell_indices:
203
- for gene_idx, fraction in zip(gene_indices, fractions):
204
- edge_index.append([cell_idx, gene_idx])
205
- edge_attr.append([fraction])
206
-
207
- # Convert lists to PyTorch tensors
208
- edge_index = torch.tensor(edge_index, dtype=torch.long).t().contiguous()
209
- edge_attr = torch.tensor(edge_attr, dtype=torch.float)
210
- cell_scores = torch.tensor(cell_df['score'].values, dtype=torch.float)
211
-
212
- # One-hot encoding for genes, and zero features for cells (could be replaced with real features if available)
213
- gene_features = torch.eye(len(gene_id_to_index))
214
- cell_features = torch.zeros(len(cell_id_to_index), gene_features.size(1))
215
-
216
- # Combine features
217
- x = torch.cat([cell_features, gene_features], dim=0)
218
-
219
- # Create the graph data object
220
- data = Data(x=x, edge_index=edge_index, edge_attr=edge_attr, y=cell_scores)
221
-
222
- return data, gene_id_to_index, len(gene_id_to_index)
223
-
224
- # in _normalize_and_outline
225
- outlines = []
226
-
227
- overlayed_image = rgb_image.copy()
228
- for i, mask_dim in enumerate(mask_dims):
229
- mask = np.take(image, mask_dim, axis=2)
230
- outline = np.zeros_like(mask)
231
- # Find the contours of the objects in the mask
232
- for j in np.unique(mask)[1:]:
233
- contours = find_contours(mask == j, 0.5)
234
- for contour in contours:
235
- contour = contour.astype(int)
236
- outline[contour[:, 0], contour[:, 1]] = j
237
- # Make the outline thicker
238
- outline = dilation(outline, square(outline_thickness))
239
- outlines.append(outline)
240
- # Overlay the outlines onto the RGB image
241
- for j in np.unique(outline)[1:]:
242
- overlayed_image[outline == j] = outline_colors[i % len(outline_colors)]
243
-
244
- def _extract_filename_metadata(filenames, src, images_by_key, regular_expression, metadata_type='cellvoyager', pick_slice=False, skip_mode='01'):
245
- for filename in filenames:
246
- match = regular_expression.match(filename)
247
- if match:
248
- try:
249
- try:
250
- plate = match.group('plateID')
251
- except:
252
- plate = os.path.basename(src)
253
-
254
- well = match.group('wellID')
255
- field = match.group('fieldID')
256
- channel = match.group('chanID')
257
- mode = None
258
-
259
- if well[0].isdigit():
260
- well = str(_safe_int_convert(well))
261
- if field[0].isdigit():
262
- field = str(_safe_int_convert(field))
263
- if channel[0].isdigit():
264
- channel = str(_safe_int_convert(channel))
265
-
266
- if metadata_type =='cq1':
267
- orig_wellID = wellID
268
- wellID = _convert_cq1_well_id(wellID)
269
- clear_output(wait=True)
270
- print(f'Converted Well ID: {orig_wellID} to {wellID}', end='\r', flush=True)
271
-
272
- if pick_slice:
273
- try:
274
- mode = match.group('AID')
275
- except IndexError:
276
- sliceid = '00'
277
-
278
- if mode == skip_mode:
279
- continue
280
-
281
- key = (plate, well, field, channel, mode)
282
- with Image.open(os.path.join(src, filename)) as img:
283
- images_by_key[key].append(np.array(img))
284
- except IndexError:
285
- print(f"Could not extract information from filename {filename} using provided regex")
286
- else:
287
- print(f"Filename {filename} did not match provided regex")
288
- continue
289
-
290
- return images_by_key
291
-
292
- def compare_cellpose_masks_v1(src, verbose=False, save=False):
293
-
294
- from .io import _read_mask
295
- from .plot import visualize_masks, plot_comparison_results, visualize_cellpose_masks
296
- from .utils import extract_boundaries, boundary_f1_score, compute_segmentation_ap, jaccard_index
297
-
298
- import os
299
- import numpy as np
300
- from skimage.measure import label
301
-
302
- # Collect all subdirectories in src
303
- dirs = [os.path.join(src, d) for d in os.listdir(src) if os.path.isdir(os.path.join(src, d))]
304
-
305
- dirs.sort() # Optional: sort directories if needed
306
-
307
- # Get common files in all directories
308
- common_files = set(os.listdir(dirs[0]))
309
- for d in dirs[1:]:
310
- common_files.intersection_update(os.listdir(d))
311
- common_files = list(common_files)
312
-
313
- results = []
314
- conditions = [os.path.basename(d) for d in dirs]
315
-
316
- for index, filename in enumerate(common_files):
317
- print(f'Processing image {index+1}/{len(common_files)}', end='\r', flush=True)
318
- paths = [os.path.join(d, filename) for d in dirs]
319
-
320
- # Check if file exists in all directories
321
- if not all(os.path.exists(path) for path in paths):
322
- print(f'Skipping {filename} as it is not present in all directories.')
323
- continue
324
-
325
- masks = [_read_mask(path) for path in paths]
326
- boundaries = [extract_boundaries(mask) for mask in masks]
327
-
328
- if verbose:
329
- visualize_cellpose_masks(masks, titles=conditions, comparison_title=f"Masks Comparison for {filename}", save=save, src=src)
330
-
331
- # Initialize data structure for results
332
- file_results = {'filename': filename}
333
-
334
- # Compare each mask with each other
335
- for i in range(len(masks)):
336
- for j in range(i + 1, len(masks)):
337
- condition_i = conditions[i]
338
- condition_j = conditions[j]
339
- mask_i = masks[i]
340
- mask_j = masks[j]
341
-
342
- # Compute metrics
343
- boundary_f1 = boundary_f1_score(mask_i, mask_j)
344
- jaccard = jaccard_index(mask_i, mask_j)
345
- average_precision = compute_segmentation_ap(mask_i, mask_j)
346
-
347
- # Store results
348
- file_results[f'jaccard_{condition_i}_{condition_j}'] = jaccard
349
- file_results[f'boundary_f1_{condition_i}_{condition_j}'] = boundary_f1
350
- file_results[f'average_precision_{condition_i}_{condition_j}'] = average_precision
351
-
352
- results.append(file_results)
353
-
354
- fig = plot_comparison_results(results)
355
-
356
- save_results_and_figure(src, fig, results)
357
-
358
- return results, fig
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="M349.5-349.5h262v-262h-262v262ZM480.57-132q-72.94 0-135.93-27.52-62.99-27.53-110.39-74.85-47.4-47.33-74.82-110.1Q132-407.25 132-480.2q0-72.03 27.52-135.59 27.53-63.56 74.85-110.71 47.33-47.15 110.1-74.32Q407.25-828 480.2-828q72.03 0 135.59 27.39 63.57 27.39 110.72 74.35 47.14 46.96 74.31 110.39Q828-552.43 828-480.57q0 72.94-27.27 135.93-27.28 62.99-74.35 110.21-47.08 47.21-110.51 74.82Q552.43-132 480.57-132Zm-.14-22q135.07 0 230.32-95.18Q806-344.37 806-480.43q0-135.07-95-230.32Q616.01-806 480.07-806q-135.57 0-230.82 95Q154-616.01 154-480.07q0 135.57 95.18 230.82Q344.37-154 480.43-154ZM480-480Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="M463-132q-35.43 0-66.81-13.75Q364.82-159.5 345-187L164-430.5l9.5-9.5q4.5-5.5 11.65-7t15.35.5l141.5 66v-309.37q0-3.87 3.23-7t8-3.13q4.77 0 8.02 3.36t3.25 7.56v340.58L193-427l173.5 229q16.1 23.7 42.15 33.85Q434.69-154 463-154h153.5q45.03 0 77.27-31.65Q726-217.29 726-263.5V-402q0-29.4-19.62-48.95-19.63-19.55-47.88-19.55h-174v-22h174q36.38 0 62.94 26.4Q748-439.71 748-402v138.49q0 55.01-38.91 93.26Q670.19-132 616.5-132H463ZM233.4-620.5q-9.47-13.75-14.19-31.47-4.71-17.71-4.71-36.86 0-58.64 40.62-98.91Q295.74-828 353.15-828q57.4 0 98.37 40.5 40.98 40.5 40.98 99.13 0 19.07-5.21 36.63-5.22 17.56-13.73 31.24l-19.06-10.34q7.5-13.16 11.75-27.74 4.25-14.59 4.25-30.83 0-48.51-34.28-82.55T352.97-806q-48.97 0-82.72 33.95-33.75 33.96-33.75 83.27 0 15.82 3.75 30.3T252.5-631l-19.1 10.5Zm227.1 297Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="M480.35-367Q535-367 574-406.35q39-39.36 39-94Q613-555 573.65-594q-39.36-39-94-39Q425-633 386-593.65q-39 39.36-39 94Q347-445 386.35-406q39.36 39 94 39Zm-.76-24q-45.59 0-77.09-31.91t-31.5-77.5q0-45.59 31.91-77.09t77.5-31.5q45.59 0 77.09 31.91t31.5 77.5q0 45.59-31.91 77.09t-77.5 31.5Zm.55 139Q356.5-252 253-319.25 149.5-386.5 96-500q53.5-113.5 156.86-180.75Q356.21-748 479.86-748 603.5-748 707-680.75 810.5-613.5 864-500q-53.5 113.5-156.86 180.75Q603.79-252 480.14-252ZM480-500Zm-.17 226q116.47 0 212.89-60.91Q789.14-395.81 840-500q-50.86-104.19-147.11-165.09Q596.64-726 480.17-726t-212.89 60.91Q170.86-604.19 120-500q50.86 104.19 147.11 165.09Q363.36-274 479.83-274Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="M306-306h348v-22H306v22Zm173-132 124-123-16-16-97 97v-214h-22v214l-96-97-16 16 123 123Zm1.3 306q-72.21 0-135.43-27.52-63.22-27.53-110.62-74.85-47.4-47.33-74.82-110.26Q132-407.57 132-479.7q0-72.21 27.52-135.93 27.53-63.72 74.85-110.87 47.33-47.15 110.26-74.32Q407.57-828 479.7-828q72.21 0 135.94 27.39 63.72 27.39 110.87 74.35 47.14 46.96 74.31 110.39Q828-552.43 828-480.3q0 72.21-27.27 135.43-27.28 63.22-74.35 110.62-47.08 47.4-110.51 74.82Q552.43-132 480.3-132Zm-.37-22q135.57 0 230.82-95.18Q806-344.37 806-479.93q0-135.57-95.18-230.82Q615.63-806 480.07-806q-135.57 0-230.82 95.18Q154-615.63 154-480.07q0 135.57 95.18 230.82Q344.37-154 479.93-154Zm.07-326Z"/></svg>
Binary file
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="M212-172v-66l541.92-543.42q3.08-3.08 8.08-4.83t9.25-1.75q4.3 0 9.28 1.75 4.97 1.75 7.47 4.75l33 33q3 3.5 5 7.97 2 4.48 2 9.28 0 4.25-1.75 9.25t-4.83 8.08L278-172h-66Zm22-22h35.5L716-641l-16.98-18.02L681-676 234-229.5v35.5Zm572.5-537.5-35-35 35 35Zm-107.48 72.48L681-676l35 35-16.98-18.02ZM574.5-172q64.87 0 119.18-29.25Q748-230.5 748-286.5q0-34.3-28.25-64.15Q691.5-380.5 635.5-397l-18 19q50.5 14 79.5 38.75t29 52.75q0 40.62-44.04 66.56Q637.91-194 574.5-194q-5.5 0-8.5 3.04-3 3.03-3 7.46 0 5.5 3 8.5t8.5 3Zm-320-241.5 16.5-18q-40.5-14-58.75-29.75T194-494.5q0-21.5 24.5-41t91.14-46.7q72.72-29.8 100.04-55.05Q437-662.5 437-694.5q0-39-36.75-66.25T306.5-788q-36 0-67.5 12.5T193.5-744q-2.5 4.5-2.25 8.75t3.75 6.75q2.5 2.5 7.24 2.12 4.75-.39 8.26-4.12 16.5-16.5 41.58-26t54.33-9.5q51.09 0 79.84 20.78T415-694.56q0 26.46-23.5 45.01Q368-631 300.5-602q-78 32-103.25 55.54T172-494.5q0 22.5 19.25 44t63.25 37Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="M103-221v-479h71v479h-71Zm103 0v-479h69v479h-69Zm103 0v-479h34v479h-34Zm103 0v-479h68v479h-68Zm103 0v-479h103v479H515Zm137 0v-479h34v479h-34Zm103 0v-479h103v479H755Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="M480-309q48.46 0 84.23-29T610-414H349q9 47 45.77 76T480-309ZM301-591h129q0-27-19.08-46-19.09-19-46.5-19Q337-656 319-637.09q-18 18.92-18 46.09Zm229-1h130q0-27-18.87-45.5-18.88-18.5-46-18.5-27.83 0-46.48 18.41Q530-619.17 530-592Zm-50.2 476q-66.8 0-125.64-25.39t-103.5-70Q206-256 181-315.04 156-374.09 156-442v-402h648v402.09q0 67.91-25.2 127.04-25.21 59.12-69.5 103.5Q665-167 605.8-141.5q-59.21 25.5-126 25.5Zm-.3-35q120.5 0 205-84.59Q769-320.17 769-442v-367H191v366.78Q191-320 274.5-235.5t205 84.5Zm.5-329Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="m90-271-28-22 171-275 119.14 140L512-684l85 127q-7.71 3.67-16.79 6.17-9.07 2.5-16.21 6.83l-51-75-152.11 250L239-510 90-271ZM872-63 728-206q-19 14-38.33 20-19.32 6-40.67 6-54.92 0-92.96-38.06-38.04-38.06-38.04-93t38.06-93.44q38.06-38.5 93-38.5t93.44 38.33Q781-366.33 781-311q0 23-7 43t-22 37.45L897-88l-25 25ZM648.86-215q40.08 0 68.61-28.1T746-310.86q0-40.08-28.4-68.61T649.1-408q-40.1 0-68.1 28.4-28 28.4-28 68.5t28.1 68.1q28.1 28 67.76 28ZM720-555q-11-3-20.6-3.45-9.59-.46-17.4-.55l188-299 29 22-179 281Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="M372-295v-372l292 186-292 186Zm22-186Zm0 145 230-145-230-145v290Z"/></svg>
Binary file
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="m407-351 202-129-202-129v258Zm73.3 219q-72.21 0-135.43-27.52-63.22-27.53-110.62-74.85-47.4-47.33-74.82-110.26Q132-407.57 132-479.7q0-72.21 27.52-135.93 27.53-63.72 74.85-110.87 47.33-47.15 110.26-74.32Q407.57-828 479.7-828q72.21 0 135.94 27.39 63.72 27.39 110.87 74.35 47.14 46.96 74.31 110.39Q828-552.43 828-480.3q0 72.21-27.27 135.43-27.28 63.22-74.35 110.62-47.08 47.4-110.51 74.82Q552.43-132 480.3-132Zm-.37-22q135.57 0 230.82-95.18Q806-344.37 806-479.93q0-135.57-95.18-230.82Q615.63-806 480.07-806q-135.57 0-230.82 95.18Q154-615.63 154-480.07q0 135.57 95.18 230.82Q344.37-154 479.93-154Zm.07-326Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="M246-80v-20q0-141.45 56.5-215.72Q359-390 455-480q-97-90-153.5-164.28Q245-718.55 245-860v-21h34.66v21q0 17 1.08 33.5Q281.83-810 286-796h388.14q2.93-14 4.4-30.5Q680-843 680-860v-21h35v21q0 141.45-57 215.72Q601-570 506-480q95 89 152 163.78 57 74.77 57 216.22v20h-34.66v-20q0-17-1.58-33.5Q677.17-150 674-164H286.86q-3.93 14-4.9 30.5Q281-117 281-100v20h-35Zm99-565h269.18q18.82-25 33.32-54t23.5-62H290q7 34.65 21.25 62.86Q325.5-669.92 345-645Zm135 141q31.34-29.33 58.17-54.67Q565-584 588-610H371q22.75 26.33 50.25 51.67Q448.76-533 480-504ZM372-350h216q-23-26-49.83-51.33Q511.34-426.67 480-457q-31.34 30.33-58.17 55.67Q395-376 372-350Zm-81 151h380q-9-34.5-23.25-62.76Q633.5-290.03 614-315H346q-18.97 24.67-33.48 53.83Q298-232 291-199Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="m421.5-132-15-110.94Q383-249.5 355-265.5t-47.25-34l-101.25 46-59-105 90-66.5q-2.5-13.48-3.75-26.99-1.25-13.51-1.25-27.01 0-12 1.25-26t3.25-30l-89.5-68.5 59-102 101 44q21.5-17 47.5-32.5t50.5-22.5l16-111.5h118l15 112q26 9.5 49.25 23T649-661.5l106.5-44 58 102-94 70.54q3 14.96 4.5 27.96t1.5 24.75q0 10.75-1.75 23.84T719-426.42l93 67.92-59 105-104-47q-22.97 20.36-46.49 35.18Q579-250.5 554.5-244l-15 112h-118Zm17.74-22h80.79l15.69-111.5q29.86-8.07 54.11-21.69Q614.08-300.82 641-326l102.5 44 39.5-68.51L693-418q3.5-19 6-33.71t2.5-28.66q0-16.13-2.25-29.88T693-540l92-69-39.5-69-105 44q-19-20-49.75-39t-56.25-22.5L521.43-806H439l-11.5 110.07q-33 6.43-58.25 20.68T318-635l-102.5-43-40.5 69 90.5 65.5q-5 14-7 30.14t-2 33.83q0 17.03 1.75 31.78T264-418l-89 67 40.14 69 102.36-43q23.5 25.5 49.5 39.25T426.28-264l12.96 110Zm38.25-241q36.05 0 60.53-24.5Q562.5-444 562.5-480T538-540.5Q513.5-565 477.5-565T417-540.5Q392.5-516 392.5-480t24.5 60.5q24.5 24.5 60.49 24.5Zm3.01-85.5Z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#e8eaed"><path d="M462.5-146v-184.5h22v81.5h330v22h-330v81h-22ZM146-227v-22h190.5v22H146Zm168.5-161.5V-469H146v-22h168.5v-81h22v183.5h-22Zm148-80.5v-22h352v22h-352ZM624-631v-183.5h22v81h168.5v22H646v80.5h-22Zm-478-80.5v-22h352v22H146Z"/></svg>
spacr/test_gui.py DELETED
File without changes
@@ -1,126 +0,0 @@
1
- spacr/__init__.py,sha256=pJ7Mm7Kb1DhHIdLmNgMILFVWJ9QAG47pT0M6wtiXl8E,1465
2
- spacr/__main__.py,sha256=bkAJJD2kjIqOP-u1kLvct9jQQCeUXzlEjdgitwi1Lm8,75
3
- spacr/alpha.py,sha256=Y95sLEfpK2OSYKRn3M8eUOU33JJeXfV8zhrC4KnwSTY,35244
4
- spacr/annotate_app.py,sha256=imQ7ZEXDyM6ce1dxZ1xUS1-KequuF_NCI4xCaPLjvco,29275
5
- spacr/annotate_app_v2.py,sha256=imQ7ZEXDyM6ce1dxZ1xUS1-KequuF_NCI4xCaPLjvco,29275
6
- spacr/app_annotate.py,sha256=xA39bsgvrQlY8P22cUC7sAaw4O57tgZawZtsANmY0ek,2302
7
- spacr/app_classify.py,sha256=urTP_wlZ58hSyM5a19slYlBxN0PdC-9-ga0hvq8CGWc,165
8
- spacr/app_make_masks.py,sha256=pqDhRpluiHZz-kPX2Zh_KbYe4TsU43qYBa_7f-rsjpw,1694
9
- spacr/app_make_masks_v2.py,sha256=OkNeskNbgep8wQa4ES3jpJjZLfn4yIkGwQOd9r0spfA,30497
10
- spacr/app_mask.py,sha256=l-dBY8ftzCMdDe6-pXc2Nh_u-idNL9G7UOARiLJBtds,153
11
- spacr/app_measure.py,sha256=_K7APYIeOKpV6e_LcqabBjvEi7mfq9Fch8175x1x0k8,162
12
- spacr/app_sequencing.py,sha256=DjG26jy4cpddnV8WOOAIiExtOe9MleVMY4MFa5uTo5w,157
13
- spacr/app_umap.py,sha256=ZWAmf_OsIKbYvolYuWPMYhdlVe-n2CADoJulAizMiEo,153
14
- spacr/chris.py,sha256=YlBjSgeZaY8HPy6jkrT_ISAnCMAKVfvCxF0I9eAZLFM,2418
15
- spacr/classify_app.py,sha256=Zi15ryc1ocYitRF4kyxlC27XxGyzfSPdvj2d6ZrSh7E,8446
16
- spacr/cli.py,sha256=507jfOOEV8BoL4eeUcblvH-iiDHdBrEVJLu1ghAAPSc,1800
17
- spacr/core.py,sha256=wL6E1MMNrRyvyileqsTOnQ3lhABnw_L6O-4UApZGL84,160216
18
- spacr/deep_spacr.py,sha256=ASBsN4JpHp_3S-91JUsB34IWTjTGPYI7jKV2qZnUR5M,37005
19
- spacr/foldseek.py,sha256=YIP1d4Ci6CeA9jSyiv-HTDbNmAmcSM9Y_DaOs7wYzLY,33546
20
- spacr/get_alfafold_structures.py,sha256=ehx_MQgb12k3hFecP6cYVlm5TLO8iWjgevy8ESyS3cw,3544
21
- spacr/graph_learning.py,sha256=1tR-ZxvXE3dBz1Saw7BeVFcrsUFu9OlUZeZVifih9eo,13070
22
- spacr/gui.py,sha256=etiarQYeELx_zPRWH8hdrhtD_aVnuamnvrCOtUBO0kI,8322
23
- spacr/gui_2.py,sha256=OVRDbyHgoXCqGmTKt0C0ZQrJxTU4i-4eT2uYwk0w7CA,8322
24
- spacr/gui_annotate.py,sha256=ugBksLGOHdtOLlEuRyyc59TrkYKu3rDf8JxEgiBSVao,6536
25
- spacr/gui_classify_app.py,sha256=Zi15ryc1ocYitRF4kyxlC27XxGyzfSPdvj2d6ZrSh7E,8446
26
- spacr/gui_core.py,sha256=ay1IMMjcJLk8GeaXdL5rzu8xkJmpy_5XzqNhET_4SaI,33199
27
- spacr/gui_elements.py,sha256=1vw6of9GcRUcEzZBxte3U5K--owAR_UzPO0pUuoqfk8,79784
28
- spacr/gui_make_masks_app.py,sha256=tl4M4Q2WQgrrwjRBJVevxJxpNowqzPhWkdCOm2UfRbw,45053
29
- spacr/gui_make_masks_app_v2.py,sha256=X3izTBXdCZDlkVe-fbG-jmCQtcAbmK0OIivjyWaLhug,30576
30
- spacr/gui_mask_app.py,sha256=mhTl_XzXLFl8Tx3WYEMpdYB_qw9u5JJa0EdkvlcIzAE,10706
31
- spacr/gui_measure_app.py,sha256=_C1-XFL5HSquUEEbM_NcxdvHx-socPFCx85MBG4d6xo,10598
32
- spacr/gui_run.py,sha256=0x85MJqFtREuWuNeIRLB8hFeibKGszfN14POQQWzPDQ,1998
33
- spacr/gui_sim_app.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
- spacr/gui_utils.py,sha256=CuGB7rN_VCGu5FP9ZeBTrIYBzqQlylX-uszVyYcF0VM,13899
35
- spacr/gui_wrappers.py,sha256=-E1SFOmtp7_nfg9QzajI7GJcAcaMug92Pjw7pS1YzjY,4656
36
- spacr/io.py,sha256=f7cVn48wNUEj6Teky4p3ojoivAdMUmPll2s0MzJkKD0,112068
37
- spacr/logger.py,sha256=7Zqr3TuuOQLWT32gYr2q1qvv7x0a2JhLANmZcnBXAW8,670
38
- spacr/make_masks_app.py,sha256=iGaTwhowoe2JMOSOf8bJwQZTooRhLQx7KO0ewnAmqDY,45138
39
- spacr/make_masks_app_v2.py,sha256=X3izTBXdCZDlkVe-fbG-jmCQtcAbmK0OIivjyWaLhug,30576
40
- spacr/mask_app.py,sha256=mhTl_XzXLFl8Tx3WYEMpdYB_qw9u5JJa0EdkvlcIzAE,10706
41
- spacr/measure.py,sha256=RzcD8rsUaOZUYB-zcbaUZcJbrwT0IIW5G7qvb__SO-E,55616
42
- spacr/measure_app.py,sha256=_C1-XFL5HSquUEEbM_NcxdvHx-socPFCx85MBG4d6xo,10598
43
- spacr/old_code.py,sha256=jw67DAGoLBd7mWofVzRJSEmCI1Qrff26zIo65SEkV00,13817
44
- spacr/plot.py,sha256=DYJEoK1kz2ih6ZGvKiA3xTqeIeKQNhuQKwgrscopFxA,69101
45
- spacr/sequencing.py,sha256=fHZRnoMSxmhMdadkei3lUeBdckqFyptWdQyWsDW3aaU,83304
46
- spacr/settings.py,sha256=2fAyGl8lzkkpB3MJJoywo0hCEg9CjziLWkXF0Miv3mM,65569
47
- spacr/sim.py,sha256=FveaVgBi3eypO2oVB5Dx-v0CC1Ny7UPfXkJiiRRodAk,71212
48
- spacr/sim_app.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
- spacr/test_gui.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
- spacr/timelapse.py,sha256=KMYCgHzf9LTZe-lWl5mvH2EjbKRE6OhpwdY13wEumGc,39504
51
- spacr/utils.py,sha256=OQ8sSBH6VWx2xP_vh4ILJT71B46DFFhsq-Y6WxYdGhI,186891
52
- spacr/version.py,sha256=axH5tnGwtgSnJHb5IDhiu4Zjk5GhLyAEDRe-rnaoFOA,409
53
- spacr/icons/abort.png,sha256=3Bc1ZyPRDytlSd-i33WSoAVv3bw5lDFmraaB31pAc58,19368
54
- spacr/icons/abort.svg,sha256=_eJh4Nro9y_2UWQsnHAi4FgSlTnxlikvIWMFX1ClFYg,725
55
- spacr/icons/download.png,sha256=1nUoWRaTc4vIsK6gompdeqk0cIv2GdH-gCNHaEBX6Mc,20467
56
- spacr/icons/download.svg,sha256=CHEknYbhCobpqkXLiZL8AOCCZla50DcY_DghU9xCYRw,783
57
- spacr/icons/download_for_offline_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.png,sha256=1nUoWRaTc4vIsK6gompdeqk0cIv2GdH-gCNHaEBX6Mc,20467
58
- spacr/icons/download_for_offline_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.svg,sha256=CHEknYbhCobpqkXLiZL8AOCCZla50DcY_DghU9xCYRw,783
59
- spacr/icons/logo_spacr.png,sha256=g9y2ZmnV3hab8r1idDfytm8AaHbBiQdu_93Jd7YKzwA,610892
60
- spacr/icons/make_masks.png,sha256=TU_kBHnEO7f_z1JvDmWjJEiRAMeyXZCqRcmzbgt83Is,16129
61
- spacr/icons/make_masks.svg,sha256=uUAjnt3FJazbM9-iFptiV6iQkT3ziNgKfqXQ8RGYG9s,1355
62
- spacr/icons/map_barcodes.png,sha256=ED6yCopk3hP7tICSvT8U_qA1bOOb0WHqmxVkmRxnbtE,7896
63
- spacr/icons/map_barcodes.svg,sha256=9q3acYeZx9rjMmrNB_KJ4Bda6o63wtuZPxbSD97k1XA,290
64
- spacr/icons/mask.png,sha256=0EHDSySyQJ22OKl77b2ezLNSuUC5WeIvLKP7uR14PlQ,14352
65
- spacr/icons/mask.svg,sha256=HJu3T2BVjK8JV9aiJcP0Fey1K6niPY9Z43Y43pkRNbo,630
66
- spacr/icons/measure.png,sha256=43yFE9WcUuhvgqZau_U5ZmoP5_Abz-bBXqoJ31Em4I0,20620
67
- spacr/icons/measure.svg,sha256=xRb_SDKCwKVLI4OQioSsstTpcOLtvN9hiIHQk2VP-kc,630
68
- spacr/icons/play_circle_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.png,sha256=KoNhaSHukO4wDyivyYEgSbb5mGj-sAxmhKikLLtNpWs,20341
69
- spacr/icons/play_circle_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.svg,sha256=HJCoq_2QJ7OSE_VF_5QGLMN3m374U-LaR9f5DC8aCsw,726
70
- spacr/icons/run.png,sha256=KoNhaSHukO4wDyivyYEgSbb5mGj-sAxmhKikLLtNpWs,20341
71
- spacr/icons/run.svg,sha256=HJCoq_2QJ7OSE_VF_5QGLMN3m374U-LaR9f5DC8aCsw,726
72
- spacr/icons/sequencing.png,sha256=P9E_Y76ZysWMKst3_hAw-_4F510XPW1l1TsDElVzt4o,17775
73
- spacr/icons/sequencing.svg,sha256=fEdE8n7H4rdn818m7SZL24Fz9bKiROozFI1cCNDT_QI,853
74
- spacr/icons/settings.png,sha256=y5Ow5BxJDDsrqom0VNbOMDGGUs6odxbSMDy6y4r_F0w,22269
75
- spacr/icons/settings.svg,sha256=7H11s2jhauKZPw9lv_oF_lY_ug_HT4vGhLQ-cS-_Pbg,1087
76
- spacr/icons/settings_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.png,sha256=y5Ow5BxJDDsrqom0VNbOMDGGUs6odxbSMDy6y4r_F0w,22269
77
- spacr/icons/settings_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.svg,sha256=7H11s2jhauKZPw9lv_oF_lY_ug_HT4vGhLQ-cS-_Pbg,1087
78
- spacr/icons/stop_circle_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.png,sha256=3Bc1ZyPRDytlSd-i33WSoAVv3bw5lDFmraaB31pAc58,19368
79
- spacr/icons/stop_circle_100dp_E8EAED_FILL0_wght100_GRAD-25_opsz48.svg,sha256=_eJh4Nro9y_2UWQsnHAi4FgSlTnxlikvIWMFX1ClFYg,725
80
- spacr/icons/theater_comedy_100dp_E8EAED_FILL0_wght100_GRAD200_opsz48.png,sha256=TU_kBHnEO7f_z1JvDmWjJEiRAMeyXZCqRcmzbgt83Is,16129
81
- spacr/icons/theater_comedy_100dp_E8EAED_FILL0_wght100_GRAD200_opsz48.svg,sha256=uUAjnt3FJazbM9-iFptiV6iQkT3ziNgKfqXQ8RGYG9s,1355
82
- spacr/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model,sha256=z8BbHWZPRnE9D_BHO0fBREE85c1vkltDs-incs2ytXQ,26566572
83
- spacr/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model_settings.csv,sha256=fBAGuL_B8ERVdVizO3BHozTDSbZUh1yFzsYK3wkQN68,420
84
- spacr/models/cp/toxo_pv_lumen.CP_model,sha256=2y_CindYhmTvVwBH39SNILF3rI3x9SsRn6qrMxHy3l0,26562451
85
- spacr/resources/icons/abort.png,sha256=3Bc1ZyPRDytlSd-i33WSoAVv3bw5lDFmraaB31pAc58,19368
86
- spacr/resources/icons/abort.svg,sha256=_eJh4Nro9y_2UWQsnHAi4FgSlTnxlikvIWMFX1ClFYg,725
87
- spacr/resources/icons/annotate.png,sha256=GFgh7DiUMwPG_-xE6W1qU8V_qzSwBi1xKenfoaQxeFA,15495
88
- spacr/resources/icons/annotate.svg,sha256=1UazKLgDsgSNJQsCVET-rrCWh3qvOIIJ85rxkpUUy7w,914
89
- spacr/resources/icons/cellpose.png,sha256=HVWOIOBF8p3-On-2UahwMyQXp7awsoC5yWExU1ahDag,20271
90
- spacr/resources/icons/cellpose_masks.png,sha256=HVWOIOBF8p3-On-2UahwMyQXp7awsoC5yWExU1ahDag,20271
91
- spacr/resources/icons/classify.png,sha256=w-TRmxv37xFviU2xMUcmXRJIMR3QgVm0DyyMb6f6GBg,19129
92
- spacr/resources/icons/classify.svg,sha256=c1DKluvSTymHbMZmXFDow-h-eU7Fp7XsBYSBiuWZ_ME,790
93
- spacr/resources/icons/default.png,sha256=KoNhaSHukO4wDyivyYEgSbb5mGj-sAxmhKikLLtNpWs,20341
94
- spacr/resources/icons/download.png,sha256=1nUoWRaTc4vIsK6gompdeqk0cIv2GdH-gCNHaEBX6Mc,20467
95
- spacr/resources/icons/download.svg,sha256=CHEknYbhCobpqkXLiZL8AOCCZla50DcY_DghU9xCYRw,783
96
- spacr/resources/icons/icon.psd,sha256=2_ssRsjibi7mva40G_WPGp9J1XrIYOlf7OFt0AheH68,164400
97
- spacr/resources/icons/logo_spacr.png,sha256=g9y2ZmnV3hab8r1idDfytm8AaHbBiQdu_93Jd7YKzwA,610892
98
- spacr/resources/icons/make_masks.png,sha256=ZLAfqEPUZhh1yp9zNnfUpJYmCEaMZJ2hzHKac1_iaxY,17402
99
- spacr/resources/icons/make_masks.svg,sha256=bDKKHFz-HLX6v-Tb8FJcRwfVWOx2oEeRBtQG7PNcWZM,1022
100
- spacr/resources/icons/map_barcodes.png,sha256=ED6yCopk3hP7tICSvT8U_qA1bOOb0WHqmxVkmRxnbtE,7896
101
- spacr/resources/icons/map_barcodes.svg,sha256=9q3acYeZx9rjMmrNB_KJ4Bda6o63wtuZPxbSD97k1XA,290
102
- spacr/resources/icons/mask.png,sha256=0EHDSySyQJ22OKl77b2ezLNSuUC5WeIvLKP7uR14PlQ,14352
103
- spacr/resources/icons/mask.svg,sha256=HJu3T2BVjK8JV9aiJcP0Fey1K6niPY9Z43Y43pkRNbo,630
104
- spacr/resources/icons/measure.png,sha256=43yFE9WcUuhvgqZau_U5ZmoP5_Abz-bBXqoJ31Em4I0,20620
105
- spacr/resources/icons/measure.svg,sha256=xRb_SDKCwKVLI4OQioSsstTpcOLtvN9hiIHQk2VP-kc,630
106
- spacr/resources/icons/regression.png,sha256=_XWBGC7MDWoNlm90dPN_s4WGH_xxpC9m5R5Ua3ucXSg,14502
107
- spacr/resources/icons/run.png,sha256=By3x4bXA1PMakkYfwlD8WcG5EauX0PsDD7_FRRIkwHA,8986
108
- spacr/resources/icons/run.svg,sha256=lyb8y6V5AD86ncLz3iKIyHPdLiFt5Ch5PjwAQ7hrGAM,190
109
- spacr/resources/icons/run_2.png,sha256=KoNhaSHukO4wDyivyYEgSbb5mGj-sAxmhKikLLtNpWs,20341
110
- spacr/resources/icons/run_2.svg,sha256=HJCoq_2QJ7OSE_VF_5QGLMN3m374U-LaR9f5DC8aCsw,726
111
- spacr/resources/icons/sequencing.png,sha256=P9E_Y76ZysWMKst3_hAw-_4F510XPW1l1TsDElVzt4o,17775
112
- spacr/resources/icons/sequencing.svg,sha256=fEdE8n7H4rdn818m7SZL24Fz9bKiROozFI1cCNDT_QI,853
113
- spacr/resources/icons/settings.png,sha256=y5Ow5BxJDDsrqom0VNbOMDGGUs6odxbSMDy6y4r_F0w,22269
114
- spacr/resources/icons/settings.svg,sha256=7H11s2jhauKZPw9lv_oF_lY_ug_HT4vGhLQ-cS-_Pbg,1087
115
- spacr/resources/icons/train_cellpose.png,sha256=GAkaWVLkOzaUvJXKIT-hMcI7EFr4Qd18MIPt8YZIIsU,5811
116
- spacr/resources/icons/train_cellpose.svg,sha256=Qah2_o5NYdmlishzTeZqfy4mYbicKpu6mlrwzIyyQG0,341
117
- spacr/resources/icons/umap.png,sha256=2XvfWSYvLg85YPuPf3C5o8wNo7_ncg5v_GBsKwzRfCw,11042
118
- spacr/resources/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model,sha256=z8BbHWZPRnE9D_BHO0fBREE85c1vkltDs-incs2ytXQ,26566572
119
- spacr/resources/models/cp/toxo_plaque_cyto_e25000_X1120_Y1120.CP_model_settings.csv,sha256=fBAGuL_B8ERVdVizO3BHozTDSbZUh1yFzsYK3wkQN68,420
120
- spacr/resources/models/cp/toxo_pv_lumen.CP_model,sha256=2y_CindYhmTvVwBH39SNILF3rI3x9SsRn6qrMxHy3l0,26562451
121
- spacr-0.2.2.dist-info/LICENSE,sha256=SR-2MeGc6SCM1UORJYyarSWY_A-JaOMFDj7ReSs9tRM,1083
122
- spacr-0.2.2.dist-info/METADATA,sha256=DfgYpGaXumaUI-rBxM2mkOnU58Rno9FCLSkHDVugSt8,5049
123
- spacr-0.2.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
124
- spacr-0.2.2.dist-info/entry_points.txt,sha256=BMC0ql9aNNpv8lUZ8sgDLQMsqaVnX5L535gEhKUP5ho,296
125
- spacr-0.2.2.dist-info/top_level.txt,sha256=GJPU8FgwRXGzKeut6JopsSRY2R8T3i9lDgya42tLInY,6
126
- spacr-0.2.2.dist-info/RECORD,,
File without changes