nettracer3d 1.3.1__py3-none-any.whl → 1.3.6__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.

Potentially problematic release.


This version of nettracer3d might be problematic. Click here for more details.

@@ -1295,7 +1295,6 @@ class InteractiveSegmenter:
1295
1295
 
1296
1296
  self.speed = speed
1297
1297
  self.cur_gpu = use_gpu
1298
- #self.realtimechunks = None # dump ram
1299
1298
 
1300
1299
  self.mem_lock = mem_lock
1301
1300
 
nettracer3d/tutorial.py CHANGED
@@ -879,28 +879,28 @@ def setup_start_tutorial(window):
879
879
 
880
880
  # Step 1: Welcome
881
881
  tutorial.add_step(
882
- window.canvas,
882
+ window.graphics_widget,
883
883
  "Welcome to NetTracer3D! This tutorial will give you a basic overview of this application. Click 'Next' or use Right-Click to continue.",
884
884
  highlight_type=None,
885
885
  message_position="bottom"
886
886
  )
887
887
 
888
888
  tutorial.add_step(
889
- window.canvas,
889
+ window.graphics_widget,
890
890
  "This program is designed to analysis of two or three dimensional images, such as those aquired via microscopy or medical imaging.",
891
891
  highlight_type=None,
892
892
  message_position="bottom"
893
893
  )
894
894
 
895
895
  tutorial.add_step(
896
- window.canvas,
896
+ window.graphics_widget,
897
897
  "The major form of analysis is done by creating undirected networks between objects of interest, called nodes. These can be biological structures such as cells or functional tissue units.",
898
898
  highlight_type=None,
899
899
  message_position="bottom"
900
900
  )
901
901
 
902
902
  tutorial.add_step(
903
- window.canvas,
903
+ window.graphics_widget,
904
904
  "Analysis can also be done on more direct measures of morphology or spatial arrangement, such as analyzing object measures like volumes or making clustering heatmaps.",
905
905
  highlight_type=None,
906
906
  message_position="bottom"
@@ -915,14 +915,14 @@ def setup_start_tutorial(window):
915
915
  )
916
916
 
917
917
  tutorial.add_step(
918
- window.canvas,
918
+ window.graphics_widget,
919
919
  "When it comes to making networks, there are three major modalities that NetTracer3D offers.",
920
920
  highlight_type=None,
921
921
  message_position="bottom"
922
922
  )
923
923
 
924
924
  tutorial.add_step(
925
- window.canvas,
925
+ window.graphics_widget,
926
926
  "The first is the 'connectivity network', where your node objects are connected via a secondary structure, deemed 'edges'. For example, we can evaluate how groups of segmented cell aggregates are connected via vasculature.",
927
927
  highlight_type=None,
928
928
  message_position="bottom"
@@ -942,7 +942,7 @@ def setup_start_tutorial(window):
942
942
  message_position="top")
943
943
 
944
944
  tutorial.add_step(
945
- window.canvas,
945
+ window.graphics_widget,
946
946
  "The second modality is making networks directly from branched structures. First, you would provide a binary segmentation of a branching structure like a nerve or a blood vessel. Next, you can algorithmically label the branches in NetTracer3D.",
947
947
  highlight_type=None,
948
948
  message_position="bottom"
@@ -962,14 +962,14 @@ def setup_start_tutorial(window):
962
962
  )
963
963
 
964
964
  tutorial.add_step(
965
- window.canvas,
965
+ window.graphics_widget,
966
966
  "Labeled branches can be turned into two types of networks. The first way is to connect the branchpoints. The second is to connect the branches themselves, just based on what other branches they come off of.",
967
967
  highlight_type=None,
968
968
  message_position="bottom"
969
969
  )
970
970
 
971
971
  tutorial.add_step(
972
- window.canvas,
972
+ window.graphics_widget,
973
973
  "The final modality is making networks based on proximity. This is an option to evaluate spatial clusters in your image, for example, deciphering what sort of groups a set of cells are arranged in. This would be an ideal way to analyze a multiplexed image with a lot of different channels bearing cellular fluorescent labels, for example.",
974
974
  highlight_type=None,
975
975
  message_position="bottom"
@@ -1129,7 +1129,7 @@ def setup_basics_tutorial(window):
1129
1129
 
1130
1130
  # Step 1: Welcome
1131
1131
  tutorial.add_step(
1132
- window.canvas,
1132
+ window.graphics_widget,
1133
1133
  "This tutorial will guide you through the main features of the GUI window. Click 'Next' or use 'Right-Click' to continue.",
1134
1134
  highlight_type="rect",
1135
1135
  message_position="bottom"
@@ -1137,28 +1137,28 @@ def setup_basics_tutorial(window):
1137
1137
 
1138
1138
  # Step 2: Canvas explanation
1139
1139
  tutorial.add_step(
1140
- window.canvas,
1140
+ window.graphics_widget,
1141
1141
  "This canvas is where your loaded images will render.",
1142
1142
  highlight_type="rect",
1143
1143
  message_position="bottom"
1144
1144
  )
1145
1145
 
1146
1146
  tutorial.add_step(
1147
- window.canvas,
1147
+ window.graphics_widget,
1148
1148
  "Clicking a node or edge in this canvas will select it (if the nodes or edges channels are set as the 'active channel', respectively). Click and drag to select multiple objects. This is intended mainly for segmented, labeled data rather than interacting directly with raw images.",
1149
1149
  highlight_type="rect",
1150
1150
  message_position="bottom"
1151
1151
  )
1152
1152
 
1153
1153
  tutorial.add_step(
1154
- window.canvas,
1154
+ window.graphics_widget,
1155
1155
  "Selected objects will be highlighted yellow and can be used for certain functions. Clicking a background val in an image (ie voxel with value 0) will deselect your objects.",
1156
1156
  highlight_type="rect",
1157
1157
  message_position="bottom"
1158
1158
  )
1159
1159
 
1160
1160
  tutorial.add_step(
1161
- window.canvas,
1161
+ window.graphics_widget,
1162
1162
  "Use right click to interact with highlighted objects (ie, delete them or merge them into one object); or rather to select objects algorithmically (for example, the neighbors of a node in your network)",
1163
1163
  highlight_type="rect",
1164
1164
  message_position="bottom"
@@ -1287,11 +1287,19 @@ def setup_basics_tutorial(window):
1287
1287
  highlight_type="rect",
1288
1288
  message_position="top"
1289
1289
  )
1290
+
1291
+ # Data Tables
1292
+ tutorial.add_step(
1293
+ window.network_graph_button,
1294
+ "Similarly the network graph will allow you top render your network in a dedicated viewer that is interactable and linked with the main display window..",
1295
+ highlight_type="rect",
1296
+ message_position="top"
1297
+ )
1290
1298
 
1291
1299
  # The actual table
1292
1300
  tutorial.add_step(
1293
1301
  window.network_table,
1294
- "This table displays your network data. You can click rows to highlight corresponding elements in the image, and sort columns by clicking headers. Right click to export any tables in spreadsheet format, or in a format for a few other types of network analysis software.",
1302
+ "This table view displays your network data. You can click rows to highlight corresponding elements in the image, and sort columns by clicking headers. The graph view allows you to evaluate network connectivity and highlight those items in your main display window. Right click to export any tables in spreadsheet format, or in a format for a few other types of network analysis software.",
1295
1303
  highlight_type="rect",
1296
1304
  message_position="left"
1297
1305
  )
@@ -1324,6 +1332,13 @@ def setup_basics_tutorial(window):
1324
1332
  message_position="bottom"
1325
1333
  )
1326
1334
 
1335
+ tutorial.add_step(
1336
+ window.threed_button,
1337
+ "This button can be used to create a 3D display of the current data. This can be called with additional optional settings from the 'Image' menu as well.",
1338
+ highlight_type="circle",
1339
+ message_position="bottom"
1340
+ )
1341
+
1327
1342
  # File Menu - show where to load data
1328
1343
  tutorial.add_step(
1329
1344
  lambda: window.menuBar(),
@@ -1417,7 +1432,7 @@ def setup_file_tutorial(window):
1417
1432
  tutorial.add_step(
1418
1433
  MenuHelper.create_submenu_action_rect_getter(window, "File", "Save As", "Save Nodes As"),
1419
1434
  f"""--Saving occurs from the SaveAs menu.
1420
- \n\n--Use 'Save Network3D Object As' as the primary save function. This will dump all the relevant properties. First, you will be prompted to select a folder on your computer. Next, you will enter the name of a new folder to create in the aforementioned parent folder. All the outputs will be saved to this new folder.
1435
+ \n\n--Use 'Save Current Session As' as the primary save function. This will dump all the relevant properties to a folder. First, you will be prompted to select a folder on your computer. Next, you will enter the name of a new folder to create in the aforementioned parent folder. All the outputs will be saved to this new folder.
1421
1436
  \n\n--The other SaveAs options can be used to save any of the image channels as a .tif.""",
1422
1437
  highlight_type=None,
1423
1438
  message_position="top_right",
@@ -1431,9 +1446,9 @@ def setup_file_tutorial(window):
1431
1446
 
1432
1447
  # Step 3: Point to Image submenu
1433
1448
  tutorial.add_step(
1434
- MenuHelper.create_submenu_action_rect_getter(window, "File", "Load", "Load Network3D Object"),
1449
+ MenuHelper.create_submenu_action_rect_getter(window, "File", "Load", "Load Previous Session"),
1435
1450
  f"""--Loading occurs from the load menu. Acceptable image types are .tif, .tiff, .nii, .png, .jpeg, and .jpg.
1436
- \n\n--'Load Network3D Object' can be used to load in an entire previously saved session, assuming it had been saved with the correspoinding 'Save Network3D Object' method. Navigate your way to the directory the 'Network3D Object' dumped to. Select it to reload all properties within.
1451
+ \n\n--'Load Previous Session' can be used to load in an entire previously saved session, assuming it had been saved with the corresponding 'Save Current Session' method. Navigate your way to the directory the 'Current Session' dumped to. Select it to reload all properties within.
1437
1452
  \n\n--Use 'load nodes' to load an image into the nodes channel. Similarly, use load edges to load edges, and either of the load overlays to load the overlays.
1438
1453
  \n\n--Use 'load network' to load your saved network data from .csv or .xlsx format. Note this will expect to see the corresponding spreadsheet in the layout that NetTracer3D saves it.
1439
1454
  \n\n--'Loading from the excel helper' opens a secondary gui where (mainly node identities) can be reassigned with a set of string keywords. For example, a node with identity 'x' and 'y' can be configured to be loaded as 'identity xy'
@@ -1638,7 +1653,7 @@ def setup_connectivity_tutorial(window):
1638
1653
 
1639
1654
  tutorial.add_step(
1640
1655
  MenuHelper.create_widget_getter(tutorial, 'con_dialog', 'labeled_branches'),
1641
- "The 'Convert Edges to Nodes' option will make your edges become nodes. This can be a good way to visualize direct connectivity paths, and is a robust way to mitigate bias in what is or isn't a trunk. However, the network dynamics will be altered by edge inclusion, resulting in much less node clusters in favor of edge-derived hubs.",
1656
+ "The 'Pre-labeled edges' option will allow you to use pre-made edge labels, such as if you had previously labeled the branches of your edges. Instead of just joining nodes together, all edge labels will participate as nodes as well. This can be a way to visualize how branch-like structures in your edges interact with your main node objects.",
1642
1657
  highlight_type=None,
1643
1658
  message_position="beside",
1644
1659
  pre_action=MenuHelper.create_widget_interaction(tutorial, 'con_dialog', 'labeled_branches', 'click()'),
@@ -1647,7 +1662,7 @@ def setup_connectivity_tutorial(window):
1647
1662
 
1648
1663
  tutorial.add_step(
1649
1664
  MenuHelper.create_widget_getter(tutorial, 'con_dialog', 'edge_node'),
1650
- "The 'Pre-labeled edges' option will allow you to use pre-made edge labels, such as if you had previously labeled the branches of your edges. Instead of just joining nodes together, all edge labels will participate as nodes as well. This can be a way to visualize how branch-like structures in your edges interact with your main node objects. You can also do this from the modify network after the calculation has been done.",
1665
+ "The 'Convert Edges to Nodes' option will make your edges become nodes. This can be a good way to visualize direct connectivity paths, and is a robust way to mitigate bias in what is or isn't a trunk. However, the network dynamics will be altered by edge inclusion, resulting in much less node clusters in favor of edge-derived hubs. You can also do this from the modify network after the calculation has been done.",
1651
1666
  highlight_type=None,
1652
1667
  message_position="beside",
1653
1668
  pre_action=MenuHelper.create_widget_interaction(tutorial, 'con_dialog', 'edge_node', 'click()'),
@@ -1677,7 +1692,8 @@ def setup_connectivity_tutorial(window):
1677
1692
 
1678
1693
  tutorial.add_step(
1679
1694
  MenuHelper.create_widget_getter(tutorial, 'con_dialog', 'fastdil'),
1680
- "Enable the fast search button to use a slightly alternate algorithm for the node search step that is faster. This algorithm uses a parallelized distance transform to create a binary search region which is a lot faster if you have a lot of CPU cores. It then uses flooding to label the binary search region, which leads to slightly rough labeling where two search regions meet. When disabled, a non-parallel distance transform is used, which can be slower but always has exact labels where two search regions meet. I recommend enabling this for larger images and disabling it for smaller ones.", highlight_type=None,
1695
+ "Enable the fast search button to use a slightly alternate algorithm for the node search step that is faster. This algorithm uses a parallelized distance transform to create a binary search region which is a lot faster if you have a lot of CPU cores. It then uses flooding to label the binary search region, which leads to slightly rough labeling where two search regions meet. When disabled, a non-parallel distance transform is used, which can be slower but always has exact labels where two search regions meet. I recommend enabling this for larger images and disabling it for smaller ones. If your search region is very large the fast search may be actually slower but there isn't often a practical region to use immense search regions anyway.",
1696
+ highlight_type=None,
1681
1697
  message_position="beside",
1682
1698
  pre_action=MenuHelper.create_widget_interaction(tutorial, 'con_dialog', 'fastdil', 'click()'),
1683
1699
  action=MenuHelper.create_widget_interaction(tutorial, 'con_dialog', 'fastdil', 'toggle()')
@@ -2191,14 +2207,14 @@ def setup_seg_tutorial(window):
2191
2207
  )
2192
2208
 
2193
2209
  tutorial.add_step(
2194
- window.canvas,
2210
+ window.graphics_widget,
2195
2211
  "You will mark these regions directly on the canvas.",
2196
2212
  highlight_type="rect",
2197
2213
  message_position="top_left"
2198
2214
  )
2199
2215
 
2200
2216
  tutorial.add_step(
2201
- window.canvas,
2217
+ window.graphics_widget,
2202
2218
  "The program will use your markings to train itself. When you train a model, it will learn to segment out regions that look like those you marked as foreground, while ignoring regions that you marked as background.",
2203
2219
  highlight_type="rect",
2204
2220
  message_position="top_left"
@@ -2259,7 +2275,7 @@ def setup_seg_tutorial(window):
2259
2275
 
2260
2276
  tutorial.add_step(
2261
2277
  None,
2262
- "At some point you'll reach some kind of ceiling where additional training data won't really help more. This might take 20-40 minutes of training. So try to end the training session by then, or earlier if it looks satisfactory.",
2278
+ "At some point you'll reach some kind of ceiling where additional training data won't really help more. This might take 20 minutes of training or so. So try to end the training session by then, or earlier if it looks satisfactory.",
2263
2279
  highlight_type="rect",
2264
2280
  message_position="top_left"
2265
2281
  )
@@ -2294,7 +2310,7 @@ def setup_seg_tutorial(window):
2294
2310
 
2295
2311
  tutorial.add_step(
2296
2312
  None,
2297
- "Likewise, 'Load Model' can be used to reopen a saved model. You can train over an old model to have it combine all the training data, although note the model might become more ponderous the more you train over it.",
2313
+ "Likewise, 'Load Model' can be used to reopen a saved model. You can train on top of an old model to have it combine all the training data, although note the model might slow down the more you train on it.",
2298
2314
  highlight_type="rect",
2299
2315
  message_position="top_left"
2300
2316
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nettracer3d
3
- Version: 1.3.1
3
+ Version: 1.3.6
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/
@@ -155,9 +155,7 @@ NetTracer3D is freely available for academic and nonprofit use and can obtained
155
155
 
156
156
  NetTracer3D was developed by Liam McLaughlin while working under Dr. Sanjay Jain at Washington University School of Medicine.
157
157
 
158
- -- Version 1.3.1 Updates --
158
+ -- Version 1.3.6 Updates --
159
159
 
160
- * Updated GUI to use pyqtgraph for image display rather than matplotlib
161
- * Upgraded the network graph visualization to also use pyqtgraph rather than matplotlib - now renders much faster, is embedded in the main window, and interacts with the main image view display.
162
- * Other minor tweaks and bug fixes
163
-
160
+ * Added more options for styles of network graph renders.
161
+ * Bug fixes
@@ -0,0 +1,32 @@
1
+ nettracer3d/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ nettracer3d/branch_stitcher.py,sha256=rCTeh-28o7yN6ghYwxVSfrn2oc-TiPOm1xB3xJ5RWbw,21216
3
+ nettracer3d/cellpose_manager.py,sha256=NfRqW6Zl7yRU4qHCS_KjmR0R6QANSSgCO0_dr-eivxg,6694
4
+ nettracer3d/community_extractor.py,sha256=sDnPyoaAZfFTBNkKDHmmkpT91D5ZC2ImR6LdEhAb3ww,31778
5
+ nettracer3d/endpoint_joiner.py,sha256=ioR-hM_NxPjaEG1K9yucsv9kFp_-TgqKDQrjp9FYdiQ,9933
6
+ nettracer3d/excelotron.py,sha256=aNof6k-DgMxVyFgsl3ltSCxG4vZW49cuvCBzfzhYhUY,75072
7
+ nettracer3d/filaments.py,sha256=tGuL-KZahVF95AVy75u8i0d7olOjCWB0TtT3EVc-geM,54689
8
+ nettracer3d/histos.py,sha256=gEV3v_H8zl_tZVJHr00xdyuL2hAIfuGiBho4Xj_IlSo,61539
9
+ nettracer3d/modularity.py,sha256=B08ZUw_C_8qqLIk9fHhKslxUgwQKt9pndY82eHtSIf8,19772
10
+ nettracer3d/morphology.py,sha256=eusirbmDFQD__tlhkwZbctd8N4AARXVU0IGowr7M8cA,23297
11
+ nettracer3d/neighborhoods.py,sha256=Zk5NuRYVLORR3fv1u2YRZ1gjBPO9hRrCgod06pqyj1E,53188
12
+ nettracer3d/nettracer.py,sha256=f0ycXvUDG3nfSEUScpAPIK9Z8p2tKCk3YfsmgDpeEqU,298826
13
+ nettracer3d/nettracer_gui.py,sha256=IQ5PCe1HYcTtforu1vQTMSzXisZIXkgPbDm3zJoVqNk,708750
14
+ nettracer3d/network_analysis.py,sha256=UwS5ISZzjKe8SrSltNTqOMaqsj7ZA6x065PC8bCbaTE,46430
15
+ nettracer3d/network_draw.py,sha256=1Dj6VSMtMZbMxmrA7bWGxaLChqvM17xnZo85EUgG2PM,14291
16
+ nettracer3d/network_graph_widget.py,sha256=rUPz4wg2KTy2PRuMxBlUrCT7-X50c32UnROweshYfp4,88551
17
+ nettracer3d/node_draw.py,sha256=Md12OiBtEyQmF2W_enO4qrSPFTRfoV4sOCMeEEdTNz4,10488
18
+ nettracer3d/painting.py,sha256=10XBjDqfOb1nTbGgIicOpoeIKRZZ4al2uFtrv-8MIBE,16760
19
+ nettracer3d/proximity.py,sha256=xvJLt61nTsKMdpJ0aiwJsB5vPriO34KG0LQwDjyfhC8,41410
20
+ nettracer3d/run.py,sha256=xYeaAc8FCx8MuzTGyL3NR3mK7WZzffAYAH23bNRZYO4,127
21
+ nettracer3d/segmenter.py,sha256=UBq4nPJQJfDxMUlOeQAJBpoUIT3xymQ1o40OhfV-dT0,72776
22
+ nettracer3d/segmenter_GPU.py,sha256=ootY0lcfaWj0pIVN7Nh0ElEwQ6xW5QgnuUq2i0G4Qyg,79966
23
+ nettracer3d/simple_network.py,sha256=1InpqSXfae_L-6lmf8lXgV7n_rk7Porg1hc_in9vkHg,10499
24
+ nettracer3d/smart_dilate.py,sha256=1UzLnX5LCj6OuFIy7_gHcZe9OIHkVJdIkZJDuJNqyYc,32009
25
+ nettracer3d/stats.py,sha256=0YwrVLeEvll3PlbL5-0_9dstldr48PvxJrQm-PiC8jY,36607
26
+ nettracer3d/tutorial.py,sha256=cxVbs-YvG3TS-Zi8wfmdP1aCAPqxtPcCeYqn3CJxaDw,155639
27
+ nettracer3d-1.3.6.dist-info/licenses/LICENSE,sha256=_Wg4zyCtT18lXBCXRov17IEop_-7z1OFo6o3JTzQj3g,568
28
+ nettracer3d-1.3.6.dist-info/METADATA,sha256=LG8ufBcsw__XB0oHlSWryMTiB93u6Q-5TEqzGl7IvMw,9439
29
+ nettracer3d-1.3.6.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
30
+ nettracer3d-1.3.6.dist-info/entry_points.txt,sha256=Nx1rr_0QhJXDBHAQg2vcqCzLMKBzSHfwy3xwGkueVyc,53
31
+ nettracer3d-1.3.6.dist-info/top_level.txt,sha256=zsYy9rZwirfCEOubolhee4TyzqBAL5gSUeFMzhFTX8c,12
32
+ nettracer3d-1.3.6.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,30 +0,0 @@
1
- nettracer3d/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- nettracer3d/branch_stitcher.py,sha256=rCTeh-28o7yN6ghYwxVSfrn2oc-TiPOm1xB3xJ5RWbw,21216
3
- nettracer3d/cellpose_manager.py,sha256=NfRqW6Zl7yRU4qHCS_KjmR0R6QANSSgCO0_dr-eivxg,6694
4
- nettracer3d/community_extractor.py,sha256=rPXXWwMX05mfD_ogULEouLy8CST-aOaoSw45NhloKVg,31754
5
- nettracer3d/excelotron.py,sha256=aNof6k-DgMxVyFgsl3ltSCxG4vZW49cuvCBzfzhYhUY,75072
6
- nettracer3d/filaments.py,sha256=liuhikdRoANUmYA_hiPUPtDV-lYtR8wKbgnUVk55Hgs,43952
7
- nettracer3d/modularity.py,sha256=HgaVQSVjgAX3LAfJeUL1ZZ3P3xGuALJpQHqtYrhgw5c,22762
8
- nettracer3d/morphology.py,sha256=eusirbmDFQD__tlhkwZbctd8N4AARXVU0IGowr7M8cA,23297
9
- nettracer3d/neighborhoods.py,sha256=Bje77gWzXRIYyXkDlnFQnbUALnIt8dheLXHVFQsAKuc,53156
10
- nettracer3d/nettracer.py,sha256=kvatS_orNSLUQXuDZ5zBluP-Yau8nyoIYYWEcZyMzrs,298024
11
- nettracer3d/nettracer_gui.py,sha256=SIGGetHwyRv8xJShVjwvabhEIgPWtHAOvcKZMleyPVM,732175
12
- nettracer3d/network_analysis.py,sha256=QYZrzZ0T6Ubifw4hctvpw-V2lATN5jV5QtIF_UpcSpU,46363
13
- nettracer3d/network_draw.py,sha256=1Dj6VSMtMZbMxmrA7bWGxaLChqvM17xnZo85EUgG2PM,14291
14
- nettracer3d/network_graph_widget.py,sha256=dVuTRGEdjVOOJ4-DBCtOwQe-QpO3FwXvVYhC-oT3Xpo,80989
15
- nettracer3d/node_draw.py,sha256=Md12OiBtEyQmF2W_enO4qrSPFTRfoV4sOCMeEEdTNz4,10488
16
- nettracer3d/painting.py,sha256=10XBjDqfOb1nTbGgIicOpoeIKRZZ4al2uFtrv-8MIBE,16760
17
- nettracer3d/proximity.py,sha256=xvJLt61nTsKMdpJ0aiwJsB5vPriO34KG0LQwDjyfhC8,41410
18
- nettracer3d/run.py,sha256=xYeaAc8FCx8MuzTGyL3NR3mK7WZzffAYAH23bNRZYO4,127
19
- nettracer3d/segmenter.py,sha256=20ch_uLqedV9srwT1eL5eFs88ojkb2gELWJKgtYk2qk,72791
20
- nettracer3d/segmenter_GPU.py,sha256=FwzevixleTUoRmwVa8jPPzW82RZoC6nL2eEeZ4-2ZR8,80015
21
- nettracer3d/simple_network.py,sha256=1InpqSXfae_L-6lmf8lXgV7n_rk7Porg1hc_in9vkHg,10499
22
- nettracer3d/smart_dilate.py,sha256=1UzLnX5LCj6OuFIy7_gHcZe9OIHkVJdIkZJDuJNqyYc,32009
23
- nettracer3d/stats.py,sha256=0YwrVLeEvll3PlbL5-0_9dstldr48PvxJrQm-PiC8jY,36607
24
- nettracer3d/tutorial.py,sha256=48__h2pWuERJLxC08_khFRW4XVf5vSXZtWnNUAFyWDY,154591
25
- nettracer3d-1.3.1.dist-info/licenses/LICENSE,sha256=_Wg4zyCtT18lXBCXRov17IEop_-7z1OFo6o3JTzQj3g,568
26
- nettracer3d-1.3.1.dist-info/METADATA,sha256=SVbWu_ycx1tghOiGVAA8w3EwlvVsnCKTGae6R9Io-RM,9676
27
- nettracer3d-1.3.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
28
- nettracer3d-1.3.1.dist-info/entry_points.txt,sha256=Nx1rr_0QhJXDBHAQg2vcqCzLMKBzSHfwy3xwGkueVyc,53
29
- nettracer3d-1.3.1.dist-info/top_level.txt,sha256=zsYy9rZwirfCEOubolhee4TyzqBAL5gSUeFMzhFTX8c,12
30
- nettracer3d-1.3.1.dist-info/RECORD,,