Skip to content, Skip to search


Sholl Analysis

1,371 bytes removed, 12:08, 19 October 2016
Rewording to accommodate latest changes in v3.6.7
Automated and multithreaded bitmap Sholl for direct analysis of fluorescent images of neuronal arbors or traced morphologies. Features powerful quantifications based on curve fitting. Analysis of Sholl profiles data obtained outside of ImageJ is also possible.
== Introduction ==
<span id="CA1CellMask"></span>[[ File:BitmapSholl-CA1mask.png|frame|[[Skeletonize3D|Skeletonized]] hippocampal CA1 cell<ref name="Gross"></ref> (juvenile mouse) in which apical and basal dendrites have been analyzed [[#CA1CellPlot|separately]] and [[#Output_Options|color coded]] according to their Sholl profile. Warmer hues indicate higher number of Intersections (''N''). [[#CriticalRadius|Critical radius]] (''r<sub>c</sub>'') and [[#MeanValueOfFunction|Mean value]] (''N<sub>av</sub>'') are indicated.]]
The Sholl technique<ref name="Sholl"></ref> is used to describe neuronal arbors. This plugin performs can perform Sholl directly on 2D and 3D grayscale images of isolated neurons. Its internal algorithm to collect data is based upon how Sholl analysis is done by hand — it creates a series of concentric ''shells'' (circles or spheres) around the focus of a neuronal arbor, and counts how many times connected voxels defining the arbor intersects intersect the sampling shells.
The major advantages of this plugin over other implementations are:
* It When analyzing images directly, it does not require previous tracing of the arbor (although it can also analyze [[#Analysis of Traced Cells|traced arbors]])
* It combines [[#MethodsTable|curve fitting]] with several [[#Sholl Plots|methods]] to automatically retrieve [[#Metrics|quantitative descriptors]] from sampled data, which allows direct statistical comparisons between arbors
* It allows [[#Multiple Samples and Noise Reduction|continuous and repeated sampling]] around user-defined foci
== Installation ==
The plugin is distributed with Fiji. It installs several commands under {{bc|color=white|Analysis|Sholl|&nbsp;}}. However, as '''As part of an active effort to [[2015-12-22_-_The_road_to_Java_8|modernize ImageJ]] (see also this [[2015-06-15_-_Major_updates_in_the_works|announcement]]), '''you need to [[How_to_follow_a_3rd_party_update_site#Add_update_sites | subscribe]] to the Java 8 update site to access the latest plugin version''' (this will also allow you to access the newest [[2015-12-22_-_The_road_to_Java_8#Components_which_have_already_migrated|ImageJ capabilities]]). To do so, you can either:
* [[Downloads|Download the latest Fiji release]]. Newer releases come pre-bundled with Java 8, and are already subscribed to the [[User:Java-8|Java-8 update site]].
* If you have downloaded Fiji while ago and want to keep your existing installation, you will have to download Java 8 and make your [[Troubleshooting#Checking_the_Java_version|Fiji installation aware of it]]. Then subscribe to the [[User:Java-8|Java-8 update site]].
In this mode (bitmap analysis), the plugin requires a [[#faq:threshold|binary image or a segmented]] [[#faq:image-types|grayscale image]] (2D or 3D) containing a single neuron.
# Segment the neuronal arbor using {{bc|color=white|Image|Adjust|Threshold...}} (shortcut: <span style="display:inline-block;">{{key press|Shift|T}} </span>). ::N.B.: When using multichannel images, you will have to set the its display mode to ''Grayscale'' using {{bc|color=white|Image|Color|Channels Tool...}} ({{key press|Shift|Z}}), because images displayed as ''Composites'' cannot be thresholded.
# Define the center of analysis using a valid [[#Startup_ROI|startup ROI]].
# Run {{bc|color=white|Analysis|Sholl|Sholl Analysis...}}, adjusting the default [[#Parameters|Parameters]] in the dialog prompt.
;Single point: A single point marking the focus of the arbor using the Point Selection Tool. With single point selections, only the center of analysis is defined. Thus, this option is suitable for [[#Batch_Processing|batch processing]] of images with different dimensions with undefined [[#EndRadius|Ending radius]].
;Multi-point selection:A Multi-point selection (multi-point counter) in which the first point marks the center of analysis while the remaining points mark (count) the number of primary branches required for the calculation of [[#SchoenenSampled|ramification indices]]). Suitable for cases in which [[#PrimaryBranches|inference from starting radius]] is not effective.
[[File:ShollAnalysisStartupROIs.png|frame|center|Three types of ROIs expected by the pluginwhen analyzing images directly. Left: Line defining center of analysis (focal point), hemisphere restriction and ending radius. Middle: Single point defining center of analysis. Right: Multi-point selection in which the first point defines the focal point while the remaining points (2 to 5) serve as counters for primary dendrites.]]
=== Cf. Segmentation ===
| tip = With binary images, ''Sholl Analysis'' treats zero intensities as the background, independently of the image lookup table or the state of the ''Black background option'' in <span style="border-bottom:1px dotted #ccc;">Process▷ Binary▷ Options...</span> As with any other [ ImageJ routine], confusing background with foreground pixels will lead to aberrant results, including: 1) overestimation of branches and 2) artifacts at distances intersecting the boundaries of the image canvas.}}
== Analysis of Traced Cells ==
In this mode, the plugin analyzes reconstructed arbors. This is particularly relevant for stainings that do not allow single-cell resolution. [[#Batch Processing |Batch processing]] is also possible.
# Run {{bc|color=white|Analysis|Sholl|Sholl Analysis (Tracings)...}} and specify input files: a tracing file (a <code>.swc</code> or a [[Simple Neurite Tracer]] <code>.traces</code> file) and the respective image associate to such files.
<span id="Importing"></span>
== Analysis of Existing Profiles ==
[[File:BitmapSholl-CA1Compartment.png|frame|right|Linear plot for CA1 cell [[#CA1CellMask|described above]]. Using the soma as center, image was sampled twice using the [[#Restrict|Restrict analysis to hemicircle/hemisphere]] option in order to segregate apical from basal dendrites. For convenience, distances for basal branches were assigned negative values. For clarity, the binary image of the arbor was rotated, scaled and overlaid (in green) over the plot canvas. Note that it is also possible to restrict [[#MethodsTable|curve fitting]] to a sub-range of distances once [[#Importing|data is collected]].]]
This feature is processed by {{bc|color=white|Analysis|Sholl|Sholl Analysis (Existing Profile)...}}. This command can be used to re-analyze data (replot, modify fitting options, etc.) without having to access the initial image or tracing data. [[#Batch Analysis of Tabular Data|Batch processing]] is also possible. Noteworthy:
* '''Input data''': Any tab or comma delimited text file (.csv, .txt, .xls, .ods) can be used. You can drag & drop these files into the main ImageJ window, import data from the clipboard, or use data from any other table already opened by ImageJ. [[#Batch Processing|Batch processing]] is also [[#Batch Analysis of Tabular Data|possible]].
* '''Restricting input data''': To restrict measurements to a range of distances ([[#CA1CellPlot|see related example]]), select the range of distances you want analyze. You can click the first row in the range, and then drag the mouse to the last row, or by holding down {{key press|Shift}} while selecting the last row in the range. Then, in the prompt, activate the ''Restrict analysis to selected rows only'' checkbox.
* '''Calculation of ''Radius step size''''': [[#StepSize|Radius step size]] is calculated from the difference between the first two rows in ''Distance column''. This is mainly relevant when choosing ''Annulus/Spherical shell'' as [[#Normalizer|normalizer]].
'''''Linear'', ''Linear-norm'', ''Semi-log'' and ''Log-log'' profiles for the ddaC cell (<span style{{bc|color="border-bottom:1px dotted #ccc;">File▷ white|File|Open Samples▷ Samples|ddaC Neuron</span>}}), version 3.0'''.
Most of the retrieved [[#Metrics_based_on_fitted_data|metrics]] are automatically highlighted by the plugin. ''Linear profile'': [[#MeanValueOfFunction|Mean value]] (horizontal grid line) and [[#Centroid|Centroid]] (colored mark). Logarithmic profiles: The [[#ShollDecay|Sholl regression coefficient]] (also known as Sholl decay) can be retrieved by linear regression using either the full range of data (blue line) or data within percentiles 10–90 (red line). For this particular cell type, the Semi-log method is more [[#Dratio|informative]] when compared to the Log-log method.
<span id="MethodsTable"></span>
<span style="display: inline-block; width: 25px">'''''r'''''</span> Distance from center of analysis (<u>r</u>adius of Sholl circle/sphere)
<span style="display: inline-block; width: 25px">'''''log'''''</span>Natural logarithm, the logarithm to the base ''e''
<span style="display: inline-block; width: 25px">'''''S'''''</span>The [[#Choice_of_Methods|chosen property ]] of the sampling shell to be used in the normalization of ''Linear-norm'', ''Semi-log'', and ''Log-log'' profiles.<br> <span style="display: inline-block; width: 25px">&nbsp;</span>For 2D images, the ''Perimeter'' of the sampling circumference (2πr) or the ''Area'' of the corresponding circle (πr<sup>2</sup>)<br> <span style="display: inline-block; width: 25px">&nbsp;</span>For 3D images, the ''Surface'' of the sampling sphere (4πr<sup>2</sup>) or its respective ''Volume'' (4/3πr<sup>3</sup>)<br>
<span id="Extended_Fitting"></span>[[ File:AnimatedPolyFit.gif|frame|Sampled data from the ddaC cell (<span style="border-bottom:1px dotted #ccc;">File▷ Open Samples▷ ddaC Neuron</span>) being fitted to polynomials of varying degree using a complementary [[BAR]] script.]]
''Sholl Analysis'' tries to be as flexible as possible by providing several options for normalization and curve fitting. However, it cannot offer exhaustive curve fitting options as determining ''best fit models'' requires reasonable choices that are not amenable to full automation. For these reasonsthis reason, complementary tools for curve fitting can be installed as needed using [[BAR]] by subscribing to its [[BAR#Installation|update site]]. As of version 3.4.2, several Several [[BAR]] commands complement ''Sholl Analysis''. These include:
;[[#Pre-processing|Segmentation]] tools:
:Thresholding, shape-based masking and edge-detection routines (see [[BAR#List_of_BARs|full BAR list]])
:'''{{GitHub|org=tferr|repo=Scripts|path=Data_Analysis/|label=Create BoxPlot}}:''' Allows direct comparison of metrics between groups or sets of data (specially useful when tagging images with the ''Comment'' field in {{bc|color=white|Analysis|Sholl|Metrics &amp; Options...}})
:'''{{GitHub|org=tferr|repo=Scripts|path=Data_Analysis/|label=Plot XY Data}}:''' Whole-purpose routine that plots data from imported spreadsheets.
To install [[BAR]], run <span style="border-bottom:1px dotted #ccc;">Help▷ Update...</span> Choose ''Advance Mode'' then ''Manage update sites''. Activate the ''BAR'' checkbox in the list of update sites. See the [[BAR#Installation|BAR documentation page]] for more details.
== Pre-processing ==
<source lang="java">
distanceCol = "Radius"; // Column in .csv file listing distances
intersecCol = "CrossingsInters."; // Column in .csv file listing intersections
dir = getDirectory("Choose the directory containing the profiles");
== Advanced Usage ==
Advanced options can be set by calling public methods of through the <tt>Sholl_Analysis</tt>, the main class of the plugin[http://tferr.github. Options include the ability to perform analyses without displaying plots or detailed tables, and the ability to display plots without annotationsio/ASA/apidocs/ API]. There is also an option to specify ;IJ macro language example: Reduce the precision to be used number of discretization steps involved in the calculations calculation of [[#MeanValueOfFunction|Mean valueNav]], and [[#CriticalValue|Critical valueCv]], and [[#CriticalRadius|Critical radiusCr]]:<source lang="java">call("sholl.Sholl_Analysis.setPrecision", "100"); // Default is 1000, ie, 1/1000 of radius step size</source>Changes Note that the IJM built-in [ call("class.method")] function can only pass strings to Java methods. For this reason, you have to quote the passed argument. <tt>Sholl_Analysis</tt> will then parse the string argument and interpreter its value. Note that calls made to these settings by the IJ macro language need to be set before running the plugin and remain in effect while ImageJ is running. For a full description of all the available options, have a look at the plugin's [ API documentation (Javadocs)]. 
;Python example: Display only the main ''[[#Metrics|Sholl Table]]'', ignoring remaining outputs
<source lang="python">
import sholl.Sholl_Analysis Option as sasosaso.setNoPlots(True) # Exclude plots from outputsaso.setNoTable(True) # Exclude detailed table from output
;Java/BeanShell/Groovy example: Display plots without annotations
Sholl_Analysis.setPlotLabels(true); // Exclude plot labels
;IJ macro language example: Reduce the number of discretization steps involved in the calculation of [[#MeanValueOfFunction|Nav]], and [[#CriticalValue|Cv]], [[#CriticalRadius|Cr]]:
<source lang="java">
call("sholl.Sholl_Analysis.setPrecision", "100"); // Default is 1000, ie, 1/1000 of radius step size
Note that the IJM built-in [ call("class.method")] function can only pass strings to Java methods. For this reason, you have to quote the passed argument. <tt>Sholl_Analysis</tt> will then parse the string argument and interpreter its value.
== Auxiliary Commands ==
;File▷ {{bc|color=white|File|Open Samples▷ Samples|ddaC Neuron}}:Opens a sample image of a Drosophila class IV ddaC sensory neuron in which dendrites have been previously segmented (2D arbor). Use it to get acquainted with the plugin. Run <span style{{bc|color="border-bottom:1px dotted #ccc;">Image▷ white|Image|Show Info...</span> }} (shortcut: {{key press|I}} ) to know more about this cell type.
;Help▷ {{bc|color=white|Help|About Plugins▷ Plugins|About Sholl Analysis...}}:Retrieves information about the plugin version and a link provides links to several resources including its Git source code {{GitHub|org=tferr|repo=ASA|label=repository}} and its [ API documentation] (since v3.4.6). It is also accessible through the ''More »'' dropdown menu.
== FAQ ==
* '''[[Strahler_Analysis|Strahler_Analysis]]''' Strahler Analysis on [[Skeletonize3D|skeletonized]] arbors (distributed through the [[Neuroanatomy|Neuroanatomy update site]])
* '''[ Neuromantic]''' Standalone program for (semi-manual/semi-automatic) neuronal reconstruction. * '''[ L-Measure (LM)]''' LM computes a large number of neuroanatomical parameters from reconstructions and is capable of [ SWC] conversion. [ Neuromantic] and [ Neuron] can also be used to convert several file formats (Eutectic, Neurolucida, MorphML, ...) into .swc. * '''[ NeuronJ]''' ImageJ plugin for semi-automated tracing and quantification of two-dimensional arbors. Note that '[[Simple_Neurite_Tracer|SNT]] can also be used to trace 2D images.
== Publication ==