docs(flomni): document fermat_asymmetry's effective x/y spacing
CI for csaxs_bec / test (push) Successful in 2m19s

Add an intuitive spacing table (x spacing stays at step, y spacing
becomes step/fermat_asymmetry) with a worked example, derived from
measuring actual generated positions (area-per-point vs. point count,
averaged over 20 randomized draws per ratio) rather than just stating
the formula. Mirrored into the OMNY port TODO so the same relationship
gets documented there once ported.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Lx3KffiFyyDMKT8vvPENUW
This commit is contained in:
x01dc
2026-09-17 13:46:27 +02:00
co-authored by Claude Sonnet 5
parent 8cd9235e12
commit 695eac3706
2 changed files with 24 additions and 0 deletions
@@ -13,6 +13,18 @@ symmetric, keeps x spacing fixed at `step` and scales y spacing by the ratio
while preserving the requested FOV. Soft-clamped to `[0.1, 10]` (with a
`logger.warning` when clamped), same style as `zshift`/`corridor_size`.
**Effective spacing (verified against generated data, see
`docs/plans/flomni-fermat-asymmetry.md`'s conversation for the measurement
method):** x spacing always stays at `step`; y spacing becomes `step /
fermat_asymmetry`. E.g. with `step=1 um`, `fovx=fovy=10 um`: `fermat_asymmetry=0.7`
-> x spacing 1.0 um, y spacing ~1.43 um (sparser), ~70 points;
`fermat_asymmetry=1.3` -> x spacing 1.0 um, y spacing ~0.77 um (denser),
~130 points. Point count scales with the ratio since the FOV is fixed but
the density isn't. Same relationship should be documented for OMNY once
ported (Flomni's user doc has this table -- see
`docs/user/ptychography/flomni.md`, "Effective spacing with
`fermat_asymmetry`" -- OMNY's equivalent doc, if any, should get the same).
## Important: compose with the already-ported sub-step randomization
Before this, `fixes/flomni_beamtime_2` already ported a *different* fix to
+12
View File
@@ -234,6 +234,18 @@ The basic scan function can be called by `scans.flomni_fermat_scan()` and offers
Example:
`scans.flomni_fermat_scan(fovx=10, fovy=10, cenx=0, ceny=0, step=1, fermat_asymmetry=1.0, zshift=0, angle=0, exp_time=0.1, frames_per_trigger=1, burst_at_each_point=1)`
**Effective spacing with `fermat_asymmetry`:** the x spacing always stays at `step`;
the y spacing becomes `step / fermat_asymmetry`. So with `step=1 um`:
| fermat_asymmetry | x spacing | y spacing | points (fovx=fovy=10 um example) |
| --- | --- | --- | --- |
| 0.7 | 1.0 um | ~1.43 um (sparser) | ~70 |
| 1.0 (default) | 1.0 um | 1.0 um | ~100 |
| 1.3 | 1.0 um | ~0.77 um (denser) | ~130 |
The requested FOV stays exactly as specified either way -- only the point density
(and therefore the point count and scan duration) changes.
The Fermat spiral's sub-step phase is also randomized on every projection (drawn
fresh per scan, not user-configurable) to decorrelate position-tied reconstruction
errors that would otherwise accumulate into ring artifacts across a tomographic