diff --git a/.gitignore b/.gitignore index db2b8df..75ae658 100644 --- a/.gitignore +++ b/.gitignore @@ -86,3 +86,5 @@ db/ static/ history.sqlite Link\ to\ startup + +.vscode/ diff --git a/scripts/ramp_ioc.py b/scripts/ramp_ioc.py new file mode 100644 index 0000000..7c077ec --- /dev/null +++ b/scripts/ramp_ioc.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 +from textwrap import dedent + +from caproto.server import PVGroup, ioc_arg_parser, pvproperty, run + + +class SimpleIOC(PVGroup): + """ + An IOC with three uncoupled read/writable PVs + + Scalar PVs + ---------- + A (int) + B (float) + + Vectors PVs + ----------- + C (vector of int) + """ + + done = pvproperty( + value=0, + doc="An integer to track if the ramp should be done.", + name="RampDone-Cmd", + ) + delta = pvproperty(value=0.1, doc="The delta of the ramp rate.", name="RampDelta") + take = pvproperty(value=0, doc="If XRD data should be taken", name="TakeXRD-Cmd",) + + +if __name__ == "__main__": + ioc_options, run_options = ioc_arg_parser( + default_prefix="OvenRampControl:", desc=dedent(SimpleIOC.__doc__) + ) + ioc = SimpleIOC(**ioc_options) + run(ioc.pvdb, **run_options) diff --git a/scripts/robo_dan.py b/scripts/robo_dan.py new file mode 100644 index 0000000..84d9f6c --- /dev/null +++ b/scripts/robo_dan.py @@ -0,0 +1,48 @@ +from ophyd import Device, Component as Cpt, EpicsSignal +import time +import datetime + + +class RampControl(Device): + delta = Cpt(EpicsSignal, "RampDelta") + done = Cpt(EpicsSignal, "RampDone-Cmd") + take_xrd = Cpt(EpicsSignal, "TakeXRD-Cmd") + + +temperature = EpicsSignal("XF:28ID1-ES{LS336:1-Chan:C}T-I") +ramp_control = RampControl("OvenRampControl:", name="ramp_control") +power_rbv = EpicsSignal("XF:28ID1-ES{LS336:1-Out:3}Out:Man-RB") +power_sp = EpicsSignal("XF:28ID1-ES{LS336:1-Out:3}Out:Man-SP") + +print(f"{datetime.datetime.now()} Good morning! Robo-dan going to work!") + +while True: + T = temperature.get() + if T is not None and T > 1025: + break + time.sleep(60) + print(f"{datetime.datetime.now()} temperature at {T:.2f}, keep going!") + +print(f"{datetime.datetime.now()} temperature at {T}, Done!!") + +ramp_control.delta.put(0) +print(f"{datetime.datetime.now()} holding for 5 minutes") +time.sleep(60 * 5) + +print(f"{datetime.datetime.now()} starting cooling") +ramp_control.delta.put(-2.5) + +while True: + p = power_rbv.get() + print(f"{datetime.datetime.now()} power currently at {p}, still cooling") + if p < 1: + break + time.sleep(3 * 60) + +time.sleep(5 * 60) +print(f"{datetime.datetime.now()} power low, declare done") +ramp_control.done.put(1) + +time.sleep(5 * 60) +print(f"{datetime.datetime.now()} putting power to 0 just in case") +power_sp.put(0) diff --git a/startup/12-sorensen.py b/startup/12-sorensen.py new file mode 100644 index 0000000..ec1adba --- /dev/null +++ b/startup/12-sorensen.py @@ -0,0 +1,908 @@ +from ophyd import EpicsSignal +import numpy as np +import bluesky.plan_stubs as bps +import bluesky.preprocessors as bpp +import time as ttime + + +# This is fixed in ophyd 1.6.2 +def _paranoid_set_and_wait( + signal, val, poll_time=0.01, timeout=10, rtol=None, atol=None +): + """Set a signal to a value and wait until it reads correctly. + + For floating point values, it is strongly recommended to set a tolerance. + If tolerances are unset, the values will be compared exactly. + + Parameters + ---------- + signal : EpicsSignal (or any object with `get` and `put`) + val : object + value to set signal to + poll_time : float, optional + how soon to check whether the value has been successfully set + timeout : float, optional + maximum time to wait for value to be successfully set + rtol : float, optional + allowed relative tolerance between the readback and setpoint values + atol : float, optional + allowed absolute tolerance between the readback and setpoint values + + Raises + ------ + TimeoutError if timeout is exceeded + """ + from bluesky.utils.epics_pvs import _compare_maybe_enum, logger + import time as ttime + + signal.put(val) + expiration_time = ttime.time() + timeout if timeout is not None else None + current_value = signal.get() + + if atol is None and hasattr(signal, "tolerance"): + atol = signal.tolerance + if rtol is None and hasattr(signal, "rtolerance"): + rtol = signal.rtolerance + + try: + enum_strings = signal.enum_strs + except AttributeError: + enum_strings = () + + if atol is not None: + within_str = ["within {!r}".format(atol)] + else: + within_str = [] + + if rtol is not None: + within_str.append("(relative tolerance of {!r})".format(rtol)) + + if within_str: + within_str = " ".join([""] + within_str) + else: + within_str = "" + + while current_value is None or not _compare_maybe_enum( + val, current_value, enum_strings, atol, rtol + ): + logger.debug( + "Waiting for %s to be set from %r to %r%s...", + signal.name, + current_value, + val, + within_str, + ) + ttime.sleep(poll_time) + if poll_time < 0.1: + poll_time *= 2 # logarithmic back-off + current_value = signal.get() + if expiration_time is not None and ttime.time() > expiration_time: + raise TimeoutError( + "Attempted to set %r to value %r and timed " + "out after %r seconds. Current value is %r." + % (signal, val, timeout, current_value) + ) + + +class ParnoidEpicsSignal(EpicsSignal): + def _set_and_wait(self, val): + return _paranoid_set_and_wait( + self, value, timeout=timeout, atol=self.tolerance, rtol=self.rtolerance + ) + + def get(self): + ret = super().get() + for j in range(5): + if ret is not None: + return ret + ttime.sleep(0.1) + ret = super().get() + else: + raise RuntimeError("getting all nones") + + +sorensen850_manual = ParnoidEpicsSignal( + "XF:28ID1-ES{LS336:1-Out:3}Out:Man-RB", + write_pv="XF:28ID1-ES{LS336:1-Out:3}Out:Man-SP", + name="sorensen850_manual", + tolerance=0.1, +) +import uuid +import bluesky.plans as bp + +lakeshore336.read_attrs = ["temp", "temp.C", "temp.C.T"] +lakeshore336.temp.C.T.kind = "hinted" + + +def power_ramp(start, stop, steps, *, exposure, settle_time=0, n_per_hold=1, **kwargs): + ramp_uid = str(uuid.uuid4()) + for p in np.linspace(start, stop, steps): + yield from bps.mv(sorensen850_manual, p) + if settle_time > 0: + yield from bps.sleep(settle_time) + for j in range(n_per_hold): + yield from bpp.baseline_wrapper( + simple_ct( + [pe1c] + [sorensen850_manual, lakeshore336], + md={"ramp_uid": ramp_uid}, + **kwargs, + exposure=exposure, + ), + [lakeshore336, ring_current, sorensen850_manual], + ) + + +from pathlib import Path +import pandas as pd + + +def write_single_calibration_data_to_csv_and_make_tom_sad(uid, path=Path(".")): + h = db[uid] + tbl = h.table() + tbl["delta"] = (tbl.time - tbl.time.iloc[0]).dt.total_seconds() + tbl = tbl.set_index(tbl["delta"]) + + power = tbl["sorensen850_manual"].mean() + T_start = tbl["lakeshore336_temp_C_T"].iloc[0] + T_stop = tbl["lakeshore336_temp_C_T"].iloc[-1] + + out = path / f"power_{power:.2f}-Tstart_{T_start:.2f}-Tstop_{T_stop:.2f}.csv" + tbl[["lakeshore336_temp_C_T"]].to_csv(out) + + return tbl + + +def write_calibration_data_to_csv_and_make_tom_sad( + uid_list, *, fname=None, stream_name="primary" +): + if len(uid_list) and isinstance(uid_list[0], str): + headers = [db[uid] for uid in uid_list] + else: + headers = uid_list + headers = sorted(headers, key=lambda h: h.start["time"]) + + merged_table = pd.concat([h.table(stream_name=stream_name) for h in headers]) + dt = (merged_table["time"] - merged_table["time"].iloc[0]).dt.total_seconds() + dt.name = "delta_time" + merged_table = merged_table.set_index(dt) + + if fname is not None: + merged_table.to_csv(fname) + return merged_table + + +from bluesky.utils import RunEngineControlException + + +def power_calibration_ramp(power_levels, *, hold_time, n_per_hold=10, path): + ramp_uid = str(uuid.uuid4()) + out_uids = [] + + def inner(): + for p in power_levels: + yield from bps.mv(sorensen850_manual, p) + try: + uid = yield from bp.count( + [lakeshore336, sorensen850_manual], + num=n_per_hold, + delay=hold_time / n_per_hold, + md={"ramp_uid": ramp_uid, "purpose": "sorensen calibration"}, + ) + out_uids.append(uid) + except RunEngineControlException: + raise + except Exception as e: + # We want to prioritize this not crashing over night + print(e) + continue + else: + write_calibration_data_to_csv_and_make_tom_sad(out_uids, path) + return out_uids + + def cleanup(): + yield from bps.mv(sorensen850_manual, 0) + + return (yield from bpp.finalize_wrapper(inner(), cleanup)) + + +class RampControl(Device): + delta = Cpt(EpicsSignal, "RampDelta") + done = Cpt(EpicsSignal, "RampDone-Cmd") + take_xrd = Cpt(EpicsSignal, "TakeXRD-Cmd") + + +ramp_control = RampControl("OvenRampControl:", name="ramp_control") + +try: + from bluesky.plan_stubs import rd +except ImportError: + + def rd(obj, *, default_value=0): + """Reads a single-value non-triggered object + + This is a helper plan to get the scalar value out of a Device + (such as an EpicsMotor or a single EpicsSignal). + + For devices that have more than one read key the following rules are used: + + - if exactly 1 field is hinted that value is used + - if no fields are hinted and there is exactly 1 value in the + reading that value is used + - if more than one field is hinted an Exception is raised + - if no fields are hinted and there is more than one key in the reading an + Exception is raised + + The devices is not triggered and this plan does not create any Events + + Parameters + ---------- + obj : Device + The device to be read + + default_value : Any + The value to return when not running in a "live" RunEngine. + This come ups when :: + + ret = yield Msg('read', obj) + assert ret is None + + the plan is passed to `list` or some other iterator that + repeatedly sends `None` into the plan to advance the + generator. + + Returns + ------- + val : Any or None + The "single" value of the device + + """ + hints = getattr(obj, "hints", {}).get("fields", []) + if len(hints) > 1: + msg = ( + f"Your object {obj} ({obj.name}.{getattr(obj, 'dotted_name', '')}) " + f"has {len(hints)} items hinted ({hints}). We do not know how to " + "pick out a single value. Please adjust the hinting by setting the " + "kind of the components of this device or by rd ing one of it's components" + ) + raise ValueError(msg) + elif len(hints) == 0: + hint = None + if hasattr(obj, "read_attrs"): + if len(obj.read_attrs) != 1: + msg = ( + f"Your object {obj} ({obj.name}.{getattr(obj, 'dotted_name', '')}) " + f"and has {len(obj.read_attrs)} read attrs. We do not know how to " + "pick out a single value. Please adjust the hinting/read_attrs by " + "setting the kind of the components of this device or by rd ing one " + "of its components" + ) + + raise ValueError(msg) + # len(hints) == 1 + else: + (hint,) = hints + + ret = yield from read(obj) + + # list-ify mode + if ret is None: + return default_value + + if hint is not None: + return ret[hint]["value"] + + # handle the no hint 1 field case + try: + (data,) = ret.values() + except ValueError as er: + msg = ( + f"Your object {obj} ({obj.name}.{getattr(obj, 'dotted_name', '')}) " + f"and has {len(ret)} read values. We do not know how to pick out a " + "single value. Please adjust the hinting/read_attrs by setting the " + "kind of the components of this device or by rd ing one of its components" + ) + + raise ValueError(msg) from er + else: + return data["value"] + + +from dataclasses import dataclass + + +@dataclass(frozen=True) +class MotorPositions: + beamstop_x: float + beamstop_y: float + detector: float + + +near_positions = MotorPositions( + beamstop_x=-17.02152375, beamstop_y=0.717885, detector=3857.0 +) +far_positions = MotorPositions( + beamstop_x=-16.541525, beamstop_y=0.437885, detector=4973.0 +) + +from xpdacq.beamtime import close_shutter_stub + + +def power_ramp_controlled( + *, + min_power_pct: float = 0, + max_power_pct: float = 1, # max 100 + exposure: float, + n_per_step=1, + beamtime, + xrd_sample_name: str, + pdf_sample_name: str, + near_positions, + far_positions, + diagostic_T_file=None, + ramp_uid=None, +): + """ + Plan to take externally controlled temperature ramps. + + This plan consults two PVs to determine the current ramp rate (delta) and + if enough data has been collected and we should exit (more graceful than ctrl-C). + + At each hold point *n_per_point* sets of xrd and pdf will be taken. The + hold time per temperature will be approximately + + hold_time = (2*exposure + 70)*n_per_point + + Parameters + ---------- + min_power_pct : float + The minimum power (as a perentage) to give the heater + max_power_pct : float + The maxmimum power (as a percentage) to give the heater + exposure : float + Exposure time in seconds for each shot + n_per_step : int, optional + The number of exposures to take at each power step + beamtime : xpdacq.xpdacq.Beamtime + Used to get the sample meta-data + xrd_sample_name : str + Looked up in beamtime to get sample meta-data + pdf_sample_same : str + Looked up in beamtime to get sample meta-data + near_positions, far_positions : MotorPositions + The location of the beamstop and detector for "near" (PDF) and "far" (XRD) + measurements + diagsostic_T_file : Path + If you must. + """ + if ramp_uid is None: + ramp_uid = str(uuid.uuid4()) + xrd_sample = beamtime.samples[xrd_sample_name] + pdf_sample = beamtime.samples[pdf_sample_name] + + detector_motor = Det_1_Z + beam_stop = BStop1 + + baseline_detectors = [ + lakeshore336, + ring_current, + beam_stop, + detector_motor, + Grid_X, + Grid_Y, + Grid_Z, + sorensen850_manual, + ] + main_detectors = [pe1c, sorensen850_manual] + + motor_snap_shot_for_dan = { + k: globals()[k].read() for k in ["Grid_X", "Grid_Y", "Grid_Z"] + } + + def collect_cycle(ramp_phase, delta=0): + # PDF measurement + print("/n/nmoving to PDF distance/n") + yield from bps.mv( + beam_stop.x, + near_positions.beamstop_x, + beam_stop.y, + near_positions.beamstop_y, + detector_motor, + near_positions.detector, + ) + pdf_uid = yield from bpp.baseline_wrapper( + simple_ct( + main_detectors, + md={ + "ramp_uid": ramp_uid, + "ramp_phase": ramp_phase, + **pdf_sample, + **motor_snap_shot_for_dan, + "delta": delta, + }, + exposure=exposure, + ), + baseline_detectors, + ) + yield from close_shutter_stub() + # XRD measurement + print("/n/nmoving to XRD position/n") + take_xrd = yield from rd(ramp_control.take_xrd) + if take_xrd: + yield from bps.mv( + beam_stop.x, + far_positions.beamstop_x, + beam_stop.y, + far_positions.beamstop_y, + detector_motor, + far_positions.detector, + ) + xrd_uid = yield from bpp.baseline_wrapper( + simple_ct( + main_detectors, + md={ + "ramp_uid": ramp_uid, + "ramp_phase": ramp_phase, + **xrd_sample, + **motor_snap_shot_for_dan, + }, + exposure=exposure, + ), + baseline_detectors, + ) + yield from close_shutter_stub() + return [] + + uids = [] + + yield from bps.mv(ramp_control.done, 0) + + p = yield from rd(sorensen850_manual, default_value=min_power_pct) + print(f"starting at power {p}") + yield from bps.mv(sorensen850_manual, p) + + # for reasons TAC does not understand this is returning [None, None] + # suspect it is due to one of the xpdacq wrappers not forwarding returs? + data_uids = yield from collect_cycle("initial") + uids.extend(data_uids) + + done = yield from rd(ramp_control.done, default_value=True) + while not done: + delta = yield from rd(ramp_control.delta) + if delta > 0: + ramp_phase = "rising" + elif delta < 0: + ramp_phase = "falling" + else: + ramp_phase = "holding" + + p = np.clip(p + delta, min_power_pct, max_power_pct) + print(f"\n\n moving to {p} with {delta} step") + + yield from bps.mv(sorensen850_manual, p) + + for j in range(n_per_step): + print( + "\n\ntemperature is currently " + + str(lakeshore336.read()["lakeshore336_temp_C_T"]["value"]) + ) + print("on step " + str(j) + " of " + str(n_per_step)) + data_uids = yield from collect_cycle(ramp_phase, delta) + uids.extend(data_uids) + if diagostic_T_file is not None: + + write_calibration_data_to_csv_and_make_tom_sad( + list(db(ramp_uid=ramp_uid)), + fname=diagostic_T_file, + stream_name="baseline", + ) + done = yield from rd(ramp_control.done, default_value=True) + + uids.append((yield from collect_cycle("final"))) + return uids + + +# TODO reuse the code from above, but copy-paste for not to be sure +# we do not introduce bugs while refactoring. +def power_ramp_sequence( + *, + power_pct_seq, + exposure: float, + n_per_step=1, + beamtime, + xrd_sample_name: str, + pdf_sample_name: str, + near_positions, + far_positions, + diagostic_T_file=None, +): + """ + Plan to take externally controlled temperature ramps. + + This plan consults two PVs to determine the current ramp rate (delta) and + if enough data has been collected and we should exit (more graceful than ctrl-C). + + At each hold point *n_per_point* sets of xrd and pdf will be taken. The + hold time per temperature will be approximately + + hold_time = (2*exposure + 70)*n_per_point + + Parameters + ---------- + power_pct : Iterable[float] + Sequence of power precentages + exposure : float + Exposure time in seconds for each shot + n_per_step : int, optional + The number of exposures to take at each power step + beamtime : xpdacq.xpdacq.Beamtime + Used to get the sample meta-data + xrd_sample_name : str + Looked up in beamtime to get sample meta-data + pdf_sample_same : str + Looked up in beamtime to get sample meta-data + near_positions, far_positions : MotorPositions + The location of the beamstop and detector for "near" (PDF) and "far" (XRD) + measurements + diagsostic_T_file : Path + If you must. + """ + ramp_uid = str(uuid.uuid4()) + xrd_sample = beamtime.samples[xrd_sample_name] + pdf_sample = beamtime.samples[pdf_sample_name] + + detector_motor = Det_1_Z + beam_stop = BStop1 + + baseline_detectors = [ + lakeshore336, + ring_current, + beam_stop, + detector_motor, + Grid_X, + Grid_Y, + Grid_Z, + sorensen850_manual, + ] + main_detectors = [pe1c, sorensen850_manual] + + motor_snap_shot_for_dan = { + k: globals()[k].read() for k in ["Grid_X", "Grid_Y", "Grid_Z"] + } + + def collect_cycle(ramp_phase, delta=0): + # PDF measurement + print("\n\nmoving to PDF distance\n") + yield from bps.mv( + beam_stop.x, + near_positions.beamstop_x, + beam_stop.y, + near_positions.beamstop_y, + detector_motor, + near_positions.detector, + ) + pdf_uid = yield from bpp.baseline_wrapper( + simple_ct( + main_detectors, + md={ + "ramp_uid": ramp_uid, + "ramp_phase": ramp_phase, + **pdf_sample, + **motor_snap_shot_for_dan, + "delta": delta, + }, + exposure=exposure, + ), + baseline_detectors, + ) + yield from close_shutter_stub() + take_xrd = yield from rd(ramp_control.take_xrd) + if take_xrd: + # XRD measurement + print("\n\nmoving to XRD position\n") + yield from bps.mv( + beam_stop.x, + far_positions.beamstop_x, + beam_stop.y, + far_positions.beamstop_y, + detector_motor, + far_positions.detector, + ) + xrd_uid = yield from bpp.baseline_wrapper( + simple_ct( + main_detectors, + md={ + "ramp_uid": ramp_uid, + "ramp_phase": ramp_phase, + **xrd_sample, + **motor_snap_shot_for_dan, + }, + exposure=exposure, + ), + baseline_detectors, + ) + yield from close_shutter_stub() + return [] + + uids = [] + + first_power, power_seq_tail = power_pct_seq + + yield from bps.mv(sorensen850_manual, first_power) + + # for reasons TAC does not understand this is returning [None, None] + # suspect it is due to one of the xpdacq wrappers not forwarding returs? + data_uids = yield from collect_cycle("initial") + uids.extend(data_uids) + + last_power = first_power + for p in power_seq_tail: + delta = p - last_power + last_power = p + if delta > 0: + ramp_phase = "rising" + elif delta < 0: + ramp_phase = "falling" + else: + ramp_phase = "holding" + + print(f"\n\n!!Moving to power {p} with delta {delta}") + yield from bps.mv(sorensen850_manual, p) + + for j in range(n_per_step): + print( + "/n/ntemperature is currently " + + str(lakeshore336.read()["lakeshore336_temp_C_T"]["value"]) + ) + print("on step " + str(j) + " of " + str(n_per_step)) + data_uids = yield from collect_cycle(ramp_phase, delta) + uids.extend(data_uids) + if diagostic_T_file is not None: + + write_calibration_data_to_csv_and_make_tom_sad( + list(db(ramp_uid=ramp_uid)), + fname=diagostic_T_file, + stream_name="baseline", + ) + + uids.extend((yield from collect_cycle("final"))) + return uids + + +# TODO reuse the code from above, but copy-paste for not to be sure +# we do not introduce bugs while refactoring. +def power_ramp_T_threshold( + *, + start_power_pct, + max_temperature, + delta_power, + max_power_pct, + exposure: float, + n_per_step=1, + beamtime, + xrd_sample_name: str, + pdf_sample_name: str, + near_positions, + far_positions, + diagostic_T_file=None, +): + """ + Plan to take externally controlled temperature ramps. + + This plan consults two PVs to determine the current ramp rate (delta) and + if enough data has been collected and we should exit (more graceful than ctrl-C). + + At each hold point *n_per_point* sets of xrd and pdf will be taken. The + hold time per temperature will be approximately + + hold_time = (2*exposure + 70)*n_per_point + + Parameters + ---------- + exposure : float + Exposure time in seconds for each shot + n_per_step : int, optional + The number of exposures to take at each power step + beamtime : xpdacq.xpdacq.Beamtime + Used to get the sample meta-data + xrd_sample_name : str + Looked up in beamtime to get sample meta-data + pdf_sample_same : str + Looked up in beamtime to get sample meta-data + near_positions, far_positions : MotorPositions + The location of the beamstop and detector for "near" (PDF) and "far" (XRD) + measurements + diagsostic_T_file : Path + If you must. + """ + ramp_uid = str(uuid.uuid4()) + xrd_sample = beamtime.samples[xrd_sample_name] + pdf_sample = beamtime.samples[pdf_sample_name] + + detector_motor = Det_1_Z + beam_stop = BStop1 + + baseline_detectors = [ + lakeshore336, + ring_current, + beam_stop, + detector_motor, + Grid_X, + Grid_Y, + Grid_Z, + sorensen850_manual, + ] + main_detectors = [pe1c, sorensen850_manual] + + motor_snap_shot_for_dan = { + k: globals()[k].read() for k in ["Grid_X", "Grid_Y", "Grid_Z"] + } + + def collect_cycle(ramp_phase, delta=0): + # PDF measurement + print("\n\nmoving to PDF distance\n") + yield from bps.mv( + beam_stop.x, + near_positions.beamstop_x, + beam_stop.y, + near_positions.beamstop_y, + detector_motor, + near_positions.detector, + ) + pdf_uid = yield from bpp.baseline_wrapper( + simple_ct( + main_detectors, + md={ + "ramp_uid": ramp_uid, + "ramp_phase": ramp_phase, + **pdf_sample, + **motor_snap_shot_for_dan, + "delta": delta, + }, + exposure=exposure, + ), + baseline_detectors, + ) + yield from close_shutter_stub() + take_xrd = yield from rd(ramp_control.take_xrd) + if take_xrd: + # XRD measurement + print("\n\nmoving to XRD position\n") + yield from bps.mv( + beam_stop.x, + far_positions.beamstop_x, + beam_stop.y, + far_positions.beamstop_y, + detector_motor, + far_positions.detector, + ) + xrd_uid = yield from bpp.baseline_wrapper( + simple_ct( + main_detectors, + md={ + "ramp_uid": ramp_uid, + "ramp_phase": ramp_phase, + **xrd_sample, + **motor_snap_shot_for_dan, + }, + exposure=exposure, + ), + baseline_detectors, + ) + yield from close_shutter_stub() + return [] + + uids = [] + + p = start_power_pct + + yield from bps.mv(sorensen850_manual, p) + + # for reasons TAC does not understand this is returning [None, None] + # suspect it is due to one of the xpdacq wrappers not forwarding returs? + data_uids = yield from collect_cycle("initial") + uids.extend(data_uids) + + reversed = False + + delta = delta_power + while True: + p = np.clip(p + delta, 0, max_power_pct) + T = yield from rd(lakeshore336) + if T > max_temperature and not reversed: + delta = -delta + if delta > 0: + ramp_phase = "rising" + elif delta < 0: + ramp_phase = "falling" + else: + ramp_phase = "holding" + + print(f"\n\n!!Moving to power {p} with delta {delta}") + yield from bps.mv(sorensen850_manual, p) + + for j in range(n_per_step): + print( + "\n\ntemperature is currently " + + str(lakeshore336.read()["lakeshore336_temp_C_T"]["value"]) + ) + print("on step " + str(j) + " of " + str(n_per_step)) + data_uids = yield from collect_cycle(ramp_phase, delta) + uids.extend(data_uids) + if diagostic_T_file is not None: + + write_calibration_data_to_csv_and_make_tom_sad( + list(db(ramp_uid=ramp_uid)), + fname=diagostic_T_file, + stream_name="baseline", + ) + if p <= 0: + break + + uids.extend((yield from collect_cycle("final"))) + return uids + + +def bring_to_temperature(power_supply, thermo, *, out_path): + first_time = None + + def writer_call_back(name, doc): + nonlocal first_time + + if name != "event": + return + if first_time is None: + first_time = doc["time"] + with open(out_path, "a+") as fout: + data = [ + str(doc["data"][k]) + for k in ["sorensen850_manual", "lakeshore336_temp_C_T"] + ] + data_str = ",".join(data) + fout.write(f'{doc["time"] - first_time},{data_str}\n') + + condition_time = 5 * 60 + condition_steps = 15 + sub_condition_time = condition_time / condition_steps + + condition_temperature_step = 50 + + def condition_loop(): + print(f"entering {condition_time}s hold") + for i in range(condition_steps): + print(f" stage {i} / {condition_steps}") + yield from bps.trigger_and_read([power_supply, thermo]) + yield from bps.sleep(sub_condition_time) + yield from bps.trigger_and_read([power_supply, thermo]) + + @bpp.subs_decorator(writer_call_back) + @bpp.run_decorator() + def inner(): + yield from bps.trigger_and_read([power_supply, thermo]) + for p in np.arange(2.5, 30.0001, 0.1): + yield from bps.mv(power_supply, p) + yield from bps.checkpoint() + yield from bps.sleep(5) + yield from bps.trigger_and_read([power_supply, thermo]) + + yield from condition_loop() + + T = yield from rd(thermo) + t_target = T + condition_temperature_step + p_cur = yield from rd(power_supply) + while t_target < 1000: + + while T < t_target: + p_cur += 0.1 + yield from bps.mv(power_supply, p_cur) + yield from bps.checkpoint() + yield from bps.sleep(5) + yield from bps.trigger_and_read([power_supply, thermo]) + T = yield from rd(thermo) + + t_target += condition_temperature_step + + yield from condition_loop() + print(f"new_target {t_target}") + + ret = yield from inner() + return ret diff --git a/startup/94-load.py b/startup/94-load.py index cd03c96..a16c490 100644 --- a/startup/94-load.py +++ b/startup/94-load.py @@ -16,29 +16,35 @@ import os import yaml -from xpdacq.xpdacq_conf import (glbl_dict, configure_device, - _reload_glbl, _set_glbl, - _load_beamline_config) +from xpdacq.xpdacq_conf import ( + glbl_dict, + configure_device, + _reload_glbl, + _set_glbl, + _load_beamline_config, +) # configure experiment device being used in current version -if glbl_dict['is_simulation']: - from xpdacq.simulation import (xpd_pe1c, db, cs700, shctl1, - ring_current, fb) - pe1c = xpd_pe1c # alias +if glbl_dict["is_simulation"]: + from xpdacq.simulation import xpd_pe1c, db, cs700, shctl1, ring_current, fb -configure_device(area_det=pe1c, shutter=fs, - temp_controller=eurotherm, #changed from None to eurotherm on 3/22/19 - DPO - db=db, - filter_bank=fb, - ring_current=ring_current) + pe1c = xpd_pe1c # alias + +configure_device( + area_det=pe1c, + shutter=fs, + temp_controller=eurotherm, # changed from None to eurotherm on 3/22/19 - DPO + db=db, + filter_bank=fb, + ring_current=ring_current, +) # cache previous glbl state reload_glbl_dict = _reload_glbl() from xpdacq.glbl import glbl # reload beamtime -from xpdacq.beamtimeSetup import (start_xpdacq, _start_beamtime, - _end_beamtime) +from xpdacq.beamtimeSetup import start_xpdacq, _start_beamtime, _end_beamtime bt = start_xpdacq() if bt is not None: @@ -53,23 +59,23 @@ # instantiate xrun without beamtime, like bluesky setup xrun = CustomizedRunEngine(None) -xrun.md['beamline_id'] = glbl['beamline_id'] -xrun.md['group'] = glbl['group'] -xrun.md['facility'] = glbl['facility'] -with open(glbl['blconfig_path'], "r") as f: +xrun.md["beamline_id"] = glbl["beamline_id"] +xrun.md["group"] = glbl["group"] +xrun.md["facility"] = glbl["facility"] +with open(glbl["blconfig_path"], "r") as f: beamline_config = yaml.unsafe_load(f) -xrun.md['beamline_config'] = beamline_config +xrun.md["beamline_config"] = beamline_config # insert header to db, either simulated or real -xrun.subscribe(db.insert, 'all') +xrun.subscribe(db.insert, "all") if bt: xrun.beamtime = bt -HOME_DIR = glbl['home'] -BASE_DIR = glbl['base'] +HOME_DIR = glbl["home"] +BASE_DIR = glbl["base"] -print('INFO: Initializing the XPD data acquisition environment\n') +print("INFO: Initializing the XPD data acquisition environment\n") if os.path.isdir(HOME_DIR): os.chdir(HOME_DIR) else: @@ -77,12 +83,26 @@ # See https://github.com/silx-kit/pyFAI/issues/1399#issuecomment-694185304 import logging + logging.getLogger().addHandler(logging.NullHandler()) from xpdacq.calib import * # analysis functions, only at beamline -#from xpdan.data_reduction import * +# from xpdan.data_reduction import * + +print("OK, ready to go. To continue, follow the steps in the xpdAcq") +print("documentation at http://xpdacq.github.io/xpdacq\n") + -print('OK, ready to go. To continue, follow the steps in the xpdAcq') -print('documentation at http://xpdacq.github.io/xpdacq\n') +class MoreCustomizedRunEngine(CustomizedRunEngine): + def __call__(self, plan, *args, **kwargs): + super().__call__({}, plan, *args, **kwargs) + + +RE = MoreCustomizedRunEngine(None) +RE.md.update(xrun.md) +# insert header to db, either simulated or real +RE.subscribe(db.insert, "all") +RE.beamtime = bt +RE.clear_suspenders() diff --git a/startup/95-zmq.py b/startup/95-zmq.py index 6c080b6..b411196 100644 --- a/startup/95-zmq.py +++ b/startup/95-zmq.py @@ -2,3 +2,4 @@ pub = Publisher(glbl['inbound_proxy_address'], prefix=b'raw') xrun.subscribe(pub) +RE.subscribe(pub) diff --git a/startup/96-dan_functions.py b/startup/96-dan_functions.py index 44a3a60..e64286f 100644 --- a/startup/96-dan_functions.py +++ b/startup/96-dan_functions.py @@ -1,3 +1,4 @@ +import time import sys from slack import WebClient from slack.errors import SlackApiError @@ -10,6 +11,7 @@ import numpy as np + ############## try: slack_token = os.environ["SLACK_API_TOKEN"] @@ -31,12 +33,16 @@ def slack_message(my_message): ) # except SlackApiError as e: # assert e.response["something went wrong"] - except: + except Exception: print("slack message failed") def check_heartbeat( - fname="hbeat.txt", tlapse=300, send_warning=False, notify_user=False + fname="hbeat.txt", + tlapse=300, + send_warning=False, + notify_user=False, + user_ID="ULP5FCDDH", ): fin = open(fname, "r") tread = float(fin.read()) @@ -303,7 +309,7 @@ def make_me_a_dataframe(found_pos): read_xcel = pd.read_excel(my_excel_file, skiprows=1, usecols=([0, 1])) - print ('expecting length '+str(len(np.array(read_xcel.index)))) + print("expecting length " + str(len(np.array(read_xcel.index)))) df_sample_pos_info = pd.DataFrame(index=np.array(read_xcel.index)) df_sample_pos_info["name"] = read_xcel.iloc[:, 0] @@ -314,7 +320,6 @@ def make_me_a_dataframe(found_pos): len(read_xcel.index), dtype=int ) - return df_sample_pos_info @@ -549,6 +554,7 @@ def this_func(x, c, w, a, b): def get_total_counts(): from epics import caget + return float(caget("XF:28ID1-ES{Det:PE1}Stats2:Total_RBV")) diff --git a/startup/99-demo_plans.py b/startup/99-demo_plans.py new file mode 100644 index 0000000..77eb3ed --- /dev/null +++ b/startup/99-demo_plans.py @@ -0,0 +1,92 @@ +from dataclasses import dataclass +import bluesky.plan_stubs as bps +from xpdacq.xpdacq import translate_to_sample +import itertools + + +@dataclass(frozen=True) +class SamplePos: + x: float + y: float + + +@dataclass(frozen=True) +class DetectorConfiguration: + beamstop_x: float + beamstop_y: float + detector: float + + +SAMPLE_POSITONS = { + # 'a': SamplePos(0, 0), +} + +DETECTOR_POSITIONS = { + "near": DetectorConfiguration( + beamstop_x=-17.02152375, beamstop_y=0.717885, detector=3857.0 + ), + "far": DetectorConfiguration( + beamstop_x=-16.541525, beamstop_y=0.437885, detector=4973.0 + ), +} + + +def move_det(x: float = None, y: float = None, z: float = None): + """ + Move the detector to the given (x, y, z) + + """ + args = tuple( + itertools.chain( + (m, t) + for m, t in zip([Det_1_X, Det_1_Y, Det_1_Z], [x, y, z]) + if t is not None + ) + ) + yield from bps.mv(*args) + + +def move_sample(x: float = None, y: float = None, z: float = None): + """ + Move the detector to the given (x, y, z) + + """ + args = tuple( + itertools.chain( + (m, t) for m, t in zip([Grid_X, Grid_Y, Grid_Z], [x, y, z]) if t is not None + ) + ) + yield from bps.mv(*args) + + +def move_to_sample(name: str): + sample_x = Grid_X + sample_y = Grid_Y + target_pos = SAMPLE_POSITONS[name] + yield from bps.mv(sample_x, target_pos.x, sample_y, target_pos.y) + + +def move_to_det_config(name: str): + + detector_motor = Det_1_Z + beam_stop = BStop1 + + target_pos = DETECTOR_POSITIONS[name] + yield from bps.mv( + beam_stop.x, + target_pos.beamstop_x, + beam_stop.y, + target_pos.beamstop_y, + detector_motor, + target_pos.detector, + ) + + +def sample_aware_count(sample_num: int, exposure: float, *, md=None): + """ + A wrapper around count that tries to mimic xpdacq. + + """ + _md = translate_to_sample(bt, sample_num) + _md.update(md or {}) + yield from simple_ct([pe1c], exposure, md=_md) diff --git a/startup/existing_plans_and_devices.yaml b/startup/existing_plans_and_devices.yaml new file mode 100644 index 0000000..b980c82 --- /dev/null +++ b/startup/existing_plans_and_devices.yaml @@ -0,0 +1,6167 @@ +# This file is automatically generated. Edit at your own risk. +existing_devices: + BStop1: + classname: BeamStop + is_movable: false + module: + BStop2: + classname: BeamStop + is_movable: false + module: + Det_1_X: + classname: EpicsMotor + is_movable: true + module: ophyd.epics_motor + Det_1_Y: + classname: EpicsMotor + is_movable: true + module: ophyd.epics_motor + Det_1_Z: + classname: EpicsMotor + is_movable: true + module: ophyd.epics_motor + Det_2_X: + classname: EpicsMotor + is_movable: true + module: ophyd.epics_motor + Det_2_Y: + classname: EpicsMotor + is_movable: true + module: ophyd.epics_motor + Det_2_Z: + classname: EpicsMotor + is_movable: true + module: ophyd.epics_motor + ECS_An_tth: + classname: EpicsMotor + is_movable: true + module: ophyd.epics_motor + ECS_Sam_tth: + classname: EpicsMotor + is_movable: true + module: ophyd.epics_motor + ECS_laser_foil_filter: + classname: ECS + is_movable: false + module: + ECS_sample_environment: + classname: SampleEnvironment + is_movable: false + module: + ECS_tel_guide: + classname: EpicsMotor + is_movable: true + module: ophyd.epics_motor + Grid_X: + classname: EpicsMotor + is_movable: true + module: ophyd.epics_motor + Grid_Y: + classname: EpicsMotor + is_movable: true + module: ophyd.epics_motor + Grid_Z: + classname: EpicsMotor + is_movable: true + module: ophyd.epics_motor + Mirror_VFM: + classname: Mirror + is_movable: false + module: + OCM_table: + classname: OCMTable + is_movable: false + module: + Spinnergo_Ry: + classname: EpicsMotor + is_movable: true + module: ophyd.epics_motor + Spinnergo_X: + classname: EpicsMotor + is_movable: true + module: ophyd.epics_motor + Spinnergo_Y: + classname: EpicsMotor + is_movable: true + module: ophyd.epics_motor + Spinnergo_Z: + classname: EpicsMotor + is_movable: true + module: ophyd.epics_motor + Tomo_spinner: + classname: EpicsMotor + is_movable: true + module: ophyd.epics_motor + XPD_shutter: + classname: PDFFastShutter + is_movable: true + module: + analyzer_goniohead: + classname: Analyzer + is_movable: false + module: + bdm_slits: + classname: Slits + is_movable: false + module: + cryostat1: + classname: CryoStat1 + is_movable: true + module: + cryostat2: + classname: CryoStat2 + is_movable: true + module: + cryostream: + classname: CryoStream + is_movable: true + module: + fb: + classname: FilterBank + is_movable: false + module: + fb_two_button_shutters: + classname: FilterBankTwoButtonShutter + is_movable: false + module: + fs: + classname: PDFFastShutter + is_movable: true + module: + lakeshore336: + classname: Lakeshore336 + is_movable: false + module: + linkam_furnace: + classname: LinkamFurnace + is_movable: true + module: + magnet: + classname: Magnet + is_movable: true + module: + ocm_slits: + classname: Slits + is_movable: false + module: + optics_table_adc: + classname: OpticsTableADC + is_movable: false + module: + pe1: + classname: PerkinElmerStandard1 + is_movable: false + module: + pe1c: + classname: PerkinElmerContinuous1 + is_movable: false + module: + pilatus300: + classname: PilatusV33 + is_movable: false + module: + ramp_control: + classname: RampControl + is_movable: false + module: + rga: + classname: RGA + is_movable: false + module: + sbm: + classname: SideBounceMono + is_movable: false + module: + spinner_goniohead: + classname: SpinnerGoniohead + is_movable: false + module: + wb_slits: + classname: Slits + is_movable: false + module: +existing_plans: + Tlist: + description: Collect data over a list of user-specific temperatures + name: Tlist + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: 'list of ''readable'' objects. default to the temperature + + controller and area detector linked to xpdAcq.' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dets + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: total time of exposure in seconds + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: exposure + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: a list of temperatures where a scan will be run + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: T_list + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: + default_pickled: 80 03 63 78 70 64 61 63 71 2e 62 65 61 6d 74 69 6d 65 0a 73 + 68 75 74 74 65 72 5f 73 74 65 70 0a 71 00 2e + description: 'hook for customizing action at each temperature point. + + Tramp uses this for opening and closing the shutter at each + + temperature acquisition. + + + Default behavior: + + `` open shutter - collect data - close shutter `` + + + To make shutter always open during the temperature ramp, + + pass ``None`` to this argument. See ``Notes`` below for more + + detailed information.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + Tramp: + description: Collect data over a range of temperatures + name: Tramp + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: 'list of ''readable'' objects. default to the temperature + + controller and area detector linked to xpdAcq.' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dets + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: exposure time at each temperature step in seconds. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: exposure + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: starting point of temperature sequence. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: Tstart + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: stoping point of temperature sequence. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: Tstop + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: step size between Tstart and Tstop of this sequence. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: Tstep + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: + default_pickled: 80 03 63 78 70 64 61 63 71 2e 62 65 61 6d 74 69 6d 65 0a 73 + 68 75 74 74 65 72 5f 73 74 65 70 0a 71 00 2e + description: 'hook for customizing action at each temperature point. + + Tramp uses this for opening and closing the shutter at each + + temperature acquisition. + + + Default behavior: + + `` open shutter - collect data - close shutter `` + + + To make shutter always open during the temperature ramp, + + pass ``None`` to this argument. See ``Notes`` below for more + + detailed information.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + abs_set: + description: Set a value. Optionally, wait for it to complete before continuing. + name: abs_set + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: passed to obj.set() + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: identifier used by 'wait' + kind: + name: KEYWORD_ONLY + value: 3 + name: group + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: 'False' + default_pickled: 80 03 89 2e + description: 'If True, wait for completion before processing any more messages. + + False by default.' + kind: + name: KEYWORD_ONLY + value: 3 + name: wait + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: passed to obj.set() + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: 'msg : Msg' + acquisition_plan: + description: "This is testing a simple acquisition plan.\nHere we open shutter,\ + \ take an image, close shutter, take a dark then\n stop.\ndets : dets to\ + \ read from\nmotors: motors to take readings from\n (for later use)\nfs :\ + \ the fast shutter\nsample_name : the sample name" + name: acquisition_plan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dets + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: fs + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: sample_name + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: images_per_set + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + adaptive_scan: + description: Scan over one variable with adaptively tuned step size. + name: adaptive_scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: data field whose output is the focus of the adaptive tuning + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: target_field + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: starting position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: start + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: ending position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: stop + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: smallest step for fast-changing regions + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: min_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: largest step for slow-chaning regions + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: max_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: desired fractional change in detector signal between steps + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: target_delta + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: whether backward steps are allowed -- this is concern with some + motors + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: backstep + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '0.8' + default_pickled: 80 03 47 3f e9 99 99 99 99 99 9a 2e + description: threshold for going backward and rescanning a region, default is + 0.8 + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: threshold + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + bring_to_temperature: + description: null + name: bring_to_temperature + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: power_supply + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: thermo + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: out_path + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + broadcast_msg: + description: Generate many copies of a mesasge, applying it to a list of devices. + name: broadcast_msg + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: command + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: objs + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: 'msg : Msg' + caching_repeater: + description: Generate n chained copies of the messages in a plan. + name: caching_repeater + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: total number of repetitions; if None, infinite + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: n + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: plan + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: 'msg : Msg' + checkpoint: + description: If interrupted, rewind to this point. + name: checkpoint + parameters: [] + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('checkpoint')" + clear_checkpoint: + description: Designate that it is not safe to resume. If interrupted or paused, + abort. + name: clear_checkpoint + parameters: [] + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('clear_checkpoint')" + close_run: + description: Mark the end of the current 'run'. Emit a RunStop document. + name: close_run + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: exit_status + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: reason + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('close_run')\nexit_status : {None, 'success',\ + \ 'abort', 'fail'}\n The exit status to report in the Stop document\nreason\ + \ : str, optional\n Long-form description of why the run ended" + close_shutter_stub: + description: 'simple function to return a generator that yields messages to + + close the shutter' + name: close_shutter_stub + parameters: [] + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + collect: + description: Collect data cached by a fly-scanning device and emit documents. + name: collect + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Device with 'kickoff', 'complete', and 'collect' methods + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: 'False' + default_pickled: 80 03 89 2e + description: 'If False (default), emit Event documents in one bulk dump. If + True, + + emit events one at time.' + kind: + name: KEYWORD_ONLY + value: 3 + name: stream + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: 'True' + default_pickled: 80 03 88 2e + description: 'If True (default), return the collected Events. If False, return + None. + + Using ``stream=True`` and ``return_payload=False`` together avoids + + accumulating the documents in memory: they are emmitted as they are + + collected, and they are not accumulated.' + kind: + name: KEYWORD_ONLY + value: 3 + name: return_payload + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('collect', obj)" + complete: + description: Tell a flyer, 'stop collecting, whenver you are ready'. + name: complete + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Device with 'kickoff', 'complete', and 'collect' methods + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: identifier used by 'wait' + kind: + name: KEYWORD_ONLY + value: 3 + name: group + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: 'False' + default_pickled: 80 03 89 2e + description: 'If True, wait for completion before processing any more messages. + + False by default.' + kind: + name: KEYWORD_ONLY + value: 3 + name: wait + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: passed through to ``obj.complete()`` + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n a 'complete' Msg and maybe a 'wait' message" + configure: + description: Change Device configuration and emit an updated Event Descriptor + document. + name: configure + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: passed through to ``obj.configure()`` + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: passed through to ``obj.configure()`` + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n ``Msg('configure', obj, *args, **kwargs)``" + configure_area_det: + description: Configure an area detector in "continuous mode" + name: configure_area_det + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: det + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: exposure + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + count: + description: Take one or more readings from detectors. + name: count + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '1' + default_pickled: 80 03 4b 01 2e + description: 'number of readings to take; default is 1 + + + If None, capture data until canceled' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: num + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: Time delay in seconds between successive readings; default is 0. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: delay + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: "hook for customizing action of inner loop (messages per step)\n\ + Expected signature ::\n\n def f(detectors: Iterable[OphydObj]) -> Generator[Msg]:\n\ + \ ..." + kind: + name: KEYWORD_ONLY + value: 3 + name: per_shot + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + create: + description: Bundle future readings into a new Event document. + name: create + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: primary + default_pickled: 80 03 58 07 00 00 00 70 72 69 6d 61 72 79 71 00 2e + description: 'name given to event stream, used to convenient identification + + default is ''primary''' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: name + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('create', name=name)" + ct: + description: Take one reading from area detector with given exposure time + name: ct + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: 'list of ''readable'' objects. default to area detector + + linked to xpdAcq.' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dets + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: total time of exposrue in seconds + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: exposure + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + deferred_pause: + description: Pause at the next checkpoint. + name: deferred_pause + parameters: [] + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('pause', defer=True)" + drop: + description: Drop a bundle of readings without emitting a completed Event document. + name: drop + parameters: [] + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('drop')" + fly: + description: Perform a fly scan with one or more 'flyers'. + name: fly + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: objects that support the flyer interface + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: flyers + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n 'kickoff', 'wait', 'complete, 'wait', 'collect'\ + \ messages" + grid_scan: + description: Scan over a mesh; each motor is on an independent trajectory. + name: grid_scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: '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.' + kind: + name: KEYWORD_ONLY + value: 3 + name: snake_axes + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step). + + See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) + + for details.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + group_by_sample: + description: Group the sample and plan by sample. Return sample, a list of plans. + name: group_by_sample + parameters: + - annotation: + annotation_pickled: 80 03 63 62 75 69 6c 74 69 6e 73 0a 6c 69 73 74 0a 71 00 + 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: sample + - annotation: + annotation_pickled: 80 03 63 62 75 69 6c 74 69 6e 73 0a 6c 69 73 74 0a 71 00 + 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: plan + returns: + annotation: typing.Generator + annotation_pickled: 80 03 63 74 79 70 69 6e 67 0a 47 65 6e 65 72 61 74 6f 72 + 0a 71 00 2e + inner_product_scan: + description: null + name: inner_product_scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: num + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + input_plan: + description: Prompt the user for text input. + name: input_plan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 58 00 00 00 00 71 00 2e + description: prompt string, e.g., 'enter user name' or 'enter next position' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: prompt + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('input', prompt=prompt)" + install_suspender: + description: Install a suspender during a plan. + name: install_suspender + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: The suspender to install + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: suspender + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('install_suspender', None, suspender)" + kickoff: + description: Kickoff a fly-scanning device. + name: kickoff + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Device with 'kickoff', 'complete', and 'collect' methods + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: identifier used by 'wait' + kind: + name: KEYWORD_ONLY + value: 3 + name: group + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: 'False' + default_pickled: 80 03 89 2e + description: 'If True, wait for completion before processing any more messages. + + False by default.' + kind: + name: KEYWORD_ONLY + value: 3 + name: wait + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: passed through to ``obj.kickoff()`` + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('kickoff', obj)" + list_grid_scan: + description: Scan over a mesh; each motor is on an independent trajectory. + name: list_grid_scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: "patterned like (``motor1, position_list1,``\n ``motor2,\ + \ position_list2,``\n ``motor3, position_list3,``\n \ + \ ``...,``\n ``motorN, position_listN``)\n\nThe first\ + \ motor is the \"slowest\", the outer loop. ``position_list``'s\nare lists\ + \ of positions, all lists must have the same length. Motors\ncan be any 'settable'\ + \ object (motor, temp controller, etc.)." + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: 'False' + default_pickled: 80 03 89 2e + description: '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.' + kind: + name: KEYWORD_ONLY + value: 3 + name: snake_axes + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step). + + See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) + + for details.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + list_scan: + description: Scan over one or more variables in steps simultaneously (inner product). + name: list_scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: "For one dimension, ``motor, [point1, point2, ....]``.\nIn general:\n\ + \n.. code-block:: python\n\n motor1, [point1, point2, ...],\n motor2,\ + \ [point1, point2, ...],\n ...,\n motorN, [point1, point2, ...]\n\n\ + Motors can be any 'settable' object (motor, temp controller, etc.)" + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step) + + Expected signature: + + ``f(detectors, motor, step) -> plan (a generator)``' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + load_sample: + description: For robot. + name: load_sample + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: position + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: geometry + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + log_scan: + description: Scan over one variable in log-spaced steps. + name: log_scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: starting position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: start + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: ending position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: stop + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: number of steps + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: num + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step) + + Expected signature: ``f(detectors, motor, step)``' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + monitor: + description: Asynchronously monitor for new values and emit Event documents. + name: monitor + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: name of event stream; default is None + kind: + name: KEYWORD_ONLY + value: 3 + name: name + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: passed through to ``obj.subscribe()`` + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n ``Msg('monitor', obj, *args, **kwargs)``" + mov: + description: Move one or more devices to a setpoint. Wait for all to complete. + name: mv + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: device1, value1, device2, value2, ... + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: Used to mark these as a unit to be waited on. + kind: + name: KEYWORD_ONLY + value: 3 + name: group + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: passed to obj.set() + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: 'msg : Msg' + move_det: + description: null + name: move_det + parameters: + - annotation: + annotation_pickled: 80 03 63 62 75 69 6c 74 69 6e 73 0a 66 6c 6f 61 74 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x + - annotation: + annotation_pickled: 80 03 63 62 75 69 6c 74 69 6e 73 0a 66 6c 6f 61 74 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y + - annotation: + annotation_pickled: 80 03 63 62 75 69 6c 74 69 6e 73 0a 66 6c 6f 61 74 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: z + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + move_per_step: + description: Inner loop of an N-dimensional step scan without any readings + name: move_per_step + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: mapping motors to positions in this step + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: mapping motors to their last-set positions + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: pos_cache + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + movr: + description: Move one or more devices to a relative setpoint. Wait for all to + complete. + name: mvr + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: device1, value1, device2, value2, ... + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: Used to mark these as a unit to be waited on. + kind: + name: KEYWORD_ONLY + value: 3 + name: group + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: passed to obj.set() + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: 'msg : Msg' + mv: + description: Move one or more devices to a setpoint. Wait for all to complete. + name: mv + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: device1, value1, device2, value2, ... + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: Used to mark these as a unit to be waited on. + kind: + name: KEYWORD_ONLY + value: 3 + name: group + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: passed to obj.set() + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: 'msg : Msg' + mvr: + description: Move one or more devices to a relative setpoint. Wait for all to + complete. + name: mvr + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: device1, value1, device2, value2, ... + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: Used to mark these as a unit to be waited on. + kind: + name: KEYWORD_ONLY + value: 3 + name: group + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: passed to obj.set() + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: 'msg : Msg' + 'null': + description: Yield a no-op Message. (Primarily for debugging and testing.) + name: 'null' + parameters: [] + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('null')" + one_1d_step: + description: Inner loop of a 1D step scan + name: one_1d_step + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: devices to read + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: The motor to move + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Where to move the motor to + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: + default_pickled: 80 03 63 62 6c 75 65 73 6b 79 2e 70 6c 61 6e 5f 73 74 75 62 + 73 0a 74 72 69 67 67 65 72 5f 61 6e 64 5f 72 65 61 64 0a 71 00 2e + description: "function to do the actual acquisition ::\n\n def take_reading(dets,\ + \ name='primary'):\n yield from ...\n\nCallable[List[OphydObj], Optional[str]]\ + \ -> Generator[Msg], optional\n\nDefaults to `trigger_and_read`" + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: take_reading + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + one_nd_step: + description: Inner loop of an N-dimensional step scan + name: one_nd_step + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: devices to read + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: mapping motors to positions in this step + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: mapping motors to their last-set positions + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: pos_cache + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: + default_pickled: 80 03 63 62 6c 75 65 73 6b 79 2e 70 6c 61 6e 5f 73 74 75 62 + 73 0a 74 72 69 67 67 65 72 5f 61 6e 64 5f 72 65 61 64 0a 71 00 2e + description: "function to do the actual acquisition ::\n\n def take_reading(dets,\ + \ name='primary'):\n yield from ...\n\nCallable[List[OphydObj], Optional[str]]\ + \ -> Generator[Msg], optional\n\nDefaults to `trigger_and_read`" + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: take_reading + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + one_shot: + description: Inner loop of a count. + name: one_shot + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: devices to read + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: + default_pickled: 80 03 63 62 6c 75 65 73 6b 79 2e 70 6c 61 6e 5f 73 74 75 62 + 73 0a 74 72 69 67 67 65 72 5f 61 6e 64 5f 72 65 61 64 0a 71 00 2e + description: "function to do the actual acquisition ::\n\n def take_reading(dets,\ + \ name='primary'):\n yield from ...\n\nCallable[List[OphydObj], Optional[str]]\ + \ -> Generator[Msg], optional\n\nDefaults to `trigger_and_read`" + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: take_reading + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + open_run: + description: Mark the beginning of a new 'run'. Emit a RunStart document. + name: open_run + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n ``Msg('open_run', **md)``" + open_shutter_stub: + description: 'simple function to return a generator that yields messages to + + open the shutter' + name: open_shutter_stub + parameters: [] + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + outer_product_scan: + description: Scan over a mesh; each motor is on an independent trajectory. + name: grid_scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: '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.' + kind: + name: KEYWORD_ONLY + value: 3 + name: snake_axes + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step). + + See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) + + for details.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + pause: + description: Pause and wait for the user to resume. + name: pause + parameters: [] + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('pause')" + pchain: + description: Like `itertools.chain` but using `yield from` + name: pchain + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: generators (plans) + kind: + name: VAR_POSITIONAL + value: 2 + name: args + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n The messages from each plan in turn" + periodic_dark: + description: a plan wrapper that takes a plan and inserts `take_dark` + name: periodic_dark + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: plan + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + power_calibration_ramp: + description: null + name: power_calibration_ramp + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: power_levels + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: hold_time + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '10' + default_pickled: 80 03 4b 0a 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: n_per_hold + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: path + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + power_ramp: + description: null + name: power_ramp + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: start + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: stop + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: steps + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: exposure + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '0' + default_pickled: 80 03 4b 00 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: settle_time + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '1' + default_pickled: 80 03 4b 01 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: n_per_hold + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + power_ramp_T_threshold: + description: Plan to take externally controlled temperature ramps. + name: power_ramp_T_threshold + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: start_power_pct + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: max_temperature + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: delta_power + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: max_power_pct + - annotation: + annotation_pickled: 80 03 63 62 75 69 6c 74 69 6e 73 0a 66 6c 6f 61 74 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Exposure time in seconds for each shot + kind: + name: KEYWORD_ONLY + value: 3 + name: exposure + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '1' + default_pickled: 80 03 4b 01 2e + description: The number of exposures to take at each power step + kind: + name: KEYWORD_ONLY + value: 3 + name: n_per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Used to get the sample meta-data + kind: + name: KEYWORD_ONLY + value: 3 + name: beamtime + - annotation: + annotation_pickled: 80 03 63 62 75 69 6c 74 69 6e 73 0a 73 74 72 0a 71 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Looked up in beamtime to get sample meta-data + kind: + name: KEYWORD_ONLY + value: 3 + name: xrd_sample_name + - annotation: + annotation_pickled: 80 03 63 62 75 69 6c 74 69 6e 73 0a 73 74 72 0a 71 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: pdf_sample_name + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: 'The location of the beamstop and detector for "near" (PDF) and + "far" (XRD) + + measurements' + kind: + name: KEYWORD_ONLY + value: 3 + name: near_positions + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: 'The location of the beamstop and detector for "near" (PDF) and + "far" (XRD) + + measurements' + kind: + name: KEYWORD_ONLY + value: 3 + name: far_positions + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: diagostic_T_file + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + power_ramp_controlled: + description: Plan to take externally controlled temperature ramps. + name: power_ramp_controlled + parameters: + - annotation: + annotation_pickled: 80 03 63 62 75 69 6c 74 69 6e 73 0a 66 6c 6f 61 74 0a 71 + 00 2e + default: '0' + default_pickled: 80 03 4b 00 2e + description: The minimum power (as a perentage) to give the heater + kind: + name: KEYWORD_ONLY + value: 3 + name: min_power_pct + - annotation: + annotation_pickled: 80 03 63 62 75 69 6c 74 69 6e 73 0a 66 6c 6f 61 74 0a 71 + 00 2e + default: '1' + default_pickled: 80 03 4b 01 2e + description: The maxmimum power (as a percentage) to give the heater + kind: + name: KEYWORD_ONLY + value: 3 + name: max_power_pct + - annotation: + annotation_pickled: 80 03 63 62 75 69 6c 74 69 6e 73 0a 66 6c 6f 61 74 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Exposure time in seconds for each shot + kind: + name: KEYWORD_ONLY + value: 3 + name: exposure + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '1' + default_pickled: 80 03 4b 01 2e + description: The number of exposures to take at each power step + kind: + name: KEYWORD_ONLY + value: 3 + name: n_per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Used to get the sample meta-data + kind: + name: KEYWORD_ONLY + value: 3 + name: beamtime + - annotation: + annotation_pickled: 80 03 63 62 75 69 6c 74 69 6e 73 0a 73 74 72 0a 71 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Looked up in beamtime to get sample meta-data + kind: + name: KEYWORD_ONLY + value: 3 + name: xrd_sample_name + - annotation: + annotation_pickled: 80 03 63 62 75 69 6c 74 69 6e 73 0a 73 74 72 0a 71 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: pdf_sample_name + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: 'The location of the beamstop and detector for "near" (PDF) and + "far" (XRD) + + measurements' + kind: + name: KEYWORD_ONLY + value: 3 + name: near_positions + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: 'The location of the beamstop and detector for "near" (PDF) and + "far" (XRD) + + measurements' + kind: + name: KEYWORD_ONLY + value: 3 + name: far_positions + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: diagostic_T_file + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: ramp_uid + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + power_ramp_sequence: + description: Plan to take externally controlled temperature ramps. + name: power_ramp_sequence + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: power_pct_seq + - annotation: + annotation_pickled: 80 03 63 62 75 69 6c 74 69 6e 73 0a 66 6c 6f 61 74 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Exposure time in seconds for each shot + kind: + name: KEYWORD_ONLY + value: 3 + name: exposure + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '1' + default_pickled: 80 03 4b 01 2e + description: The number of exposures to take at each power step + kind: + name: KEYWORD_ONLY + value: 3 + name: n_per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Used to get the sample meta-data + kind: + name: KEYWORD_ONLY + value: 3 + name: beamtime + - annotation: + annotation_pickled: 80 03 63 62 75 69 6c 74 69 6e 73 0a 73 74 72 0a 71 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Looked up in beamtime to get sample meta-data + kind: + name: KEYWORD_ONLY + value: 3 + name: xrd_sample_name + - annotation: + annotation_pickled: 80 03 63 62 75 69 6c 74 69 6e 73 0a 73 74 72 0a 71 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: pdf_sample_name + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: 'The location of the beamstop and detector for "near" (PDF) and + "far" (XRD) + + measurements' + kind: + name: KEYWORD_ONLY + value: 3 + name: near_positions + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: 'The location of the beamstop and detector for "near" (PDF) and + "far" (XRD) + + measurements' + kind: + name: KEYWORD_ONLY + value: 3 + name: far_positions + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: diagostic_T_file + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + print_summary_wrapper: + description: Print summary of plan as it goes by + name: print_summary_wrapper + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Must yield `Msg` objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: plan + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: 'msg : `Msg`' + ramp_plan: + description: Take data while ramping one or more positioners. + name: ramp_plan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: 'plan to start the ramp. This will be run inside of a open/close + + run. + + + This plan must return a `ophyd.StatusBase` object.' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: go_plan + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: monitor_sig + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: 'generator which takes no input + + + This will be called for every data point. This should create + + one or more events.' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: inner_plan_func + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: 'True' + default_pickled: 80 03 88 2e + description: If True, add a pre data at beginning + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: take_pre_data + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'If not None, the maximum time the ramp can run. + + + In seconds' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: timeout + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'If not None, take data no faster than this. If None, take + + data as fast as possible + + + If running the inner plan takes longer than `period` than take + + data with no dead time. + + + In seconds.' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: period + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + rd: + description: Reads a single-value non-triggered object + name: rd + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: The device to be read + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '0' + default_pickled: 80 03 4b 00 2e + description: "The value to return when not running in a \"live\" RunEngine.\n\ + This come ups when ::\n\n ret = yield Msg('read', obj)\n assert ret is\ + \ None\n\nthe plan is passed to `list` or some other iterator that\nrepeatedly\ + \ sends `None` into the plan to advance the\ngenerator." + kind: + name: KEYWORD_ONLY + value: 3 + name: default_value + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "val : Any or None\n The \"single\" value of the device" + read: + description: Take a reading and add it to the current bundle of readings. + name: read + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('read', obj)" + rel_adaptive_scan: + description: Relative scan over one variable with adaptively tuned step size. + name: rel_adaptive_scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: data field whose output is the focus of the adaptive tuning + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: target_field + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: starting position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: start + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: ending position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: stop + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: smallest step for fast-changing regions + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: min_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: largest step for slow-chaning regions + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: max_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: desired fractional change in detector signal between steps + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: target_delta + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: whether backward steps are allowed -- this is concern with some + motors + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: backstep + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '0.8' + default_pickled: 80 03 47 3f e9 99 99 99 99 99 9a 2e + description: threshold for going backward and rescanning a region, default is + 0.8 + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: threshold + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + rel_grid_scan: + description: Scan over a mesh relative to current position. + name: rel_grid_scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: '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.' + kind: + name: KEYWORD_ONLY + value: 3 + name: snake_axes + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step). + + See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) + + for details.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + rel_list_grid_scan: + description: 'Scan over a mesh; each motor is on an independent trajectory. Each + point is + + relative to the current position.' + name: rel_list_grid_scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: "patterned like (``motor1, position_list1,``\n ``motor2,\ + \ position_list2,``\n ``motor3, position_list3,``\n \ + \ ``...,``\n ``motorN, position_listN``)\n\nThe first\ + \ motor is the \"slowest\", the outer loop. ``position_list``'s\nare lists\ + \ of positions, all lists must have the same length. Motors\ncan be any 'settable'\ + \ object (motor, temp controller, etc.)." + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: 'False' + default_pickled: 80 03 89 2e + description: '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.' + kind: + name: KEYWORD_ONLY + value: 3 + name: snake_axes + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step). + + See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) + + for details.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + rel_list_scan: + description: Scan over one variable in steps relative to current position. + name: rel_list_scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: "For one dimension, ``motor, [point1, point2, ....]``.\nIn general:\n\ + \n.. code-block:: python\n\n motor1, [point1, point2, ...],\n motor2,\ + \ [point1, point2, ...],\n ...,\n motorN, [point1, point2, ...]\n\n\ + Motors can be any 'settable' object (motor, temp controller, etc.)\npoint1,\ + \ point2 etc are relative to the current location." + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step) + + Expected signature: ``f(detectors, motor, step)``' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + rel_log_scan: + description: Scan over one variable in log-spaced steps relative to current position. + name: rel_log_scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: starting position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: start + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: ending position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: stop + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: number of steps + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: num + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step) + + Expected signature: ``f(detectors, motor, step)``' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + rel_scan: + description: Scan over one multi-motor trajectory relative to current position. + name: rel_scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: "For one dimension, ``motor, start, stop``.\nIn general:\n\n..\ + \ code-block:: python\n\n motor1, start1, stop1,\n motor2, start2, start2,\n\ + \ ...,\n motorN, startN, stopN,\n\nMotors can be any 'settable' object\ + \ (motor, temp controller, etc.)" + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: number of points + kind: + name: KEYWORD_ONLY + value: 3 + name: num + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step). + + See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) + + for details.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + rel_set: + description: Set a value relative to current value. Optionally, wait before continuing. + name: rel_set + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: passed to obj.set() + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: identifier used by 'wait'; None by default + kind: + name: KEYWORD_ONLY + value: 3 + name: group + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: 'False' + default_pickled: 80 03 89 2e + description: 'If True, wait for completion before processing any more messages. + + False by default.' + kind: + name: KEYWORD_ONLY + value: 3 + name: wait + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: passed to obj.set() + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: 'msg : Msg' + rel_spiral: + description: Relative spiral scan + name: rel_spiral + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: x width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_range + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: y width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_range + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Delta radius along the minor axis of the ellipse. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dr + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Number of theta steps + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: nth + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'Delta radius along the major axis of the ellipse. If None, it + + defaults to dr.' + kind: + name: KEYWORD_ONLY + value: 3 + name: dr_y + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '0.0' + default_pickled: 80 03 47 00 00 00 00 00 00 00 00 2e + description: Tilt angle in radians, default 0.0 + kind: + name: KEYWORD_ONLY + value: 3 + name: tilt + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step). + + See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) + + for details.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + rel_spiral_fermat: + description: Relative fermat spiral scan + name: rel_spiral_fermat + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: x width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_range + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: y width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_range + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: delta radius + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dr + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: radius gets divided by this + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: factor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'Delta radius along the major axis of the ellipse, if not specifed + + defaults to dr' + kind: + name: KEYWORD_ONLY + value: 3 + name: dr_y + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '0.0' + default_pickled: 80 03 47 00 00 00 00 00 00 00 00 2e + description: Tilt angle in radians, default 0.0 + kind: + name: KEYWORD_ONLY + value: 3 + name: tilt + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step). + + See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) + + for details.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + rel_spiral_square: + description: Relative square spiral scan, centered around current (x, y) position. + name: rel_spiral_square + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: x width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_range + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: y width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_range + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: number of x axis points + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_num + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Number of y axis points. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_num + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for cutomizing action of inner loop (messages per step). + + See docstring of :func:`bluesky.plans.one_nd_step` (the default) for + + details.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + relative_adaptive_scan: + description: Relative scan over one variable with adaptively tuned step size. + name: rel_adaptive_scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: data field whose output is the focus of the adaptive tuning + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: target_field + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: starting position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: start + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: ending position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: stop + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: smallest step for fast-changing regions + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: min_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: largest step for slow-chaning regions + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: max_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: desired fractional change in detector signal between steps + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: target_delta + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: whether backward steps are allowed -- this is concern with some + motors + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: backstep + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '0.8' + default_pickled: 80 03 47 3f e9 99 99 99 99 99 9a 2e + description: threshold for going backward and rescanning a region, default is + 0.8 + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: threshold + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + relative_inner_product_scan: + description: null + name: relative_inner_product_scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: num + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + relative_list_scan: + description: Scan over one variable in steps relative to current position. + name: rel_list_scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: "For one dimension, ``motor, [point1, point2, ....]``.\nIn general:\n\ + \n.. code-block:: python\n\n motor1, [point1, point2, ...],\n motor2,\ + \ [point1, point2, ...],\n ...,\n motorN, [point1, point2, ...]\n\n\ + Motors can be any 'settable' object (motor, temp controller, etc.)\npoint1,\ + \ point2 etc are relative to the current location." + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step) + + Expected signature: ``f(detectors, motor, step)``' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + relative_log_scan: + description: Scan over one variable in log-spaced steps relative to current position. + name: rel_log_scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: starting position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: start + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: ending position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: stop + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: number of steps + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: num + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step) + + Expected signature: ``f(detectors, motor, step)``' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + relative_outer_product_scan: + description: Scan over a mesh relative to current position. + name: rel_grid_scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: '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.' + kind: + name: KEYWORD_ONLY + value: 3 + name: snake_axes + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step). + + See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) + + for details.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + relative_scan: + description: Scan over one multi-motor trajectory relative to current position. + name: rel_scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: "For one dimension, ``motor, start, stop``.\nIn general:\n\n..\ + \ code-block:: python\n\n motor1, start1, stop1,\n motor2, start2, start2,\n\ + \ ...,\n motorN, startN, stopN,\n\nMotors can be any 'settable' object\ + \ (motor, temp controller, etc.)" + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: number of points + kind: + name: KEYWORD_ONLY + value: 3 + name: num + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step). + + See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) + + for details.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + relative_spiral: + description: Relative spiral scan + name: rel_spiral + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: x width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_range + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: y width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_range + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Delta radius along the minor axis of the ellipse. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dr + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Number of theta steps + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: nth + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'Delta radius along the major axis of the ellipse. If None, it + + defaults to dr.' + kind: + name: KEYWORD_ONLY + value: 3 + name: dr_y + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '0.0' + default_pickled: 80 03 47 00 00 00 00 00 00 00 00 2e + description: Tilt angle in radians, default 0.0 + kind: + name: KEYWORD_ONLY + value: 3 + name: tilt + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step). + + See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) + + for details.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + relative_spiral_fermat: + description: Relative fermat spiral scan + name: rel_spiral_fermat + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: x width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_range + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: y width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_range + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: delta radius + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dr + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: radius gets divided by this + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: factor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'Delta radius along the major axis of the ellipse, if not specifed + + defaults to dr' + kind: + name: KEYWORD_ONLY + value: 3 + name: dr_y + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '0.0' + default_pickled: 80 03 47 00 00 00 00 00 00 00 00 2e + description: Tilt angle in radians, default 0.0 + kind: + name: KEYWORD_ONLY + value: 3 + name: tilt + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step). + + See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) + + for details.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + remove_suspender: + description: Remove a suspender during a plan. + name: remove_suspender + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: The suspender to remove + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: suspender + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('remove_suspender', None, suspender)" + repeat: + description: Repeat a plan num times with delay and checkpoint between each repeat. + name: repeat + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Callable that returns an iterable of Msg objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: plan + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '1' + default_pickled: 80 03 4b 01 2e + description: 'number of readings to take; default is 1 + + + If None, capture data until canceled' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: num + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: time delay between successive readings; default is 0 + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: delay + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + repeater: + description: Generate n chained copies of the messages from gen_func + name: repeater + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: total number of repetitions; if None, infinite + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: n + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: returns generator instance + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: gen_func + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: 'msg : Msg' + robot_wrapper: + description: "Wrap a plan in load/unload messages.\nParameters\n----------\nplan\ + \ : a bluesky plan\nsample : dict\n must contain 'position'; optionally also\ + \ 'geometry'\nExample\n-------\n>>> plan = count([pe1c])\n>>> new_plan = robot_wrapper(plan,\ + \ {'position': 1})" + name: robot_wrapper + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: plan + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: sample + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + sample_aware_count: + description: A wrapper around count that tries to mimic xpdacq. + name: sample_aware_count + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dets + - annotation: + annotation_pickled: 80 03 63 62 75 69 6c 74 69 6e 73 0a 69 6e 74 0a 71 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: sample_num + - annotation: + annotation_pickled: 80 03 63 62 75 69 6c 74 69 6e 73 0a 66 6c 6f 61 74 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: exposure + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + save: + description: Close a bundle of readings and emit a completed Event document. + name: save + parameters: [] + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('save')" + scan: + description: Scan over one multi-motor trajectory. + name: scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: "For one dimension, ``motor, start, stop``.\nIn general:\n\n..\ + \ code-block:: python\n\n motor1, start1, stop1,\n motor2, start2, start2,\n\ + \ ...,\n motorN, startN, stopN\n\nMotors can be any 'settable' object\ + \ (motor, temp controller, etc.)" + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: number of points + kind: + name: KEYWORD_ONLY + value: 3 + name: num + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step). + + See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) + + for details.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + scan_nd: + description: Scan over an arbitrary N-dimensional trajectory. + name: scan_nd + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: cycler.Cycler object mapping movable interfaces to positions + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: cycler + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step). + + See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) + + for details.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + shutter_step: + description: 'customized step to ensure shutter is open before + + reading at each motor point and close shutter after reading' + name: shutter_step + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: step + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + simple_ct: + description: A minimal wrapper around count that adjusts exposure time. + name: simple_ct + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dets + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: exposure + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + single_gen: + description: Turn a single message into a plan + name: single_gen + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: a single message + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: msg + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n the input message" + sleep: + description: Tell the RunEngine to sleep, while asynchronously doing other processing. + name: sleep + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: seconds + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: time + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('sleep', None, time)" + spiral: + description: Spiral scan, centered around (x_start, y_start) + name: spiral + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: x center + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_start + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: y center + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_start + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: x width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_range + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: y width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_range + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Delta radius along the minor axis of the ellipse. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dr + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Number of theta steps + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: nth + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'Delta radius along the major axis of the ellipse. If None, defaults + to + + dr.' + kind: + name: KEYWORD_ONLY + value: 3 + name: dr_y + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '0.0' + default_pickled: 80 03 47 00 00 00 00 00 00 00 00 2e + description: Tilt angle in radians, default 0.0 + kind: + name: KEYWORD_ONLY + value: 3 + name: tilt + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step). + + See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) + + for details.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + spiral_fermat: + description: Absolute fermat spiral scan, centered around (x_start, y_start) + name: spiral_fermat + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: x center + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_start + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: y center + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_start + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: x width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_range + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: y width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_range + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: delta radius + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dr + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: radius gets divided by this + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: factor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'Delta radius along the major axis of the ellipse, if not specifed + + defaults to dr.' + kind: + name: KEYWORD_ONLY + value: 3 + name: dr_y + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '0.0' + default_pickled: 80 03 47 00 00 00 00 00 00 00 00 2e + description: Tilt angle in radians, default 0.0 + kind: + name: KEYWORD_ONLY + value: 3 + name: tilt + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for customizing action of inner loop (messages per step). + + See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) + + for details.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + spiral_square: + description: Absolute square spiral scan, centered around (x_center, y_center) + name: spiral_square + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: x center + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_center + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: y center + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_center + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: x width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_range + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: y width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_range + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: number of x axis points + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_num + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: Number of y axis points. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_num + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for cutomizing action of inner loop (messages per step). + + See docstring of :func:`bluesky.plans.one_nd_step` (the default) for + + details.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + stage: + description: '''Stage'' a device (i.e., prepare it for use, ''arm'' it).' + name: stage + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('stage', obj)" + stop: + description: Stop a device. + name: stop + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: 'msg : Msg' + subscribe: + description: Subscribe the stream of emitted documents. + name: subscribe + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: name + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: 'Expected signature: ``f(name, doc)`` where ``name`` is one of + the + + strings above (''all, ''start'', ...) and ``doc`` is a dict' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: func + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('subscribe', None, func, name)" + take_dark: + description: a plan for taking a single dark frame + name: take_dark + parameters: [] + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + temperature_distance_plan: + description: "This is testing a simple acquisition plan.\n Here we open\ + \ shutter, take an image, close shutter, take a dark then\n stop." + name: temperature_distance_plan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dets + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: fs + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: cryostream + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: sample_name + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: distances + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: temperatures + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: images_per_set + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + trigger: + description: Trigger and acquisition. Optionally, wait for it to complete. + name: trigger + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: identifier used by 'wait'; None by default + kind: + name: KEYWORD_ONLY + value: 3 + name: group + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: 'False' + default_pickled: 80 03 89 2e + description: 'If True, wait for completion before processing any more messages. + + False by default.' + kind: + name: KEYWORD_ONLY + value: 3 + name: wait + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: 'msg : Msg' + trigger_and_read: + description: Trigger and read a list of detectors and bundle readings into one + Event. + name: trigger_and_read + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: devices to trigger (if they have a trigger method) and then read + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: devices + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: primary + default_pickled: 80 03 58 07 00 00 00 70 72 69 6d 61 72 79 71 00 2e + description: 'event stream name, a convenient human-friendly identifier; default + + name is ''primary''' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: name + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n messages to 'trigger', 'wait' and 'read'" + tseries: + description: time series scan with area detector. + name: tseries + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: 'list of ''readable'' objects. default to area detector + + linked to xpdAcq.' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dets + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: exposure time at each reading from area detector in seconds + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: exposure + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: delay between two consecutive readings from area detector in seconds + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: delay + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: total number of readings + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: num + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: 'True' + default_pickled: 80 03 88 2e + description: 'Option on whether delegates shutter control to ``xpdAcq``. If + True, + + following behavior will take place: + + + `` open shutter - collect data - close shutter `` + + + To make shutter stay open during ``tseries`` scan, + + pass ``False`` to this argument. See ``Notes`` below for more + + detailed information.' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: auto_shutter + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + tune_centroid: + description: 'plan: tune a motor to the centroid of signal(motor)' + name: tune_centroid + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: detector field whose output is to maximize + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: signal + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: start of range + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: start + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: 'end of range, note: start < stop' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: stop + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: smallest step size to use. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: min_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '10' + default_pickled: 80 03 4b 0a 2e + description: number of points with each traversal, default = 10 + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: num + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '3.0' + default_pickled: 80 03 47 40 08 00 00 00 00 00 00 2e + description: 'used in calculating new range after each pass + + + note: step_factor > 1.0, default = 3' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: step_factor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: 'False' + default_pickled: 80 03 89 2e + description: if False (default), always scan from start to stop + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: snake + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + tweak: + description: Move and motor and read a detector with an interactive prompt. + name: tweak + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detector + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: data field whose output is the focus of the adaptive tuning + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: target_field + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: initial suggestion for step size + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + two_distance_plan: + description: "This is testing a simple acquisition plan.\n Here we open\ + \ shutter, take an image, close shutter, take a dark then\n stop.\n\ + \ dets : dets to read from\n motor: the motor to move\n \ + \ (for later use)\n fs : the fast shutter\n sample_name :\ + \ the sample name\n\tdistances : list\n\t a list of distances desired" + name: two_distance_plan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dets + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: fs + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: cryostream + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: sample_name + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: distances + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: images_per_set + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + unload_sample: + description: For robot. + name: unload_sample + parameters: [] + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + unmonitor: + description: Stop monitoring. + name: unmonitor + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('unmonitor', obj)" + unstage: + description: '''Unstage'' a device (i.e., put it in standby, ''disarm'' it).' + name: unstage + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('unstage', obj)" + unsubscribe: + description: Remove a subscription. + name: unsubscribe + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: token returned by processing a 'subscribe' message + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: token + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('unsubscribe', token=token)" + wait: + description: Wait for all statuses in a group to report being finished. + name: wait + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: idenified given to `abs_set`, `rel_set`, `trigger`; None by default + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: group + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n Msg('wait', None, group=group)" + wait_for: + description: 'Low-level: wait for a list of ``asyncio.Future`` objects to set + (complete).' + name: wait_for + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: collection of asyncio.Future objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: futures + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: passed through to ``asyncio.wait()`` + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + description: "msg : Msg\n ``Msg('wait_for', None, futures, **kwargs)``" + x2x_scan: + description: Relatively scan over two motors in a 2:1 ratio + name: x2x_scan + parameters: + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: The second motor will move half as much as the first + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor1 + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: The second motor will move half as much as the first + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor2 + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: 'The relative limits of the first motor. The second motor + + will move between ``start / 2`` and ``stop / 2``' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: start + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + description: 'The relative limits of the first motor. The second motor + + will move between ``start / 2`` and ``stop / 2``' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: stop + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: '' + default_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 00 + 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: num + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: 'hook for cutomizing action of inner loop (messages per step). + + See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) + + for details.' + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + default: None + default_pickled: 80 03 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e diff --git a/startup/user_group_permissions.yaml b/startup/user_group_permissions.yaml new file mode 100644 index 0000000..b951498 --- /dev/null +++ b/startup/user_group_permissions.yaml @@ -0,0 +1,37 @@ +user_groups: + root: # The group includes all available plan and devices + allowed_plans: + - "^move_to_sample$" + - "^move_to_det_config$" + - "^sample_aware_count$" + - "^move_det$" + - "^move_sample$" + + forbidden_plans: + - "$_" # All plans with names starting with '_' + allowed_devices: + - null # Allow all + forbidden_devices: + - "$_" # All devices with names starting with '_' + admin: # The group includes beamline staff, includes all or most of the plans and devices + allowed_plans: + - ".*" # A different way to allow all + forbidden_plans: + - null # Nothing is forbidden + allowed_devices: + - ".*" # A different way to allow all + forbidden_devices: + - null # Nothing is forbidden + test_user: # Users with limited access capabilities + allowed_plans: + - "^count$" # Use regular expression patterns + - "scan$" + forbidden_plans: + - "^adaptive_scan$" # Use regular expression patterns + - "^inner_product" + allowed_devices: + - "^det" # Use regular expression patterns + - "^motor" + forbidden_devices: + - "^det[3-5]$" # Use regular expression patterns + - "^motor\\d+$"