docs(omny): note unconditional 0-deg reference projection follow-up
CI for csaxs_bec / test (push) Successful in 2m19s

Not implemented for omny yet -- captures the same feature just added to
Flomni/LamNI so the intent isn't lost. Omny still needs its own retraction-
capability check and tomo_scan() entry point located before this can land.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0132KBoxsovfcMNRGJhS1Pbw
This commit is contained in:
x01dcandClaude Sonnet 5 committed 2026-09-19 10:07:06 +02:00
1 parent 0a12d4892f
commit 306b93cc07
1 file changed
+40
@@ -0,0 +1,40 @@
# TODO: unconditional 0-degree reference projection at tomogram start
Status: **not implemented for omny.** Discussed 2026-09-19; implemented for
Flomni and LamNI the same day (see their `tomo_scan()` in `flomni.py`/
`lamni.py` — search for "Unconditional single 0-degree reference
projection").
## What was implemented elsewhere
At the very start of a new tomogram (not on resume), both Flomni and LamNI
now unconditionally take one real 0-degree projection — `self._tomo_scan_at_angle(0, 1)`
— independent of the `zero_deg_reference_at_each_subtomo` /
`golden_projections_at_0_deg_for_damage_estimation` flags. It's real data
(included in reconstruction, logged under `subtomo_number=1`), not a
reference-only/flat-field frame — this was an explicit choice: the point is
an immediate radiation-damage baseline that exists even when the periodic
damage-estimation flags are off, not a normalization frame.
Flomni additionally takes 10 flat-field/empty frames at 0° before this
(`collect_empty_frames()` — sample retracted out of the beam via `fsamx`
shifted by `fovx/2`, excluded from reconstruction). **LamNI does not get an
equivalent** — confirmed 2026-09-19 that LamNI has no way to retract the
sample out of the beam at all, so only the 0-degree projection was added
there, no flat-field step.
## What's needed for omny
1. **Confirm whether omny can retract the sample out of the beam at all**
(same open question as LamNI, not yet checked for omny specifically) —
determines whether an empty-frames/flat-field step is even possible here,
or whether omny should only get the 0-degree-projection part like LamNI.
2. Locate omny's `tomo_scan()` equivalent (or whatever its tomogram-start
entry point is) and its own `_tomo_scan_at_angle`-equivalent method, and
add the same unconditional call in its "new scan" branch, following the
same placement pattern used in `flomni.py`/`lamni.py`.
3. Decide the logged `subtomo_number` / whether omny's tomo-type numbering
matches flomni/lamni's convention closely enough to reuse `1` directly.
Not investigated yet — this note exists so the intent isn't lost, not
because the omny-side work has been scoped in detail.