bluesky.plans.scan_nd#

bluesky.plans.scan_nd(detectors: Sequence[Readable], cycler: Cycler, *, 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 an arbitrary N-dimensional trajectory.

Parameters:
detectorslist or tuple
cyclerCycler

cycler.Cycler object mapping movable interfaces to positions

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

See also

bluesky.plans.inner_product_scan()
bluesky.plans.grid_scan()

Examples

>>> from cycler import cycler
>>> cy = cycler(motor1, [1, 2, 3]) * cycler(motor2, [4, 5, 6])
>>> scan_nd([sensor], cy)