Source code for apstools.plans.doc_run

"""
Documentation of batch runs
+++++++++++++++++++++++++++++++++++++++

.. autosummary::

   ~addDeviceDataAsStream
   ~documentation_run
"""

from bluesky import plan_stubs as bps
from ophyd import Signal

from ..utils import ipython_shell_namespace


[docs]def addDeviceDataAsStream(devices, label): """ add an ophyd Device as an additional document stream .. index:: Bluesky Plan; addDeviceDataAsStream Use this within a custom plan, such as this example:: from apstools.plans import addDeviceStream ... yield from bps.open_run() # ... yield from addDeviceDataAsStream(prescanDeviceList, "metadata_prescan") # ... yield from custom_scan_procedure() # ... yield from addDeviceDataAsStream(postscanDeviceList, "metadata_postscan") # ... yield from bps.close_run() """ yield from bps.create(name=label) if not isinstance(devices, list): # just in case... devices = [devices] for d in devices: yield from bps.read(d) yield from bps.save()
[docs]def documentation_run(text, stream=None, bec=None, md=None): """ Save text as a bluesky run. PARAMETERS text *str* : Text to be written. stream *str* : document stream, default: "primary" bec *object* : Instance of `bluesky.BestEffortCallback`, default: get from IPython shell md *dict* (optional): metadata dictionary """ bec = bec or ipython_shell_namespace().get("bec") stream = stream or "primary" text_signal = Signal(value=text, name="text") _md = dict(purpose="save text as bluesky run", plan_name="documentation_run",) _md.update(md or {}) if bec is not None: bec.disable_plots() bec.disable_table() uid = yield from bps.open_run(md=_md) yield from addDeviceDataAsStream(text_signal, stream) yield from bps.close_run() if bec is not None: bec.enable_table() bec.enable_plots() return uid
# ----------------------------------------------------------------------------- # :author: Pete R. Jemian # :email: jemian@anl.gov # :copyright: (c) 2017-2022, UChicago Argonne, LLC # # Distributed under the terms of the Creative Commons Attribution 4.0 International Public License. # # The full license is in the file LICENSE.txt, distributed with this software. # -----------------------------------------------------------------------------