bluesky.plans.grid_scan#
- bluesky.plans.grid_scan(detectors: Sequence[Readable], *args, snake_axes: Iterable | bool | None = None, 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. - Parameters:
- detectors: list or tuple
- list of ‘readable’ objects 
- ``*args``
- patterned like (motor1, start1, stop1, num1,
- motor2, start2, stop2, num2,- motor3, start3, stop3, num3,…- motorN, startN, stopN, numN)
 - The first motor is the “slowest”, the outer loop. For all motors except the first motor, there is a “snake” argument: a boolean indicating whether to following snake-like, winding trajectory or a simple left-to-right trajectory. 
- patterned like (
- snake_axes: boolean 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_step: callable, optional
- hook for customizing action of inner loop (messages per step). See docstring of - bluesky.plan_stubs.one_nd_step()(the default) for details.
- md: dict, optional
- metadata 
 
 - See also - bluesky.plans.rel_grid_scan()
- bluesky.plans.inner_product_scan()
- bluesky.plans.scan_nd()