Features | Installation | Contributing | Documentation | API | Support
SNT is ImageJ's framework for semi-automated tracing, visualization, quantitative analyses and modeling of neuronal morphology. For tracing, SNT supports modern multi-dimensional microscopy data, and highly-customizable routines. For data analysis, SNT features advanced visualization tools, access to all major morphology databases, and support for whole-brain circuitry data.
SNT can be used as a regular application or as a scripting library. Python (through pyimagej) and all of SciJava's scripting languages are supported. It is distributed with Fiji and supersedes the original Simple Neurite Tracer plug-in. It also incorporates several other neuroanatomy-related Fiji plugins. See SNT's publication and techical notes for details.
- Semi-automated Tracing:
- Support for up to 5D multidimensional images, including multichannel, and timelapse sequences
- Support for both ImageJ1 and ImgLib2 data structures
- Several bi-directional search algorithms (A*, NBA*, Fast marching) with adjustable cost functions allow for efficient computation of curvatures for a wide range of imagery, that are up to 20x faster relatively to the original Simple Neurite Tracer plugin
- Tracing in "secondary layers". This allows for paths to be computed on "enhanced" (pre-processed) images while interacting with the unfiltered, original image (or vice-versa). Toggling between the two data sources is immediate
- Precise placement of nodes is aided by a local search that automatically snaps the cursor to neurites wihin a 3D neighborhood
- Auto-tracing:
- Generation of traces from thresholded images
- Tracing can be interleaved with image processing routines
- Tracing is scriptable. Interactive scripts allow for real-time inspection of results
- Paths can be tagged, searched, grouped and filtered by morphometric properties (length, radius, etc.)
- Paths can be edited, i.e., a path can be linked or merged together, or split into two. Nodes can be moved, deleted, or inserted
- Post-hoc refinement of node positioning and radii by 'fitting' traces to the fluorescent signal associated with a path
- Extensive repertoire of metrics, namely those provided by L-measure and NeuroM. Metrics can be collected from groups of cells, single cells, or parts thereof
- Analysis based on neuropil annotations for whole-brain data such as MouseLight
- Direct access to public databases, including FlyCircuit, Insect Brain Database, MouseLight, NeuroMorpho, and Virtual Fly Brain
- Built-in commands for immediate retrieval of statistical reports, including summary statistics, comparison plots and histograms
- Convex hull analyses
- Graph theory-based analyses
- Persistent homology-based analyses
- Sholl and Horton-Strahler analyses
- Image processing workflows: Reconstructions can be converted to masks and ROIs. Voxel intensities can be profiled around traced paths
- Quantitative visualizations: Display neurons color coded by morphometric traits, or neuropil annotations.
- Publication-quality visualizations: Neuronal reconstructions, diagrams, plots and histograms can be exported as vector graphics
- Reconstruction Viewer: Standalone hardware-accelerated 3D visualization tool for both meshes and reconstructions.
- Interactive and programmatic scenes (controlled rotations, panning, zoom, scaling, animation, "dark/light mode", etc.)
- Customizable views: Interactive management of scene elements, controls for transparency, color interpolation, lightning, path smoothing, etc.. Ability to render both local and remote files on the same scene
- Built-in support for several template brains: Drosophila, zebrafish, and Allen CCF (Allen Mouse Brain Atlas)
- sciview integration
- Graph Viewer: A dedicated viewer for graph-theory-based diagrams
- Display reconstructions as dendrograms
- Quantitative connectivity graphs for single cells and groups of cells
- Almost every aspect of the program can be scripted in any of the IJ2 supported languages, or from Python through pyimagej
- Detailed documentation and examples, including Python notebooks, and end-to-end examples
- Headless scripts supported
- Biophysical modeling of neuronal growth is performed through Cortex3D (Cx3D) and sciview, in which a modified version of Cx3D grows neuronal processes with sciview’s data structures.
- Special effort was put into backwards compatibility with Simple Neurite Tracer (including TrakEM2 and ITK interaction). Inherited functionality has been improved, namely:
- Support for sub-pixel accuracy
- Synchronization of XY, ZY, and XZ views
- Improved "filling" and "fitting" routines
- Multi-threading improvements
- Modernized GUI
- Aggregation of legacy plugins
SNT is a Fiji plugin, currently distributed through the Neuroanatomy update site.
The first time you start SNT from Fiji's menu structure (Plugins>Neuroanatomy>SNT... you should be prompted for automatic subscription and download of required dependencies. If not:
- Run the Fiji Updater (Help › Update..., the penultimate entry in the Help › menu)
- Click Manage update sites
- Select the Neuroanatomy checkbox
- Optionally, select the Sciview checkbox. This is only required for extra sciview functionality
- Click Apply changes and Restart Fiji. SNT commands are registered under Plugins>Neuroanatomy> in the main menu and SNT scripts under Templates>Neuroanatomy> in Fiji's Script Editor.
Problems? Have a look at the full documentation.
Use this button to open the project on the cloud using Gitpod. No local installation necessary.
- Clone this repository (use the green code button above the list of files)
- Import the project into an IDE such as Eclipse/IntelliJ/NetBeans:
- In Eclipse: Run Import> Existing Maven Projects and specify the path to the downloaded
SNT
folder in Root Directory - In IntelliJ: In the Welcome Prompt, choose Open or Import and specify the path to the downloaded
SNT
folder - In NetBeans: Run File> Open Project..., select the downloaded
SNT
directory, and click on Open Project
- In Eclipse: Run Import> Existing Maven Projects and specify the path to the downloaded
- Wait for all the dependencies to be downloaded, and run snt/gui/cmds/SNTLoaderCmd/SNTLoaderCmd.
Useful resources to start hacking SNT:
- main methods found on most classes: These test/showcase some of the class's functionality
- JUnit tests, Script templates and notebooks
Want to contribute? Please, please do! We welcome issues and pull requests any time.