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
| Tracing operations | Headless support only | A* tracing performed using pre-existing coordinates is fully supported via scripting in headless operations. [Example implementation](https://github.com/AllenNeuralDynamics/neuron-tracing-utils). For interactive tracing, please use [HortaCloud](https://hortacloud.org/): This is SNT's development team recommended tool for tracing Terabyte-size datasets |
24
24
| Path optimization | Headless support only |[Optimization of curvatures](./manual#refinefit-), including extraction of radii |
25
-
| 3D Visualization | Supported via [sciview](./manual#sciview) and [BigVolumeViewer](./manual#bigvolumeviewer)| Visualization of 3D reconstructions, including [color mappings](./manual#color-mapping-), etc. |
25
+
| 3D Visualization | Supported via [sciview](./manual#sciview) and [BigVolumeViewer](./manual##big-volume-viewer)| Visualization of 3D reconstructions, including [color mappings](./manual#color-mapping-), etc. |
Copy file name to clipboardExpand all lines: _pages/plugins/snt/sholl.md
+39-13Lines changed: 39 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -50,9 +50,9 @@ After [installing SNT](/plugins/snt/#installation), Sholl commands can be access
50
50
/media/plugins/snt/animatedpolyfit.gif | Sampled data can be fitted to polynomials of varying degree (animation created using [BAR](/plugins/bar))
51
51
/media/plugins/snt/sholl-convex-hull.png | Scripting allows for arbitrary focal points, in this case the centroid of the neuron's convex hull (*Convex Hull as Center* template script)
52
52
/media/plugins/snt/snt-angular-sholl-ddac.png | [Angular Sholl](#angular-sholl) and [Angle-based metrics](##metrics-based-on-angular-sholl)
53
-
/media/plugins/snt/shollresultasrois.png | Intersection points and sampling shells can be retrieved as ROIs. Intersection points are placed at edges of detected clusters of foreground pixels, not their center.
53
+
/media/plugins/snt/shollresultasrois.png | Intersection points and sampling shells can be retrieved as [annotation ROIs](#output-options)
54
54
/media/plugins/snt/sholl-rasterized-shells.png | Using Sholl to measure the distribution of image objects (_Sholl Rasterize Shells_ template script) [[use case](https://forum.image.sc/t/measuring-distribution-of-object-diameters-in-different-stripes-using-sholl-plugin/51087)]
55
-
/media/plugins/snt/snt-sholl-integrate-density-profiles.png | Not only neurons: Integrated-density profiles can be used to obtain radial maps of fluorescent markers.
55
+
/media/plugins/snt/snt-sholl-integrate-density-profiles.png | Not only neurons: [Integrated-density profiles](#intensity-based-profiles) can be used to obtain radial maps of fluorescent markers.
56
56
"
57
57
%}
58
58
@@ -275,7 +275,12 @@ Detailed control over polynomial fitting is controlled by the options in the *Op
275
275
276
276
-**LUT** The Lookup Table (LUT) used for annotations.
277
277
278
-
-**ROIs** Allows for two sets of ROIS to be added to the image overlay: 1) concentric shells matching sampled distances (circular ROIs or composite ROIs when using hemicircles); and 2) Multipoint ROIs at intersection sites between shells and clusters of foreground pixels. Note that WYSIWYG versions (RGB images) of these masks can be obtained using by pressing {% include key keys='Shift|F' %} ({% include bc path='Image|Overlay|Flatten'%}) or by running {% include bc path='Analyze|Tools|Calibration Bar...'%}. Note that ROIs are not created when outputting [integrated density](#intensity-based-profiles).
278
+
-**ROIs** Allows for two sets of ROIS to be added to the image overlay: 1) concentric shells matching sampled distances (circular ROIs or composite ROIs when using hemicircles); and 2) Multipoint ROIs at intersection sites between shells and clusters of foreground pixels. Note that WYSIWYG versions (RGB images) of these masks can be obtained using by pressing {% include key keys='Shift|F' %} ({% include bc path='Image|Overlay|Flatten'%}) or by running {% include bc path='Analyze|Tools|Calibration Bar...'%}.
279
+
280
+
NB:
281
+
- ROIs are not created when outputting [integrated density](#intensity-based-profiles)
282
+
- Versions prior to SNTv5 placed intersection points at edges of detected clusters of foreground pixels, not their centroid
283
+
279
284
280
285
-**Mask** A 16/32–bit maximum intensity projection of the analyzed image is generated in which the measured arbor is painted according to its Sholl profile. The type of data (*Raw*, i.e., sampled or *Fitted*) is displayed in the image subtitle
281
286
@@ -385,7 +390,7 @@ Detailed control over polynomial fitting is controlled by the options in the *Op
385
390
</tbody>
386
391
</table>
387
392
388
-
<spanstyle="display: inline-block; width: 25px">***N***</span> For 2D images, the <u>N</u>umber of clusters of pixels (8–connected) intersecting the circumference of radius *r*
393
+
<spanstyle="display: inline-block; width: 25px">***N***</span> For 2D images, the <u>N</u>umber of clusters of pixels (8–connected) intersecting the circumference of radius *r*<br>
389
394
<spanstyle="display: inline-block; width: 25px"> </span> For 3D images, the <u>N</u>umber of clusters of voxels (26-connected) intersecting the surface of the sphere of radius *r*
390
395
391
396
<spanstyle="display: inline-block; width: 25px">***r***</span> Distance from center of analysis (<u>r</u>adius of Sholl circle/sphere)
For more comprehensive functionality, the Script Editor's {% include bc path='Templates|Neuroanatomy|'%} menu lists demo scripts that perform batch operations. For sake of completeness, here is a small tutorial on how to write a macro from the ground up:
565
570
566
-
## Tutorial: Batch Analysis of Images using IJM Languages
571
+
## Tutorial: Batch Analysis of Images using IJ Macro Language
567
572
568
573
Any macro must set a center, or allow the Sholl Analysis plugin to access a ROI marking it. One could instruct ImageJ to read the coordinates of pre-existing ROIs from a text file, store a list of line selections in the ROI Manager, or write a morphology-based routine that detects the center of the arbor. However, marking the center of analysis is probably something that you will want to do manually. Here is a workflow:
569
574
@@ -583,7 +588,7 @@ Now that all the images are marked, we could use the Macro Recorder ({% include
583
588
584
589
{% highlight javascript %}
585
590
// Recording Sholl Analysis version 3.4.3
586
-
run("Sholl Analysis...", "starting=10 ending=400 radius_step=0 infer fit linear polynomial=[8th degree] semi-log normalizer=Volume create save do");
591
+
run("Sholl Analysis (From Image)...", "datamodechoice=Intersections starting=10 ending=400 radius_step=0 infer fit linear polynomial=[8th degree] semi-log normalizer=Volume create save do");
587
592
{% endhighlight %}
588
593
589
594
As you may have noticed, ImageJ plugins are controlled by a single lowercase sentence in which arguments are separated by a space. Input fields and choice lists appear as *keyword=value* pairs, active checkboxes by a single keyword. Options that are not needed can be omitted. This makes it easier to edit code blocks:
@@ -594,11 +599,12 @@ end = 200; // variable that controls ending radius
594
599
step = 2; // variable that controls step size
595
600
596
601
// Run the plugin
597
-
run("Sholl Analysis...", "starting="+ start +" ending="+ end +" radius_step="+ step +" infer linear save do");
602
+
run("Sholl Analysis (From Image)...", "starting="+ start +" ending="+ end +" radius_step="+ step +" infer linear save do");
598
603
{% endhighlight %}
599
604
600
605
Now we just need to assemble a working macro to be pasted in the {% include bc path="Process | Batch | Macro..." %} prompt:
601
606
607
+
<details>
602
608
{% highlight javascript %}
603
609
// Get the number of ROIs of the image overlay
604
610
nROIs = Overlay.size;
@@ -610,11 +616,13 @@ if (nROIs==0)
610
616
Overlay.activateSelection(nROIs-1);
611
617
// We now call the plugin as detailed by the Macro Recorder. We'll set 'Ending radius' to a non-numeric
612
618
// value (NaN, "Not a Value") to make sure the maximum length for each individual image is used
613
-
run("Sholl Analysis...", "starting=10 ending=NaN radius_step=0 infer fit linear polynomial=[8th degree] semi-log normalizer=Volume create save do");
619
+
run("Sholl Analysis (From Image)...", "datamodechoice=Intersections starting=10 ending=NaN radius_step=0 infer fit linear polynomial=[8th degree] semi-log normalizer=Volume create save do");
614
620
{% endhighlight %}
621
+
</details>
615
622
616
-
Of course you can also automate any preceding steps. However, do not forget to ensure that the center of analysis will be available when the plugin is called:
617
623
624
+
Of course you can also automate any preceding steps. However, do not forget to ensure that the center of analysis will be available when the plugin is called:
@@ -625,19 +633,37 @@ setAutoThreshold("Huang dark stack");
625
633
// >>>> Make sure the initial point selection remains available <<<<
626
634
Overlay.activateSelection( Overlay.size - 1 );
627
635
// Run the plugin
628
-
run("Sholl Analysis...", "starting=10 ending=NaN radius_step=0 infer fit linear polynomial=[8th degree] semi-log normalizer=Volume create save do");
636
+
run("Sholl Analysis (From Image)...", "datamodechoice=Intersections starting=10 ending=NaN radius_step=0 infer fit linear polynomial=[8th degree] semi-log normalizer=Volume create save do");
629
637
{% endhighlight %}
638
+
</details>
630
639
631
640
That's it. Use the Macro Recorder to generate the customizations you will need before parsing the entire folder of images with {% include bc path="Process | Batch | Macro..." %}
632
641
633
642
634
-
## Examples:
643
+
## Complex Scripts
635
644
636
-
More complex scripts will take advantage of [SNT's API](/plugins/snt/scripting). Here are some examples:
645
+
More complex scripts will take advantage of [SNT's API](/plugins/snt/scripting). Here are some of scripts from SNT's [Bundled Templates](./scripting#bundled-templates):
637
646
647
+
<details>
648
+
<summary>Bitmap vs Tracing Comparison (Groovy)</summary>
649
+
{% include code org='morphonets' repo='SNT' branch='master' path='src/main/resources/script_templates/Neuroanatomy/Analysis/Sholl_Bitmap_vs_Tracing_Comparison.groovy' label='Bitmap vs Tracing Comparison (Groovy)' %}
@@ -906,7 +932,7 @@ Release notes are available on the {% include github org='morphonets' repo='SNT'
906
932
907
933
{% include citation %}
908
934
909
-
Citing manuscripts can be retrieved using [Scholar](https://scholar.google.com/scholar?cites=15441574333602897335&as_sdt=2005&sciodt=1,5&hl=en) or [PubMed](http://www.ncbi.nlm.nih.gov/pmc/articles/pmid/25264773/citedby/?tool=pubmed), although many [more publications seem to be using it](https://scholar.google.com/scholar?hl=en&as_sdt=1%2C5&as_vis=1&q=fiji+AND+%22Sholl+Analysis%22&btnG=). See [Global FAQs](/plugins/snt/faq#how-do-i-cite-snt) for details on how to cite SNT.
935
+
Citing manuscripts can be retrieved using [Scholar](https://scholar.google.com/scholar?cites=15441574333602897335&as_sdt=2005&sciodt=1,5&hl=en) or [PubMed](https://pubmed.ncbi.nlm.nih.gov/?linkname=pubmed_pubmed_citedin&from_uid=25264773), although many [more publications seem to be using it](https://scholar.google.com/scholar?hl=en&as_sdt=1%2C5&as_vis=1&q=fiji+AND+%22Sholl+Analysis%22&btnG=). See [Global FAQs](/plugins/snt/faq#how-do-i-cite-snt) for details on how to cite SNT.
0 commit comments