-
Notifications
You must be signed in to change notification settings - Fork 28
Morphology Reconstruction
This panel gives access to the parameters of the Morphology Reconstruction Toolbox. By reconstruction in the context, we mean drawing a three-dimensional skeleton from a morphology file that was originally reconstructed from an optical microscopy stack.
Neuronal morphologies are reconstructed from imaging stacks obtained from different microscopes. These morphologies can be digitized either with semi-automated or fully automated tracing methods. The digitization data can be stored in multiple file formats such as SWC and the Neurolucida proprietary formats. For convenience, the digitized data are loaded, converted and stored as a tree data structure (a data structure representing the dendrogram).
The skeletal tree of a neuron is defined by the following components: a cell body (or soma), sample points, segments, sections, and branches. The soma, which is the root of the tree, is usually described by a point, a radius and a two-dimensional contour of its projection onto a plane or a three-dimensional one extracted from a series of parallel cross sections. Each sample represents a point in the morphology having a certain position and the radius of the corresponding cross section at this point. Two consecutive samples define a connected segment, whereas a section is identified by a series of non-bifurcating segments and a branch is defined by a linear concatenation of sections.
Neuronal branches are, in general, classified based on their types into
- axons,
- apical dendrites and
- basal dendrites.
Note that the three-dimensional profile of the soma that is reconstructed in this skeleton - if requested - is based on the parameters set in the Soma Toolbox panel.
There are various packages that have been developed to analyze and visualize different formats of neuronal morphology skeletons. Free and open source packags are quite limited in their functionality and some of them require installing multiple software dependencies that might make them cumbersome and hard to use. Non-free or proprietary solutions might not be affordable in certain cases and they are only focused on morphology visualizatin. NeuroMorphoVis close the gap and presents a free framework for advanced visualiztion of the morphologies, visual analysis, mesh generation of neuronal membranes and high quality rendering for scientific publications, all integrated in a single tool.
For the record, we list other packages that are used to analyze and visualize morphology skeletons.
- MATLAB-based Morphology Analyzer by J. Ledderose et al, 2014.
-
HBP Morphology Viewer by HBP - Online repository can be found here.
-
NeuronLand: NLMorphologyViewer A simple user interface built on top of the technology developed for the NLMorphologyConverter. Provides a 3D interactive view of neuron morphology data.
-
Web-based neuron morphology viewer by R. Bakker and P. Tiesinga, 2013.
When you toggle (or click on) the Morphology Toolbox tab highlighted above, the following panel, or a similar one depending on the version of NeuroMorphoVis, will appear.
NeuroMorphoVis has support to reconstruct (or draw) neuronal morphologies using various methods including:
- Disconnected Sections
- Disconnected Segments
- Connected Sections
- Articulated Sections
- Progressive
- Samples
- Dendrogram
The method can be selected in GUI from the Method drop down list under the reconstruction options as shown below.
The morphology reconstruction method can also be set in the configuration file as follows:
## Morphology reconstruction method
MORPHOLOGY_RECONSTRUCTION_ALGORITHM=disconnected-sections
The morphology skeleton is drawn as a list of sections, where each section is an independent object that is disconnected from the neighboring sections. The section object is a polyline composed of the section samples.
This mode can be set in the configuration file as follows:
# Morphology reconstruction method
MORPHOLOGY_RECONSTRUCTION_ALGORITHM=disconnected-sections
Each segment in the morphology is drawn as an independent object that is disconnected from the neighboring segments. The segment is a simplified polyline reconstructed from connecting two samples only along the section. This drawing scheme is very useful to visualize and debug the sampling of every section.
This mode can be set in the configuration file as follows:
# Morphology reconstruction method
MORPHOLOGY_RECONSTRUCTION_ALGORITHM=disconnected-sections
This method draws the morphology as a series of connected sections like a stream from the root section to the leaf on every arbor.
This mode can be set in the configuration file as follows:
# Morphology reconstruction method
MORPHOLOGY_RECONSTRUCTION_ALGORITHM=connected-sections
This mode is similar to the Disconnected Sections method, but between every two sections a sphere is inserted as an articulation.
This mode can be set in the configuration file as follows:
# Morphology reconstruction method
MORPHOLOGY_RECONSTRUCTION_ALGORITHM=articulated-sections
This mode visualizes the progressive generation of the arbors from the soma.
This mode is only allowed from the GUI. It cannot be set in the configuration file. Nevertheless, a progressive reconstruction sequence can be generated from the configuration file by setting the following rendering parameter to yes:
# Render a sequence of frames reflecting the progressive skeleton reconstruction
RENDER_NEURON_MORPHOLOGY_PROGRESSIVE=yes
The morphology is drawn as a list of spheres, where every sphere represents a sample in the morphology.
This mode can be set in the configuration file as follows:
# Morphology reconstruction method
MORPHOLOGY_RECONSTRUCTION_ALGORITHM=samples
This mode draw a three-dimensional dendrogram of the morphology.
# Morphology reconstruction method
MORPHOLOGY_RECONSTRUCTION_ALGORITHM=dendrogram
- Original
- Tapered
- Zigzag
- Tapered Zigzag
- Straight
The morphology skeleton is drawn as loaded from the original file and no changes will be applied to it.
This option can be set in the configuration file as follows:
# Skeleton
SKELETON=original
Create tapered arbors where each arbor will be starting with the largest sample and terminating with the smallest sample. This mode is merely used for artistic purposes as the drawn morphology is modified from the original one.
This option can be set in the configuration file as follows:
# Skeleton
SKELETON=tapered
Create a zigzagged skeleton (to simulate the way the neurons look under the microscope when the intracellular space if filled with some stain). This style is recommended to create meshes that can be used for machine learning applications.
This option can be set in the configuration file as follows:
# Skeleton
SKELETON=zigzag
Create a skeleton with a tapered and zigzag style. Again, this option is only meant for artistic purposes as it changes the structure of the morphology.
This option can be set in the configuration file as follows:
# Skeleton
SKELETON=tapered-zigzag
Create a simplified morphology skeleton by drawing the first and last samples along each section and ignore the others.
This option can be set in the configuration file as follows:
# Skeleton
SKELETON=straight
- Angles
- Radii
Make the branching based on the angles at branching points
Make the branching based on the radii of the children at the branching points.
This option defines how the arbors of the morphology will be connected to the soma when drawin the morphology.
- Connect Connected
- All Connected
- All Disconnected
Note: This option is only implemented in the GUI and cannot be set in the configuration file.
The connected arbors will be extended to the origin of the soma.
All the arbors of morphology will be extended to the origin of the soma.
All the arbors of the morphology will only be drawn starting from their the first sample of their initial segments.
- None
- Adaptive Relaxed
- Adaptive Packed
- Fixed Step
The resampling method can be set in the configuration file in the MORPHOLOGY/SOMA SKELETON PARAMETERS
as follows:
# Skeleton Resampling
# Use ['none'] to ignore, this is the default option.
# Use ['adaptive-relaxed'] to apply adaptive resampling with relaxed distancing.
# Use ['adaptive-packed'] to apply adaptive resampling while packing each section in the morphology.
# Use ['fixed-step'] to resample the skeleton at a fixed sample step.
MORPHOLOGY_SKELETON_RESAMPLING=none
If None is selected, the sections of the morphology will not be resampled at all and will be drawn as loaded from the morphology file.
This option can be set in the configuration file as follows:
# Skeleton resampling method
MORPHOLOGY_SKELETON_RESAMPLING=none
Use adaptive resampling to resample each section in the morphology and remove the unwanted samples while preserving the spatial features of the section. The new samples will not be touching each other, that is why it is called relaxed.
This option can be set in the configuration file as follows:
# Skeleton resampling method
MORPHOLOGY_SKELETON_RESAMPLING=none
Use adaptive resampling to resample each section in the morphology and remove the unwanted samples while preserving the spatial features of the section. The new samples will overlap as if they pack the section to fill it entirely, and that is why it is called packed.
This option can be set in the configuration file as follows:
# Skeleton resampling method
MORPHOLOGY_SKELETON_RESAMPLING=adaptive-packed
Use fixed resampling step to resample the section. With high resampling steps, some of the spatial features of the sections could be gone. If this option is selected, the user can set the step value by the Resampling Step slider which will appear following to selecting the Fixed Step option in the Resampling menu.
Resampling the skeleton at a fixed step of 1.0 will result in
If we change the fixed step to 5.0, the result will be
This option can be set in the configuration file as follows:
# Skeleton resampling method
MORPHOLOGY_SKELETON_RESAMPLING=fixed-step
# Resampling step
MORPHOLOGY_RESAMPLING_SETP=1.0
- Original
- Unified
- Type Unified
- Scaled
The radii of samples of the drawn skeleton will be the same as those loaded from the original morphology file.
The radii of all the samples in the entire morphology are set to a unified value given by the user. If this option is selected, the slider Fixed Radius Value will appear in the GUI to set the unified radius.
The radii of all the samples in the different branches (axon, apical dendrite and basal dendrites) will be set to unified values specific to axon, apical dendrite and basal dendrites.
Scale the radii of all the samples in the morphology with a scale factor given by the user.
- Ignore
- Sphere
- MetaBalls
- SoftBody
Ignore the soma object and do not display it when the morphology is drawn.
Draw the soma as a symbolic sphere ceneterd at the origin.
Use the MetaBalls algotirhm to build a three-dimensional profile that approximates the soma shape.
Use the soft body physics to simulate the growth of a soma profile using the physics engine of Blender.
- Build Axon
- Build Apical Dendrite
- Build Basal Dendrites
Users can render the following view of the morphology:
- Wide Shot
- Mid Shot
- Close Up
This option can be set in the configuration file as follows:
# Rendering view
RENDERING_VIEW=wide-shot
This option can be set in the configuration file as follows:
# Rendering view
RENDERING_VIEW=mid-shot
This option can be set in the configuration file as follows:
#Rendering view
RENDERING_VIEW=close-up
# Close up view dimensions (in microns)
CLOSE_UP_VIEW_DIMENSIONS=20
- Fixed Resolution Frame Resolution
- To Scale Frame Scale
Users can export the rendered images in the following file formats:
- PNG (default)
- TIFF
- OpenEXR
- JPEG
- BMP
We recommend using TIFF or OpenEXR for high quality scientific figures or post-processing. For quick preview images, users are advised to use PNG, JPEG or BMP formats.
NOTE: This option is not implemented for the configuration file. By default, all the images rendered from running NeuroMorphoVis in the background mode will be PNGs.
Users can select to render morphology images with transparent or opaque backgrounds. If the Transparent Background checkbox is selected, the morphology will be rendered with a transparent background. Otherwise, the option Background Color will appear to set the RGB color of the background.
NOTE: This option is only available from the GUI and cannot be set in the configuration file.
Users can render the following camera views of the morphology:
- Front
- Side
- Top
This option can be set in the configuration file as follows:
# Camera view
CAMERA_VIEW=front
NeuroMorphoVis has added support to render two types of movies: 360_ and Progressive sequences.
The user can render a 360 movie to visualize the morphology from different views.
# Render a 360 of the morphology, default 'no'.
# Use ['yes' or 'no']
RENDER_NEURON_MORPHOLOGY_360=yes
The user can render a progressive animation showing the progressive reconstruction (or the growth) of the morphology.
# Render the progressive reconstruction of the skeleton, default 'no'.
# Use ['yes' or 'no']
RENDER_NEURON_MORPHOLOGY_PROGRESSIVE=yes
Users can export the drawn morphology skeleton into multiple file formats including:
-
SWC (or .swc)
-
Segments (or .segments)
-
Blender Format (or .blend)
This is the standard file format adopted by the neuroscience community. In this format, the skeleton is represented by a list of samples, where each sample in this list has the following structure:
- The index of the sample or sample number
- The type of the sample or structure identifier
- Sample x-coordinates
- Sample y-coordinates
- Sample z-coordinates
- Sample radius
- The index of the parent sample
For further details about this format, you can refer to this link.
The morphology file can be exported into an ASCII text file with .segments extention. This file is a list of segments. Each line in the file is a segment composed of two points between brackets. Each point has the following structure [X Y Z RADIUS]. This file is used to make it easy for other visualization application (for example to render the morphology with signed distance fields) without implementing any specific parsers.
The structure of a .segments file with 100 segments looks like this:
[X0 Y0 Z0 R0][X1 Y1 Z1 R1]
[X1 Y1 Z1 R1][X2 Y2 Z2 R2]
[X2 Y2 Z2 R2][X3 Y3 Z3 R3]
...
...
...
[X99 Y99 Z99 R99][X100 Y100 Z100 R100]
An example of this file is available in this link below: