Skip to content

Tomography plan family (promoted from hex-ob) - #78

Draft
Anthony Sligar (sligara7) wants to merge 12 commits into
mainfrom
tomography-plans
Draft

Tomography plan family (promoted from hex-ob)#78
Anthony Sligar (sligara7) wants to merge 12 commits into
mainfrom
tomography-plans

Conversation

@sligara7

Copy link
Copy Markdown

Stacked on #77 (which is stacked on #76): this PR's own commit adds the plan layer only — 16 files, all new; the diff includes the parent PRs' commits until they merge, then collapses.

One module per legacy pyepics tomography script (hex-acq-pyepics/techniques/tomography/kinetix/), driving the detectors from #77 with detectors and motors passed as arguments:

  • Core scansscan_1d, take_radiograph, take_dark_flat, alignment_scan
  • Fly scanstomo_flyscan + tomo_flyscan_average (PandA-triggered; Proc-plugin recursive-filter averaging)
  • Batch runnersrun_multiple_scans, run_multiple_2d_scans + averaged variants (dark/flat cadence, restore behaviors)
  • Utilitiesreset_detector, enable_flat_correction; plans/shutter.py helpers
  • Teststests/plans/test_tomography_plans.py runs a representative slice end-to-end under mock devices (pytest tests/ on the stack: 65 passed). The exhaustive behavioral suites, including the simulated-beamline tier, stay with the sim in NSLS2/hex-ob.

The Phantom plan family is deliberately not included: it needs reconciling with this package's PhantomDetector surface first (the enums already match; the writer/hdf attribute naming and driver surface differ). It follows as its own PR.

Jakub Wlodek (jwlodek) and others added 10 commits April 23, 2026 12:40
…async version. Add classes for Filters and Monochromater. Add plan for changing energies, with auto-tuning of the second crystal pitch
- detectors/kinetix.py: HEXKinetixDetector (+ make_kinetix for Det:1/Det:3)
  with the HEX workarounds baked in: SWMR off, no flush-now (locks the
  plugin at HEX), 60 s HDF close for network storage, live-view stop on
  stage / restart on unstage, NumCaptured-reset race fix at prepare.
  HEXProcPluginIO adds the recursive-filter (frame averaging) and
  flat-field fields to Proc1:. SettablePathProvider / set_output_dir let
  plans retarget the output directory per scan.
- detectors/panda.py: make_panda (HDFPanda, settable path provider).
- tests/detectors/test_kinetix.py: device tests under mock.

Existing modules (germ, phantom) untouched. The tomography plan family
that drives these devices follows as its own PR.
One module per legacy pyepics tomography script, driving the detectors
from the kinetix/panda modules (detectors and motors passed as
arguments): scan_1d, take_radiograph, take_dark_flat, alignment_scan,
tomo_flyscan (+ frame-averaged variant), the batch runners (+ 2D and
averaged variants), reset_detector, enable_flat_correction; plus
plans/shutter.py helpers.

tests/plans/test_tomography_plans.py runs a representative slice
end-to-end under mock devices; the exhaustive behavioral suites
(including the simulated-beamline tier) stay with the sim in
NSLS2/hex-ob.

The Phantom plan family is deliberately not included: it needs
reconciling with this package's PhantomDetector surface first (the enums
already match; the writer/hdf attribute naming and driver surface
differ).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants