feat(flomni): sample storage on the new flOMNI soft IOC (FLOMNI-SAMPLE:<slot>:<field>) #333
No Reviewers
Labels
Clear labels
issue::not confirmed
issue::not reproducible
issue::reproducible
priority::critical
priority::needed
priority::nice to have
scope::backend
scope::frontend
stage::in development
stage::on hold
stage::pre_release
stage::ready for review
stage::selected for development
stage::weekly backlog
type::bug
type::discussion
type::doc
type::feature
type::improvement
type::test
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
Used if an issue has not yet been confirmed by a developer
Used if an issue is not reproducible
Used if a developer was able to reproduce the issue
Should be done as soon as possible
An important update to the code base
Not really needed but a good improvement
An issue regarding the backend services
An issue regarding the user-facing services
This issue is currently being worked on
Something is blocking the development
For issues that have been merged into a pre-release branch and are waiting for their release.
For issues that have been resolved and are ready for review
This issue has been selected for development but has not been scheduled yet
This issue has been selected for development for the next development cycle
It's a bug!
A discussion is wanted/needed
Improvements to the documentation
A new feature
Neither a feature nor a bug but an improvement to the code base
Missing tests or improvements to the test suite
Something is not working
This issue or pull request already exists
New feature
Need some help
Something is wrong
More information is needed
This won't be fixed
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Assignees
acerbo_a (acerbo_a)
bec-gitea
chen_h2 (chen_h2)
debenjak_l (debenjak_l)
diaz (diaz)
divall_e (divall_e)
guizar_m (guizar_m)
haghta_s (haghta_s)
holler (holler)
lombosi_c (lombosi_c)
malu_s (malu_s)
menzel (menzel)
perl_d (perl_d)
usov_i (usov_i)
wakonig_k (wakonig_k)
wang_x1 (wang_x1)
wyzula_j (wyzula_j)
zamofing_t (zamofing_t)
zhang_y7 (zhang_y7)
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: bec/csaxs_bec#333
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The flOMNI sample storage moves from the XOMNY-SAMPLE_DB_flomni:GET/.DESC
records (name and owner packed into one 40-char DESC via sample_desc_codec,
measurement status in the BEC global var "flomni_measured_samples" keyed by
that packed string) to one record per slot on the flOMNI soft IOC
(flOMNI repo, softioc/ioc_flomni.py):
No transition (decided by Mirko 2026-10-17).
names sample_placed/sample_names/sample_in_gripper[_name] kept; new
sample_owners/sample_status/sample_meas_date (+ gripper equivalents),
get_sample_status/meas_date/record, set_sample_measured(slot, status,
date, owner_if_empty) and transfer_sample(from, to), which moves the whole
record so the measurement status travels with the sample
sample started/completed on the record; the label offer reads status,
date and owner from the record; _MeasuredSampleLog and
sample_get_measured_log_key removed
Behaviour change: the label's account is the sample owner (was the active
account at measurement time); set_sample_measured fills an empty owner
with the active account
set_sample_slot/unset_sample_slot; no global-var measured log
now the plain name)
Tested against the live IOC on mpc2844 (ophyd): long names, transfers slot ->
gripper -> stage with status/date, owner_if_empty, show_all, clear, slot
range check, bulk read() keys.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01TNtKEk4jAyjebMDQFwRHJQ
The flOMNI sample storage moves from the XOMNY-SAMPLE_DB_flomni<n>:GET/.DESC records (name and owner packed into one 40-char DESC via sample_desc_codec, measurement status in the BEC global var "flomni_measured_samples" keyed by that packed string) to one record per slot on the flOMNI soft IOC (flOMNI repo, softioc/ioc_flomni.py): FLOMNI-SAMPLE:<slot>:USED / NAME (up to 256 chars) / OWNER / STATUS (none|started|completed) / MEAS_DATE <slot> = STAGE (0), T01..T20 (1-20), GRIPPER (100) No transition (decided by Mirko 2026-10-17). - FlomniSampleStorage: same public methods (slot 100 = gripper), attribute names sample_placed/sample_names/sample_in_gripper[_name] kept; new sample_owners/sample_status/sample_meas_date (+ gripper equivalents), get_sample_status/meas_date/record, set_sample_measured(slot, status, date, owner_if_empty) and transfer_sample(from, to), which moves the whole record so the measurement status travels with the sample - flomni plugin: transfers use transfer_sample(); tomo_scan marks the stage sample started/completed on the record; the label offer reads status, date and owner from the record; _MeasuredSampleLog and sample_get_measured_log_key removed Behaviour change: the label's account is the sample owner (was the active account at measurement time); set_sample_measured fills an empty owner with the active account - sample storage widget: bulk read incl. owner/status, writes via set_sample_slot/unset_sample_slot; no global-var measured log - webpage generator: name and owner from separate fields - e2e harness and tomo test updated; nexus writer unchanged (sample name is now the plain name) Tested against the live IOC on mpc2844 (ophyd): long names, transfers slot -> gripper -> stage with status/date, owner_if_empty, show_all, clear, slot range check, bulk read() keys. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TNtKEk4jAyjebMDQFwRHJQ