microlive 1.0.24__py3-none-any.whl → 1.0.25__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.
- microlive/__init__.py +1 -1
- microlive/gui/app.py +34 -10
- {microlive-1.0.24.dist-info → microlive-1.0.25.dist-info}/METADATA +1 -1
- {microlive-1.0.24.dist-info → microlive-1.0.25.dist-info}/RECORD +7 -7
- {microlive-1.0.24.dist-info → microlive-1.0.25.dist-info}/WHEEL +0 -0
- {microlive-1.0.24.dist-info → microlive-1.0.25.dist-info}/entry_points.txt +0 -0
- {microlive-1.0.24.dist-info → microlive-1.0.25.dist-info}/licenses/LICENSE +0 -0
microlive/__init__.py
CHANGED
|
@@ -23,7 +23,7 @@ Authors:
|
|
|
23
23
|
Nathan L. Nowling, Brian Munsky, Ning Zhao
|
|
24
24
|
"""
|
|
25
25
|
|
|
26
|
-
__version__ = "1.0.
|
|
26
|
+
__version__ = "1.0.25"
|
|
27
27
|
__author__ = "Luis U. Aguilera, William S. Raymond, Rhiannon M. Sears, Nathan L. Nowling, Brian Munsky, Ning Zhao"
|
|
28
28
|
|
|
29
29
|
# Package name (for backward compatibility)
|
microlive/gui/app.py
CHANGED
|
@@ -3405,6 +3405,13 @@ class GUI(QMainWindow):
|
|
|
3405
3405
|
except Exception:
|
|
3406
3406
|
pass
|
|
3407
3407
|
|
|
3408
|
+
# Clear any existing mask from other segmentation methods (e.g., watershed)
|
|
3409
|
+
# This ensures the user starts with a clean canvas for manual drawing
|
|
3410
|
+
current_mode = getattr(self, 'segmentation_mode', None)
|
|
3411
|
+
if current_mode != 'manual' and self.segmentation_mask is not None:
|
|
3412
|
+
self.segmentation_mask = None
|
|
3413
|
+
self._original_watershed_mask = None # Also clear the watershed backup
|
|
3414
|
+
|
|
3408
3415
|
# Connect click handler for polygon vertices
|
|
3409
3416
|
self.cid_manual = self.canvas_segmentation.mpl_connect(
|
|
3410
3417
|
'button_press_event', self.on_polygon_click
|
|
@@ -6380,7 +6387,7 @@ class GUI(QMainWindow):
|
|
|
6380
6387
|
|
|
6381
6388
|
self.cellpose_cyto_diameter_input = QDoubleSpinBox()
|
|
6382
6389
|
self.cellpose_cyto_diameter_input.setRange(0, 1000)
|
|
6383
|
-
self.cellpose_cyto_diameter_input.setValue(
|
|
6390
|
+
self.cellpose_cyto_diameter_input.setValue(350)
|
|
6384
6391
|
cyto_layout.addRow("Diameter (px):", self.cellpose_cyto_diameter_input)
|
|
6385
6392
|
|
|
6386
6393
|
self.chk_optimize_cyto = QCheckBox("Optimize Parameters")
|
|
@@ -9665,11 +9672,8 @@ class GUI(QMainWindow):
|
|
|
9665
9672
|
self.display_correlation_plot()
|
|
9666
9673
|
self.channels_spots = [self.current_channel]
|
|
9667
9674
|
self.populate_colocalization_channels()
|
|
9668
|
-
#
|
|
9669
|
-
|
|
9670
|
-
self.verify_visual_scroll_area.setWidget(QWidget())
|
|
9671
|
-
if hasattr(self, 'verify_distance_scroll_area'):
|
|
9672
|
-
self.verify_distance_scroll_area.setWidget(QWidget())
|
|
9675
|
+
# Note: Verification subtabs (Verify Visual, Verify Distance) are already
|
|
9676
|
+
# reset at the start of perform_particle_tracking() via reset_colocalization_tab()
|
|
9673
9677
|
self.MIN_FRAMES_MSD = 20
|
|
9674
9678
|
self.MIN_PARTICLES_MSD = 10
|
|
9675
9679
|
|
|
@@ -11778,7 +11782,7 @@ class GUI(QMainWindow):
|
|
|
11778
11782
|
num_z = image.shape[1]
|
|
11779
11783
|
max_proj = np.max(image, axis=1, keepdims=True)
|
|
11780
11784
|
image = np.repeat(max_proj, num_z, axis=1)
|
|
11781
|
-
crop_size = int(self.yx_spot_size_in_px) +
|
|
11785
|
+
crop_size = int(self.yx_spot_size_in_px) + 7
|
|
11782
11786
|
if crop_size % 2 == 0:
|
|
11783
11787
|
crop_size += 1
|
|
11784
11788
|
|
|
@@ -12326,6 +12330,22 @@ class GUI(QMainWindow):
|
|
|
12326
12330
|
self.dist_coloc_zoom_label.setText("🔍 Full View")
|
|
12327
12331
|
self.dist_coloc_zoom_label.setStyleSheet("color: #888888; font-size: 10px;")
|
|
12328
12332
|
|
|
12333
|
+
# === Reset Verify Visual sub-tab ===
|
|
12334
|
+
if hasattr(self, 'verify_visual_scroll_area'):
|
|
12335
|
+
self.verify_visual_scroll_area.setWidget(QWidget())
|
|
12336
|
+
if hasattr(self, 'verify_visual_checkboxes'):
|
|
12337
|
+
self.verify_visual_checkboxes = []
|
|
12338
|
+
if hasattr(self, 'verify_visual_stats_label'):
|
|
12339
|
+
self.verify_visual_stats_label.setText("Run Visual colocalization first, then click Populate")
|
|
12340
|
+
|
|
12341
|
+
# === Reset Verify Distance sub-tab ===
|
|
12342
|
+
if hasattr(self, 'verify_distance_scroll_area'):
|
|
12343
|
+
self.verify_distance_scroll_area.setWidget(QWidget())
|
|
12344
|
+
if hasattr(self, 'verify_distance_checkboxes'):
|
|
12345
|
+
self.verify_distance_checkboxes = []
|
|
12346
|
+
if hasattr(self, 'verify_distance_stats_label'):
|
|
12347
|
+
self.verify_distance_stats_label.setText("Run Distance colocalization first, then click Populate")
|
|
12348
|
+
|
|
12329
12349
|
# === Reset Manual Verify sub-tab ===
|
|
12330
12350
|
self.reset_manual_colocalization()
|
|
12331
12351
|
|
|
@@ -13937,7 +13957,7 @@ class GUI(QMainWindow):
|
|
|
13937
13957
|
return
|
|
13938
13958
|
|
|
13939
13959
|
# Create crops and determine colocalization status
|
|
13940
|
-
crop_size = int(getattr(self, 'yx_spot_size_in_px', 5)) +
|
|
13960
|
+
crop_size = int(getattr(self, 'yx_spot_size_in_px', 5)) + 7
|
|
13941
13961
|
if crop_size % 2 == 0:
|
|
13942
13962
|
crop_size += 1
|
|
13943
13963
|
|
|
@@ -14220,9 +14240,13 @@ class GUI(QMainWindow):
|
|
|
14220
14240
|
for ch_idx, ch in enumerate(channels[:2]):
|
|
14221
14241
|
if ch < crop_block.shape[-1]:
|
|
14222
14242
|
channel_crop = crop_block[:, :, ch]
|
|
14223
|
-
|
|
14243
|
+
# Use 1st-99th percentile for normalization to reduce noise amplification
|
|
14244
|
+
cmin = np.nanpercentile(channel_crop, 1)
|
|
14245
|
+
cmax = np.nanpercentile(channel_crop, 99)
|
|
14224
14246
|
if cmax > cmin:
|
|
14225
|
-
|
|
14247
|
+
# Clip values outside the percentile range
|
|
14248
|
+
clipped = np.clip(channel_crop, cmin, cmax)
|
|
14249
|
+
norm = ((clipped - cmin) / (cmax - cmin) * 255).astype(np.uint8)
|
|
14226
14250
|
else:
|
|
14227
14251
|
norm = np.zeros_like(channel_crop, np.uint8)
|
|
14228
14252
|
h, w = norm.shape
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: microlive
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.25
|
|
4
4
|
Summary: Live-cell microscopy image analysis and single-molecule measurements
|
|
5
5
|
Project-URL: Homepage, https://github.com/ningzhaoAnschutz/microlive
|
|
6
6
|
Project-URL: Documentation, https://github.com/ningzhaoAnschutz/microlive/blob/main/docs/user_guide.md
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
microlive/__init__.py,sha256
|
|
1
|
+
microlive/__init__.py,sha256=JW-O7uWXCYdBnH59QPD7UhRi3lSkuOw9v5_K2std8rA,1385
|
|
2
2
|
microlive/imports.py,sha256=wMJNmtG06joCJNPryktCwEKz1HCJhfGcm3et3boINuc,7676
|
|
3
3
|
microlive/microscopy.py,sha256=OFqf0JXJW4-2cLHvXnwwp_SfMFsUXwp5lDKbkCRR4ok,710841
|
|
4
4
|
microlive/ml_spot_detection.py,sha256=pVbOSGNJ0WWMuPRML42rFwvjKVZ0B1fJux1179OIbAg,10603
|
|
@@ -7,7 +7,7 @@ microlive/data/icons/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
|
7
7
|
microlive/data/icons/icon_micro.png,sha256=b5tFv4E6vUmLwYmYeM4PJuxLV_XqEzN14ueolekTFW0,370236
|
|
8
8
|
microlive/data/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
9
|
microlive/gui/__init__.py,sha256=tB-CdDC7x5OwYFAQxLOUvfVnUThaXKXVRsB68YP0Y6Q,28
|
|
10
|
-
microlive/gui/app.py,sha256=
|
|
10
|
+
microlive/gui/app.py,sha256=SiEC2BdCg35H1sSxUeFTzzSIKBATSKv-iQcIUQ4L5KQ,857080
|
|
11
11
|
microlive/gui/main.py,sha256=b66W_2V-pclGKOozfs75pwrCGbL_jkVU3kFt8RFMZIc,2520
|
|
12
12
|
microlive/gui/micro_mac.command,sha256=TkxYOO_5A2AiNJMz3_--1geBYfl77THpOLFZnV4J2ac,444
|
|
13
13
|
microlive/gui/micro_windows.bat,sha256=DJUKPhDbCO4HToLwSMT-QTYRe9Kr1wn5A2Ijy2klIrw,773
|
|
@@ -20,8 +20,8 @@ microlive/utils/device.py,sha256=tcPMU8UiXL-DuGwhudUgrbjW1lgIK_EUKIOeOn0U6q4,253
|
|
|
20
20
|
microlive/utils/model_downloader.py,sha256=EruviTEh75YBekpznn1RZ1Nj8lnDmeC4TKEnFLOow6Y,9448
|
|
21
21
|
microlive/utils/resources.py,sha256=Jz7kPI75xMLCBJMyX7Y_3ixKi_UgydfQkF0BlFtLCKs,1753
|
|
22
22
|
microlive/data/models/spot_detection_cnn.pth,sha256=Np7vpPJIbKQmuKY0Hx-4IkeEDsnks_QEgs7TqaYgZmI,8468580
|
|
23
|
-
microlive-1.0.
|
|
24
|
-
microlive-1.0.
|
|
25
|
-
microlive-1.0.
|
|
26
|
-
microlive-1.0.
|
|
27
|
-
microlive-1.0.
|
|
23
|
+
microlive-1.0.25.dist-info/METADATA,sha256=JlvkcS0Phlf6NBugGZTlqUaFYNSZYUj2V-lA9vfeuiE,12462
|
|
24
|
+
microlive-1.0.25.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
25
|
+
microlive-1.0.25.dist-info/entry_points.txt,sha256=Zqp2vixyD8lngcfEmOi8fkCj7vPhesz5xlGBI-EubRw,54
|
|
26
|
+
microlive-1.0.25.dist-info/licenses/LICENSE,sha256=ixuiBLtpoK3iv89l7ylKkg9rs2GzF9ukPH7ynZYzK5s,35148
|
|
27
|
+
microlive-1.0.25.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|