diff --git a/_pages/plugins/snt/big-data.md b/_pages/plugins/snt/big-data.md
index 6c9a19e20f..1311e98b43 100644
--- a/_pages/plugins/snt/big-data.md
+++ b/_pages/plugins/snt/big-data.md
@@ -25,11 +25,11 @@ The following operations are currently supported:
| Manual and semi-automated tracing | Supported (experimental)1 | Multi-dimensional images have not been thoroughly tested |
| Automated tracing | Supported (experimental) | See [Auto-tracing](./auto-tracing#grayscale-images)1,2 |
| Tracing along way-points | Supported | |
-| [Path optimization](./manual#refinefit-) | Supported | |
+| [Path optimization](./manual#refinefit-) | Supported | See [Re-trace With A*](./manual#re-trace-with-a) |
| 3D Visualization: Interactive re-slicing browser | Supported via [BigDataViewer](./manual#big-data-viewer) | |
| 3D Visualization: Interactive volume viewer | Supported via [BigVolumeViewer](./manual#big-volume-viewer) and [sciview](./manual#sciview) | Includes [Slab View](#slab-view) for restricting rendering to a thin, adjustable region of the volume |
-| Stream-specific workflows | Supported (experimental) | [Materialized crops](./snt-stream#materialized-crops), [channel unmixing](./snt-stream#channel-unmixing), and [Quick Connect](./snt-stream#editing): see [SNT Stream](./snt-stream) |
-| Multidimensional operations | Limited support | Tracing handles one active channel/frame at a time for performance reasons. Commands that require exposing all channels/frames to be available at once [may not be supported](#limitations-and-idiosyncrasies) |
+| Stream-specific workflows | Supported (experimental) | [Materialized crops](./snt-stream#materialized-crops), [channel unmixing](./snt-stream#channel-unmixing), and [Quick Connect](./snt-stream#editing) |
+| Multidimensional operations | Limited support | Tracing handles one active channel/frame at a time for performance reasons. Commands that require exposing all channels/frames to be available at once may require [data crops](#limitations-and-idiosyncrasies) |
1For collaborative tracing, please use [HortaCloud](https://hortacloud.org/): This is SNT's development team recommended tool for tracing Terabyte-size datasets in a collaborative environment
@@ -56,7 +56,7 @@ Choose _Big Data..._ from the [Shortcuts Window](./manual#snt-commands). In the
|---|---|---|
| **Display** | 3D volume rendering | Interactive reslicing |
| **Hardware** | Discrete graphics card recommended | No GPU needed |
- | **[Slab View](#slab-view)** | Available | N/A |
+ | **[Slab view](#slab-view)** | Available | N/A |
| **[Channel unmixing](./snt-stream#channel-unmixing)** | Computed per slab | Live |
Choose BVV for sparsely labeled data, modern hardware, and a fast disk or network connection. Choose BDV for dense, feature-rich images, modest hardware, or slow connections.
@@ -65,14 +65,14 @@ Choose _Big Data..._ from the [Shortcuts Window](./manual#snt-commands). In the
- **Load Remote Demo**: Pre-fills all fields with a remote demo (marmoset neurons, OME-Zarr, with autotracings and soma markers, using BVV with tracing enabled)
-All inputs can be local paths or remote URLs (including http and s3 links). Only _Main volume_ is mandatory.
-{% include notice icon="info" content="**[SNT Stream](./snt-stream) remains experimental**." %}
+
+{% include notice icon="info" content="**All inputs can be local paths or remote URLs. Only _Main volume_ is mandatory**." %}
## Limitations and Idiosyncrasies
-- **One channel/frame at a time**: for performance reasons, one channel/frame is streamed for tracing at once. Commands that require all channels/frames available simultaneously (e.g., [Multispectral Refinement](./manual#multispectral-refinement)) are not supported
+- **One channel/frame at a time**: for performance reasons, one channel/frame is streamed for tracing at once. Commands that require all channels/frames available simultaneously (e.g., [Multispectral Refinement](./manual#multispectral-refinement)) require [materialized regions](./manual#materialize-regions).
- **Fixed search algorithm**: the A* search algorithm is used for interactive tracing; the alternate NBA*/Fast Marching options available for in-core images may not be offered in Stream mode
- **Cached image statistics**: Access to cost-function tuning and [image-statistics options](./manual#algorithm-settings) remains available. However, since _Compute Now For Whole Image_ scans the entire streamed dataset once, it can be _slow_ depending on dataset size and network/disk speed. Use _Compute Real-Time_ (the default) instead: It recalculates local statistics as you trace new regions.
- **3D Scene recentering on click**: whether/how the view recenters as you place tracing points is configurable from the toolbar's options menu (_Never_ / _Adaptive_ / _Always_). _Adaptive_ is the recommended default for streamed data: it skips recentering for clicks that already land close to the focal plane, and briefly gates subsequent clicks after a recenter fires, giving tile streaming time to catch up
@@ -96,13 +96,13 @@ Slab View switches itself off if the view no longer intersects the slab, and whe
[Big volume viewer](./manual#big-volume-viewer) and [Big data viewer](./manual#big-data-viewer) are at the core of Big-data support. Standard formats (TIFF, and anything readable via [Bio-Formats](/formats/bio-formats)) are loaded as regular in-memory volumes, with an option to downsample automatically if a volume exceeds the GPU's 3D texture limits.
Imaris (.ims) files are supported via an automatically generated BDV-XML sidecar written next to the original file.
-For genuinely large datasets, BDV XML/HDF5, N5, and OME-Zarr/OME-NGFF containers are opened virtually: data is streamed from disk in blocks as needed. N5 and Zarr containers are read directly, with no XML sidecar required. Remote data can be also be loaded using URLs.
+For genuinely large datasets, BDV XML/HDF5, N5, and OME-Zarr containers are opened virtually: data is streamed from disk in blocks as needed. N5 and Zarr containers are read directly, with no XML sidecar required. Remote data can be also be loaded using URLs.
-### Non-pyramidal and oversized volumes
+### Non-pyramidal and Oversized Volumes
BVV's 3D renderer requires a multi-resolution pyramid, and a single GPU texture has size limits. If the _Main volume_ does not satisfy these and BVV is chosen, SNT prompts you for how to proceed:
-- **Non-pyramidal N5/Zarr**: Choose _Build Pyramid_ to have SNT compute the coarser levels on demand (volumes that fit in memory are first copied locally, which may take a while for remote datasets)
+- **Non-pyramidal Zarr/N5**: Choose _Build Pyramid_ to have SNT compute the coarser levels on demand (volumes that fit in memory are first copied locally, which may take a while for remote datasets)
- **Image too large for a single GPU texture**: This happens when a dimension exceeds the 3D texture limit of your graphics card, or when the volume has too many voxels per channel. You can choose between:
- _Downsample_: Shrinks the image so that it fits. Opens quickly, but fine detail is lost
- _Load at full resolution_: Loads every voxel into memory as a tiled pyramid. Requires substantial memory, and is a rendering only: it cannot be used for tracing
diff --git a/_pages/plugins/snt/key-shortcuts.md b/_pages/plugins/snt/key-shortcuts.md
index 47f599b914..aee662519b 100644
--- a/_pages/plugins/snt/key-shortcuts.md
+++ b/_pages/plugins/snt/key-shortcuts.md
@@ -13,7 +13,7 @@ update-site: Neuroanatomy
{% include snt-modes %}
{% capture version%}
-**This page was last revised for [version 5.0.13](https://github.com/morphonets/SNT/releases)**.
+**This page was last revised for [version 5.0.21](https://github.com/morphonets/SNT/releases)**.
{% endcapture %}
{% include notice icon="snt" content=version %}
@@ -32,13 +32,12 @@ The [Command Palette](manual#command-palette) ({% include key keys='ctlcmd|Shift
{% capture legend %}
Unless marked, shortcuts work in all tracing canvases: the classic XY/ZY/XZ views and [SNT Stream](./snt-stream) (BDV/BVV). Marked shortcuts are limited to one of them:
-| {{ crop }} | Requires an image loaded as an ImagePlus: the classic canvas, or a _materialized crop_ in [Stream Mode](./snt-stream) |
-| {{ stream }} |Stream Mode only |
+{{ crop }} → Requires an image fully loaded into memory: A traditional image or a [materialized regions](./manual#materialized-regions) in Stream mode
+{{ stream }} → Stream Mode only
-In Stream Mode, BDV/BVV's own shortcuts are retained unless noted otherwise. The full list of active shortcuts can be accessed from the options drop-down menu of the _Scene Controls_ widget of BDV/BVV.
-The [Legacy 3D Viewer](#legacy-3d-viewer) does not support most of the shortcuts listed here.
+In Stream Mode, BDV/BVV's own shortcuts are retained unless noted otherwise.
{% endcapture %}
-{% include notice icon="info" content=legend %}
+{% include notice icon="snt-stream" content=legend %}
### Interactive Prompt
diff --git a/_pages/plugins/snt/manual.md b/_pages/plugins/snt/manual.md
index 2f4eeae34f..2fc2cede85 100644
--- a/_pages/plugins/snt/manual.md
+++ b/_pages/plugins/snt/manual.md
@@ -8,6 +8,8 @@ forum-tag: snt
tags: snt,reconstruction,tracing,arbor,neuron,morphometry,dendrite,axon,neuroanatomy
---
+{% include snt-modes %}
+
{% capture version%}
**This page was last revised for [version 5.1.0](https://github.com/morphonets/SNT/releases)**.
Please help us to keep up-to-date documentation by [editing](https://github.com/imagej/imagej.github.io/edit/main/_pages/plugins/snt/manual.md) this page directly to fill in any documentation gap. Do [reach out](https://forum.image.sc/tag/snt) if you need assistance!
@@ -42,6 +44,8 @@ SNT is initialized by running {% include bc path='Plugins|NeuroAnatomy|SNT...' %
- **Tracing Channel** Specifies the image channel to trace on (this option is ignored with single-channel images).
+> Throughout the documentation, {{ crop }} flags features that require an image loaded in memory (a regular image, or a [materialized region](./snt-stream#materialized-regions) of a stream), and {{ stream }} flags features that only exist in [SNT Stream](./snt-stream).
+
# Main Dialog
{% include img align="center" src="/media/plugins/snt/snt-main-gui.png" caption="Overview of main dialog (left). Note that clicking on the headings separating the different widgets will point your browser to the relevant section of this manual!" %}
@@ -52,7 +56,7 @@ SNT is initialized by running {% include bc path='Plugins|NeuroAnatomy|SNT...' %
Lists commands for I/O operations. Most are self-explanatory. Noteworthy:
-#### Choose Tracing Image...
+#### {{ crop }} Choose Tracing Image...
Specifies the image to trace on without having to restart SNT. Commands include:
@@ -77,11 +81,11 @@ All SNT dialogs (including the _Neuroanatomy Shortcut Window_ support drag-and-d
{% endcapture %}
{% include notice icon="info" content=dnd %}
-#### Load Demo Dataset...
+#### {{ crop }} Load Demo Dataset...
Loads a demo dataset (a tracing image, a reconstruction, or both). Use this to familiarize yourself with the software, explore [Walk‑throughs](/plugins/snt/walkthroughs), and to create [Minimal reproducible examples](https://en.wikipedia.org/wiki/Minimal_reproducible_example) when reporting problems. The bottom part of the dialog describes each dataset including source, citation, and DOI (when available). Note that while some of the data is bundled with SNT, the majority of the datasets is downloaded from remote servers (internet connection required).
-#### Load Labels (AmiraMesh)...
+#### {{ crop }} Load Labels (AmiraMesh)...
{% include img src="/media/plugins/snt/load-demo-dialog.png" align="right" width="300px" %}
This option assumes you are tracing on the same spatial coordinates of an annotated neuropil for which compartments have been segmented (*labeled*) and stored in an [Amira](https://amira.zib.de/) labels file. Once loaded, SNT will report the name of the compartments in the ImageJ status bar when hovering over the image.
@@ -89,10 +93,10 @@ This option assumes you are tracing on the same spatial coordinates of an annota
#### Save Tracings...
Saves all paths to a TRACES file. Shortcut: {% include key key='ctlcmd|S' %}
-#### Save Tracings & Open Next Image
+#### {{ crop }} Save Tracings & Open Next Image
When an image is loaded the program also checks if there are other images in the same directory. This command saves current tracings alongside the image file, then loads the next image (alphabetically) in the same folder. This facilitates tracing multiple images. Note that only file extensions in _Next/Prev image: suffix filter_ in the [Additional Options...](#misc) prompt are considered (default is ".tif", ".tiff"). Shortcut: {% include key key='ctlcmd|Shift|O' %}
-#### Save Tracings & Open Previous Image
+#### {{ crop }} Save Tracings & Open Previous Image
Similar to [Save Tracings & Open Next Image](#save-tracings--open-next-image): Saves the tracing in the same directory, then loads the previous image in the same folder. Shortcut: {% include key key='ctlcmd|Alt|O' %}
#### Save Tracings As...
@@ -269,9 +273,9 @@ Contains commands for organizing tracing views on screen, plus commands for disp
- **{% include bc path='Arrange Dialogs' %}** Resets the on-screen positions of dialogs and widgets.
-- **{% include bc path='Arrange Tracing Views' %}** Resets the on-screen positions of tracing views.
+- {{ crop }} **{% include bc path='Arrange Tracing Views' %}** Resets the on-screen positions of tracing views.
-- **{% include bc path='Hide Tracing Canvas| ' %}** Allows toggling of the visibility of the three orthogonal view tracing panes as well as the Legacy 3D View window.
+- {{ crop }} **{% include bc path='Hide Tracing Canvas| ' %}** Allows toggling of the visibility of the three orthogonal view tracing panes as well as the Legacy 3D View window.
- **{% include bc path='Display Secondary Image' %}** Displays the cached filtered image being used as secondary tracing layer.
@@ -297,12 +301,14 @@ This *home* tab aggregated widgets for tracing and frequent operations.
{% include notice icon="snt-stream" content="Some widgets that require images to be fully loaded into memory may be disabled in [Stream Mode](./snt-stream)." %}
-### Data Source
+### {{ crop }} Data Source
+
If tracing on a multidimensional image (i.e., one with multiple channels and/or multiple time points), a particular channel/frame can be loaded into the views by selecting each and pressing the "Reload" button. By default, new values need to be confirmed in a confirmation prompt. If this is too cumbersome, the *Auto-load CT position of new paths* option automatically loads the active channel/frame when a new path is started. Note that this option may not be compatible with [secondary layers](#tracing-on-secondary-image-layer) and [Z-projection overlays](#views).
-### Cursor Auto-snapping
+### {{ crop }} Cursor Auto-snapping
+
**Enable Snapping** If active (the default) the cursor snaps to the brightest voxel in its vicinity (Toggling shortcut: {% include key key='S' %}). To accomplish this, SNT takes the cuboid of the specified dimensions (in pixels) centered on the current cursor position, searches quickly for local maxima in that neighborhood, and moves the cursor to that position. The Z-plane in which the maximum was found is automatically selected if the "Z" parameter is greater than 0. Noteworthy:
@@ -329,7 +335,7 @@ If tracing on a multidimensional image (i.e., one with multiple channels and/or
-- **Enable A\* search algorithm** By default, SNT uses the {% include wikipedia title="A* search algorithm" text="A* search algorithm" %} to automatically trace paths between two manually selected points. To manually place nodes along a path, toggle this feature off. Note that it is also possible to enable other built-in algorithms or algorithms provided by external SNT add-ons. Current options include:
+- {{ crop }} **Enable A\* search algorithm** By default, SNT uses the {% include wikipedia title="A* search algorithm" text="A* search algorithm" %} to automatically trace paths between two manually selected points. To manually place nodes along a path, toggle this feature off. Note that it is also possible to enable other built-in algorithms or algorithms provided by external SNT add-ons. Current options include:
- **A\* search**: Canonical and proven implementation of the historic algorithm, ported from [Simple Neurite Tracer](/plugins/snt/faq#what-is-the-difference-between-snt-and-simple-neurite-tracer)
@@ -341,11 +347,11 @@ If tracing on a multidimensional image (i.e., one with multiple channels and/or
Independently of the algorithm used, the algorithm drop-down menu in this pane provides options to tweak the performance, accuracy and efficieny of the computations involved in the search. These include:
-- **Data structure** Defines how data is stored internally: Either _Map_ (slightly slower, but lower computation footprint), or _Array_ (slightly faster, but higher footprint)
+- **Data structure** {{ crop }} Defines how data is stored internally: Either _Map_ (slightly slower, but lower computation footprint), or _Array_ (slightly faster, but higher footprint)
{% include img src="/media/plugins/snt/snt-cost-function-wizard.png" align="right" caption="Not sure which cost function suits your image? Use _Cost Function Selection Wizard..._ to compare all variants on a representative neurite segment: Each variant's candidate path is overlaid on a cropped view of the source image so you can pick the most suitable. The wizard accepts either a short traced path, a Path Manager selection, or (in-memory images only) a multi-point ROI (2+ points) as the probe segment" width="450px" %}
-- **Cost Function** Interactive tracing algorithms aim to find a path to the destination node under the smallest _cost_ of deviating from the signal along a neurite. A successful search between two points is thus the _cheapest_ path with the least deviations. This is implemented through a _cost function_ in which voxels along a neurite are assigned lower costs, while voxels outside the neurite are assigned higher costs or penalties. SNT implements several _cost functions_, namely:
+- **Cost Function** Interactive tracing algorithms aim to find a path to the destination node under the smallest _cost_ of deviating from the signal along a neurite. A successful search between two points is thus the _cheapest_ path with the least deviations. This is implemented through a _cost function_ in which voxels along a neurite are assigned lower costs, while voxels outside the neurite are assigned higher costs or penalties. SNT implements several _cost functions_, namely:
- **Reciprocal of Intensity** The default, robust under a wide range of conditions
@@ -361,9 +367,9 @@ If tracing on a multidimensional image (i.e., one with multiple channels and/or
- **Specify Manually** Advanced option for users with a quantitative understanding of the image. Searches may consider pixels outside neurites when maximum in over-estimated, and may take significantly longer when it is under-estimated, since each pixel will carry a greater-than-reasonable cost
- - **Compute Once** Statistics are computed once for the whole image (may take a while for large images) and stored in memory. If enough RAM is available this _may_ speed up searches. Although in real-word usage any speed-gains relatively to _Compute Real-Time_ seem negligible on modern hardware
+ - **Compute Now For Whole Image** Statistics are computed once for the whole image (may take a while for large images) and stored in memory. If enough RAM is available this _may_ speed up searches. Although in real-word usage any speed-gains relatively to _Compute Real-Time_ seem negligible on modern hardware
-- **Tracing Mode** Allows toggling between _Standard_ (the default) and _Live Preview_. In _Live Preview_ (also known as "rubber band" tracing), the path to the cursor position is continuously displayed as you move the mouse. Note that this option is only recommended for 2D images
+- {{ crop }} **Tracing Mode** Allows toggling between _Standard_ (the default) and _Live Preview_. In _Live Preview_ (also known as "rubber band" tracing), the path to the cursor position is continuously displayed as you move the mouse. Note that this option is only recommended for 2D images
### Tracing on Secondary Image (Layer)
@@ -401,7 +407,7 @@ The wizard needs two types of information from the user: The type of filtering o
- **Spectral Similarity (Brainbow / Multichannel)** A filter designed for multichannel images in which neurites are labeled by multiple fluorophores such as Brainbow data. Instead of enhancing structural features, it computes how well each voxel's color (channel-intensity vector) matches a reference color derived from traced paths. The output combines cosine similarity (directional match) with an intensity factor (brightness match), producing a scalar map in [0, 1] where high values indicate voxels matching the target neuron's spectral signature. This filter does not require σ values: the _Scale(s)_ field is automatically set to "unused". See _Scale(s)_ below for how to define the reference color.
-{% include notice icon="snt-stream" content="Filters that require the entire image to reside in memory are not available in [Stream Mode](./snt-stream)." %}
+{% include notice icon="snt-stream" content="Filters that require the entire image to reside in memory require a [materialized region](./snt-stream#materialized-regions) when in [Stream Mode](./snt-stream)." %}
- **Scale(s)** Also known as _sigma(s)_ (σ). These should reflect average radii of the structures being traced. If smaller values are specified, the filter becomes more sensitive to noise. Larger values on the other hand, make the filtering operation less sensitive to local shape characteristics. There are two ways to select this values:
@@ -443,9 +449,9 @@ This widget reports current settings (cost function, image statistics, etc.). Re
By default, all the nodes of a path are projected onto the current Z-slice. This is useful to see how much has been completed and gives a sense of the overall structure of the reconstruction. However, SNT provides three additional visibility options for paths:
-1. **Only selected paths (hide deselected)** Only show paths that have been manually selected in the Path Manager or with the {% include key key='G' %} key ({% include key keys='Shift|G' %} to select multiple paths).
+1. {{ crop }} **Only selected paths (hide deselected)** Only show paths that have been manually selected in the Path Manager or with the {% include key key='G' %} key ({% include key keys='Shift|G' %} to select multiple paths).
-2. **Only nodes within {x} nearby Z-slices** Only highlight nodes within {x} number of Z-slices on either side of the current slice. The projected skeletons of all paths remain visible.
+2. {{ crop }} **Only nodes within {x} nearby Z-slices** Only highlight nodes within {x} number of Z-slices on either side of the current slice. The projected skeletons of all paths remain visible.
3. **Only paths from active channel/frame** If tracing on a multichannel image or an image with a time axis, only show paths from the active channel or frame.
@@ -478,7 +484,8 @@ The [Path Manager](#path-manager) offers several ways to colorize Paths:
This tab aggregated widgets for advanced settings.
-### Views
+### {{ crop }} Views
+
- **Overlay MIP(s) at X% opacity** Overlays the {% include wikipedia title="Maximum intensity projection" %} of the image "over" the image canvas at the specified opacity. The overlaid projection is only used as a visualization aid and is ignored by the tracing algorithms. It is rendered using the LUT of the channel currently being traced. To reload the overlay (e.g., in case the image being traced changes during a tracing session) toggle the checkbox twice.
@@ -492,10 +499,15 @@ This tab aggregated widgets for advanced settings.
- **Invert LUT** Convenience shortcut for inverting the LUT of tracing image. If using a display canvas, the button toggles between a white, gray, or black backgrounds
+The contents of this widget changes between traditional (in-memory) images and [SNT Stream](./snt-stream). With traditional images it hosts two extra buttons:
+
- **Create/Resize Canvas** If using a display canvas to view reconstructions, reset its dimensions to the default. If the tracing image has been closed, it creates a display canvas for current paths. Note that this command does not resize the actual image being traced. To do so, use ImageJ's command {% include bc path='Image | Adjust | Canvas Size...' %}
- **Display ZY/XZ views** If currently using the XY only view, display the ZY and XZ views as well.
+With {{ stream }} streamed data, it includes a **[Materialize Region](./snt-stream#materialized-regions)** option that allows you to obtain in-memory portions of the streamed volume.
+
+
### Temporary Paths
- **Confirm temporary segments** If active, prompts for either confirmation or denial of whether to keep an unconfirmed path segment. If inactive, automatically confirms the path segment created on each subsequent node placement after starting a path. Applies to both auto-traced and manually traced path segments. The following two settings are only toggle-able when this setting is active:
@@ -515,7 +527,8 @@ Whether a path should be automatically selected once finished.
If selected the default shortcut for branching off a path ( {% include key key='Alt|Left-click' %} ) becomes {% include key key='Shift|Alt|Left-click' %}, which avoids conflict with OS-level shortcuts (in several Linux distributions, {% include key key='Alt|Left-click' %} is a common shortcut for dragging windows around the screen).
-### Path Rendering
+### {{ crop }} Path Rendering
+
- **Draw diameters** Displays the stored diameter (if any) in the XY view for all existing nodes. Each diameter is drawn as a line segment with length = diameter, which is bisected by the orthogonal tangent vector to the path at that node.
@@ -542,7 +555,7 @@ The render opacity (in percentage) for path segments that are above/below the ac
- **Fills** The pixels that have been reached by the Fill search
- **Unconfirmed** and **Temporary** paths.
-- **Activate canvas on mouse hovering** If active, moving the mouse cursor over any of the views automatically brings the view window into focus, allowing it to receive input.
+- {{ crop }} **Activate canvas on mouse hovering** If active, moving the mouse cursor over any of the views automatically brings the view window into focus, allowing it to receive input.
- **Skip confirmation dialogs** If active, disables the "*Are you sure?*" prompt preceding major actions. Note that this option does not apply to irreversible actions such as deleting paths.
@@ -678,7 +691,7 @@ Removes the most recently selected path from the selection (leaving nothing sele
### Select None {% include key key='Shift|Alt|G' %}
Clears the path selection.
-### Lasso Select Paths
+### {{ crop }} Lasso Select Paths
A convenience utility to select path(s) quickly. One the command is run, it is possible to draw an area ROI around the paths of interest, so that path(s) intersecting ROI boundaries can be selected. The shape of the ROI (rectangle, oval, freehand, etc.) is determined by the area ROI tool currently selected in ImageJ's main toolbar
### Hide Paths (Hold {% include key key='H' %})
@@ -687,7 +700,7 @@ Temporarily hides all paths and annotations to reveal the underlying image while
- Verifying path accuracy against the original signal
- Taking screenshots of the unobstructed image
-### Path Orientation (Hold {% include key key='O' %})
+### {{ crop }} Path Orientation (Hold {% include key key='O' %})
Temporarily displays directional arrows along paths indicating their orientation (start→end) while held. Useful for:
- Verifying directionality when merging or connecting paths
- Checking path orientation before analysis
@@ -700,7 +713,7 @@ Described in [Bookmarks Tab](#bookmarks-tab).
### Sholl Analysis at Nearest Node {% include key keys='Shift|Alt|A' %}
Described in [Analysis › Sholl Analysis (by Focal Point)](/plugins/snt/analysis#sholl-analysis-by-focal-point).
-### Click on Brightest Voxel Above/Below Cursor {% include key key='V' %}
+### {{ crop }} Click on Brightest Voxel Above/Below Cursor {% include key key='V' %}
Finds the brightest Voxel above and below the current x,y position and automatically clicks on it. If multiple maxima exist, their average positioning is used. Note that this feature assumes that neurites are brighter than the background.
### Continue Extending Path
@@ -718,7 +731,7 @@ Finishes the temporary path. Note that a path can always be finished by {% inclu
## Edit Mode {% include key keys='Shift|E' %}
Pressing *Edit Mode*, selects the nearest path for editing, unlocking the edit options. When *Edit Mode* is active, moving the mouse cursor along the path will highlight the nearest node with a crosshair icon and synchronize the current Z-slice to the location of that node. Note that the ability to create new paths is temporarily disabled when in *Edit Mode*. For brush-based editing of multiple nodes at once, see [Paint Mode](#paint-mode-p) below.
-### Bring Active Node to Current Z-plane {% include key key='B' %}
+### {{ crop }} Bring Active Node to Current Z-plane {% include key key='B' %}
Moves the active node to the active Z-plane. Note that the translation is only done in Z. XY positions are unchanged.
### Connect To (...) {% include key key='C' %}
@@ -743,6 +756,15 @@ A confirmation dialog shows the connection summary with an option to swap parent
See also this [walkthrough](/plugins/snt/walkthroughs#mergingjoining-paths).
+### {{ stream }} Quick Connect... {% include key key='Shift|C' %}
+This is an expedite strategy for branching off paths, only available in [Stream mode](./stream-mode):
+
+1. Press {% include key keys='Shift|C' %} (or choose _Quick Connect..._ from the contextual menu) with the cursor near the node of the edited path that should be connected
+2. Move the cursor over the node to connect to: the cursor snaps to the closest node of any other path (within 150 pixels), a dotted line shows the link, and the status message reports the gap
+3. Click, press {% include key key='Enter' %}, or press {% include key keys='Shift|C' %} again to connect. Press {% include key key='Esc' %} to cancel
+
+The edited path becomes the child of the target. Branches of the edited path are dimmed, since connecting to them would create a loop.
+
### Delete Active Node {% include key key='D' %}
@@ -769,7 +791,7 @@ Reorganizes the existing tree so that the active node becomes its root.
### Split Tree at Active Node {% include key key='X' %}
Splits the current tree into two subtrees by disconnecting the active node from its parent structure
-### Paint Mode {% include key key='P' %}
+### {{ crop }} Paint Mode {% include key key='P' %}
Toggles Paint Mode, a brush-based sub-mode of Edit Mode for adjusting paths. In Paint Mode, operations fade smoothly from full effect at the cursor to no effect at the brush edge, like a soft brush in image editors. The brush radius (number of flanking nodes affected) is displayed in the status label.
**{% include key keys='Drag' %}** Moves nodes within the brush radius toward the cursor, weighted by proximity to the center node (Gaussian-like displacement)
diff --git a/_pages/plugins/snt/snt-stream.md b/_pages/plugins/snt/snt-stream.md
index 894eea3dc2..479f8a0c97 100644
--- a/_pages/plugins/snt/snt-stream.md
+++ b/_pages/plugins/snt/snt-stream.md
@@ -30,22 +30,22 @@ Tracing, editing, and shortcuts work the same way in both viewers.
2. Press {% include key key='Enter' %} to finish the current path, or {% include key key='Esc' %} to discard it.
3. Press {% include key key='Z' %}, or use the **Undo Last Segment** button on the toolbar, to step back one click at a time along the path currently being traced.
4. Switch the active channel/frame from the toolbar as needed; only one is streamed for tracing at a time (see [big data limitations](./big-data#limitations-and-idiosyncrasies)).
-5. Finished paths land in the Path Manager exactly as they would from any other SNT session: save, curate, and analyze them as usual.
+5. Finished paths land in the Path Manager exactly as they would from any other SNT session: [save](./manual#save-tracings), [curate](./curation#curation-assistant), and [analyze](./analysis) them as usual.
6. If tracing manually, use [Re-trace With A*](./manual#re-trace-with-a) asynchronously to refine the curvature of traced paths.
## What Differs From In-Core Tracing
Most of SNT works the same way in a streamed scene and in an image loaded in memory: the same [shortcuts](./key-shortcuts) and [contextual menu](./manual#image-contextual-menu) apply, and paths are handled by the same Path Manager. The differences are summarized below.
-> Throughout the documentation, {{ crop }} flags features that require an image loaded in memory (a regular image, or a [materialized crop](#materialized-crops) of a stream), and {{ stream }} flags features that only exist in SNT Stream.
+> Throughout the documentation, {{ crop }} flags features that require an image loaded in memory (a regular image, or a [materialized region](#materialized-regions) of a stream), and {{ stream }} flags features that only exist in SNT Stream.
-| | {{ stream }} SNT Stream | {{ crop }} Image in Memory |
+| | {{ stream }} SNT Stream | {{ crop }} In-Memory Image |
|---|---|---|
| **Image data** | Streamed and tiled. Only the displayed region/resolution is loaded | Fully loaded in memory |
| **Tracing algorithm** | A* only (currently). See [limitations](./big-data#limitations-and-idiosyncrasies) | A*, NBA*, Fast Marching |
-| **Filters, widgets requiring entire images, and ImageJ-specific workflows (ROIs, etc.)** | Materialized crops only | Available |
-| **Lasso selection, path orientation, brightest-voxel click, paint mode** | Materialized crops only | Available |
+| **Filters, widgets requiring entire images, and ImageJ-specific workflows (ROIs, etc.)** | [Materialized regions](#materialized-regions) only | Available |
+| **Lasso selection, path orientation, brightest-voxel click, paint mode** | [Materialized regions](#materialized-regions) only | Available |
| **[Spacebar behavior](#tracing-and-navigation)** | Panning and tracing toggle | Panning |
| **Unique workflows** | [Channel unmixing](#channel-unmixing), [slab controls](#slab-view) | Orthogonal views |
@@ -109,14 +109,14 @@ Note that:
- The script aborts if the channel count of the dataset differs from the one in the viewer.
-## Materialized Crops
+## Materialized Regions
-Some [features](#what-differs-from-in-core-tracing) need pixel data in memory. A _materialized crop_ is a region of the streamed volume that is copied into memory as a regular image, so these features become available for that region.
+Some [features](#what-differs-from-in-core-tracing) need pixel data in memory. A _materialized region_ is a 3D crop of the streamed volume that is copied into memory as a regular image, so these features become available for that region.
-1. Choose **Materialize Region...** in the _Options_ tab of the main SNT window (it replaces the _Create Canvas_ button of in-core tracing).
+1. Choose **Materialize Region...** in the [Options tab](./manual#-views) of the main SNT window.
2. Choose what to crop: the image being traced (or its secondary layer) and the bounding box: around all paths, around selected paths, one of several presets (e.g., 1024×1024×512 px), or custom dimensions. The box is centered on the scene by default, or on custom coordinates, and is padded by the specified amount (10 calibrated units, by default).
3. Check the estimated size shown at the bottom of the dialog. The region must fit in 80% of the memory still available to Fiji. Regions of 500 MB or more take a while to assemble.
-4. Click **Materialize**. The region opens as the SNT canvas (_Materialized Region_), and {{ crop }} features are enabled.
+4. Click **Materialize**. The region opens as a traditional image (_Materialized Region_), and {{ crop }} features are enabled.
While a region is materialized, tracing is scoped to its bounds. Note that:
@@ -128,13 +128,7 @@ While a region is materialized, tracing is scoped to its bounds. Note that:
## Editing
-Edit Mode ({% include key keys='Shift|E' %}) works as in any SNT canvas. In addition to _Connect To..._ ({% include key key='C' %}), Stream offers **Quick Connect** ({% include key keys='Shift|C' %}), which does not require a secondary path:
-
-1. Press {% include key keys='Shift|C' %} (or choose _Quick Connect..._ from the contextual menu) with the cursor near the node of the edited path that should be connected.
-2. Move the cursor over the node to connect to: the cursor snaps to the closest node of any other path (within 150 pixels), a dotted line shows the link, and the status message reports the gap.
-3. Click, press {% include key key='Enter' %}, or press {% include key keys='Shift|C' %} again to connect. Press {% include key key='Esc' %} to cancel.
-
-The edited path becomes the child of the target. Branches of the edited path are dimmed, since connecting to them would create a loop.
+Edit Mode ({% include key keys='Shift|E' %}) works as in any SNT canvas. In addition to _Connect To..._ ({% include key key='C' %}), Stream offers [Quick Connect](./manual#-quick-connect--8679-shiftc) ({% include key keys='Shift|C' %}), which does not require the child path to be pre-selected.
## See Also
diff --git a/media/icons/SNTStreamLogo.svg b/media/icons/SNTStreamLogo.svg
new file mode 100644
index 0000000000..1217a48df2
--- /dev/null
+++ b/media/icons/SNTStreamLogo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file