nettracer3d 0.9.9__tar.gz → 1.0.0__tar.gz
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.
Potentially problematic release.
This version of nettracer3d might be problematic. Click here for more details.
- {nettracer3d-0.9.9/src/nettracer3d.egg-info → nettracer3d-1.0.0}/PKG-INFO +4 -4
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/README.md +3 -3
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/pyproject.toml +1 -1
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/nettracer_gui.py +53 -9
- {nettracer3d-0.9.9 → nettracer3d-1.0.0/src/nettracer3d.egg-info}/PKG-INFO +4 -4
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/LICENSE +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/setup.cfg +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/__init__.py +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/cellpose_manager.py +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/community_extractor.py +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/excelotron.py +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/modularity.py +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/morphology.py +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/neighborhoods.py +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/nettracer.py +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/network_analysis.py +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/network_draw.py +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/node_draw.py +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/painting.py +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/proximity.py +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/run.py +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/segmenter.py +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/segmenter_GPU.py +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/simple_network.py +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/smart_dilate.py +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d.egg-info/SOURCES.txt +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d.egg-info/dependency_links.txt +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d.egg-info/entry_points.txt +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d.egg-info/requires.txt +0 -0
- {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nettracer3d
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 1.0.0
|
|
4
4
|
Summary: Scripts for intializing and analyzing networks from segmentations of three dimensional images.
|
|
5
5
|
Author-email: Liam McLaughlin <liamm@wustl.edu>
|
|
6
6
|
Project-URL: Documentation, https://nettracer3d.readthedocs.io/en/latest/
|
|
@@ -110,7 +110,7 @@ McLaughlin, L., Zhang, B., Sharma, S. et al. Three dimensional multiscalar neuro
|
|
|
110
110
|
|
|
111
111
|
NetTracer3D was developed by Liam McLaughlin while working under Dr. Sanjay Jain at Washington University School of Medicine.
|
|
112
112
|
|
|
113
|
-
-- Version 0.
|
|
113
|
+
-- Version 1.0.0 Updates --
|
|
114
114
|
|
|
115
|
-
*
|
|
116
|
-
*
|
|
115
|
+
* The 'network selection' table is now auto-populated when using the multiple-identity selector, and when using the node thresholder.
|
|
116
|
+
* And other minor adjustments/bug fixes
|
|
@@ -65,7 +65,7 @@ McLaughlin, L., Zhang, B., Sharma, S. et al. Three dimensional multiscalar neuro
|
|
|
65
65
|
|
|
66
66
|
NetTracer3D was developed by Liam McLaughlin while working under Dr. Sanjay Jain at Washington University School of Medicine.
|
|
67
67
|
|
|
68
|
-
-- Version 0.
|
|
68
|
+
-- Version 1.0.0 Updates --
|
|
69
69
|
|
|
70
|
-
*
|
|
71
|
-
*
|
|
70
|
+
* The 'network selection' table is now auto-populated when using the multiple-identity selector, and when using the node thresholder.
|
|
71
|
+
* And other minor adjustments/bug fixes
|
|
@@ -1027,7 +1027,6 @@ class ImageViewerWindow(QMainWindow):
|
|
|
1027
1027
|
|
|
1028
1028
|
"""Highlight overlay generation method specific for the segmenter interactive mode"""
|
|
1029
1029
|
|
|
1030
|
-
|
|
1031
1030
|
def process_chunk_bounds(chunk_data, indices_to_check):
|
|
1032
1031
|
"""Process a single chunk of the array to create highlight mask"""
|
|
1033
1032
|
mask = (chunk_data >= indices_to_check[0]) & (chunk_data <= indices_to_check[1])
|
|
@@ -1106,6 +1105,30 @@ class ImageViewerWindow(QMainWindow):
|
|
|
1106
1105
|
current_ylim = self.ax.get_ylim()
|
|
1107
1106
|
self.update_display_pan_mode(current_xlim, current_ylim)
|
|
1108
1107
|
|
|
1108
|
+
if my_network.network is not None:
|
|
1109
|
+
try:
|
|
1110
|
+
if self.active_channel == 0:
|
|
1111
|
+
|
|
1112
|
+
# Get the existing DataFrame from the model
|
|
1113
|
+
original_df = self.network_table.model()._data
|
|
1114
|
+
|
|
1115
|
+
# Create mask for rows where one column is any original node AND the other column is any neighbor
|
|
1116
|
+
mask = (
|
|
1117
|
+
(original_df.iloc[:, 0].isin(indices)) &
|
|
1118
|
+
(original_df.iloc[:, 1].isin(indices)))
|
|
1119
|
+
|
|
1120
|
+
# Filter the DataFrame to only include direct connections
|
|
1121
|
+
filtered_df = original_df[mask].copy()
|
|
1122
|
+
|
|
1123
|
+
# Create new model with filtered DataFrame and update selection table
|
|
1124
|
+
new_model = PandasModel(filtered_df)
|
|
1125
|
+
self.selection_table.setModel(new_model)
|
|
1126
|
+
|
|
1127
|
+
# Switch to selection table
|
|
1128
|
+
self.selection_button.click()
|
|
1129
|
+
except:
|
|
1130
|
+
pass
|
|
1131
|
+
|
|
1109
1132
|
|
|
1110
1133
|
|
|
1111
1134
|
def create_mini_overlay(self, node_indices = None, edge_indices = None):
|
|
@@ -3968,6 +3991,30 @@ class ImageViewerWindow(QMainWindow):
|
|
|
3968
3991
|
if len(self.clicked_values['edges']):
|
|
3969
3992
|
self.highlight_value_in_tables(self.clicked_values['edges'][-1])
|
|
3970
3993
|
self.handle_info('edge')
|
|
3994
|
+
|
|
3995
|
+
if len(self.clicked_values['nodes']) > 0 or len(self.clicked_values['edges']) > 0: # Check if we have any nodes selected
|
|
3996
|
+
|
|
3997
|
+
old_nodes = copy.deepcopy(self.clicked_values['nodes'])
|
|
3998
|
+
|
|
3999
|
+
# Get the existing DataFrame from the model
|
|
4000
|
+
original_df = self.network_table.model()._data
|
|
4001
|
+
|
|
4002
|
+
# Create mask for rows where one column is any original node AND the other column is any neighbor
|
|
4003
|
+
mask = (
|
|
4004
|
+
((original_df.iloc[:, 0].isin(self.clicked_values['nodes'])) &
|
|
4005
|
+
(original_df.iloc[:, 1].isin(self.clicked_values['nodes']))) |
|
|
4006
|
+
(original_df.iloc[:, 2].isin(self.clicked_values['edges']))
|
|
4007
|
+
)
|
|
4008
|
+
|
|
4009
|
+
# Filter the DataFrame to only include direct connections
|
|
4010
|
+
filtered_df = original_df[mask].copy()
|
|
4011
|
+
|
|
4012
|
+
# Create new model with filtered DataFrame and update selection table
|
|
4013
|
+
new_model = PandasModel(filtered_df)
|
|
4014
|
+
self.selection_table.setModel(new_model)
|
|
4015
|
+
|
|
4016
|
+
# Switch to selection table
|
|
4017
|
+
self.selection_button.click()
|
|
3971
4018
|
|
|
3972
4019
|
elif not self.selecting and self.selection_start: # If we had a click but never started selection
|
|
3973
4020
|
# Handle as a normal click
|
|
@@ -4514,7 +4561,7 @@ class ImageViewerWindow(QMainWindow):
|
|
|
4514
4561
|
|
|
4515
4562
|
|
|
4516
4563
|
# Add after your other buttons
|
|
4517
|
-
self.popup_button = QPushButton("⤴")
|
|
4564
|
+
self.popup_button = QPushButton("⤴")
|
|
4518
4565
|
self.popup_button.setFixedSize(40, 40)
|
|
4519
4566
|
self.popup_button.setToolTip("Pop out canvas")
|
|
4520
4567
|
self.popup_button.clicked.connect(self.popup_canvas)
|
|
@@ -6175,8 +6222,6 @@ class ImageViewerWindow(QMainWindow):
|
|
|
6175
6222
|
if self.resume:
|
|
6176
6223
|
self.machine_window.segmentation_worker.resume()
|
|
6177
6224
|
self.resume = False
|
|
6178
|
-
if self.prev_down != self.downsample_factor:
|
|
6179
|
-
self.validate_downsample_input(text = self.prev_down)
|
|
6180
6225
|
|
|
6181
6226
|
if self.static_background is not None:
|
|
6182
6227
|
# Your existing virtual strokes conversion logic
|
|
@@ -6233,8 +6278,6 @@ class ImageViewerWindow(QMainWindow):
|
|
|
6233
6278
|
for img in list(self.ax.get_images()):
|
|
6234
6279
|
img.remove()
|
|
6235
6280
|
# Clear measurement points
|
|
6236
|
-
for artist in self.measurement_artists:
|
|
6237
|
-
artist.remove()
|
|
6238
6281
|
self.measurement_artists.clear()
|
|
6239
6282
|
|
|
6240
6283
|
# Determine the current view bounds (either from preserve_zoom or current state)
|
|
@@ -6449,9 +6492,10 @@ class ImageViewerWindow(QMainWindow):
|
|
|
6449
6492
|
if reset_resize:
|
|
6450
6493
|
self.resizing = False
|
|
6451
6494
|
|
|
6452
|
-
#
|
|
6495
|
+
# draw_idle
|
|
6453
6496
|
self.canvas.draw_idle()
|
|
6454
6497
|
|
|
6498
|
+
|
|
6455
6499
|
except Exception as e:
|
|
6456
6500
|
pass
|
|
6457
6501
|
#import traceback
|
|
@@ -13108,7 +13152,7 @@ class GenNodesDialog(QDialog):
|
|
|
13108
13152
|
|
|
13109
13153
|
if my_network.edges is None and my_network.nodes is not None:
|
|
13110
13154
|
self.parent().load_channel(1, my_network.nodes, data = True)
|
|
13111
|
-
self.parent().delete_channel(0,
|
|
13155
|
+
self.parent().delete_channel(0, False)
|
|
13112
13156
|
# Get directory (None if empty)
|
|
13113
13157
|
#directory = self.directory.text() if self.directory.text() else None
|
|
13114
13158
|
|
|
@@ -13340,7 +13384,7 @@ class BranchDialog(QDialog):
|
|
|
13340
13384
|
|
|
13341
13385
|
if my_network.edges is None and my_network.nodes is not None:
|
|
13342
13386
|
self.parent().load_channel(1, my_network.nodes, data = True)
|
|
13343
|
-
self.parent().delete_channel(0,
|
|
13387
|
+
self.parent().delete_channel(0, False)
|
|
13344
13388
|
|
|
13345
13389
|
original_shape = my_network.edges.shape
|
|
13346
13390
|
original_array = copy.deepcopy(my_network.edges)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nettracer3d
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 1.0.0
|
|
4
4
|
Summary: Scripts for intializing and analyzing networks from segmentations of three dimensional images.
|
|
5
5
|
Author-email: Liam McLaughlin <liamm@wustl.edu>
|
|
6
6
|
Project-URL: Documentation, https://nettracer3d.readthedocs.io/en/latest/
|
|
@@ -110,7 +110,7 @@ McLaughlin, L., Zhang, B., Sharma, S. et al. Three dimensional multiscalar neuro
|
|
|
110
110
|
|
|
111
111
|
NetTracer3D was developed by Liam McLaughlin while working under Dr. Sanjay Jain at Washington University School of Medicine.
|
|
112
112
|
|
|
113
|
-
-- Version 0.
|
|
113
|
+
-- Version 1.0.0 Updates --
|
|
114
114
|
|
|
115
|
-
*
|
|
116
|
-
*
|
|
115
|
+
* The 'network selection' table is now auto-populated when using the multiple-identity selector, and when using the node thresholder.
|
|
116
|
+
* And other minor adjustments/bug fixes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|