It should be perfectly possible to have an experiment with no pseudoclocks,
if it is using only toplevel devices, and none of them require clocking by a pseudoclock,
or even triggering for that matter (anything that requires triggering should be a subclass of
PseudoclockDevice).
So if there are no pseudoclocks labscript should still compile. it should store None as the master pseudoclock in the hdf5 file, and BLACS will need to check this.
BLACS normally uses this attribute to check which device tab to call start() on, but if it is None it can simply skip this line and consider the experiment already started.
We should store the experiment's stop time somewhere, and if there is no pseudoclok, BLACS should just time.sleep() for that long.
This would be the case for example for an experiment that contained static devices only like Zaber stages and these NewPort automatic mirror mounts we're implementing a labscript device for.
It is practical to run shots with static values, if only to automate a scan over parameter space and manually look at scopes and stuff.
Original report (archived issue) by Chris Billington (Bitbucket: cbillington, GitHub: chrisjbillington).
It should be perfectly possible to have an experiment with no pseudoclocks, if it is using only toplevel devices, and none of them require clocking by a pseudoclock, or even triggering for that matter (anything that requires triggering should be a subclass of PseudoclockDevice).
So if there are no pseudoclocks labscript should still compile. it should store None as the master pseudoclock in the hdf5 file, and BLACS will need to check this.
BLACS normally uses this attribute to check which device tab to call start() on, but if it is None it can simply skip this line and consider the experiment already started.
We should store the experiment's stop time somewhere, and if there is no pseudoclok, BLACS should just
time.sleep()
for that long.This would be the case for example for an experiment that contained static devices only like Zaber stages and these NewPort automatic mirror mounts we're implementing a labscript device for.
It is practical to run shots with static values, if only to automate a scan over parameter space and manually look at scopes and stuff.