small-fish-gui 2.1.2__py3-none-any.whl → 2.1.4__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.
- small_fish_gui/__init__.py +1 -1
- small_fish_gui/gui/napari_visualiser.py +4 -1
- small_fish_gui/pipeline/_colocalisation.py +34 -13
- small_fish_gui/pipeline/detection.py +11 -8
- small_fish_gui/pipeline/spots.py +25 -15
- {small_fish_gui-2.1.2.dist-info → small_fish_gui-2.1.4.dist-info}/METADATA +1 -1
- {small_fish_gui-2.1.2.dist-info → small_fish_gui-2.1.4.dist-info}/RECORD +9 -9
- {small_fish_gui-2.1.2.dist-info → small_fish_gui-2.1.4.dist-info}/WHEEL +0 -0
- {small_fish_gui-2.1.2.dist-info → small_fish_gui-2.1.4.dist-info}/licenses/LICENSE +0 -0
small_fish_gui/__init__.py
CHANGED
|
@@ -37,7 +37,7 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
37
37
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
38
38
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
39
39
|
"""
|
|
40
|
-
__version__ = "2.1.
|
|
40
|
+
__version__ = "2.1.4"
|
|
41
41
|
__wiki__ = "https://github.com/2Echoes/small_fish_gui/wiki"
|
|
42
42
|
|
|
43
43
|
import os, platform
|
|
@@ -309,7 +309,10 @@ def interactive_detection(
|
|
|
309
309
|
if dense_region_deconvolution : updated_parameters.update(dense_region_deconvolver.get_detection_parameters())
|
|
310
310
|
signal = Viewer.layers['raw signal'].data
|
|
311
311
|
|
|
312
|
-
spots
|
|
312
|
+
if 'decovoluted spots' in Viewer.layers :
|
|
313
|
+
spots = Viewer.layers['decovoluted spots'].data.astype(np.int32)
|
|
314
|
+
else :
|
|
315
|
+
spots = Viewer.layers['single spots'].data.astype(np.int32)
|
|
313
316
|
|
|
314
317
|
return spots, signal, updated_parameters
|
|
315
318
|
|
|
@@ -228,7 +228,7 @@ def _global_coloc(acquisition_id1,acquisition_id2, result_dataframe, colocalisat
|
|
|
228
228
|
- fraction_spot2_coloc_spots
|
|
229
229
|
|
|
230
230
|
"""
|
|
231
|
-
|
|
231
|
+
CLUSTER_KEY = "clustered_spots_coords"
|
|
232
232
|
acquisition1 = result_dataframe.loc[result_dataframe['acquisition_id'] == acquisition_id1]
|
|
233
233
|
acquisition2 = result_dataframe.loc[result_dataframe['acquisition_id'] == acquisition_id2]
|
|
234
234
|
|
|
@@ -259,7 +259,7 @@ def _global_coloc(acquisition_id1,acquisition_id2, result_dataframe, colocalisat
|
|
|
259
259
|
fraction_spots1_coloc_spots2 = np.nan
|
|
260
260
|
fraction_spots2_coloc_spots1 = np.nan
|
|
261
261
|
|
|
262
|
-
if
|
|
262
|
+
if CLUSTER_KEY in acquisition1.columns :
|
|
263
263
|
try :
|
|
264
264
|
clusters_id_1 = np.array(acquisition1.iloc[0].at['spots_cluster_id'], dtype=int)
|
|
265
265
|
fraction_spots2_coloc_cluster1 = spots_colocalisation(spot_list1=spots2, spot_list2=spots1[clusters_id_1 != -1], distance= colocalisation_distance, voxel_size=voxel_size) / spot2_total
|
|
@@ -272,7 +272,7 @@ def _global_coloc(acquisition_id1,acquisition_id2, result_dataframe, colocalisat
|
|
|
272
272
|
|
|
273
273
|
else : fraction_spots2_coloc_cluster1 = np.nan
|
|
274
274
|
|
|
275
|
-
if
|
|
275
|
+
if CLUSTER_KEY in acquisition2.columns :
|
|
276
276
|
try :
|
|
277
277
|
clusters_id_2 = np.array(acquisition2.iloc[0].at['spots_cluster_id'], dtype=int)
|
|
278
278
|
fraction_spots1_coloc_cluster2 = spots_colocalisation(spot_list1=spots1, spot_list2=spots2[clusters_id_2 != -1], distance= colocalisation_distance, voxel_size=voxel_size) / spot1_total
|
|
@@ -285,7 +285,7 @@ def _global_coloc(acquisition_id1,acquisition_id2, result_dataframe, colocalisat
|
|
|
285
285
|
|
|
286
286
|
else : fraction_spots1_coloc_cluster2 = np.nan
|
|
287
287
|
|
|
288
|
-
if
|
|
288
|
+
if CLUSTER_KEY in acquisition2.columns and CLUSTER_KEY in acquisition1.columns :
|
|
289
289
|
try :
|
|
290
290
|
total_clustered_spots1 = len(spots1[clusters_id_1 != -1])
|
|
291
291
|
total_clustered_spots2 = len(spots2[clusters_id_2 != -1])
|
|
@@ -340,6 +340,8 @@ def _cell_coloc(
|
|
|
340
340
|
|
|
341
341
|
acquisition1 = result_dataframe.loc[result_dataframe['acquisition_id'] == acquisition_id1]
|
|
342
342
|
acquisition2 = result_dataframe.loc[result_dataframe['acquisition_id'] == acquisition_id2]
|
|
343
|
+
has_clusters_1 = "clustered_spots_coords" in acquisition1.columns or "clusters" in acquisition1.columns
|
|
344
|
+
has_clusters_2 = "clustered_spots_coords" in acquisition2.columns or "clusters" in acquisition2.columns
|
|
343
345
|
|
|
344
346
|
acquisition_name_id1 = acquisition1['name'].iat[0]
|
|
345
347
|
acquisition_name_id2 = acquisition2['name'].iat[0]
|
|
@@ -357,14 +359,22 @@ def _cell_coloc(
|
|
|
357
359
|
|
|
358
360
|
#Putting spots lists in 2 cols for corresponding cells
|
|
359
361
|
pivot_values_columns = ['rna_coords', 'total_rna_number']
|
|
360
|
-
if
|
|
362
|
+
if has_clusters_1 or has_clusters_2 :
|
|
361
363
|
pivot_values_columns.extend(['clustered_spots_coords','clustered_spot_number'])
|
|
362
364
|
cell_dataframe.loc[:,['cell_id']] = cell_dataframe['cell_id'].astype(int)
|
|
365
|
+
|
|
366
|
+
if has_clusters_1 or has_clusters_2 :
|
|
367
|
+
target_column = "clustered_spots_coords"
|
|
368
|
+
target_mask = cell_dataframe.loc[:, target_column].apply(len) == 0
|
|
369
|
+
cell_dataframe.loc[target_mask,target_column] = pd.Series([np.empty(shape=(0,3), dtype=int)]* sum(target_mask), dtype=object)
|
|
370
|
+
|
|
363
371
|
colocalisation_df = cell_dataframe.pivot(
|
|
364
372
|
columns=['name', 'acquisition_id'],
|
|
365
373
|
values= pivot_values_columns,
|
|
366
374
|
index= 'cell_id'
|
|
367
375
|
)
|
|
376
|
+
colocalisation_df = colocalisation_df.dropna(axis=0)
|
|
377
|
+
|
|
368
378
|
#spots _vs spots
|
|
369
379
|
colocalisation_df[("spots_with_spots_count",coloc_name_forward,"forward")] = colocalisation_df['rna_coords'].apply(
|
|
370
380
|
lambda x: spots_colocalisation(
|
|
@@ -386,8 +396,9 @@ def _cell_coloc(
|
|
|
386
396
|
)
|
|
387
397
|
colocalisation_df[("spots_with_spots_fraction",coloc_name_backward,"backward")] = colocalisation_df[("spots_with_spots_count",coloc_name_backward,"backward")].astype(float) / colocalisation_df[('total_rna_number',acquisition_name_id2,acquisition_id2)].astype(float)
|
|
388
398
|
|
|
389
|
-
if
|
|
390
|
-
if
|
|
399
|
+
if has_clusters_2:
|
|
400
|
+
CLUSTER_KEY2 = "clustered_spots_coords" if "clustered_spots_coords" in acquisition2.columns else "clusters"
|
|
401
|
+
if len(acquisition2[CLUSTER_KEY2].iat[0]) > 0 :
|
|
391
402
|
|
|
392
403
|
#spots to clusters
|
|
393
404
|
colocalisation_df[("spots_with_clustered_spots_count",coloc_name_forward,"forward")] = colocalisation_df.apply(
|
|
@@ -400,8 +411,9 @@ def _cell_coloc(
|
|
|
400
411
|
)
|
|
401
412
|
colocalisation_df[("spots_with_clustered_spots_fraction",coloc_name_forward,"forward")] = colocalisation_df[("spots_with_clustered_spots_count",coloc_name_forward,"forward")].astype(float) / colocalisation_df[('total_rna_number',acquisition_name_id1,acquisition_id1)].astype(float)
|
|
402
413
|
|
|
403
|
-
if
|
|
404
|
-
if
|
|
414
|
+
if has_clusters_1:
|
|
415
|
+
CLUSTER_KEY1 = "clustered_spots_coords" if "clustered_spots_coords" in acquisition1.columns else "clusters"
|
|
416
|
+
if len(acquisition1[CLUSTER_KEY1].iat[0]) > 0 :
|
|
405
417
|
colocalisation_df[("spots_with_clustered_spots_count",coloc_name_backward,"backward")] = colocalisation_df.apply(
|
|
406
418
|
lambda x: spots_colocalisation(
|
|
407
419
|
spot_list1= x[('rna_coords',acquisition_name_id2,acquisition_id2)],
|
|
@@ -413,8 +425,9 @@ def _cell_coloc(
|
|
|
413
425
|
|
|
414
426
|
colocalisation_df[("spots_with_clustered_spots_fraction",coloc_name_backward,"backward")] = colocalisation_df[("spots_with_clustered_spots_count",coloc_name_backward,"backward")].astype(float) / colocalisation_df[('total_rna_number',acquisition_name_id2,acquisition_id2)].astype(float)
|
|
415
427
|
|
|
416
|
-
if
|
|
417
|
-
|
|
428
|
+
if has_clusters_1 and has_clusters_2:
|
|
429
|
+
|
|
430
|
+
if len(acquisition1[CLUSTER_KEY1].iat[0]) > 0 and len(acquisition2[CLUSTER_KEY2].iat[0]) > 0 :
|
|
418
431
|
#clusters to clusters
|
|
419
432
|
colocalisation_df[("clustered_spots_with_clustered_spots_count",coloc_name_forward,"forward")] = colocalisation_df.apply(
|
|
420
433
|
lambda x: spots_colocalisation(
|
|
@@ -438,7 +451,7 @@ def _cell_coloc(
|
|
|
438
451
|
|
|
439
452
|
colocalisation_df = colocalisation_df.sort_index(axis=0).sort_index(axis=1, level=0)
|
|
440
453
|
|
|
441
|
-
if 'clustered_spots_coords' in
|
|
454
|
+
if 'clustered_spots_coords' in colocalisation_df.columns : colocalisation_df = colocalisation_df.drop('clustered_spots_coords', axis=1)
|
|
442
455
|
colocalisation_df = colocalisation_df.drop('rna_coords', axis=1)
|
|
443
456
|
colocalisation_df['voxel_size'] = [voxel_size]*len(colocalisation_df)
|
|
444
457
|
colocalisation_df['pair_name'] = [(acquisition_name_id1, acquisition_name_id2)] * len(colocalisation_df)
|
|
@@ -449,11 +462,19 @@ def _cell_coloc(
|
|
|
449
462
|
return colocalisation_df
|
|
450
463
|
|
|
451
464
|
@add_default_loading
|
|
452
|
-
def launch_colocalisation(
|
|
465
|
+
def launch_colocalisation(
|
|
466
|
+
acquisition_id1 : int,
|
|
467
|
+
acquisition_id2 : int,
|
|
468
|
+
result_dataframe : pd.DataFrame,
|
|
469
|
+
cell_result_dataframe : pd.DataFrame,
|
|
470
|
+
colocalisation_distance : pd.DataFrame,
|
|
471
|
+
global_coloc_df : pd.DataFrame,
|
|
472
|
+
cell_coloc_df: dict) :
|
|
453
473
|
|
|
454
474
|
|
|
455
475
|
if acquisition_id1 in list(cell_result_dataframe['acquisition_id']) and acquisition_id2 in list(cell_result_dataframe['acquisition_id']) :
|
|
456
476
|
print("Launching cell to cell colocalisation.")
|
|
477
|
+
|
|
457
478
|
new_coloc = _cell_coloc(
|
|
458
479
|
acquisition_id1 = acquisition_id1,
|
|
459
480
|
acquisition_id2 = acquisition_id2,
|
|
@@ -213,23 +213,26 @@ def initiate_detection(user_parameters : pipeline_parameters, map_, shape) :
|
|
|
213
213
|
#Attempt to read voxel size from metadata
|
|
214
214
|
voxel_size = get_voxel_size(user_parameters['image_path'])
|
|
215
215
|
if voxel_size is None :
|
|
216
|
-
if
|
|
217
|
-
pass
|
|
218
|
-
else :
|
|
216
|
+
if user_parameters.get('voxel_size') is None:
|
|
219
217
|
detection_parameters['voxel_size_z'] = None
|
|
220
218
|
detection_parameters['voxel_size_y'] = None
|
|
221
219
|
detection_parameters['voxel_size_x'] = None
|
|
220
|
+
else :
|
|
221
|
+
if is_3D_stack : detection_parameters['voxel_size_z'] = user_parameters.get['voxel_size'][0]
|
|
222
|
+
detection_parameters['voxel_size_y'] = user_parameters.get['voxel_size'][0 + is_3D_stack]
|
|
223
|
+
detection_parameters['voxel_size_x'] = user_parameters.get['voxel_size'][1 + is_3D_stack]
|
|
224
|
+
|
|
222
225
|
else :
|
|
223
226
|
detection_parameters['voxel_size'] = [round(v) if isinstance(v, (float,int)) else None for v in voxel_size]
|
|
224
|
-
detection_parameters['voxel_size_z'] = detection_parameters['voxel_size'][0] if isinstance(detection_parameters
|
|
225
|
-
detection_parameters['voxel_size_y'] = detection_parameters['voxel_size'][
|
|
226
|
-
detection_parameters['voxel_size_x'] = detection_parameters['voxel_size'][
|
|
227
|
+
detection_parameters['voxel_size_z'] = detection_parameters['voxel_size'][0] if isinstance(detection_parameters.get('voxel_size')[0], (float,int)) else None
|
|
228
|
+
detection_parameters['voxel_size_y'] = detection_parameters['voxel_size'][0 + is_3D_stack] if isinstance(detection_parameters.get('voxel_size')[0 + is_3D_stack], (float,int)) else None
|
|
229
|
+
detection_parameters['voxel_size_x'] = detection_parameters['voxel_size'][1 + is_3D_stack] if isinstance(detection_parameters.get('voxel_size')[1 + is_3D_stack], (float,int)) else None
|
|
227
230
|
|
|
228
231
|
#Setting default spot size to 1.5 voxel
|
|
229
232
|
if detection_parameters.get('spot_size') is None and not detection_parameters.get('voxel_size') is None:
|
|
230
233
|
detection_parameters['spot_size_z'] = round(detection_parameters['voxel_size_z']*1.5) if isinstance(detection_parameters.get('voxel_size_z'), (float,int)) else None
|
|
231
|
-
detection_parameters['spot_size_y'] = round(detection_parameters['voxel_size_y']*1.5) if isinstance(detection_parameters
|
|
232
|
-
detection_parameters['spot_size_x'] = round(detection_parameters['voxel_size_x']*1.5) if isinstance(detection_parameters
|
|
234
|
+
detection_parameters['spot_size_y'] = round(detection_parameters['voxel_size_y']*1.5) if isinstance(detection_parameters.get('voxel_size_y'),(float,int)) else None
|
|
235
|
+
detection_parameters['spot_size_x'] = round(detection_parameters['voxel_size_x']*1.5) if isinstance(detection_parameters.get('voxel_size_x'),(float,int)) else None
|
|
233
236
|
|
|
234
237
|
while True :
|
|
235
238
|
detection_parameters = detection_parameters_promt(
|
small_fish_gui/pipeline/spots.py
CHANGED
|
@@ -60,6 +60,17 @@ def compute_Spots(
|
|
|
60
60
|
else :
|
|
61
61
|
in_nuc_list = np.nan
|
|
62
62
|
if type(cell_label) != type(None) :
|
|
63
|
+
|
|
64
|
+
# Collect all labels that are on fov edge
|
|
65
|
+
on_edge_labels = np.unique(
|
|
66
|
+
np.concatenate([
|
|
67
|
+
cell_label[:,0],
|
|
68
|
+
cell_label[:,-1],
|
|
69
|
+
cell_label[0,:],
|
|
70
|
+
cell_label[-1,:],
|
|
71
|
+
])
|
|
72
|
+
).astype(int)
|
|
73
|
+
|
|
63
74
|
if cell_label.ndim == 3 :
|
|
64
75
|
cell_label_list = list(cell_label[index])
|
|
65
76
|
else :
|
|
@@ -79,6 +90,10 @@ def compute_Spots(
|
|
|
79
90
|
'coordinates' : coord_list,
|
|
80
91
|
'cluster_id' : cluster_id,
|
|
81
92
|
})
|
|
93
|
+
|
|
94
|
+
if type(cell_label) != type(None) : #Filter on edge cells
|
|
95
|
+
target_index = Spots.loc[Spots["cell_label"].isin(on_edge_labels)].index
|
|
96
|
+
Spots.loc[target_index,["cell_label"]] = 0
|
|
82
97
|
|
|
83
98
|
return Spots
|
|
84
99
|
|
|
@@ -115,16 +130,6 @@ def reconstruct_acquisition_data(
|
|
|
115
130
|
) -> pd.DataFrame:
|
|
116
131
|
"""
|
|
117
132
|
Aim : creating a acquisition to add to result_dataframe from loaded spots for co-localization use
|
|
118
|
-
|
|
119
|
-
**Needed keys for colocalization**
|
|
120
|
-
* acquisition_id
|
|
121
|
-
* name
|
|
122
|
-
* spots : np.ndarray[int] (nb_spots, nb_coordinates)
|
|
123
|
-
* clusters : np.ndarray[int] (nb_cluster, nb_coordinate + 2)
|
|
124
|
-
* spots_cluster_id : list[int]
|
|
125
|
-
* voxel_size : tuple[int]
|
|
126
|
-
* shape : tuple[int]
|
|
127
|
-
* filename : str
|
|
128
133
|
"""
|
|
129
134
|
max_id = int(max_id)
|
|
130
135
|
spots = reconstruct_spots(Spots['coordinates'])
|
|
@@ -133,15 +138,17 @@ def reconstruct_acquisition_data(
|
|
|
133
138
|
|
|
134
139
|
if has_clusters :
|
|
135
140
|
|
|
136
|
-
clusters = np.empty(shape=(0,5), dtype=int)
|
|
137
|
-
spot_cluster_id = Spots['cluster_id'].to_numpy().astype(int)
|
|
141
|
+
clusters = np.empty(shape=(0,5), dtype=int)
|
|
142
|
+
spot_cluster_id = Spots['cluster_id'].to_numpy().astype(int)
|
|
143
|
+
clustered_spots = spots[spot_cluster_id != -1]
|
|
138
144
|
|
|
139
145
|
new_acquisition = pd.DataFrame({
|
|
140
146
|
'acquisition_id' : [max_id + 1],
|
|
141
147
|
'name' : ["(loaded_spots)_{}".format(filename.split('.', maxsplit=1)[0])],
|
|
142
148
|
'threshold' : [0],
|
|
143
149
|
'spots' : [spots],
|
|
144
|
-
'clusters' : [clusters],
|
|
150
|
+
'clusters' : [clusters.tolist()],
|
|
151
|
+
'clustered_spots_coords' : [clustered_spots.tolist()],
|
|
145
152
|
'spots_cluster_id' : [spot_cluster_id],
|
|
146
153
|
'spot_number' : [spot_number],
|
|
147
154
|
'filename' : [filename],
|
|
@@ -158,6 +165,7 @@ def reconstruct_acquisition_data(
|
|
|
158
165
|
'voxel_size' : [voxel_size],
|
|
159
166
|
})
|
|
160
167
|
|
|
168
|
+
|
|
161
169
|
return new_acquisition
|
|
162
170
|
|
|
163
171
|
def reconstruct_spots(
|
|
@@ -178,23 +186,25 @@ def reconstruct_cell_data(
|
|
|
178
186
|
) :
|
|
179
187
|
|
|
180
188
|
has_cluster = not Spots['cluster_id'].isna().all()
|
|
189
|
+
if 'cell_label' in Spots.columns : Spots = Spots.loc[Spots["cell_label"] !=0]
|
|
181
190
|
coordinates = reconstruct_spots(Spots['coordinates'])
|
|
182
|
-
Spots['coordinates'] = pd.Series(coordinates.tolist(), dtype=object, index= Spots.index)
|
|
191
|
+
Spots.loc[:,['coordinates']] = pd.Series(coordinates.tolist(), dtype=object, index= Spots.index)
|
|
183
192
|
|
|
184
193
|
cell = Spots.groupby('cell_label')['coordinates'].apply(np.array).rename("rna_coords").reset_index(drop=False)
|
|
185
194
|
|
|
186
195
|
#Handle cells with no spots
|
|
187
196
|
na_mask =cell[cell['rna_coords'].isna()].index
|
|
188
197
|
cell.loc[na_mask, ['rna_coords']] = pd.Series([np.empty(shape=(0,3))]*len(na_mask), dtype= object, index=na_mask)
|
|
198
|
+
cell.loc[~na_mask, "rna_coords"] = cell.loc[~na_mask, "rna_coords"].apply(list).apply(np.array)
|
|
189
199
|
|
|
190
200
|
cell['total_rna_number'] = cell['rna_coords'].apply(len)
|
|
191
|
-
|
|
192
201
|
if has_cluster :
|
|
193
202
|
cell['clustered_spots_coords'] = Spots[Spots['cluster_id'] !=-1].groupby('cell_label')['coordinates'].apply(np.array).rename("clustered_spots_coords")
|
|
194
203
|
|
|
195
204
|
#Handle cells with no clusters
|
|
196
205
|
na_mask =cell[cell['clustered_spots_coords'].isna()].index
|
|
197
206
|
cell.loc[na_mask, ['clustered_spots_coords']] = pd.Series([np.empty(shape=(0,3))]*len(na_mask), dtype= object, index=na_mask)
|
|
207
|
+
cell["clustered_spots_coords"] = cell["clustered_spots_coords"].apply(list).apply(np.array)
|
|
198
208
|
|
|
199
209
|
cell['clustered_spot_number'] = cell['clustered_spots_coords'].apply(len)
|
|
200
210
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: small_fish_gui
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.4
|
|
4
4
|
Summary: Small Fish is a python application for the analysis of smFish images. It provides a ready to use graphical interface to combine famous python packages for cell analysis without any need for coding.
|
|
5
5
|
Project-URL: Homepage, https://github.com/SmallFishGUI/small_fish_gui
|
|
6
6
|
Project-URL: Wiki, https://github.com/SmallFishGUI/small_fish_gui/wiki
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
small_fish_gui/__init__.py,sha256=
|
|
1
|
+
small_fish_gui/__init__.py,sha256=RhdSeAF9XtPM-QArrG71J9oJeFkP8qVJLGLuDyVG9BQ,2163
|
|
2
2
|
small_fish_gui/__main__.py,sha256=xwpFMDuo0kkYvPamyhlTHJ68bymDfbRpPzKy3SKwezY,1639
|
|
3
3
|
small_fish_gui/hints.py,sha256=NEKqCbjXF3guHnc1dzq_LYYGlTxIV6z6wtdwVlmgHos,3349
|
|
4
4
|
small_fish_gui/main_menu.py,sha256=z0ZlidWNGHLYYnBx2Z1i2IX_EGQr-HtIlsOQl-yTw4o,6273
|
|
@@ -16,7 +16,7 @@ small_fish_gui/gui/__init__.py,sha256=idpRSg2FFawF0ydfc7Y8ep6gQ4_jhroL_jZURlRE_B
|
|
|
16
16
|
small_fish_gui/gui/_napari_widgets.py,sha256=9gfikNMLZmeWY9tosD19aGmw4Ulf-BMo8erehJ4KU1k,35321
|
|
17
17
|
small_fish_gui/gui/animation.py,sha256=MnYsA1kxQZ72L_H0knxOs41lG0ZZv1re7gSgYNmZY00,983
|
|
18
18
|
small_fish_gui/gui/layout.py,sha256=72RZI4Vt5WwZH9cx8SfOCWsZox0udG3Ck3YE_c-aiQ4,30927
|
|
19
|
-
small_fish_gui/gui/napari_visualiser.py,sha256=
|
|
19
|
+
small_fish_gui/gui/napari_visualiser.py,sha256=eU2kqp16EHA3NwbGFBZAiTOiAI_K4zbnMOCtbW4fNuM,14978
|
|
20
20
|
small_fish_gui/gui/prompts.py,sha256=vWLLJZ7jdYIbjT71qHGiE1o9-pTrc607shnKW6EZi8I,18361
|
|
21
21
|
small_fish_gui/gui/testing.ipynb,sha256=2E51kT3BcXvOvOSdmYIy4Cxbe-4HtnOjzPTZQHDZJJw,69148
|
|
22
22
|
small_fish_gui/gui/theme.py,sha256=30nujS48ZRdD1HVbzdEBkiAWlhow1AGgXSQNZcGEsaQ,118
|
|
@@ -31,16 +31,16 @@ small_fish_gui/interface/testing.py,sha256=AUdqmFJ6kBvFTOLRfZZJBBe3nm1key2bGpUDX
|
|
|
31
31
|
small_fish_gui/interface/user_settings.py,sha256=vMpj-s9tzMKQy1CdJ3SO-6yAknU-ZIMT0RZQs8WAGPY,2620
|
|
32
32
|
small_fish_gui/pipeline/__init__.py,sha256=Oww6dcuvnktl5jFKLriz8ZXObKo9MkneE739A8C1reY,739
|
|
33
33
|
small_fish_gui/pipeline/_bigfish_wrapers.py,sha256=WcIu5HLc4bUuU8qmsINP5snXef3Tx9zJDNKES-SiftA,9776
|
|
34
|
-
small_fish_gui/pipeline/_colocalisation.py,sha256=
|
|
34
|
+
small_fish_gui/pipeline/_colocalisation.py,sha256=IEH7_okSG5Wfm7rBxudtKwCti_Op3mP-XXLUkDD08k4,22789
|
|
35
35
|
small_fish_gui/pipeline/_custom_errors.py,sha256=tQ-AUhgzIFpK30AZiQQrtHCHyGVRDdAoIjzL0Fk-1pA,43
|
|
36
36
|
small_fish_gui/pipeline/_preprocess.py,sha256=zfwhNoAUkVv1TYlyffNQkSTitMXTDokADabBeHuB58U,15766
|
|
37
37
|
small_fish_gui/pipeline/actions.py,sha256=dtRCf_UKg-Y9uV1jCBeASeuR7-pZ8dHVEYHs7MW-0pg,21263
|
|
38
|
-
small_fish_gui/pipeline/detection.py,sha256=
|
|
38
|
+
small_fish_gui/pipeline/detection.py,sha256=JOvk1fuJT2EudfqSVAc5iwIwns7OUo0n5o4vxgiVJUI,36353
|
|
39
39
|
small_fish_gui/pipeline/segmentation.py,sha256=m9XW8XiWCSpGFdi6It6RkeDYTiKtNhfj30kUSBG8pNo,32023
|
|
40
|
-
small_fish_gui/pipeline/spots.py,sha256=
|
|
40
|
+
small_fish_gui/pipeline/spots.py,sha256=oW8TVJK16K_LK_fpG_9GnCTCVCzmfedaGZswyboq2MI,7328
|
|
41
41
|
small_fish_gui/pipeline/test.py,sha256=w4ZMGDmUDXxVgWTlZ2TKw19W8q5gcE9gLMKe0SWnRrw,2827
|
|
42
42
|
small_fish_gui/pipeline/utils.py,sha256=dYV7WAJ375xM5RdaljjxeKvBC1niQvBl1E55SeIiIYo,563
|
|
43
|
-
small_fish_gui-2.1.
|
|
44
|
-
small_fish_gui-2.1.
|
|
45
|
-
small_fish_gui-2.1.
|
|
46
|
-
small_fish_gui-2.1.
|
|
43
|
+
small_fish_gui-2.1.4.dist-info/METADATA,sha256=F6zA2y4gOIPJm3SMChUUl0PHTGoc5ZHwJe_7rrVF0hk,6553
|
|
44
|
+
small_fish_gui-2.1.4.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
45
|
+
small_fish_gui-2.1.4.dist-info/licenses/LICENSE,sha256=-iFy8VGBYs5VsHglKpk4D-hxqQ2jMJaqmfq_ulIzDks,1303
|
|
46
|
+
small_fish_gui-2.1.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|