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.

Files changed (30) hide show
  1. {nettracer3d-0.9.9/src/nettracer3d.egg-info → nettracer3d-1.0.0}/PKG-INFO +4 -4
  2. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/README.md +3 -3
  3. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/pyproject.toml +1 -1
  4. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/nettracer_gui.py +53 -9
  5. {nettracer3d-0.9.9 → nettracer3d-1.0.0/src/nettracer3d.egg-info}/PKG-INFO +4 -4
  6. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/LICENSE +0 -0
  7. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/setup.cfg +0 -0
  8. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/__init__.py +0 -0
  9. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/cellpose_manager.py +0 -0
  10. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/community_extractor.py +0 -0
  11. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/excelotron.py +0 -0
  12. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/modularity.py +0 -0
  13. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/morphology.py +0 -0
  14. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/neighborhoods.py +0 -0
  15. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/nettracer.py +0 -0
  16. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/network_analysis.py +0 -0
  17. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/network_draw.py +0 -0
  18. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/node_draw.py +0 -0
  19. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/painting.py +0 -0
  20. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/proximity.py +0 -0
  21. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/run.py +0 -0
  22. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/segmenter.py +0 -0
  23. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/segmenter_GPU.py +0 -0
  24. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/simple_network.py +0 -0
  25. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d/smart_dilate.py +0 -0
  26. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d.egg-info/SOURCES.txt +0 -0
  27. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d.egg-info/dependency_links.txt +0 -0
  28. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d.egg-info/entry_points.txt +0 -0
  29. {nettracer3d-0.9.9 → nettracer3d-1.0.0}/src/nettracer3d.egg-info/requires.txt +0 -0
  30. {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.9.9
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.9.9 Updates --
113
+ -- Version 1.0.0 Updates --
114
114
 
115
- * Tables can now be opened to the rightside upper widget if they are the right format.
116
- * Similarly, tables that have the format node id column:numerical values can now be used liberally to threshold the nodes, meaning most outputs of network analysis can be used to threshold nodes.
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.9.9 Updates --
68
+ -- Version 1.0.0 Updates --
69
69
 
70
- * Tables can now be opened to the rightside upper widget if they are the right format.
71
- * Similarly, tables that have the format node id column:numerical values can now be used liberally to threshold the nodes, meaning most outputs of network analysis can be used to threshold nodes.
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "nettracer3d"
3
- version = "0.9.9"
3
+ version = "1.0.0"
4
4
  authors = [
5
5
  { name="Liam McLaughlin", email="liamm@wustl.edu" },
6
6
  ]
@@ -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("⤴") # or "🔗" or "⤴"
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
- # Use draw_idle for better performance
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, True)
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, True)
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.9.9
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.9.9 Updates --
113
+ -- Version 1.0.0 Updates --
114
114
 
115
- * Tables can now be opened to the rightside upper widget if they are the right format.
116
- * Similarly, tables that have the format node id column:numerical values can now be used liberally to threshold the nodes, meaning most outputs of network analysis can be used to threshold nodes.
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