diff --git a/_pages/plugins/frangi.md b/_pages/plugins/frangi.md index 6d35cfadae..2e9eb077c3 100644 --- a/_pages/plugins/frangi.md +++ b/_pages/plugins/frangi.md @@ -1,18 +1,26 @@ --- -mediawiki: Frangi title: Frangi -project: /software/fiji -artifact: sc.fiji:Feature_Detection +project: /software/imagej2 +artifact: net.imagej:imagej-ops +icon: /media/icons/imagej2.png doi: 10.1007/BFb0056195 categories: [Uncategorized] --- -{% include notice icon="warning" content="This is an experimental plugin, and I have doubts about its correctness—in particular, the results are strange when the ratio of pixelWidth : pixelHeight : pixelDepth is other than 1:1:1. In addition, the results in any case seem to be different from those from other implementations, such as [this [MATLAB](/scripting/matlab) one](http://www.mathworks.co.uk/matlabcentral/fileexchange/24409-hessian-based-frangi-vesselness-filter). I don't have time to work on this any more (and no longer work in academia at all) so if someone were interested in taking it over, that would be brilliant." %} This plugin implements the algorithm for detection of vessel- or tube-like structures in 2D and 3D images described Frangi et al 1998.[^1] +_Frangi vesselness_ is an algorithm for detection of tube-like structures (such as in imagery of filamentous structures (blood vessels, neurites, etc.). It applies to both 2D and 3D images and was first described by Frangi et al 1998.[^1] ([PDF](https://link.springer.com/content/pdf/10.1007%252FBFb0056195.pdf)). In many cases, this method is known to be a better alternative to single-scale [Tubeness](/plugins/tubeness) filtering (at least for isotropic images), but it is slower. There are two ImageJ implementations of the algorithm: -In my experience, this method produces consistently better results than the [Tubeness](/plugins/tubeness) plugin for isotropic image data, although it is significantly slower. +- A legacy plugin (In Fiji registered under {% include bc path='Plugins|Process|Frangi Vesselness' %} ([source code](https://github.com/fiji/Feature_Detection)). This is a deprecated implementaton with expected inaccuracies. + +- An [ImageJ Op](/libs/imagej-ops/index) (In Fiji registed under {% include bc path='Plugins|Process|Frangi Vesselness' %}). This version superseeds previous implementations and has been validated/benchmarked againgst other implementations (namely ITK and MATLAB) ([details](https://forum.image.sc/t/frangi-vesselness-filter-feedback/6747)). It requires 3 inputs: + + 1. Scale(s): Radii of the structures to be filtered + 2. Spacing: the physical spacing between image data points (i.e., the pixel/voxel dimensions) + 3. Whether or not a gaussian filter should be applied at each scale before the filter runs + +SNT's uses this filter internally. Its [Secondary Layer Wizard](/plugins/snt/manual#tracing-on-secondary-image) provides a convenient way to preview the effect of scale size in the result. + +{% include img align="center" width="600px" src="/media/plugins/frangi-before-and-after.png" caption="Frangi Vesselness: Left: Original image. Right: Filtered image." %} -These screenshots show the results on an example file: -![](/media/plugins/frangi-before-and-after.png) {% include citation fn=1 %} diff --git a/_pages/plugins/simple-neurite-tracer/3d-interaction.md b/_pages/plugins/simple-neurite-tracer/3d-interaction.md deleted file mode 100644 index cfb5191b3d..0000000000 --- a/_pages/plugins/simple-neurite-tracer/3d-interaction.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -mediawiki: Simple_Neurite_Tracer:_3D_Interaction -title: Simple Neurite Tracer › 3D Interaction -nav-links: true -nav-title: 3D Interaction ---- - -{% include warning/deprecated new="[SNT](/plugins/snt)" - old="[Simple Neurite Tracer](/plugins/simple-neurite-tracer)" %} - -It is now possible to select the points for traces in the [3D Viewer](/plugins/3d-viewer) rather than the 2D view. - -{% include video platform='youtube' id='Vt4m55V7AjI'%} - -In order to select points for tracing in the 3D Viewer, you need to use the "Wand" tool. In order to rotate the view, you need to use the "Hand" tool. Once you have selected each of these once, you should be able to switch between them by pressing the {% include key key='Esc' %} key. - -![](/media/fiji-toolbar-wand-and-hand.png) - -The following key shortcuts also work in the 3D Viewer: - -- {% include key key='Y' %} confirm the temporary path segment -- {% include key key='N' %} cancel the temporary path segment -- {% include key key='F' %} complete the current path -- {% include key key='G' %} select the current path under the mouse pointer - -You can still create branches and joins in the 3D Viewer as you would in the 2D viewer. First select the path you want to branch off, or join to by pressing {% include key key='G' %} while the mouse pointer is over that path. (It should turn green.) Then create the join or branch by holding down the join modifier key ({% include key key='Ctrl' %} on Windows and Linux, {% include key key='Alt' %} on Mac OS) and clicking at the right point on the selected path. - -The dataset used in the screencast can be downloaded from [the Diadem challenge website](http://www.diademchallenge.org/olfactory_projection_fibers_readme.html). diff --git a/_pages/plugins/simple-neurite-tracer/basic-instructions.md b/_pages/plugins/simple-neurite-tracer/basic-instructions.md deleted file mode 100644 index e70593aae7..0000000000 --- a/_pages/plugins/simple-neurite-tracer/basic-instructions.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -mediawiki: Simple_Neurite_Tracer:_Basic_Instructions -title: Simple Neurite Tracer › Basic Instructions -nav-links: true -nav-title: Basic Instructions ---- - -{% include warning/deprecated new="[SNT](/plugins/snt)" - old="[Simple Neurite Tracer](/plugins/simple-neurite-tracer)" %} - -#### Starting the PlugIn - -When starting the plugin from the {% include bc path='Plugins|Segmentation|Simple Neurite Tracer'%} menu option, you should be presented with a dialog like this (outdated snapshot): ![](/media/plugins/simple-neurite-tracer/snt-initial-dialog.png) - -The three pane view gives you views of the image stack through XZ and ZY planes as well as the standard XY view. First time users may find the three pane view confusing. However, it makes it much easier to pick out points in the stack in the Z direction. - -Another option lets you choose whether you would like to see a 3D representation of your tracings. If you're unsure, leave this at the default (*Create new 3D Viewer*). Note however that, once obtained, tracings can be imported and rendered in the 3D viewer at any later time. Your next view of the image will be something like this: - -The top of the left hand dialog box should always give you an idea about the next steps in basic tracing of paths. However, the first step when you load a new image should probably be to enable the option for using Hessian-based analysis of the image - this is done via a checkbox a little further down the dialog box. It will take some time to calculate the Gaussian convolution of the image once you select this option, but this only needs to be done once per image, so it's best to do it at the start. There is more on the use of this option in the [Tips](#miscellaneous-tips) section below. - -*At this point, you may wish to switch to some shorter [step-by-step](/plugins/simple-neurite-tracer/step-by-step-instructions) instructions - some people have suggested that the description below is a bit verbose. Alternatively, carry on below...* - -Now, as the instructions suggest, your next step should be to click on the point in the image stack where you want to start the path. To navigate in the stack you would adjust the slices scroll bar or used the {% include key key='<' %} and {% include key key='>' %} keys as usual. The red cross-hairs indicate the corresponding position in the three different views of the stack, but the slice positions will not be synchronized between the three windows unless you hold down {% include key key='Shift' %} while moving the mouse or activate the *Enable cursor snapping* option (window synchronization is particularly useful if you're creating a [branching branch](#branching-and-joining-paths) at the beginning or end of a path). - -![A temporary path, yet to be confirmed.](/media/plugins/simple-neurite-tracer/snt-temporary-path.png) ![The progress of the search for a temporary path.](/media/plugins/simple-neurite-tracer/snt-searching-for-path.png) ![The confirmed part of the current path.](/media/plugins/simple-neurite-tracer/snt-confirmed-path.png) Select a point for the start of your first path. The instructions should change to prompt you to find another point further along the structure that you're tracing. It will take some trial and error to find out how far apart these points can be for each image - some will have very clearly defined neurons and so they can be very far apart, but with more difficult images (or ones where the path found is not the one you intend) you will need to make them closer together. - -Once you select that next point in the path you will either find that the path is found immediately, in which case the projected path is visible as a dark blue line, or the search may take longer, in which case the progress of the search is shown in light blue. - -While the plugin is searching you can still move about in the image stack to see the progress through the depth of the stack as well. If it seems to be taking a very long time to find a path between the points you should probably cancel the search (by pressing {% include key key='Esc' %}) and try a point that's nearer, since the path searching slows down as it has explored more of the image. - -Once you have a dark blue temporary path like that in the left hand image the instructions will prompt you to either keep that path segment (by pressing {% include key key='Y' %}) or cancel it ({% include key key='N' %}) to try picking another point (probably one nearer to the original point). If you confirm that path then the path will turn red, to indicate that this is a confirmed part of the current path. If you click further along the structure again then the dark blue colour will again show the temporary part of a path as opposed to the red confirmed part. - -Once you have picked out a few more points along the path, you can complete the path by clicking "Complete Path" {% include key key='F' %} at the top of the dialog. By default - Paths can be colorized at any later point using the drop-down menu in the *Paths* window - completed paths are shown in magenta and appear in the path list in the tracer's dialog box. If you select one or many paths in this list, the selected paths are shown in green instead. (You need to have particular paths selected for filling out neurons or branching and joining paths.) ![Several completed paths, with one selected (in green)](/media/plugins/simple-neurite-tracer/snt-multiple-paths.png) - -You've probably noticed that the default presentation of the paths in an image is to show the a projection of the path through the entire stack, rather than just those points of the path that are in the current slice. This can become confusing with many paths in a single image, in which case you should change the *View Paths 2D* option from *Projected through all slices* to *Parts in nearby slices* (shortcut: {% include key key='5' %}). - -#### Branching and Joining Paths - -In this plugin each path can only be a linear succession of points in the image. However, you can indicate more complex structures by creating a path that starts on another path (branches off it) or ends on another path (joins the other path). To do this you have to select the existing path you want to branch off or join to in the path list (check that the right path is green in the image) and then hold down {% include key key='Ctrl' %} (on Windows or Linux) or {% include key key='option' style='mac' %} (on MacOS) while you select the branch or join point. You almost always will want to hold down {% include key key='Shift' %} as well as {% include key key='Ctrl' %} / {% include key key='Alt' %} while you're finding this image so that the crosshairs show you the exact point that you're joining to. The detailed procedure is described [here](Simple_Neurite_Tracer__Step-By-Step_Instructions#branching-start-a-path-on-an-existing-path). - -#### Saving and Loading Files - -You can load and save traces files with the corresponding buttons at the bottom of the tracer's dialog box. I suggest that you save your files with the original filename with the extension changed to ".traces", so "test.tif" would have a traces file "test.traces". This is because the "Load Traces File" option will look for a file with that name and offer to load it for you. - -#### Filling Out Neurons - -There is a simple facility in this plugin for "filling out" paths to volumes. This is not particularly sophisticated, but often good enough for a rough visualization of the shape of a neuron beyond what can be seen from the traced path. - -First, select the one or more paths that you want to fill out from in the path list and select "Fill Out Path(s)" in the interface. The selected paths are shown in green so that you can check that you're starting from the right ones. After a couple of seconds if you scroll through the stack you should be able to see a thick green suround to the path: - -![A few seconds after selecting "Fill Out Path(s)" with 3 branched paths selected](/media/plugins/snt/snt-initial-filling.png) - -The filler continues to explore the image starting from the path until you click "Pause" in the dialog. However, the fill which is shown only includes those points up to a certain threshold distance from the path. (Note that in this section "distance" doesn't mean a real physical distance, but a measure which takes into account the intensity values of the pixels which must be passed through when moving away from the path.) Information about the current threshold and the progress of the search is shown in the dialog. ![The filling-related part of the dialog (outdated screenshot).](/media/snt-filling-statistics.png) - -The top line ("Not reached by search yet") is updated as you move your mouse over the image. If the point under the mouse has been reached by the search then it will show you that point's distance from the path. In the line below, the input box shows your current threshold distance: so if this is set to 0.2 then that means that all points less than 0.2 from the path are included in the fill (and shown in green in the image.) The number in parentheses at the right of this line show the maximum distance from the path that has been completely explored. - -You can change the fill threshold in one of three ways: - -- Clicking on a point in the image that has been reached by the search (This is the most intuitive way of altering the threshold). -- Changing the threshold in the input box manually and clicking the "Set" button below it. -- Clicking the "Set Max" button below the threshold input box, which sets the threshold to the maximum explored distance (the value shown in parentheses). - -Anyway, assuming that you want to use the first of these approaches, you should use the approach described below. It is difficult to set the threshold accurately from the image unless you zoom in, so first zoom on part of the path that you want to set the threshold for: ![After having zoomed in on part of the fill](/media/snt-zoomed-filling.png) - -{% include clear%} - - -Since the the solid green fill obscures the intensity value of the points in the fill, I suggest that you switch to the semi-transparent view of the fill at this stage by selecting the "Transparent fill display" option in the dialog. This should show you something like this: - -![Having made the fill transparent](/media/snt-transparent-filling.png) - -{% include clear%} - - -As you can see in this image, the threshold is set too far from the path, since there are many completely dark points under the green fill. Experiment with clicking on different points closer to the path in order to adjust the threshold until you are happy with it. You might end up with something like this: - -![Having refined the fill by clicking closer to the path](/media/snt-refined-filling.png) - -{% include clear%} - - -If you are happy with this, then you might as well click "Pause" so that your computer isn't spending all its CPU on continuing to explore the image. Then you can either save the fill (which will add it to the fill list) by clicking "Save Fill", discard the fill by clicking "Cancel Fill" or use the "Create Image Stack from Fill" button to view the same image stack, but with only the points in that fill preserved. One reason why you might want to do this is that you can then smooth that image and use the [3D Viewer](/plugins/3d-viewer) to do a surface rendering of the neuron. Perhaps then you could overlay that onto a volume rendering of the complete image (see available [tutorials](/plugins/snt#tutorials)). Or, you could save those fill stacks for each of the neurons you fill and then combine them in ImageJ using "RGB Merge". - -The image stack you would get from the image used in this example might look something like this: ![Having selected the "Create Image from Fill" option](/media/plugins/snt/snt-filling-viewed.png) - -{% include clear%} - - -#### Using an AmiraMesh Labels File - -If you have a labels file for your image, you can load that file to help you make sure that your tracings are going between the regions of the image that you think they are. (e.g. it's possible when a neuron enters a region of dense expression to stop the path short of the regions which is actually labelled as a particular neuropil region.) Load the label file by clicking the "Load Labels" button. If you have a label file loaded then the current material under the crosshairs will be shown in the ImageJ status bar. - -#### Key Shortcuts - -Key Shortcuts and keyboard accelerators are described in [Key Shortcuts](/plugins/snt/key-shortcuts). - -#### Miscellaneous Tips - -- The simplest way to follow a path through a stack is to select that path and hold down {% include key key='Ctrl' %} / {% include key key='Alt' %} and {% include key key='Shift' %} while moving the mouse along it. -- If the search doesn't seem to be finding the route you expect through an image stack, try toggling the "Hessian analysis" option. Another alternative is that the start point of the search is in the wrong place (e.g. if you accidentally clicked in the image when you didn't want to start a new path - you should be able to tell this from the progress of the search, which starts at both the start and end point). diff --git a/_pages/plugins/simple-neurite-tracer/export-to-swc-tutorial.md b/_pages/plugins/simple-neurite-tracer/export-to-swc-tutorial.md deleted file mode 100644 index 385292b72f..0000000000 --- a/_pages/plugins/simple-neurite-tracer/export-to-swc-tutorial.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -mediawiki: Simple_Neurite_Tracer:_"Export_to_SWC"_Tutorial -title: Simple Neurite Tracer › "Export to SWC" Tutorial -nav-links: true -nav-title: Exporting to SWC ---- - -{% include warning/deprecated new="[SNT](/plugins/snt)" - old="[Simple Neurite Tracer](/plugins/simple-neurite-tracer)" %} - -This short tutorial shows you how to export a connected set of paths in the [Simple Neurite Tracer](/plugins/snt) plugin to an SWC file. This may be useful for analyzing a structure in other tools (e.g. [L-measure](http://cng.gmu.edu:8080/Lm/)) or uploading to a database like [NeuroMorpho.org](http://neuromorpho.org/). (n.b. for use in L-measure you will have to set the SWC type for each path - see [\#Setting\_the\_SWC\_point\_types](#setting-the-swc-point-types)) - -## Export all connected path sets as SWC files - -To export each connected set of paths as a separate SWC file, you can now select the "Export all as SWC..." menu option - you will be prompted for the prefix of the file names: - -{% include img align="center" src="save-all-as-swc" %} - -## Export a single connected path set as an SWC file - -Often, you will just want to export one set of connected paths. As an example of this, suppose we have a partially traced image like this: - -{% include img align="center" src="export-to-swc-tutorial-1" width="750" %} - -Those are actually three disconnected groups of paths, as you can see from the path list: - -{% include img align="center" src="export-to-swc-tutorial-2" %} - -In other words, there is one large group of neurons which are all connected, with "Path (0)" as the primary path, there is a single disconnected path ("Path (15)" and group of 6 paths with "Path (16)" as the primary path. - -(Paths are connected when you start one path on another one (branching) or end one path on another one (joining). To find out how to do that, see the [Simple Neurite Tracer: Step-By-Step Instructions](/plugins/simple-neurite-tracer/step-by-step-instructions).) - -The SWC file format describes a single neuron's morphology (so every point is connected to another one), whereas a .traces file in Simple Neurite Tracer can describe multiple disconnected structures. This means that in this plugin you can only export a complete connected set of paths to SWC. So, in this example, you could only export three different SWC files, since there are three connected groups of paths. To do that, select all of the paths in that structure (using {% include key key='Shift' %} or {% include key key='Control' %} when selecting items in the list) - that should look like this: - -{% include img align="center" src="export-to-swc-tutorial-3" %} - -... and then click the "Export to SWC" button in the bottom right of that window. If you haven't selected a completely connected set of paths, then you will get an error at this point - otherwise you will be prompted to save the SWC file. - -### Setting the SWC point types - -There is now support in Simple Neurite Tracer for setting the type of SWC points contained in each path. You can do this by selecting a set of paths and then choosing a value from the SWC Type context menu: - -{% include img align="center" src="snt-set-to-soma" %} - -You can set each path to a different type in this way, e.g.: - -{% include img align="center" src="snt-after-setting-swc-types" %} - -Note: setting an SWC type for every point is **required** by some software, such as L-measure. - -### Further Notes - -- You should only export your tracings to SWC for analysis in other tools, or or for uploading to databases that require that format. The SWC format is very simple and you lose a lot of information if you don't save your tracings in the plugin's native format. - - - -- The root node in an exported SWC file will be the first point in the primary path of the group in Simple Neurite Tracer. So, if you care about this, then before saving you should pick the path in the group which starts with what you consider to be the root node, and click "Make Primary" in the Path Window before exporting. - - diff --git a/_pages/plugins/simple-neurite-tracer/index.md b/_pages/plugins/simple-neurite-tracer/index.md deleted file mode 100644 index 7644e06d9f..0000000000 --- a/_pages/plugins/simple-neurite-tracer/index.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Simple Neurite Tracer -nav-links: true -nav-title: Index -categories: [Uncategorized] -doi: 10.1093/bioinformatics/btr390 ---- - -{% include warning/deprecated new="[SNT](/plugins/snt)" - old="[Simple Neurite Tracer](/plugins/simple-neurite-tracer)" %} - -The Simple Neurite Tracer plugin was designed to allow easy semi-automatic -tracing of neurons or other tube-like structures (e.g. blood vessels) through -3D image stacks. It has been replaced by the much more sophisticated -[SNT](/plugins/snt) plugin. diff --git a/_pages/plugins/simple-neurite-tracer/preprocessing-data-for-better-results.md b/_pages/plugins/simple-neurite-tracer/preprocessing-data-for-better-results.md deleted file mode 100644 index db7f350b2f..0000000000 --- a/_pages/plugins/simple-neurite-tracer/preprocessing-data-for-better-results.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -mediawiki: Simple_Neurite_Tracer:_Preprocessing_Data_for_Better_Results -title: Simple Neurite Tracer › Preprocessing Data for Better Results -nav-links: true -nav-title: Preprocessing Data ---- - -{% include warning/deprecated new="[SNT](/plugins/snt)" - old="[Simple Neurite Tracer](/plugins/simple-neurite-tracer)" %} - -Simple Neurite Tracer's "Hessian-based analysis" option for filtering for tube-like structures is an quick way of improving the efficiency and accuracy of path-finding. However, for best results, I would recommend using a slower but more accurate method to preprocess the data. - -## Using Pre-Processed Data - -If the file you are tracing was originally called "example.tif" or "example.lsm", then the plugin will check for the existence of a file in the same directory called "example.tubes.tif". If such a file exists, the plugin will offer to load it for you: - -![](/media/plugins/simple-neurite-tracer/snt-confirm-tubes-tif.png) - -The "\*.tubes.tif" file must be a 32-bit float image. Then, if you select the "Use preprocessed image" option: - -![](/media/plugins/simple-neurite-tracer/snt-use-preprocessed-image.png) - -... then tracing will take place on the preprocessed image rather than the raw image data or the "Hessian-based analysis" filtered values. - -## An Example Using Frangi et al.'s method - -### A single image - -To process a single image, load your image ("test.lsm", say) into Fiji and select {% include bc path='Plugins | Process | Frangi Vesselness'%}. (There is more information about this plugin [on its page](/plugins/frangi).) By way of example, let's say that you select 4 scales from half the x voxel separation to twice that value. - -Then save that file in the same directory as "test.tubes.tif". - -When you start up Simple Neurite Tracer with "test.lsm" as the current image, it will offer to load the preprocessed image you have just generated. - -### Preprocess Multiple Images - -The easiest way to preprocess multiple images is to record a macro for processing a single images, and then wrap it it in a loop to iterate over all the files in a directory. For example: - -```javascript -d = getDirectory("Select a directory"); -files = getFileList(d); - -extension = ".tif"; - -for( i = 0; i < files.length; ++i ) { - filename = files[i]; - if( endsWith(filename,extension) ) { - l = lengthOf(filename); - el = lengthOf(extension); - basename = substring(filename,0,l-el); - expected_window_name = "vesselness of "+filename; - output_filename = d + File.separator + basename + ".tubes.tif"; - open(filename); - run("Frangi Vesselness (imglib, experimental)", "number=1 minimum=0.288387 maximum=0.288387"); - selectWindow(expected_window_name); - saveAs("Tiff", output_filename); - } -} -``` diff --git a/_pages/plugins/simple-neurite-tracer/screencasts.md b/_pages/plugins/simple-neurite-tracer/screencasts.md deleted file mode 100644 index f8dc797c16..0000000000 --- a/_pages/plugins/simple-neurite-tracer/screencasts.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -mediawiki: -- Simple_Neurite_Tracer:_Introductory_Screencast -- Simple_Neurite_Tracer:_Old_Screencast1 -- Simple_Neurite_Tracer:_Old_Screencast2 -- Simple_Neurite_Tracer:_Old_Screencasts -title: Simple Neurite Tracer › Screencasts -nav-links: true -nav-title: Screencasts ---- - -{% include warning/deprecated new="[SNT](/plugins/snt)" - old="[Simple Neurite Tracer](/plugins/simple-neurite-tracer)" %} - -This screencast (which needs audio) explains basic use of the plugin. It -probably won't be clear what's going on unless you make it full-screen: - -{% include video platform="youtube" id="y6ZPdDfUOjI" width=420 %} - -## Older screencasts - -These screencasts are from very early versions of the plugin, but may still be of some use since all the functionality is still present. - -This first screencast shows the basic operation of the plugin on a fairly indistinct confocal scan. After about a minute I turn on the option to use a Hessian-based cost function for the search, based on code written by Stephan Preibisch at the Janelia Farm Hackathon. You may notice that the searches after that point follows the neurons more closely. However, in some cases that finds erroneous paths or the naive cost function performs better, so in practice one switches back and forth. \[Note that this demo was recorded from an earlier version that didn't have support for branching.\] - -{% include video platform='youtube' id='SSXx3DLCJD8'%} - -This next video demonstrates more of the functionality that I added at Janelia Farm, in particular the fitting of centre lines and the filling-out of neurons. I use Benjamin Schmid's [3D Viewer](/plugins/3d-viewer) in this demo for visualizing the results, and as an example export the mesh and load it into Blender at the end - thanks to Albert Cardona for his advice on all matters Blender. - -{% include video platform='youtube' id='sjSsNsr_2YM'%} diff --git a/_pages/plugins/simple-neurite-tracer/selecting-paths.md b/_pages/plugins/simple-neurite-tracer/selecting-paths.md deleted file mode 100644 index 84c38d66cf..0000000000 --- a/_pages/plugins/simple-neurite-tracer/selecting-paths.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -mediawiki: Simple_Neurite_Tracer:_Selecting_paths -title: Simple Neurite Tracer › Selecting paths -nav-links: true -nav-title: Selecting Paths ---- - -{% include warning/deprecated new="[SNT](/plugins/snt)" - old="[Simple Neurite Tracer](/plugins/simple-neurite-tracer)" %} - -There are three ways of selecting a particular path in [Simple Neurite Tracer](/plugins/snt). - -### In the Path Window - -You can select a path in the Path Window. You can also use the up and down cursor keys to go through the list quickly, and see which paths turn green in the 2D and 3D tracing views. - -### In the 2D tracing view - -If you press the {% include key key='G' %} key with your mouse over a path in the 2D tracing view, that path should be selected. Note that this is the nearest path to the point shown in the image, so if you're showing paths projected through all slices, this may not be the one you expect. You can make this more obvious by switching the 'View paths (2D)' option to 'parts in nearby slices'. Alternatively, just move through the stack to a nearby slice before pressing {% include key key='G' %}. - -### In the 3D tracing view - -There are various ways to select a path in the 3D viewer, from easiest to most difficult: - -- If you press {% include key key='G' %} when the mouse is over a path in the 3D Viewer, it will be selected. - - - -- If you select a path in the 3D viewer, it should now also be selected in the rest of the tracing interface. One way of doing this is via the "Select" menu. - - - -- Alternatively, you can click on the path in the 3D view. Note that you will probably have the problem that clicks in the 3D view only select the volume rather than the paths - you can get around this by selecting the volume and then unticking {% include bc path='Edit | Hide/Show | Show content'%} to hide the volume rendering. Then clicking on the paths will be easy. diff --git a/_pages/plugins/simple-neurite-tracer/sholl-analysis.md b/_pages/plugins/simple-neurite-tracer/sholl-analysis.md deleted file mode 100644 index 0e4947468b..0000000000 --- a/_pages/plugins/simple-neurite-tracer/sholl-analysis.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -mediawiki: Simple_Neurite_Tracer:_Sholl_analysis -title: Simple Neurite Tracer › Sholl Analysis -nav-links: true -nav-title: Sholl Analysis ---- - -{% include notice icon="warning" content='This is an old tutorial on how to call the [Sholl Analysis](/plugins/sholl-analysis) plugin from [Simple Neurite Tracer](/plugins/snt). **It is rather outdated. More up-to-date information is provided in [SNT: Analysis](/plugins/snt/analysis#sholl-analysis).** For an overview of the technique refer to the [Sholl Analysis](/plugins/sholl-analysis) documentation page.' %} - -# Introduction - -This tutorial assumes that you've already traced an image with Simple Neurite Tracer (SNT) and that you are familiar with the [variants of Sholl methods](/plugins/sholl-analysis#methodstable) and the [Sholl Analysis](/plugins/sholl-analysis) plugin. This tutorial will use an olfactory projection fibre image, freely available from the [Diadem challenge data set](http://www.diademchallenge.org/olfactory_projection_fibers_readme.html). - -# Retrieving Profiles - -When you've loaded the traces, that should look something like this: - -Now you have to pick a centre point for the analysis. This might be the soma or a [relevant focal point](http://forum.imagej.net/t/sholl-analysis-validation-parameters/3065/2). The centre point must be on one of your existing paths. First, select the path on which your centre point lies: - -Now hold down {% include key keys='Ctrl|Shift' %} (on Windows or Linux) or {% include key keys='option|shift' style='mac' %} (on Mac) and move the mouse along the path. A red cross-hair should track along the path: - -... when you've got the red cross-hairs at a suitable point, still holding down {% include key key='Ctrl' %} / {% include key key='Alt' %} and {% include key key='Shift' %}, press the {% include key key='A' %} key. Then you can release the other keys. You should see the Sholl analysis interface appear like this: - -Consider the first two options: you should probably select the top option *Use all N paths in analysis?* unless you're only wanting to include a subset of the paths, for example if your image stack contains multiple separate neurons. Next you can click on *Plot Profile* so that you can visualize how the intersections with concentric spheres vary with distance from your centre point: - -This graph shows exactly how many times a sphere of a particular radius will intersect with paths (i.e., *continuos sampling*). To consider spheres of evenly spaced radii (see definition of [Step size](/plugins/sholl-analysis#stepsize)), you have to enter a value into the *Radius step size* box. E.g., - -# Data Normalization - -If you need to preview the effect of [normalizing](/plugins/sholl-analysis#methodstable) the number of intersections by the volume (or area) enclosed by the sphere (or circle) - you can do that by selecting the *Normalize for volume enclosed by circle* option: - -The *Use standard axes* / *Use semi-log axes* / *Use log-log axes* controls whether the analysis is based on the log of normalized intersections and distance (*log-log*), the log of normalized intersections (*semi-log*) or unmodified values (linear axes) (see [Sholl Plots](/plugins/sholl-analysis#sholl-plots) for details. Note that the [Regression coefficient](/plugins/sholl-analysis#sholldecay) is always calculated in real time even if no normalization options are chosen. - -# Exporting Profiles - -You can export profiles by clicking on "Save Profile" which will prompt for a CSV filename to save to. If you want to export the profile, so that you can edit in some other software or include it in a presentation, you can select *Export graph as SVG* in the graph window. You can then load the SVG file (e.g., in Inkscape): - -
Supposing you want the end of a path that you're tracing to join onto an existing path, you just use the same modifier key when selecting the end point of the last part of the path. To go into that in more detail, if you're halfway through tracing a path like [1]: |
@@ -84,7 +95,7 @@ From this point on, you can carry on adding nodes to the branched path as [above
|||||||||
... and you want the final part of that path to join up with the existing path running from the top-left to top-right of the image. First, select that path in the path list (or using the {% include key key='G' %} shortcut) as in [2]: |
@@ -97,7 +108,7 @@ From this point on, you can carry on adding nodes to the branched path as [above
|||||||||
Now hold down {% include key keys='Alt|Shift' %} to restrict the endpoint to be a "join" on that existing path. Click (while still holding down the modifier keys) to start the search for that endpoint and make it join the existing path. If the search can find a path to the end point, the result should look like [3]: |
@@ -110,7 +121,7 @@ From this point on, you can carry on adding nodes to the branched path as [above
|||||||||
If you're happy with the result, confirming the temporary path will automatically complete the whole path, since if you're creating an end join there cannot be any more to the path. Note that the path list indicates that this new Path (1) ends on the existing Path (0). The result will look like [4]: |
@@ -147,26 +158,30 @@ If both nodes are terminal, the paths are merged together. Otherwise, one path w
## Tracing in the Legacy 3D Viewer
-### I.Starting the Viewer
+### I. Starting the Viewer
It remains possible to trace in the legacy 3D Viewer. To open it, select the *3D* menu tab in the SNT dialog and look for *Legacy 3D Viewer*. You will see 3 parameters:
- Select *New with image* from the *Viewer* drop-down menu (selecting *New without image* would only allow you to look at reconstructions without the underlying signal). Note that you can recycle existing viewers you may have open by choosing their window titles from the drop-down menu.
+
- Select the preferred rendering style from the *Mode* drop-down menu.
+
- Once you *Apply* the viewer choice, a prompt will appear asking you to choose the resampling factor for the image. Then, the viewer window will appear with the currently open image.
-### II.Tracing and Navigation
+### II. Tracing and Navigation
-- **Selecting points for tracing** Select the *Wand tool* ({% include key key='W' %} [shortcut](/plugins/snt/key-shortcuts#legacy-3d-viewer)) in the main ImageJ toolbar and click over the region you want to trace. Tracing works the same way as in the 2.5D view, i.e., click somewhere in the image to create a starting point, then click further along the structure of interest to find a path between the two points, then confirm or deny the temporary segment as described [above](#Tracing). Similarly, branching occurs as [described for 2D canvas(es)](#Branching:_Start_A_Path_On_An_Existing_Path), by holding the {% include key keys='Alt|Shift' %} modifier.
+- **Selecting points for tracing** Select the *Wand tool* ({% include key key='W' %} [shortcut](/plugins/snt/key-shortcuts#legacy-3d-viewer)) in the main ImageJ toolbar and click over the region you want to trace. Tracing works the same way as in the 2.5D view, i.e., click somewhere in the image to create a starting point, then click further along the structure of interest to find a path between the two points, then confirm or deny the temporary segment as described [above](#Tracing). Similarly, branching occurs as [described for 2D canvas(es)](#branching-start-a-path-on-an-existing-path), by holding the {% include key keys='Alt|Shift' %} modifier.
-- **Rotation** Either use the *Hand tool* ({% include key key='H' %} [shortcut](/plugins/snt/key-shortcuts#legacy-3d-viewer)) tool and left-click while dragging the mouse or drag mouse while holding the scroll wheel.
+- **Rotation** Either use the *Hand tool* ({% include key key='H' %} [shortcut](/plugins/snt/key-shortcuts#legacy-3d-viewer)) tool and left-click while dragging the mouse or drag mouse while holding the scroll wheel
+
- **Translation** Hold {% include key key='Shift' %} and the scroll wheel while dragging the mouse.
+
- **Adjusting zoom depth** Scroll the mouse wheel.
Once you have selected each of these tools (Wand and Hand) once, you should be able to switch between them by pressing the {% include key key='Esc' %} key. See [Key Shortcuts](/plugins/snt/key-shortcuts#legacy-3d-viewer) for the list of all supported shortcuts.
@@ -175,13 +190,11 @@ Once you have selected each of these tools (Wand and Hand) once, you should be a
-# Accurate Point Placement
-
-This section describes methods to increase the accuracy of node placement.
-
+## Accurate Point Placement
+{% include notice icon="info" content=op1-demo-incomplete %}
Accurate node placement requires XY, ZY and XZ views to be visible. You can do so at startup, by making sure that Default: XY, ZY and XZ views is selected, or by clicking in Display ZY/XZ Views in the Options tab if you have already started SNT. |
@@ -189,7 +202,7 @@ This section describes methods to increase the accuracy of node placement.
|
Find the approximate location of your start point by moving your mouse in the XY window, holding down {% include key key='Shift' %} to synchronize the view in the other panes. At this point, you should enable cursor auto-snapping in the Main tab using suitable parameters for your image. When this option is enabled, the cursor will automatically 'sniff' for local maxima and 'snap' to their average X,Y,Z position. The pixel that is most likely to be on a neurite is indicated by the red cross-hair cursor. @@ -198,9 +211,9 @@ This section describes methods to increase the accuracy of node placement. |
|
- When you press {% include key key='+' %} to zoom in, all the panes will zoom in on the point that the crosshair is over, so each time you press {% include key key='+' %}, make sure you move your mouse pointer over the neurire so that it's still over the structure of interest. You may want to adjust in the Views widget (Options tab) whether all views should zoom synchronously. When you press {% include key key='+' %} to zoom in, all the panes will zoom in on the point that the crosshair is over, so each time you press {% include key key='+' %}, make sure you move your mouse pointer over the neurite so that it's still over the structure of interest. You may want to adjust in the Views widget (Options tab) whether all views should zoom synchronously. Note that when Z-snapping is enabled, all views become synchronized, |
@@ -208,7 +221,7 @@ This section describes methods to increase the accuracy of node placement.
|
Locate the center of the structure to be clicked on. If cursor auto-snapping is enabled, simply mouse over the structure, otherwise, try moving the mouse and scroll wheel in each of the panes (holding down {% include key key='Shift' %} so synchronize the views in all three panes). Note that you can toggle the cursor auto-snapping feature at will, by pressing the shortcut {% include key key='S' %}. Also, note that you can "click" on the brightest voxel of a voxel column, by pressing {% include key key='M' %}. When you're happy with the point under the crosshairs, left-click to start the path: @@ -217,7 +230,7 @@ This section describes methods to increase the accuracy of node placement. |
|
Zoom out again with the {% include key key='-' %} key, and similarly zoom in on the next point you want to be on your path to place it precisely: |
@@ -225,7 +238,7 @@ This section describes methods to increase the accuracy of node placement.
|
The path along the neuron may not follow the center line perfectly: |
@@ -233,7 +246,7 @@ This section describes methods to increase the accuracy of node placement.
|
... but you can later improve that with the {% include bc path='Refine/Fit|Fit Path...'%} option in the Path Manager, which tries to align the path to the midline of the structure to sub-voxel accuracy: |
@@ -241,42 +254,128 @@ This section describes methods to increase the accuracy of node placement.
|
- | - |