-
Notifications
You must be signed in to change notification settings - Fork 42
For developers
This page provides information on:
- Building ThunderSTORM from source
- ImageJ Macro Language
- Extending ThunderSTORM
- Interface of ThunderSTORM Modules
- Reusing ThunderSTORM Features
- Hidden Macro Commands
To make any changes or upgrades to the code on your own, and to build ThunderSTORM, clone the Git repository by running the git clone https://code.google.com/p/thunder-storm/
command from the Git console. The repository contains a Maven project which can be compiled in the IntelliJ IDEA or any other IDE.
TODO: this is an old description for NetBeans!
In order to run ThunderSTORM directly from Netbeans, right-click on the Thunder_STORM project and select Properties
. Then select Run and type the ImageJ path into the Working directory
text field, for example, C:\Program Files\ImageJ
. Note that running ThunderSTORM directly from Netbeans will start ImageJ version 1.45s.
Most of the actions done in ThunderSTORM can be automated using the ImageJ macro language or other scripting languages supported by ImageJ. You can find the correct commands by recording a macro in ImageJ. Click on Plugins → Macros → Record...
and then all actions done in ThunderSTORM will record a macro command in the recorder window.
You can find an example of batch processing with ThunderSTORM in the tutorials section.
New modules can be added to ThunderSTORM without modifying the distributed binary or recompiling from source. The java ServiceLoader API is used to load available modules at runtime from classpath (usually ImageJ's plugins folder). In short, adding a module to ThunderSTORM consists of creating a jar and putting it to the ImageJ's plugins directory. The jar must contain a class implementing the module interface and a one-line configuration file.
See Extending ThunderSTORM tutorial for an example of creating a new estimator module.
You can currently add six types of modules by extending one of these classes:
-
IImportExport
- importing and exporting the results table data -
IFilterUI
- feature enhancement filters -
IDetectorUI
- rough molecule localization -
IEstimatorUI
- sub-pixel precision localization -
IRendererUI
- visualization of the results -
PostProcessingModule
- manipulating the results table
TODO
- ImageJ Macro Language
- From Java (can we simply add Maven support into the repository?)
- From Matlab
- ... or similarly in any other language supporting Java ...
Here we list macro commands that are not available from GUI. These are mainly for debugging and testing.
So far we offer the following hidden macro commands:
- In the Generator of Simulated Data there is an option called singleFixed. If it is set to
true
, the generator outputs a sequence of frames with a single molecule with a fixed position in the center of each frame. Example:run("Generator of simulated data", "psf=[Integrated Gaussian] height=32 density=1 frames=100 width=32 addpoisssonvar=30 intensityrange=900 singlefixed=true");
- In the Run Analysis there is an option called full_image_fitting which interprets the whole image as a fitting region and runs multi-emitter fitting analysis (MFA) on it, thus MFA must be enabled for this feature in order to work properly. The fitting always starts with an assumption of a single molecule model which is at the position of detection with largest intensity. Note that the parameter
fitradius
is ignored in this use-case. Example:run("Run analysis", "filter=[Wavelet filter (B-Spline)] scale=2.0 order=3 detector=[Local maximum] connectivity=8-neighbourhood threshold=std(Wave.F1) estimator=[PSF: Integrated Gaussian] sigma=1.3 method=[Weighted Least squares] full_image_fitting=true fitradius=3 fixed_intensity=true expected_intensity=500:900 nmax=10 pvalue=1.0E-6 mfaenabled=true keep_same_intensity=false renderer=[No Renderer]");
- In the Rendering there is an option autosize. There are three possible values:
image
,results
,manual
(default), where it is equivalent to clicking on "Auto size by analyzed image", "Auto size by results", and manually entering the values, respectively. Ifimage
orresults
is used, the manually entered dimensions, such asimheight
, are ignored. Ifimage
is selected, but the analyzed image is not available from the previous analysis,manual
is used instead. Example:run("Visualization", "autosize=results renderer=[Averaged shifted histograms] magnification=5.0 shifts=2");
is the simplest way of rendering images.
Home | About | Downloads | Installation | Tutorials | Guidelines | FAQ | Developers | Discussion