This package exports the types SignalGenerator
and ImagineProcedure
.
A SignalGenerator
is simply a CachedCall designated to return a vector of ImagineSignals. (ImagineSignals are exported by ImagineInterface and can be run on microscope hardware using either Imagine or Imagine.jl). SignalGenerators are useful when one wants to store and regenerate a set of ImagineSignals on demand without having to save a command file.
An ImagineProcedure
is a formal way of linking a particular set of microscope commands with a function that analyzes the results of running those commands. ImagineProcedures can make it easier to repeat a particular recording and analysis. Specific applications include storage of repeatable microscope calibration and test procedures. They also may be a convenient way to store repeatable scientific experiments that use Imagine.
Currently Imagine runs "offline", meaning that microscope recordings cannot be planned, run, and analyzed within the same script. Instead we store command file and result files when sending information to and from Imagine, respectively. Thus running an ImagineProcedure is a three-step process:
- Generate commands with
outputs(p::ImagineProcedure)
and save them to a file. - Load the file in Imagine and perform the recording.
- Load the recording files from Imagine and run the procedure's analysis function with
process(p::ImagineProcedure, args...)
. The user need not include microscope commands inargs...
because they are generated from the ImagineProcedure'sSignalGenerator
field and passed automatically as the first argument. Therefore the analysis function of an ImagineProcedure must take at minimum one argument. Currently there are no constraints on what additional arguments may be passed to the procedure's analysis function viaargs...
, but typically they will include acquired images and/or other hardware signals recorded by Imagine.