Files
Henrik Lemke d3bc63de20 Optimizing scans; adaptive scans with points anywhere (mesh="free")
scans.optimize maximises a live signal over several coupled axes while an
ordinary step scan records every point: probe around the start, local
quadratic model whose eigen-directions are the coupled axis combinations,
RCDS-style line searches along them, a delay calibrated to follow the
other axes (follow={delay: "calibrate"}) or fixed follow coefficients,
a check for a better maximum elsewhere (sequential GP upper bound, local
search around surprising values, restart), and the best point measured
last. Results: summary(), best(), move_to_best(), landscape(), and the
directions as virtual adjustables. Pure numpy/scipy, on the adaptive
scan driver.

adaptive_scan(..., mesh="free"): candidates on a 4x finer lattice, the
axis step as mesh resolution, no grid_specs (step 4 of
docs/multidim_scan_data.md).

sim.thz_focus: THz focused by an off-axis parabola onto a probe spot,
five coupled alignment axes and the probe delay, as a target to try it.

Docs: docs/optimize.md, mesh="free" in adaptive_scans, sim target,
two did-you-know tips.
2026-11-10 11:14:31 +01:00

6.3 KiB

eco — Experiment Control

lead

eco is a Python-based control environment for experiments, developed and used at SwissFEL, PSI. It provides an object-oriented representation of beamline and experiment devices that can be driven interactively from an IPython/Jupyter shell or reused as a library by higher-level applications and GUIs.

eco follows an object-oriented approach: every device — from a single motor to a whole instrument — is a Python object with a small, predictable interface. Because devices share conventions, they can be freely combined in generic acquisition and scanning routines and analysed with the growing landscape of scientific Python libraries.

1 1 2 2

rocket Getting started

Install eco and open your first interactive session.

megaphone Did you know?

Short tips on recent features: one call, what it gains you, and where to read more.

sparkle-fill What's new

Recent changes and new features, and what to watch out for when you update.

light-bulb Concepts

Why eco exists, its basic elements (Adjustable, Detector, Assembly) and the Bernina namespace.

list-ordered Queues

Queue scans and commands with %queue: each one test-run when queued, run one after another while the prompt stays free.

comment-discussion Ask eco

%ei how do I ...? answers from the docs, the command history, SciLog and the machine elog, with your session's devices.

goal Adaptive scans

Scans that put the next points where the live data say they help most. Try them on the simulated targets in sim.

zap Optimizing scans

Align several coupled axes at once: maximise a signal, find the axis combinations that matter, let the delay follow.

device-mobile eco on a phone

eco web: the running session in a browser, with live values, moves, queues and the cameras.

pulse Listening monitor

Subscribe to a channel and collect its value stream in the background.

graph Archiver → strip chart

Pull historical data from the archiver and open a live strip chart.

server Pipeline offload

Upload your own code to the pipeline server to offload BS-stream calculations.

gear Delta Tau configs

Read, edit, apply and verify PowerBrick motor-controller configurations.

cpu PowerBrick servo mode

Servo parameters, their auto-assigned ratios, and how to tune them.

key PowerBrick parameters

The controller's own view of a motor (cnf_pb), and loading the Kappa or SampleStage onto the diffractometer.

plug Direct motor drivers

Talk to Newport XPS and Schneider MCode controllers directly, with no EPICS in the loop.

browser Build a simple GUI

Click a small control panel together in eco desktop (dials, gauges, strip charts, optionally laid out in Qt Designer) and save it as a startup script.

device-desktop Widget views

The default Adjustable/Detector row in Qt vs ipywidgets, and the matched, stock-widget-only LED/gauge/dial "indicator" gadgets on both.

stack Widget containers

Compose a custom panel by stacking assembly/adjustable/detector/ viewer widgets, aligned left/center/right, on either front end.

Did you know?

%ei what happened to the machine since yesterday? reads the SwissFEL commissioning elog for you and answers with the entries in order. More tips like this: did_you_know/index, or features() in a session.

installation launching whats_new concepts did_you_know/index

scanning adaptive_scans optimize simple_gui simulated_targets queues tweak command_history ask_eco tab_completion recspace recspace_crystals status_server alarms alarm_phones run_history scilog_viewer storage shared_files

examples/listening_monitor examples/archiver_stripchart examples/pipeline_offload examples/deltatau_config examples/direct_motor_drivers

deltatau_servo powerbrick_parameters smaract channel_access

widget_views widget_containers schematic_panels live_gui web_app terminal_plots

developer_notes multidim_scan_data

api