Skip to content

Commit 5ea273a

Browse files
authored
Merge pull request #196 from marktsuchida/sequence-tester-autofocus
Document SequenceTester autofocus
2 parents a864dfe + f499c89 commit 5ea273a

File tree

1 file changed

+40
-7
lines changed

1 file changed

+40
-7
lines changed

_pages/SequenceTester.md

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,12 @@ separate section below for the machine-readable format.
8383

8484
## Recorded parameters
8585

86-
The parameters recorded in the `State` and `history` section correspond to the
86+
The parameters recorded in the `State` and `History` section correspond to the
8787
state modeled by each device type. Device name (N.B., not device label) and
8888
parameter name are separated by a comma (`,`).
8989

9090
Some parameters (such as `TCamera-0,Binning` or `TShutter-0,ShutterState`) map
91-
to Micro-Manager properties, but some (such as `TSwitcher-0,GeteOpen` or
91+
to Micro-Manager properties, but some (such as `TSwitcher-0,GateOpen` or
9292
`TZStage-0,ZPositionUm`) do not.
9393

9494
### The `Busy` parameter
@@ -116,15 +116,15 @@ completion, the device's `Busy` parameter will have a non-zero value in the
116116
move but not waiting for the stage device before acquiring an image.
117117

118118
(Note that such bugs are often hard to find when testing with real hardware or
119-
DemoCamera, because not all devices become busy on every action begin
119+
DemoCamera, because not all devices become busy on every action being
120120
initiated---and even if they did, it's not always obvious from the resulting
121121
images that the action had not fully completed: for example, failure to wait
122122
for focus movement to finish during a Z stack may not always be obvious in the
123123
images.)
124124

125125
## Real (wall clock) time is not simulated
126126

127-
The SequenceTester devices intentially do **not** simulate real time behavior.
127+
The SequenceTester devices intentionally do **not** simulate real time behavior.
128128
That is, actions that would take significant time in real devices take almost
129129
no time, and the devices never sleep to simulate the passage of time.
130130

@@ -168,9 +168,42 @@ of the device.
168168

169169
## Autofocus simulation
170170

171-
(To be documented.) Caveat: the autofocus (actually hardware focus-maintenance)
172-
behavior simulated may not represent all possible behaviors of real devices.
173-
More work may be needed.
171+
The `TAutofocus-{0,1}` devices simulate "autofocus" devices, which model devices
172+
that provide hardware-based focus maintenance.
173+
174+
The TAFStage devices (`TAFStage-{0,1}`) are Z-stages that return `true` from
175+
MMCore's `isContinuousFocusDrive()` query. These are useful for testing code
176+
that needs to distinguish between regular Z-stages and focus-maintenance
177+
"offset" stages. (BUG: These should be linked to the current focus offset of the
178+
corresponding `TAutofocus-{0,1}` device, but they aren't as of this writing).
179+
180+
Caveat: the autofocus behavior simulated does not represent all possible
181+
behaviors of real hardware focus maintenance devices. This is an area in which
182+
we do not have good abstraction between vendor specific behavior.
183+
184+
The autofocus device (`TAutofocus-{0,1}`) provides the following user-accessible
185+
properties:
186+
187+
- `ContinuousFocus` (On/Off): Enable or disable continuous focus operation.
188+
Equivalent to MMCore's `enableContinuousFocus()` and
189+
`isContinuousFocusEnabled()`.
190+
- `LinkedZStage`: Specifies the device name (N.B., not label) of a Z-stage to
191+
_link_ to (typically `TZStage-0` or `TZStage-1`).
192+
- `SetZDisablesContinuousFocus` (Yes/No): When set to `Yes`, any call to move
193+
the _linked_ Z-stage will automatically disable continuous focus. This
194+
simulates the behavior of some microscopes that turn off focus maintenance
195+
when the user or acquisition code manually moves the focus.
196+
197+
In addition to the device properties, the following internal parameters are
198+
recorded in the test output:
199+
200+
- `Offset`: The autofocus offset value, accessed via MMCore's
201+
`setAutoFocusOffset()` and `getAutoFocusOffset()`.
202+
- `ContinuousFocusEnabled`: Records the continuous focus on/off state.
203+
- `FullFocus`: A one-shot parameter that records when MMCore's `fullFocus()`
204+
function is called on the autofocus device.
205+
- `IncrementalFocus`: A one-shot parameter that records when MMCore's
206+
`incrementalFocus()` function is called on the autofocus device.
174207

175208
## Format of the MsgPack test data
176209

0 commit comments

Comments
 (0)