Commit Graph
1420 Commits
Author SHA1 Message Date
duan_jandClaude Opus 4.8 f860e47914 DAQ/GUI: raster score as its own metric + score-based targeting
Build and Publish / test (pull_request) Successful in 2m7s
Build and Publish / build (pull_request) Successful in 17s
Build and Publish / Build and Deploy Docs (pull_request) Successful in 41s
Build and Publish / build (pull_request_target) Cancelled after 0s
Build and Publish / Build and Deploy Docs (pull_request_target) Cancelled after 0s
Build and Publish / test (pull_request_target) Cancelled after 16s
- promote crystal score to its own RasterGridMetric.RASTER_SCORE; first and
  default metric in the GUI dropdown; restore PR to original "Profile Radius"
- send per-cell raster score to AareDB via RasterPayloadModel
- split raster_highest_score (compute_crystal_score_array) from
  raster_centre_of_mass (restored to ndimage.center_of_mass); use score-based
  targeting for where-to-collect in both simulation and real mode
- add tests covering compute_crystal_score_array and raster_highest_score

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 18:05:29 +02:00
appleb_mandClaude Opus 4.8 ec45bf3729 daq: send commanded dtz (not live readback) to JFJoch/DB + wait for arrival
Build and Publish / test (push) Failing after 2m10s
Build and Publish / build (push) Skipped
Build and Publish / Build and Deploy Docs (push) Skipped
The detector_distance_mm sent to JFJoch and written to the DB came from the
live detector readback (diffraction.dtz_mm) captured before the detector
finished moving, so a scan requested at e.g. 100 mm could be recorded at the
old position (e.g. 800 mm).

- JFJoch + DB now read the validated request target (request.dtz) instead of
  the live diffraction.dtz_mm; diffraction.dtz_mm stays live for the
  local-contact readout.
- jfjoch: raise if request.dtz is unset (setup_datacollection must validate it
  first) instead of silently falling back to the live readback.
- raster + rotation services: wait for the detector to reach request.dtz
  (set_dtz wait=True) right before triggering the scan, since the sa2dc move is
  non-blocking. (Raster setup-before-measure reorder landed earlier in daq.py.)
- tests: request.dtz now required in jfjoch/aaredb tests; xtal-snapshot exposure
  assertion updated to 1 ms.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 16:39:06 +02:00
appleb_m f7b5008be5 workflows.py: up the exposure time on xtal snapshot to 1 ms. 2026-06-25 16:28:49 +02:00
appleb_m 4d075eb79a GUI: reactivated show coordinates
Build and Publish / test (push) Successful in 2m8s
Build and Publish / build (push) Successful in 17s
Build and Publish / Build and Deploy Docs (push) Successful in 40s
2026-06-25 11:07:56 +02:00
appleb_m 09080b4227 PSS: removed annoying log statement
Build and Publish / test (push) Successful in 2m15s
Build and Publish / build (push) Successful in 18s
Build and Publish / Build and Deploy Docs (push) Successful in 40s
2026-06-25 09:59:07 +02:00
appleb_m 14e8ef4bdf DAQ/GUI: updated beam location to use fixed exp and gain. This can be set now from teh GUi and stored in REDIS. 2026-06-25 09:58:55 +02:00
appleb_m 8c9f594d24 DAQ/GUI: updated beam location to use fixed exp and gain. This can be set now from teh GUi and stored in REDIS. 2026-06-25 09:58:47 +02:00
appleb_mandClaude Opus 4.8 a205d6422f gui: surface "beamline busy" errors quietly, not as a modal
BeamlineBusyException / TellCommandWhileBusyException fire when a user triggers
an action while the beamline or robot is busy. These are blocking-but-benign
("you can't do that right now"), so route them to the log + status bar instead
of a modal pop-up (and without the defensive automation pause), regardless of
the exception's critical flag. Genuine failures (e.g. No Pin in Gripper) still
get the modal.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 16:26:18 +02:00
appleb_m bba2f8a4c4 Merge remote-tracking branch 'origin/operation_standardisation' into operation_standardisation
Build and Publish / test (push) Successful in 2m22s
Build and Publish / build (push) Successful in 20s
Build and Publish / Build and Deploy Docs (push) Successful in 42s
2026-06-24 15:34:52 +02:00
appleb_mandClaude Opus 4.8 5370c0f168 tell_client: restore "No Pin in Gripper" detection on empty-gripper mount
Commit 071b4ab made mount() return SUCCESS as soon as it saw the intermediate
TELL "state"/Busy event, before the later "Gripper detection" event is read,
so an empty-gripper mount completed silently with no MountingFailed/pop-up.

check_command_ok blocks (wait_not_busy) until the mount sequence finishes, so
after it returns the robot's own record is authoritative: if get_mounted_sample()
is None the gripper was empty -> return NO_PIN_IN_GRIPPER, which the mounting
service maps to MountingFailed("No Pin in Gripper"). Covers manual and automation.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 15:30:08 +02:00
appleb_mandClaude Opus 4.8 47e05dc28c GUI/DAQ: hutch-safety gating, error pop-ups, and automation pause-and-wait
Fix the GUI pop-up path and add personnel-safety-system (PSS) gating so
door-open / beam-down / shutter-closed conditions are surfaced and acted on.

- exception pop-ups: connect the previously-orphaned http_error signal;
  failed user operations now raise a modal dialog, background/polling errors
  a non-modal banner.
- PSS device (devices/pss_state.py) reading EH1-PSYS PROHIBITED-STATE /
  ALARM-STATE; new critical DoorSafetyError + DOOR_SAFETY_ERROR code.
- mounting service blocks mount/unmount when the hutch is not prohibited or
  an alarm is active; /status now publishes pss_prohibited / pss_alarm.
- GUI blocks manual mount/unmount and the automation Run button immediately
  (pop-up) on door-open, and shows a warning banner while an alarm is active.
- centralise per-action precondition checks (ring current, safety shutter,
  hutch door) into one combined "continue?" dialog with a session-global
  "don't ask again for 1 hour" snooze, applied to all data-collection buttons.
- live automation pauses and auto-resumes on bad conditions (beam, shutter,
  door, robot) with continue-now / stop overrides, gated by a default-on
  "Pause on bad conditions" checkbox replacing the dead CHECK_ENABLED constant.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 15:30:08 +02:00
appleb_m a8855bfbba DAQ: added bbackup default_detector dsitances 2026-06-24 15:30:08 +02:00
appleb_m cf6c5894e0 BEC: changed the initialisation function in bec_worker.py and how certain PVS are handled: including ring_current backlight_brightness frontlight_brightness and zoom 2026-06-24 15:30:08 +02:00
appleb_mandClaude Opus 4.8 476aa69d70 data collection settings: panel-level Database/User-values toggle
Add DbOverrideLineEdit: a numeric field holding both a database value and
the user's value, driven by a per-tab Database/User-values toggle. The
user's value persists across samples, can be reverted to the database
value, and recovered again - replacing the clunky per-field checkboxes.

Fix the dtz<->resolution coupling so editing one updates the other in both
Database and User modes (previously it broke whenever a value was
overridden). Wire resolution, detector distance, transmission, exposure,
rotation total/image angle and the raster grid element size through the
new widget; other panels are untouched.

Add tests covering persist/revert/recover, the toggle's downstream emit,
the dtz/resolution coupling in both modes, and cross-sample persistence.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 15:30:08 +02:00
appleb_m 23290f9e49 daq: fixed dtecetor min and max bug if llm or hlm si missing in epics 2026-06-24 15:30:07 +02:00
appleb_m ef7d3cf157 Tell_client: fix state event handling, update tests 2026-06-24 15:30:07 +02:00
appleb_m d43218eb19 raster_grid_manager.py: fixed lag with large grid, now generates a single bitmap 2026-06-24 15:30:07 +02:00
appleb_m 8be1b0a0b5 tell: added door and remote check. 2026-06-24 15:30:07 +02:00
appleb_m ea3629d7b5 reminder to add tests for tell status chcks and other functions 2026-06-24 15:30:07 +02:00
appleb_m 8869fb26b9 update test cases for workflows, server and daq_server 2026-06-24 15:30:06 +02:00
appleb_m fab41cd40c workflows: when going to dewar transfer if tell is in pPark and get_moutn_sample is Noone don't dry. Untested! 2026-06-24 15:30:06 +02:00
appleb_m c6ac739548 portrait_mode: added a loop button to rerun the queue for debugging 2026-06-24 15:30:06 +02:00
appleb_m 746bc147a2 server: added mount checks to mount and autoamtion 2026-06-24 15:30:06 +02:00
appleb_m 50a0a4938b tell_client.py: added validate_mount_start_conditions method 2026-06-24 15:30:05 +02:00
appleb_m 680e1561e7 daq: automation log message split between success and error 2026-06-24 15:30:05 +02:00
appleb_m 7e78433974 bec_motors differ in some cases between beamline,s only a problem for logging/scilog messages 2026-06-24 15:30:05 +02:00
appleb_m c1edacc9c3 Added style sheet options - protrait style needs to be added to more places. 2026-06-24 15:30:05 +02:00
appleb_m 2fbb86df84 config, added lens_magnfiication to alter pixel_to_mm calculation 2026-06-24 15:30:05 +02:00
appleb_m 7c8e3e78a8 added portrait_mode.py 2026-06-24 15:30:04 +02:00
appleb_m f5f53a29ca operations refactor: standardised operations, added rotation operation, updated tests. 2026-06-24 15:30:04 +02:00
appleb_m 497241bb82 beamlin: renamed second BeamlineConfig to BeamlineYAMLCOnfig 2026-06-24 15:30:03 +02:00
appleb_m b4b82a59fd devices: fix on bec det_z device 2026-06-24 15:30:03 +02:00
appleb_m 793864bd39 pyproject.toml: should be sseclient not sseclient-py 2026-06-24 15:30:03 +02:00
appleb_m 454cd60825 tell: debuging. 2026-06-24 15:30:03 +02:00
appleb_m 0ad42f7f71 updated workflows test 2026-06-24 15:30:03 +02:00
appleb_m 90758fd246 better erro hadnling for status bar 2026-06-24 15:30:03 +02:00
appleb_m 770587e48a workflows.py: added safe dtz positon check 2026-06-24 15:30:02 +02:00
appleb_m f83f8bc921 yaml updates 2026-06-24 15:30:02 +02:00
appleb_m 9c0213760b detector_metadata: endpoint in sevrer was incorrect. 2026-06-24 15:30:02 +02:00
appleb_m 6aec41c7b5 aarelc_infer.py and yaml updated url for 6D 2026-06-24 15:30:02 +02:00
appleb_m e4bf9f7adc added smargon_frontend_url to yaml files 2026-06-24 15:30:02 +02:00
appleb_m 36a06ccf14 Change how detector metadate is stored - now in redis - so status updates are faster. 2026-06-24 15:30:01 +02:00
appleb_m 527ac23ad7 tell:debugging, trying to catch and interpret roboto returns busy during wait for events correctly 2026-06-24 15:30:01 +02:00
appleb_m 13c6119d3a raster: logging to track com 2026-06-24 15:30:01 +02:00
appleb_m b8eb6143c1 config: remove ABR_POS_ALIGN_DEF and use ABR_POS_MOUNT instead 2026-06-24 15:30:01 +02:00
appleb_m 1ca4e5cc23 Defining a bec device pv as a variable that can be called is significantly faster than calling motor.postion or motor.low_limit everytime. (~6 us compared to 200 ms) 2026-06-24 15:30:01 +02:00
appleb_m dace8ad248 raster: added back COM calculation, needs testing 2026-06-24 15:30:00 +02:00
appleb_m 4c30ce92f6 main_window: connect new beamline state buttons to daq worker 2026-06-24 15:30:00 +02:00
appleb_m ba1a178419 logging: suppress successful local contact/device_state and smart_params 2026-06-24 15:30:00 +02:00
appleb_m 9fa82bbad1 devices: transmission PVS are different at X10SA and X06DA 2026-06-24 15:29:59 +02:00