Files
Henrik Lemke 98d8e4a0c5 docs: "Did you know?" tips, pages for recent features, and a docs-site job
- docs/did_you_know/: one short tip per feature added since May 2026
  (<date>-<slug>.md, YAML front matter: added/tags/details), listed
  newest first; index.md describes the format for adding more.
- New pages for features that had none: launching, command_history,
  tab_completion, live_gui, tweak, scanning, status_server,
  channel_access, shared_files, schematic_panels. Wired into index.rst
  together with the existing queues page.
- Fix archiver_stripchart/listening_monitor: the method is
  archiver.strip_plot (strip_chart does not exist on DataHub); document
  the per-device .strip_plot().
- NAMESPACE_MONITOR_FORMAT.md: scan monitoring is wired into Daq's scan
  callbacks since 2026-09-09.
- scripts/eco-docs (+ -install-user-service): build the docs from an own
  clone and serve them over HTTP as user systemd units, rebuilt by a
  timer; a failed build never replaces the served site.
2026-10-25 14:26:52 +01:00

67 lines
2.3 KiB
Markdown

# Tweaking with live detector readout
`tweak` moves an adjustable step by step from the keyboard. It can now record
detectors at every step and plot them live, tweak up to four axes at once, and
run as a panel in notebooks and the desktop.
## Tweak and watch a signal
```python
mot.tweak(0.1, detectors=[mon_opt.intensity])
```
Use the arrow keys to move (left/right) and to double or halve the step
(up/down). `s` returns to the start position and `q` ends the tweak. While
you tweak, the detectors are read at every position (averaged while the
position stays put) and plotted live against the position. Afterwards the data
is still there:
```python
mot._tweak_instance.recorder.to_dataframe() # Adjustables
mot._tweak_recorder.to_dataframe() # EPICS motor records
```
When the tweak ends it prints the number of points recorded and where to find
them.
## Several axes: stacked keyboard rows
```python
from eco.elements.adjustable import Tweak
Tweak((m1, 0.1), (m2, 0.1), (m3, 0.05), detectors=mon_opt.intensity).tweak()
```
One adjustable uses the arrow keys and two use the arrows as x/y. Three or four
adjustables each get a keyboard row (first adjustable lowest):
| Adjustable | neg dir | step × 2 | step / 2 | pos dir |
|------------|---------|----------|----------|---------|
| 1st | `j` | `k` | `l` | `;` |
| 2nd | `u` | `i` | `o` | `p` |
| 3rd | `7` | `8` | `9` | `0` |
With four adjustables the rows shift down one: the 1st uses `m` `,` `.` `/`,
and the others take the rows above. `stacked=True` forces this layout for one
or two adjustables too. With several axes the detector plot is stacked over the
step number.
## Front-ends: terminal, Qt panel, notebook panel
eco picks the front-end automatically. In a terminal you get the keyboard loop
above; in a notebook or the desktop console you get a tweak panel with buttons
and the same keys under "keypress control". Force one with `ui=`:
```python
mot.tweak(0.1, detectors=[diode], ui="terminal") # or "qt", "ipy"
```
While a terminal tweak waits for keys, other open GUI windows (live plots,
camera viewers) keep updating.
## No display? Plots in the terminal
Over plain ssh without X, or with `ECO_NO_X=1` set, no Qt windows are opened
and the detector plot is drawn as text right in the terminal. See
{doc}`terminal_plots`.