You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Path Manager dialog displays all existing paths in a hierarchical structure (tree), where one path is "primary" or "root" (path 0) and all other paths (paths 1...N) are children of the primary path. This pattern repeats for each cell being traced. The dialog also contains several menus with various editing, tagging, refinement/fitting, filling and analysis options. Paths can be searched by name and/or tags in the text filter, with more sophisticated search capabilities in the Advanced Filtering Menu.
615
+
The Path Manager dialog displays all existing paths in a hierarchical structure, where one path is "primary" or "root" (path 1) and all other paths (paths 2...N) are children of the primary path. This pattern repeats for each structure (arbor) being traced. The dialog also contains several menus with various editing, tagging, refinement/fitting, filling and analysis options. Paths can be searched by name and/or tags in the text filter, with more sophisticated search capabilities in the Advanced Filtering Menu.
616
616
617
617
{% include notice icon="info" content="Path Manager commands are applied to all paths if no paths are selected." %}
The navigation toolbar allows for better handling of multiple arbors. An arbor is a primary (root‑level) path together with all of its children. In the Path Manager list, each arbor appears as a top‑level entry containing its dependent paths. The toolbar is designed to help you quickly navigate, filter, zoom, and bookmark image locations in larger projects. It includes the following controls:
624
+
625
+
### Sort Arbors / Root‑level Structures
626
+
<iclass="fas fa-arrow-up-a-z"></i> Reorders the arbors in the Path Manager using sorting options such as _Arbor ID_, _Cell label_, _Traced channel_, etc.
627
+
628
+
### Arbor Chooser
629
+
This section of the toolbar allow for filtering the display of arbors in the Path Manager list. It includes the following controls:
630
+
631
+
- <iclass="fas fa-undo"></i> **Show All Arbors**: Clears any filtering and shows all paths in the list
632
+
633
+
-**Drop‑down Choice**: Allows you to 'Jump to' a specific arbor in the list. If _Hide others_ (see below) is active, choosing an arbor limits the list to only that arbor’s paths
634
+
635
+
- <iclass="fas fa-sort"></i> **Next Arbor**: Cycles the Arbor choice to the next entry
636
+
637
+
- <iclass="fas fa-arrows-to-eye"></i> **Hide Others**: Shows only the arbor chosen in the drop‑down. If selected the Path Manager list is filtered to the select choice. If unselected all arbors are shown. Toolbar actions (Zoom, Bookmark, see below) honor this filter.
638
+
639
+
## Zoom to Selected Path(s)
640
+
<iclass="fas fa-object-group"></i> Centers and zooms the image view to encompass the selected paths
641
+
642
+
## Zoom to Selected Node(s)
643
+
<iclass="fas fa-crosshairs"></i> Navigates to specific node locations on the selected paths, such as their midpoint, first/last branch point, etc. When a single path is selected, it is also possible to navigate to its node with the smallest/largest radius
644
+
645
+
## Bookmark Menu
646
+
<iclass="fas fa-bookmark"></i> This menu creates [bookmarks](#bookmarks-tab) at important locations. Two types of bookmarks are possible: 1) Topological locations (branch points, end-points, etc.), and 2) Quality-Control (QC) locations. The latter are locations pertinent to inspection, and review of traced paths, and include:
647
+
648
+
-**Manually Tagged Nodes**: Nodes you previously color‑tagged (e.g., via the tracing canvas)
649
+
-**Nodes With Invalid Radius**: Nodes whose radius is [unset or invalid](#correct-radii)
650
+
-**Putative Crossovers**: These are “apparent crossings” (two or more paths passing very near without being topologically connected), automatically detected by SNT's algorithms. These are described in more detail in [Walkthroughs](./walkthroughs#detecting-crossovers). Note that detecting putative crossovers can be computationally heavy for large datasets. Start with a modest selection of paths and widen it as needed
651
+
652
+
619
653
## Menu Commands
620
654
621
655
### Edit ›
@@ -965,7 +999,7 @@ Filters can be combined using the <i class="fa fa-filter"></i> button: It restri
965
999
966
1000
## Contextual Menu
967
1001
968
-
The Path Manager contextual menu offers convenience options to sort Paths, collapse/expand selections, and access children of Paths.
1002
+
The Path Manager contextual menu offers convenience options to collapse/expand selections, access children of Paths, etc.
Copy file name to clipboardExpand all lines: _pages/plugins/snt/walkthroughs.md
+62Lines changed: 62 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -525,6 +525,68 @@ In addition to defined delineations, plots and tables may include two other cate
525
525
{% include notice icon="info" content="Topological constraints may not allow certain metrics to be computed for a particular delineation. E.g., a metric that requires a [graph-theoretic tree](./analysis#graph-based-analysis) may not be computed for a delineation defined by a non-contiguous ROI." %}
526
526
527
527
528
+
# Detecting Crossovers
529
+
530
+
A crossover is a spot where at least two neurites pass very close to each other in space (so they may look like they intersect in the image) but they are not connected in the reconstructed graph (i.e., there is no shared node / true topological join). Identification of crossover sites is thus useful to disambiguate overlaps between neurites and spot possible tracing mistakes, such as missed branch-points or false merges.
531
+
532
+
{% include img align="center" src="/media/plugins/snt/snt-crossover.svg" caption="Overview of a crossover between two neurites.<br>Left: Seem from top, the two neurites seem to intersect. Right: rotation to front view reveals that the two paths are juxtaposed in the XZ plane." %}
533
+
534
+
535
+
## Algorithm
536
+
537
+
Crossover events between two paths, _Path A_ and _Path B_, are detected as follows:
538
+
1. Seeds:<br>
539
+
All tracing nodes from both paths plus segment midpoints are used as seed points (midpoints help catch “T‑like” geometries where a node lies near the middle of another path’s segment). Midpoints are flagged so they can be treated specially later
540
+
2. Proximity mining:<br>
541
+
A uniform 3‑D grid is built with cell size equal to the _proximity radius_. For each seed, the 27‑cell neighborhood (the seed’s cell ± 1 in x/y/z) is queried; candidate pairs are kept if their Euclidean distance ≤ _proximity_ and they satisfy a series of optional criteria
542
+
3. Candidate grouping:<br>
543
+
Candidate pairs are grouped by unordered (_Path A_, _Path B_) pairs, then sorted by index (_iA_, _iB_) and deduplicated. Each group is split into monotonic "runs". A run is accepted if its length is within a specified cutoff, or if it is a single‑pair run that touches an endpoint
544
+
4. Geometric verification:<br>
545
+
For each accepted run, all corresponding segment pairs are examined: the closest points and distances between segments are computed, as well as an orientation‑invariant approach angle (0–90°) from local tangents. The center of the crossover event is the mean of closest‑point midpoints; the median distance and median angle summarize the run. Optional angle thresholds can be applied
546
+
5. Merging:<br>
547
+
Nearby events (centers within _proximity_) are merged: the center is averaged, participants are unioned, index windows are merged, the distance becomes the minimum of medians, and the angle becomes the mean of medians
548
+
6. Validation:<br>
549
+
A final post‑hoc filter keeps an event only if at least one path node from a participant path is near the event center. This removes spurious “floating” events
550
+
551
+
## Obtaining Crossover Locations
552
+
553
+
From the GUI, the easiest way to list crossover events is to use the [Bookmark option](./manual#bookmark-menu) in the [Navigator Toolbar](./manual#navigation-toolbar). For advanced detections, [scripting](./scripting) is advised.
554
+
555
+
In a script, detection settings are specified in a _Config_ object, example:
556
+
557
+
{% highlight java %}
558
+
// groovy
559
+
import sc.fiji.snt.util.CrossoverFinder
560
+
561
+
cfg = new CrossoverFinder.Config()
562
+
.proximity(2.0) // The Neighborhood radius [real‑world units (e.g., µm)] used 1) for the coarse grid query during candidate mining, and 2) to merge nearby events
563
+
.thetaMinDeg(0.0) // Minimum approach angle (0–90°) required to accept an event. Use 10–20° to suppress nearly parallel neurites
564
+
.minRunNodes(2) // Minimum length of a “near‑pair run”. Neurites need to have at list this no. of nodes at the crossover site for it to be detected
565
+
.sameCTOnly(true) // Only compare paths with the same channel and frame?
566
+
.includeSelfCrossovers(false) // Allow detections within the same neurite? Generally keep false
567
+
.includeDirectChildren(false) // Allow detections within a path and its direct child? Generally keep false
568
+
.nodeWitnessRadius(-1.0); // Post‑hoc filter: A crossover event is only kept if at least one participant path has an actual node (not a midpoint) within this radius of the event center. Default (-1) instructs proximity value
569
+
{% endhighlight %}
570
+
571
+
Once the config is defined, events can be detected from any collection of paths:
// Optional: create a bookmark or navigate to xyzct[0..2]
587
+
}
588
+
{% endhighlight %}
589
+
528
590
# Generating *Filtered Images* in Bulk
529
591
530
592
This section describes how to generate [Filtered Images](/plugins/snt/manual#tracing-on-secondary-image-layer) outside SNT in bulk. Note that there are [many tutorials](/scripting/batch) on this topic. Arguably, the easiest way to process multiple images is to 1) record a macro that processes a single image, then 2) wrap it in a loop to iterate over all files in a directory. For example, using IJ1 macro language:
0 commit comments