SerialEM Note: Flexible Timer
- Author:
Chen Xu
- Contact:
- Date-created:
2019-10-09
- Last-updated:
2023-12-04
- Abstract
Note about the flexible timer available for scripting and an example how to use it.
Background information
In SerialEM scripting, there are a few commands with timer built in. For
example, command LongOperation can take a few specific actions with
timer defined. Here is one of the example:
LongOperation Da 3
This will perform dark reference for K2/K3 camera every 3 hours. This is
very handy indeed. Another example is RefineZLP.
RefineZLP 30
This will perform refining ZLP every 30 minutes.
However, if we want to set a timer and to do a multiple and general actions when time is up, a more flexible timer is needed. In the case shown in picture below, which is Au-foil grid, we use multiple hole mechanism to collected images in these 4 holes using beam-image shift while the stage is centered at the middle of the 4 hole pattern. When the procedure is finished, the shift is reset and Record beam would be hitting on the black Au crystals.
Fig.1 4-hole black Au crystals
It is known that this kind of black crystal film is bad for refineZLP
routine to work properly. It needs to use a hole area to make it work. As
you can see, a simple timer built in for a specific function is not
sufficient here. Two actions are needed: 1) move to one of the four holes
and 2) perform RefineZLP. It requires a more flexible timer to do this.
Flexible Timer
A typical timer which could handle multiple actions would be like this:
If time is up
do task1
do task2
...
EndIf
One of the script commands related to timer is SetCustomTime. Below is
example code to perform two actions mentioned above.
SetCustomTime ZLP # start timer
Then you can use the timer to do things based elaped time.
### move to a hole and refineZLP every 30 minutes
ReportCustomInterval ZLP
if $repVal1 >= 30
StageToLastMultiHole
#ImageShiftToLastMultiHole
RefineZLP # refine now
SetCustomTime ZLP # reset it
Endif
###