Automated Laser Illumination Control Algorithm
MicroManager2.0 plugin for real-time image analysis and automated laser illumination control.
Besides this short introduction, more extensive documentation can be found at alica.readthedocs.io.
Copy ALICA.jar
from one of the releases into the Micro-Manager2.0/mmplugins
folder.
- Select appropriate
Analyzer
,Controller
andLaser
, and adjust parameters. Start
ALICA. Images will now be continually analyzed from given source, and controller will adjust its output accordingly.- You can preview current output of the
Analyzer
, modify the ROI, and set a desired setpoint for the signal. - Once finished, use the
Stop
button to stop the analysis. You can use theSave last run log
button to export a.csv
file with data from the last run (e.g. analyzer output, setpoint, controller output for each image).
ALICA offers 3 different options of acquiring images from MicroManager:
- MM Core: Images are drawn directly from the circular buffer. This method is the fastest, and recommended in most cases, since it can smoothly function whenever the camera is acquiring images.
- Live mode: Images are drawn from the Datastore associated with the current live mode view. Use this if you wish to do some on-the-fly processing using the MicroManager pipeline, before passing the image to
Analyzer
. - Next acquisition: Images will be drawn from the Datastore associated with the first acquisition that is started afterwards.
Using the live view, you can select a region of interest to constrain the analyzed area (for example if the density of fluorophores is uneven, or the analysis of full image takes too long).
This value in milliseconds defines how often the Controller
queries the Analyzer
, and adjusts the Laser
output.
- Max Power: Maximal output. Requests for larger output are constrained to allowed value.
- Deadzone [%]: Requests for adjustment of output, which differ less than this value from current output, are ignored (so the laser is not unnecessarily adjusted too often.
- Virtual: If checked, the output is not passed to the device. Useful for debugging or preview of parameters.
The plugin's workflow can be separated into multiple steps:
- Acquiring images from MicroManager
- Analyzing the images using an instance of
Analyzer
- Channeling
Analyzer
's output intoController
, which processes it and controls theLaser
to achieve a desired value ofAnalyzer
's output.
Described in [Image source]
Whichever Analyzer
is selected, it waits for new image acquisition, and analyzes it. If analysis is slower than image acquisition, images are skipped, and if it is faster, the same image is not analyzed twice. Each analyzed image adjusts the Analyzer
's internal state. (For example, SpotCounter records the number of detected spots of each image, and waits for a query from Controller
.
Periodically, the Analyzer
is queried by the Controller
to produce a double
value which is a measure of the controlled property of the sample (e.g. fluorophore density). For example, SpotCounter outputs the average density of spots per frame since last query by Controller
. The Controller
then processes this value, and adjusts the Laser
's output, to achieve a desired value of Analyzer
's output. The Laser
can be any Device Property from MicroManager's core (e.g. the device is a 405nm Laser, and property is Power Setpoint).
It is possible to implement your own Analyzer
or Controller
.
More info can be found in the documentation.
ALICA uses adapted code and algorithms under GPL from following projects:
- AutoLase by Thomas Pengo and Seamus Holden
- QuickPalm by Ricardo Henriques
- SpotCounter by Nico Stuurman
Contributors:
- Marcel Stefko: ALICA framework and GUI, and adaptation of algorithms into Analyzers and Controllers
- Kyle M. Douglass: Documentation and beta-testing
Many thanks to Dr. Kyle M. Douglass for guidance during this project.