bluesky.plans.rel_list_grid_scan#
- bluesky.plans.rel_list_grid_scan(detectors: Sequence[Readable], *args: Movable | Any, snake_axes: bool = False, per_step: Callable[[Sequence[Readable], Movable, Any, Callable[[Sequence[Readable]], Generator[Msg, Any, Mapping[str, Reading]]] | None], Generator[Msg, Any, P]] | Callable[[Sequence[Readable], Mapping[Movable, Any], dict[Movable, Any], Callable[[Sequence[Readable]], Generator[Msg, Any, Mapping[str, Reading]]] | None], Generator[Msg, Any, P]] | None = None, md: dict[str, Any] | None = None) Generator[Msg, Any, str] [source]#
Scan over a mesh; each motor is on an independent trajectory. Each point is relative to the current position.
- Parameters:
- detectorslist or tuple
list of ‘readable’ objects
- args
- patterned like (
motor1, position_list1,
motor2, position_list2,
motor3, position_list3,
...,
motorN, position_listN
)
The first motor is the “slowest”, the outer loop.
position_list
’s are lists of positions, all lists must have the same length. Motors can be any ‘settable’ object (motor, temp controller, etc.).- patterned like (
- snake_axesboolean or Iterable, optional
which axes should be snaked, either
False
(do not snake any axes),True
(snake all axes) or a list of axes to snake. “Snaking” an axis is defined as following snake-like, winding trajectory instead of a simple left-to-right trajectory.The elements of the list are motors that are listed in args. The list must not contain the slowest (first) motor, since it can’t be snaked.- per_stepcallable, optional
hook for customizing action of inner loop (messages per step). See docstring of
bluesky.plan_stubs.one_nd_step()
(the default) for details.- mddict, optional
metadata