From 12d452da8a8fd8634a7fd65d32940ca87a5dfdda Mon Sep 17 00:00:00 2001 From: Garrett Bischof Date: Fri, 8 Jan 2021 13:29:21 -0500 Subject: [PATCH 01/70] improve logging code --- startup/00-base.py | 8 -------- startup/94-load.py | 8 +++----- 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/startup/00-base.py b/startup/00-base.py index a6ab453..52bad2f 100644 --- a/startup/00-base.py +++ b/startup/00-base.py @@ -76,14 +76,6 @@ def _load(file): # RE.msg_hook = ts_msg_hook -########## New logging 8/24/2020 - -import logging -#logging.getLogger('ophyd').handlers[0].setLevel('WARNING') -logger = logging.getLogger('ophyd') -logger.setLevel('WARNING') - -########### RE.md['facility'] = 'NSLS-II' RE.md['group'] = 'PDF' diff --git a/startup/94-load.py b/startup/94-load.py index 48cd0c3..0c1f0c0 100644 --- a/startup/94-load.py +++ b/startup/94-load.py @@ -72,13 +72,11 @@ else: os.chdir(BASE_DIR) -from xpdacq.calib import * - -# We are adding this here because the previous -# line overwrites our logger config. This undoes the logger changes. +# See https://github.com/silx-kit/pyFAI/issues/1399#issuecomment-694185304 import logging -logging.getLogger().handlers.clear() +logging.getLogger().addHandler(logging.NullHandler()) +from xpdacq.calib import * # analysis functions, only at beamline #from xpdan.data_reduction import * From daebac398f6d05694edec76c702daaf510251e8b Mon Sep 17 00:00:00 2001 From: Abigail Giles Date: Tue, 2 Mar 2021 11:22:03 -0500 Subject: [PATCH 02/70] Update ci to test latest environment --- azure-pipelines.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index d04fcca..e8faeec 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -3,10 +3,10 @@ resources: - repository: templates type: github name: NSLS-II/profile-collection-ci - # ref: refs/heads/ # for future testings on a branch of NSLS-II/profile-collection-ci + ref: refs/heads/main endpoint: github jobs: -- template: azure-linux.yml@templates # Template reference - parameters: - beamline_acronym: PDF + - template: collection-2021-1.0.yml@templates + parameters: + beamline_acronym: PDF From 9bd6c19ec996907cdb278d38ba88ca1fb9a98988 Mon Sep 17 00:00:00 2001 From: Abigail Giles Date: Tue, 2 Mar 2021 11:26:34 -0500 Subject: [PATCH 03/70] Update beamline specific steps --- .ci/bl-specific.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/bl-specific.sh b/.ci/bl-specific.sh index cf87896..79a1e1f 100644 --- a/.ci/bl-specific.sh +++ b/.ci/bl-specific.sh @@ -2,4 +2,4 @@ # cp -v <...> ~/.ipython/profile_${TEST_PROFILE}/ -conda install -y -c ${CONDA_CHANNEL_NAME} 28-id-1-pdf-collection +conda install -y -c ${CONDA_CHANNEL_NAME} xpdacq From 4e42daa23bdd5d58a7164cb5141229bb18da33ca Mon Sep 17 00:00:00 2001 From: Abigail Giles Date: Tue, 2 Mar 2021 11:35:45 -0500 Subject: [PATCH 04/70] Add timeout fix for CI --- startup/00-base.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/startup/00-base.py b/startup/00-base.py index 52bad2f..20ae94b 100644 --- a/startup/00-base.py +++ b/startup/00-base.py @@ -1,3 +1,47 @@ +try: + ############################################################################### + # TODO: remove this block once https://github.com/bluesky/ophyd/pull/959 is + # merged/released. + from datetime import datetime + from ophyd.signal import EpicsSignalBase, EpicsSignal, DEFAULT_CONNECTION_TIMEOUT + + def print_now(): + return datetime.strftime(datetime.now(), '%Y-%m-%d %H:%M:%S.%f') + + def wait_for_connection_base(self, timeout=DEFAULT_CONNECTION_TIMEOUT): + '''Wait for the underlying signals to initialize or connect''' + if timeout is DEFAULT_CONNECTION_TIMEOUT: + timeout = self.connection_timeout + # print(f'{print_now()}: waiting for {self.name} to connect within {timeout:.4f} s...') + start = time.time() + try: + self._ensure_connected(self._read_pv, timeout=timeout) + # print(f'{print_now()}: waited for {self.name} to connect for {time.time() - start:.4f} s.') + except TimeoutError: + if self._destroyed: + raise DestroyedError('Signal has been destroyed') + raise + + def wait_for_connection(self, timeout=DEFAULT_CONNECTION_TIMEOUT): + '''Wait for the underlying signals to initialize or connect''' + if timeout is DEFAULT_CONNECTION_TIMEOUT: + timeout = self.connection_timeout + # print(f'{print_now()}: waiting for {self.name} to connect within {timeout:.4f} s...') + start = time.time() + self._ensure_connected(self._read_pv, self._write_pv, timeout=timeout) + # print(f'{print_now()}: waited for {self.name} to connect for {time.time() - start:.4f} s.') + + EpicsSignalBase.wait_for_connection = wait_for_connection_base + EpicsSignal.wait_for_connection = wait_for_connection + ############################################################################### + + from ophyd.signal import EpicsSignalBase + # EpicsSignalBase.set_default_timeout(timeout=10, connection_timeout=10) # old style + EpicsSignalBase.set_defaults(timeout=10, connection_timeout=10) # new style + +except ImportError: + pass + # Make ophyd listen to pyepics. import logging import nslsii From 62a2e37a0204dcaf7f3094bda8254bfc10387f97 Mon Sep 17 00:00:00 2001 From: Abigail Giles Date: Tue, 9 Mar 2021 10:39:25 -0500 Subject: [PATCH 05/70] Added config file for CI --- .ci/bl-specific.sh | 3 +++ .ci/pdf.yml | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 .ci/pdf.yml diff --git a/.ci/bl-specific.sh b/.ci/bl-specific.sh index 79a1e1f..435ad17 100644 --- a/.ci/bl-specific.sh +++ b/.ci/bl-specific.sh @@ -3,3 +3,6 @@ # cp -v <...> ~/.ipython/profile_${TEST_PROFILE}/ conda install -y -c ${CONDA_CHANNEL_NAME} xpdacq + +mkdir -v -p ~/.config/acq/ +cp -v .ci/pdf.yml ~/.config/acq/ diff --git a/.ci/pdf.yml b/.ci/pdf.yml new file mode 100644 index 0000000..68f84b0 --- /dev/null +++ b/.ci/pdf.yml @@ -0,0 +1,35 @@ +archive_base_dir_name: .userbeamtimearchive +archive_root_dir: /mnt/data/bnl/xpdacq_special/archive +base_dir: /mnt/data/bnl/xpdacq_special/data +beamline_host_name: [jupiter] +beamline_id: 28-ID-1 +blconfig_dir_name: xpdConfig +blconfig_name: xpd_beamline_config.yml +calib_config_name: xpdAcq_calib_info.yml +dark_window: 0.1 +facility: NSLS-II +frame_acquire_time: 0.1 +glbl_yaml_name: glbl.yml +group: XPD +home_dir_name: user_data +image_field: pe1c_image +owner: PDF +simulation: false +shutter_conf: {close: 0, open: 1} +mask_kwargs: + edge: 30 + lower_thresh: 0.0 + bs_width: 13 + tri_offset: 13 + v_asym: 0 + alpha: 3.0 +dark_field_key : sc_dk_field_uid +det_image_field : pe1_image +exp_broker_name: pdf +outbound_proxy_address: 'xf28id1-ca1:5578' +inbound_proxy_address: 'xf28id1-ca1:5577' +shutter_sleep: 0 +diffraction_dets: ['pe1c', 'pe1', 'pe2c', 'pe2','dexela_image', 'dexela'] +radiograph_names : ['blackfly_det'] +radiogram_dets: ['blackfly_det'] +image_fields: ['pe1c_image', 'pe2c_image', 'dexela_image', 'dexela'] From 07bcfb497ae1c7e9b5486bd38dc7993cd8276534 Mon Sep 17 00:00:00 2001 From: Abigail Giles Date: Tue, 9 Mar 2021 10:58:49 -0500 Subject: [PATCH 06/70] Added glbl.yml file --- .ci/bl-specific.sh | 1 + .ci/glbl.yml | 158 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 159 insertions(+) create mode 100644 .ci/glbl.yml diff --git a/.ci/bl-specific.sh b/.ci/bl-specific.sh index 435ad17..17c8fac 100644 --- a/.ci/bl-specific.sh +++ b/.ci/bl-specific.sh @@ -6,3 +6,4 @@ conda install -y -c ${CONDA_CHANNEL_NAME} xpdacq mkdir -v -p ~/.config/acq/ cp -v .ci/pdf.yml ~/.config/acq/ +cp -v .ci/glbl.yml ~/.config/acq/ diff --git a/.ci/glbl.yml b/.ci/glbl.yml new file mode 100644 index 0000000..5db2bb9 --- /dev/null +++ b/.ci/glbl.yml @@ -0,0 +1,158 @@ +_dark_dict_list: +- acq_time: 5 + exposure: 5 + timestamp: 1614460063.2800422 + uid: 37d192fb-df2c-44a9-b41b-2a05c9751247 +- acq_time: 5 + exposure: 5 + timestamp: 1614460242.3911414 + uid: cf374ae7-2ed5-4e5d-9563-f4841a3759e9 +- acq_time: 5 + exposure: 5 + timestamp: 1614460464.3035522 + uid: 5fc90d2e-ef96-4ca7-9207-ae72121923d0 +- acq_time: 5 + exposure: !!python/object/apply:numpy.core.multiarray.scalar + - &id001 !!python/object/apply:numpy.dtype + args: + - f8 + - false + - true + state: !!python/tuple + - 3 + - < + - null + - null + - null + - -1 + - -1 + - 0 + - !!binary | + AAAAAAAAFEA= + timestamp: 1614460566.1485345 + uid: 12c2f3ca-b459-4180-a12e-2b2d4b6d5aa8 +- acq_time: 5 + exposure: !!python/object/apply:numpy.core.multiarray.scalar + - *id001 + - !!binary | + AAAAAAAAFEA= + timestamp: 1614464054.0055833 + uid: 5bf51ebe-6439-4815-a9bb-0c824fd3afe8 +- acq_time: 5 + exposure: !!python/object/apply:numpy.core.multiarray.scalar + - *id001 + - !!binary | + AAAAAAAAFEA= + timestamp: 1614464263.5876548 + uid: 25d95820-b20f-4d37-901d-6c96c86462a1 +- acq_time: 5 + exposure: !!python/object/apply:numpy.core.multiarray.scalar + - *id001 + - !!binary | + AAAAAAAAFEA= + timestamp: 1614464433.3411603 + uid: bb969c1c-2e41-4914-91db-3440b576c752 +- acq_time: 5 + exposure: !!python/object/apply:numpy.core.multiarray.scalar + - *id001 + - !!binary | + AAAAAAAAFEA= + timestamp: 1614464443.6444564 + uid: 319ccd2f-7483-459c-96ac-e308b150006e +_exclude_dir: +- /mnt/data/bnl/xpdacq_special/data/user_data +- /mnt/data/bnl/xpdacq_special/data/xpdConfig +- /mnt/data/bnl/xpdacq_special/data/user_data/config_base/yml +_export_tar_dir: +- /mnt/data/bnl/xpdacq_special/data/user_data/config_base +- /mnt/data/bnl/xpdacq_special/data/user_data/userScripts +all_folders: &id002 +- /mnt/data/bnl/xpdacq_special/data/user_data +- /mnt/data/bnl/xpdacq_special/data/xpdConfig +- /mnt/data/bnl/xpdacq_special/data/user_data/config_base/yml +- /mnt/data/bnl/xpdacq_special/data/user_data/config_base +- /mnt/data/bnl/xpdacq_special/data/user_data/config_base/yml/samples +- /mnt/data/bnl/xpdacq_special/data/user_data/config_base/yml/scanplans +- /mnt/data/bnl/xpdacq_special/data/user_data/tiff_base +- /mnt/data/bnl/xpdacq_special/data/user_data/userScripts +- /mnt/data/bnl/xpdacq_special/data/user_data/Import +- /mnt/data/bnl/xpdacq_special/data/user_data/userAnalysis +allfolders: *id002 +archive_base_dir: /mnt/data/bnl/xpdacq_special/archive/.userbeamtimearchive +archive_base_dir_name: .userbeamtimearchive +archive_dir: /mnt/data/bnl/xpdacq_special/archive/.userbeamtimearchive/2021 +archive_root_dir: /mnt/data/bnl/xpdacq_special/archive +auto_dark: true +auto_load_calib: true +base: /mnt/data/bnl/xpdacq_special/data +base_dir: /mnt/data/bnl/xpdacq_special/data +beamline_host_name: +- jupiter +beamline_id: 28-ID-1 +blconfig_dir: /mnt/data/bnl/xpdacq_special/data/xpdConfig +blconfig_dir_name: xpdConfig +blconfig_name: xpd_beamline_config.yml +blconfig_path: /mnt/data/bnl/xpdacq_special/data/xpdConfig/xpd_beamline_config.yml +bt_dir: /mnt/data/bnl/xpdacq_special/data/user_data/config_base/yml +calib_config_name: xpdAcq_calib_info.yml +config_base: /mnt/data/bnl/xpdacq_special/data/user_data/config_base +dark_field_key: sc_dk_field_uid +dark_window: 0.1 +det_image_field: &id003 +- pe1c_image +- pe2c_image +- dexela_image +- dexela +diffraction_dets: +- pe1c +- pe1 +- pe2c +- pe2 +- dexela_image +- dexela +dk_window: 0.1 +exp_broker_name: pdf +exp_hash_uid: f4be92ca-79c1-49ae-9bcd-59c7a8185aa3 +facility: NSLS-II +frame_acq_time: 0.1 +frame_acquire_time: 0.1 +glbl_yaml_name: glbl.yml +glbl_yaml_path: /mnt/data/bnl/xpdacq_special/data/user_data/config_base/yml/glbl.yml +group: XPD +home: /mnt/data/bnl/xpdacq_special/data/user_data +home_dir: /mnt/data/bnl/xpdacq_special/data/user_data +home_dir_name: user_data +image_field: pe1c_image +image_fields: *id003 +import_dir: /mnt/data/bnl/xpdacq_special/data/user_data/Import +inbound_proxy_address: xf28id1-ca1:5577 +is_simulation: false +mask_kwargs: + alpha: 3.0 + bs_width: 13 + edge: 30 + lower_thresh: 0.0 + tri_offset: 13 + v_asym: 0 +name: glbl +outbound_proxy_address: xf28id1-ca1:5578 +owner: PDF +radiogram_dets: +- blackfly_det +radiograph_names: +- blackfly_det +sample_dir: /mnt/data/bnl/xpdacq_special/data/user_data/config_base/yml/samples +scanplan_dir: /mnt/data/bnl/xpdacq_special/data/user_data/config_base/yml/scanplans +shutter_conf: + close: 0 + open: 1 +shutter_control: true +shutter_sleep: 0 +simulation: false +tiff_base: /mnt/data/bnl/xpdacq_special/data/user_data/tiff_base +user_backup_dir_name: '2021' +userscript_dir: /mnt/data/bnl/xpdacq_special/data/user_data/userScripts +usrAnalysis_dir: /mnt/data/bnl/xpdacq_special/data/user_data/userAnalysis +usrScript_dir: /mnt/data/bnl/xpdacq_special/data/user_data/userScripts +xpdconfig: /mnt/data/bnl/xpdacq_special/data/xpdConfig +yaml_dir: /mnt/data/bnl/xpdacq_special/data/user_data/config_base/yml From 2b50cbd299af791a457ca741b5697525ad47d31a Mon Sep 17 00:00:00 2001 From: Abigail Giles Date: Tue, 9 Mar 2021 12:06:16 -0500 Subject: [PATCH 07/70] Changed where glbl.yml is located --- .ci/bl-specific.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.ci/bl-specific.sh b/.ci/bl-specific.sh index 17c8fac..afc30f1 100644 --- a/.ci/bl-specific.sh +++ b/.ci/bl-specific.sh @@ -5,5 +5,7 @@ conda install -y -c ${CONDA_CHANNEL_NAME} xpdacq mkdir -v -p ~/.config/acq/ +mkdir -v -p ~/user_data/config_base/yml/ + cp -v .ci/pdf.yml ~/.config/acq/ -cp -v .ci/glbl.yml ~/.config/acq/ +cp -v .ci/glbl.yml ~/user_data/config_base/yml/ From 182884bcd4634c6596535d61d8e3ced3195e35a0 Mon Sep 17 00:00:00 2001 From: Abigail Giles Date: Wed, 17 Mar 2021 15:21:44 -0400 Subject: [PATCH 08/70] Added xpd_beamline_config.yml file --- .ci/bl-specific.sh | 4 ++++ .ci/xpd_beamline_config.yml | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 .ci/xpd_beamline_config.yml diff --git a/.ci/bl-specific.sh b/.ci/bl-specific.sh index afc30f1..ea71d41 100644 --- a/.ci/bl-specific.sh +++ b/.ci/bl-specific.sh @@ -6,6 +6,10 @@ conda install -y -c ${CONDA_CHANNEL_NAME} xpdacq mkdir -v -p ~/.config/acq/ mkdir -v -p ~/user_data/config_base/yml/ +sudo mkdir -v -p /mnt/data/bnl/xpdacq_special/data/xpdConfig/ +sudo chown -Rv $USER: /mnt/data/bnl/xpdacq_special/data/xpdConfig/ cp -v .ci/pdf.yml ~/.config/acq/ cp -v .ci/glbl.yml ~/user_data/config_base/yml/ +cp -v .ci/xpd_beamline_config.yml /mnt/data/bnl/xpdacq_special/data/xpdConfig/ + diff --git a/.ci/xpd_beamline_config.yml b/.ci/xpd_beamline_config.yml new file mode 100644 index 0000000..f3fa7ed --- /dev/null +++ b/.ci/xpd_beamline_config.yml @@ -0,0 +1,4 @@ +Verification time: '2021-01-09 17:45:59' +Verified by: AUTO VERIFIED IN TEST +hadtoedit: false +is_pytest: false From f02293acf5fc738fcbf7afbdb9a30b91498d4641 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Fri, 26 Feb 2021 18:38:28 -0500 Subject: [PATCH 09/70] HACK: make the profile not ask for config confirmation --- startup/94-load.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/startup/94-load.py b/startup/94-load.py index 0c1f0c0..cd03c96 100644 --- a/startup/94-load.py +++ b/startup/94-load.py @@ -14,6 +14,8 @@ # ############################################################################## import os +import yaml + from xpdacq.xpdacq_conf import (glbl_dict, configure_device, _reload_glbl, _set_glbl, _load_beamline_config) @@ -54,7 +56,8 @@ xrun.md['beamline_id'] = glbl['beamline_id'] xrun.md['group'] = glbl['group'] xrun.md['facility'] = glbl['facility'] -beamline_config = _load_beamline_config(glbl['blconfig_path']) +with open(glbl['blconfig_path'], "r") as f: + beamline_config = yaml.unsafe_load(f) xrun.md['beamline_config'] = beamline_config # insert header to db, either simulated or real From d644a5d2662f8354ff29218235aa975cc574ba20 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Fri, 26 Feb 2021 16:41:24 -0500 Subject: [PATCH 10/70] MNT: make forgiving of missing slack token --- startup/96-dan_functions.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/startup/96-dan_functions.py b/startup/96-dan_functions.py index 48a90b7..44a3a60 100644 --- a/startup/96-dan_functions.py +++ b/startup/96-dan_functions.py @@ -11,8 +11,12 @@ ############## -slack_token = os.environ["SLACK_API_TOKEN"] -client = WebClient(token=slack_token) +try: + slack_token = os.environ["SLACK_API_TOKEN"] +except KeyError: + client = None +else: + client = WebClient(token=slack_token) ### From 6d5305af59624ab30eb1335c13ce58cdba5451bf Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Fri, 26 Feb 2021 15:54:06 -0500 Subject: [PATCH 11/70] MNT: add missing commas This was a syntax error that never got exercised. --- startup/91-callbacks.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/startup/91-callbacks.py b/startup/91-callbacks.py index 2dc391b..73f3c8b 100644 --- a/startup/91-callbacks.py +++ b/startup/91-callbacks.py @@ -33,10 +33,10 @@ def __init__(self, db, data_keys, data_info_keys=None, root='/SHARE/user_data'): self.data_info_keys = data_info_keys self.root = root if data_info_keys is None: - data_info_keys=[ - ('start', 'Proposal ID') - ('start', 'sample_name') - ('start', 'wavelength') + data_info_keys=[ + ('start', 'Proposal ID'), + ('start', 'sample_name'), + ('start', 'wavelength'), ('event', 'data', 'Det_1_Z') ] self.data_info_keys = data_info_keys From 21c7868ce4b7c4f8f8895b573be0f6e156569ea0 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Fri, 26 Feb 2021 16:41:37 -0500 Subject: [PATCH 12/70] MNT: avoid bare except --- startup/96-dan_functions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/startup/96-dan_functions.py b/startup/96-dan_functions.py index 44a3a60..72c1ef1 100644 --- a/startup/96-dan_functions.py +++ b/startup/96-dan_functions.py @@ -31,7 +31,7 @@ def slack_message(my_message): ) # except SlackApiError as e: # assert e.response["something went wrong"] - except: + except Exception: print("slack message failed") From 669832d643340d1c370a128e0f99f324102e1ac4 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Fri, 26 Feb 2021 16:41:53 -0500 Subject: [PATCH 13/70] MNT: lift missing value from _py file --- startup/96-dan_functions.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/startup/96-dan_functions.py b/startup/96-dan_functions.py index 72c1ef1..c8a118a 100644 --- a/startup/96-dan_functions.py +++ b/startup/96-dan_functions.py @@ -36,7 +36,11 @@ def slack_message(my_message): 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 +307,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 +318,6 @@ def make_me_a_dataframe(found_pos): len(read_xcel.index), dtype=int ) - return df_sample_pos_info @@ -549,6 +552,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")) From ad960169d47fdcb8c4711c4228fac61e07abf703 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Fri, 26 Feb 2021 16:42:22 -0500 Subject: [PATCH 14/70] MNT: add missing import to keep the linter happy --- startup/96-dan_functions.py | 1 + 1 file changed, 1 insertion(+) diff --git a/startup/96-dan_functions.py b/startup/96-dan_functions.py index c8a118a..7022833 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 From 172036dc3bf47b60106e9269f638f43af8ee05fe Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Fri, 26 Feb 2021 18:38:46 -0500 Subject: [PATCH 15/70] MNT: put back in an RE API compatibly wrapper of xrun --- startup/94-load.py | 9 +++++++++ startup/95-zmq.py | 1 + 2 files changed, 10 insertions(+) diff --git a/startup/94-load.py b/startup/94-load.py index cd03c96..0c73de4 100644 --- a/startup/94-load.py +++ b/startup/94-load.py @@ -86,3 +86,12 @@ 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(xrun.md) +# insert header to db, either simulated or real +xrun.subscribe(db.insert, 'all') 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) From da32e9346fc633249201b716dcff2f92a4e41be3 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Fri, 26 Feb 2021 18:39:35 -0500 Subject: [PATCH 16/70] MNT: files for queueserver startup --- startup/existing_plans_and_devices.yaml | 5524 +++++++++++++++++++++++ startup/user_group_permissions.yaml | 33 + 2 files changed, 5557 insertions(+) create mode 100644 startup/existing_plans_and_devices.yaml create mode 100644 startup/user_group_permissions.yaml diff --git a/startup/existing_plans_and_devices.yaml b/startup/existing_plans_and_devices.yaml new file mode 100644 index 0000000..e24801a --- /dev/null +++ b/startup/existing_plans_and_devices.yaml @@ -0,0 +1,5524 @@ +# This file is automatically generated. Edit at your own risk. +existing_devices: + BStop1: + classname: BeamStop + module: + BStop2: + classname: BeamStop + module: + Det_1_X: + classname: EpicsMotor + module: ophyd.epics_motor + Det_1_Y: + classname: EpicsMotor + module: ophyd.epics_motor + Det_1_Z: + classname: EpicsMotor + module: ophyd.epics_motor + Det_2_X: + classname: EpicsMotor + module: ophyd.epics_motor + Det_2_Y: + classname: EpicsMotor + module: ophyd.epics_motor + Det_2_Z: + classname: EpicsMotor + module: ophyd.epics_motor + ECS_An_tth: + classname: EpicsMotor + module: ophyd.epics_motor + ECS_Sam_tth: + classname: EpicsMotor + module: ophyd.epics_motor + ECS_laser_foil_filter: + classname: ECS + module: + ECS_sample_environment: + classname: SampleEnvironment + module: + ECS_tel_guide: + classname: EpicsMotor + module: ophyd.epics_motor + Grid_X: + classname: EpicsMotor + module: ophyd.epics_motor + Grid_Y: + classname: EpicsMotor + module: ophyd.epics_motor + Grid_Z: + classname: EpicsMotor + module: ophyd.epics_motor + Mirror_VFM: + classname: Mirror + module: + OCM_table: + classname: OCMTable + module: + Spinnergo_Ry: + classname: EpicsMotor + module: ophyd.epics_motor + Spinnergo_X: + classname: EpicsMotor + module: ophyd.epics_motor + Spinnergo_Y: + classname: EpicsMotor + module: ophyd.epics_motor + Spinnergo_Z: + classname: EpicsMotor + module: ophyd.epics_motor + Tomo_spinner: + classname: EpicsMotor + module: ophyd.epics_motor + XPD_shutter: + classname: PDFFastShutter + module: + analyzer_goniohead: + classname: Analyzer + module: + bdm_slits: + classname: Slits + module: + cryostat1: + classname: CryoStat1 + module: + cryostat2: + classname: CryoStat2 + module: + cryostream: + classname: CryoStream + module: + fb: + classname: FilterBank + module: + fb_two_button_shutters: + classname: FilterBankTwoButtonShutter + module: + fs: + classname: PDFFastShutter + module: + lakeshore336: + classname: Lakeshore336 + module: + linkam_furnace: + classname: LinkamFurnace + module: + magnet: + classname: Magnet + module: + ocm_slits: + classname: Slits + module: + optics_table_adc: + classname: OpticsTableADC + module: + pe1: + classname: PerkinElmerStandard1 + module: + pe1c: + classname: PerkinElmerContinuous1 + module: + pilatus300: + classname: PilatusV33 + module: + rga: + classname: RGA + module: + sbm: + classname: SideBounceMono + module: + spinner_goniohead: + classname: SpinnerGoniohead + module: + wb_slits: + classname: Slits + module: +existing_plans: + Tlist: + description: Collect data over a list of user-specific temperatures + name: Tlist + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: total time of exposure in seconds + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: exposure + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: + default_pickled: 80 04 95 24 00 00 00 00 00 00 00 8c 0f 78 70 64 61 63 71 2e + 62 65 61 6d 74 69 6d 65 94 8c 0c 73 68 75 74 74 65 72 5f 73 74 65 70 94 93 + 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + Tramp: + description: Collect data over a range of temperatures + name: Tramp + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: exposure time at each temperature step in seconds. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: exposure + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: starting point of temperature sequence. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: Tstart + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: stoping point of temperature sequence. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: Tstop + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: step size between Tstart and Tstop of this sequence. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: Tstep + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: + default_pickled: 80 04 95 24 00 00 00 00 00 00 00 8c 0f 78 70 64 61 63 71 2e + 62 65 61 6d 74 69 6d 65 94 8c 0c 73 68 75 74 74 65 72 5f 73 74 65 70 94 93 + 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + abs_set: + description: Set a value. Optionally, wait for it to complete before continuing. + name: abs_set + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: passed to obj.set() + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: identifier used by 'wait' + kind: + name: KEYWORD_ONLY + value: 3 + name: group + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: 'False' + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: passed to obj.set() + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dets + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: fs + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: sample_name + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: images_per_set + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + adaptive_scan: + description: Scan over one variable with adaptively tuned step size. + name: adaptive_scan + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: starting position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: start + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: ending position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: stop + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: smallest step for fast-changing regions + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: min_step + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: largest step for slow-chaning regions + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: max_step + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: desired fractional change in detector signal between steps + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: target_delta + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '0.8' + default_pickled: 80 04 95 0a 00 00 00 00 00 00 00 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: command + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: objs + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: total number of repetitions; if None, infinite + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: n + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: plan + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: 'msg : Msg' + checkpoint: + description: If interrupted, rewind to this point. + name: checkpoint + parameters: [] + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: exit_status + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: reason + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + collect: + description: Collect data cached by a fly-scanning device and emit documents. + name: collect + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: Device with 'kickoff', 'complete', and 'collect' methods + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: 'False' + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: 'True' + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: Device with 'kickoff', 'complete', and 'collect' methods + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: identifier used by 'wait' + kind: + name: KEYWORD_ONLY + value: 3 + name: group + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: 'False' + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: passed through to ``obj.complete()`` + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: passed through to ``obj.configure()`` + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: passed through to ``obj.configure()`` + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: det + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: exposure + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + count: + description: Take one or more readings from detectors. + name: count + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '1' + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + create: + description: Bundle future readings into a new Event document. + name: create + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: primary + default_pickled: 80 04 95 0b 00 00 00 00 00 00 00 8c 07 70 72 69 6d 61 72 79 + 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: total time of exposrue in seconds + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: exposure + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + deferred_pause: + description: Pause at the next checkpoint. + name: deferred_pause + parameters: [] + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: objects that support the flyer interface + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: flyers + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 15 00 00 00 00 00 00 00 8c 08 62 75 69 6c 74 69 + 6e 73 94 8c 04 6c 69 73 74 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: sample + - annotation: + annotation_pickled: 80 04 95 15 00 00 00 00 00 00 00 8c 08 62 75 69 6c 74 69 + 6e 73 94 8c 04 6c 69 73 74 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: plan + returns: + annotation: typing.Generator + annotation_pickled: 80 04 95 18 00 00 00 00 00 00 00 8c 06 74 79 70 69 6e 67 + 94 8c 09 47 65 6e 65 72 61 74 6f 72 94 93 94 2e + inner_product_scan: + description: null + name: inner_product_scan + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: num + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + input_plan: + description: Prompt the user for text input. + name: input_plan + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 04 00 00 00 00 00 00 00 8c 00 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: The suspender to install + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: suspender + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: "msg : Msg\n Msg('install_suspender', None, suspender)" + kickoff: + description: Kickoff a fly-scanning device. + name: kickoff + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: Device with 'kickoff', 'complete', and 'collect' methods + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: identifier used by 'wait' + kind: + name: KEYWORD_ONLY + value: 3 + name: group + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: 'False' + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: passed through to ``obj.kickoff()`` + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: 'False' + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + list_scan: + description: Scan over one or more variables in steps simultaneously (inner product). + name: list_scan + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + load_sample: + description: For robot. + name: load_sample + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: position + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: geometry + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + log_scan: + description: Scan over one variable in log-spaced steps. + name: log_scan + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: starting position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: start + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: ending position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: stop + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: number of steps + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: num + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + monitor: + description: Asynchronously monitor for new values and emit Event documents. + name: monitor + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: name of event stream; default is None + kind: + name: KEYWORD_ONLY + value: 3 + name: name + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: passed through to ``obj.subscribe()`` + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: device1, value1, device2, value2, ... + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: passed to obj.set() + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: 'msg : Msg' + move_per_step: + description: Inner loop of an N-dimensional step scan without any readings + name: move_per_step + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: mapping motors to positions in this step + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: step + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: mapping motors to their last-set positions + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: pos_cache + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + movr: + description: Move one or more devices to a relative setpoint. Wait for all to + complete. + name: mvr + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: device1, value1, device2, value2, ... + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: passed to obj.set() + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: device1, value1, device2, value2, ... + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: passed to obj.set() + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: device1, value1, device2, value2, ... + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: passed to obj.set() + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: 'msg : Msg' + 'null': + description: Yield a no-op Message. (Primarily for debugging and testing.) + name: 'null' + parameters: [] + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: devices to read + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: The motor to move + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: Where to move the motor to + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: step + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: + default_pickled: 80 04 95 2b 00 00 00 00 00 00 00 8c 12 62 6c 75 65 73 6b 79 + 2e 70 6c 61 6e 5f 73 74 75 62 73 94 8c 10 74 72 69 67 67 65 72 5f 61 6e 64 + 5f 72 65 61 64 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + one_nd_step: + description: Inner loop of an N-dimensional step scan + name: one_nd_step + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: devices to read + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: mapping motors to positions in this step + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: step + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: mapping motors to their last-set positions + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: pos_cache + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: + default_pickled: 80 04 95 2b 00 00 00 00 00 00 00 8c 12 62 6c 75 65 73 6b 79 + 2e 70 6c 61 6e 5f 73 74 75 62 73 94 8c 10 74 72 69 67 67 65 72 5f 61 6e 64 + 5f 72 65 61 64 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + one_shot: + description: Inner loop of a count. + name: one_shot + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: devices to read + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: + default_pickled: 80 04 95 2b 00 00 00 00 00 00 00 8c 12 62 6c 75 65 73 6b 79 + 2e 70 6c 61 6e 5f 73 74 75 62 73 94 8c 10 74 72 69 67 67 65 72 5f 61 6e 64 + 5f 72 65 61 64 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + open_run: + description: Mark the beginning of a new 'run'. Emit a RunStart document. + name: open_run + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + outer_product_scan: + description: Scan over a mesh; each motor is on an independent trajectory. + name: grid_scan + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + pause: + description: Pause and wait for the user to resume. + name: pause + parameters: [] + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: "msg : Msg\n Msg('pause')" + pchain: + description: Like `itertools.chain` but using `yield from` + name: pchain + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: generators (plans) + kind: + name: VAR_POSITIONAL + value: 2 + name: args + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: plan + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + print_summary_wrapper: + description: Print summary of plan as it goes by + name: print_summary_wrapper + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: Must yield `Msg` objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: plan + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: 'msg : `Msg`' + ramp_plan: + description: Take data while ramping one or more positioners. + name: ramp_plan + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: monitor_sig + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: 'True' + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + rd: + description: Reads a single-value non-triggered object + name: rd + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: The device to be read + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '0' + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: starting position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: start + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: ending position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: stop + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: smallest step for fast-changing regions + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: min_step + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: largest step for slow-chaning regions + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: max_step + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: desired fractional change in detector signal between steps + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: target_delta + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '0.8' + default_pickled: 80 04 95 0a 00 00 00 00 00 00 00 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + rel_grid_scan: + description: Scan over a mesh relative to current position. + name: rel_grid_scan + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: 'False' + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + rel_list_scan: + description: Scan over one variable in steps relative to current position. + name: rel_list_scan + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: starting position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: start + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: ending position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: stop + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: number of steps + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: num + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + rel_scan: + description: Scan over one multi-motor trajectory relative to current position. + name: rel_scan + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: number of points + kind: + name: KEYWORD_ONLY + value: 3 + name: num + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + rel_set: + description: Set a value relative to current value. Optionally, wait before continuing. + name: rel_set + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: passed to obj.set() + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: identifier used by 'wait'; None by default + kind: + name: KEYWORD_ONLY + value: 3 + name: group + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: 'False' + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: passed to obj.set() + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: 'msg : Msg' + rel_spiral: + description: Relative spiral scan + name: rel_spiral + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: x width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_range + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: y width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_range + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: Delta radius along the minor axis of the ellipse. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dr + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: Number of theta steps + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: nth + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '0.0' + default_pickled: 80 04 95 0a 00 00 00 00 00 00 00 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + rel_spiral_fermat: + description: Relative fermat spiral scan + name: rel_spiral_fermat + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: x width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_range + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: y width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_range + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: delta radius + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dr + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: radius gets divided by this + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: factor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '0.0' + default_pickled: 80 04 95 0a 00 00 00 00 00 00 00 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + rel_spiral_square: + description: Relative square spiral scan, centered around current (x, y) position. + name: rel_spiral_square + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: x width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_range + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: y width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_range + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: number of x axis points + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_num + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: Number of y axis points. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_num + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + relative_adaptive_scan: + description: Relative scan over one variable with adaptively tuned step size. + name: rel_adaptive_scan + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: starting position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: start + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: ending position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: stop + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: smallest step for fast-changing regions + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: min_step + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: largest step for slow-chaning regions + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: max_step + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: desired fractional change in detector signal between steps + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: target_delta + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '0.8' + default_pickled: 80 04 95 0a 00 00 00 00 00 00 00 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + relative_inner_product_scan: + description: null + name: relative_inner_product_scan + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: num + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + relative_list_scan: + description: Scan over one variable in steps relative to current position. + name: rel_list_scan + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: starting position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: start + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: ending position of motor + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: stop + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: number of steps + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: num + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + relative_outer_product_scan: + description: Scan over a mesh relative to current position. + name: rel_grid_scan + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + relative_scan: + description: Scan over one multi-motor trajectory relative to current position. + name: rel_scan + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: number of points + kind: + name: KEYWORD_ONLY + value: 3 + name: num + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + relative_spiral: + description: Relative spiral scan + name: rel_spiral + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: x width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_range + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: y width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_range + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: Delta radius along the minor axis of the ellipse. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dr + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: Number of theta steps + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: nth + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '0.0' + default_pickled: 80 04 95 0a 00 00 00 00 00 00 00 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + relative_spiral_fermat: + description: Relative fermat spiral scan + name: rel_spiral_fermat + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: x width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_range + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: y width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_range + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: delta radius + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dr + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: radius gets divided by this + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: factor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '0.0' + default_pickled: 80 04 95 0a 00 00 00 00 00 00 00 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + remove_suspender: + description: Remove a suspender during a plan. + name: remove_suspender + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: The suspender to remove + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: suspender + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: Callable that returns an iterable of Msg objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: plan + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '1' + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + repeater: + description: Generate n chained copies of the messages from gen_func + name: repeater + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: total number of repetitions; if None, infinite + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: n + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: returns generator instance + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: gen_func + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: plan + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: sample + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + save: + description: Close a bundle of readings and emit a completed Event document. + name: save + parameters: [] + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: "msg : Msg\n Msg('save')" + scan: + description: Scan over one multi-motor trajectory. + name: scan + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: number of points + kind: + name: KEYWORD_ONLY + value: 3 + name: num + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + scan_nd: + description: Scan over an arbitrary N-dimensional trajectory. + name: scan_nd + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: cycler.Cycler object mapping movable interfaces to positions + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: cycler + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: step + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + simple_ct: + description: A minimal wrapper around count that adjusts exposure time. + name: simple_ct + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dets + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: exposure + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + single_gen: + description: Turn a single message into a plan + name: single_gen + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: a single message + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: msg + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: seconds + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: time + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: x center + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_start + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: y center + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_start + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: x width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_range + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: y width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_range + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: Delta radius along the minor axis of the ellipse. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dr + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: Number of theta steps + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: nth + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '0.0' + default_pickled: 80 04 95 0a 00 00 00 00 00 00 00 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + spiral_fermat: + description: Absolute fermat spiral scan, centered around (x_start, y_start) + name: spiral_fermat + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: x center + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_start + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: y center + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_start + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: x width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_range + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: y width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_range + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: delta radius + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dr + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: radius gets divided by this + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: factor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '0.0' + default_pickled: 80 04 95 0a 00 00 00 00 00 00 00 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + spiral_square: + description: Absolute square spiral scan, centered around (x_center, y_center) + name: spiral_square + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: x center + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_center + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: y center + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_center + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: x width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_range + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: y width of spiral + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_range + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: number of x axis points + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x_num + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: Number of y axis points. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y_num + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + stage: + description: '''Stage'' a device (i.e., prepare it for use, ''arm'' it).' + name: stage + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: "msg : Msg\n Msg('stage', obj)" + stop: + description: Stop a device. + name: stop + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: 'msg : Msg' + subscribe: + description: Subscribe the stream of emitted documents. + name: subscribe + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: name + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dets + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: fs + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: cryostream + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: sample_name + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: distances + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: temperatures + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: images_per_set + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + trigger: + description: Trigger and acquisition. Optionally, wait for it to complete. + name: trigger + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: identifier used by 'wait'; None by default + kind: + name: KEYWORD_ONLY + value: 3 + name: group + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: 'False' + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: primary + default_pickled: 80 04 95 0b 00 00 00 00 00 00 00 8c 07 70 72 69 6d 61 72 79 + 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: total number of readings + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: num + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: 'True' + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + tune_centroid: + description: 'plan: tune a motor to the centroid of signal(motor)' + name: tune_centroid + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: detector field whose output is to maximize + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: signal + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: any 'settable' object (motor, temp controller, etc.) + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: start of range + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: start + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: 'end of range, note: start < stop' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: stop + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: smallest step size to use. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: min_step + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '10' + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '3.0' + default_pickled: 80 04 95 0a 00 00 00 00 00 00 00 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: 'False' + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + tweak: + description: Move and motor and read a detector with an interactive prompt. + name: tweak + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detector + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: initial suggestion for step size + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: step + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dets + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: fs + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: cryostream + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: sample_name + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: distances + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: images_per_set + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + unload_sample: + description: For robot. + name: unload_sample + parameters: [] + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + unmonitor: + description: Stop monitoring. + name: unmonitor + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: obj + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: "msg : Msg\n Msg('unstage', obj)" + unsubscribe: + description: Remove a subscription. + name: unsubscribe + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: token returned by processing a 'subscribe' message + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: token + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: collection of asyncio.Future objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: futures + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: passed through to ``asyncio.wait()`` + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: num + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e diff --git a/startup/user_group_permissions.yaml b/startup/user_group_permissions.yaml new file mode 100644 index 0000000..e225b6e --- /dev/null +++ b/startup/user_group_permissions.yaml @@ -0,0 +1,33 @@ +user_groups: + root: # The group includes all available plan and devices + allowed_plans: + - null # Allow all + 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+$" + From ace7731bb08180e16b944fcfed79d15191b24c77 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sat, 27 Feb 2021 17:21:17 -0500 Subject: [PATCH 17/70] ENH: add plan that looks up sample metadata from xpdacq --- startup/96-dan_functions.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/startup/96-dan_functions.py b/startup/96-dan_functions.py index 7022833..650df4c 100644 --- a/startup/96-dan_functions.py +++ b/startup/96-dan_functions.py @@ -9,6 +9,7 @@ from bluesky.callbacks import LiveTable import uuid import numpy as np +from xpdacq.xpdacq import translate_to_sample ############## @@ -670,3 +671,12 @@ def simple_ct(dets, exposure, *, md=None): plan = bp.count(dets, md=_md) plan = bpp.subs_wrapper(plan, LiveTable([])) return (yield from plan) + +def sample_aware_count(dets, 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(dets, exposure, md=_md) From fbabb2203f9ff7e708ccaf58b144b4a39424afd4 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sat, 27 Feb 2021 17:32:21 -0500 Subject: [PATCH 18/70] ENH: update and curate published plans --- startup/existing_plans_and_devices.yaml | 5211 ++--------------------- 1 file changed, 445 insertions(+), 4766 deletions(-) diff --git a/startup/existing_plans_and_devices.yaml b/startup/existing_plans_and_devices.yaml index e24801a..765b629 100644 --- a/startup/existing_plans_and_devices.yaml +++ b/startup/existing_plans_and_devices.yaml @@ -1,4 +1,3 @@ -# This file is automatically generated. Edit at your own risk. existing_devices: BStop1: classname: BeamStop @@ -133,9 +132,9 @@ existing_devices: classname: Slits module: existing_plans: - Tlist: - description: Collect data over a list of user-specific temperatures - name: Tlist + count: + description: Take one or more readings from detectors. + name: count parameters: - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 @@ -143,70 +142,63 @@ existing_plans: default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: 'list of ''readable'' objects. default to the temperature - - controller and area detector linked to xpdAcq.' + description: list of 'readable' objects kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: dets + name: detectors - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: total time of exposure in seconds + default: '1' + default_pickled: 80 04 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: exposure + name: num - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: a list of temperatures where a scan will be run + default: None + default_pickled: 80 04 4e 2e + description: Time delay in seconds between successive readings; default is 0. kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: T_list + name: delay - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: - default_pickled: 80 04 95 24 00 00 00 00 00 00 00 8c 0f 78 70 64 61 63 71 2e - 62 65 61 6d 74 69 6d 65 94 8c 0c 73 68 75 74 74 65 72 5f 73 74 65 70 94 93 - 94 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.' + default: None + default_pickled: 80 04 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_step + name: per_shot + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md returns: annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - Tramp: - description: Collect data over a range of temperatures - name: Tramp + ct: + description: Take one reading from area detector with given exposure time + name: ct parameters: - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 @@ -214,9 +206,9 @@ existing_plans: default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: 'list of ''readable'' objects. default to the temperature + description: 'list of ''readable'' objects. default to area detector - controller and area detector linked to xpdAcq.' + linked to xpdAcq.' kind: name: POSITIONAL_OR_KEYWORD value: 1 @@ -227,79 +219,92 @@ existing_plans: default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: exposure time at each temperature step in seconds. + description: total time of exposrue in seconds kind: name: POSITIONAL_OR_KEYWORD value: 1 name: exposure - - annotation: '' + returns: + annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: starting point of temperature sequence. - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: Tstart + grid_scan: + description: Scan over a mesh; each motor is on an independent trajectory. + name: grid_scan + parameters: - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: stoping point of temperature sequence. + description: list of 'readable' objects kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: Tstop + name: detectors - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: step size between Tstart and Tstop of this sequence. kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: Tstep + name: VAR_POSITIONAL + value: 2 + name: args - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: - default_pickled: 80 04 95 24 00 00 00 00 00 00 00 8c 0f 78 70 64 61 63 71 2e - 62 65 61 6d 74 69 6d 65 94 8c 0c 73 68 75 74 74 65 72 5f 73 74 65 70 94 93 - 94 2e - description: 'hook for customizing action at each temperature point. - - Tramp uses this for opening and closing the shutter at each - - temperature acquisition. + default: None + default_pickled: 80 04 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 - Default behavior: + is defined as following snake-like, winding trajectory instead of a - `` open shutter - collect data - close shutter `` + simple left-to-right trajectory. The elements of the list are motors + that are listed in `args`. The list must not contain the slowest - To make shutter always open during the temperature ramp, + (first) motor, since it can''t be snaked.' + kind: + name: KEYWORD_ONLY + value: 3 + name: snake_axes + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: 'hook for customizing action of inner loop (messages per step). - pass ``None`` to this argument. See ``Notes`` below for more + See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) - detailed information.' + for details.' kind: name: KEYWORD_ONLY value: 3 name: per_step + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md returns: annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - abs_set: - description: Set a value. Optionally, wait for it to complete before continuing. - name: abs_set + inner_product_scan: + description: null + name: inner_product_scan parameters: - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 @@ -310,14 +315,23 @@ existing_plans: kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: obj + name: detectors + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: num - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: passed to obj.set() kind: name: VAR_POSITIONAL value: 2 @@ -327,23 +341,48 @@ existing_plans: 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e default: None default_pickled: 80 04 4e 2e - description: identifier used by 'wait' kind: name: KEYWORD_ONLY value: 3 - name: group + name: per_step - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: 'False' - default_pickled: 80 04 89 2e - description: 'If True, wait for completion before processing any more messages. - - False by default.' + default: None + default_pickled: 80 04 4e 2e + kind: + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + mov: + description: Move one or more devices to a setpoint. Wait for all to complete. + name: mv + parameters: + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: device1, value1, device2, value2, ... + kind: + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: Used to mark these as a unit to be waited on. kind: name: KEYWORD_ONLY value: 3 - name: wait + name: group - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e @@ -360,12 +399,10 @@ existing_plans: annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 + movr: + description: Move one or more devices to a relative setpoint. Wait for all to + complete. + name: mvr parameters: - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 @@ -373,30 +410,52 @@ existing_plans: default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: device1, value1, device2, value2, ... kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: dets + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: passed to obj.set() kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: motors + name: VAR_KEYWORD + value: 4 + name: kwargs + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: 'msg : Msg' + outer_product_scan: + description: Scan over a mesh; each motor is on an independent trajectory. + name: grid_scan + parameters: - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: fs + name: detectors - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e @@ -404,25 +463,61 @@ existing_plans: default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: sample_name + name: VAR_POSITIONAL + value: 2 + name: args - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e default: None default_pickled: 80 04 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: POSITIONAL_OR_KEYWORD - value: 1 - name: images_per_set + name: KEYWORD_ONLY + value: 3 + name: snake_axes + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md returns: annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - adaptive_scan: - description: Scan over one variable with adaptively tuned step size. - name: adaptive_scan + rel_grid_scan: + description: Scan over a mesh relative to current position. + name: rel_grid_scan parameters: - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 @@ -441,4275 +536,41 @@ existing_plans: default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: starting position of motor - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: start - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: ending position of motor - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: stop - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: smallest step for fast-changing regions - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: min_step - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: largest step for slow-chaning regions - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: max_step - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: desired fractional change in detector signal between steps - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: target_delta - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '0.8' - default_pickled: 80 04 95 0a 00 00 00 00 00 00 00 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: command - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: objs - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: VAR_POSITIONAL - value: 2 - name: args - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: VAR_KEYWORD - value: 4 - name: kwargs - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: total number of repetitions; if None, infinite - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: n - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: plan - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: 'msg : Msg' - checkpoint: - description: If interrupted, rewind to this point. - name: checkpoint - parameters: [] - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: exit_status - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: reason - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - collect: - description: Collect data cached by a fly-scanning device and emit documents. - name: collect - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: Device with 'kickoff', 'complete', and 'collect' methods - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: obj - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: 'False' - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: 'True' - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: Device with 'kickoff', 'complete', and 'collect' methods - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: obj - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: identifier used by 'wait' - kind: - name: KEYWORD_ONLY - value: 3 - name: group - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: 'False' - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: passed through to ``obj.complete()`` - kind: - name: VAR_KEYWORD - value: 4 - name: kwargs - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: obj - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: passed through to ``obj.configure()`` - kind: - name: VAR_POSITIONAL - value: 2 - name: args - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: passed through to ``obj.configure()`` - kind: - name: VAR_KEYWORD - value: 4 - name: kwargs - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: det - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: exposure - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - count: - description: Take one or more readings from detectors. - name: count - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '1' - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - create: - description: Bundle future readings into a new Event document. - name: create - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: primary - default_pickled: 80 04 95 0b 00 00 00 00 00 00 00 8c 07 70 72 69 6d 61 72 79 - 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: total time of exposrue in seconds - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: exposure - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - deferred_pause: - description: Pause at the next checkpoint. - name: deferred_pause - parameters: [] - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: objects that support the flyer interface - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: flyers - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: VAR_POSITIONAL - value: 2 - name: args - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 15 00 00 00 00 00 00 00 8c 08 62 75 69 6c 74 69 - 6e 73 94 8c 04 6c 69 73 74 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: sample - - annotation: - annotation_pickled: 80 04 95 15 00 00 00 00 00 00 00 8c 08 62 75 69 6c 74 69 - 6e 73 94 8c 04 6c 69 73 74 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: plan - returns: - annotation: typing.Generator - annotation_pickled: 80 04 95 18 00 00 00 00 00 00 00 8c 06 74 79 70 69 6e 67 - 94 8c 09 47 65 6e 65 72 61 74 6f 72 94 93 94 2e - inner_product_scan: - description: null - name: inner_product_scan - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: num - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: VAR_POSITIONAL - value: 2 - name: args - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - kind: - name: KEYWORD_ONLY - value: 3 - name: per_step - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - input_plan: - description: Prompt the user for text input. - name: input_plan - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 04 00 00 00 00 00 00 00 8c 00 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: The suspender to install - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: suspender - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: "msg : Msg\n Msg('install_suspender', None, suspender)" - kickoff: - description: Kickoff a fly-scanning device. - name: kickoff - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: Device with 'kickoff', 'complete', and 'collect' methods - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: obj - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: identifier used by 'wait' - kind: - name: KEYWORD_ONLY - value: 3 - name: group - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: 'False' - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: passed through to ``obj.kickoff()`` - kind: - name: VAR_KEYWORD - value: 4 - name: kwargs - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: 'False' - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - list_scan: - description: Scan over one or more variables in steps simultaneously (inner product). - name: list_scan - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - load_sample: - description: For robot. - name: load_sample - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: position - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: geometry - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - log_scan: - description: Scan over one variable in log-spaced steps. - name: log_scan - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: starting position of motor - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: start - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: ending position of motor - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: stop - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: number of steps - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: num - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - monitor: - description: Asynchronously monitor for new values and emit Event documents. - name: monitor - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: obj - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: name of event stream; default is None - kind: - name: KEYWORD_ONLY - value: 3 - name: name - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: passed through to ``obj.subscribe()`` - kind: - name: VAR_KEYWORD - value: 4 - name: kwargs - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: device1, value1, device2, value2, ... - kind: - name: VAR_POSITIONAL - value: 2 - name: args - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: passed to obj.set() - kind: - name: VAR_KEYWORD - value: 4 - name: kwargs - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: 'msg : Msg' - move_per_step: - description: Inner loop of an N-dimensional step scan without any readings - name: move_per_step - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: mapping motors to positions in this step - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: step - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: mapping motors to their last-set positions - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: pos_cache - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - movr: - description: Move one or more devices to a relative setpoint. Wait for all to - complete. - name: mvr - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: device1, value1, device2, value2, ... - kind: - name: VAR_POSITIONAL - value: 2 - name: args - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: passed to obj.set() - kind: - name: VAR_KEYWORD - value: 4 - name: kwargs - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: device1, value1, device2, value2, ... - kind: - name: VAR_POSITIONAL - value: 2 - name: args - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: passed to obj.set() - kind: - name: VAR_KEYWORD - value: 4 - name: kwargs - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: device1, value1, device2, value2, ... - kind: - name: VAR_POSITIONAL - value: 2 - name: args - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: passed to obj.set() - kind: - name: VAR_KEYWORD - value: 4 - name: kwargs - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: 'msg : Msg' - 'null': - description: Yield a no-op Message. (Primarily for debugging and testing.) - name: 'null' - parameters: [] - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: devices to read - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: The motor to move - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: Where to move the motor to - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: step - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: - default_pickled: 80 04 95 2b 00 00 00 00 00 00 00 8c 12 62 6c 75 65 73 6b 79 - 2e 70 6c 61 6e 5f 73 74 75 62 73 94 8c 10 74 72 69 67 67 65 72 5f 61 6e 64 - 5f 72 65 61 64 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - one_nd_step: - description: Inner loop of an N-dimensional step scan - name: one_nd_step - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: devices to read - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: mapping motors to positions in this step - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: step - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: mapping motors to their last-set positions - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: pos_cache - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: - default_pickled: 80 04 95 2b 00 00 00 00 00 00 00 8c 12 62 6c 75 65 73 6b 79 - 2e 70 6c 61 6e 5f 73 74 75 62 73 94 8c 10 74 72 69 67 67 65 72 5f 61 6e 64 - 5f 72 65 61 64 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - one_shot: - description: Inner loop of a count. - name: one_shot - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: devices to read - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: - default_pickled: 80 04 95 2b 00 00 00 00 00 00 00 8c 12 62 6c 75 65 73 6b 79 - 2e 70 6c 61 6e 5f 73 74 75 62 73 94 8c 10 74 72 69 67 67 65 72 5f 61 6e 64 - 5f 72 65 61 64 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - open_run: - description: Mark the beginning of a new 'run'. Emit a RunStart document. - name: open_run - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - outer_product_scan: - description: Scan over a mesh; each motor is on an independent trajectory. - name: grid_scan - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: VAR_POSITIONAL - value: 2 - name: args - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - pause: - description: Pause and wait for the user to resume. - name: pause - parameters: [] - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: "msg : Msg\n Msg('pause')" - pchain: - description: Like `itertools.chain` but using `yield from` - name: pchain - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: generators (plans) - kind: - name: VAR_POSITIONAL - value: 2 - name: args - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: plan - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - print_summary_wrapper: - description: Print summary of plan as it goes by - name: print_summary_wrapper - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: Must yield `Msg` objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: plan - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: 'msg : `Msg`' - ramp_plan: - description: Take data while ramping one or more positioners. - name: ramp_plan - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: monitor_sig - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: 'True' - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - rd: - description: Reads a single-value non-triggered object - name: rd - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: The device to be read - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: obj - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '0' - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: obj - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: starting position of motor - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: start - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: ending position of motor - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: stop - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: smallest step for fast-changing regions - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: min_step - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: largest step for slow-chaning regions - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: max_step - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: desired fractional change in detector signal between steps - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: target_delta - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '0.8' - default_pickled: 80 04 95 0a 00 00 00 00 00 00 00 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - rel_grid_scan: - description: Scan over a mesh relative to current position. - name: rel_grid_scan - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: VAR_POSITIONAL - value: 2 - name: args - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: 'False' - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - rel_list_scan: - description: Scan over one variable in steps relative to current position. - name: rel_list_scan - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: starting position of motor - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: start - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: ending position of motor - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: stop - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: number of steps - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: num - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - rel_scan: - description: Scan over one multi-motor trajectory relative to current position. - name: rel_scan - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: number of points - kind: - name: KEYWORD_ONLY - value: 3 - name: num - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - rel_set: - description: Set a value relative to current value. Optionally, wait before continuing. - name: rel_set - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: obj - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: passed to obj.set() - kind: - name: VAR_POSITIONAL - value: 2 - name: args - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: identifier used by 'wait'; None by default - kind: - name: KEYWORD_ONLY - value: 3 - name: group - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: 'False' - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: passed to obj.set() - kind: - name: VAR_KEYWORD - value: 4 - name: kwargs - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: 'msg : Msg' - rel_spiral: - description: Relative spiral scan - name: rel_spiral - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: y_motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: x width of spiral - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_range - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: y width of spiral - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: y_range - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: Delta radius along the minor axis of the ellipse. - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: dr - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: Number of theta steps - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: nth - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '0.0' - default_pickled: 80 04 95 0a 00 00 00 00 00 00 00 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - rel_spiral_fermat: - description: Relative fermat spiral scan - name: rel_spiral_fermat - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: y_motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: x width of spiral - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_range - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: y width of spiral - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: y_range - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: delta radius - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: dr - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: radius gets divided by this - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: factor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '0.0' - default_pickled: 80 04 95 0a 00 00 00 00 00 00 00 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - rel_spiral_square: - description: Relative square spiral scan, centered around current (x, y) position. - name: rel_spiral_square - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: y_motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: x width of spiral - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_range - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: y width of spiral - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: y_range - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: number of x axis points - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_num - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: Number of y axis points. - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: y_num - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - relative_adaptive_scan: - description: Relative scan over one variable with adaptively tuned step size. - name: rel_adaptive_scan - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: starting position of motor - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: start - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: ending position of motor - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: stop - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: smallest step for fast-changing regions - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: min_step - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: largest step for slow-chaning regions - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: max_step - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: desired fractional change in detector signal between steps - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: target_delta - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '0.8' - default_pickled: 80 04 95 0a 00 00 00 00 00 00 00 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - relative_inner_product_scan: - description: null - name: relative_inner_product_scan - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: num - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: VAR_POSITIONAL - value: 2 - name: args - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - kind: - name: KEYWORD_ONLY - value: 3 - name: per_step - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - relative_list_scan: - description: Scan over one variable in steps relative to current position. - name: rel_list_scan - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: starting position of motor - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: start - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: ending position of motor - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: stop - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: number of steps - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: num - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - relative_outer_product_scan: - description: Scan over a mesh relative to current position. - name: rel_grid_scan - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: VAR_POSITIONAL - value: 2 - name: args - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - relative_scan: - description: Scan over one multi-motor trajectory relative to current position. - name: rel_scan - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: number of points - kind: - name: KEYWORD_ONLY - value: 3 - name: num - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - relative_spiral: - description: Relative spiral scan - name: rel_spiral - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: y_motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: x width of spiral - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_range - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: y width of spiral - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: y_range - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: Delta radius along the minor axis of the ellipse. - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: dr - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: Number of theta steps - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: nth - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '0.0' - default_pickled: 80 04 95 0a 00 00 00 00 00 00 00 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - relative_spiral_fermat: - description: Relative fermat spiral scan - name: rel_spiral_fermat - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: y_motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: x width of spiral - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_range - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: y width of spiral - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: y_range - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: delta radius - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: dr - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: radius gets divided by this - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: factor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '0.0' - default_pickled: 80 04 95 0a 00 00 00 00 00 00 00 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - remove_suspender: - description: Remove a suspender during a plan. - name: remove_suspender - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: The suspender to remove - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: suspender - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: Callable that returns an iterable of Msg objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: plan - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '1' - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - repeater: - description: Generate n chained copies of the messages from gen_func - name: repeater - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: total number of repetitions; if None, infinite - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: n - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: returns generator instance - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: gen_func - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: VAR_POSITIONAL - value: 2 - name: args - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: VAR_KEYWORD - value: 4 - name: kwargs - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: plan - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: sample - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - save: - description: Close a bundle of readings and emit a completed Event document. - name: save - parameters: [] - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: "msg : Msg\n Msg('save')" - scan: - description: Scan over one multi-motor trajectory. - name: scan - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: number of points - kind: - name: KEYWORD_ONLY - value: 3 - name: num - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - scan_nd: - description: Scan over an arbitrary N-dimensional trajectory. - name: scan_nd - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: cycler.Cycler object mapping movable interfaces to positions - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: cycler - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: step - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - simple_ct: - description: A minimal wrapper around count that adjusts exposure time. - name: simple_ct - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: dets - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: exposure - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - single_gen: - description: Turn a single message into a plan - name: single_gen - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: a single message - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: msg - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: seconds - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: time - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: y_motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: x center - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_start - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: y center - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: y_start - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: x width of spiral - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_range - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: y width of spiral - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: y_range - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: Delta radius along the minor axis of the ellipse. - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: dr - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: Number of theta steps - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: nth - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '0.0' - default_pickled: 80 04 95 0a 00 00 00 00 00 00 00 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - spiral_fermat: - description: Absolute fermat spiral scan, centered around (x_start, y_start) - name: spiral_fermat - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: y_motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: x center - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_start - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: y center - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: y_start - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: x width of spiral - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_range - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: y width of spiral - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: y_range - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: delta radius - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: dr - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: radius gets divided by this - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: factor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '0.0' - default_pickled: 80 04 95 0a 00 00 00 00 00 00 00 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - spiral_square: - description: Absolute square spiral scan, centered around (x_center, y_center) - name: spiral_square - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: y_motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: x center - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_center - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: y center - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: y_center - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: x width of spiral - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_range - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: y width of spiral - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: y_range - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: number of x axis points - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: x_num + name: VAR_POSITIONAL + value: 2 + name: args - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: Number of y axis points. + default: None + default_pickled: 80 04 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: POSITIONAL_OR_KEYWORD - value: 1 - name: y_num + name: KEYWORD_ONLY + value: 3 + name: snake_axes - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e default: None default_pickled: 80 04 4e 2e - description: 'hook for cutomizing action of inner loop (messages per step). + description: 'hook for customizing action of inner loop (messages per step). - See docstring of :func:`bluesky.plans.one_nd_step` (the default) for + See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) - details.' + for details.' kind: name: KEYWORD_ONLY value: 3 @@ -4728,89 +589,12 @@ existing_plans: annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - stage: - description: '''Stage'' a device (i.e., prepare it for use, ''arm'' it).' - name: stage - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: obj - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: "msg : Msg\n Msg('stage', obj)" - stop: - description: Stop a device. - name: stop - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: obj - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: 'msg : Msg' - subscribe: - description: Subscribe the stream of emitted documents. - name: subscribe - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: name - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: 'Expected signature: ``f(name, doc)`` where ``name`` is one of - the + rel_list_grid_scan: + description: 'Scan over a mesh; each motor is on an independent trajectory. Each + point is - strings above (''all, ''start'', ...) and ``doc`` is a dict' - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: func - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 + relative to the current position.' + name: rel_list_grid_scan parameters: - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 @@ -4818,84 +602,79 @@ existing_plans: default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: dets - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: motor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: fs - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: cryostream + name: detectors - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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: POSITIONAL_OR_KEYWORD - value: 1 - name: sample_name + name: VAR_POSITIONAL + value: 2 + name: args - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e + default: 'False' + default_pickled: 80 04 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: POSITIONAL_OR_KEYWORD - value: 1 - name: distances + name: KEYWORD_ONLY + value: 3 + name: snake_axes - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e default: None default_pickled: 80 04 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: POSITIONAL_OR_KEYWORD - value: 1 - name: temperatures + name: KEYWORD_ONLY + value: 3 + name: per_step - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e default: None default_pickled: 80 04 4e 2e + description: metadata kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: images_per_set + name: KEYWORD_ONLY + value: 3 + name: md returns: annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - trigger: - description: Trigger and acquisition. Optionally, wait for it to complete. - name: trigger + rel_list_scan: + description: Scan over one variable in steps relative to current position. + name: rel_list_scan parameters: - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 @@ -4903,151 +682,122 @@ existing_plans: default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: list of 'readable' objects kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: obj + name: detectors - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: identifier used by 'wait'; None by default + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 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: KEYWORD_ONLY - value: 3 - name: group + name: VAR_POSITIONAL + value: 2 + name: args - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: 'False' - default_pickled: 80 04 89 2e - description: 'If True, wait for completion before processing any more messages. + default: None + default_pickled: 80 04 4e 2e + description: 'hook for customizing action of inner loop (messages per step) - False by default.' + Expected signature: ``f(detectors, motor, step)``' kind: name: KEYWORD_ONLY value: 3 - name: wait - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: devices to trigger (if they have a trigger method) and then read - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: devices + name: per_step - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: primary - default_pickled: 80 04 95 0b 00 00 00 00 00 00 00 8c 07 70 72 69 6d 61 72 79 - 94 2e - description: 'event stream name, a convenient human-friendly identifier; default - - name is ''primary''' + default: None + default_pickled: 80 04 4e 2e + description: metadata kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: name + name: KEYWORD_ONLY + value: 3 + name: md returns: annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: exposure time at each reading from area detector in seconds - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: exposure + rel_scan: + description: Scan over one multi-motor trajectory relative to current position. + name: rel_scan + parameters: - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: delay between two consecutive readings from area detector in seconds + description: list of 'readable' objects kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: delay + name: detectors - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: total number of readings + 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: POSITIONAL_OR_KEYWORD - value: 1 + name: VAR_POSITIONAL + value: 2 + name: args + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: number of points + kind: + name: KEYWORD_ONLY + value: 3 name: num - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: 'True' - default_pickled: 80 04 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, + default: None + default_pickled: 80 04 4e 2e + description: 'hook for customizing action of inner loop (messages per step). - pass ``False`` to this argument. See ``Notes`` below for more + See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) - detailed information.' + for details.' kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: auto_shutter + name: KEYWORD_ONLY + value: 3 + name: per_step + - annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md returns: annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - tune_centroid: - description: 'plan: tune a motor to the centroid of signal(motor)' - name: tune_centroid + sample_aware_count: + description: A wrapper around count that tries to mimic xpdacq. + name: sample_aware_count parameters: - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 @@ -5055,100 +805,96 @@ existing_plans: default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + name: dets + - annotation: + annotation_pickled: 80 04 95 14 00 00 00 00 00 00 00 8c 08 62 75 69 6c 74 69 + 6e 73 94 8c 03 69 6e 74 94 93 94 2e default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: detector field whose output is to maximize kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: signal - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + name: sample_num + - annotation: + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 08 62 75 69 6c 74 69 + 6e 73 94 8c 05 66 6c 6f 61 74 94 93 94 2e default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: any 'settable' object (motor, temp controller, etc.) kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: motor + name: exposure - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: start of range + default: None + default_pickled: 80 04 4e 2e kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: start + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + scan: + description: Scan over one multi-motor trajectory. + name: scan + parameters: - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: 'end of range, note: start < stop' + description: list of 'readable' objects kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: stop + name: detectors - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: smallest step size to use. + 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: POSITIONAL_OR_KEYWORD - value: 1 - name: min_step + name: VAR_POSITIONAL + value: 2 + name: args - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '10' - default_pickled: 80 04 4b 0a 2e - description: number of points with each traversal, default = 10 + default: None + default_pickled: 80 04 4e 2e + description: number of points kind: - name: POSITIONAL_OR_KEYWORD - value: 1 + name: KEYWORD_ONLY + value: 3 name: num - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '3.0' - default_pickled: 80 04 95 0a 00 00 00 00 00 00 00 47 40 08 00 00 00 00 00 00 - 2e - description: 'used in calculating new range after each pass + default: None + default_pickled: 80 04 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) - note: step_factor > 1.0, default = 3' - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: step_factor - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: 'False' - default_pickled: 80 04 89 2e - description: if False (default), always scan from start to stop + for details.' kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: snake + name: KEYWORD_ONLY + value: 3 + name: per_step - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e @@ -5163,9 +909,9 @@ existing_plans: annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - tweak: - description: Move and motor and read a detector with an interactive prompt. - name: tweak + scan_nd: + description: Scan over an arbitrary N-dimensional trajectory. + name: scan_nd parameters: - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 @@ -5176,39 +922,32 @@ existing_plans: kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: detector - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: data field whose output is the focus of the adaptive tuning - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: target_field + name: detectors - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: cycler.Cycler object mapping movable interfaces to positions kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: motor + name: cycler - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: initial suggestion for step size + default: None + default_pickled: 80 04 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: POSITIONAL_OR_KEYWORD - value: 1 - name: step + name: KEYWORD_ONLY + value: 3 + name: per_step - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e @@ -5223,13 +962,9 @@ existing_plans: annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 + simple_ct: + description: A minimal wrapper around count that adjusts exposure time. + name: simple_ct parameters: - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 @@ -5250,27 +985,48 @@ existing_plans: kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: motor + name: exposure - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + default: None + default_pickled: 80 04 4e 2e kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: fs + name: KEYWORD_ONLY + value: 3 + name: md + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + sleep: + description: Tell the RunEngine to sleep, while asynchronously doing other processing. + name: sleep + parameters: - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: seconds kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: cryostream + name: time + returns: + annotation: '' + annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 + 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + description: "msg : Msg\n Msg('sleep', None, time)" + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e @@ -5280,7 +1036,7 @@ existing_plans: kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: sample_name + name: dets - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e @@ -5290,32 +1046,17 @@ existing_plans: kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: distances + name: motor - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e + default: '' + default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 + 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: images_per_set - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - unload_sample: - description: For robot. - name: unload_sample - parameters: [] - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - unmonitor: - description: Stop monitoring. - name: unmonitor - parameters: + name: fs - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e @@ -5325,16 +1066,7 @@ existing_plans: kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: obj - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: "msg : Msg\n Msg('unmonitor', obj)" - unstage: - description: '''Unstage'' a device (i.e., put it in standby, ''disarm'' it).' - name: unstage - parameters: + name: cryostream - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e @@ -5344,83 +1076,30 @@ existing_plans: kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: obj - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: "msg : Msg\n Msg('unstage', obj)" - unsubscribe: - description: Remove a subscription. - name: unsubscribe - parameters: + name: sample_name - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e default: '' default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: token returned by processing a 'subscribe' message kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: token - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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: + name: distances - annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e default: None default_pickled: 80 04 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: collection of asyncio.Future objects kind: name: POSITIONAL_OR_KEYWORD value: 1 - name: futures - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: passed through to ``asyncio.wait()`` - kind: - name: VAR_KEYWORD - value: 4 - name: kwargs + name: images_per_set returns: annotation: '' annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 From 0ae9e28eb93beeb00225da211ef182146c97c65c Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Mon, 1 Mar 2021 12:06:29 -0500 Subject: [PATCH 19/70] rapid development of sorensen power supply --- startup/12-sorensen.py | 367 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 367 insertions(+) create mode 100644 startup/12-sorensen.py diff --git a/startup/12-sorensen.py b/startup/12-sorensen.py new file mode 100644 index 0000000..fa8152d --- /dev/null +++ b/startup/12-sorensen.py @@ -0,0 +1,367 @@ +from ophyd import EpicsSignal +import numpy as np +import bluesky.plan_stubs as bps +import bluesky.preprocessors as bpp + + +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, path=Path("/tmp/sorensen_calibration.csv") +): + headers = [db[uid] for uid in uid_list] + headers = sorted(headers, key=lambda h: h.start["time"]) + + merged_table = pd.concat([h.table() for h in headers]) + merged_table["delta"] = ( + merged_table["time"] - merged_table["time"].iloc[0] + ).dt.total_seconds() + merged_table = merged_table.set_index(merged_table["delta"]) + + merged_table.to_csv(path) + 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") + + +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"] + + +def power_ramp_controlled( + min_power, max_power, xrd_sample_name, pdf_sample_name, exposure +): + ramp_uid = str(uuid.uuid4()) + xrd_sample = beamtime.samples[xrd_sample_name] + pdf_sample = beamtime.samples[pdf_sample_name] + + baseline_detectors = [ + lakeshore336, + ring_current, + sorensen850_manual, + beam_stop, + detector_motor, + ] + main_detectors = [pe1c, sorensen850_manual, lakeshore336] + + def collect_cycle(ramp_phase): + + yield from bps.mv(beam_stop, BEAMSTOP_POS_XRD, detector_motor, DETECTOR_POS_XRD) + yield from bpp.baseline_wrapper( + simple_ct( + main_detectors, + md={"ramp_uid": ramp_uid, "ramp_phase": ramp_phase, **xrd_sample}, + **kwargs, + exposure=exposure, + ), + baseline_detectors, + ) + + yield from bps.mv(beam_stop, BEAMSTOP_POS_PDF, detector_motor, DETECTOR_POS_PDF) + yield from bpp.baseline_wrapper( + simple_ct( + main_detectors, + md={"ramp_uid": ramp_uid, "ramp_phase": ramp_phase, **pdf_sample}, + **kwargs, + exposure=exposure, + ), + baseline_detectors, + ) + + yield from bps.mv(ramp_control.done, 0) + p = min_power + yield from bps.mv(sorensen850_manual, p) + + yield from collect_cycle("initial") + + 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, max_power) + + yield from bps.mv(sorensen850_manual, p) + yield from collect_cycle(ramp_phase) + done = yield from rd(ramp_control.done, default_value=True) + + yield from bps.collect_cycle("final") + From 64dfab5dc726e318700484c43080ebf48434a5ca Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Mon, 1 Mar 2021 12:07:02 -0500 Subject: [PATCH 20/70] ENH: add caproto IOC for ramp plan --- scripts/ramp_ioc.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 scripts/ramp_ioc.py diff --git a/scripts/ramp_ioc.py b/scripts/ramp_ioc.py new file mode 100644 index 0000000..cc16dab --- /dev/null +++ b/scripts/ramp_ioc.py @@ -0,0 +1,34 @@ +#!/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") + + +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) From b50c7d41333023fde2becc030c089ddfce5c0279 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Mon, 1 Mar 2021 23:52:38 -0500 Subject: [PATCH 21/70] tweak controlled ramp plan --- startup/12-sorensen.py | 86 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 70 insertions(+), 16 deletions(-) diff --git a/startup/12-sorensen.py b/startup/12-sorensen.py index fa8152d..2ec6f53 100644 --- a/startup/12-sorensen.py +++ b/startup/12-sorensen.py @@ -301,48 +301,100 @@ def rd(obj, *, default_value=0): return data["value"] +from dataclasses import dataclass + + +@dataclass(frozen=True) +class MotorPositions: + beamstop_x: float + beamstop_y: float + detector: float + + def power_ramp_controlled( - min_power, max_power, xrd_sample_name, pdf_sample_name, exposure + *, + min_power_pct: float = 0, + max_power_pct: float = 1, # max 100 + xrd_sample_name: str, + pdf_sample_name: str, + exposure: float, + beamtime, + n_per_step=1, + near_positions, + far_positions, ): 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, - sorensen850_manual, beam_stop, detector_motor, + Grid_X, + Grid_Y, + Grid_Z, ] - main_detectors = [pe1c, sorensen850_manual, lakeshore336] - - def collect_cycle(ramp_phase): - - yield from bps.mv(beam_stop, BEAMSTOP_POS_XRD, detector_motor, DETECTOR_POS_XRD) + main_detectors = [pe1c, sorensen850_manual] + + motor_snap_shot_for_dan = { + k: locals()[k].read() for k in ["Grid_X", "Grid_Y", "Grid_Z"] + } + + def collect_cycle(ramp_phase, delta=0): + # PDF measurement + yield from bps.mv( + beam_stop.x, + near_positions.beamstop_x, + beam_stop.y, + near_positions.beamstop_y, + detector_motor, + near_positions.detector, + ) yield from bpp.baseline_wrapper( simple_ct( main_detectors, - md={"ramp_uid": ramp_uid, "ramp_phase": ramp_phase, **xrd_sample}, - **kwargs, + md={ + "ramp_uid": ramp_uid, + "ramp_phase": ramp_phase, + **pdf_sample, + **motor_snap_shot_for_dan, + "delta": delta, + }, exposure=exposure, ), baseline_detectors, ) - - yield from bps.mv(beam_stop, BEAMSTOP_POS_PDF, detector_motor, DETECTOR_POS_PDF) + # XRD measurement + yield from bps.mv( + beam_stop.x, + far_positions.beamstop_x, + beam_stop.y, + far_positions.beamstop_y, + detector_motor, + far_positions.detector, + ) yield from bpp.baseline_wrapper( simple_ct( main_detectors, - md={"ramp_uid": ramp_uid, "ramp_phase": ramp_phase, **pdf_sample}, - **kwargs, + md={ + "ramp_uid": ramp_uid, + "ramp_phase": ramp_phase, + **xrd_sample, + **motor_snap_shot_for_dan, + }, exposure=exposure, ), baseline_detectors, ) yield from bps.mv(ramp_control.done, 0) - p = min_power + + p = min_power_pct yield from bps.mv(sorensen850_manual, p) yield from collect_cycle("initial") @@ -357,10 +409,12 @@ def collect_cycle(ramp_phase): else: ramp_phase = "holding" - p = np.clip(p + delta, min_power, max_power) + p = np.clip(p + delta, min_power_pct, max_power_pct) yield from bps.mv(sorensen850_manual, p) - yield from collect_cycle(ramp_phase) + + for j in range(n_per_step): + yield from collect_cycle(ramp_phase, delta) done = yield from rd(ramp_control.done, default_value=True) yield from bps.collect_cycle("final") From cf772221411bd0fc9c3d873b6efd4e6ec9d2bcc1 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 2 Mar 2021 11:23:23 -0500 Subject: [PATCH 22/70] MNT: make writing the CSV optional --- startup/12-sorensen.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/startup/12-sorensen.py b/startup/12-sorensen.py index 2ec6f53..3be5628 100644 --- a/startup/12-sorensen.py +++ b/startup/12-sorensen.py @@ -150,9 +150,7 @@ def write_single_calibration_data_to_csv_and_make_tom_sad(uid, path=Path(".")): return tbl -def write_calibration_data_to_csv_and_make_tom_sad( - uid_list, path=Path("/tmp/sorensen_calibration.csv") -): +def write_calibration_data_to_csv_and_make_tom_sad(uid_list, *, fname=None): headers = [db[uid] for uid in uid_list] headers = sorted(headers, key=lambda h: h.start["time"]) @@ -162,7 +160,8 @@ def write_calibration_data_to_csv_and_make_tom_sad( ).dt.total_seconds() merged_table = merged_table.set_index(merged_table["delta"]) - merged_table.to_csv(path) + if fname is not None: + merged_table.to_csv(fname) return merged_table From bb6a4214efb860127fefa08a9c85bb7e25679c1b Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 2 Mar 2021 11:23:41 -0500 Subject: [PATCH 23/70] FIX: the grid objects are in globals not locals --- startup/12-sorensen.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/startup/12-sorensen.py b/startup/12-sorensen.py index 3be5628..674a1d2 100644 --- a/startup/12-sorensen.py +++ b/startup/12-sorensen.py @@ -341,7 +341,7 @@ def power_ramp_controlled( main_detectors = [pe1c, sorensen850_manual] motor_snap_shot_for_dan = { - k: locals()[k].read() for k in ["Grid_X", "Grid_Y", "Grid_Z"] + k: globals()[k].read() for k in ["Grid_X", "Grid_Y", "Grid_Z"] } def collect_cycle(ramp_phase, delta=0): From 4b937bff2bb86b2ca7bbdd2c183d2cf9141fa312 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 2 Mar 2021 11:24:13 -0500 Subject: [PATCH 24/70] BUG: add ability to optionally write out a CSV of temperatures --- startup/12-sorensen.py | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/startup/12-sorensen.py b/startup/12-sorensen.py index 674a1d2..4402dda 100644 --- a/startup/12-sorensen.py +++ b/startup/12-sorensen.py @@ -2,8 +2,10 @@ 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 ): @@ -150,11 +152,13 @@ def write_single_calibration_data_to_csv_and_make_tom_sad(uid, path=Path(".")): return tbl -def write_calibration_data_to_csv_and_make_tom_sad(uid_list, *, fname=None): +def write_calibration_data_to_csv_and_make_tom_sad( + uid_list, *, fname=None, stream_name="primary" +): headers = [db[uid] for uid in uid_list] headers = sorted(headers, key=lambda h: h.start["time"]) - merged_table = pd.concat([h.table() for h in headers]) + merged_table = pd.concat([h.table(stream_name=stream_name) for h in headers]) merged_table["delta"] = ( merged_table["time"] - merged_table["time"].iloc[0] ).dt.total_seconds() @@ -321,6 +325,7 @@ def power_ramp_controlled( n_per_step=1, near_positions, far_positions, + diagostic_T_file=None, ): ramp_uid = str(uuid.uuid4()) xrd_sample = beamtime.samples[xrd_sample_name] @@ -354,7 +359,7 @@ def collect_cycle(ramp_phase, delta=0): detector_motor, near_positions.detector, ) - yield from bpp.baseline_wrapper( + pdf_uid = yield from bpp.baseline_wrapper( simple_ct( main_detectors, md={ @@ -377,7 +382,7 @@ def collect_cycle(ramp_phase, delta=0): detector_motor, far_positions.detector, ) - yield from bpp.baseline_wrapper( + xrd_uid = yield from bpp.baseline_wrapper( simple_ct( main_detectors, md={ @@ -390,13 +395,16 @@ def collect_cycle(ramp_phase, delta=0): ), baseline_detectors, ) + return [pdf_uid, xrd_uid] + + uids = [] yield from bps.mv(ramp_control.done, 0) p = min_power_pct yield from bps.mv(sorensen850_manual, p) - yield from collect_cycle("initial") + uids.append((yield from collect_cycle("initial"))) done = yield from rd(ramp_control.done, default_value=True) while not done: @@ -413,8 +421,12 @@ def collect_cycle(ramp_phase, delta=0): yield from bps.mv(sorensen850_manual, p) for j in range(n_per_step): - yield from collect_cycle(ramp_phase, delta) + uids.append((yield from collect_cycle(ramp_phase, delta))) + if diagostic_T_file is not None: + write_calibration_data_to_csv_and_make_tom_sad( + uids, fname=diagostic_T_file, stream_name="baseline" + ) done = yield from rd(ramp_control.done, default_value=True) - yield from bps.collect_cycle("final") - + uids.append((yield from bps.collect_cycle("final"))) + return uids From 5daa121b4adfd9d35d95dd198f731134a7ab8dad Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 10 Mar 2021 11:10:18 -0500 Subject: [PATCH 25/70] Collection of on-the-fly changes to thermo control --- startup/12-sorensen.py | 526 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 501 insertions(+), 25 deletions(-) diff --git a/startup/12-sorensen.py b/startup/12-sorensen.py index 4402dda..0022971 100644 --- a/startup/12-sorensen.py +++ b/startup/12-sorensen.py @@ -155,14 +155,16 @@ def write_single_calibration_data_to_csv_and_make_tom_sad(uid, path=Path(".")): def write_calibration_data_to_csv_and_make_tom_sad( uid_list, *, fname=None, stream_name="primary" ): - headers = [db[uid] for uid in uid_list] + 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]) - merged_table["delta"] = ( - merged_table["time"] - merged_table["time"].iloc[0] - ).dt.total_seconds() - merged_table = merged_table.set_index(merged_table["delta"]) + 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) @@ -206,6 +208,7 @@ def 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") @@ -314,19 +317,235 @@ class MotorPositions: 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, - beamtime, 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] @@ -342,6 +561,7 @@ def power_ramp_controlled( Grid_X, Grid_Y, Grid_Z, + sorensen850_manual, ] main_detectors = [pe1c, sorensen850_manual] @@ -351,6 +571,7 @@ def power_ramp_controlled( 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, @@ -373,42 +594,222 @@ def collect_cycle(ramp_phase, delta=0): ), baseline_detectors, ) - # XRD measurement + 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, - far_positions.beamstop_x, + near_positions.beamstop_x, beam_stop.y, - far_positions.beamstop_y, + near_positions.beamstop_y, detector_motor, - far_positions.detector, + near_positions.detector, ) - xrd_uid = yield from bpp.baseline_wrapper( + pdf_uid = yield from bpp.baseline_wrapper( simple_ct( main_detectors, md={ "ramp_uid": ramp_uid, "ramp_phase": ramp_phase, - **xrd_sample, + **pdf_sample, **motor_snap_shot_for_dan, + "delta": delta, }, exposure=exposure, ), baseline_detectors, ) - return [pdf_uid, xrd_uid] + 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 = [] - yield from bps.mv(ramp_control.done, 0) + p = start_power_pct - p = min_power_pct yield from bps.mv(sorensen850_manual, p) - uids.append((yield from collect_cycle("initial"))) + # 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) + 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: @@ -416,17 +817,92 @@ def collect_cycle(ramp_phase, delta=0): else: ramp_phase = "holding" - p = np.clip(p + delta, min_power_pct, max_power_pct) - + 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): - uids.append((yield from collect_cycle(ramp_phase, delta))) + 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( - uids, fname=diagostic_T_file, stream_name="baseline" + list(db(ramp_uid=ramp_uid)), + fname=diagostic_T_file, + stream_name="baseline", ) - done = yield from rd(ramp_control.done, default_value=True) + if p <= 0: + break - uids.append((yield from bps.collect_cycle("final"))) + 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 From db73d88ca748f13479337079dbb90bc06088f502 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 10 Mar 2021 11:12:08 -0500 Subject: [PATCH 26/70] formatting + changes db insertion --- startup/94-load.py | 66 ++++++++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/startup/94-load.py b/startup/94-load.py index 0c73de4..b282701 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,21 +83,25 @@ # 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(xrun.md) + +RE = MoreCustomizedRunEngine(None) +RE.md.update(xrun.md) # insert header to db, either simulated or real -xrun.subscribe(db.insert, 'all') +RE.subscribe(db.insert, "all") +RE.beamtime = bt From ff3ac6bf17af18034b6e1d131608cadff9bd0c10 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 10 Mar 2021 11:12:39 -0500 Subject: [PATCH 27/70] add flag to IOC to control xrd collection --- scripts/ramp_ioc.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/ramp_ioc.py b/scripts/ramp_ioc.py index cc16dab..7c077ec 100644 --- a/scripts/ramp_ioc.py +++ b/scripts/ramp_ioc.py @@ -24,6 +24,7 @@ class SimpleIOC(PVGroup): 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__": From 21860b908a46d224b58c6265ccdef95ffc4e921e Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 10 Mar 2021 11:13:15 -0500 Subject: [PATCH 28/70] HACK: overnight script to stop experiment after it melts --- scripts/robo_dan.py | 48 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 scripts/robo_dan.py 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) From 2934cd86f5e742198c663feeace859b9e316a547 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 10 Mar 2021 11:13:59 -0500 Subject: [PATCH 29/70] ignore vscode files --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) 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/ From 5daee8ac85934e5e51ef1c0e4091a1c3705cfd34 Mon Sep 17 00:00:00 2001 From: Maksim Rakitin Date: Fri, 19 Mar 2021 18:24:01 -0400 Subject: [PATCH 30/70] CI: collection-2021-1.2 --- azure-pipelines.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index e8faeec..709b3da 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -3,10 +3,12 @@ resources: - repository: templates type: github name: NSLS-II/profile-collection-ci - ref: refs/heads/main + # TODO: change it back to 'refs/heads/main' once + # https://github.com/NSLS-II/profile-collection-ci/pull/19 is merged. + ref: refs/heads/add-collection-2021-1.2 endpoint: github jobs: - - template: collection-2021-1.0.yml@templates + - template: collection-2021-1.2.yml@templates parameters: beamline_acronym: PDF From 038420f72ebc5a9847e36c01f7561f16ae888d38 Mon Sep 17 00:00:00 2001 From: Maksim Rakitin Date: Fri, 19 Mar 2021 18:28:12 -0400 Subject: [PATCH 31/70] Do not install xpdacq (already in the env) --- .ci/bl-specific.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.ci/bl-specific.sh b/.ci/bl-specific.sh index ea71d41..2813a0b 100644 --- a/.ci/bl-specific.sh +++ b/.ci/bl-specific.sh @@ -2,7 +2,8 @@ # cp -v <...> ~/.ipython/profile_${TEST_PROFILE}/ -conda install -y -c ${CONDA_CHANNEL_NAME} xpdacq +# xpdacq is already installed in the 'collection-2021-1.2' conda env. +# conda install -y -c ${CONDA_CHANNEL_NAME} xpdacq mkdir -v -p ~/.config/acq/ mkdir -v -p ~/user_data/config_base/yml/ From 173489ea73d5037c0ff7f56ceb9eda9b59a382a7 Mon Sep 17 00:00:00 2001 From: Maksim Rakitin Date: Fri, 19 Mar 2021 18:40:19 -0400 Subject: [PATCH 32/70] Run tests for both collection-2021-1.0/1.2 --- .ci/bl-specific.sh | 4 +++- azure-pipelines.yml | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.ci/bl-specific.sh b/.ci/bl-specific.sh index 2813a0b..134b8a4 100644 --- a/.ci/bl-specific.sh +++ b/.ci/bl-specific.sh @@ -3,7 +3,9 @@ # cp -v <...> ~/.ipython/profile_${TEST_PROFILE}/ # xpdacq is already installed in the 'collection-2021-1.2' conda env. -# conda install -y -c ${CONDA_CHANNEL_NAME} xpdacq +if [ "$CONDA_ENV_NAME" == "collection-2021-1.0" ]; then + conda install -y -c ${CONDA_CHANNEL_NAME} xpdacq +fi mkdir -v -p ~/.config/acq/ mkdir -v -p ~/user_data/config_base/yml/ diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 709b3da..e6fe1d5 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -9,6 +9,9 @@ resources: endpoint: github jobs: + - template: collection-2021-1.0.yml@templates + parameters: + beamline_acronym: PDF - template: collection-2021-1.2.yml@templates parameters: beamline_acronym: PDF From 261e535a28c2b6a9719026934b39d236ed17793a Mon Sep 17 00:00:00 2001 From: Maksim Rakitin Date: Tue, 23 Mar 2021 10:21:38 -0400 Subject: [PATCH 33/70] Use collection-2021-1.2 from main --- azure-pipelines.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index e6fe1d5..cc97932 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -3,9 +3,7 @@ resources: - repository: templates type: github name: NSLS-II/profile-collection-ci - # TODO: change it back to 'refs/heads/main' once - # https://github.com/NSLS-II/profile-collection-ci/pull/19 is merged. - ref: refs/heads/add-collection-2021-1.2 + ref: refs/heads/main endpoint: github jobs: From 7473d51bf89647d8b3f44ff3e32d9d6b3915cb01 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 7 Apr 2021 13:30:57 -0400 Subject: [PATCH 34/70] remove suspenders --- startup/94-load.py | 1 + 1 file changed, 1 insertion(+) diff --git a/startup/94-load.py b/startup/94-load.py index b282701..a16c490 100644 --- a/startup/94-load.py +++ b/startup/94-load.py @@ -105,3 +105,4 @@ def __call__(self, plan, *args, **kwargs): # insert header to db, either simulated or real RE.subscribe(db.insert, "all") RE.beamtime = bt +RE.clear_suspenders() From b3fff96e86918b62169c59f7c9500c348225f578 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 7 Apr 2021 13:31:30 -0400 Subject: [PATCH 35/70] Add plans for demo --- startup/99-demo_plans.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 startup/99-demo_plans.py diff --git a/startup/99-demo_plans.py b/startup/99-demo_plans.py new file mode 100644 index 0000000..9af5956 --- /dev/null +++ b/startup/99-demo_plans.py @@ -0,0 +1,23 @@ +from dataclasses import dataclass +import bluesky.plan_stubs as bps + + +def move_det(x: float, y: float, z: float): + yield from bps.mv(Det_1_X, x, Det_2_y, y, Det_1_Z, z) + + +@dataclass +class SamplePos: + x: float + y: float + + +SAMPLE_POSITONS = { + # 'a': SamplePos(0, 0), +} + + +def move_to_sample(name: str): + target_pos = SAMPLE_POSITONS[name] + yield from bps.mv(Grid_X, target_pos.x, Grid_Y, target_pos.y) + From d8ebcdece5d4447e4a12d401c3b5f1ec3148b55c Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 7 Apr 2021 13:31:58 -0400 Subject: [PATCH 36/70] Regenerate list of known plans + use existing filtering --- startup/existing_plans_and_devices.yaml | 6220 ++++++++++++++++++++--- startup/user_group_permissions.yaml | 3 +- 2 files changed, 5594 insertions(+), 629 deletions(-) diff --git a/startup/existing_plans_and_devices.yaml b/startup/existing_plans_and_devices.yaml index 765b629..b980c82 100644 --- a/startup/existing_plans_and_devices.yaml +++ b/startup/existing_plans_and_devices.yaml @@ -1,394 +1,401 @@ +# 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: - count: - description: Take one or more readings from detectors. - name: count + Tlist: + description: Collect data over a list of user-specific temperatures + name: Tlist parameters: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects + 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: detectors + name: dets - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '1' - default_pickled: 80 04 4b 01 2e - description: 'number of readings to take; default is 1 - - - If None, capture data until canceled' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + 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: num + name: exposure - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: Time delay in seconds between successive readings; default is 0. + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + 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: delay - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 + name: T_list - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata + annotation_pickled: 80 03 63 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: md + name: per_step returns: annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - ct: - description: Take one reading from area detector with given exposure time - name: ct + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: 'list of ''readable'' objects. default to area detector + 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 - linked to xpdAcq.' + controller and area detector linked to xpdAcq.' kind: name: POSITIONAL_OR_KEYWORD value: 1 name: dets - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: total time of exposrue in seconds + 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 - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - grid_scan: - description: Scan over a mesh; each motor is on an independent trajectory. - name: grid_scan - parameters: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects + 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: detectors + name: Tstart - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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: VAR_POSITIONAL - value: 2 - name: args + name: POSITIONAL_OR_KEYWORD + value: 1 + name: Tstop - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: 'which axes should be snaked, either ``False`` (do not snake any - axes), + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + 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. - ``True`` (snake all axes) or a list of axes to snake. "Snaking" an axis + Tramp uses this for opening and closing the shutter at each - is defined as following snake-like, winding trajectory instead of a + temperature acquisition. - simple left-to-right trajectory. The elements of the list are motors - that are listed in `args`. The list must not contain the slowest + Default behavior: - (first) motor, since it can''t be snaked.' - kind: - name: KEYWORD_ONLY - value: 3 - name: snake_axes - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: 'hook for customizing action of inner loop (messages per step). + `` open shutter - collect data - close shutter `` - See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) - for details.' + 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 - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata - kind: - name: KEYWORD_ONLY - value: 3 - name: md returns: annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - inner_product_scan: - description: null - name: inner_product_scan + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - kind: - name: POSITIONAL_OR_KEYWORD - value: 1 - name: detectors - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 + name: obj - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - kind: - name: KEYWORD_ONLY - value: 3 - name: per_step - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 4e 2e + default_pickled: 80 03 4e 2e + description: identifier used by 'wait' kind: name: KEYWORD_ONLY value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - mov: - description: Move one or more devices to a setpoint. Wait for all to complete. - name: mv - parameters: - - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: device1, value1, device2, value2, ... - kind: - name: VAR_POSITIONAL - value: 2 - name: args + name: group - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: Used to mark these as a unit to be waited on. + 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: group + name: wait - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 @@ -396,116 +403,189 @@ existing_plans: name: kwargs returns: annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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' - movr: - description: Move one or more devices to a relative setpoint. Wait for all to - complete. - name: mvr + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: device1, value1, device2, value2, ... + 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 + name: POSITIONAL_OR_KEYWORD + value: 1 + name: dets - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: Used to mark these as a unit to be waited on. + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + 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: group + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motors - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: passed to obj.set() + 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 + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: 'msg : Msg' - outer_product_scan: - description: Scan over a mesh; each motor is on an independent trajectory. - name: grid_scan + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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: VAR_POSITIONAL - value: 2 - name: args + name: POSITIONAL_OR_KEYWORD + value: 1 + name: target_field - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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.' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + 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: KEYWORD_ONLY - value: 3 - name: snake_axes + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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.' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + 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: KEYWORD_ONLY - value: 3 - name: per_step + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 4e 2e + default_pickled: 80 03 4e 2e description: metadata kind: name: KEYWORD_ONLY @@ -513,73 +593,411 @@ existing_plans: name: md returns: annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - rel_grid_scan: - description: Scan over a mesh relative to current position. - name: rel_grid_scan + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects + 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 + name: power_supply - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 + name: POSITIONAL_OR_KEYWORD + value: 1 + name: thermo - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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 + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + 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 - simple left-to-right trajectory. The elements of the list are motors + 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, - that are listed in `args`. The list must not contain the slowest + 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. - (first) motor, since it can''t be snaked.' + 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: snake_axes + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 4e 2e - description: 'hook for customizing action of inner loop (messages per step). + 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. - See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) + 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 - for details.' + + 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_step + name: per_shot - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 4e 2e + default_pickled: 80 03 4e 2e description: metadata kind: name: KEYWORD_ONLY @@ -587,47 +1005,140 @@ existing_plans: name: md returns: annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - rel_list_grid_scan: - description: 'Scan over a mesh; each motor is on an independent trajectory. Each - point is + 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 - relative to the current position.' - name: rel_list_grid_scan + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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.)." + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: 'False' - default_pickled: 80 04 89 2e + 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), @@ -635,7 +1146,7 @@ existing_plans: is defined as following snake-like, winding trajectory instead of a - simple left-to-right trajectory.The elements of the list are motors + simple left-to-right trajectory. The elements of the list are motors that are listed in `args`. The list must not contain the slowest @@ -645,10 +1156,10 @@ existing_plans: value: 3 name: snake_axes - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 4e 2e + 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) @@ -659,10 +1170,10 @@ existing_plans: value: 3 name: per_step - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 4e 2e + default_pickled: 80 03 4e 2e description: metadata kind: name: KEYWORD_ONLY @@ -670,289 +1181,4622 @@ existing_plans: name: md returns: annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - rel_list_scan: - description: Scan over one variable in steps relative to current position. - name: rel_list_scan + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects + 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 + name: cryostream - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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." + 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 + name: POSITIONAL_OR_KEYWORD + value: 1 + name: sample_name - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 4e 2e - description: 'hook for customizing action of inner loop (messages per step) - - Expected signature: ``f(detectors, motor, step)``' + default_pickled: 80 03 4e 2e kind: - name: KEYWORD_ONLY - value: 3 - name: per_step + name: POSITIONAL_OR_KEYWORD + value: 1 + name: distances - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 4e 2e - description: metadata + default_pickled: 80 03 4e 2e kind: - name: KEYWORD_ONLY - value: 3 - name: md + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - rel_scan: - description: Scan over one multi-motor trajectory relative to current position. - name: rel_scan + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: list of 'readable' objects + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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 + name: obj - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 4e 2e - description: number of points + default_pickled: 80 03 4e 2e + description: identifier used by 'wait'; None by default kind: name: KEYWORD_ONLY value: 3 - name: num + name: group - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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) + 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. - for details.' + False by default.' kind: name: KEYWORD_ONLY value: 3 - name: per_step + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + 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: KEYWORD_ONLY - value: 3 - name: md + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - sample_aware_count: - description: A wrapper around count that tries to mimic xpdacq. - name: sample_aware_count + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 95 14 00 00 00 00 00 00 00 8c 08 62 75 69 6c 74 69 - 6e 73 94 8c 03 69 6e 74 94 93 94 2e + - annotation: '' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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: sample_num - - annotation: - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 08 62 75 69 6c 74 69 - 6e 73 94 8c 05 66 6c 6f 61 74 94 93 94 2e + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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: exposure + name: delay - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + 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: KEYWORD_ONLY - value: 3 - name: md + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - scan: - description: Scan over one multi-motor trajectory. - name: scan + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 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.)" + 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: VAR_POSITIONAL - value: 2 - name: args + name: POSITIONAL_OR_KEYWORD + value: 1 + name: signal - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: number of points + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + 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: KEYWORD_ONLY - value: 3 - name: num + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 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.' + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + 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: KEYWORD_ONLY - value: 3 - name: per_step + name: POSITIONAL_OR_KEYWORD + value: 1 + name: start - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: metadata + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + 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: KEYWORD_ONLY - value: 3 - name: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - scan_nd: - description: Scan over an arbitrary N-dimensional trajectory. - name: scan_nd - parameters: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: stop - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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: detectors + name: min_step - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: cycler.Cycler object mapping movable interfaces to positions + 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: cycler + name: num - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e - description: 'hook for customizing action of inner loop (messages per step). + 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 - See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) - for details.' + note: step_factor > 1.0, default = 3' kind: - name: KEYWORD_ONLY - value: 3 - name: per_step + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 4e 2e + default_pickled: 80 03 4e 2e description: metadata kind: name: KEYWORD_ONLY @@ -960,65 +5804,68 @@ existing_plans: name: md returns: annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - simple_ct: - description: A minimal wrapper around count that adjusts exposure time. - name: simple_ct + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 + name: detector - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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: exposure + name: target_field - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - default: None - default_pickled: 80 04 4e 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e + 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: md - returns: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - sleep: - description: Tell the RunEngine to sleep, while asynchronously doing other processing. - name: sleep - parameters: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: seconds + 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: time + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e - description: "msg : Msg\n Msg('sleep', None, time)" + 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\ @@ -1028,121 +5875,238 @@ existing_plans: name: two_distance_plan parameters: - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 4e 2e + default_pickled: 80 03 4e 2e kind: name: POSITIONAL_OR_KEYWORD value: 1 name: images_per_set returns: annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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``' @@ -1151,11 +6115,11 @@ existing_plans: value: 1 name: start - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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``' @@ -1164,20 +6128,20 @@ existing_plans: value: 1 name: stop - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + annotation_pickled: 80 03 63 69 6e 73 70 65 63 74 0a 5f 65 6d 70 74 79 0a 71 + 00 2e default: '' - default_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 74 - 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 4e 2e + 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) @@ -1188,10 +6152,10 @@ existing_plans: value: 3 name: per_step - annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 04 4e 2e + default_pickled: 80 03 4e 2e description: metadata kind: name: KEYWORD_ONLY @@ -1199,5 +6163,5 @@ existing_plans: name: md returns: annotation: '' - annotation_pickled: 80 04 95 16 00 00 00 00 00 00 00 8c 07 69 6e 73 70 65 63 - 74 94 8c 06 5f 65 6d 70 74 79 94 93 94 2e + 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 index e225b6e..c7e9be2 100644 --- a/startup/user_group_permissions.yaml +++ b/startup/user_group_permissions.yaml @@ -1,7 +1,8 @@ user_groups: root: # The group includes all available plan and devices allowed_plans: - - null # Allow all + - "^move_det$" # Allow all + - "^simple_ct$" forbidden_plans: - "$_" # All plans with names starting with '_' allowed_devices: From bc0832915b5099e4eddf035905cd7742637de83d Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 7 Apr 2021 14:39:03 -0400 Subject: [PATCH 37/70] STY: fix indentation of comments --- startup/12-sorensen.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/startup/12-sorensen.py b/startup/12-sorensen.py index 0022971..ec1adba 100644 --- a/startup/12-sorensen.py +++ b/startup/12-sorensen.py @@ -349,7 +349,7 @@ def power_ramp_controlled( 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 @@ -373,7 +373,7 @@ def power_ramp_controlled( 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] @@ -523,7 +523,7 @@ def power_ramp_sequence( 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 @@ -545,7 +545,7 @@ def power_ramp_sequence( 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] @@ -693,7 +693,7 @@ def power_ramp_T_threshold( 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 @@ -713,7 +713,7 @@ def power_ramp_T_threshold( 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] From e30ad53b9aa38ca9bbe44defb8eae3acb10c4555 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 7 Apr 2021 16:34:46 -0400 Subject: [PATCH 38/70] ENH: skeletons of the plans we need for the demo --- startup/96-dan_functions.py | 11 +---- startup/99-demo_plans.py | 68 ++++++++++++++++++++++++++--- startup/user_group_permissions.yaml | 9 ++-- 3 files changed, 69 insertions(+), 19 deletions(-) diff --git a/startup/96-dan_functions.py b/startup/96-dan_functions.py index 650df4c..e64286f 100644 --- a/startup/96-dan_functions.py +++ b/startup/96-dan_functions.py @@ -9,7 +9,7 @@ from bluesky.callbacks import LiveTable import uuid import numpy as np -from xpdacq.xpdacq import translate_to_sample + ############## @@ -671,12 +671,3 @@ def simple_ct(dets, exposure, *, md=None): plan = bp.count(dets, md=_md) plan = bpp.subs_wrapper(plan, LiveTable([])) return (yield from plan) - -def sample_aware_count(dets, 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(dets, exposure, md=_md) diff --git a/startup/99-demo_plans.py b/startup/99-demo_plans.py index 9af5956..abfbc81 100644 --- a/startup/99-demo_plans.py +++ b/startup/99-demo_plans.py @@ -1,23 +1,79 @@ from dataclasses import dataclass import bluesky.plan_stubs as bps +from xpdacq.xpdacq import translate_to_sample -def move_det(x: float, y: float, z: float): - yield from bps.mv(Det_1_X, x, Det_2_y, y, Det_1_Z, z) - - -@dataclass +@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) + + """ + yield from bps.mv(Det_1_X, x, Det_1_Y, y, Det_1_Z, z) + + +def move_sample(x: float = None, y: float = None, z: float = None): + """ + Move the detector to the given (x, y, z) + + """ + yield from bps.mv(Grid_X, x, Grid_Y, y, Grid_Z, z) + def move_to_sample(name: str): + sample_x = Grid_X + sample_y = Grid_Y target_pos = SAMPLE_POSITONS[name] - yield from bps.mv(Grid_X, target_pos.x, Grid_Y, target_pos.y) + 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(dets, 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(dets, exposure, md=_md) diff --git a/startup/user_group_permissions.yaml b/startup/user_group_permissions.yaml index c7e9be2..b951498 100644 --- a/startup/user_group_permissions.yaml +++ b/startup/user_group_permissions.yaml @@ -1,8 +1,12 @@ user_groups: root: # The group includes all available plan and devices allowed_plans: - - "^move_det$" # Allow all - - "^simple_ct$" + - "^move_to_sample$" + - "^move_to_det_config$" + - "^sample_aware_count$" + - "^move_det$" + - "^move_sample$" + forbidden_plans: - "$_" # All plans with names starting with '_' allowed_devices: @@ -31,4 +35,3 @@ user_groups: forbidden_devices: - "^det[3-5]$" # Use regular expression patterns - "^motor\\d+$" - From daa3f2cece1c60d7b2b9432ffb519f9a3e4a14ab Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 7 Apr 2021 16:37:22 -0400 Subject: [PATCH 39/70] FIX: make positions actually optional --- startup/99-demo_plans.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/startup/99-demo_plans.py b/startup/99-demo_plans.py index abfbc81..088ca54 100644 --- a/startup/99-demo_plans.py +++ b/startup/99-demo_plans.py @@ -1,6 +1,7 @@ from dataclasses import dataclass import bluesky.plan_stubs as bps from xpdacq.xpdacq import translate_to_sample +import itertools @dataclass(frozen=True) @@ -35,7 +36,14 @@ def move_det(x: float = None, y: float = None, z: float = None): Move the detector to the given (x, y, z) """ - yield from bps.mv(Det_1_X, x, Det_1_Y, y, Det_1_Z, 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): @@ -43,7 +51,12 @@ def move_sample(x: float = None, y: float = None, z: float = None): Move the detector to the given (x, y, z) """ - yield from bps.mv(Grid_X, x, Grid_Y, y, Grid_Z, 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): From 755714f897624dcd93af830d99c3d92852ed9cbb Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Fri, 9 Apr 2021 14:43:10 -0400 Subject: [PATCH 40/70] MNT: simplify signature of sample_aware_count Assume pe1c is the detector we are using --- startup/99-demo_plans.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/startup/99-demo_plans.py b/startup/99-demo_plans.py index 088ca54..77eb3ed 100644 --- a/startup/99-demo_plans.py +++ b/startup/99-demo_plans.py @@ -82,11 +82,11 @@ def move_to_det_config(name: str): ) -def sample_aware_count(dets, sample_num: int, exposure: float, *, md=None): +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(dets, exposure, md=_md) + yield from simple_ct([pe1c], exposure, md=_md) From 5706800a75a84ed0ed486488685b05a228c2d7f3 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 1 Dec 2021 13:22:54 -0500 Subject: [PATCH 41/70] MNT: remove plans that QS can not describe plans as defaults does not work --- startup/00-base.py | 3 +++ startup/94-load.py | 3 +++ 2 files changed, 6 insertions(+) diff --git a/startup/00-base.py b/startup/00-base.py index 69cf2b9..643c415 100644 --- a/startup/00-base.py +++ b/startup/00-base.py @@ -67,6 +67,9 @@ def wait_for_connection(self, timeout=DEFAULT_CONNECTION_TIMEOUT): mpl=False, # publish_documents_to_kafka=True ) +del one_1d_step +del one_nd_step +del one_shot from pathlib import Path diff --git a/startup/94-load.py b/startup/94-load.py index e1898f8..b8242d7 100644 --- a/startup/94-load.py +++ b/startup/94-load.py @@ -106,3 +106,6 @@ def __call__(self, plan, *args, **kwargs): RE.subscribe(db.insert, "all") RE.beamtime = bt RE.clear_suspenders() + +del Tramp +del Tlist From 9eb87fc190d9afe12a6f7777746ddf40d54c1013 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 1 Dec 2021 13:24:14 -0500 Subject: [PATCH 42/70] ENH: add sample aware move + ct plan --- startup/99-demo_plans.py | 102 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/startup/99-demo_plans.py b/startup/99-demo_plans.py index 77eb3ed..688e87b 100644 --- a/startup/99-demo_plans.py +++ b/startup/99-demo_plans.py @@ -90,3 +90,105 @@ def sample_aware_count(sample_num: int, exposure: float, *, md=None): _md = translate_to_sample(bt, sample_num) _md.update(md or {}) yield from simple_ct([pe1c], exposure, md=_md) + + +fake_db = { + 0: { + "xpdacq_number": 0, + "detector_position": "far", + "jog_start": 936.0 - 0.0, + "jog_stop": 936.0 + 0.0, + "x": 45.26912, + } +} + + +def _df_to_fake_db(df): + key_map = { + "xpdacq_number": "xpdacq_name_num", + "x": "xpos", + "jog_start": "ymin", + "job_stop": "ymax", + "detector_position": "det_pos", + } + + return { + ix: {dest: r[src] for dest, src in key_map.items()} for ix, r in df.iterrows() + } + + +def _refresh_sample_database() -> dict: + # target = '/nsls2/data/pdf/legacy/processed/xpdacq_data/user_data_Purdy_Fall2021_Brackets_307061_4b04ec0b_2021-10-11-0917/my_df2.xlsx' + # return _df_to_fake_db(pd.read_excel(target)) + return fake_db + + +def _pdf_count( + sample_number: str, + exposure_time: float, + *, + sample_db: dict, + z_for_move: float, + z_for_data: float, + md: dict, + # detectors + dets: list, + # motors + beam_stop: Device, + detector_motor: EpicsMotor, + sample_x: EpicsMotor, + sample_y: EpicsMotor, + sample_z: EpicsMotor, + bt, +): + # sample_db = _refresh_sample_database() + sample_info = sample_db[sample_number] + _md = translate_to_sample(bt, sample_info["xpdacq_number"]) + _md["sample_info"] = sample_info + _md.update(md or {}) + + target_pos = DETECTOR_POSITIONS[sample_info["detector_position"]] + yield from bps.mv(sample_z, z_for_move) + yield from bps.mv( + # beamstop and detector + # TODO make beamstop optional + beam_stop.x, + target_pos.beamstop_x, + beam_stop.y, + target_pos.beamstop_y, + detector_motor, + target_pos.detector, + # sample position + sample_x, + sample_info["x"], + sample_y, + sample_info["jog_start"], + ) + yield from bps.mv(sample_z, z_for_data) + yield from rocking_ct( + dets, + exposure_time, + sample_y, + sample_info["jog_start"], + sample_info["jog_stop"], + md=_md, + ) + + +def pdf_count(sample_number: int, exposure_time: float, *, md: dict = {}): + yield from _pdf_count( + sample_number=sample_number, + exposure_time=exposure_time, + sample_db=_refresh_sample_database(), + z_for_data=909.83, + z_for_move=909.83 + 15.0, + md=md, + # + beam_stop=BStop1, + detector_motor=Det_1_Z, + sample_y=Grid_Y, + sample_x=broadside45_shifter, + sample_z=Grid_Z, + bt=bt, + dets=[pe1c], + ) From a2d0cb3086f31b1bcb608adfd904447a1f587b4c Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 1 Dec 2021 13:24:39 -0500 Subject: [PATCH 43/70] ENH: update QS config with new plans --- startup/existing_plans_and_devices.yaml | 5138 ++++++++--------------- startup/user_group_permissions.yaml | 1 + 2 files changed, 1671 insertions(+), 3468 deletions(-) diff --git a/startup/existing_plans_and_devices.yaml b/startup/existing_plans_and_devices.yaml index b980c82..7616510 100644 --- a/startup/existing_plans_and_devices.yaml +++ b/startup/existing_plans_and_devices.yaml @@ -1,388 +1,910 @@ # This file is automatically generated. Edit at your own risk. existing_devices: + Analyzer: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + AreaDetector: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + AreaDetectorCam: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + AtSetpoint: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + AttributeSignal: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins BStop1: classname: BeamStop + is_flyable: false is_movable: false + is_readable: true module: BStop2: classname: BeamStop + is_flyable: false is_movable: false + is_readable: true module: + BeamStop: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + CS700TemperatureController: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + CryoStat1: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + CryoStat2: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + CryoStream: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + DerivedSignal: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins Det_1_X: classname: EpicsMotor + is_flyable: false is_movable: true + is_readable: true module: ophyd.epics_motor Det_1_Y: classname: EpicsMotor + is_flyable: false is_movable: true + is_readable: true module: ophyd.epics_motor Det_1_Z: classname: EpicsMotor + is_flyable: false is_movable: true + is_readable: true module: ophyd.epics_motor Det_2_X: classname: EpicsMotor + is_flyable: false is_movable: true + is_readable: true module: ophyd.epics_motor Det_2_Y: classname: EpicsMotor + is_flyable: false is_movable: true + is_readable: true module: ophyd.epics_motor Det_2_Z: classname: EpicsMotor + is_flyable: false + is_movable: true + is_readable: true + module: ophyd.epics_motor + DetectorBase: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + Device: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + ECS: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + ECS_An_th: + classname: EpicsMotor + is_flyable: false is_movable: true + is_readable: true module: ophyd.epics_motor ECS_An_tth: classname: EpicsMotor + is_flyable: false is_movable: true + is_readable: true module: ophyd.epics_motor ECS_Sam_tth: classname: EpicsMotor + is_flyable: false is_movable: true + is_readable: true module: ophyd.epics_motor + ECS_det1: + classname: EpicsSignalRO + is_flyable: false + is_movable: true + is_readable: true + module: ophyd.signal ECS_laser_foil_filter: classname: ECS + is_flyable: false is_movable: false + is_readable: true module: ECS_sample_environment: classname: SampleEnvironment + is_flyable: false is_movable: false + is_readable: true module: ECS_tel_guide: classname: EpicsMotor + is_flyable: false is_movable: true + is_readable: true module: ophyd.epics_motor + EpicsMotor: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + EpicsSignal: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + EpicsSignalBase: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + EpicsSignalPositioner: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + EpicsSignalRO: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + EpicsSignalWithRBV: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + Eurotherm: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + FilterBank: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + FilterBankTwoButtonShutter: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins Grid_X: classname: EpicsMotor + is_flyable: false is_movable: true + is_readable: true module: ophyd.epics_motor Grid_Y: classname: EpicsMotor + is_flyable: false is_movable: true + is_readable: true module: ophyd.epics_motor Grid_Z: classname: EpicsMotor + is_flyable: false is_movable: true + is_readable: true module: ophyd.epics_motor + HDF5Plugin: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + ImagePlugin: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + Lakeshore336: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + Lakeshore336Channel: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + Lakeshore336Setpoint: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + Linkam: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + LinkamFurnace: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + Magnet: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + Mirror: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins Mirror_VFM: classname: Mirror + is_flyable: false is_movable: false + is_readable: true module: + OCMTable: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins OCM_table: classname: OCMTable + is_flyable: false is_movable: false + is_readable: true module: + OmniaDetector: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + OpticsTableADC: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + PDFFastShutter: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + PDFShutter: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + PVPositioner: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + PVPositionerPC: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + ParnoidEpicsSignal: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + PerkinElmerContinuous1: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + PerkinElmerContinuous2: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + PerkinElmerDetector: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + PerkinElmerMulti1: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + PerkinElmerMulti2: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + PerkinElmerStandard1: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + PerkinElmerStandard2: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + PilatusDetector: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + PilatusDetectorCam: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + PilatusDetectorCamV33: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + PilatusV33: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + ProcessPlugin: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + ProsilicaDetector: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + RGA: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + ROIPlugin: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + RampControl: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + SampleEnvironment: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + SavedImageSignal: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + SideBounceMono: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + Signal: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + Slits: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + SpinnerGoniohead: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins Spinnergo_Ry: classname: EpicsMotor + is_flyable: false is_movable: true + is_readable: true module: ophyd.epics_motor Spinnergo_X: classname: EpicsMotor + is_flyable: false is_movable: true + is_readable: true module: ophyd.epics_motor Spinnergo_Y: classname: EpicsMotor + is_flyable: false is_movable: true + is_readable: true module: ophyd.epics_motor Spinnergo_Z: classname: EpicsMotor + is_flyable: false is_movable: true + is_readable: true module: ophyd.epics_motor + StandardProsilica: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + StandardProsilicaWithTIFF: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + StatsPlugin: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + StatsPluginV33: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + SynSignal: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + TIFFPlugin: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + TIFFPluginEnsuredOff: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + TIFFPluginWithFileStore: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins Tomo_spinner: classname: EpicsMotor + is_flyable: false is_movable: true + is_readable: true module: ophyd.epics_motor + TransformPlugin: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + TwoButtonShutter: + classname: type + is_flyable: false + is_movable: true + is_readable: true + module: builtins + XPDHDF5Plugin: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + XPDPerkinElmer: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + XPDPerkinElmer1: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + XPDPerkinElmer2: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins + XPDTIFFPlugin: + classname: type + is_flyable: false + is_movable: false + is_readable: true + module: builtins XPD_shutter: classname: PDFFastShutter + is_flyable: false is_movable: true + is_readable: true module: analyzer_goniohead: classname: Analyzer + is_flyable: false is_movable: false + is_readable: true module: bdm_slits: classname: Slits + is_flyable: false is_movable: false + is_readable: true module: + broadside45_shifter: + classname: EpicsMotor + is_flyable: false + is_movable: true + is_readable: true + module: ophyd.epics_motor cryostat1: classname: CryoStat1 + is_flyable: false is_movable: true + is_readable: true module: cryostat2: classname: CryoStat2 + is_flyable: false is_movable: true + is_readable: true module: cryostream: classname: CryoStream + is_flyable: false + is_movable: true + is_readable: true + module: + eurotherm: + classname: Eurotherm + is_flyable: false is_movable: true + is_readable: true module: + eurovolt: + classname: EpicsSignal + is_flyable: false + is_movable: true + is_readable: true + module: ophyd.signal fb: classname: FilterBank + is_flyable: false is_movable: false + is_readable: true module: fb_two_button_shutters: classname: FilterBankTwoButtonShutter + is_flyable: false is_movable: false + is_readable: true module: fs: classname: PDFFastShutter + is_flyable: false + is_movable: true + is_readable: true + module: + hotairblower: + classname: Eurotherm + is_flyable: false is_movable: true + is_readable: true module: lakeshore336: classname: Lakeshore336 + is_flyable: false is_movable: false + is_readable: true + module: + linkam: + classname: Linkam + is_flyable: false + is_movable: true + is_readable: true module: linkam_furnace: classname: LinkamFurnace + is_flyable: false is_movable: true + is_readable: true module: magnet: classname: Magnet + is_flyable: false is_movable: true + is_readable: true module: + noxbox_x: + classname: EpicsMotor + is_flyable: false + is_movable: true + is_readable: true + module: ophyd.epics_motor + noxbox_y: + classname: EpicsMotor + is_flyable: false + is_movable: true + is_readable: true + module: ophyd.epics_motor ocm_slits: classname: Slits + is_flyable: false is_movable: false + is_readable: true module: optics_table_adc: classname: OpticsTableADC + is_flyable: false is_movable: false + is_readable: true module: pe1: classname: PerkinElmerStandard1 + is_flyable: false is_movable: false + is_readable: true module: pe1c: classname: PerkinElmerContinuous1 + is_flyable: false is_movable: false + is_readable: true module: pilatus300: classname: PilatusV33 + is_flyable: false is_movable: false + is_readable: true module: ramp_control: classname: RampControl + is_flyable: false is_movable: false + is_readable: true module: rga: classname: RGA + is_flyable: false is_movable: false + is_readable: true module: + ring_current: + classname: EpicsSignalRO + is_flyable: false + is_movable: true + is_readable: true + module: ophyd.signal sbm: classname: SideBounceMono + is_flyable: false is_movable: false + is_readable: true + module: + sorensen850_manual: + classname: ParnoidEpicsSignal + is_flyable: false + is_movable: true + is_readable: true module: spinner_goniohead: classname: SpinnerGoniohead + is_flyable: false is_movable: false + is_readable: true module: wb_slits: classname: Slits + is_flyable: false is_movable: false + is_readable: true module: existing_plans: - Tlist: - description: Collect data over a list of user-specific temperatures - name: Tlist + _pdf_count: + name: _pdf_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. 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 + - annotation: + type: str 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 + name: sample_number + - annotation: + type: float 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.' + name: exposure_time + - annotation: + type: dict 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.' + name: sample_db + - annotation: + type: float 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. + name: KEYWORD_ONLY + value: 3 + name: z_for_move + - annotation: + type: float 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. + name: KEYWORD_ONLY + value: 3 + name: z_for_data + - annotation: + type: dict 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. + name: KEYWORD_ONLY + value: 3 + name: md + - annotation: + type: list kind: + name: KEYWORD_ONLY + value: 3 + name: dets + - kind: + name: KEYWORD_ONLY + value: 3 + name: beam_stop + - kind: + name: KEYWORD_ONLY + value: 3 + name: detector_motor + - kind: + name: KEYWORD_ONLY + value: 3 + name: sample_x + - kind: + name: KEYWORD_ONLY + value: 3 + name: sample_y + - kind: + name: KEYWORD_ONLY + value: 3 + name: sample_z + - kind: + name: KEYWORD_ONLY + value: 3 + name: bt + properties: + is_generator: true + _xpd_pre_plan: + description: Handle detector exposure time + xpdan required metadata + name: _xpd_pre_plan + parameters: + - 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: dets + - 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 + name: exposure + properties: + is_generator: true abs_set: description: Set a value. Optionally, wait for it to complete before continuing. + module: bluesky.plan_stubs 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: + - 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() + - 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 + - default: None 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 + - default: 'False' description: 'If True, wait for completion before processing any more messages. False by default.' @@ -390,22 +912,13 @@ existing_plans: 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() + - 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' + properties: + is_generator: true 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\ @@ -413,383 +926,203 @@ existing_plans: \ 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: + - 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: + - 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: + - 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: + - 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 + - default: None 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 + properties: + is_generator: true adaptive_scan: description: Scan over one variable with adaptively tuned step size. + module: bluesky.plans 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 + - 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 + - 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.) + - 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 + - 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 + - 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 + - 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 + - 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 + - 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 + - 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 + - default: '0.8' 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 + - default: None 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 + properties: + is_generator: true 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: + - 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: + - 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: + - 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 + properties: + is_generator: true broadcast_msg: - description: Generate many copies of a mesasge, applying it to a list of devices. + description: Generate many copies of a message, applying it to a list of devices. + module: bluesky.plan_stubs 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: + - 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: + - 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: + - 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: + - 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' + properties: + is_generator: true caching_repeater: description: Generate n chained copies of the messages in a plan. + module: bluesky.plan_stubs 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 + - 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: + - 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' + properties: + is_generator: true checkpoint: description: If interrupted, rewind to this point. + module: bluesky.plan_stubs 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')" + properties: + is_generator: true clear_checkpoint: description: Designate that it is not safe to resume. If interrupted or paused, abort. + module: bluesky.plan_stubs 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')" + properties: + is_generator: true close_run: description: Mark the end of the current 'run'. Emit a RunStop document. + module: bluesky.plan_stubs 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 + - default: None 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 + - default: None 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" + properties: + is_generator: true close_shutter_stub: description: 'simple function to return a generator that yields messages to close the shutter' + module: xpdacq.beamtime 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 + properties: + is_generator: true collect: description: Collect data cached by a fly-scanning device and emit documents. + module: bluesky.plan_stubs 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 + - 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 + - default: 'False' description: 'If False (default), emit Event documents in one bulk dump. If True, @@ -798,58 +1131,38 @@ existing_plans: 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 + - default: 'True' 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 + accumulating the documents in memory: they are emitted 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)" + properties: + is_generator: true complete: - description: Tell a flyer, 'stop collecting, whenver you are ready'. + description: Tell a flyer, 'stop collecting, whenever you are ready'. + module: bluesky.plan_stubs 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 + - 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 + - default: None 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 + - default: 'False' description: 'If True, wait for completion before processing any more messages. False by default.' @@ -857,112 +1170,60 @@ existing_plans: 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()`` + - 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" + properties: + is_generator: true configure: description: Change Device configuration and emit an updated Event Descriptor document. + module: bluesky.plan_stubs 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: + - 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()`` + - 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()`` + - 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)``" + properties: + is_generator: true 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: + - 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: + - 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 + properties: + is_generator: true count: description: Take one or more readings from detectors. + module: bluesky.plans 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 + - 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 + - default: '1' description: 'number of readings to take; default is 1 @@ -971,21 +1232,13 @@ existing_plans: 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 + - default: None 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 + - default: None description: "hook for customizing action of inner loop (messages per step)\n\ Expected signature ::\n\n def f(detectors: Iterable[OphydObj]) -> Generator[Msg]:\n\ \ ..." @@ -993,29 +1246,71 @@ existing_plans: 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 + description: metadata + kind: + name: KEYWORD_ONLY + value: 3 + name: md + properties: + is_generator: true + count_with_calib: + description: Take one or more readings from detectors with shutter control and + calibration metadata injection. + module: xpdacq.beamtime + name: count_with_calib + parameters: + - annotation: + type: list + description: list of 'readable' objects + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - annotation: + type: int + default: '1' + 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: + type: float + default: None + description: Time delay in seconds between successive readings; default is 0. + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: delay + - annotation: + type: dict + default: None + description: The calibration data in a dictionary. If not applied, the function + is a normal `bluesky.plans.count`. + kind: + name: KEYWORD_ONLY + value: 3 + name: calibration_md + - annotation: + type: dict 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 + properties: + is_generator: true create: description: Bundle future readings into a new Event document. + module: bluesky.plan_stubs 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 + - default: '''primary''' description: 'name given to event stream, used to convenient identification default is ''primary''' @@ -1023,122 +1318,113 @@ existing_plans: 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)" + properties: + is_generator: true ct: description: Take one reading from area detector with given exposure time + module: xpdacq.beamtime 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 + - 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 + - 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 + properties: + is_generator: true deferred_pause: description: Pause at the next checkpoint. + module: bluesky.plan_stubs 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)" + properties: + is_generator: true drop: description: Drop a bundle of readings without emitting a completed Event document. + module: bluesky.plan_stubs 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')" + properties: + is_generator: true fly: description: Perform a fly scan with one or more 'flyers'. + module: bluesky.plans 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 + - 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 + - default: None 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" + properties: + is_generator: true + future_count: + description: "Take one or more readings from detectors.\nParameters\n----------\n\ + detectors : list\n list of 'readable' objects\nnum : integer, optional\n\ + \ number of readings to take; default is 1\n If None, capture data until\ + \ canceled\ndelay : iterable or scalar, optional\n Time delay in seconds\ + \ between successive readings; default is 0.\nper_shot : callable, optional\n\ + \ hook for customizing action of inner loop (messages per step)\n Expected\ + \ signature ::\n def f(detectors: Iterable[OphydObj]) -> Generator[Msg]:\n\ + \ ...\nmd : dict, optional\n metadata\nNotes\n-----\nIf ``delay``\ + \ is an iterable, it must have at least ``num - 1`` entries or\nthe plan will\ + \ raise a ``ValueError`` during iteration." + name: future_count + parameters: + - kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: detectors + - default: '1' + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: num + - default: None + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: delay + - default: None + kind: + name: KEYWORD_ONLY + value: 3 + name: per_shot + - default: None + kind: + name: KEYWORD_ONLY + value: 3 + name: md + properties: + is_generator: true grid_scan: description: Scan over a mesh; each motor is on an independent trajectory. + module: bluesky.plans 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 + - 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: + - 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 + - default: None description: 'which axes should be snaked, either ``False`` (do not snake any axes), @@ -1155,11 +1441,7 @@ existing_plans: 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 + - default: None description: 'hook for customizing action of inner loop (messages per step). See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) @@ -1169,173 +1451,126 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true group_by_sample: description: Group the sample and plan by sample. Return sample, a list of plans. + module: xpdacq.xpdacq 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 + - annotation: + type: list 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 + - annotation: + type: list 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 + properties: + is_generator: true inner_product_scan: - description: null + module: bluesky.plans 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: + - 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: + - 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: + - 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 + - default: None 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 + - default: None 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 + properties: + is_generator: true input_plan: description: Prompt the user for text input. + module: bluesky.plan_stubs 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 + - default: '''''' 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)" + properties: + is_generator: true install_suspender: description: Install a suspender during a plan. + module: bluesky.plan_stubs 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 + - 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)" + properties: + is_generator: true + jog: + description: pass total exposure time (in seconds), motor name (i.e. Grid_Y), + start and stop positions for the motor. + name: jog + parameters: + - kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: exposure_s + - kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: start + - kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: stop + properties: + is_generator: true kickoff: description: Kickoff a fly-scanning device. + module: bluesky.plan_stubs 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 + - 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 + - default: None 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 + - default: 'False' description: 'If True, wait for completion before processing any more messages. False by default.' @@ -1343,44 +1578,24 @@ existing_plans: 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()`` + - 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)" + properties: + is_generator: true list_grid_scan: description: Scan over a mesh; each motor is on an independent trajectory. + module: bluesky.plans 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 + - 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,\ + - 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\ @@ -1390,11 +1605,7 @@ existing_plans: 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 + - default: 'False' description: 'which axes should be snaked, either ``False`` (do not snake any axes), @@ -1411,11 +1622,7 @@ existing_plans: 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 + - default: None description: 'hook for customizing action of inner loop (messages per step). See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) @@ -1425,42 +1632,25 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true list_scan: description: Scan over one or more variables in steps simultaneously (inner product). + module: bluesky.plans 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 + - 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\ + - 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.)" @@ -1468,11 +1658,7 @@ existing_plans: 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 + - default: None description: 'hook for customizing action of inner loop (messages per step) Expected signature: @@ -1482,111 +1668,61 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true load_sample: description: For robot. + module: xpdacq.xpdacq 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: + - 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 + - default: None 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 + properties: + is_generator: true log_scan: description: Scan over one variable in log-spaced steps. + module: bluesky.plans 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 + - 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.) + - 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 + - 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 + - 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 + - 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 + - default: None description: 'hook for customizing action of inner loop (messages per step) Expected signature: ``f(detectors, motor, step)``' @@ -1594,502 +1730,267 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true monitor: description: Asynchronously monitor for new values and emit Event documents. + module: bluesky.plan_stubs 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: + - 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 + - default: None 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()`` + - 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)``" + properties: + is_generator: true mov: description: Move one or more devices to a setpoint. Wait for all to complete. + module: bluesky.plan_stubs 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, ... + - 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 + - default: None 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() + - description: passed to obj.set() + kind: + name: VAR_KEYWORD + value: 4 + name: kwargs + properties: + is_generator: true + move_det: + description: Move the detector to the given (x, y, z) + name: move_det + parameters: + - annotation: + type: float + default: None + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: x + - annotation: + type: float + default: None + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: y + - annotation: + type: float + default: None + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: z + properties: + is_generator: true + move_per_step: + description: Inner loop of an N-dimensional step scan without any readings + module: bluesky.plan_stubs + name: move_per_step + parameters: + - description: mapping motors to positions in this step + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: step + - description: mapping motors to their last-set positions 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 + name: POSITIONAL_OR_KEYWORD + value: 1 + name: pos_cache + properties: + is_generator: true + move_sample: + description: Move the detector to the given (x, y, z) + name: move_sample 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 + - annotation: + type: float + default: None 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 + - annotation: + type: float + default: None 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 + - annotation: + type: float + default: None 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 + properties: + is_generator: true + move_to_det_config: + name: move_to_det_config 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 + - annotation: + type: str 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 + name: name + properties: + is_generator: true + move_to_sample: + name: move_to_sample + parameters: + - annotation: + type: str 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 + name: name + properties: + is_generator: true movr: description: Move one or more devices to a relative setpoint. Wait for all to complete. + module: bluesky.plan_stubs 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, ... + - 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 + - default: None 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() + - 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' + properties: + is_generator: true mv: description: Move one or more devices to a setpoint. Wait for all to complete. + module: bluesky.plan_stubs 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, ... + - 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 + - default: None 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() + - 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' + properties: + is_generator: true mvr: description: Move one or more devices to a relative setpoint. Wait for all to complete. + module: bluesky.plan_stubs 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, ... + - 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 + - default: None 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() + - 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' + properties: + is_generator: true 'null': description: Yield a no-op Message. (Primarily for debugging and testing.) + module: bluesky.plan_stubs 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 + properties: + is_generator: true open_run: description: Mark the beginning of a new 'run'. Emit a RunStart document. + module: bluesky.plan_stubs 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 + - default: None 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)``" + properties: + is_generator: true open_shutter_stub: description: 'simple function to return a generator that yields messages to open the shutter' + module: xpdacq.beamtime 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 + properties: + is_generator: true outer_product_scan: description: Scan over a mesh; each motor is on an independent trajectory. + module: bluesky.plans 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 + - 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: + - 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 + - default: None description: 'which axes should be snaked, either ``False`` (do not snake any axes), @@ -2106,11 +2007,7 @@ existing_plans: 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 + - default: None description: 'hook for customizing action of inner loop (messages per step). See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) @@ -2120,292 +2017,177 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true pause: description: Pause and wait for the user to resume. + module: bluesky.plan_stubs 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')" + properties: + is_generator: true pchain: description: Like `itertools.chain` but using `yield from` + module: bluesky.preprocessors 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) + - 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" + properties: + is_generator: true + pdf_count: + name: pdf_count + parameters: + - annotation: + type: int + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: sample_number + - annotation: + type: float + kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: exposure_time + - annotation: + type: dict + default: '{}' + kind: + name: KEYWORD_ONLY + value: 3 + name: md + properties: + is_generator: true periodic_dark: description: a plan wrapper that takes a plan and inserts `take_dark` + module: xpdacq.xpdacq 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: + - 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 + properties: + is_generator: true 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: + - 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: + - 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 + - default: '10' 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: + - 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 + properties: + is_generator: true 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: + - 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: + - 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: + - 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: + - 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 + - default: '0' 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 + - default: '1' 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: + - 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 + properties: + is_generator: true 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: + - 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: + - 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: + - 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: + - 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 + - annotation: + type: float 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 + - default: '1' 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 + - 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 + - annotation: + type: str 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 + - annotation: + type: str 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 + - description: 'The location of the beamstop and detector for "near" (PDF) and "far" (XRD) measurements' @@ -2413,13 +2195,7 @@ existing_plans: 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 + - description: 'The location of the beamstop and detector for "near" (PDF) and "far" (XRD) measurements' @@ -2427,101 +2203,65 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true 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 + - annotation: + type: float 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 + - annotation: + type: float 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 + - annotation: + type: float 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 + - default: '1' 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 + - 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 + - annotation: + type: str 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 + - annotation: + type: str 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 + - description: 'The location of the beamstop and detector for "near" (PDF) and "far" (XRD) measurements' @@ -2529,13 +2269,7 @@ existing_plans: 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 + - description: 'The location of the beamstop and detector for "near" (PDF) and "far" (XRD) measurements' @@ -2543,100 +2277,58 @@ existing_plans: 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 + - default: None 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 + - default: None 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 + properties: + is_generator: true 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: + - 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 + - annotation: + type: float 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 + - default: '1' 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 + - 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 + - annotation: + type: str 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 + - annotation: + type: str 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 + - description: 'The location of the beamstop and detector for "near" (PDF) and "far" (XRD) measurements' @@ -2644,13 +2336,7 @@ existing_plans: 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 + - description: 'The location of the beamstop and detector for "near" (PDF) and "far" (XRD) measurements' @@ -2658,50 +2344,31 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true print_summary_wrapper: description: Print summary of plan as it goes by + module: bluesky.preprocessors 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 + - 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`' + properties: + is_generator: true ramp_plan: description: Take data while ramping one or more positioners. + module: bluesky.plans 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 + - description: 'plan to start the ramp. This will be run inside of a open/close run. @@ -2711,23 +2378,11 @@ existing_plans: 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: + - 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 + - description: 'generator which takes no input This will be called for every data point. This should create @@ -2737,21 +2392,13 @@ existing_plans: 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 + - default: 'True' 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 + - default: None description: 'If not None, the maximum time the ramp can run. @@ -2760,11 +2407,7 @@ existing_plans: 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 + - default: None description: 'If not None, take data no faster than this. If None, take data as fast as possible @@ -2780,39 +2423,24 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true rd: description: Reads a single-value non-triggered object + module: bluesky.plan_stubs 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 + - 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 + - default: '0' 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\ @@ -2821,189 +2449,100 @@ existing_plans: 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" + properties: + is_generator: true read: description: Take a reading and add it to the current bundle of readings. + module: bluesky.plan_stubs 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: + - 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)" + properties: + is_generator: true rel_adaptive_scan: description: Relative scan over one variable with adaptively tuned step size. + module: bluesky.plans 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 + - 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 + - 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.) + - 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 + - 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 + - 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 + - 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 + - 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 + - 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 + - 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 + - default: '0.8' 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 + - default: None 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 + properties: + is_generator: true rel_grid_scan: description: Scan over a mesh relative to current position. + module: bluesky.plans 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 + - 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: + - 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 + - default: None description: 'which axes should be snaked, either ``False`` (do not snake any axes), @@ -3020,11 +2559,7 @@ existing_plans: 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 + - default: None description: 'hook for customizing action of inner loop (messages per step). See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) @@ -3034,45 +2569,28 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true rel_list_grid_scan: description: 'Scan over a mesh; each motor is on an independent trajectory. Each point is relative to the current position.' + module: bluesky.plans 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 + - 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,\ + - 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\ @@ -3082,11 +2600,7 @@ existing_plans: 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 + - default: 'False' description: 'which axes should be snaked, either ``False`` (do not snake any axes), @@ -3103,11 +2617,7 @@ existing_plans: 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 + - default: None description: 'hook for customizing action of inner loop (messages per step). See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) @@ -3117,42 +2627,25 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true rel_list_scan: description: Scan over one variable in steps relative to current position. + module: bluesky.plans 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 + - 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\ + - 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,\ @@ -3161,11 +2654,7 @@ existing_plans: 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 + - default: None description: 'hook for customizing action of inner loop (messages per step) Expected signature: ``f(detectors, motor, step)``' @@ -3173,84 +2662,45 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true rel_log_scan: description: Scan over one variable in log-spaced steps relative to current position. + module: bluesky.plans 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 + - 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.) + - 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 + - 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 + - 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 + - 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 + - default: None description: 'hook for customizing action of inner loop (messages per step) Expected signature: ``f(detectors, motor, step)``' @@ -3258,42 +2708,25 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true rel_scan: description: Scan over one multi-motor trajectory relative to current position. + module: bluesky.plans 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 + - 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..\ + - 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.)" @@ -3301,21 +2734,13 @@ existing_plans: 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 + - default: None 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 + - default: None description: 'hook for customizing action of inner loop (messages per step). See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) @@ -3325,60 +2750,35 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true rel_set: description: Set a value relative to current value. Optionally, wait before continuing. + module: bluesky.plan_stubs 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: + - 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() + - 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 + - default: None 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 + - default: 'False' description: 'If True, wait for completion before processing any more messages. False by default.' @@ -3386,107 +2786,53 @@ existing_plans: 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() + - 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' + properties: + is_generator: true rel_spiral: description: Relative spiral scan + module: bluesky.plans 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: + - 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.) + - 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.) + - 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 + - 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 + - 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. + - 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 + - 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 + - default: None description: 'Delta radius along the major axis of the ellipse. If None, it defaults to dr.' @@ -3494,21 +2840,13 @@ existing_plans: 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 + - default: '0.0' 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 + - default: None description: 'hook for customizing action of inner loop (messages per step). See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) @@ -3518,106 +2856,55 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true rel_spiral_fermat: description: Relative fermat spiral scan + module: bluesky.plans 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 + - 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.) + - 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.) + - 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 + - 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 + - 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 + - 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 + - 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 + - default: None description: 'Delta radius along the major axis of the ellipse, if not specifed defaults to dr' @@ -3625,21 +2912,13 @@ existing_plans: 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 + - default: '0.0' 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 + - default: None description: 'hook for customizing action of inner loop (messages per step). See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) @@ -3649,106 +2928,55 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true rel_spiral_square: description: Relative square spiral scan, centered around current (x, y) position. + module: bluesky.plans 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 + - 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.) + - 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.) + - 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 + - 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 + - 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 + - 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. + - 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 + - default: None description: 'hook for cutomizing action of inner loop (messages per step). See docstring of :func:`bluesky.plans.one_nd_step` (the default) for @@ -3758,227 +2986,119 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true relative_adaptive_scan: description: Relative scan over one variable with adaptively tuned step size. + module: bluesky.plans 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 + - 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 + - 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.) + - 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 + - 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 + - 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 + - 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 + - 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 + - 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 + - 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 + - default: '0.8' 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 + - default: None 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 + properties: + is_generator: true relative_inner_product_scan: - description: null + module: bluesky.plans 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: + - 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: + - 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: + - 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 + - default: None 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 + - default: None 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 + properties: + is_generator: true relative_list_scan: description: Scan over one variable in steps relative to current position. + module: bluesky.plans 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 + - 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\ + - 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,\ @@ -3987,11 +3107,7 @@ existing_plans: 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 + - default: None description: 'hook for customizing action of inner loop (messages per step) Expected signature: ``f(detectors, motor, step)``' @@ -3999,84 +3115,45 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true relative_log_scan: description: Scan over one variable in log-spaced steps relative to current position. + module: bluesky.plans 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 + - 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.) + - 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 + - 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 + - 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 + - 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 + - default: None description: 'hook for customizing action of inner loop (messages per step) Expected signature: ``f(detectors, motor, step)``' @@ -4084,50 +3161,29 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true relative_outer_product_scan: description: Scan over a mesh relative to current position. + module: bluesky.plans 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 + - 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: + - 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 + - default: None description: 'which axes should be snaked, either ``False`` (do not snake any axes), @@ -4144,11 +3200,7 @@ existing_plans: 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 + - default: None description: 'hook for customizing action of inner loop (messages per step). See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) @@ -4158,42 +3210,25 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true relative_scan: description: Scan over one multi-motor trajectory relative to current position. + module: bluesky.plans 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 + - 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..\ + - 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.)" @@ -4201,21 +3236,13 @@ existing_plans: 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 + - default: None 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 + - default: None description: 'hook for customizing action of inner loop (messages per step). See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) @@ -4225,105 +3252,54 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true relative_spiral: description: Relative spiral scan + module: bluesky.plans 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: + - 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.) + - 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.) + - 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 + - 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 + - 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. + - 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 + - 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 + - default: None description: 'Delta radius along the major axis of the ellipse. If None, it defaults to dr.' @@ -4331,21 +3307,13 @@ existing_plans: 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 + - default: '0.0' 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 + - default: None description: 'hook for customizing action of inner loop (messages per step). See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) @@ -4355,106 +3323,55 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true relative_spiral_fermat: description: Relative fermat spiral scan + module: bluesky.plans 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 + - 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.) + - 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.) + - 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 + - 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 + - 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 + - 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 + - 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 + - default: None description: 'Delta radius along the major axis of the ellipse, if not specifed defaults to dr' @@ -4462,21 +3379,13 @@ existing_plans: 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 + - default: '0.0' 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 + - default: None description: 'hook for customizing action of inner loop (messages per step). See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) @@ -4486,60 +3395,37 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true remove_suspender: description: Remove a suspender during a plan. + module: bluesky.plan_stubs 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 + - 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)" + properties: + is_generator: true repeat: description: Repeat a plan num times with delay and checkpoint between each repeat. + module: bluesky.plan_stubs 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 + - 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 + - default: '1' description: 'number of readings to take; default is 1 @@ -4548,179 +3434,134 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true repeater: description: Generate n chained copies of the messages from gen_func + module: bluesky.plan_stubs 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 + - 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 + - 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: + - 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: + - 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' + properties: + is_generator: true 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})" + module: xpdacq.xpdacq 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: + - 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: + - 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 + properties: + is_generator: true + rocking_ct: + description: Take a count while "rocking" the y-position + name: rocking_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: + - 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: exposure + - kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: motor + - kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: start + - kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: stop + - default: '1' + kind: + name: KEYWORD_ONLY + value: 3 + name: num + - default: None + kind: + name: KEYWORD_ONLY + value: 3 + name: md + properties: + is_generator: true + sample_aware_count: + description: A wrapper around count that tries to mimic xpdacq. + name: sample_aware_count + parameters: + - annotation: + type: int 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 + - annotation: + type: float 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 + - default: None 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 + properties: + is_generator: true save: description: Close a bundle of readings and emit a completed Event document. + module: bluesky.plan_stubs 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')" + properties: + is_generator: true scan: description: Scan over one multi-motor trajectory. + module: bluesky.plans 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 + - 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..\ + - 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.)" @@ -4728,21 +3569,13 @@ existing_plans: 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 + - default: None 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 + - default: None description: 'hook for customizing action of inner loop (messages per step). See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) @@ -4752,50 +3585,29 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true scan_nd: description: Scan over an arbitrary N-dimensional trajectory. + module: bluesky.plans 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: + - 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 + - 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 + - default: None description: 'hook for customizing action of inner loop (messages per step). See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) @@ -4805,244 +3617,128 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true shutter_step: description: 'customized step to ensure shutter is open before reading at each motor point and close shutter after reading' + module: xpdacq.beamtime 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: + - 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: + - 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: + - 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 + properties: + is_generator: true 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: + - 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: + - 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 + - default: None 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 + properties: + is_generator: true single_gen: description: Turn a single message into a plan + module: bluesky.utils 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 + - 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" + properties: + is_generator: true sleep: description: Tell the RunEngine to sleep, while asynchronously doing other processing. + module: bluesky.plan_stubs 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 + - 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)" + properties: + is_generator: true spiral: description: Spiral scan, centered around (x_start, y_start) + module: bluesky.plans 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: + - 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.) + - 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.) + - 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 + - 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 + - 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 + - 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 + - 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. + - 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 + - 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 + - default: None description: 'Delta radius along the major axis of the ellipse. If None, defaults to @@ -5051,21 +3747,13 @@ existing_plans: 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 + - default: '0.0' 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 + - default: None description: 'hook for customizing action of inner loop (messages per step). See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) @@ -5075,128 +3763,65 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true spiral_fermat: description: Absolute fermat spiral scan, centered around (x_start, y_start) + module: bluesky.plans 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 + - 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.) + - 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.) + - 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 + - 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 + - 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 + - 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 + - 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 + - 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 + - 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 + - default: None description: 'Delta radius along the major axis of the ellipse, if not specifed defaults to dr.' @@ -5204,21 +3829,13 @@ existing_plans: 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 + - default: '0.0' 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 + - default: None description: 'hook for customizing action of inner loop (messages per step). See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) @@ -5228,128 +3845,65 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true spiral_square: description: Absolute square spiral scan, centered around (x_center, y_center) + module: bluesky.plans 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 + - 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.) + - 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.) + - 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 + - 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 + - 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 + - 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 + - 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 + - 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. + - 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 + - default: None description: 'hook for cutomizing action of inner loop (messages per step). See docstring of :func:`bluesky.plans.one_nd_step` (the default) for @@ -5359,79 +3913,46 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true stage: description: '''Stage'' a device (i.e., prepare it for use, ''arm'' it).' + module: bluesky.plan_stubs 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: + - 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)" + properties: + is_generator: true stop: description: Stop a device. + module: bluesky.plan_stubs 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: + - 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' + properties: + is_generator: true subscribe: description: Subscribe the stream of emitted documents. + module: bluesky.plan_stubs 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: + - 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 + - description: 'Expected signature: ``f(name, doc)`` where ``name`` is one of the strings above (''all, ''start'', ...) and ``doc`` is a dict' @@ -5439,134 +3960,73 @@ existing_plans: 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)" + properties: + is_generator: true take_dark: description: a plan for taking a single dark frame + module: xpdacq.xpdacq 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 + properties: + is_generator: true 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: + - 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: + - 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: + - 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: + - 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: + - 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 + - default: None 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 + - default: None 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 + - default: None 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 + properties: + is_generator: true trigger: description: Trigger and acquisition. Optionally, wait for it to complete. + module: bluesky.plan_stubs 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: + - 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 + - default: None 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 + - default: 'False' description: 'If True, wait for completion before processing any more messages. False by default.' @@ -5574,32 +4034,20 @@ existing_plans: 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' + properties: + is_generator: true trigger_and_read: description: Trigger and read a list of detectors and bundle readings into one Event. + module: bluesky.plan_stubs 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 + - 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 + - default: '''primary''' description: 'event stream name, a convenient human-friendly identifier; default name is ''primary''' @@ -5607,66 +4055,36 @@ existing_plans: 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'" + properties: + is_generator: true tseries: description: time series scan with area detector. + module: xpdacq.beamtime 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 + - 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 + - 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 + - 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 + - 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 + - default: 'True' description: 'Option on whether delegates shutter control to ``xpdAcq``. If True, @@ -5685,95 +4103,50 @@ existing_plans: 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 + properties: + is_generator: true tune_centroid: description: 'plan: tune a motor to the centroid of signal(motor)' + module: bluesky.plans 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 + - 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 + - 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.) + - 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 + - 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' + - 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. + - 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 + - default: '10' 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 + - default: '3.0' description: 'used in calculating new range after each pass @@ -5782,90 +4155,51 @@ existing_plans: 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 + - default: 'False' 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 + - default: None 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 + properties: + is_generator: true tweak: description: Move and motor and read a detector with an interactive prompt. + module: bluesky.plans 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: + - 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 + - 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: + - 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 + - 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 + - default: None 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 + properties: + is_generator: true 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\ @@ -5874,274 +4208,148 @@ existing_plans: \ 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: + - 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: + - 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: + - 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: + - 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: + - 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: + - 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 + - default: None 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 + properties: + is_generator: true unload_sample: description: For robot. + module: xpdacq.xpdacq 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 + properties: + is_generator: true unmonitor: description: Stop monitoring. + module: bluesky.plan_stubs 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: + - 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)" + properties: + is_generator: true unstage: description: '''Unstage'' a device (i.e., put it in standby, ''disarm'' it).' + module: bluesky.plan_stubs 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: + - 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)" + properties: + is_generator: true unsubscribe: description: Remove a subscription. + module: bluesky.plan_stubs 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 + - 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)" + properties: + is_generator: true wait: description: Wait for all statuses in a group to report being finished. + module: bluesky.plan_stubs 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 + - default: None + description: Identifier 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)" + properties: + is_generator: true wait_for: description: 'Low-level: wait for a list of ``asyncio.Future`` objects to set (complete).' + module: bluesky.plan_stubs 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 + - 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()`` + - 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)``" + properties: + is_generator: true x2x_scan: description: Relatively scan over two motors in a 2:1 ratio + module: bluesky.plans 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 + - 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 + - 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 + - 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 + - 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 + - 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: + - 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 + - default: None description: 'hook for cutomizing action of inner loop (messages per step). See docstring of :func:`bluesky.plan_stubs.one_nd_step` (the default) @@ -6151,17 +4359,11 @@ existing_plans: 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 + - default: None 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 + properties: + is_generator: true diff --git a/startup/user_group_permissions.yaml b/startup/user_group_permissions.yaml index b951498..2578df1 100644 --- a/startup/user_group_permissions.yaml +++ b/startup/user_group_permissions.yaml @@ -6,6 +6,7 @@ user_groups: - "^sample_aware_count$" - "^move_det$" - "^move_sample$" + - "^pdf_count$" forbidden_plans: - "$_" # All plans with names starting with '_' From 0399644db2e90b04ec6070321e5f81df620365b8 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 1 Dec 2021 13:24:59 -0500 Subject: [PATCH 44/70] MNT: update detector / beamstop position --- startup/99-demo_plans.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/startup/99-demo_plans.py b/startup/99-demo_plans.py index 688e87b..aacaea6 100644 --- a/startup/99-demo_plans.py +++ b/startup/99-demo_plans.py @@ -23,10 +23,10 @@ class DetectorConfiguration: DETECTOR_POSITIONS = { "near": DetectorConfiguration( - beamstop_x=-17.02152375, beamstop_y=0.717885, detector=3857.0 + beamstop_x=-16.44653, beamstop_y=3.7878875, detector=3700.0 ), "far": DetectorConfiguration( - beamstop_x=-16.541525, beamstop_y=0.437885, detector=4973.0 + beamstop_x=-16.44653, beamstop_y=3.7878875, detector=4700.0 ), } From fd77248f5629ec3ef95c81d3a3381aba2993821b Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 1 Dec 2021 13:25:33 -0500 Subject: [PATCH 45/70] FIX: pre-move in rocking_ct avoids spending time moving with shutter open. --- startup/98-jog_scans.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/startup/98-jog_scans.py b/startup/98-jog_scans.py index c6f8ff9..6df5469 100644 --- a/startup/98-jog_scans.py +++ b/startup/98-jog_scans.py @@ -1,5 +1,6 @@ from bluesky.utils import short_uid + def future_count(detectors, num=1, delay=None, *, per_shot=None, md=None): """ Take one or more readings from detectors. @@ -145,18 +146,17 @@ def rocking_ct(dets, exposure, motor, start, stop, *, num=1, md=None): @bpp.reset_positions_decorator([motor.velocity]) def per_shot(dets): nonlocal start, stop - yield from bps.mv(motor, start) # got to initial position - yield from bps.mv(motor.velocity, abs(stop - start) / exposure) # set velocity + yield from bps.mv(motor.velocity, abs(stop - start) / exposure) # set velocity gp = short_uid("rocker") - yield from bps.abs_set(motor, stop, group=gp) # set motor to move towards end - yield from bps.trigger_and_read(dets) # collect off detector + yield from bps.abs_set(motor, stop, group=gp) # set motor to move towards end + yield from bps.trigger_and_read(dets) # collect off detector yield from bps.wait(group=gp) start, stop = stop, start + yield from bps.mv(motor, start) # got to initial position return (yield from future_count(dets, md=_md, per_shot=per_shot, num=num)) + def jog(exposure_s, motor, start, stop): - """ pass total exposure time (in seconds), motor name (i.e. Grid_Y), start and stop positions for the motor.""" + """pass total exposure time (in seconds), motor name (i.e. Grid_Y), start and stop positions for the motor.""" yield from rocking_ct([pe1c], exposure_s, motor, start, stop) - - From e6f689e0a41f186f40350f46d59a71d76045b3a6 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 1 Dec 2021 13:25:57 -0500 Subject: [PATCH 46/70] STY: apply black --- startup/00-base.py | 78 ++++++++++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 37 deletions(-) diff --git a/startup/00-base.py b/startup/00-base.py index 643c415..cbd9121 100644 --- a/startup/00-base.py +++ b/startup/00-base.py @@ -6,10 +6,10 @@ from ophyd.signal import EpicsSignalBase, EpicsSignal, DEFAULT_CONNECTION_TIMEOUT def print_now(): - return datetime.strftime(datetime.now(), '%Y-%m-%d %H:%M:%S.%f') + return datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S.%f") def wait_for_connection_base(self, timeout=DEFAULT_CONNECTION_TIMEOUT): - '''Wait for the underlying signals to initialize or connect''' + """Wait for the underlying signals to initialize or connect""" if timeout is DEFAULT_CONNECTION_TIMEOUT: timeout = self.connection_timeout # print(f'{print_now()}: waiting for {self.name} to connect within {timeout:.4f} s...') @@ -19,11 +19,11 @@ def wait_for_connection_base(self, timeout=DEFAULT_CONNECTION_TIMEOUT): # print(f'{print_now()}: waited for {self.name} to connect for {time.time() - start:.4f} s.') except TimeoutError: if self._destroyed: - raise DestroyedError('Signal has been destroyed') + raise DestroyedError("Signal has been destroyed") raise def wait_for_connection(self, timeout=DEFAULT_CONNECTION_TIMEOUT): - '''Wait for the underlying signals to initialize or connect''' + """Wait for the underlying signals to initialize or connect""" if timeout is DEFAULT_CONNECTION_TIMEOUT: timeout = self.connection_timeout # print(f'{print_now()}: waiting for {self.name} to connect within {timeout:.4f} s...') @@ -36,6 +36,7 @@ def wait_for_connection(self, timeout=DEFAULT_CONNECTION_TIMEOUT): ############################################################################### from ophyd.signal import EpicsSignalBase + # EpicsSignalBase.set_default_timeout(timeout=10, connection_timeout=10) # old style EpicsSignalBase.set_defaults(timeout=10, connection_timeout=10) # new style @@ -51,21 +52,21 @@ def wait_for_connection(self, timeout=DEFAULT_CONNECTION_TIMEOUT): from bluesky.utils import ts_msg_hook -#from ophyd.signal import EpicsSignalBase +# from ophyd.signal import EpicsSignalBase # from Tom Caswell to fix the 'None bug' - whatever that is. DO 7/9/2021 -#EpicsSignalBase.set_defaults(timeout=20) +# EpicsSignalBase.set_defaults(timeout=20) # See docstring for nslsii.configure_base() for more details # this command takes away much of the boilerplate for settting up a profile # (such as setting up best effort callbacks etc) nslsii.configure_base( get_ipython().user_ns, - 'pdf', + "pdf", pbar=True, bec=True, magics=True, mpl=False, - # publish_documents_to_kafka=True + # publish_documents_to_kafka=True ) del one_1d_step del one_nd_step @@ -101,19 +102,16 @@ def _dump(obj): "Encode as msgpack using numpy-aware encoder." # See https://github.com/msgpack/msgpack-python#string-and-binary-type # for more on use_bin_type. - return msgpack.packb( - obj, - default=msgpack_numpy.encode, - use_bin_type=True) + return msgpack.packb(obj, default=msgpack_numpy.encode, use_bin_type=True) @staticmethod def _load(file): - return msgpack.unpackb( - file, - object_hook=msgpack_numpy.decode, - raw=False) + return msgpack.unpackb(file, object_hook=msgpack_numpy.decode, raw=False) + -runengine_metadata_dir = appdirs.user_data_dir(appname="bluesky") / Path("runengine-metadata") +runengine_metadata_dir = appdirs.user_data_dir(appname="bluesky") / Path( + "runengine-metadata" +) # PersistentDict will create the directory if it does not exist RE.md = PersistentDict(runengine_metadata_dir) @@ -125,24 +123,25 @@ def _load(file): # At the end of every run, verify that files were saved and # print a confirmation message. -#from bluesky.callbacks.broker import verify_files_saved, post_run +# from bluesky.callbacks.broker import verify_files_saved, post_run # RE.subscribe(post_run(verify_files_saved, db), 'stop') # RE.msg_hook = ts_msg_hook -RE.md['facility'] = 'NSLS-II' -RE.md['group'] = 'PDF' -RE.md['beamline_id'] = '28-ID-1' -RE.md['cycle'] = '2018-1' +RE.md["facility"] = "NSLS-II" +RE.md["group"] = "PDF" +RE.md["beamline_id"] = "28-ID-1" +RE.md["cycle"] = "2018-1" + def get_user_info(): - ''' This function prompts the user for basic info and - adds it to RE.md. + """This function prompts the user for basic info and + adds it to RE.md. - All data in RE.md gets saved in each start document for each run. + All data in RE.md gets saved in each start document for each run. - ''' + """ print("Please enter the following information for your scan") @@ -150,9 +149,10 @@ def get_user_info(): prop_ID = input("Enter Proposal ID: ") wavelength = input("Enter wavelength: ") - RE.md['PI Name'] = PI_name - RE.md['Proposal ID'] = prop_ID - RE.md['wavelength'] = wavelength + RE.md["PI Name"] = PI_name + RE.md["Proposal ID"] = prop_ID + RE.md["wavelength"] = wavelength + # get_user_info() @@ -161,11 +161,11 @@ def get_user_info(): def which_pvs(cls=None): - ''' returns list of all existing pv's. - cls : class, optional - the class of PV's to search for - defaults to [Device, Signal] - ''' + """returns list of all existing pv's. + cls : class, optional + the class of PV's to search for + defaults to [Device, Signal] + """ if cls is None: cls = [Device, Signal] user_ns = get_ipython().user_ns @@ -185,7 +185,7 @@ def which_pvs(cls=None): def print_all_pvs(): cols = ["Python name", "Ophyd Name"] print("{:20s} \t {:20s}".format(*cols)) - print("="*40) + print("=" * 40) obj_list = which_pvs() for name, obj in obj_list: print("{:20s} \t {:20s}".format(name, obj.name)) @@ -200,7 +200,7 @@ def print_all_pvs(): def print_all_pv_values(): cols = ["Python name", "Time stamp", "Value"] print("{:40s} \t {:20s} \t\t\t {:20s}".format(*cols)) - print("="*120) + print("=" * 120) obj_list = which_pvs() for name, obj in obj_list: try: @@ -209,4 +209,8 @@ def print_all_pv_values(): pass for key, val in ret.items(): - print("{:40s} \t {:20s} \t {}".format(key, time.ctime(val['timestamp']), val['value'])) + print( + "{:40s} \t {:20s} \t {}".format( + key, time.ctime(val["timestamp"]), val["value"] + ) + ) From a132e671727415d486165c7193eb8738ed7ef7e3 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 1 Dec 2021 13:26:13 -0500 Subject: [PATCH 47/70] MNT: add envs for qserver startup --- env_vars/qserver_extra | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 env_vars/qserver_extra diff --git a/env_vars/qserver_extra b/env_vars/qserver_extra new file mode 100644 index 0000000..8a3326d --- /dev/null +++ b/env_vars/qserver_extra @@ -0,0 +1,2 @@ +export PYTHONPATH=/home/xf28id1/python_overlay/lib/python3.9/site-packages/ +export QSERVER_STARTUP_DIR=/nsls2/data/pdf/shared/config/profile_collection/startup From eab8e746f3378dd5e82b9613d39223c75da74292 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 1 Dec 2021 13:30:41 -0500 Subject: [PATCH 48/70] STY: apply black --- startup/10-machine.py | 2 +- startup/11-temperature-controller.py | 298 +++++---- startup/11-temperature-controller_py_save.bak | 216 ++++--- startup/11-temperature-controller_pyes.bak | 150 +++-- startup/12-motors.py | 163 +++-- startup/13-gas_handling.py | 40 +- startup/15-optics.py | 123 ++-- startup/20-prosilica.py | 88 ++- startup/25-sample-env.py | 33 +- startup/80-areadetector.py | 361 ++++++----- startup/81-dexela.bak | 164 +++-- startup/81-pilatus.py | 81 +-- startup/90-plans.py | 34 +- startup/91-callbacks.py | 365 +++++------ startup/92-two-distance-plan.py | 142 +++-- startup/93-customized_perstep.bak | 57 +- startup/95-zmq.py | 2 +- startup/96-dan_functions.py | 58 +- startup/97-MA_functions.py | 580 +++++++++--------- startup/98-map_scans.bak | 7 +- startup/98-map_scans.py | 7 +- startup/99-humidity.py | 86 +-- startup/99-linkam.py | 172 +++--- startup/99-webcam_device.py | 122 +++- startup/monitor_heartbeat_py | 54 +- startup/tmp/97-MA_functions.py | 198 +++--- 26 files changed, 1997 insertions(+), 1606 deletions(-) diff --git a/startup/10-machine.py b/startup/10-machine.py index 9295e6d..354408f 100644 --- a/startup/10-machine.py +++ b/startup/10-machine.py @@ -1 +1 @@ -ring_current = EpicsSignalRO('SR:OPS-BI{DCCT:1}I:Real-I', name='ring_current') +ring_current = EpicsSignalRO("SR:OPS-BI{DCCT:1}I:Real-I", name="ring_current") diff --git a/startup/11-temperature-controller.py b/startup/11-temperature-controller.py index 5682d52..6b8e5c5 100644 --- a/startup/11-temperature-controller.py +++ b/startup/11-temperature-controller.py @@ -9,11 +9,12 @@ from nslsii.temperature_controllers import Eurotherm + class CS700TemperatureController(PVPositioner): - readback = C(EpicsSignalRO, 'T-I') - setpoint = C(EpicsSignal, 'T-SP') - done = C(EpicsSignalRO, 'Cmd-Busy') - stop_signal = C(EpicsSignal, 'Cmd-Cmd') + readback = C(EpicsSignalRO, "T-I") + setpoint = C(EpicsSignal, "T-SP") + done = C(EpicsSignalRO, "Cmd-Busy") + stop_signal = C(EpicsSignal, "Cmd-Cmd") def set(self, *args, timeout=None, **kwargs): return super().set(*args, timeout=timeout, **kwargs) @@ -26,6 +27,7 @@ def trigger(self): status._finished() return status + # To allow for sample temperature equilibration time, increase # the `settle_time` parameter (units: seconds). """ @@ -42,54 +44,68 @@ def trigger(self): # eurotherm.timeout.set(1200) # eurotherm.equilibrium_time.set(10) # commented by MA + class Eurotherm(EpicsSignalPositioner): - def set(self, *args, **kwargs): - return super().set(*args, timeout=100000, **kwargs) + def set(self, *args, **kwargs): + return super().set(*args, timeout=100000, **kwargs) + + +eurotherm = Eurotherm( + "XF:28ID1-ES:1{Env:04}T-I", + write_pv="XF:28ID1-ES:1{Env:04}T-SP", + tolerance=5, + name="eurotherm", +) -eurotherm = Eurotherm('XF:28ID1-ES:1{Env:04}T-I', write_pv='XF:28ID1-ES:1{Env:04}T-SP', tolerance = 5, name='eurotherm') class CryoStream(Device): # readback - T = Cpt(EpicsSignalRO, 'T-I') + T = Cpt(EpicsSignalRO, "T-I") # setpoint - setpoint = Cpt(EpicsSignal, read_pv="T-RB", - write_pv="T-SP", - add_prefix=('suffix', 'read_pv', 'write_pv')) + setpoint = Cpt( + EpicsSignal, + read_pv="T-RB", + write_pv="T-SP", + add_prefix=("suffix", "read_pv", "write_pv"), + ) # heater power level - heater = Cpt(EpicsSignal, ':HTR1') + heater = Cpt(EpicsSignal, ":HTR1") # configuration - dead_band = Cpt(EpicsSignal, 'T:AtSP-SP', string=True) - heater_range = Cpt(EpicsSignal, ':HTR1:Range', string=True) + dead_band = Cpt(EpicsSignal, "T:AtSP-SP", string=True) + heater_range = Cpt(EpicsSignal, ":HTR1:Range", string=True) # don't know what this is? - #scan = Cpt(EpicsSignal, ':read.SCAN', string=True) - mode = Cpt(EpicsSignal, ':OUT1:Mode', string=True) - cntrl = Cpt(EpicsSignal, ':OUT1:Cntrl', string=True) + # scan = Cpt(EpicsSignal, ':read.SCAN', string=True) + mode = Cpt(EpicsSignal, ":OUT1:Mode", string=True) + cntrl = Cpt(EpicsSignal, ":OUT1:Cntrl", string=True) # trigger signal - trig = Cpt(EpicsSignal, ':read.PROC') + trig = Cpt(EpicsSignal, ":read.PROC") - #def trigger(self): - #self.trig.put(1, wait=True) - #return DeviceStatus(self, done=True, success=True) + # def trigger(self): + # self.trig.put(1, wait=True) + # return DeviceStatus(self, done=True, success=True) - def __init__(self, *args, read_attrs=None, - configuration_attrs=None, **kwargs): + def __init__(self, *args, read_attrs=None, configuration_attrs=None, **kwargs): if read_attrs is None: - read_attrs = ['T', 'setpoint'] - #if configuration_attrs is None: - #configuration_attrs = ['heater_range', 'dead_band', - #'mode', 'cntrl'] - super().__init__(*args, read_attrs=read_attrs, - configuration_attrs=configuration_attrs, - **kwargs) + read_attrs = ["T", "setpoint"] + # if configuration_attrs is None: + # configuration_attrs = ['heater_range', 'dead_band', + #'mode', 'cntrl'] + super().__init__( + *args, + read_attrs=read_attrs, + configuration_attrs=configuration_attrs, + **kwargs + ) self._target = None self._sts = None def _sts_mon(self, value, **kwargs): - if (self._target is None or - np.abs(self._target - value) < float(self.dead_band.get())): + if self._target is None or np.abs(self._target - value) < float( + self.dead_band.get() + ): self.T.clear_sub(self._sts_mon) - #self.scan.put('Passive', wait=True) + # self.scan.put('Passive', wait=True) if self._sts is not None: self._sts._finished() self._sts = None @@ -97,9 +113,9 @@ def _sts_mon(self, value, **kwargs): def set(self, val): self._target = val - self.setpoint.put(val)#, wait=True) + self.setpoint.put(val) # , wait=True) sts = self._sts = DeviceStatus(self) - #self.scan.put('.2 second') + # self.scan.put('.2 second') self.T.subscribe(self._sts_mon) return sts @@ -110,55 +126,60 @@ def stop(self, *, success=False): self._sts._finished(success=success) self._sts = None self._target = None - #self.scan.put('Passive', wait=True) + # self.scan.put('Passive', wait=True) # TODO: uncomment later once the device is available -cryostream = CryoStream('XF:28ID1-ES:1{Env:01}', name='cryostream') +cryostream = CryoStream("XF:28ID1-ES:1{Env:01}", name="cryostream") class CryoStat1(Device): # readback - T = Cpt(EpicsSignalRO, ':IN1') + T = Cpt(EpicsSignalRO, ":IN1") # setpoint - setpoint = Cpt(EpicsSignal, read_pv=":OUT1:SP_RBV", - write_pv=":OUT1:SP", - add_prefix=('suffix', 'read_pv', 'write_pv')) + setpoint = Cpt( + EpicsSignal, + read_pv=":OUT1:SP_RBV", + write_pv=":OUT1:SP", + add_prefix=("suffix", "read_pv", "write_pv"), + ) # heater power level - heater = Cpt(EpicsSignal, ':HTR1') + heater = Cpt(EpicsSignal, ":HTR1") # configuration - dead_band = Cpt(AttributeSignal, attr='_dead_band') - heater_range = Cpt(EpicsSignal, ':HTR1:Range', string=True) - scan = Cpt(EpicsSignal, ':read.SCAN', string=True) - mode = Cpt(EpicsSignal, ':OUT1:Mode', string=True) - cntrl = Cpt(EpicsSignal, ':OUT1:Cntrl', string=True) + dead_band = Cpt(AttributeSignal, attr="_dead_band") + heater_range = Cpt(EpicsSignal, ":HTR1:Range", string=True) + scan = Cpt(EpicsSignal, ":read.SCAN", string=True) + mode = Cpt(EpicsSignal, ":OUT1:Mode", string=True) + cntrl = Cpt(EpicsSignal, ":OUT1:Cntrl", string=True) # trigger signal - trig = Cpt(EpicsSignal, ':read.PROC') + trig = Cpt(EpicsSignal, ":read.PROC") def trigger(self): self.trig.put(1, wait=True) return DeviceStatus(self, done=True, success=True) - def __init__(self, *args, dead_band, read_attrs=None, - configuration_attrs=None, **kwargs): + def __init__( + self, *args, dead_band, read_attrs=None, configuration_attrs=None, **kwargs + ): if read_attrs is None: - read_attrs = ['T', 'setpoint'] + read_attrs = ["T", "setpoint"] if configuration_attrs is None: - configuration_attrs = ['heater_range', 'dead_band', - 'mode', 'cntrl'] - super().__init__(*args, read_attrs=read_attrs, - configuration_attrs=configuration_attrs, - **kwargs) + configuration_attrs = ["heater_range", "dead_band", "mode", "cntrl"] + super().__init__( + *args, + read_attrs=read_attrs, + configuration_attrs=configuration_attrs, + **kwargs + ) self._target = None self._dead_band = dead_band self._sts = None def _sts_mon(self, value, **kwargs): - if (self._target is None or - np.abs(self._target - value) < self._dead_band): + if self._target is None or np.abs(self._target - value) < self._dead_band: self.T.clear_sub(self._sts_mon) - self.scan.put('Passive', wait=True) + self.scan.put("Passive", wait=True) if self._sts is not None: self._sts._finished() self._sts = None @@ -168,7 +189,7 @@ def set(self, val): self._target = val self.setpoint.put(val, wait=True) sts = self._sts = DeviceStatus(self) - self.scan.put('.2 second') + self.scan.put(".2 second") self.T.subscribe(self._sts_mon) return sts @@ -179,50 +200,56 @@ def stop(self, *, success=False): self._sts._finished(success=success) self._sts = None self._target = None - self.scan.put('Passive', wait=True) + self.scan.put("Passive", wait=True) + class CryoStat2(Device): # readback - T = Cpt(EpicsSignalRO, ':IN2') + T = Cpt(EpicsSignalRO, ":IN2") # setpoint - setpoint = Cpt(EpicsSignal, read_pv=":OUT2:SP_RBV", - write_pv=":OUT2:SP", - add_prefix=('suffix', 'read_pv', 'write_pv')) + setpoint = Cpt( + EpicsSignal, + read_pv=":OUT2:SP_RBV", + write_pv=":OUT2:SP", + add_prefix=("suffix", "read_pv", "write_pv"), + ) # heater power level - heater = Cpt(EpicsSignal, ':HTR2') + heater = Cpt(EpicsSignal, ":HTR2") # configuration - dead_band = Cpt(AttributeSignal, attr='_dead_band') - heater_range = Cpt(EpicsSignal, ':HTR2:Range', string=True) - scan = Cpt(EpicsSignal, ':read.SCAN', string=True) - mode = Cpt(EpicsSignal, ':OUT2:Mode', string=True) - cntrl = Cpt(EpicsSignal, ':OUT2:Cntrl', string=True) + dead_band = Cpt(AttributeSignal, attr="_dead_band") + heater_range = Cpt(EpicsSignal, ":HTR2:Range", string=True) + scan = Cpt(EpicsSignal, ":read.SCAN", string=True) + mode = Cpt(EpicsSignal, ":OUT2:Mode", string=True) + cntrl = Cpt(EpicsSignal, ":OUT2:Cntrl", string=True) # trigger signal - trig = Cpt(EpicsSignal, ':read.PROC') + trig = Cpt(EpicsSignal, ":read.PROC") def trigger(self): self.trig.put(1, wait=True) return DeviceStatus(self, done=True, success=True) - def __init__(self, *args, dead_band, read_attrs=None, - configuration_attrs=None, **kwargs): + def __init__( + self, *args, dead_band, read_attrs=None, configuration_attrs=None, **kwargs + ): if read_attrs is None: - read_attrs = ['T', 'setpoint'] + read_attrs = ["T", "setpoint"] if configuration_attrs is None: - configuration_attrs = ['heater_range', 'dead_band', - 'mode', 'cntrl'] - super().__init__(*args, read_attrs=read_attrs, - configuration_attrs=configuration_attrs, - **kwargs) + configuration_attrs = ["heater_range", "dead_band", "mode", "cntrl"] + super().__init__( + *args, + read_attrs=read_attrs, + configuration_attrs=configuration_attrs, + **kwargs + ) self._target = None self._dead_band = dead_band self._sts = None def _sts_mon(self, value, **kwargs): - if (self._target is None or - np.abs(self._target - value) < self._dead_band): + if self._target is None or np.abs(self._target - value) < self._dead_band: self.T.clear_sub(self._sts_mon) - self.scan.put('Passive', wait=True) + self.scan.put("Passive", wait=True) if self._sts is not None: self._sts._finished() self._sts = None @@ -232,7 +259,7 @@ def set(self, val): self._target = val self.setpoint.put(val, wait=True) sts = self._sts = DeviceStatus(self) - self.scan.put('.2 second') + self.scan.put(".2 second") self.T.subscribe(self._sts_mon) return sts @@ -243,22 +270,23 @@ def stop(self, *, success=False): self._sts._finished(success=success) self._sts = None self._target = None - self.scan.put('Passive', wait=True) + self.scan.put("Passive", wait=True) -cryostat1 = CryoStat1('XF:28ID1-ES1:LS335:{CryoStat}', name='cryostat1', dead_band=1) -cryostat2 = CryoStat2('XF:28ID1-ES1:LS335:{CryoStat}', name='cryostat2', dead_band=1) + +cryostat1 = CryoStat1("XF:28ID1-ES1:LS335:{CryoStat}", name="cryostat1", dead_band=1) +cryostat2 = CryoStat2("XF:28ID1-ES1:LS335:{CryoStat}", name="cryostat2", dead_band=1) # TODO : PV needs to be fixed for done signal # (doesn't work on ramp down) class LinkamFurnace(PVPositioner): - readback = C(EpicsSignalRO, 'TEMP') - setpoint = C(EpicsSignal, 'RAMP:LIMIT:SET') - done = C(EpicsSignalRO, 'STATUS') - stop_signal = C(EpicsSignal, 'RAMP:CTRL:SET') + readback = C(EpicsSignalRO, "TEMP") + setpoint = C(EpicsSignal, "RAMP:LIMIT:SET") + done = C(EpicsSignalRO, "STATUS") + stop_signal = C(EpicsSignal, "RAMP:CTRL:SET") temperature = C(EpicsSignal, "TEMP") def set(self, *args, timeout=None, **kwargs): - + return super().set(*args, timeout=timeout, **kwargs) def trigger(self): @@ -269,35 +297,42 @@ def trigger(self): status._finished() return status + # To allow for sample temperature equilibration time, increase # the `settle_time` parameter (units: seconds). -linkam_furnace = LinkamFurnace('XF:28ID1-ES{LINKAM}:', name='cs700', - settle_time=0) +linkam_furnace = LinkamFurnace("XF:28ID1-ES{LINKAM}:", name="cs700", settle_time=0) linkam_furnace.done_value = 3 linkam_furnace.stop_value = 0 linkam_furnace.setpoint.kind = "normal" linkam_furnace.readback.kind = "normal" -linkam_furnace.readback.name = 'temperature' -linkam_furnace.setpoint.name = 'temperature_setpoint' +linkam_furnace.readback.name = "temperature" +linkam_furnace.setpoint.name = "temperature_setpoint" ## MA class Magnet(PVPositioner): - readback = Cpt(EpicsSignalRO, 'IMAG') - setpoint = Cpt(EpicsSignal, 'SETIPRG') - done = Cpt(EpicsSignalRO, 'SETI-Done1') + readback = Cpt(EpicsSignalRO, "IMAG") + setpoint = Cpt(EpicsSignal, "SETIPRG") + done = Cpt(EpicsSignalRO, "SETI-Done1") + -magnet = Magnet('XF:28ID1-ES{LS625:1}:', name='magnet') -magnet.done_value =0 +magnet = Magnet("XF:28ID1-ES{LS625:1}:", name="magnet") +magnet.done_value = 0 # #########control voltage on eurotherm directly -eurovolt = EpicsSignal('XF:28ID1-ES:1{Env:04}Out-SP', name='eurovolt') +eurovolt = EpicsSignal("XF:28ID1-ES:1{Env:04}Out-SP", name="eurovolt") from collections import deque -from ophyd import (EpicsMotor, PVPositioner, PVPositionerPC, - EpicsSignal, EpicsSignalRO, Device) +from ophyd import ( + EpicsMotor, + PVPositioner, + PVPositionerPC, + EpicsSignal, + EpicsSignalRO, + Device, +) from ophyd import Component as Cpt from ophyd import FormattedComponent as FmtCpt from ophyd import DynamicDeviceComponent as DDC @@ -305,48 +340,55 @@ class Magnet(PVPositioner): class Lakeshore336Setpoint(PVPositioner): - readback = Cpt(EpicsSignalRO, 'T-RB') - setpoint = Cpt(EpicsSignal, 'T-SP') - done = Cpt(EpicsSignalRO, 'Sts:Ramp-Sts') - ramp_enabled = Cpt(EpicsSignal, 'Enbl:Ramp-Sel') - ramp_rate = Cpt(EpicsSignal, 'Val:Ramp-SP') - p_gain = Cpt(EpicsSignal, 'Gain:P-RB', write_pv='Gain:P-SP') - i_gain = Cpt(EpicsSignal, 'Gain:I-RB', write_pv='Gain:I-SP') - d_gain = Cpt(EpicsSignal, 'Gain:D-RB', write_pv='Gain:D-SP') + readback = Cpt(EpicsSignalRO, "T-RB") + setpoint = Cpt(EpicsSignal, "T-SP") + done = Cpt(EpicsSignalRO, "Sts:Ramp-Sts") + ramp_enabled = Cpt(EpicsSignal, "Enbl:Ramp-Sel") + ramp_rate = Cpt(EpicsSignal, "Val:Ramp-SP") + p_gain = Cpt(EpicsSignal, "Gain:P-RB", write_pv="Gain:P-SP") + i_gain = Cpt(EpicsSignal, "Gain:I-RB", write_pv="Gain:I-SP") + d_gain = Cpt(EpicsSignal, "Gain:D-RB", write_pv="Gain:D-SP") done_value = 0 class Lakeshore336Channel(Device): - T = Cpt(EpicsSignalRO, 'T-I') - V = Cpt(EpicsSignalRO, 'Val:Sens-I') - status = Cpt(EpicsSignalRO, 'T-Sts') + T = Cpt(EpicsSignalRO, "T-I") + V = Cpt(EpicsSignalRO, "Val:Sens-I") + status = Cpt(EpicsSignalRO, "T-Sts") def _temp_fields(chans, **kwargs): defn = OrderedDict() for c in chans: - suffix = '-Chan:{}}}'.format(c) + suffix = "-Chan:{}}}".format(c) defn[c] = (Lakeshore336Channel, suffix, kwargs) return defn class Lakeshore336(Device): - temp = DDC(_temp_fields(['A','B','C','D'])) - out1 = Cpt(Lakeshore336Setpoint, '-Out:1}') - out2 = Cpt(Lakeshore336Setpoint, '-Out:2}') - out3 = Cpt(Lakeshore336Setpoint, '-Out:3}') - out4 = Cpt(Lakeshore336Setpoint, '-Out:4}') + temp = DDC(_temp_fields(["A", "B", "C", "D"])) + out1 = Cpt(Lakeshore336Setpoint, "-Out:1}") + out2 = Cpt(Lakeshore336Setpoint, "-Out:2}") + out3 = Cpt(Lakeshore336Setpoint, "-Out:3}") + out4 = Cpt(Lakeshore336Setpoint, "-Out:4}") -lakeshore336 = Lakeshore336('XF:28ID1-ES{LS336:1' , name='lakeshore336') +lakeshore336 = Lakeshore336("XF:28ID1-ES{LS336:1", name="lakeshore336") -hotairblower=Eurotherm('XF:28ID1-ES:1{Env:05}LOOP1:PV:RBV', - write_pv='XF:28ID1-ES:1{Env:05}LOOP1:SP', - tolerance=1,name='hotairblower') +hotairblower = Eurotherm( + "XF:28ID1-ES:1{Env:05}LOOP1:PV:RBV", + write_pv="XF:28ID1-ES:1{Env:05}LOOP1:SP", + tolerance=1, + name="hotairblower", +) -#older hot air blower -#hotairblower=Eurotherm('XF:28ID1-ES:1{Env:03}T-I', +# older hot air blower +# hotairblower=Eurotherm('XF:28ID1-ES:1{Env:03}T-I', # write_pv='XF:28ID1-ES:1{Env:03}T-SP', # tolerance=1,name='hotairblower') -sorensen850_manual = EpicsSignal('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') +sorensen850_manual = EpicsSignal( + "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", +) diff --git a/startup/11-temperature-controller_py_save.bak b/startup/11-temperature-controller_py_save.bak index 188f551..de47570 100644 --- a/startup/11-temperature-controller_py_save.bak +++ b/startup/11-temperature-controller_py_save.bak @@ -9,10 +9,10 @@ from ophyd import PVPositioner class CS700TemperatureController(PVPositioner): - readback = C(EpicsSignalRO, 'T-I') - setpoint = C(EpicsSignal, 'T-SP') - done = C(EpicsSignalRO, 'Cmd-Busy') - stop_signal = C(EpicsSignal, 'Cmd-Cmd') + readback = C(EpicsSignalRO, "T-I") + setpoint = C(EpicsSignal, "T-SP") + done = C(EpicsSignalRO, "Cmd-Busy") + stop_signal = C(EpicsSignal, "Cmd-Cmd") def set(self, *args, timeout=None, **kwargs): return super().set(*args, timeout=timeout, **kwargs) @@ -25,6 +25,7 @@ class CS700TemperatureController(PVPositioner): status._finished() return status + # To allow for sample temperature equilibration time, increase # the `settle_time` parameter (units: seconds). """ @@ -38,59 +39,70 @@ cs700.setpoint.name = 'temperature_setpoint' # TODO: add later once available + class Eurotherm(EpicsSignalPositioner): def set(self, *args, **kwargs): # override #@!$(#$ hard-coded timeouts return super().set(*args, timeout=1000000, **kwargs) -eurotherm = Eurotherm('XF:28ID1-ES:1{Env:04}T-I', - write_pv='XF:28ID1-ES:1{Env:04}T-SP', - tolerance=1, name='eurotherm') + +eurotherm = Eurotherm( + "XF:28ID1-ES:1{Env:04}T-I", + write_pv="XF:28ID1-ES:1{Env:04}T-SP", + tolerance=1, + name="eurotherm", +) eurotherm.settle_time = 120 class CryoStream(Device): # readback - T = Cpt(EpicsSignalRO, 'T-I') + T = Cpt(EpicsSignalRO, "T-I") # setpoint - setpoint = Cpt(EpicsSignal, read_pv="T-RB", - write_pv="T-SP", - add_prefix=('suffix', 'read_pv', 'write_pv')) + setpoint = Cpt( + EpicsSignal, + read_pv="T-RB", + write_pv="T-SP", + add_prefix=("suffix", "read_pv", "write_pv"), + ) # heater power level - heater = Cpt(EpicsSignal, ':HTR1') + heater = Cpt(EpicsSignal, ":HTR1") # configuration - dead_band = Cpt(EpicsSignal, 'T:AtSP-SP', string=True) - heater_range = Cpt(EpicsSignal, ':HTR1:Range', string=True) + dead_band = Cpt(EpicsSignal, "T:AtSP-SP", string=True) + heater_range = Cpt(EpicsSignal, ":HTR1:Range", string=True) # don't know what this is? - #scan = Cpt(EpicsSignal, ':read.SCAN', string=True) - mode = Cpt(EpicsSignal, ':OUT1:Mode', string=True) - cntrl = Cpt(EpicsSignal, ':OUT1:Cntrl', string=True) + # scan = Cpt(EpicsSignal, ':read.SCAN', string=True) + mode = Cpt(EpicsSignal, ":OUT1:Mode", string=True) + cntrl = Cpt(EpicsSignal, ":OUT1:Cntrl", string=True) # trigger signal - trig = Cpt(EpicsSignal, ':read.PROC') + trig = Cpt(EpicsSignal, ":read.PROC") - #def trigger(self): - #self.trig.put(1, wait=True) - #return DeviceStatus(self, done=True, success=True) + # def trigger(self): + # self.trig.put(1, wait=True) + # return DeviceStatus(self, done=True, success=True) - def __init__(self, *args, read_attrs=None, - configuration_attrs=None, **kwargs): + def __init__(self, *args, read_attrs=None, configuration_attrs=None, **kwargs): if read_attrs is None: - read_attrs = ['T', 'setpoint'] - #if configuration_attrs is None: - #configuration_attrs = ['heater_range', 'dead_band', - #'mode', 'cntrl'] - super().__init__(*args, read_attrs=read_attrs, - configuration_attrs=configuration_attrs, - **kwargs) + read_attrs = ["T", "setpoint"] + # if configuration_attrs is None: + # configuration_attrs = ['heater_range', 'dead_band', + #'mode', 'cntrl'] + super().__init__( + *args, + read_attrs=read_attrs, + configuration_attrs=configuration_attrs, + **kwargs + ) self._target = None self._sts = None def _sts_mon(self, value, **kwargs): - if (self._target is None or - np.abs(self._target - value) < float(self.dead_band.get())): + if self._target is None or np.abs(self._target - value) < float( + self.dead_band.get() + ): self.T.clear_sub(self._sts_mon) - #self.scan.put('Passive', wait=True) + # self.scan.put('Passive', wait=True) if self._sts is not None: self._sts._finished() self._sts = None @@ -98,9 +110,9 @@ class CryoStream(Device): def set(self, val): self._target = val - self.setpoint.put(val)#, wait=True) + self.setpoint.put(val) # , wait=True) sts = self._sts = DeviceStatus(self) - #self.scan.put('.2 second') + # self.scan.put('.2 second') self.T.subscribe(self._sts_mon) return sts @@ -111,55 +123,60 @@ class CryoStream(Device): self._sts._finished(success=success) self._sts = None self._target = None - #self.scan.put('Passive', wait=True) + # self.scan.put('Passive', wait=True) # TODO: uncomment later once the device is available -cryostream = CryoStream('XF:28ID1-ES:1{Env:01}', name='cryostream') +cryostream = CryoStream("XF:28ID1-ES:1{Env:01}", name="cryostream") class CryoStat1(Device): # readback - T = Cpt(EpicsSignalRO, ':IN1') + T = Cpt(EpicsSignalRO, ":IN1") # setpoint - setpoint = Cpt(EpicsSignal, read_pv=":OUT1:SP_RBV", - write_pv=":OUT1:SP", - add_prefix=('suffix', 'read_pv', 'write_pv')) + setpoint = Cpt( + EpicsSignal, + read_pv=":OUT1:SP_RBV", + write_pv=":OUT1:SP", + add_prefix=("suffix", "read_pv", "write_pv"), + ) # heater power level - heater = Cpt(EpicsSignal, ':HTR1') + heater = Cpt(EpicsSignal, ":HTR1") # configuration - dead_band = Cpt(AttributeSignal, attr='_dead_band') - heater_range = Cpt(EpicsSignal, ':HTR1:Range', string=True) - scan = Cpt(EpicsSignal, ':read.SCAN', string=True) - mode = Cpt(EpicsSignal, ':OUT1:Mode', string=True) - cntrl = Cpt(EpicsSignal, ':OUT1:Cntrl', string=True) + dead_band = Cpt(AttributeSignal, attr="_dead_band") + heater_range = Cpt(EpicsSignal, ":HTR1:Range", string=True) + scan = Cpt(EpicsSignal, ":read.SCAN", string=True) + mode = Cpt(EpicsSignal, ":OUT1:Mode", string=True) + cntrl = Cpt(EpicsSignal, ":OUT1:Cntrl", string=True) # trigger signal - trig = Cpt(EpicsSignal, ':read.PROC') + trig = Cpt(EpicsSignal, ":read.PROC") def trigger(self): self.trig.put(1, wait=True) return DeviceStatus(self, done=True, success=True) - def __init__(self, *args, dead_band, read_attrs=None, - configuration_attrs=None, **kwargs): + def __init__( + self, *args, dead_band, read_attrs=None, configuration_attrs=None, **kwargs + ): if read_attrs is None: - read_attrs = ['T', 'setpoint'] + read_attrs = ["T", "setpoint"] if configuration_attrs is None: - configuration_attrs = ['heater_range', 'dead_band', - 'mode', 'cntrl'] - super().__init__(*args, read_attrs=read_attrs, - configuration_attrs=configuration_attrs, - **kwargs) + configuration_attrs = ["heater_range", "dead_band", "mode", "cntrl"] + super().__init__( + *args, + read_attrs=read_attrs, + configuration_attrs=configuration_attrs, + **kwargs + ) self._target = None self._dead_band = dead_band self._sts = None def _sts_mon(self, value, **kwargs): - if (self._target is None or - np.abs(self._target - value) < self._dead_band): + if self._target is None or np.abs(self._target - value) < self._dead_band: self.T.clear_sub(self._sts_mon) - self.scan.put('Passive', wait=True) + self.scan.put("Passive", wait=True) if self._sts is not None: self._sts._finished() self._sts = None @@ -169,7 +186,7 @@ class CryoStat1(Device): self._target = val self.setpoint.put(val, wait=True) sts = self._sts = DeviceStatus(self) - self.scan.put('.2 second') + self.scan.put(".2 second") self.T.subscribe(self._sts_mon) return sts @@ -180,50 +197,56 @@ class CryoStat1(Device): self._sts._finished(success=success) self._sts = None self._target = None - self.scan.put('Passive', wait=True) + self.scan.put("Passive", wait=True) + class CryoStat2(Device): # readback - T = Cpt(EpicsSignalRO, ':IN2') + T = Cpt(EpicsSignalRO, ":IN2") # setpoint - setpoint = Cpt(EpicsSignal, read_pv=":OUT2:SP_RBV", - write_pv=":OUT2:SP", - add_prefix=('suffix', 'read_pv', 'write_pv')) + setpoint = Cpt( + EpicsSignal, + read_pv=":OUT2:SP_RBV", + write_pv=":OUT2:SP", + add_prefix=("suffix", "read_pv", "write_pv"), + ) # heater power level - heater = Cpt(EpicsSignal, ':HTR2') + heater = Cpt(EpicsSignal, ":HTR2") # configuration - dead_band = Cpt(AttributeSignal, attr='_dead_band') - heater_range = Cpt(EpicsSignal, ':HTR2:Range', string=True) - scan = Cpt(EpicsSignal, ':read.SCAN', string=True) - mode = Cpt(EpicsSignal, ':OUT2:Mode', string=True) - cntrl = Cpt(EpicsSignal, ':OUT2:Cntrl', string=True) + dead_band = Cpt(AttributeSignal, attr="_dead_band") + heater_range = Cpt(EpicsSignal, ":HTR2:Range", string=True) + scan = Cpt(EpicsSignal, ":read.SCAN", string=True) + mode = Cpt(EpicsSignal, ":OUT2:Mode", string=True) + cntrl = Cpt(EpicsSignal, ":OUT2:Cntrl", string=True) # trigger signal - trig = Cpt(EpicsSignal, ':read.PROC') + trig = Cpt(EpicsSignal, ":read.PROC") def trigger(self): self.trig.put(1, wait=True) return DeviceStatus(self, done=True, success=True) - def __init__(self, *args, dead_band, read_attrs=None, - configuration_attrs=None, **kwargs): + def __init__( + self, *args, dead_band, read_attrs=None, configuration_attrs=None, **kwargs + ): if read_attrs is None: - read_attrs = ['T', 'setpoint'] + read_attrs = ["T", "setpoint"] if configuration_attrs is None: - configuration_attrs = ['heater_range', 'dead_band', - 'mode', 'cntrl'] - super().__init__(*args, read_attrs=read_attrs, - configuration_attrs=configuration_attrs, - **kwargs) + configuration_attrs = ["heater_range", "dead_band", "mode", "cntrl"] + super().__init__( + *args, + read_attrs=read_attrs, + configuration_attrs=configuration_attrs, + **kwargs + ) self._target = None self._dead_band = dead_band self._sts = None def _sts_mon(self, value, **kwargs): - if (self._target is None or - np.abs(self._target - value) < self._dead_band): + if self._target is None or np.abs(self._target - value) < self._dead_band: self.T.clear_sub(self._sts_mon) - self.scan.put('Passive', wait=True) + self.scan.put("Passive", wait=True) if self._sts is not None: self._sts._finished() self._sts = None @@ -233,7 +256,7 @@ class CryoStat2(Device): self._target = val self.setpoint.put(val, wait=True) sts = self._sts = DeviceStatus(self) - self.scan.put('.2 second') + self.scan.put(".2 second") self.T.subscribe(self._sts_mon) return sts @@ -244,22 +267,23 @@ class CryoStat2(Device): self._sts._finished(success=success) self._sts = None self._target = None - self.scan.put('Passive', wait=True) + self.scan.put("Passive", wait=True) -cryostat1 = CryoStat1('XF:28ID1-ES1:LS335:{CryoStat}', name='cryostat1', dead_band=1) -cryostat2 = CryoStat2('XF:28ID1-ES1:LS335:{CryoStat}', name='cryostat2', dead_band=1) + +cryostat1 = CryoStat1("XF:28ID1-ES1:LS335:{CryoStat}", name="cryostat1", dead_band=1) +cryostat2 = CryoStat2("XF:28ID1-ES1:LS335:{CryoStat}", name="cryostat2", dead_band=1) # TODO : PV needs to be fixed for done signal # (doesn't work on ramp down) class LinkamFurnace(PVPositioner): - readback = C(EpicsSignalRO, 'TEMP') - setpoint = C(EpicsSignal, 'RAMP:LIMIT:SET') - done = C(EpicsSignalRO, 'STATUS') - stop_signal = C(EpicsSignal, 'RAMP:CTRL:SET') + readback = C(EpicsSignalRO, "TEMP") + setpoint = C(EpicsSignal, "RAMP:LIMIT:SET") + done = C(EpicsSignalRO, "STATUS") + stop_signal = C(EpicsSignal, "RAMP:CTRL:SET") temperature = C(EpicsSignal, "TEMP") def set(self, *args, timeout=None, **kwargs): - + return super().set(*args, timeout=timeout, **kwargs) def trigger(self): @@ -270,13 +294,13 @@ class LinkamFurnace(PVPositioner): status._finished() return status + # To allow for sample temperature equilibration time, increase # the `settle_time` parameter (units: seconds). -linkam_furnace = LinkamFurnace('XF:28ID1-ES{LINKAM}:', name='cs700', - settle_time=0) +linkam_furnace = LinkamFurnace("XF:28ID1-ES{LINKAM}:", name="cs700", settle_time=0) linkam_furnace.done_value = 3 linkam_furnace.stop_value = 0 linkam_furnace.setpoint.kind = "normal" linkam_furnace.readback.kind = "normal" -linkam_furnace.readback.name = 'temperature' -linkam_furnace.setpoint.name = 'temperature_setpoint' +linkam_furnace.readback.name = "temperature" +linkam_furnace.setpoint.name = "temperature_setpoint" diff --git a/startup/11-temperature-controller_pyes.bak b/startup/11-temperature-controller_pyes.bak index 32446b8..6e86f05 100644 --- a/startup/11-temperature-controller_pyes.bak +++ b/startup/11-temperature-controller_pyes.bak @@ -8,10 +8,10 @@ from ophyd import PVPositioner class CS700TemperatureController(PVPositioner): - readback = C(EpicsSignalRO, 'T-I') - setpoint = C(EpicsSignal, 'T-SP') - done = C(EpicsSignalRO, 'Cmd-Busy') - stop_signal = C(EpicsSignal, 'Cmd-Cmd') + readback = C(EpicsSignalRO, "T-I") + setpoint = C(EpicsSignal, "T-SP") + done = C(EpicsSignalRO, "Cmd-Busy") + stop_signal = C(EpicsSignal, "Cmd-Cmd") def set(self, *args, timeout=None, **kwargs): return super().set(*args, timeout=timeout, **kwargs) @@ -24,6 +24,7 @@ class CS700TemperatureController(PVPositioner): status._finished() return status + # To allow for sample temperature equilibration time, increase # the `settle_time` parameter (units: seconds). """ @@ -47,48 +48,55 @@ eurotherm = Eurotherm('XF:28IDC-ES:1{Env:04}T-I', tolerance= 3, name='eurotherm') """ + class CryoStream(Device): # readback - T = Cpt(EpicsSignalRO, 'T-I') + T = Cpt(EpicsSignalRO, "T-I") # setpoint - setpoint = Cpt(EpicsSignal, read_pv="T-RB", - write_pv="T-SP", - add_prefix=('suffix', 'read_pv', 'write_pv')) + setpoint = Cpt( + EpicsSignal, + read_pv="T-RB", + write_pv="T-SP", + add_prefix=("suffix", "read_pv", "write_pv"), + ) # heater power level - heater = Cpt(EpicsSignal, ':HTR1') + heater = Cpt(EpicsSignal, ":HTR1") # configuration - dead_band = Cpt(EpicsSignal, 'T:AtSP-SP', string=True) - heater_range = Cpt(EpicsSignal, ':HTR1:Range', string=True) + dead_band = Cpt(EpicsSignal, "T:AtSP-SP", string=True) + heater_range = Cpt(EpicsSignal, ":HTR1:Range", string=True) # don't know what this is? - #scan = Cpt(EpicsSignal, ':read.SCAN', string=True) - mode = Cpt(EpicsSignal, ':OUT1:Mode', string=True) - cntrl = Cpt(EpicsSignal, ':OUT1:Cntrl', string=True) + # scan = Cpt(EpicsSignal, ':read.SCAN', string=True) + mode = Cpt(EpicsSignal, ":OUT1:Mode", string=True) + cntrl = Cpt(EpicsSignal, ":OUT1:Cntrl", string=True) # trigger signal - trig = Cpt(EpicsSignal, ':read.PROC') + trig = Cpt(EpicsSignal, ":read.PROC") - #def trigger(self): - #self.trig.put(1, wait=True) - #return DeviceStatus(self, done=True, success=True) + # def trigger(self): + # self.trig.put(1, wait=True) + # return DeviceStatus(self, done=True, success=True) - def __init__(self, *args, read_attrs=None, - configuration_attrs=None, **kwargs): + def __init__(self, *args, read_attrs=None, configuration_attrs=None, **kwargs): if read_attrs is None: - read_attrs = ['T', 'setpoint'] - #if configuration_attrs is None: - #configuration_attrs = ['heater_range', 'dead_band', - #'mode', 'cntrl'] - super().__init__(*args, read_attrs=read_attrs, - configuration_attrs=configuration_attrs, - **kwargs) + read_attrs = ["T", "setpoint"] + # if configuration_attrs is None: + # configuration_attrs = ['heater_range', 'dead_band', + #'mode', 'cntrl'] + super().__init__( + *args, + read_attrs=read_attrs, + configuration_attrs=configuration_attrs, + **kwargs + ) self._target = None self._sts = None def _sts_mon(self, value, **kwargs): - if (self._target is None or - np.abs(self._target - value) < float(self.dead_band.get())): + if self._target is None or np.abs(self._target - value) < float( + self.dead_band.get() + ): self.T.clear_sub(self._sts_mon) - #self.scan.put('Passive', wait=True) + # self.scan.put('Passive', wait=True) if self._sts is not None: self._sts._finished() self._sts = None @@ -96,9 +104,9 @@ class CryoStream(Device): def set(self, val): self._target = val - self.setpoint.put(val)#, wait=True) + self.setpoint.put(val) # , wait=True) sts = self._sts = DeviceStatus(self) - #self.scan.put('.2 second') + # self.scan.put('.2 second') self.T.subscribe(self._sts_mon) return sts @@ -109,55 +117,61 @@ class CryoStream(Device): self._sts._finished(success=success) self._sts = None self._target = None - #self.scan.put('Passive', wait=True) + # self.scan.put('Passive', wait=True) # TODO: uncomment later once the device is available -cryostream = CryoStream('XF:28ID1-ES:1{Env:01}', name='cryostream') +cryostream = CryoStream("XF:28ID1-ES:1{Env:01}", name="cryostream") + class CryoStat(Device): # readback - T = Cpt(EpicsSignalRO, ':IN1') + T = Cpt(EpicsSignalRO, ":IN1") # setpoint - setpoint = Cpt(EpicsSignal, read_pv=":OUT1:SP_RBV", - write_pv=":OUT1:SP", - add_prefix=('suffix', 'read_pv', 'write_pv')) + setpoint = Cpt( + EpicsSignal, + read_pv=":OUT1:SP_RBV", + write_pv=":OUT1:SP", + add_prefix=("suffix", "read_pv", "write_pv"), + ) # heater power level - heater = Cpt(EpicsSignal, ':HTR1') + heater = Cpt(EpicsSignal, ":HTR1") # configuration - dead_band = Cpt(AttributeSignal, attr='_dead_band') - heater_range = Cpt(EpicsSignal, ':HTR1:Range', string=True) - scan = Cpt(EpicsSignal, ':read.SCAN', string=True) - mode = Cpt(EpicsSignal, ':OUT1:Mode', string=True) - cntrl = Cpt(EpicsSignal, ':OUT1:Cntrl', string=True) + dead_band = Cpt(AttributeSignal, attr="_dead_band") + heater_range = Cpt(EpicsSignal, ":HTR1:Range", string=True) + scan = Cpt(EpicsSignal, ":read.SCAN", string=True) + mode = Cpt(EpicsSignal, ":OUT1:Mode", string=True) + cntrl = Cpt(EpicsSignal, ":OUT1:Cntrl", string=True) # trigger signal - trig = Cpt(EpicsSignal, ':read.PROC') + trig = Cpt(EpicsSignal, ":read.PROC") def trigger(self): self.trig.put(1, wait=True) return DeviceStatus(self, done=True, success=True) - def __init__(self, *args, dead_band, read_attrs=None, - configuration_attrs=None, **kwargs): + def __init__( + self, *args, dead_band, read_attrs=None, configuration_attrs=None, **kwargs + ): if read_attrs is None: - read_attrs = ['T', 'setpoint'] + read_attrs = ["T", "setpoint"] if configuration_attrs is None: - configuration_attrs = ['heater_range', 'dead_band', - 'mode', 'cntrl'] - super().__init__(*args, read_attrs=read_attrs, - configuration_attrs=configuration_attrs, - **kwargs) + configuration_attrs = ["heater_range", "dead_band", "mode", "cntrl"] + super().__init__( + *args, + read_attrs=read_attrs, + configuration_attrs=configuration_attrs, + **kwargs + ) self._target = None self._dead_band = dead_band self._sts = None def _sts_mon(self, value, **kwargs): - if (self._target is None or - np.abs(self._target - value) < self._dead_band): + if self._target is None or np.abs(self._target - value) < self._dead_band: self.T.clear_sub(self._sts_mon) - self.scan.put('Passive', wait=True) + self.scan.put("Passive", wait=True) if self._sts is not None: self._sts._finished() self._sts = None @@ -167,7 +181,7 @@ class CryoStat(Device): self._target = val self.setpoint.put(val, wait=True) sts = self._sts = DeviceStatus(self) - self.scan.put('.2 second') + self.scan.put(".2 second") self.T.subscribe(self._sts_mon) return sts @@ -178,22 +192,22 @@ class CryoStat(Device): self._sts._finished(success=success) self._sts = None self._target = None - self.scan.put('Passive', wait=True) + self.scan.put("Passive", wait=True) -cryostat = CryoStat('XF:28ID1-ES1:LS335:{CryoStat}', name='cryostat', dead_band=1) +cryostat = CryoStat("XF:28ID1-ES1:LS335:{CryoStat}", name="cryostat", dead_band=1) # TODO : PV needs to be fixed for done signal # (doesn't work on ramp down) class LinkamFurnace(PVPositioner): - readback = C(EpicsSignalRO, 'TEMP') - setpoint = C(EpicsSignal, 'RAMP:LIMIT:SET') - done = C(EpicsSignalRO, 'STATUS') - stop_signal = C(EpicsSignal, 'RAMP:CTRL:SET') + readback = C(EpicsSignalRO, "TEMP") + setpoint = C(EpicsSignal, "RAMP:LIMIT:SET") + done = C(EpicsSignalRO, "STATUS") + stop_signal = C(EpicsSignal, "RAMP:CTRL:SET") temperature = C(EpicsSignal, "TEMP") def set(self, *args, timeout=None, **kwargs): - + return super().set(*args, timeout=timeout, **kwargs) def trigger(self): @@ -204,13 +218,13 @@ class LinkamFurnace(PVPositioner): status._finished() return status + # To allow for sample temperature equilibration time, increase # the `settle_time` parameter (units: seconds). -linkam_furnace = LinkamFurnace('XF:28ID1-ES{LINKAM}:', name='cs700', - settle_time=0) +linkam_furnace = LinkamFurnace("XF:28ID1-ES{LINKAM}:", name="cs700", settle_time=0) linkam_furnace.done_value = 3 linkam_furnace.stop_value = 0 linkam_furnace.setpoint.kind = "normal" linkam_furnace.readback.kind = "normal" -linkam_furnace.readback.name = 'temperature' -linkam_furnace.setpoint.name = 'temperature_setpoint' +linkam_furnace.readback.name = "temperature" +linkam_furnace.setpoint.name = "temperature_setpoint" diff --git a/startup/12-motors.py b/startup/12-motors.py index f05813c..2b9e99c 100644 --- a/startup/12-motors.py +++ b/startup/12-motors.py @@ -1,84 +1,127 @@ import ophyd -from ophyd import (Device, Component as Cpt, - EpicsSignal, EpicsSignalRO, EpicsMotor) +from ophyd import Device, Component as Cpt, EpicsSignal, EpicsSignalRO, EpicsMotor from nslsii.devices import TwoButtonShutter -#import nslsii.devices -Det_1_X = EpicsMotor('XF:28ID1B-ES{Det:1-Ax:X}Mtr', name='Det_1_X', labels=['positioners']) -Det_1_Y = EpicsMotor('XF:28ID1B-ES{Det:1-Ax:Y}Mtr', name='Det_1_Y', labels=['positioners']) -Det_1_Z = EpicsMotor('XF:28ID1B-ES{Det:1-Ax:Z}Mtr', name='Det_1_Z', labels=['positioners']) - -Det_2_X = EpicsMotor('XF:28ID1B-ES{Det:2-Ax:X}Mtr', name='Det_2_X', labels=['positioners']) -Det_2_Y = EpicsMotor('XF:28ID1B-ES{Det:2-Ax:Y}Mtr', name='Det_2_Y', labels=['positioners']) -Det_2_Z = EpicsMotor('XF:28ID1B-ES{Det:2-Ax:Z}Mtr', name='Det_2_Z', labels=['positioners']) - -Grid_X = EpicsMotor('XF:28ID1B-ES{Env:1-Ax:X}Mtr', name='Grid_X', labels=['positioners']) -Grid_Y = EpicsMotor('XF:28ID1B-ES{Env:1-Ax:Y}Mtr', name='Grid_Y', labels=['positioners']) -Grid_Z = EpicsMotor('XF:28ID1B-ES{Env:1-Ax:Z}Mtr', name='Grid_Z', labels=['positioners']) +# import nslsii.devices + +Det_1_X = EpicsMotor( + "XF:28ID1B-ES{Det:1-Ax:X}Mtr", name="Det_1_X", labels=["positioners"] +) +Det_1_Y = EpicsMotor( + "XF:28ID1B-ES{Det:1-Ax:Y}Mtr", name="Det_1_Y", labels=["positioners"] +) +Det_1_Z = EpicsMotor( + "XF:28ID1B-ES{Det:1-Ax:Z}Mtr", name="Det_1_Z", labels=["positioners"] +) + +Det_2_X = EpicsMotor( + "XF:28ID1B-ES{Det:2-Ax:X}Mtr", name="Det_2_X", labels=["positioners"] +) +Det_2_Y = EpicsMotor( + "XF:28ID1B-ES{Det:2-Ax:Y}Mtr", name="Det_2_Y", labels=["positioners"] +) +Det_2_Z = EpicsMotor( + "XF:28ID1B-ES{Det:2-Ax:Z}Mtr", name="Det_2_Z", labels=["positioners"] +) + +Grid_X = EpicsMotor( + "XF:28ID1B-ES{Env:1-Ax:X}Mtr", name="Grid_X", labels=["positioners"] +) +Grid_Y = EpicsMotor( + "XF:28ID1B-ES{Env:1-Ax:Y}Mtr", name="Grid_Y", labels=["positioners"] +) +Grid_Z = EpicsMotor( + "XF:28ID1B-ES{Env:1-Ax:Z}Mtr", name="Grid_Z", labels=["positioners"] +) # Beam stop motors class BeamStop(Device): - x = Cpt(EpicsMotor, 'X}Mtr') - y = Cpt(EpicsMotor, 'Y}Mtr') + x = Cpt(EpicsMotor, "X}Mtr") + y = Cpt(EpicsMotor, "Y}Mtr") -BStop1 = BeamStop('XF:28ID1B-ES{BS:1-Ax:', name='BStop1') -BStop2 = BeamStop('XF:28ID1B-ES{BS:2-Ax:', name='BStop2') + +BStop1 = BeamStop("XF:28ID1B-ES{BS:1-Ax:", name="BStop1") +BStop2 = BeamStop("XF:28ID1B-ES{BS:2-Ax:", name="BStop2") # OCM table widget class OCMTable(Device): - ocm_y_upstream = Cpt(EpicsMotor, 'YU}Mtr') - ocm_y_downstream = Cpt(EpicsMotor, 'YD}Mtr') - ocm_x_table = Cpt(EpicsMotor, 'X}Mtr') + ocm_y_upstream = Cpt(EpicsMotor, "YU}Mtr") + ocm_y_downstream = Cpt(EpicsMotor, "YD}Mtr") + ocm_x_table = Cpt(EpicsMotor, "X}Mtr") -OCM_table = OCMTable('XF:28ID1B-ES{OCM-Ax:', name='OCM_table') -ECS_tel_guide = EpicsMotor('XF:28ID1B-ES{ECS-Ax:X}Mtr', name='ECS_tel_guide') +OCM_table = OCMTable("XF:28ID1B-ES{OCM-Ax:", name="OCM_table") +ECS_tel_guide = EpicsMotor("XF:28ID1B-ES{ECS-Ax:X}Mtr", name="ECS_tel_guide") -class ECS(Device): - laser_y = Cpt(EpicsMotor, 'Lsr:1-Ax:Y}Mtr') - reflective_foil_x = Cpt(EpicsMotor, 'Foil:1-Ax:X}Mtr') - filter_wheel_1_phi = Cpt(EpicsMotor, 'Fltr:Whl1-Ax:Phi}Mtr') - filter_wheel_2_phi = Cpt(EpicsMotor, 'Fltr:Whl2-Ax:Phi}Mtr') -ECS_laser_foil_filter = ECS('XF:28ID1B-ES{', name='ECS_laser_foil_filter') - - -class FilterBank(Device): - flt1 = Cpt(EpicsSignal, '1}Cmd:Opn-Cmd', string=True) - flt2 = Cpt(EpicsSignal, '2}Cmd:Opn-Cmd', string=True) - flt3 = Cpt(EpicsSignal, '3}Cmd:Opn-Cmd', string=True) - flt4 = Cpt(EpicsSignal, '4}Cmd:Opn-Cmd', string=True) +class ECS(Device): + laser_y = Cpt(EpicsMotor, "Lsr:1-Ax:Y}Mtr") + reflective_foil_x = Cpt(EpicsMotor, "Foil:1-Ax:X}Mtr") + filter_wheel_1_phi = Cpt(EpicsMotor, "Fltr:Whl1-Ax:Phi}Mtr") + filter_wheel_2_phi = Cpt(EpicsMotor, "Fltr:Whl2-Ax:Phi}Mtr") -class FilterBankTwoButtonShutter(Device): - flt1 = Cpt(TwoButtonShutter, '1}') - flt2 = Cpt(TwoButtonShutter, '2}') - flt3 = Cpt(TwoButtonShutter, '3}') - flt4 = Cpt(TwoButtonShutter, '4}') -fb = FilterBank('XF:28ID1B-OP{Fltr:', name='fb') -fb_two_button_shutters = FilterBankTwoButtonShutter('XF:28ID1B-OP{Fltr:', name='fb_two_button_shutters') +ECS_laser_foil_filter = ECS("XF:28ID1B-ES{", name="ECS_laser_foil_filter") -# Spinner Goniohead motors, add by HZ -Spinnergo_X = EpicsMotor('XF:28ID1B-ES{Stg:Smpl-Ax:X}Mtr', name='Spinnergo_X', labels=['positioners']) -Spinnergo_Y = EpicsMotor('XF:28ID1B-ES{Stg:Smpl-Ax:Y}Mtr', name='Spinnergo_Y', labels=['positioners']) -Spinnergo_Z = EpicsMotor('XF:28ID1B-ES{Stg:Smpl-Ax:Z}Mtr', name='Spinnergo_Z', labels=['positioners']) -Spinnergo_Ry = EpicsMotor('XF:28ID1B-ES{Stg:Smpl-Ax:Ry}Mtr', name='Spinnergo_Ry', labels=['positioners']) -Tomo_spinner = EpicsMotor('XF:28ID1B-ES{Smpl:Chngr-Ax:YRot}Mtr', name='Tomo_spinner', labels=['positiioners']) +class FilterBank(Device): + flt1 = Cpt(EpicsSignal, "1}Cmd:Opn-Cmd", string=True) + flt2 = Cpt(EpicsSignal, "2}Cmd:Opn-Cmd", string=True) + flt3 = Cpt(EpicsSignal, "3}Cmd:Opn-Cmd", string=True) + flt4 = Cpt(EpicsSignal, "4}Cmd:Opn-Cmd", string=True) -#ECS diffractometer Added by MA -ECS_Sam_tth = EpicsMotor('XF:28ID1B-ES{ECS-Ax:2Th1}Mtr', name='ECS_Sam_tth', labels=['positioners']) -ECS_An_tth = EpicsMotor('XF:28ID1B-ES{ECS-Ax:2Th2}Mtr', name='ECS_An_tth', labels=['positioners']) -ECS_An_th = EpicsMotor('XF:28ID1B-ES{ECS-Ax:Th2}Mtr', name='ECS_An_th', labels=['positioners']) +class FilterBankTwoButtonShutter(Device): + flt1 = Cpt(TwoButtonShutter, "1}") + flt2 = Cpt(TwoButtonShutter, "2}") + flt3 = Cpt(TwoButtonShutter, "3}") + flt4 = Cpt(TwoButtonShutter, "4}") -#detector for ECS - DO and MA -ECS_det1 = EpicsSignalRO( 'XF:28IDC-BI:1{IM:1}:C4_1' ,name='ECS_det1') -#45-degree shifting motor on M6-grid, for use with hot air blower / cryostream with angled sample bracket -broadside45_shifter = EpicsMotor('XF:28ID1B-ES{Smpl:Array-Ax:Horiz}Mtr', name='broadside45_shifter') +fb = FilterBank("XF:28ID1B-OP{Fltr:", name="fb") +fb_two_button_shutters = FilterBankTwoButtonShutter( + "XF:28ID1B-OP{Fltr:", name="fb_two_button_shutters" +) -#NOx BOx x/y sample position -noxbox_x = EpicsMotor('XF:28ID1B-ES{NOx-Ax:X}Mtr', name='noxbox_x') -noxbox_y = EpicsMotor('XF:28ID1B-ES{NOx-Ax:Y}Mtr', name='noxbox_y') +# Spinner Goniohead motors, add by HZ +Spinnergo_X = EpicsMotor( + "XF:28ID1B-ES{Stg:Smpl-Ax:X}Mtr", name="Spinnergo_X", labels=["positioners"] +) +Spinnergo_Y = EpicsMotor( + "XF:28ID1B-ES{Stg:Smpl-Ax:Y}Mtr", name="Spinnergo_Y", labels=["positioners"] +) +Spinnergo_Z = EpicsMotor( + "XF:28ID1B-ES{Stg:Smpl-Ax:Z}Mtr", name="Spinnergo_Z", labels=["positioners"] +) +Spinnergo_Ry = EpicsMotor( + "XF:28ID1B-ES{Stg:Smpl-Ax:Ry}Mtr", name="Spinnergo_Ry", labels=["positioners"] +) + +Tomo_spinner = EpicsMotor( + "XF:28ID1B-ES{Smpl:Chngr-Ax:YRot}Mtr", name="Tomo_spinner", labels=["positiioners"] +) + + +# ECS diffractometer Added by MA +ECS_Sam_tth = EpicsMotor( + "XF:28ID1B-ES{ECS-Ax:2Th1}Mtr", name="ECS_Sam_tth", labels=["positioners"] +) +ECS_An_tth = EpicsMotor( + "XF:28ID1B-ES{ECS-Ax:2Th2}Mtr", name="ECS_An_tth", labels=["positioners"] +) +ECS_An_th = EpicsMotor( + "XF:28ID1B-ES{ECS-Ax:Th2}Mtr", name="ECS_An_th", labels=["positioners"] +) + +# detector for ECS - DO and MA +ECS_det1 = EpicsSignalRO("XF:28IDC-BI:1{IM:1}:C4_1", name="ECS_det1") + +# 45-degree shifting motor on M6-grid, for use with hot air blower / cryostream with angled sample bracket +broadside45_shifter = EpicsMotor( + "XF:28ID1B-ES{Smpl:Array-Ax:Horiz}Mtr", name="broadside45_shifter" +) + +# NOx BOx x/y sample position +noxbox_x = EpicsMotor("XF:28ID1B-ES{NOx-Ax:X}Mtr", name="noxbox_x") +noxbox_y = EpicsMotor("XF:28ID1B-ES{NOx-Ax:Y}Mtr", name="noxbox_y") diff --git a/startup/13-gas_handling.py b/startup/13-gas_handling.py index 0a62aea..e7ef4a5 100644 --- a/startup/13-gas_handling.py +++ b/startup/13-gas_handling.py @@ -1,25 +1,27 @@ from ophyd import Device, Component as Cpt, EpicsSignal, EpicsSignalRO from ophyd import OrderedDict + class RGA(Device): - mass1 = Cpt(EpicsSignal, 'Mass:MID1-SP') - partial_pressure1 = Cpt(EpicsSignalRO, 'P:MID1-I') - mass2 = Cpt(EpicsSignal, 'Mass:MID2-SP') - partial_pressure2 = Cpt(EpicsSignalRO, 'P:MID2-I') - mass3 = Cpt(EpicsSignal, 'Mass:MID3-SP') - partial_pressure3 = Cpt(EpicsSignalRO, 'P:MID3-I') - mass4 = Cpt(EpicsSignal, 'Mass:MID4-SP') - partial_pressure4 = Cpt(EpicsSignalRO, 'P:MID4-I') - mass5 = Cpt(EpicsSignal, 'Mass:MID5-SP') - partial_pressure5 = Cpt(EpicsSignalRO, 'P:MID5-I') - mass6 = Cpt(EpicsSignal, 'Mass:MID6-SP') - partial_pressure6 = Cpt(EpicsSignalRO, 'P:MID6-I') - mass7 = Cpt(EpicsSignal, 'Mass:MID7-SP') - partial_pressure7 = Cpt(EpicsSignalRO, 'P:MID7-I') - mass8 = Cpt(EpicsSignal, 'Mass:MID8-SP') - partial_pressure8 = Cpt(EpicsSignalRO, 'P:MID8-I') - mass9 = Cpt(EpicsSignal, 'Mass:MID9-SP') - partial_pressure9 = Cpt(EpicsSignalRO, 'P:MID9-I') + mass1 = Cpt(EpicsSignal, "Mass:MID1-SP") + partial_pressure1 = Cpt(EpicsSignalRO, "P:MID1-I") + mass2 = Cpt(EpicsSignal, "Mass:MID2-SP") + partial_pressure2 = Cpt(EpicsSignalRO, "P:MID2-I") + mass3 = Cpt(EpicsSignal, "Mass:MID3-SP") + partial_pressure3 = Cpt(EpicsSignalRO, "P:MID3-I") + mass4 = Cpt(EpicsSignal, "Mass:MID4-SP") + partial_pressure4 = Cpt(EpicsSignalRO, "P:MID4-I") + mass5 = Cpt(EpicsSignal, "Mass:MID5-SP") + partial_pressure5 = Cpt(EpicsSignalRO, "P:MID5-I") + mass6 = Cpt(EpicsSignal, "Mass:MID6-SP") + partial_pressure6 = Cpt(EpicsSignalRO, "P:MID6-I") + mass7 = Cpt(EpicsSignal, "Mass:MID7-SP") + partial_pressure7 = Cpt(EpicsSignalRO, "P:MID7-I") + mass8 = Cpt(EpicsSignal, "Mass:MID8-SP") + partial_pressure8 = Cpt(EpicsSignalRO, "P:MID8-I") + mass9 = Cpt(EpicsSignal, "Mass:MID9-SP") + partial_pressure9 = Cpt(EpicsSignalRO, "P:MID9-I") + -rga = RGA('XF:28ID1-ES{RGA:1}', name='rga') +rga = RGA("XF:28ID1-ES{RGA:1}", name="rga") diff --git a/startup/15-optics.py b/startup/15-optics.py index efffd4e..6cbba4c 100644 --- a/startup/15-optics.py +++ b/startup/15-optics.py @@ -2,22 +2,24 @@ from ophyd.status import SubscriptionStatus from ophyd import Signal + class Slits(Device): - top = Cpt(EpicsMotor, 'T}Mtr') - bottom = Cpt(EpicsMotor, 'B}Mtr') - inboard = Cpt(EpicsMotor, 'I}Mtr') - outboard = Cpt(EpicsMotor, 'O}Mtr') - ''' TODO : Add later + top = Cpt(EpicsMotor, "T}Mtr") + bottom = Cpt(EpicsMotor, "B}Mtr") + inboard = Cpt(EpicsMotor, "I}Mtr") + outboard = Cpt(EpicsMotor, "O}Mtr") + """ TODO : Add later xc = Cpt(EpicsMotor, 'XCtr}Mtr') xg = Cpt(EpicsMotor, 'XGap}Mtr') yc = Cpt(EpicsMotor, 'YCtr}Mtr') yg = Cpt(EpicsMotor, 'YGap}Mtr') - ''' + """ + -ocm_slits = Slits('XF:28ID1B-OP{Slt:2-Ax:', name='ocm_slits') # OCM Slits -bdm_slits = Slits('XF:28ID1A-OP{Slt:1-Ax:', name='bdm_slits') # BD Slits -#Added by MA 09/03/2019 -wb_slits = Slits('XF:28ID1A-OP{Slt:0-Ax:', name='wb_slits') # WB Slits +ocm_slits = Slits("XF:28ID1B-OP{Slt:2-Ax:", name="ocm_slits") # OCM Slits +bdm_slits = Slits("XF:28ID1A-OP{Slt:1-Ax:", name="bdm_slits") # BD Slits +# Added by MA 09/03/2019 +wb_slits = Slits("XF:28ID1A-OP{Slt:0-Ax:", name="wb_slits") # WB Slits class SideBounceMono(Device): @@ -29,10 +31,11 @@ class SideBounceMono(Device): bend = Cpt(EpicsMotor, "Bend}Mtr") twist = Cpt(EpicsMotor, "Twist}Mtr") -sbm = SideBounceMono("XF:28ID1A-OP{Mono:SBM-Ax:", name='sbm') + +sbm = SideBounceMono("XF:28ID1A-OP{Mono:SBM-Ax:", name="sbm") # Shutters: -#fs = EpicsSignal('XF:28ID1B-OP{PSh:1-Det:2}Cmd', name='fs') # fast shutter -#temporary fast shutter +# fs = EpicsSignal('XF:28ID1B-OP{PSh:1-Det:2}Cmd', name='fs') # fast shutter +# temporary fast shutter # class tempFSShutter: # # def set(self, value): @@ -55,30 +58,39 @@ class SideBounceMono(Device): # Close the shutter on stop # fs.stop = lambda *args, **kwargs: fs.set(0) + class PDFFastShutter(Device): - cmd = Cpt(EpicsSignal, 'Cmd', kind='omitted') - status = Cpt(EpicsSignal, 'Sts', kind='omitted') - settle_time = Cpt(Signal, kind='config', value=.1) + cmd = Cpt(EpicsSignal, "Cmd", kind="omitted") + status = Cpt(EpicsSignal, "Sts", kind="omitted") + settle_time = Cpt(Signal, kind="config", value=0.1) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.st = None # TODO: ask CJ to change it downstream to only accept the 'Open' or 'Close' strings (no numbers please!). - self.setmap = {'Open': 0, 'Close': 1, - 1: 0, 0: 1} # MR: this is an inversed logic on the xpdacq side - self.readmap = {0: 'Open', 1: 'Close'} + self.setmap = { + "Open": 0, + "Close": 1, + 1: 0, + 0: 1, + } # MR: this is an inversed logic on the xpdacq side + self.readmap = {0: "Open", 1: "Close"} def set(self, val): def check_if_done(value, old_value, **kwargs): - if ((val in ['Open', 1] and value == 0) or - (val in ['Close', 0] and value == 1)): + if (val in ["Open", 1] and value == 0) or ( + val in ["Close", 0] and value == 1 + ): if self.st is not None: self.st._finished() self.st = None return True return False + self.cmd.set(self.setmap[val]) - status = SubscriptionStatus(self.status, check_if_done,settle_time=self.settle_time.get()) + status = SubscriptionStatus( + self.status, check_if_done, settle_time=self.settle_time.get() + ) return status def get(self): @@ -86,54 +98,61 @@ def get(self): def read(self): d = super().read() - d[self.name] = {'value': self.get(), 'timestamp': time.time()} + d[self.name] = {"value": self.get(), "timestamp": time.time()} return d # def stop(self, success=False): # return self.set('Close') -fs = PDFFastShutter('XF:28ID1B-OP{PSh:1-Det:2}', name='fs') +fs = PDFFastShutter("XF:28ID1B-OP{PSh:1-Det:2}", name="fs") class Mirror(Device): - y_upstream = Cpt(EpicsMotor, 'YU}Mtr') - y_downstream_inboard = Cpt(EpicsMotor, 'YDI}Mtr') - y_downstream_outboard = Cpt(EpicsMotor, 'YDO}Mtr') - bend_upstream = Cpt(EpicsMotor, 'BndU}Mtr') - bend_encoder = Cpt(EpicsSignalRO, 'BndU}Pos:Enc-I') - bend_downstream = Cpt(EpicsMotor, 'BndD}Mtr') - twist_encoder = Cpt(EpicsSignalRO, 'BndD}Pos:Enc-I') + y_upstream = Cpt(EpicsMotor, "YU}Mtr") + y_downstream_inboard = Cpt(EpicsMotor, "YDI}Mtr") + y_downstream_outboard = Cpt(EpicsMotor, "YDO}Mtr") + bend_upstream = Cpt(EpicsMotor, "BndU}Mtr") + bend_encoder = Cpt(EpicsSignalRO, "BndU}Pos:Enc-I") + bend_downstream = Cpt(EpicsMotor, "BndD}Mtr") + twist_encoder = Cpt(EpicsSignalRO, "BndD}Pos:Enc-I") # TODO: add coordinated motions later: # y_upstream, y_downstream_inboard, y_downstream_outboard -Mirror_VFM = Mirror('XF:28ID1A-OP{Mir:VFM-Ax:', name='Mirror_VFM') + +Mirror_VFM = Mirror("XF:28ID1A-OP{Mir:VFM-Ax:", name="Mirror_VFM") + class OpticsTableADC(Device): - upstream_jack_inboard = Cpt(EpicsMotor, 'YUI}Mtr') - upstream_jack_outboard = Cpt(EpicsMotor, 'YUO}Mtr') - downstream_jack_outboard = Cpt(EpicsMotor, 'YD}Mtr') - X_upstream = Cpt(EpicsMotor, 'XU}Mtr') - X_downstream = Cpt(EpicsMotor, 'XD}Mtr') - Z = Cpt(EpicsMotor, 'Z}Mtr') + upstream_jack_inboard = Cpt(EpicsMotor, "YUI}Mtr") + upstream_jack_outboard = Cpt(EpicsMotor, "YUO}Mtr") + downstream_jack_outboard = Cpt(EpicsMotor, "YD}Mtr") + X_upstream = Cpt(EpicsMotor, "XU}Mtr") + X_downstream = Cpt(EpicsMotor, "XD}Mtr") + Z = Cpt(EpicsMotor, "Z}Mtr") + + +optics_table_adc = OpticsTableADC( + prefix="XF:28ID1B-ES{Tbl:1-Ax:", name="optics_table_adc" +) -optics_table_adc = OpticsTableADC(prefix="XF:28ID1B-ES{Tbl:1-Ax:", - name="optics_table_adc") class SpinnerGoniohead(Device): - X = Cpt(EpicsMotor, 'X}Mtr') - Y = Cpt(EpicsMotor, 'Y}Mtr') - Z = Cpt(EpicsMotor, 'Z}Mtr') - Ry = Cpt(EpicsMotor, 'Ry}Mtr') + X = Cpt(EpicsMotor, "X}Mtr") + Y = Cpt(EpicsMotor, "Y}Mtr") + Z = Cpt(EpicsMotor, "Z}Mtr") + Ry = Cpt(EpicsMotor, "Ry}Mtr") -spinner_goniohead = SpinnerGoniohead(prefix="XF:28ID1B-ES{Stg:Smpl-Ax:", - name="spinner_goniohead") + +spinner_goniohead = SpinnerGoniohead( + prefix="XF:28ID1B-ES{Stg:Smpl-Ax:", name="spinner_goniohead" +) # Added by MA - Sept 5, 2019 class OCMTable(Device): - upstream_jack = Cpt(EpicsMotor, 'YU}Mtr') - downstream_jack = Cpt(EpicsMotor, 'YD}Mtr') - X = Cpt(EpicsMotor, 'X}Mtr') - -OCM_table = OCMTable(prefix="XF:28ID1B-ES{OCM-Ax:", - name="optics_table") + upstream_jack = Cpt(EpicsMotor, "YU}Mtr") + downstream_jack = Cpt(EpicsMotor, "YD}Mtr") + X = Cpt(EpicsMotor, "X}Mtr") + + +OCM_table = OCMTable(prefix="XF:28ID1B-ES{OCM-Ax:", name="optics_table") diff --git a/startup/20-prosilica.py b/startup/20-prosilica.py index a8d9bbc..6711d6e 100644 --- a/startup/20-prosilica.py +++ b/startup/20-prosilica.py @@ -1,69 +1,95 @@ import time as ttime # tea time from types import SimpleNamespace from datetime import datetime -from ophyd import (ProsilicaDetector, SingleTrigger, TIFFPlugin, - ImagePlugin, StatsPlugin, DetectorBase, HDF5Plugin, - AreaDetector, EpicsSignal, EpicsSignalRO, ROIPlugin, - TransformPlugin, ProcessPlugin, Device) +from ophyd import ( + ProsilicaDetector, + SingleTrigger, + TIFFPlugin, + ImagePlugin, + StatsPlugin, + DetectorBase, + HDF5Plugin, + AreaDetector, + EpicsSignal, + EpicsSignalRO, + ROIPlugin, + TransformPlugin, + ProcessPlugin, + Device, +) from ophyd.areadetector.cam import AreaDetectorCam from ophyd.areadetector.base import ADComponent, EpicsSignalWithRBV -from ophyd.areadetector.filestore_mixins import (FileStoreTIFFIterativeWrite, - FileStoreHDF5IterativeWrite, - FileStoreBase, new_short_uid, - FileStoreIterativeWrite) +from ophyd.areadetector.filestore_mixins import ( + FileStoreTIFFIterativeWrite, + FileStoreHDF5IterativeWrite, + FileStoreBase, + new_short_uid, + FileStoreIterativeWrite, +) from ophyd import Component as Cpt, Signal from ophyd.utils import set_and_wait from pathlib import PurePath -from bluesky.plan_stubs import stage, unstage, open_run, close_run, trigger_and_read, pause +from bluesky.plan_stubs import ( + stage, + unstage, + open_run, + close_run, + trigger_and_read, + pause, +) from collections import OrderedDict class TIFFPluginWithFileStore(TIFFPlugin, FileStoreTIFFIterativeWrite): """Add this as a component to detectors that write TIFFs.""" + pass class TIFFPluginEnsuredOff(TIFFPlugin): """Add this as a component to detectors that do not write TIFFs.""" + def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.stage_sigs.update([('auto_save', 'No')]) + self.stage_sigs.update([("auto_save", "No")]) class StandardProsilica(SingleTrigger, ProsilicaDetector): - image = Cpt(ImagePlugin, 'image1:') - stats1 = Cpt(StatsPlugin, 'Stats1:') - stats2 = Cpt(StatsPlugin, 'Stats2:') - stats3 = Cpt(StatsPlugin, 'Stats3:') - stats4 = Cpt(StatsPlugin, 'Stats4:') - stats5 = Cpt(StatsPlugin, 'Stats5:') - trans1 = Cpt(TransformPlugin, 'Trans1:') - roi1 = Cpt(ROIPlugin, 'ROI1:') - roi2 = Cpt(ROIPlugin, 'ROI2:') - roi3 = Cpt(ROIPlugin, 'ROI3:') - roi4 = Cpt(ROIPlugin, 'ROI4:') - proc1 = Cpt(ProcessPlugin, 'Proc1:') + image = Cpt(ImagePlugin, "image1:") + stats1 = Cpt(StatsPlugin, "Stats1:") + stats2 = Cpt(StatsPlugin, "Stats2:") + stats3 = Cpt(StatsPlugin, "Stats3:") + stats4 = Cpt(StatsPlugin, "Stats4:") + stats5 = Cpt(StatsPlugin, "Stats5:") + trans1 = Cpt(TransformPlugin, "Trans1:") + roi1 = Cpt(ROIPlugin, "ROI1:") + roi2 = Cpt(ROIPlugin, "ROI2:") + roi3 = Cpt(ROIPlugin, "ROI3:") + roi4 = Cpt(ROIPlugin, "ROI4:") + proc1 = Cpt(ProcessPlugin, "Proc1:") # This class does not save TIFFs. We make it aware of the TIFF plugin # only so that it can ensure that the plugin is not auto-saving. - tiff = Cpt(TIFFPluginEnsuredOff, suffix='TIFF1:') + tiff = Cpt(TIFFPluginEnsuredOff, suffix="TIFF1:") def __init__(self, *args, **kwargs): - kwargs.setdefault('labels', ['cameras']) + kwargs.setdefault("labels", ["cameras"]) super().__init__(*args, **kwargs) - self.stats1.total.kind = 'hinted' + self.stats1.total.kind = "hinted" class StandardProsilicaWithTIFF(StandardProsilica): - tiff = Cpt(TIFFPluginWithFileStore, - suffix='TIFF1:', - write_path_template='/nsls2/data/pdf/legacy/raw/psccd/%Y/%m/%d/', - root='/nsls2/data/pdf/legacy/raw/psccd') + tiff = Cpt( + TIFFPluginWithFileStore, + suffix="TIFF1:", + write_path_template="/nsls2/data/pdf/legacy/raw/psccd/%Y/%m/%d/", + root="/nsls2/data/pdf/legacy/raw/psccd", + ) ## This renaming should be reversed: no correspondance between CSS screens, PV names and ophyd.... # As of May 25, 2018 the cameras are not working -''' +""" Test_Cam1 = StandardProsilicaWithTIFF('XF:28ID1-BI{Test-Cam:1}', name='Test_Cam1') Cam2 = StandardProsilicaWithTIFF('XF:28ID1-BI{Cam:2}', name='Cam2') @@ -84,4 +110,4 @@ class StandardProsilicaWithTIFF(StandardProsilica): for camera in [Test_Cam1, Cam2]: camera.read_attrs.append('tiff') camera.tiff.read_attrs = [] -''' +""" diff --git a/startup/25-sample-env.py b/startup/25-sample-env.py index 8a369c0..23d8562 100644 --- a/startup/25-sample-env.py +++ b/startup/25-sample-env.py @@ -1,23 +1,24 @@ - - class SampleEnvironment(Device): - esc_sample_theta = Cpt(EpicsMotor, 'ECS-Ax:Th1}Mtr') - esc_sample_2_theta = Cpt(EpicsMotor, 'ECS-Ax:2Th1}Mtr') - analyzer_theta = Cpt(EpicsMotor, 'ECS-Ax:Th2}Mtr') - analyzer_2_theta = Cpt(EpicsMotor, 'ECS-Ax:2Th2}Mtr') - y = Cpt(EpicsMotor, 'Spn:Caplr-Ax:Y}Mtr') - z = Cpt(EpicsMotor, 'Spn:Caplr-Ax:Z}Mtr') - ry_yaw = Cpt(EpicsMotor, 'Spn:Caplr-Ax:Ry}Mtr') - rz_roll = Cpt(EpicsMotor, 'Spn:Caplr-Ax:Rz}Mtr') + esc_sample_theta = Cpt(EpicsMotor, "ECS-Ax:Th1}Mtr") + esc_sample_2_theta = Cpt(EpicsMotor, "ECS-Ax:2Th1}Mtr") + analyzer_theta = Cpt(EpicsMotor, "ECS-Ax:Th2}Mtr") + analyzer_2_theta = Cpt(EpicsMotor, "ECS-Ax:2Th2}Mtr") + y = Cpt(EpicsMotor, "Spn:Caplr-Ax:Y}Mtr") + z = Cpt(EpicsMotor, "Spn:Caplr-Ax:Z}Mtr") + ry_yaw = Cpt(EpicsMotor, "Spn:Caplr-Ax:Ry}Mtr") + rz_roll = Cpt(EpicsMotor, "Spn:Caplr-Ax:Rz}Mtr") + -ECS_sample_environment = SampleEnvironment('XF:28ID1B-ES{', name='ECS_sample_environment') +ECS_sample_environment = SampleEnvironment( + "XF:28ID1B-ES{", name="ECS_sample_environment" +) class Analyzer(Device): - y = Cpt(EpicsMotor, 'Y}Mtr') - z = Cpt(EpicsMotor, 'Z}Mtr') - ry_yaw = Cpt(EpicsMotor, 'Ry}Mtr') - rz_roll = Cpt(EpicsMotor, 'Rz}Mtr') + y = Cpt(EpicsMotor, "Y}Mtr") + z = Cpt(EpicsMotor, "Z}Mtr") + ry_yaw = Cpt(EpicsMotor, "Ry}Mtr") + rz_roll = Cpt(EpicsMotor, "Rz}Mtr") -analyzer_goniohead = Analyzer('XF:28ID1B-ES{Spn:Anlzr-Ax:', name='analyzer_goniohead') +analyzer_goniohead = Analyzer("XF:28ID1B-ES{Spn:Anlzr-Ax:", name="analyzer_goniohead") diff --git a/startup/80-areadetector.py b/startup/80-areadetector.py index a497c85..3070be1 100644 --- a/startup/80-areadetector.py +++ b/startup/80-areadetector.py @@ -1,14 +1,21 @@ import time as ttime -from ophyd.areadetector import (PerkinElmerDetector, ImagePlugin, - TIFFPlugin, HDF5Plugin, - ProcessPlugin, ROIPlugin) +from ophyd.areadetector import ( + PerkinElmerDetector, + ImagePlugin, + TIFFPlugin, + HDF5Plugin, + ProcessPlugin, + ROIPlugin, +) from ophyd.device import BlueskyInterface from ophyd.areadetector.trigger_mixins import SingleTrigger, MultiTrigger -from ophyd.areadetector.filestore_mixins import (FileStoreIterativeWrite, - FileStoreHDF5IterativeWrite, - FileStoreTIFFSquashing, - FileStoreTIFF) -from ophyd import Signal, EpicsSignal, EpicsSignalRO # Tim test +from ophyd.areadetector.filestore_mixins import ( + FileStoreIterativeWrite, + FileStoreHDF5IterativeWrite, + FileStoreTIFFSquashing, + FileStoreTIFF, +) +from ophyd import Signal, EpicsSignal, EpicsSignalRO # Tim test from ophyd import Component as C, Device, DeviceStatus from ophyd import StatusBase @@ -16,8 +23,8 @@ # from shutter import sh1 -#shctl1 = EpicsSignal('XF:28IDC-ES:1{Det:PE1}cam1:ShutterMode', name='shctl1') -#shctl1 = EpicsMotor('XF:28IDC-ES:1{Sh2:Exp-Ax:5}Mtr', name='shctl1') +# shctl1 = EpicsSignal('XF:28IDC-ES:1{Det:PE1}cam1:ShutterMode', name='shctl1') +# shctl1 = EpicsMotor('XF:28IDC-ES:1{Sh2:Exp-Ax:5}Mtr', name='shctl1') # monkey patch for trailing slash problem def _ensure_trailing_slash(path, path_semantics=None): @@ -27,34 +34,32 @@ def _ensure_trailing_slash(path, path_semantics=None): setpoint filepath to match the readback filepath, we need to add the trailing slash ourselves. """ - newpath = os.path.join(path, '') - if newpath[0] != '/' and newpath[-1] == '/': + newpath = os.path.join(path, "") + if newpath[0] != "/" and newpath[-1] == "/": # make it a windows slash newpath = newpath[:-1] return newpath + ophyd.areadetector.filestore_mixins._ensure_trailing_slash = _ensure_trailing_slash class PDFShutter(Device): - cmd = C(EpicsSignal, 'Cmd-Cmd') - close_sts = C(EpicsSignalRO, 'Sw:Cls1-Sts') - open_sts = C(EpicsSignalRO, 'Sw:Opn1-Sts') + cmd = C(EpicsSignal, "Cmd-Cmd") + close_sts = C(EpicsSignalRO, "Sw:Cls1-Sts") + open_sts = C(EpicsSignalRO, "Sw:Opn1-Sts") def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._st = None self._target = None - self.close_sts.subscribe(self._watcher_close, - self.close_sts.SUB_VALUE) + self.close_sts.subscribe(self._watcher_close, self.close_sts.SUB_VALUE) - self.open_sts.subscribe(self._watcher_open, - self.open_sts.SUB_VALUE) + self.open_sts.subscribe(self._watcher_open, self.open_sts.SUB_VALUE) def set(self, value, *, wait=False, **kwargs): - if value not in ('Open', 'Close'): - raise ValueError( - "must be 'Open' or 'Close', not {!r}".format(value)) + if value not in ("Open", "Close"): + raise ValueError("must be 'Open' or 'Close', not {!r}".format(value)) if wait: raise RuntimeError() if self._st is not None: @@ -67,7 +72,7 @@ def set(self, value, *, wait=False, **kwargs): def _watcher_open(self, *, old_value=None, value=None, **kwargs): print("in open watcher", old_value, value) - if self._target != 'Open': + if self._target != "Open": return if self._st is None: return @@ -80,7 +85,7 @@ def _watcher_open(self, *, old_value=None, value=None, **kwargs): def _watcher_close(self, *, old_value=None, value=None, **kwargs): print("in close watcher", old_value, value) - if self._target != 'Close': + if self._target != "Close": return if self._st is None: @@ -112,7 +117,7 @@ def take_dark(cam, light_field, dark_field_name): cam.stage() st = cam.trigger() while not st.done: - ttime.sleep(.1) + ttime.sleep(0.1) ret = cam.read() desc = cam.describe() cam.unstage() @@ -125,10 +130,7 @@ def take_dark(cam, light_field, dark_field_name): df_sig.stashed_datakey = desc[light_field] - - -class XPDTIFFPlugin(TIFFPlugin, FileStoreTIFFSquashing, - FileStoreIterativeWrite): +class XPDTIFFPlugin(TIFFPlugin, FileStoreTIFFSquashing, FileStoreIterativeWrite): pass @@ -137,109 +139,120 @@ class XPDHDF5Plugin(HDF5Plugin, FileStoreHDF5IterativeWrite): class XPDPerkinElmer(PerkinElmerDetector): - image = C(ImagePlugin, 'image1:') - _default_configuration_attrs = ( - PerkinElmerDetector._default_configuration_attrs + - ('images_per_set', 'number_of_sets')) - - tiff = C(XPDTIFFPlugin, 'TIFF1:', #- MA - #write_path_template='Z:/data/pe1_data/%Y/%m/%d', #- DO - write_path_template='J:\\%Y\\%m\\%d\\', #- DO - #write_path_template='Z:/img/%Y/%m/%d/', #- MA - #read_path_template='/SHARE/img/%Y/%m/%d/', #- MA - read_path_template='/nsls2/data/pdf/legacy/raw/pe1_data/%Y/%m/%d/', #- DO - root='/nsls2/data/pdf/legacy/raw/pe1_data/', #-DO - #root='/SHARE/img/', #-MA - cam_name='cam', # used to configure "tiff squashing" #-MA - proc_name='proc', # ditto #-MA - read_attrs=[]) #- MA + image = C(ImagePlugin, "image1:") + _default_configuration_attrs = PerkinElmerDetector._default_configuration_attrs + ( + "images_per_set", + "number_of_sets", + ) + + tiff = C( + XPDTIFFPlugin, + "TIFF1:", # - MA + # write_path_template='Z:/data/pe1_data/%Y/%m/%d', #- DO + write_path_template="J:\\%Y\\%m\\%d\\", # - DO + # write_path_template='Z:/img/%Y/%m/%d/', #- MA + # read_path_template='/SHARE/img/%Y/%m/%d/', #- MA + read_path_template="/nsls2/data/pdf/legacy/raw/pe1_data/%Y/%m/%d/", # - DO + root="/nsls2/data/pdf/legacy/raw/pe1_data/", # -DO + # root='/SHARE/img/', #-MA + cam_name="cam", # used to configure "tiff squashing" #-MA + proc_name="proc", # ditto #-MA + read_attrs=[], + ) # - MA # hdf5 = C(XPDHDF5Plugin, 'HDF1:', # write_path_template='G:/pe1_data/%Y/%m/%d/', # read_path_template='/direct/XF28ID2/pe1_data/%Y/%m/%d/', # root='/direct/XF28ID2/', reg=db.reg) - proc = C(ProcessPlugin, 'Proc1:') + proc = C(ProcessPlugin, "Proc1:") # These attributes together replace `num_images`. They control # summing images before they are stored by the detector (a.k.a. "tiff # squashing"). - detector_type = C(Signal, value='Perkin', kind='config') + detector_type = C(Signal, value="Perkin", kind="config") images_per_set = C(Signal, value=1, add_prefix=()) number_of_sets = C(Signal, value=1, add_prefix=()) - stats1 = C(StatsPluginV33, 'Stats1:') - stats2 = C(StatsPluginV33, 'Stats2:') - stats3 = C(StatsPluginV33, 'Stats3:') - stats4 = C(StatsPluginV33, 'Stats4:') - stats5 = C(StatsPluginV33, 'Stats5:') + stats1 = C(StatsPluginV33, "Stats1:") + stats2 = C(StatsPluginV33, "Stats2:") + stats3 = C(StatsPluginV33, "Stats3:") + stats4 = C(StatsPluginV33, "Stats4:") + stats5 = C(StatsPluginV33, "Stats5:") - roi1 = C(ROIPlugin, 'ROI1:') - roi2 = C(ROIPlugin, 'ROI2:') - roi3 = C(ROIPlugin, 'ROI3:') - roi4 = C(ROIPlugin, 'ROI4:') + roi1 = C(ROIPlugin, "ROI1:") + roi2 = C(ROIPlugin, "ROI2:") + roi3 = C(ROIPlugin, "ROI3:") + roi4 = C(ROIPlugin, "ROI4:") # dark_image = C(SavedImageSignal, None) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.stage_sigs.update([(self.cam.trigger_mode, 'Internal'), - ]) + self.stage_sigs.update( + [ + (self.cam.trigger_mode, "Internal"), + ] + ) + class XPDPerkinElmer1(XPDPerkinElmer): - tiff = C(XPDTIFFPlugin, 'TIFF1:', #- MA - #write_path_template='Z:/data/pe1_data/%Y/%m/%d', #- DO - write_path_template='J:\\%Y\\%m\\%d\\', #- DO - #write_path_template='Z:/img/%Y/%m/%d/', #- MA - #read_path_template='/SHARE/img/%Y/%m/%d/', #- MA - read_path_template='/nsls2/data/pdf/legacy/raw/pe1_data/%Y/%m/%d/', #- DO - root='/nsls2/data/pdf/legacy/raw/pe1_data/', #-DO - #root='/SHARE/img/', #-MA - cam_name='cam', # used to configure "tiff squashing" #-MA - proc_name='proc', # ditto #-MA - read_attrs=[], #- MA - #tiff = C(XPDTIFFPlugin, 'TIFF1:', - #write_path_template='/home/xf28id1/Documents/Milinda/PE1Data', - #read_path_template='/SHARE/img/%Y/%m/%d/', - #root='/SHARE/img/', - #cam_name='cam', # used to configure "tiff squashing" - #proc_name='proc', # ditto - #read_attrs=[], - - # TODO: switch to this configuration using GPFS later - # once G:\ drive is mounted to the Windows IOC - # (a new Windows 10 machine in the rack upstairs) - # write_path_template='G:\\img\\%Y\\%m\\%d\\', - # read_path_template='/nsls2/xf28id1/data/pe1_data/%Y/%m/%d/', - # root='/nsls2/xf28id1/data/pe1_data', - ) + tiff = C( + XPDTIFFPlugin, + "TIFF1:", # - MA + # write_path_template='Z:/data/pe1_data/%Y/%m/%d', #- DO + write_path_template="J:\\%Y\\%m\\%d\\", # - DO + # write_path_template='Z:/img/%Y/%m/%d/', #- MA + # read_path_template='/SHARE/img/%Y/%m/%d/', #- MA + read_path_template="/nsls2/data/pdf/legacy/raw/pe1_data/%Y/%m/%d/", # - DO + root="/nsls2/data/pdf/legacy/raw/pe1_data/", # -DO + # root='/SHARE/img/', #-MA + cam_name="cam", # used to configure "tiff squashing" #-MA + proc_name="proc", # ditto #-MA + read_attrs=[], # - MA + # tiff = C(XPDTIFFPlugin, 'TIFF1:', + # write_path_template='/home/xf28id1/Documents/Milinda/PE1Data', + # read_path_template='/SHARE/img/%Y/%m/%d/', + # root='/SHARE/img/', + # cam_name='cam', # used to configure "tiff squashing" + # proc_name='proc', # ditto + # read_attrs=[], + # TODO: switch to this configuration using GPFS later + # once G:\ drive is mounted to the Windows IOC + # (a new Windows 10 machine in the rack upstairs) + # write_path_template='G:\\img\\%Y\\%m\\%d\\', + # read_path_template='/nsls2/xf28id1/data/pe1_data/%Y/%m/%d/', + # root='/nsls2/xf28id1/data/pe1_data', + ) + class XPDPerkinElmer2(XPDPerkinElmer): - tiff = C(XPDTIFFPlugin, 'TIFF1:', #- MA - #write_path_template='Z:/data/pe2_data/%Y/%m/%d', #- DO - write_path_template='J:\\%Y\\%m\\%d\\', #- DO - #write_path_template='Z:/img/%Y/%m/%d/', #- MA - #read_path_template='/SHARE/img/%Y/%m/%d/', #- MA - read_path_template='/nsls2/data/pdf/legacy/raw/pe2_data/%Y/%m/%d/', #- DO - root='/nsls2/data/pdf/legacy/raw/pe2_data/', #-DO - #root='/SHARE/img/', #-MA - cam_name='cam', # used to configure "tiff squashing" #-MA - proc_name='proc', # ditto #-MA - read_attrs=[], #- MA - #tiff = C(XPDTIFFPlugin, 'TIFF1:', - #write_path_template='/home/xf28id1/Documents/Milinda/PE1Data', - #read_path_template='/SHARE/img/%Y/%m/%d/', - #root='/SHARE/img/', - #cam_name='cam', # used to configure "tiff squashing" - #proc_name='proc', # ditto - #read_attrs=[], - - # TODO: switch to this configuration using GPFS later - # once G:\ drive is mounted to the Windows IOC - # (a new Windows 10 machine in the rack upstairs) - # write_path_template='G:\\img\\%Y\\%m\\%d\\', - # read_path_template='/nsls2/xf28id1/data/pe2_data/%Y/%m/%d/', - # root='/nsls2/xf28id1/data/pe1_data', - ) + tiff = C( + XPDTIFFPlugin, + "TIFF1:", # - MA + # write_path_template='Z:/data/pe2_data/%Y/%m/%d', #- DO + write_path_template="J:\\%Y\\%m\\%d\\", # - DO + # write_path_template='Z:/img/%Y/%m/%d/', #- MA + # read_path_template='/SHARE/img/%Y/%m/%d/', #- MA + read_path_template="/nsls2/data/pdf/legacy/raw/pe2_data/%Y/%m/%d/", # - DO + root="/nsls2/data/pdf/legacy/raw/pe2_data/", # -DO + # root='/SHARE/img/', #-MA + cam_name="cam", # used to configure "tiff squashing" #-MA + proc_name="proc", # ditto #-MA + read_attrs=[], # - MA + # tiff = C(XPDTIFFPlugin, 'TIFF1:', + # write_path_template='/home/xf28id1/Documents/Milinda/PE1Data', + # read_path_template='/SHARE/img/%Y/%m/%d/', + # root='/SHARE/img/', + # cam_name='cam', # used to configure "tiff squashing" + # proc_name='proc', # ditto + # read_attrs=[], + # TODO: switch to this configuration using GPFS later + # once G:\ drive is mounted to the Windows IOC + # (a new Windows 10 machine in the rack upstairs) + # write_path_template='G:\\img\\%Y\\%m\\%d\\', + # read_path_template='/nsls2/xf28id1/data/pe2_data/%Y/%m/%d/', + # root='/nsls2/xf28id1/data/pe1_data', + ) class ContinuousAcquisitionTrigger(BlueskyInterface): @@ -248,16 +261,17 @@ class ContinuousAcquisitionTrigger(BlueskyInterface): It expects the detector to *already* be acquiring, continously. """ + def __init__(self, *args, plugin_name=None, image_name=None, **kwargs): if plugin_name is None: raise ValueError("plugin name is a required keyword argument") super().__init__(*args, **kwargs) self._plugin = getattr(self, plugin_name) if image_name is None: - image_name = '_'.join([self.name, 'image']) - self._plugin.stage_sigs[self._plugin.auto_save] = 'No' - self.cam.stage_sigs[self.cam.image_mode] = 'Continuous' - self._plugin.stage_sigs[self._plugin.file_write_mode] = 'Capture' + image_name = "_".join([self.name, "image"]) + self._plugin.stage_sigs[self._plugin.auto_save] = "No" + self.cam.stage_sigs[self.cam.image_mode] = "Continuous" + self._plugin.stage_sigs[self._plugin.file_write_mode] = "Capture" self._image_name = image_name self._status = None self._num_captured_signal = self._plugin.num_captured @@ -266,31 +280,35 @@ def __init__(self, *args, plugin_name=None, image_name=None, **kwargs): def stage(self): if self.cam.acquire.get() != 1: - ##foolishly added by DO - try: + ##foolishly added by DO + try: self.cam.acquire.put(1) - print ("The detector wasn't properly acquiring :(") + print("The detector wasn't properly acquiring :(") time.sleep(1) - print ("Don't worry, I probably fixed it for you!") - except: - raise RuntimeError("The ContinuousAcuqisitionTrigger expects " - "the detector to already be acquiring." - "I was unable to fix it, please restart the ui.") #new line, DO - #old style, simple runtime error (no rescue attempt) - #raise RuntimeError("The ContinuousAcuqisitionTrigger expects " - # "the detector to already be acquiring.") - - #if we get this far, we can now stage the detector. + print("Don't worry, I probably fixed it for you!") + except: + raise RuntimeError( + "The ContinuousAcuqisitionTrigger expects " + "the detector to already be acquiring." + "I was unable to fix it, please restart the ui." + ) # new line, DO + # old style, simple runtime error (no rescue attempt) + # raise RuntimeError("The ContinuousAcuqisitionTrigger expects " + # "the detector to already be acquiring.") + + # if we get this far, we can now stage the detector. super().stage() - + # put logic to look up proper dark frame # die if none is found def trigger(self): "Trigger one acquisition." if not self._staged: - raise RuntimeError("This detector is not ready to trigger." - "Call the stage() method before triggering.") + raise RuntimeError( + "This detector is not ready to trigger." + "Call the stage() method before triggering." + ) self._save_started = False self._status = DeviceStatus(self) self._desired_number_of_sets = self.number_of_sets.get() @@ -320,7 +338,6 @@ def _num_captured_changed(self, value=None, old_value=None, **kwargs): self._save_started = False - class PerkinElmerContinuous1(ContinuousAcquisitionTrigger, XPDPerkinElmer1): pass @@ -330,7 +347,8 @@ class PerkinElmerStandard1(SingleTrigger, XPDPerkinElmer1): class PerkinElmerMulti1(MultiTrigger, XPDPerkinElmer1): - shutter = C(EpicsSignal, 'XF:28IDC-ES:1{Sh:Exp}Cmd-Cmd') + shutter = C(EpicsSignal, "XF:28IDC-ES:1{Sh:Exp}Cmd-Cmd") + class PerkinElmerContinuous2(ContinuousAcquisitionTrigger, XPDPerkinElmer): pass @@ -341,55 +359,62 @@ class PerkinElmerStandard2(SingleTrigger, XPDPerkinElmer2): class PerkinElmerMulti2(MultiTrigger, XPDPerkinElmer2): - shutter = C(EpicsSignal, 'XF:28IDC-ES:1{Sh:Exp}Cmd-Cmd') + shutter = C(EpicsSignal, "XF:28IDC-ES:1{Sh:Exp}Cmd-Cmd") -#temporary disable detector for testing -DO 11/25/19 -pe1 = PerkinElmerStandard1('XF:28ID1-ES{Det:PE1}', name='pe1', read_attrs=['tiff']) + +# temporary disable detector for testing -DO 11/25/19 +pe1 = PerkinElmerStandard1("XF:28ID1-ES{Det:PE1}", name="pe1", read_attrs=["tiff"]) ################# -#pe1.stage_sigs.pop('cam.acquire') +# pe1.stage_sigs.pop('cam.acquire') ################ -#Enabled for PE2 detector testing 11/25/19 -#pe1 = PerkinElmerStandard2('XF:28ID1-ES{Det:PE2}', name='pe1', read_attrs=['tiff']) +# Enabled for PE2 detector testing 11/25/19 +# pe1 = PerkinElmerStandard2('XF:28ID1-ES{Det:PE2}', name='pe1', read_attrs=['tiff']) ################# -#temporary disable detector for PE2 testing -MA 11/25/19 -pe1c = PerkinElmerContinuous1('XF:28ID1-ES{Det:PE1}', name='pe1c', - read_attrs=['tiff', 'stats1.total'], - plugin_name='tiff') +# temporary disable detector for PE2 testing -MA 11/25/19 +pe1c = PerkinElmerContinuous1( + "XF:28ID1-ES{Det:PE1}", + name="pe1c", + read_attrs=["tiff", "stats1.total"], + plugin_name="tiff", +) ################ ################ -#enabled by MA during PE2 detector testing - 11/25/2019 -#pe1c = PerkinElmerContinuous2('XF:28ID1-ES{Det:PE2}', name='pe1c', +# enabled by MA during PE2 detector testing - 11/25/2019 +# pe1c = PerkinElmerContinuous2('XF:28ID1-ES{Det:PE2}', name='pe1c', # read_attrs=['tiff', 'stats1.total'], # plugin_name='tiff') ################# -#temporary disable detector for testing -DO 7/11/19 -pe1c.detector_type.kind='config' -pe1.detector_type.kind='config' +# temporary disable detector for testing -DO 7/11/19 +pe1c.detector_type.kind = "config" +pe1.detector_type.kind = "config" ################### import time + + class CachedDetector: - ''' - This is a dark image detector. It doesn't do anything. - This detector does not support a hierarchy of devices! + """ + This is a dark image detector. It doesn't do anything. + This detector does not support a hierarchy of devices! + + """ - ''' def __init__(self, det, attrs, expire_time): - ''' - Initialize the detector det. - det : the detector - attrs : the attrs to read from - expire_time : the expiration time - ''' + """ + Initialize the detector det. + det : the detector + attrs : the attrs to read from + expire_time : the expiration time + """ self._det = det self._attrs = attrs self._expire_time = expire_time @@ -397,10 +422,10 @@ def __init__(self, det, attrs, expire_time): self._current_read = None def trigger(self): - ''' - Trigger the detector. - Checks the cache and time - ''' + """ + Trigger the detector. + Checks the cache and time + """ # check the cache attr_vals = (obj.get() for obj in self._attrs) self._cur_attr_vals = attr_vals @@ -409,20 +434,16 @@ def trigger(self): if read_val is None: self._det.trigger() new_val = self._det.read() - self._read_cache[attr_vals] = {'time': time.time(), - 'data': new_val} + self._read_cache[attr_vals] = {"time": time.time(), "data": new_val} # trigger etc need to finish later data = self._read_cache[attr_vals] - if np.abs(data['time']-time.time()) . self._expire_time: + if np.abs(data["time"] - time.time()).self._expire_time: self._det.trigger() new_val = self._det.read() - self._read_cache[attr_vals] = {'time': time.time(), - 'data': new_val} - + self._read_cache[attr_vals] = {"time": time.time(), "data": new_val} def read(self): - return self._read_cache[self_cur_attr_vals]['data'] - + return self._read_cache[self_cur_attr_vals]["data"] # TODO: maybe check if det is staged def stage(self): @@ -431,6 +452,6 @@ def stage(self): def unstage(self): pass + # some defaults, as an example of how to use this # pe1.configure(dict(images_per_set=6, number_of_sets=10)) - diff --git a/startup/81-dexela.bak b/startup/81-dexela.bak index 80cdd05..84c0d0d 100644 --- a/startup/81-dexela.bak +++ b/startup/81-dexela.bak @@ -1,26 +1,46 @@ import os import ophyd -from ophyd import (AreaDetector, CamBase, TIFFPlugin, Component as Cpt, - HDF5Plugin, Device, StatsPlugin, ProcessPlugin, - ROIPlugin, EpicsSignal, EpicsSignalWithRBV as SignalWithRBV) +from ophyd import ( + AreaDetector, + CamBase, + TIFFPlugin, + Component as Cpt, + HDF5Plugin, + Device, + StatsPlugin, + ProcessPlugin, + ROIPlugin, + EpicsSignal, + EpicsSignalWithRBV as SignalWithRBV, +) from databroker.assets.handlers import HandlerBase -from ophyd.areadetector.filestore_mixins import (FileStoreIterativeWrite, - FileStoreTIFFIterativeWrite, - FileStoreHDF5IterativeWrite, - FileStoreTIFFSquashing, - FileStoreTIFF, - FileStoreHDF5, new_short_uid, - FileStoreBase - ) -from ophyd.areadetector import (AreaDetector, PixiradDetectorCam, ImagePlugin, - TIFFPlugin, StatsPlugin, HDF5Plugin, - ProcessPlugin, ROIPlugin, TransformPlugin, - OverlayPlugin) +from ophyd.areadetector.filestore_mixins import ( + FileStoreIterativeWrite, + FileStoreTIFFIterativeWrite, + FileStoreHDF5IterativeWrite, + FileStoreTIFFSquashing, + FileStoreTIFF, + FileStoreHDF5, + new_short_uid, + FileStoreBase, +) +from ophyd.areadetector import ( + AreaDetector, + PixiradDetectorCam, + ImagePlugin, + TIFFPlugin, + StatsPlugin, + HDF5Plugin, + ProcessPlugin, + ROIPlugin, + TransformPlugin, + OverlayPlugin, +) from ophyd.areadetector.trigger_mixins import SingleTrigger from enum import Enum -class FileStoreBulkReadable(FileStoreIterativeWrite): +class FileStoreBulkReadable(FileStoreIterativeWrite): def _reset_data(self): self._datum_uids.clear() self._point_counter = itertools.count() @@ -38,84 +58,94 @@ class FileStoreBulkReadable(FileStoreIterativeWrite): def image_name(self): return self.parent._image_name -class DexelaTiffPlugin(TIFFPlugin, FileStoreBulkReadable, FileStoreTIFF, - Device): + +class DexelaTiffPlugin(TIFFPlugin, FileStoreBulkReadable, FileStoreTIFF, Device): def mode_external(self): total_points = self.parent.mode_settings.total_points.get() self.stage_sigs[self.num_capture] = total_points def get_frames_per_point(self): mode = self.parent.mode_settings.mode.get() - if mode == 'external': + if mode == "external": return 1 else: return self.parent.cam.num_images.get() class DexelaDetectorCam(CamBase): - acquire_gain = Cpt(EpicsSignal, 'DEXAcquireGain') - acquire_offset = Cpt(EpicsSignal, 'DEXAcquireOffset') - binning_mode = Cpt(SignalWithRBV, 'DEXBinningMode') - corrections_dir = Cpt(EpicsSignal, 'DEXCorrectionsDir', string=True) - current_gain_frame = Cpt(EpicsSignal, 'DEXCurrentGainFrame') - current_offset_frame = Cpt(EpicsSignal, 'DEXCurrentOffsetFrame') - defect_map_available = Cpt(EpicsSignal, 'DEXDefectMapAvailable') - defect_map_file = Cpt(EpicsSignal, 'DEXDefectMapFile', string=True) - full_well_mode = Cpt(SignalWithRBV, 'DEXFullWellMode') - gain_available = Cpt(EpicsSignal, 'DEXGainAvailable') - gain_file = Cpt(EpicsSignal, 'DEXGainFile', string=True) - load_defect_map_file = Cpt(EpicsSignal, 'DEXLoadDefectMapFile') - load_gain_file = Cpt(EpicsSignal, 'DEXLoadGainFile') - load_offset_file = Cpt(EpicsSignal, 'DEXLoadOffsetFile') - num_gain_frames = Cpt(EpicsSignal, 'DEXNumGainFrames') - num_offset_frames = Cpt(EpicsSignal, 'DEXNumOffsetFrames') - offset_available = Cpt(EpicsSignal, 'DEXOffsetAvailable') - offset_constant = Cpt(SignalWithRBV, 'DEXOffsetConstant') - offset_file = Cpt(EpicsSignal, 'DEXOffsetFile', string=True) - save_gain_file = Cpt(EpicsSignal, 'DEXSaveGainFile') - save_offset_file = Cpt(EpicsSignal, 'DEXSaveOffsetFile') - serial_number = Cpt(EpicsSignal, 'DEXSerialNumber') - software_trigger = Cpt(EpicsSignal, 'DEXSoftwareTrigger') - use_defect_map = Cpt(EpicsSignal, 'DEXUseDefectMap') - use_gain = Cpt(EpicsSignal, 'DEXUseGain') - use_offset = Cpt(EpicsSignal, 'DEXUseOffset') + acquire_gain = Cpt(EpicsSignal, "DEXAcquireGain") + acquire_offset = Cpt(EpicsSignal, "DEXAcquireOffset") + binning_mode = Cpt(SignalWithRBV, "DEXBinningMode") + corrections_dir = Cpt(EpicsSignal, "DEXCorrectionsDir", string=True) + current_gain_frame = Cpt(EpicsSignal, "DEXCurrentGainFrame") + current_offset_frame = Cpt(EpicsSignal, "DEXCurrentOffsetFrame") + defect_map_available = Cpt(EpicsSignal, "DEXDefectMapAvailable") + defect_map_file = Cpt(EpicsSignal, "DEXDefectMapFile", string=True) + full_well_mode = Cpt(SignalWithRBV, "DEXFullWellMode") + gain_available = Cpt(EpicsSignal, "DEXGainAvailable") + gain_file = Cpt(EpicsSignal, "DEXGainFile", string=True) + load_defect_map_file = Cpt(EpicsSignal, "DEXLoadDefectMapFile") + load_gain_file = Cpt(EpicsSignal, "DEXLoadGainFile") + load_offset_file = Cpt(EpicsSignal, "DEXLoadOffsetFile") + num_gain_frames = Cpt(EpicsSignal, "DEXNumGainFrames") + num_offset_frames = Cpt(EpicsSignal, "DEXNumOffsetFrames") + offset_available = Cpt(EpicsSignal, "DEXOffsetAvailable") + offset_constant = Cpt(SignalWithRBV, "DEXOffsetConstant") + offset_file = Cpt(EpicsSignal, "DEXOffsetFile", string=True) + save_gain_file = Cpt(EpicsSignal, "DEXSaveGainFile") + save_offset_file = Cpt(EpicsSignal, "DEXSaveOffsetFile") + serial_number = Cpt(EpicsSignal, "DEXSerialNumber") + software_trigger = Cpt(EpicsSignal, "DEXSoftwareTrigger") + use_defect_map = Cpt(EpicsSignal, "DEXUseDefectMap") + use_gain = Cpt(EpicsSignal, "DEXUseGain") + use_offset = Cpt(EpicsSignal, "DEXUseOffset") class DexelaDetector(AreaDetector): - cam = Cpt(DexelaDetectorCam, 'cam1:', - read_attrs=[], - configuration_attrs=['image_mode', 'trigger_mode', - 'acquire_time', 'acquire_period'], - ) + cam = Cpt( + DexelaDetectorCam, + "cam1:", + read_attrs=[], + configuration_attrs=[ + "image_mode", + "trigger_mode", + "acquire_time", + "acquire_period", + ], + ) + class XPDDMode(Enum): step = 1 fly = 2 -class XPDDDexelaTiffPlugin(TIFFPlugin, FileStoreTIFFIterativeWrite ): +class XPDDDexelaTiffPlugin(TIFFPlugin, FileStoreTIFFIterativeWrite): pass class XPDDDexelaDetector(SingleTrigger, DexelaDetector): total_points = Cpt(Signal, value=1, doc="The total number of points to be taken") - tiff = Cpt(XPDDDexelaTiffPlugin, 'TIFF1:', - read_attrs=[], - configuration_attrs=[], - write_path_template='Z:\\data\\dex_data\\%Y\\%m\\%d\\', #- MA - read_path_template='/nsls2/xf28id1/data/dex_data/%Y/%m/%d/', #- MA - root='/nsls2/xf28id1/data/dex_data/',) #-MA - detector_type=Cpt(Signal, value='Dexela 2923', kind='config') + tiff = Cpt( + XPDDDexelaTiffPlugin, + "TIFF1:", + read_attrs=[], + configuration_attrs=[], + write_path_template="Z:\\data\\dex_data\\%Y\\%m\\%d\\", # - MA + read_path_template="/nsls2/xf28id1/data/dex_data/%Y/%m/%d/", # - MA + root="/nsls2/xf28id1/data/dex_data/", + ) # -MA + detector_type = Cpt(Signal, value="Dexela 2923", kind="config") def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._mode = XPDDMode.step def stage(self): - self.cam.stage_sigs['image_mode'] = 'Single' - self.cam.stage_sigs['trigger_mode'] = 'Int. Software' + self.cam.stage_sigs["image_mode"] = "Single" + self.cam.stage_sigs["trigger_mode"] = "Int. Software" if self._mode is XPDDMode.fly: - self.cam.stage_sigs['trigger_mode'] = 'Ext. Edge Single' + self.cam.stage_sigs["trigger_mode"] = "Ext. Edge Single" return super().stage() def unstage(self): @@ -148,10 +178,8 @@ class XPDDexelaDetectorStage(XPDDDexelaDetector): pass - - -#dexela = XPDDDexelaDetector('XF:28IDD-ES:2{Det:DEX}', name='dexela') -#dexela = XPDDDexelaDetector('XF:28ID1-ES{Det:DEX}', name='dexela') #MA -dexela = XPDDexelaDetectorStage('XF:28ID1-ES{Det:DEX}', name='dexela') #MA -dexela.detector_type.kind='config' -dexela.read_attrs = ['tiff'] +# dexela = XPDDDexelaDetector('XF:28IDD-ES:2{Det:DEX}', name='dexela') +# dexela = XPDDDexelaDetector('XF:28ID1-ES{Det:DEX}', name='dexela') #MA +dexela = XPDDexelaDetectorStage("XF:28ID1-ES{Det:DEX}", name="dexela") # MA +dexela.detector_type.kind = "config" +dexela.read_attrs = ["tiff"] diff --git a/startup/81-pilatus.py b/startup/81-pilatus.py index 68f0391..4052c28 100644 --- a/startup/81-pilatus.py +++ b/startup/81-pilatus.py @@ -1,63 +1,74 @@ from ophyd import Component as Cpt from ophyd import Signal -from ophyd import (SingleTrigger, - TIFFPlugin, ImagePlugin, DetectorBase, - HDF5Plugin, AreaDetector, EpicsSignal, EpicsSignalRO, - ROIPlugin, TransformPlugin, ProcessPlugin, PilatusDetector, - PilatusDetectorCam, StatsPlugin) +from ophyd import ( + SingleTrigger, + TIFFPlugin, + ImagePlugin, + DetectorBase, + HDF5Plugin, + AreaDetector, + EpicsSignal, + EpicsSignalRO, + ROIPlugin, + TransformPlugin, + ProcessPlugin, + PilatusDetector, + PilatusDetectorCam, + StatsPlugin, +) from nslsii.ad33 import SingleTriggerV33, StatsPluginV33 + class TIFFPluginWithFileStore(TIFFPlugin, FileStoreTIFFIterativeWrite): pass + class PilatusDetectorCamV33(PilatusDetectorCam): - wait_for_plugins = Cpt(EpicsSignal, 'WaitForPlugins', - string=True, kind='config') + wait_for_plugins = Cpt(EpicsSignal, "WaitForPlugins", string=True, kind="config") def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.stage_sigs['wait_for_plugins'] = 'Yes' + self.stage_sigs["wait_for_plugins"] = "Yes" def ensure_nonblocking(self): - self.stage_sigs['wait_for_plugins'] = 'Yes' + self.stage_sigs["wait_for_plugins"] = "Yes" for c in self.parent.component_names: cpt = getattr(self.parent, c) if cpt is self: continue - if hasattr(cpt, 'ensure_nonblocking'): + if hasattr(cpt, "ensure_nonblocking"): cpt.ensure_nonblocking() + class PilatusV33(SingleTriggerV33, PilatusDetector): - cam = Cpt(PilatusDetectorCamV33, 'cam1:') - image = Cpt(ImagePlugin, 'image1:') -# stats1 = Cpt(StatsPluginV33, 'Stats1:') -# stats2 = Cpt(StatsPluginV33, 'Stats2:') -# stats3 = Cpt(StatsPluginV33, 'Stats3:') -# stats4 = Cpt(StatsPluginV33, 'Stats4:') -# stats5 = Cpt(StatsPluginV33, 'Stats5:') -# roi1 = Cpt(ROIPlugin, 'ROI1:') -# roi2 = Cpt(ROIPlugin, 'ROI2:') -# roi3 = Cpt(ROIPlugin, 'ROI3:') -# roi4 = Cpt(ROIPlugin, 'ROI4:') -# proc1 = Cpt(ProcessPlugin, 'Proc1:') - - tiff = Cpt(TIFFPluginWithFileStore, - suffix='TIFF1:', - write_path_template='/nsls2/data/pdf/legacy/raw/pilatus300/%Y/%m/%d/', - root='/nsls2/data/pdf/legacy/raw') + cam = Cpt(PilatusDetectorCamV33, "cam1:") + image = Cpt(ImagePlugin, "image1:") + # stats1 = Cpt(StatsPluginV33, 'Stats1:') + # stats2 = Cpt(StatsPluginV33, 'Stats2:') + # stats3 = Cpt(StatsPluginV33, 'Stats3:') + # stats4 = Cpt(StatsPluginV33, 'Stats4:') + # stats5 = Cpt(StatsPluginV33, 'Stats5:') + # roi1 = Cpt(ROIPlugin, 'ROI1:') + # roi2 = Cpt(ROIPlugin, 'ROI2:') + # roi3 = Cpt(ROIPlugin, 'ROI3:') + # roi4 = Cpt(ROIPlugin, 'ROI4:') + # proc1 = Cpt(ProcessPlugin, 'Proc1:') + + tiff = Cpt( + TIFFPluginWithFileStore, + suffix="TIFF1:", + write_path_template="/nsls2/data/pdf/legacy/raw/pilatus300/%Y/%m/%d/", + root="/nsls2/data/pdf/legacy/raw", + ) def setExposureTime(self, exposure_time, verbosity=3): self.cam.acquire_time.put(exposure_time) - self.cam.acquire_period.put(exposure_time+.1) + self.cam.acquire_period.put(exposure_time + 0.1) -pilatus300 = PilatusV33('XF:28ID1-ES{Det:PIL3X}:', name='pilatus300') +pilatus300 = PilatusV33("XF:28ID1-ES{Det:PIL3X}:", name="pilatus300") pilatus300.tiff.read_attrs = [] -#pilatus300.stats3.total.kind = 'hinted' -#pilatus300.stats4.total.kind = 'hinted' - - - - +# pilatus300.stats3.total.kind = 'hinted' +# pilatus300.stats4.total.kind = 'hinted' diff --git a/startup/90-plans.py b/startup/90-plans.py index bbf5acf..9f75c27 100644 --- a/startup/90-plans.py +++ b/startup/90-plans.py @@ -2,19 +2,20 @@ # this was the original toy plan def acquisition_plan(dets, motors, fs, sample_name, images_per_set=None): - ''' - This is testing a simple acquisition plan. - Here we open shutter, take an image, close shutter, take a dark then - stop. - dets : dets to read from - motors: motors to take readings from - (for later use) - fs : the fast shutter - sample_name : the sample name - ''' + """ + This is testing a simple acquisition plan. + Here we open shutter, take an image, close shutter, take a dark then + stop. + dets : dets to read from + motors: motors to take readings from + (for later use) + fs : the fast shutter + sample_name : the sample name + """ start_time = time.time() + def myplan(): - + for det in dets: if images_per_set is not None: yield from bps.mov(det.images_per_set, images_per_set) @@ -24,16 +25,15 @@ def myplan(): yield from bps.sleep(1) # close fast shutter, now take a dark - yield from bps.mov(fs,0) - yield from trigger_and_read(dets + motors, name='dark') + yield from bps.mov(fs, 0) + yield from trigger_and_read(dets + motors, name="dark") # open fast shutter - yield from bps.mov(fs,1) + yield from bps.mov(fs, 1) # for the motors, trigger() won't be called since it doesn't exist - yield from trigger_and_read(dets + motors, name='primary') + yield from trigger_and_read(dets + motors, name="primary") for det in dets: yield from bps.unstage(det) - yield from bpp.run_wrapper(myplan(), md=dict(sample_name=sample_name)) end_time = time.time() - print(f'Duration: {end_time - start_time:.3f} sec') + print(f"Duration: {end_time - start_time:.3f} sec") diff --git a/startup/91-callbacks.py b/startup/91-callbacks.py index 73f3c8b..f99c165 100644 --- a/startup/91-callbacks.py +++ b/startup/91-callbacks.py @@ -15,16 +15,17 @@ class SoftLinkCallBack(CallbackBase): - ''' Create data soft links. - - This callback creates softlinks of your data. - ''' - def __init__(self, db, data_keys, data_info_keys=None, root='/SHARE/user_data'): - ''' - db : the database to read from - data_keys : data keys to create soft links for - data_info_keys : data that you want to save into filename - ''' + """Create data soft links. + + This callback creates softlinks of your data. + """ + + def __init__(self, db, data_keys, data_info_keys=None, root="/SHARE/user_data"): + """ + db : the database to read from + data_keys : data keys to create soft links for + data_info_keys : data that you want to save into filename + """ self.db = db self.start_uid = None self.start_doc = None @@ -33,34 +34,33 @@ def __init__(self, db, data_keys, data_info_keys=None, root='/SHARE/user_data'): self.data_info_keys = data_info_keys self.root = root if data_info_keys is None: - data_info_keys=[ - ('start', 'Proposal ID'), - ('start', 'sample_name'), - ('start', 'wavelength'), - ('event', 'data', 'Det_1_Z') + data_info_keys = [ + ("start", "Proposal ID"), + ("start", "sample_name"), + ("start", "wavelength"), + ("event", "data", "Det_1_Z"), ] self.data_info_keys = data_info_keys - def start(self, doc): - self.start_doc = doc - self.start_uid = doc['uid'] + self.start_doc = doc + self.start_uid = doc["uid"] def descriptor(self, doc): - self.descriptors[doc['uid']] = dict(doc) + self.descriptors[doc["uid"]] = dict(doc) def event(self, doc): - data_dict = doc['data'] - descriptor_uid = doc['descriptor'] + data_dict = doc["data"] + descriptor_uid = doc["descriptor"] - docs = dict(start=self.start_doc, - descriptor=self.descriptors[descriptor_uid], - event=doc) + docs = dict( + start=self.start_doc, descriptor=self.descriptors[descriptor_uid], event=doc + ) root = self.root prefix = root + "/" - stream_name = self.descriptors[descriptor_uid]['name'] - + stream_name = self.descriptors[descriptor_uid]["name"] + # print("Got name : {}".format(stream_name)) # print("data dict : {}".format(data_dict)) for data_key in self.data_keys: @@ -71,69 +71,73 @@ def event(self, doc): for filepath in file_list: suffix = os.path.splitext(filepath)[1] src = filepath - dst = filename_from_info(docs, self.data_info_keys, prefix, suffix=suffix) + dst = filename_from_info( + docs, self.data_info_keys, prefix, suffix=suffix + ) num, dst = check_name_collision(dst) # TODO : Add these dirname = os.path.dirname(dst) os.makedirs(dirname, exist_ok=True) os.symlink(src, dst) prefix, ext = os.path.splitext(dst) - dst_md = prefix + ".txt" - yaml.dump(self.start_doc, open(dst_md, "w"), default_flow_style=False) + dst_md = prefix + ".txt" + yaml.dump( + self.start_doc, open(dst_md, "w"), default_flow_style=False + ) print("Soft linking {} to {}".format(src, dst)) print("Writing metadata to {}".format(dst_md)) def stop(self, doc): - ''' clear the start data.''' + """clear the start data.""" self.start_uid = None self.start_doc = None self.descriptors = dict() def check_name_collision(dst): - ''' takes a filename and appends extra sequence number - if exists. Keeps looping until it reaches a non-existing seq number. + """takes a filename and appends extra sequence number + if exists. Keeps looping until it reaches a non-existing seq number. - assumes an extension present and removes + assumes an extension present and removes - Just to avoid collisions. - ''' + Just to avoid collisions. + """ prefix, suffix = os.path.splitext(dst) # checking file existence num = 0 - if os.path.isfile(prefix+suffix): + if os.path.isfile(prefix + suffix): collision = True - while(collision): + while collision: new_dst = prefix + "." + str(num) + "." + suffix collision = os.path.isfile(new_dst) # print("check_name_collision: collision") - num += 1 + num += 1 dst = new_dst return num, dst def filename_from_info(docs, data_info_keys, prefix, suffix): - ''' - from docs (dict of start, descriptor and event docs) - create a filename according to data_info_keys template - - data_info_keys=[ - ('start', 'sample_name') - ('start', 'wavelength') - ('event', 'data', 'Det_1_Z') - ] - - filename_from_info(docs, data_info_keys, root, ".tiff") - ''' + """ + from docs (dict of start, descriptor and event docs) + create a filename according to data_info_keys template + + data_info_keys=[ + ('start', 'sample_name') + ('start', 'wavelength') + ('event', 'data', 'Det_1_Z') + ] + + filename_from_info(docs, data_info_keys, root, ".tiff") + """ filename = "" first = True for key in data_info_keys: if isinstance(key, str): filename = filename + key first = True - else: + else: # print("key {} ".format(key)) # root node = docs @@ -143,9 +147,9 @@ def filename_from_info(docs, data_info_keys, prefix, suffix): if subkey not in node: node = "NULL" break - node = node[subkey] - - #filename = f"{filename}_{node}" + node = node[subkey] + + # filename = f"{filename}_{node}" if not first: node = "_" + str(node) else: @@ -153,28 +157,36 @@ def filename_from_info(docs, data_info_keys, prefix, suffix): first = False filename = filename + node - #filename = f"{prefix}{filename}{suffix}" + # filename = f"{prefix}{filename}{suffix}" filename = prefix + filename + suffix return filename - -class DarkSubtractionCallback(CallbackBase): - def __init__(self, cbs, image_key="pe1_image", primary_stream="primary", - dark_stream="dark", db=None, root='/SHARE/user_data', - data_info_keys=[], suffix=".tiff"): - ''' - Initializes a dark subtraction callback - - This will perform dark subtraction and then save to file. - cb : callbacks to send result to - primary_stream : the primary stream name - dark_stream : the dark stream name -` db : a Broker instance - - - ''' +class DarkSubtractionCallback(CallbackBase): + def __init__( + self, + cbs, + image_key="pe1_image", + primary_stream="primary", + dark_stream="dark", + db=None, + root="/SHARE/user_data", + data_info_keys=[], + suffix=".tiff", + ): + """ + Initializes a dark subtraction callback + + This will perform dark subtraction and then save to file. + + cb : callbacks to send result to + primary_stream : the primary stream name + dark_stream : the dark stream name + ` db : a Broker instance + + + """ # the names of the primary and dark streams if db is None: raise ValueError("Error, Broker instance (db) is required. Got None") @@ -187,35 +199,39 @@ def __init__(self, cbs, image_key="pe1_image", primary_stream="primary", self.root = root self.clear() - def start(self, doc): - self.start_doc = doc - self.start_uid = doc['uid'] + self.start_doc = doc + self.start_uid = doc["uid"] def descriptor(self, doc): - ''' stash the up and down stream descriptors''' - if doc['name'] in [self.pstream, self.dstream]: - self.descriptors[doc['uid']] = doc - + """stash the up and down stream descriptors""" + if doc["name"] in [self.pstream, self.dstream]: + self.descriptors[doc["uid"]] = doc def event(self, doc): - data_dict = doc['data'] - descriptor_uid = doc['descriptor'] - - #added by DO to fix crash where streams not relevant to xpdac exist (like baseline) + data_dict = doc["data"] + descriptor_uid = doc["descriptor"] + + # added by DO to fix crash where streams not relevant to xpdac exist (like baseline) try: - stream_name = self.descriptors[descriptor_uid]['name'] #original line + stream_name = self.descriptors[descriptor_uid]["name"] # original line except KeyError: - #print ('tacos') + # print ('tacos') return None # check it's a prim or dark stream and the key matches the image key # desired - if (stream_name in [self.pstream, self.dstream] and - self.image_key in doc['data']): - event_filled = list(db.fill_events([doc], [self.descriptors[descriptor_uid]]))[0] - - self.images[stream_name] = event_filled['data'][self.image_key].astype(np.int32) + if ( + stream_name in [self.pstream, self.dstream] + and self.image_key in doc["data"] + ): + event_filled = list( + db.fill_events([doc], [self.descriptors[descriptor_uid]]) + )[0] + + self.images[stream_name] = event_filled["data"][self.image_key].astype( + np.int32 + ) # now check if there is an entry in both # TODO : Allow for multiple images @@ -225,11 +241,11 @@ def event(self, doc): # print("Sending images to callbacks") # print(dsub_image) docs = dict() - docs['start'] = self.start_doc - docs['descriptor'] = self.descriptors[descriptor_uid].copy() + docs["start"] = self.start_doc + docs["descriptor"] = self.descriptors[descriptor_uid].copy() # fix to get real stream name in - docs['descriptor']['name'] = 'bgsub' - docs['event'] = doc + docs["descriptor"]["name"] = "bgsub" + docs["event"] = doc prefix = self.root + "/" suffix = "_bgsub.tiff" filepath = filename_from_info(docs, self.data_info_keys, prefix, suffix) @@ -241,148 +257,151 @@ def event(self, doc): im.save(filepath) prefix, ext = os.path.splitext(filepath) - dst_md = prefix + ".txt" + dst_md = prefix + ".txt" yaml.dump(self.start_doc, open(dst_md, "w"), default_flow_style=False) # print("Filepath: {}".format(filepath)) - #for nds in self.create_docs(dsub_image): - #for cb in self.cbs: - #cb(nds) + # for nds in self.create_docs(dsub_image): + # for cb in self.cbs: + # cb(nds) def save_to_file(self, filename, data): # TODO : play with mode im = Image.fromarray(data, mode="I;16") im.save(filename) - + def create_docs(self, data): - ''' - Custom doc creation script for bg subbed image. - Outputs only one image for now. - ''' + """ + Custom doc creation script for bg subbed image. + Outputs only one image for now. + """ start_doc = self.start_doc.copy() - start_doc['uid'] = str(uuid.uuid4()) - start_doc['time'] = time.time() - yield ('start', start) + start_doc["uid"] = str(uuid.uuid4()) + start_doc["time"] = time.time() + yield ("start", start) old_desc = self.descriptors[self.pstream] new_desc = dict() - new_desc['data_keys'] = dict() - new_desc['data_keys'][self.image_key] = \ - old_desc['data_keys'][self.image_key].copy() - new_desc['name'] = 'bgsub' - new_desc['run_start'] = start_doc['uid'] - new_desc['time'] = time.time() - new_desc['uid'] = str(uuid.uuid4()) - new_desc['timestamps'] = {self.image_key: time.time} - yield ('descriptor', new_desc) + new_desc["data_keys"] = dict() + new_desc["data_keys"][self.image_key] = old_desc["data_keys"][ + self.image_key + ].copy() + new_desc["name"] = "bgsub" + new_desc["run_start"] = start_doc["uid"] + new_desc["time"] = time.time() + new_desc["uid"] = str(uuid.uuid4()) + new_desc["timestamps"] = {self.image_key: time.time} + yield ("descriptor", new_desc) new_event = dict() - new_event['data'] = {self.image_key: data} - new_event['descriptor'] = new_desc['uid'] + new_event["data"] = {self.image_key: data} + new_event["descriptor"] = new_desc["uid"] # always one event for now - new_event['seq_num'] = 1 - new_event['time'] = time.time() - new_event['timestamps'] = {self.image_key : time.time()} - new_event['uid'] = str(uuid.uuid4()) - yield ('event', new_event) + new_event["seq_num"] = 1 + new_event["time"] = time.time() + new_event["timestamps"] = {self.image_key: time.time()} + new_event["uid"] = str(uuid.uuid4()) + yield ("event", new_event) new_stop = dict() - new_stop['uid'] = str(uuid.uuid4()) - new_stop['exit_status'] = 'success' - new_stop['num_events'] = {'bgsub' : 1} - new_stop['run_start'] = start_doc['uid'] - new_stop['time'] = time.time() - yield ('stop', new_stop) - - + new_stop["uid"] = str(uuid.uuid4()) + new_stop["exit_status"] = "success" + new_stop["num_events"] = {"bgsub": 1} + new_stop["run_start"] = start_doc["uid"] + new_stop["time"] = time.time() + yield ("stop", new_stop) + def clear_images(self): self.images = dict() - def stop(self, doc): self.clear() def clear(self): - ''' clear the state.''' + """clear the state.""" self.start_uid = None self.start_doc = None self.descriptors = dict() # TODO : Allow for multiple images - #self.images = dict() + # self.images = dict() self.clear_images() def get_handler(datum_id, db): - ''' - Get a file handler from the database. + """ + Get a file handler from the database. - datum_id : the datum uid (from db.table() usually...) - db : the databroker instance (db = Broker.named("pdf") for example) + datum_id : the datum uid (from db.table() usually...) + db : the databroker instance (db = Broker.named("pdf") for example) - ''' + """ resource = db.reg.resource_given_datum_id(datum_id) datums = list(db.reg.datum_gen_given_resource(resource)) - handler = db.reg.get_spec_handler(resource['uid']) + handler = db.reg.get_spec_handler(resource["uid"]) return handler def get_file_list(datum_id, db): resource = db.reg.resource_given_datum_id(datum_id) datums = db.reg.datum_gen_given_resource(resource) - handler = db.reg.get_spec_handler(resource['uid']) - datum_kwarg_list = [datum['datum_kwargs'] for datum in datums if datum['datum_id'] == datum_id] + handler = db.reg.get_spec_handler(resource["uid"]) + datum_kwarg_list = [ + datum["datum_kwargs"] for datum in datums if datum["datum_id"] == datum_id + ] return handler.get_file_list(datum_kwarg_list) - - # this call back will create soft links for PE # the format is a list # each item can be one of the following: # 1. a tuple ('start', 'cycle') -#data_keys = [pe1.image.name] +# data_keys = [pe1.image.name] data_keys = ["pe1_image"] -#data_info_keys = ["Det_1_Z"]#Det_1_Z.name] -data_info_keys_softlink = [ - ('start', 'cycle'), +# data_info_keys = ["Det_1_Z"]#Det_1_Z.name] +data_info_keys_softlink = [ + ("start", "cycle"), "/", - ('start', 'Proposal ID'), + ("start", "Proposal ID"), "/", - ('descriptor', 'name'), + ("descriptor", "name"), "/", - ('event', 'data', 'Det_1_Z_user_setpoint'), + ("event", "data", "Det_1_Z_user_setpoint"), "/", - ('start', 'sample_name'), - ('start', 'wavelength'), - ('start', 'scan_id'), - ('event', 'data', 'Det_1_Z'), - ('event', 'data', 'cryostream_T'), - ('descriptor', 'name'), + ("start", "sample_name"), + ("start", "wavelength"), + ("start", "scan_id"), + ("event", "data", "Det_1_Z"), + ("event", "data", "cryostream_T"), + ("descriptor", "name"), ] -data_info_keys_bgsub=[ - ('start', 'cycle'), +data_info_keys_bgsub = [ + ("start", "cycle"), "/", - ('start', 'Proposal ID'), + ("start", "Proposal ID"), "/", - ('descriptor', 'name'), + ("descriptor", "name"), "/", - ('event', 'data', 'Det_1_Z_user_setpoint'), + ("event", "data", "Det_1_Z_user_setpoint"), "/", - ('start', 'sample_name'), - ('start', 'wavelength'), - ('start', 'scan_id'), - ('event', 'data', 'Det_1_Z'), - ('event', 'data', 'cryostream_T'), - #('event', 'data', ''), + ("start", "sample_name"), + ("start", "wavelength"), + ("start", "scan_id"), + ("event", "data", "Det_1_Z"), + ("event", "data", "cryostream_T"), + # ('event', 'data', ''), ] -soft_link_callback = SoftLinkCallBack(db, data_keys, data_info_keys_softlink, root='/SHARE/user_data') +soft_link_callback = SoftLinkCallBack( + db, data_keys, data_info_keys_softlink, root="/SHARE/user_data" +) RE.subscribe(soft_link_callback) # background subtraction callback -bgsub_callback = DarkSubtractionCallback([soft_link_callback], - image_key = "pe1_image", - primary_stream="primary", - dark_stream="dark", db=db, - data_info_keys=data_info_keys_bgsub) +bgsub_callback = DarkSubtractionCallback( + [soft_link_callback], + image_key="pe1_image", + primary_stream="primary", + dark_stream="dark", + db=db, + data_info_keys=data_info_keys_bgsub, +) RE.subscribe(bgsub_callback) - diff --git a/startup/92-two-distance-plan.py b/startup/92-two-distance-plan.py index f9c4999..be096eb 100644 --- a/startup/92-two-distance-plan.py +++ b/startup/92-two-distance-plan.py @@ -1,5 +1,4 @@ - -''' +""" TODO : ?1. finish adding all motor PV's +2. Add the prosilica detectors @@ -12,22 +11,27 @@ Later: 6. add temperature sensor -''' -def two_distance_plan(dets, motor, fs, cryostream, sample_name, distances, images_per_set=None): - ''' - This is testing a simple acquisition plan. - Here we open shutter, take an image, close shutter, take a dark then - stop. - dets : dets to read from - motor: the motor to move - (for later use) - fs : the fast shutter - sample_name : the sample name - distances : list - a list of distances desired - ''' +""" + + +def two_distance_plan( + dets, motor, fs, cryostream, sample_name, distances, images_per_set=None +): + """ + This is testing a simple acquisition plan. + Here we open shutter, take an image, close shutter, take a dark then + stop. + dets : dets to read from + motor: the motor to move + (for later use) + fs : the fast shutter + sample_name : the sample name + distances : list + a list of distances desired + """ + def myplan(): - + # set the number of images per set here # (only do this once) for det in dets: @@ -38,58 +42,68 @@ def myplan(): for distance in distances: # move the motor to distance yield from bps.abs_set(motor, distance, wait=True) - + # stage the detectors for det in dets: yield from bps.stage(det) - + # this is due to some strange race condition/bug # sleep to ensure that the detector is ready for acquisition yield from bps.sleep(1) # close fast shutter, now take a dark - yield from bps.mov(fs,0) - yield from trigger_and_read(dets + [motor, cryostream], name='dark') + yield from bps.mov(fs, 0) + yield from trigger_and_read(dets + [motor, cryostream], name="dark") # open fast shutter - yield from bps.mov(fs,1) + yield from bps.mov(fs, 1) # for the motors, trigger() won't be called since it doesn't exist - yield from trigger_and_read(dets + [motor, cryostream], name='primary') + yield from trigger_and_read(dets + [motor, cryostream], name="primary") for det in dets: yield from bps.unstage(det) - yield from bpp.run_wrapper(myplan(), md=dict(sample_name=sample_name)) -def temperature_distance_plan(dets, motor, fs, cryostream, sample_name, distances=None, temperatures=None, images_per_set=None): - ''' - This is testing a simple acquisition plan. - Here we open shutter, take an image, close shutter, take a dark then - stop. - - dets : list - dets to read from - motor: EpicsMotor - the motor to move - cryostream: ophyd object - the cryostream - fs : ophyd object - the fast shutter - sample_name : the sample name - distances : list - a list of distances desired - temperatures : list (tstart, tstop, Nstep) - tstart, tstop: start stop temp - Nstep : number of steps - a list of temperatures desired - Will iterate over temperature *first*, then distances. - - Ex: temperatures = [300, 305] - distances = [1400, 1500] - Will go to temp=300, then distance 1400, and 1500 - then temp=305, and distance 1400, 1500 - ''' + +def temperature_distance_plan( + dets, + motor, + fs, + cryostream, + sample_name, + distances=None, + temperatures=None, + images_per_set=None, +): + """ + This is testing a simple acquisition plan. + Here we open shutter, take an image, close shutter, take a dark then + stop. + + dets : list + dets to read from + motor: EpicsMotor + the motor to move + cryostream: ophyd object + the cryostream + fs : ophyd object + the fast shutter + sample_name : the sample name + distances : list + a list of distances desired + temperatures : list (tstart, tstop, Nstep) + tstart, tstop: start stop temp + Nstep : number of steps + a list of temperatures desired + Will iterate over temperature *first*, then distances. + + Ex: temperatures = [300, 305] + distances = [1400, 1500] + Will go to temp=300, then distance 1400, and 1500 + then temp=305, and distance 1400, 1500 + """ + def myplan(): - + # set the number of images per set here # (only do this once) for det in dets: @@ -97,9 +111,9 @@ def myplan(): yield from bps.mov(det.images_per_set, images_per_set) tmin, tmax, tstep = temperatures - Nsteps = int((tmax-tmin)/tstep) + Nsteps = int((tmax - tmin) / tstep) for temperature in range(Nsteps): - tnext = tmin + Nsteps*tstep + tnext = tmin + Nsteps * tstep # wait for certain temperature yield from bps.abs_set(cryostream, tnext, group="tempdet") @@ -109,28 +123,28 @@ def myplan(): yield from bps.abs_set(motor, distance, group="tempdet") yield from bps.wait("tempdet") - + # stage the detectors for det in dets: yield from bps.stage(det) - + # this is due to some strange race condition/bug # sleep to ensure that the detector is ready for acquisition yield from bps.sleep(1) - + # close fast shutter, now take a dark - yield from bps.mov(fs,0) - yield from trigger_and_read(dets + [motor, cryostream], name='dark') + yield from bps.mov(fs, 0) + yield from trigger_and_read(dets + [motor, cryostream], name="dark") # open fast shutter - yield from bps.mov(fs,1) + yield from bps.mov(fs, 1) # for the motors, trigger() won't be called since it doesn't exist - yield from trigger_and_read(dets + [motor, cryostream], name='primary') + yield from trigger_and_read(dets + [motor, cryostream], name="primary") # unstage the detectors for det in dets: yield from bps.unstage(det) - yield from bpp.run_wrapper(myplan(), md=dict(sample_name=sample_name)) + # example for the temp distance ramp plan -#RE(temperature_distance_plan([pe1c], Det_1_Z, fs, cryostream, 'test sample', temperatures=[300, 305, 2], distances=[1071, 1600], images_per_set=1) +# RE(temperature_distance_plan([pe1c], Det_1_Z, fs, cryostream, 'test sample', temperatures=[300, 305, 2], distances=[1071, 1600], images_per_set=1) diff --git a/startup/93-customized_perstep.bak b/startup/93-customized_perstep.bak index 30e735e..577899e 100644 --- a/startup/93-customized_perstep.bak +++ b/startup/93-customized_perstep.bak @@ -4,7 +4,7 @@ import bluesky.preprocessors as bpp from itertools import cycle from xpdacq.xpdacq_conf import xpd_configuration, glbl_dict as glbl from xpdacq.beamtime import open_shutter_stub, close_shutter_stub -from functools import partial +from functools import partial import numpy as np @@ -41,32 +41,35 @@ and before each temperature point. So, number of darks = T_steps+1 """ + def inner_expo(exposure): """private function to configure pe1c with continuous acquisition mode cs studio configuration doesn't propagate to python level """ - yield from bps.abs_set(xpd_configuration["area_det"].cam.acquire_time, - glbl["frame_acq_time"],wait=True,) - print('l50') + yield from bps.abs_set( + xpd_configuration["area_det"].cam.acquire_time, + glbl["frame_acq_time"], + wait=True, + ) + print("l50") # compute number of frames acq_time = xpd_configuration["area_det"].cam.acquire_time.get() - print('l53') + print("l53") # _check_mini_expo(exposure, acq_time) num_frame = np.ceil(exposure / acq_time) - print('l56') + print("l56") computed_exposure = num_frame * acq_time yield from bps.abs_set( xpd_configuration["area_det"].images_per_set, num_frame, wait=True ) - print('l61') + print("l61") # print exposure time print( "INFO: requested exposure time = {} - > computed exposure time" "= {}".format(exposure, computed_exposure) ) - print('l67') + print("l67") return num_frame, acq_time, computed_exposure - def looptlist(base_temp, T_interval, T_steps): @@ -82,17 +85,17 @@ def conditional_step( detectors, motor, step, - expo_high=60, # all in seconds + expo_high=60, # all in seconds expo_low=600, wait_high=5, wait_low=3, base_temp=25, ): - """ customized step to: - 1. open shutter - 2. take data - 3. close shutter - 4. wait for equilibrium + """customized step to: + 1. open shutter + 2. take data + 3. close shutter + 4. wait for equilibrium """ # base case expo = expo_low @@ -112,29 +115,29 @@ def conditional_step( def motor_dark_step(detectors, motor, step): """ - Take darks while moving motors, wait for all to be finished before + Take darks while moving motors, wait for all to be finished before taking light """ yield from bps.checkpoint() - print('l120') + print("l120") # close the shutter - #yield from _close_shutter_stub() COMMENTED OUT (dark per light) - print('l123') - # move motors don't wait yet. + # yield from _close_shutter_stub() COMMENTED OUT (dark per light) + print("l123") + # move motors don't wait yet. # Note for Soham: use `group=None` to ramp temp after dark collected # (Broken and replaced below) yield from bps.abs_set(motor, step, group="dark_motor") yield from bps.abs_set(motor, step, group="dark_motor") - print('l127') - # take dark (this has an internal wait on the readback) - #yield from bps.trigger_and_read(list(detectors), name="dark") COMMENTED OUT (dark per light) - print('l130') + print("l127") + # take dark (this has an internal wait on the readback) + # yield from bps.trigger_and_read(list(detectors), name="dark") COMMENTED OUT (dark per light) + print("l130") # (Broken) now wait for the motors to be done too yield from bps.wait(group="dark_motor") - print('l133') + print("l133") # open shutter yield from open_shutter_stub() - print('l136') + print("l136") # take data yield from bps.trigger_and_read(list(detectors) + [motor]) - print('l139') + print("l139") diff --git a/startup/95-zmq.py b/startup/95-zmq.py index b411196..2359bed 100644 --- a/startup/95-zmq.py +++ b/startup/95-zmq.py @@ -1,5 +1,5 @@ from bluesky.callbacks.zmq import Publisher -pub = Publisher(glbl['inbound_proxy_address'], prefix=b'raw') +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 fd63b1f..cd4b5cc 100644 --- a/startup/96-dan_functions.py +++ b/startup/96-dan_functions.py @@ -1,7 +1,8 @@ import time import sys -#from slack import WebClient -#from slack.errors import SlackApiError + +# from slack import WebClient +# from slack.errors import SlackApiError import os import bluesky.plan_stubs as bps import bluesky.plans as bp @@ -26,7 +27,7 @@ ### -#def slack_message(my_message): +# def slack_message(my_message): # try: # response = client.chat_postMessage( # channel="pdf_dev", @@ -39,9 +40,9 @@ # print("slack message failed") -#def check_heartbeat( +# def check_heartbeat( # fname="hbeat.txt", tlapse=300, send_warning=False, notify_user=False -#): +# ): # fin = open(fname, "r") # tread = float(fin.read()) # tpassed = time.time() - tread @@ -56,7 +57,7 @@ # return True -#def update_heartbeat(fname="hbeat.txt"): +# def update_heartbeat(fname="hbeat.txt"): # fout = open(fname, "w") # fout.write(str(time.time())) # fout.close() @@ -96,9 +97,13 @@ def show_me_db( if "sc_dk_field_uid" in db[my_id].start.keys(): my_dark_id = db[my_id].start["sc_dk_field_uid"] if new_db: - dark_im = (db[my_dark_id].table(fill=True)[my_det_probably][1][0]).astype(float) + dark_im = ( + db[my_dark_id].table(fill=True)[my_det_probably][1][0] + ).astype(float) else: - dark_im = (db[my_dark_id].table(fill=True)[my_det_probably][1]).astype(float) + dark_im = (db[my_dark_id].table(fill=True)[my_det_probably][1]).astype( + float + ) my_im = my_im - dark_im else: @@ -301,7 +306,7 @@ def read_twocol_data( # setup pandas dataframe -def make_me_a_dataframe(found_pos,cut_start = None, cut_end = None): +def make_me_a_dataframe(found_pos, cut_start=None, cut_end=None): import glob as glob import pandas as pd @@ -314,8 +319,8 @@ def make_me_a_dataframe(found_pos,cut_start = None, cut_end = None): read_xcel = pd.read_excel(my_excel_file, skiprows=1, usecols=([0, 1])) if cut_start != None: - print ('cutting down') - read_xcel = read_xcel.loc[cut_start:cut_end,:] + print("cutting down") + read_xcel = read_xcel.loc[cut_start:cut_end, :] read_xcel.index = range(len(read_xcel.index)) print("expecting length " + str(len(np.array(read_xcel.index)))) @@ -355,9 +360,9 @@ def scan_shifter_pos( min_dist=5, peak_rad=1.5, use_det=True, - abs_data = False, - oset_data = 0.0, - return_to_start = True + abs_data=False, + oset_data=0.0, + return_to_start=True, ): def yn_question(q): return input(q).lower().strip()[0] == "y" @@ -399,10 +404,9 @@ def yn_question(q): return None if return_to_start: - print ('returning to start position....') + print("returning to start position....") motor.move(init_pos) - if oset_data != 0.0: I_list = I_list - oset_data @@ -585,14 +589,15 @@ def get_total_counts(): def _motor_move_scan_shifter_pos(motor, xmin, xmax, numx): from epics import caget - #ensure shutter is closed - RE(mv(fs,"Close")) + + # ensure shutter is closed + RE(mv(fs, "Close")) I_list = np.zeros(numx) dx = (xmax - xmin) / numx pos_list = np.linspace(xmin, xmax, numx) - print ('moving to starting postion') - RE(mv(motor,pos_list[0])) - print ('opening shutter') + print("moving to starting postion") + RE(mv(motor, pos_list[0])) + print("opening shutter") RE(mv(fs, "Open")) time.sleep(1) fig1, ax1 = plt.subplots() @@ -703,28 +708,27 @@ def simple_ct(dets, exposure, *, md=None): return (yield from plan) -def save_history(histfile,LIMIT=5000): +def save_history(histfile, LIMIT=5000): ip = get_ipython() """save the IPython history to a plaintext file""" - #histfile = os.path.join(ip.profile_dir.location, "history.txt") + # histfile = os.path.join(ip.profile_dir.location, "history.txt") print("Saving plaintext history to %s" % histfile) lines = [] # get previous lines # this is only necessary because we truncate the history, # otherwise we chould just open with mode='a' if os.path.exists(histfile): - with open(histfile, 'r') as f: + with open(histfile, "r") as f: lines = f.readlines() # add any new lines from this session - lines.extend(record[2] + '\n' for record in ip.history_manager.get_range()) + lines.extend(record[2] + "\n" for record in ip.history_manager.get_range()) - with open(histfile, 'w') as f: + with open(histfile, "w") as f: # limit to LIMIT entries f.writelines(lines[-LIMIT:]) - def phase_parser(phase_str): """parser for field with : Parameters diff --git a/startup/97-MA_functions.py b/startup/97-MA_functions.py index fb1ad70..0b0e22c 100644 --- a/startup/97-MA_functions.py +++ b/startup/97-MA_functions.py @@ -1,220 +1,237 @@ "Define Beamline Modes" -def beam22slit(): - #print("Resetting white beam slits") 2021-3 values - #wb_slits.inboard.move(-11.55) - #wb_slits.outboard.move(-5.879) - - #print("Resetting Monochromator") # 2021-3 values - #sbm.yaw.move(0.00012) - #sbm.roll.move(0.0008) - #sbm.pitch.move(-0.02827) - #sbm.bend.move(2000.0084) - #sbm.twist.move(0) - - print("Resetting Mirror") - #Mirror_VFM.y_upstream.move(-1.2493) # 2021-3 values - #Mirror_VFM.y_downstream_inboard.move(-0.3179) - #Mirror_VFM.y_downstream_outboard.move(-0.0806) - Mirror_VFM.bend_upstream.move(100) - Mirror_VFM.bend_downstream.move(100) - - #print("Resetting BDM Slits") - #bdm_slits.top.move(999.957) - #bdm_slits.bottom.move(-94363.970) - #bdm_slits.inboard.move(-7600.960) - #bdm_slits.outboard.move(-4100.075) - - print("Resetting OCM Slits") - ocm_slits.top.move(-765.286) - ocm_slits.bottom.move(545.00) - ocm_slits.outboard.move(2005.959) - ocm_slits.inboard.move(-1939.037) - - print("Resetting Anti-scatter Slits") - caput('XF:28ID1B-OP{Slt:AS-Ax:T}Mtr.VAL', -24.95948) #Top - caput('XF:28ID1B-OP{Slt:AS-Ax:B}Mtr.VAL', -31.49997) #Bottom - caput('XF:28ID1B-OP{Slt:AS-Ax:O}Mtr.VAL', -27.89998) #Outboard - caput('XF:28ID1B-OP{Slt:AS-Ax:I}Mtr.VAL', 6.09888) #inboard - print("Ready to go !") - -def beam22(): - #print("Resetting white beam slits") 2021-3 values - #wb_slits.inboard.move(-11.55) - #wb_slits.outboard.move(-5.879) - - #print("Resetting Monochromator") # 2021-3 values - #sbm.yaw.move(0.00012) - #sbm.roll.move(0.0008) - #sbm.pitch.move(-0.02827) - #sbm.bend.move(2000.0084) - #sbm.twist.move(0) - - print("Resetting Mirror") - #Mirror_VFM.y_upstream.move(-1.2493) # 2021-3 values - #Mirror_VFM.y_downstream_inboard.move(-0.3179) - #Mirror_VFM.y_downstream_outboard.move(-0.0806) - Mirror_VFM.bend_upstream.move(150) - Mirror_VFM.bend_downstream.move(150) - - #print("Resetting BDM Slits") - #bdm_slits.top.move(999.957) - #bdm_slits.bottom.move(-94363.970) - #bdm_slits.inboard.move(-7600.960) - #bdm_slits.outboard.move(-4100.075) - - print("Resetting OCM Slits") - ocm_slits.top.move(-765.286) - ocm_slits.bottom.move(545.00) - ocm_slits.outboard.move(2005.959) - ocm_slits.inboard.move(-1939.037) - - print("Resetting Anti-scatter Slits") - caput('XF:28ID1B-OP{Slt:AS-Ax:T}Mtr.VAL', -24.95948) #Top - caput('XF:28ID1B-OP{Slt:AS-Ax:B}Mtr.VAL', -31.49997) #Bottom - caput('XF:28ID1B-OP{Slt:AS-Ax:O}Mtr.VAL', -27.89998) #Outboard - caput('XF:28ID1B-OP{Slt:AS-Ax:I}Mtr.VAL', 6.09888) #inboard - print("Ready to go !") - -def beam33(): - #print("Resetting white beam slits") 2021-3 values - #wb_slits.inboard.move(-11.55) - #wb_slits.outboard.move(-5.879) - - #print("Resetting Monochromator") # 2021-3 values - #sbm.yaw.move(0.00012) - #sbm.roll.move(0.0008) - #sbm.pitch.move(-0.02827) - #sbm.bend.move(2000.0084) - #sbm.twist.move(0) - - print("Resetting Mirror") - #Mirror_VFM.y_upstream.move(-1.2493) # 2021-3 values - #Mirror_VFM.y_downstream_inboard.move(-0.3179) - #Mirror_VFM.y_downstream_outboard.move(-0.0806) - Mirror_VFM.bend_upstream.move(120) - Mirror_VFM.bend_downstream.move(120) - - #print("Resetting BDM Slits") - #bdm_slits.top.move(999.957) - #bdm_slits.bottom.move(-94363.970) - #bdm_slits.inboard.move(-7600.960) - #bdm_slits.outboard.move(-4100.075) - - print("Resetting OCM Slits") - ocm_slits.top.move(-765.286) - ocm_slits.bottom.move(545.00) - ocm_slits.outboard.move(2005.959) - ocm_slits.inboard.move(-1939.037) - - print("Resetting Anti-scatter Slits") - caput('XF:28ID1B-OP{Slt:AS-Ax:T}Mtr.VAL', -24.90948) #Top - caput('XF:28ID1B-OP{Slt:AS-Ax:B}Mtr.VAL', -31.44997) #Bottom - caput('XF:28ID1B-OP{Slt:AS-Ax:O}Mtr.VAL', -27.84998) #Outboard - caput('XF:28ID1B-OP{Slt:AS-Ax:I}Mtr.VAL', 6.19888) #inboard - print("Ready to go !") - -def beam55(): - #print("Resetting white beam slits") 2021-3 values - #wb_slits.inboard.move(-11.55) - #wb_slits.outboard.move(-5.879) - - #print("Resetting Monochromator") # 2021-3 values - #sbm.yaw.move(0.00012) - #sbm.roll.move(0.0008) - #sbm.pitch.move(-0.02827) - #sbm.bend.move(2000.0084) - #sbm.twist.move(0) - - print("Resetting Mirror") - #Mirror_VFM.y_upstream.move(-1.2493) # 2021-3 values - #Mirror_VFM.y_downstream_inboard.move(-0.3179) - #Mirror_VFM.y_downstream_outboard.move(-0.0806) - Mirror_VFM.bend_upstream.move(100) - Mirror_VFM.bend_downstream.move(100) - - #print("Resetting BDM Slits") - #bdm_slits.top.move(999.957) - #bdm_slits.bottom.move(-94363.970) - #bdm_slits.inboard.move(-7600.960) - #bdm_slits.outboard.move(-4100.075) - - print("Resetting OCM Slits") - ocm_slits.top.move(-665.286) - ocm_slits.bottom.move(645.00) - ocm_slits.outboard.move(2105.959) - ocm_slits.inboard.move(-1839.037) - - print("Resetting Anti-scatter Slits") - caput('XF:28ID1B-OP{Slt:AS-Ax:T}Mtr.VAL', -24.80948) #Top - caput('XF:28ID1B-OP{Slt:AS-Ax:B}Mtr.VAL', -31.34997) #Bottom - caput('XF:28ID1B-OP{Slt:AS-Ax:O}Mtr.VAL', -27.69998) #Outboard - caput('XF:28ID1B-OP{Slt:AS-Ax:I}Mtr.VAL', 6.29888) #inboard - print("Ready to go !") +def beam22slit(): + # print("Resetting white beam slits") 2021-3 values + # wb_slits.inboard.move(-11.55) + # wb_slits.outboard.move(-5.879) + + # print("Resetting Monochromator") # 2021-3 values + # sbm.yaw.move(0.00012) + # sbm.roll.move(0.0008) + # sbm.pitch.move(-0.02827) + # sbm.bend.move(2000.0084) + # sbm.twist.move(0) + + print("Resetting Mirror") + # Mirror_VFM.y_upstream.move(-1.2493) # 2021-3 values + # Mirror_VFM.y_downstream_inboard.move(-0.3179) + # Mirror_VFM.y_downstream_outboard.move(-0.0806) + Mirror_VFM.bend_upstream.move(100) + Mirror_VFM.bend_downstream.move(100) + + # print("Resetting BDM Slits") + # bdm_slits.top.move(999.957) + # bdm_slits.bottom.move(-94363.970) + # bdm_slits.inboard.move(-7600.960) + # bdm_slits.outboard.move(-4100.075) + + print("Resetting OCM Slits") + ocm_slits.top.move(-765.286) + ocm_slits.bottom.move(545.00) + ocm_slits.outboard.move(2005.959) + ocm_slits.inboard.move(-1939.037) + + print("Resetting Anti-scatter Slits") + caput("XF:28ID1B-OP{Slt:AS-Ax:T}Mtr.VAL", -24.95948) # Top + caput("XF:28ID1B-OP{Slt:AS-Ax:B}Mtr.VAL", -31.49997) # Bottom + caput("XF:28ID1B-OP{Slt:AS-Ax:O}Mtr.VAL", -27.89998) # Outboard + caput("XF:28ID1B-OP{Slt:AS-Ax:I}Mtr.VAL", 6.09888) # inboard + print("Ready to go !") + + +def beam22(): + # print("Resetting white beam slits") 2021-3 values + # wb_slits.inboard.move(-11.55) + # wb_slits.outboard.move(-5.879) + + # print("Resetting Monochromator") # 2021-3 values + # sbm.yaw.move(0.00012) + # sbm.roll.move(0.0008) + # sbm.pitch.move(-0.02827) + # sbm.bend.move(2000.0084) + # sbm.twist.move(0) + + print("Resetting Mirror") + # Mirror_VFM.y_upstream.move(-1.2493) # 2021-3 values + # Mirror_VFM.y_downstream_inboard.move(-0.3179) + # Mirror_VFM.y_downstream_outboard.move(-0.0806) + Mirror_VFM.bend_upstream.move(150) + Mirror_VFM.bend_downstream.move(150) + + # print("Resetting BDM Slits") + # bdm_slits.top.move(999.957) + # bdm_slits.bottom.move(-94363.970) + # bdm_slits.inboard.move(-7600.960) + # bdm_slits.outboard.move(-4100.075) + + print("Resetting OCM Slits") + ocm_slits.top.move(-765.286) + ocm_slits.bottom.move(545.00) + ocm_slits.outboard.move(2005.959) + ocm_slits.inboard.move(-1939.037) + + print("Resetting Anti-scatter Slits") + caput("XF:28ID1B-OP{Slt:AS-Ax:T}Mtr.VAL", -24.95948) # Top + caput("XF:28ID1B-OP{Slt:AS-Ax:B}Mtr.VAL", -31.49997) # Bottom + caput("XF:28ID1B-OP{Slt:AS-Ax:O}Mtr.VAL", -27.89998) # Outboard + caput("XF:28ID1B-OP{Slt:AS-Ax:I}Mtr.VAL", 6.09888) # inboard + print("Ready to go !") + + +def beam33(): + # print("Resetting white beam slits") 2021-3 values + # wb_slits.inboard.move(-11.55) + # wb_slits.outboard.move(-5.879) + + # print("Resetting Monochromator") # 2021-3 values + # sbm.yaw.move(0.00012) + # sbm.roll.move(0.0008) + # sbm.pitch.move(-0.02827) + # sbm.bend.move(2000.0084) + # sbm.twist.move(0) + + print("Resetting Mirror") + # Mirror_VFM.y_upstream.move(-1.2493) # 2021-3 values + # Mirror_VFM.y_downstream_inboard.move(-0.3179) + # Mirror_VFM.y_downstream_outboard.move(-0.0806) + Mirror_VFM.bend_upstream.move(120) + Mirror_VFM.bend_downstream.move(120) + + # print("Resetting BDM Slits") + # bdm_slits.top.move(999.957) + # bdm_slits.bottom.move(-94363.970) + # bdm_slits.inboard.move(-7600.960) + # bdm_slits.outboard.move(-4100.075) + + print("Resetting OCM Slits") + ocm_slits.top.move(-765.286) + ocm_slits.bottom.move(545.00) + ocm_slits.outboard.move(2005.959) + ocm_slits.inboard.move(-1939.037) + + print("Resetting Anti-scatter Slits") + caput("XF:28ID1B-OP{Slt:AS-Ax:T}Mtr.VAL", -24.90948) # Top + caput("XF:28ID1B-OP{Slt:AS-Ax:B}Mtr.VAL", -31.44997) # Bottom + caput("XF:28ID1B-OP{Slt:AS-Ax:O}Mtr.VAL", -27.84998) # Outboard + caput("XF:28ID1B-OP{Slt:AS-Ax:I}Mtr.VAL", 6.19888) # inboard + print("Ready to go !") + + +def beam55(): + # print("Resetting white beam slits") 2021-3 values + # wb_slits.inboard.move(-11.55) + # wb_slits.outboard.move(-5.879) + + # print("Resetting Monochromator") # 2021-3 values + # sbm.yaw.move(0.00012) + # sbm.roll.move(0.0008) + # sbm.pitch.move(-0.02827) + # sbm.bend.move(2000.0084) + # sbm.twist.move(0) + + print("Resetting Mirror") + # Mirror_VFM.y_upstream.move(-1.2493) # 2021-3 values + # Mirror_VFM.y_downstream_inboard.move(-0.3179) + # Mirror_VFM.y_downstream_outboard.move(-0.0806) + Mirror_VFM.bend_upstream.move(100) + Mirror_VFM.bend_downstream.move(100) + + # print("Resetting BDM Slits") + # bdm_slits.top.move(999.957) + # bdm_slits.bottom.move(-94363.970) + # bdm_slits.inboard.move(-7600.960) + # bdm_slits.outboard.move(-4100.075) + + print("Resetting OCM Slits") + ocm_slits.top.move(-665.286) + ocm_slits.bottom.move(645.00) + ocm_slits.outboard.move(2105.959) + ocm_slits.inboard.move(-1839.037) + + print("Resetting Anti-scatter Slits") + caput("XF:28ID1B-OP{Slt:AS-Ax:T}Mtr.VAL", -24.80948) # Top + caput("XF:28ID1B-OP{Slt:AS-Ax:B}Mtr.VAL", -31.34997) # Bottom + caput("XF:28ID1B-OP{Slt:AS-Ax:O}Mtr.VAL", -27.69998) # Outboard + caput("XF:28ID1B-OP{Slt:AS-Ax:I}Mtr.VAL", 6.29888) # inboard + print("Ready to go !") + def saxs(): - print("Resetting white beam slits") - wb_slits.inboard.move(-13.6) - wb_slits.outboard.move(-7.54218) - - print("Resetting Monochromator") - sbm.yaw.move(0.0) - sbm.roll.move(0.0) - sbm.pitch.move(-0.05149) - sbm.bend.move(1550) - sbm.twist.move(-30) - - print("Resetting Mirror") - Mirror_VFM.y_upstream.move(-0.7) - Mirror_VFM.y_downstream_inboard.move(-0.02) - Mirror_VFM.y_downstream_outboard.move(0.32) - Mirror_VFM.bend_upstream.move(10) - Mirror_VFM.bend_downstream.move(10) - - print("Resetting BDM Slits") - #bdm_slits.top.move(999.957) - #bdm_slits.bottom.move(-94363.970) - #bdm_slits.inboard.move(-7600.960) - #bdm_slits.outboard.move(-4100.075) - - print("Resetting OCM Slits") - ocm_slits.top.move(-1065.0) - ocm_slits.bottom.move(1955.0) - ocm_slits.outboard.move(635.959) - ocm_slits.inboard.move(-94.037) - OCM_table.upstream_jack.move(4.14225) - OCM_table.downstream_jack.move(-4.1700) - OCM_table.X.move(-8.44701) - print("Ready to go !") + print("Resetting white beam slits") + wb_slits.inboard.move(-13.6) + wb_slits.outboard.move(-7.54218) + + print("Resetting Monochromator") + sbm.yaw.move(0.0) + sbm.roll.move(0.0) + sbm.pitch.move(-0.05149) + sbm.bend.move(1550) + sbm.twist.move(-30) + + print("Resetting Mirror") + Mirror_VFM.y_upstream.move(-0.7) + Mirror_VFM.y_downstream_inboard.move(-0.02) + Mirror_VFM.y_downstream_outboard.move(0.32) + Mirror_VFM.bend_upstream.move(10) + Mirror_VFM.bend_downstream.move(10) + + print("Resetting BDM Slits") + # bdm_slits.top.move(999.957) + # bdm_slits.bottom.move(-94363.970) + # bdm_slits.inboard.move(-7600.960) + # bdm_slits.outboard.move(-4100.075) + + print("Resetting OCM Slits") + ocm_slits.top.move(-1065.0) + ocm_slits.bottom.move(1955.0) + ocm_slits.outboard.move(635.959) + ocm_slits.inboard.move(-94.037) + OCM_table.upstream_jack.move(4.14225) + OCM_table.downstream_jack.move(-4.1700) + OCM_table.X.move(-8.44701) + print("Ready to go !") def BDM_plot(): - from mpl_toolkits.mplot3d import Axes3D - from matplotlib import pylab as pl - from PIL import Image - import numpy as np - import pylab - - img = Image.open('/nsls2/xf28id1/BDM_camera/BDM_ROI_000.tiff').convert('L') - z = np.asarray(img) - mydata = z[375:450:1, 550:850:1]#y and x - #mydata = z[164:300:1, 200:1000:1] - fig = pl.figure(facecolor='w') - ax1 = fig.add_subplot(1,2,1) - im = ax1.imshow(mydata,interpolation='nearest',cmap=pl.cm.jet) - ax1.set_title('2D') - - ax2 = fig.add_subplot(1,2,2,projection='3d') - x,y = np.mgrid[:mydata.shape[0],:mydata.shape[1]] - ax2.plot_surface(x,y,mydata,cmap=pl.cm.jet,rstride=1,cstride=1,linewidth=0.,antialiased=False) - ax2.set_title('3D') - #ax2.set_zlim3d(0,100) - pl.show() + from mpl_toolkits.mplot3d import Axes3D + from matplotlib import pylab as pl + from PIL import Image + import numpy as np + import pylab + + img = Image.open("/nsls2/xf28id1/BDM_camera/BDM_ROI_000.tiff").convert("L") + z = np.asarray(img) + mydata = z[375:450:1, 550:850:1] # y and x + # mydata = z[164:300:1, 200:1000:1] + fig = pl.figure(facecolor="w") + ax1 = fig.add_subplot(1, 2, 1) + im = ax1.imshow(mydata, interpolation="nearest", cmap=pl.cm.jet) + ax1.set_title("2D") + + ax2 = fig.add_subplot(1, 2, 2, projection="3d") + x, y = np.mgrid[: mydata.shape[0], : mydata.shape[1]] + ax2.plot_surface( + x, + y, + mydata, + cmap=pl.cm.jet, + rstride=1, + cstride=1, + linewidth=0.0, + antialiased=False, + ) + ax2.set_title("3D") + # ax2.set_zlim3d(0,100) + pl.show() + # ----------turbo() is a Temporary fix until auto turbo mode is implemented in the css layer--------- from epics import caget, caput -turbo_T = 110 # Turbo turning on temperature + +turbo_T = 110 # Turbo turning on temperature + + def turbo(): current_T = cryostream.T.get() tb = caget("XF:28ID1-ES:1{Env:01}Cmd:Turbo-Cmd") @@ -225,83 +242,100 @@ def turbo(): if current_T >= turbo_T and tb == 1: caput("XF:28ID1-ES:1{Env:01}Cmd:Turbo-Cmd", 0) time.sleep(2) - caput("XF:28ID1-ES:1{Env:01}Cmd-Cmd", 20) + caput("XF:28ID1-ES:1{Env:01}Cmd-Cmd", 20) + # get direct beamcurrent -#def I0(): +# def I0(): # I0 = caget("SR:OPS-BI{DCCT:1}I:Real-I") -#---------------------------function to display the dark subtracted last image ---------------------------------- +# ---------------------------function to display the dark subtracted last image ---------------------------------- from tifffile import imread, imshow, imsave + + def lastimage(n): - hdr=db[-n] + hdr = db[-n] for doc in hdr.documents(fill=True): - data1=doc[1].get('data') - if data1 != None: - light_img=data1['pe1c_image'] + data1 = doc[1].get("data") + if data1 != None: + light_img = data1["pe1c_image"] - - dark_uid=hdr.start. get('sc_dk_field_uid') - dk_hdrs=db(uid=dark_uid) + dark_uid = hdr.start.get("sc_dk_field_uid") + dk_hdrs = db(uid=dark_uid) for dk_hdr in dk_hdrs: - for doc in dk_hdr.documents(fill=True): - dk_data1=doc[1].get('data') - if dk_data1 != None: - dk_img=dk_data1['pe1c_image'] + for doc in dk_hdr.documents(fill=True): + dk_data1 = doc[1].get("data") + if dk_data1 != None: + dk_img = dk_data1["pe1c_image"] I = light_img - dk_img - imshow(I, vmax = (I.sum()/(2048*2048)), cmap = 'jet' ) - imsave("/nsls2/xf28id1/xpdacq_data/user_data/tiff_base/" + "dark_sub_image" + ".tiff", light_img - dk_img) - imsave("/nsls2/xf28id1/xpdacq_data/user_data/tiff_base/" + "dark_image" + ".tiff", dk_img) - imsave("/nsls2/xf28id1/xpdacq_data/user_data/tiff_base/" + "light_image" + ".tiff", light_img) - - -#---------------------------------HAB T setpoint threshold-------------------------------------------- + imshow(I, vmax=(I.sum() / (2048 * 2048)), cmap="jet") + imsave( + "/nsls2/xf28id1/xpdacq_data/user_data/tiff_base/" + "dark_sub_image" + ".tiff", + light_img - dk_img, + ) + imsave( + "/nsls2/xf28id1/xpdacq_data/user_data/tiff_base/" + "dark_image" + ".tiff", + dk_img, + ) + imsave( + "/nsls2/xf28id1/xpdacq_data/user_data/tiff_base/" + "light_image" + ".tiff", + light_img, + ) + + +# ---------------------------------HAB T setpoint threshold-------------------------------------------- def HAB_Tset(t, threshold, settle_time): - caput("XF:28ID1-ES:1{Env:05}LOOP1:SP", t) - T_now = hotairblower.get() - - while T_now not in range(t-threshold, t+2*threshold): - T_now = hotairblower.get() - time.sleep(0.5) - time.sleep(settle_time) - -#---------------------------------Magnet I setpoint threshold-------------------------------------------- -def Magnet_Iset(i, settle_time): # rounds up the setpoint to a integer thres - RE(mv(magnet.setpoint,i)) - I_now = magnet.readback.get() - - while np.around(I_now)!=i : - I_now = magnet.readback.get() - time.sleep(0.5) - time.sleep(settle_time) - -def Magnet_Iset2(i, thershold_1_D_point,settle_time): - RE(mv(magnet.setpoint,i)) - I_now = magnet.readback.get() - - while (I_now*10) not in range(np.around((i-thershold_1_D_point)*10,1), np.around((i+thershold_1_D_point)*10,1)): - I_now = magnet.readback.get() - time.sleep(0.5) - time.sleep(settle_time) - -def Cryostat_CF(t, settle_time): # rounds up the setpoint to a integer thres - RE(mv(cryostat1,t)) - t_now = caget('XF:28ID1-ES1:LS335:{CryoStat}:IN2') - - while np.around(t_now)!=i : - t_now = caget('XF:28ID1-ES1:LS335:{CryoStat}:IN2') - time.sleep(0.5) - time.sleep(settle_time) - - -#---------------------------------HAB T setpoint threshold-------------------------------------------- + caput("XF:28ID1-ES:1{Env:05}LOOP1:SP", t) + T_now = hotairblower.get() + + while T_now not in range(t - threshold, t + 2 * threshold): + T_now = hotairblower.get() + time.sleep(0.5) + time.sleep(settle_time) + + +# ---------------------------------Magnet I setpoint threshold-------------------------------------------- +def Magnet_Iset(i, settle_time): # rounds up the setpoint to a integer thres + RE(mv(magnet.setpoint, i)) + I_now = magnet.readback.get() + + while np.around(I_now) != i: + I_now = magnet.readback.get() + time.sleep(0.5) + time.sleep(settle_time) + + +def Magnet_Iset2(i, thershold_1_D_point, settle_time): + RE(mv(magnet.setpoint, i)) + I_now = magnet.readback.get() + + while (I_now * 10) not in range( + np.around((i - thershold_1_D_point) * 10, 1), + np.around((i + thershold_1_D_point) * 10, 1), + ): + I_now = magnet.readback.get() + time.sleep(0.5) + time.sleep(settle_time) + + +def Cryostat_CF(t, settle_time): # rounds up the setpoint to a integer thres + RE(mv(cryostat1, t)) + t_now = caget("XF:28ID1-ES1:LS335:{CryoStat}:IN2") + + while np.around(t_now) != i: + t_now = caget("XF:28ID1-ES1:LS335:{CryoStat}:IN2") + time.sleep(0.5) + time.sleep(settle_time) + + +# ---------------------------------HAB T setpoint threshold-------------------------------------------- def Humidity_set(a, b, threshold, settle_time): - RE(flow(a,b)) - H = readRH - H_now = readRH(verbosity=2) - - while H_now not in range(H-threshold, H+2*threshold): - H_now = readRH(verbosity=2) - time.sleep(0.5) - time.sleep(settle_time) \ No newline at end of file + RE(flow(a, b)) + H = readRH + H_now = readRH(verbosity=2) + + while H_now not in range(H - threshold, H + 2 * threshold): + H_now = readRH(verbosity=2) + time.sleep(0.5) + time.sleep(settle_time) diff --git a/startup/98-map_scans.bak b/startup/98-map_scans.bak index 6b4c2df..dd34fe2 100644 --- a/startup/98-map_scans.bak +++ b/startup/98-map_scans.bak @@ -156,9 +156,9 @@ def xrd_map( "dimensions", [((f"start_{fly_motor.name}",), "primary"), ((step_motor.name,), "primary")], ) - #_md["hints"].setdefault( + # _md["hints"].setdefault( # "extents", [(fly_start, fly_stop), (step_stop, step_start)], - #) + # ) # soft signal to use for tracking pixel edges # TODO put better metadata on these @@ -252,7 +252,8 @@ def dark_plan(detector, shell, *, stream_name="dark"): # emit the event to the dark stream yield from bps.stage(shell) yield from bps.trigger_and_read( - [shell], name=stream_name, + [shell], + name=stream_name, ) yield from bps.unstage(shell) diff --git a/startup/98-map_scans.py b/startup/98-map_scans.py index 6b4c2df..dd34fe2 100644 --- a/startup/98-map_scans.py +++ b/startup/98-map_scans.py @@ -156,9 +156,9 @@ def dp(det : Detector, shell : SnapshotShell): "dimensions", [((f"start_{fly_motor.name}",), "primary"), ((step_motor.name,), "primary")], ) - #_md["hints"].setdefault( + # _md["hints"].setdefault( # "extents", [(fly_start, fly_stop), (step_stop, step_start)], - #) + # ) # soft signal to use for tracking pixel edges # TODO put better metadata on these @@ -252,7 +252,8 @@ def dark_plan(detector, shell, *, stream_name="dark"): # emit the event to the dark stream yield from bps.stage(shell) yield from bps.trigger_and_read( - [shell], name=stream_name, + [shell], + name=stream_name, ) yield from bps.unstage(shell) diff --git a/startup/99-humidity.py b/startup/99-humidity.py index 4ae1767..d90b2db 100644 --- a/startup/99-humidity.py +++ b/startup/99-humidity.py @@ -1,42 +1,50 @@ -#Voltage output 1 -#PV: XF:28ID1-ES{IO-E1241:1}AO:2-SP -#MOXA (E1241) channel: AO1 -#Voltage output 2 -#PV: XF:28ID1-ES{IO-E1241:1}AO:4-SP -#MOXA (E1241) channel: AO 3 -#Voltage input -#PV: XF:28ID1-ES{IO-E1240:1}AI:2-I -#MOXA (E1240) channel: AI +# Voltage output 1 +# PV: XF:28ID1-ES{IO-E1241:1}AO:2-SP +# MOXA (E1241) channel: AO1 +# Voltage output 2 +# PV: XF:28ID1-ES{IO-E1241:1}AO:4-SP +# MOXA (E1241) channel: AO 3 +# Voltage input +# PV: XF:28ID1-ES{IO-E1240:1}AI:2-I +# MOXA (E1240) channel: AI -flow_dry_v = EpicsSignal("XF:28ID1-ES{IO-E1241:1}AO:4-SP",name="flow_dry_v") -flow_wet_v = EpicsSignal("XF:28ID1-ES{IO-E1241:1}AO:2-SP",name="flow_wet_v") -humidity_v = EpicsSignal("XF:28ID1-ES{IO-E1240:1}AI:8-I",name="humidity_v") +flow_dry_v = EpicsSignal("XF:28ID1-ES{IO-E1241:1}AO:4-SP", name="flow_dry_v") +flow_wet_v = EpicsSignal("XF:28ID1-ES{IO-E1241:1}AO:2-SP", name="flow_wet_v") +humidity_v = EpicsSignal("XF:28ID1-ES{IO-E1240:1}AI:8-I", name="humidity_v") -def readRH( temperature=25.0, voltage_supply=5.0, coeff_slope=0.030, coeff_offset=0.787, verbosity=3): - voltage_out = humidity_v.get() - corr_voltage_out = voltage_out * (5.0 / voltage_supply) - #For sensor #220 used for SVA chamber - #coeff_offset = 0.788 #from the certificate - #coeff_offset = 0.746 #from the environment of RH=0 - #coeff_slope = 0.029 - #For sensor used for Linkam tensile stage - #coeff_offset = 0.787 - #coeff_slope = 0.030 - #For sensor 114 used for environmental bar - #coeff_offset = 0.787 - #coeff_slope = 0.030 - #For sensor 43 used in humidity stage - coeff_offset = 0.816887 - coeff_slope = 0.028813 - sensor_RH = (corr_voltage_out - coeff_offset) / coeff_slope - true_RH = sensor_RH / (1.0546 - 0.00216 * temperature) # T in [degC] - if verbosity >= 3: - print('Raw sensor RH = {:.3f} pct.'.format(sensor_RH)) - print('T-corrected RH = {:.3f} pct at {:.3f} degC.'.format(true_RH, temperature)) - return true_RH -def flow(dry,wet): - yield from mov(flow_dry_v,dry) - yield from mov(flow_wet_v,wet) - - +def readRH( + temperature=25.0, + voltage_supply=5.0, + coeff_slope=0.030, + coeff_offset=0.787, + verbosity=3, +): + voltage_out = humidity_v.get() + corr_voltage_out = voltage_out * (5.0 / voltage_supply) + # For sensor #220 used for SVA chamber + # coeff_offset = 0.788 #from the certificate + # coeff_offset = 0.746 #from the environment of RH=0 + # coeff_slope = 0.029 + # For sensor used for Linkam tensile stage + # coeff_offset = 0.787 + # coeff_slope = 0.030 + # For sensor 114 used for environmental bar + # coeff_offset = 0.787 + # coeff_slope = 0.030 + # For sensor 43 used in humidity stage + coeff_offset = 0.816887 + coeff_slope = 0.028813 + sensor_RH = (corr_voltage_out - coeff_offset) / coeff_slope + true_RH = sensor_RH / (1.0546 - 0.00216 * temperature) # T in [degC] + if verbosity >= 3: + print("Raw sensor RH = {:.3f} pct.".format(sensor_RH)) + print( + "T-corrected RH = {:.3f} pct at {:.3f} degC.".format(true_RH, temperature) + ) + return true_RH + + +def flow(dry, wet): + yield from mov(flow_dry_v, dry) + yield from mov(flow_wet_v, wet) diff --git a/startup/99-linkam.py b/startup/99-linkam.py index c950fc5..da9cf92 100644 --- a/startup/99-linkam.py +++ b/startup/99-linkam.py @@ -1,8 +1,11 @@ from ophyd.signal import DerivedSignal -#import inflection, textwrap, ansiwrap + +# import inflection, textwrap, ansiwrap + class AtSetpoint(DerivedSignal): - '''A signal that does bit-wise arithmetic on the Linkam's status code''' + """A signal that does bit-wise arithmetic on the Linkam's status code""" + def __init__(self, parent_attr, *, parent=None, **kwargs): code_signal = getattr(parent, parent_attr) super().__init__(derived_from=code_signal, parent=parent, **kwargs) @@ -21,60 +24,58 @@ def forward(self, value): # desc[self.name]['units'] = 'eV' # return desc - + class Linkam(PVPositioner): - '''An ophyd wrapper around the Linkam T96 controller - ''' + """An ophyd wrapper around the Linkam T96 controller""" ## following https://blueskyproject.io/ophyd/positioners.html#pvpositioner - readback = Cpt(EpicsSignalRO, 'TEMP') - setpoint = Cpt(EpicsSignal, 'SETPOINT:SET') - status_code = Cpt(EpicsSignal, 'STATUS') - done = Cpt(AtSetpoint, parent_attr = 'status_code') + readback = Cpt(EpicsSignalRO, "TEMP") + setpoint = Cpt(EpicsSignal, "SETPOINT:SET") + status_code = Cpt(EpicsSignal, "STATUS") + done = Cpt(AtSetpoint, parent_attr="status_code") ## all the rest of the Linkam signals - init = Cpt(EpicsSignal, 'INIT') - model_array = Cpt(EpicsSignal, 'MODEL') - serial_array = Cpt(EpicsSignal, 'SERIAL') - stage_model_array = Cpt(EpicsSignal, 'STAGE:MODEL') - stage_serial_array = Cpt(EpicsSignal, 'STAGE:SERIAL') - firm_ver = Cpt(EpicsSignal, 'FIRM:VER') - hard_ver = Cpt(EpicsSignal, 'HARD:VER') - ctrllr_err = Cpt(EpicsSignal, 'CTRLLR:ERR') - config = Cpt(EpicsSignal, 'CONFIG') - stage_config = Cpt(EpicsSignal, 'STAGE:CONFIG') - disable = Cpt(EpicsSignal, 'DISABLE') - dsc = Cpt(EpicsSignal, 'DSC') - RR_set = Cpt(EpicsSignal, 'RAMPRATE:SET') - RR = Cpt(EpicsSignal, 'RAMPRATE') - ramptime = Cpt(EpicsSignal, 'RAMPTIME') - startheat = Cpt(EpicsSignal, 'STARTHEAT') - holdtime_set = Cpt(EpicsSignal, 'HOLDTIME:SET') - holdtime = Cpt(EpicsSignal, 'HOLDTIME') - power = Cpt(EpicsSignalRO, 'POWER') - lnp_speed = Cpt(EpicsSignal, 'LNP_SPEED') - lnp_mode_set = Cpt(EpicsSignal, 'LNP_MODE:SET') - lnp_speed_set = Cpt(EpicsSignal, 'LNP_SPEED:SET') - - + init = Cpt(EpicsSignal, "INIT") + model_array = Cpt(EpicsSignal, "MODEL") + serial_array = Cpt(EpicsSignal, "SERIAL") + stage_model_array = Cpt(EpicsSignal, "STAGE:MODEL") + stage_serial_array = Cpt(EpicsSignal, "STAGE:SERIAL") + firm_ver = Cpt(EpicsSignal, "FIRM:VER") + hard_ver = Cpt(EpicsSignal, "HARD:VER") + ctrllr_err = Cpt(EpicsSignal, "CTRLLR:ERR") + config = Cpt(EpicsSignal, "CONFIG") + stage_config = Cpt(EpicsSignal, "STAGE:CONFIG") + disable = Cpt(EpicsSignal, "DISABLE") + dsc = Cpt(EpicsSignal, "DSC") + RR_set = Cpt(EpicsSignal, "RAMPRATE:SET") + RR = Cpt(EpicsSignal, "RAMPRATE") + ramptime = Cpt(EpicsSignal, "RAMPTIME") + startheat = Cpt(EpicsSignal, "STARTHEAT") + holdtime_set = Cpt(EpicsSignal, "HOLDTIME:SET") + holdtime = Cpt(EpicsSignal, "HOLDTIME") + power = Cpt(EpicsSignalRO, "POWER") + lnp_speed = Cpt(EpicsSignal, "LNP_SPEED") + lnp_mode_set = Cpt(EpicsSignal, "LNP_MODE:SET") + lnp_speed_set = Cpt(EpicsSignal, "LNP_SPEED:SET") + def on(self): self.startheat.put(1) def off(self): self.startheat.put(0) - + def on_plan(self): - return(yield from mv(self.startheat, 1)) + return (yield from mv(self.startheat, 1)) def off_plan(self): - return(yield from mv(self.startheat, 0)) + return (yield from mv(self.startheat, 0)) def arr2word(self, lst): - word = '' + word = "" for l in lst[:-1]: word += chr(l) return word - + @property def serial(self): return self.arr2word(self.serial_array.get()) @@ -82,11 +83,11 @@ def serial(self): @property def model(self): return self.arr2word(self.model_array.get()) - + @property def stage_model(self): return self.arr2word(self.stage_model_array.get()) - + @property def stage_serial(self): return self.arr2word(self.stage_serial_array.get()) @@ -100,78 +101,81 @@ def hardware_version(self): return self.arr2word(self.hard_ver.get()) def status(self): - text = f'\nCurrent temperature = {self.readback.get():.1f}, setpoint = {self.setpoint.get():.1f}\n\n' + text = f"\nCurrent temperature = {self.readback.get():.1f}, setpoint = {self.setpoint.get():.1f}\n\n" code = int(self.status_code.get()) if code & 1: - text += error_msg('Error : yes') + '\n' + text += error_msg("Error : yes") + "\n" else: - text += 'Error : no\n' + text += "Error : no\n" if code & 2: - text += go_msg('At setpoint : yes') + '\n' + text += go_msg("At setpoint : yes") + "\n" else: - text += 'At setpoint : no\n' + text += "At setpoint : no\n" if code & 4: - text += go_msg('Heater : on') + '\n' + text += go_msg("Heater : on") + "\n" else: - text += 'Heater : off\n' + text += "Heater : off\n" if code & 8: - text += go_msg('Pump : on') + '\n' + text += go_msg("Pump : on") + "\n" else: - text += 'Pump : off\n' + text += "Pump : off\n" if code & 16: - text += go_msg('Pump Auto : yes') + '\n' + text += go_msg("Pump Auto : yes") + "\n" else: - text += 'Pump Auto : no\n' - - boxedtext(f'Linkam {self.model}, stage {self.stage_model}', text, 'brown', width = 45) + text += "Pump Auto : no\n" + + boxedtext( + f"Linkam {self.model}, stage {self.stage_model}", text, "brown", width=45 + ) def boxedtext(title, text, tint, width=75): - ''' + """ Put text in a lovely unicode block element box. The top of the box will contain a title. The box elements will be colored. - ''' + """ remainder = width - 2 - len(title) - ul = u'\u2554' # u'\u250C' - ur = u'\u2557' # u'\u2510' - ll = u'\u255A' # u'\u2514' - lr = u'\u255D' # u'\u2518' - bar = u'\u2550' # u'\u2500' - strut = u'\u2551' # u'\u2502' - template = '%-' + str(width) + 's' - - print('') - print(colored(''.join([ul, bar*3, ' ', title, ' ', bar*remainder, ur]), tint)) - for line in text.split('\n'): + ul = "\u2554" # u'\u250C' + ur = "\u2557" # u'\u2510' + ll = "\u255A" # u'\u2514' + lr = "\u255D" # u'\u2518' + bar = "\u2550" # u'\u2500' + strut = "\u2551" # u'\u2502' + template = "%-" + str(width) + "s" + + print("") + print(colored("".join([ul, bar * 3, " ", title, " ", bar * remainder, ur]), tint)) + for line in text.split("\n"): lne = line.rstrip() - #add = ' '*(width-ansiwrap.ansilen(lne)) - add = ' '*(width-5) - print(' '.join([colored(strut, tint), lne, add, colored(strut, tint)])) - print(colored(''.join([ll, bar*(width+3), lr]), tint)) + # add = ' '*(width-ansiwrap.ansilen(lne)) + add = " " * (width - 5) + print(" ".join([colored(strut, tint), lne, add, colored(strut, tint)])) + print(colored("".join([ll, bar * (width + 3), lr]), tint)) -def colored(text, tint='white', attrs=[],do_thing=False): - ''' +def colored(text, tint="white", attrs=[], do_thing=False): + """ A simple wrapper around IPython's interface to TermColors - ''' + """ if not do_thing: from IPython.utils.coloransi import TermColors as color + tint = tint.lower() - if 'dark' in tint: - tint = 'Dark' + tint[4:].capitalize() - elif 'light' in tint: - tint = 'Light' + tint[5:].capitalize() - elif 'blink' in tint: - tint = 'Blink' + tint[5:].capitalize() - elif 'no' in tint: - tint = 'Normal' + if "dark" in tint: + tint = "Dark" + tint[4:].capitalize() + elif "light" in tint: + tint = "Light" + tint[5:].capitalize() + elif "blink" in tint: + tint = "Blink" + tint[5:].capitalize() + elif "no" in tint: + tint = "Normal" else: tint = tint.capitalize() - return '{0}{1}{2}'.format(getattr(color, tint), text, color.Normal) + return "{0}{1}{2}".format(getattr(color, tint), text, color.Normal) else: - return(text) + return text -linkam = Linkam('XF:28ID1-ES{LINKAM:T96}:', name='linkam', settle_time=0) +linkam = Linkam("XF:28ID1-ES{LINKAM:T96}:", name="linkam", settle_time=0) diff --git a/startup/99-webcam_device.py b/startup/99-webcam_device.py index 0d85444..3ac6555 100644 --- a/startup/99-webcam_device.py +++ b/startup/99-webcam_device.py @@ -9,26 +9,46 @@ # https://github.com/bluesky/ophyd/blob/b1d258a36c974013b6e3ac8ee7112ed876b7653a/ophyd/areadetector/filestore_mixins.py#L70-L112 import requests -from PIL import Image, ImageFont, ImageDraw +from PIL import Image, ImageFont, ImageDraw from io import BytesIO def annotate_image(imagefile, text): - bluesky_path_as_list = bluesky.__path__[0].split('/') # crude, but finds current collection folder - font_path = os.path.join('/', *bluesky_path_as_list[:4], 'lib', 'python3.7', 'site-packages', 'matplotlib', 'mpl-data', 'fonts', 'ttf') + bluesky_path_as_list = bluesky.__path__[0].split( + "/" + ) # crude, but finds current collection folder + font_path = os.path.join( + "/", + *bluesky_path_as_list[:4], + "lib", + "python3.7", + "site-packages", + "matplotlib", + "mpl-data", + "fonts", + "ttf", + ) img = Image.open(imagefile) width, height = img.size - draw = ImageDraw.Draw(img, 'RGBA') - draw.rectangle(((0, int(9.5*height/10)), (width, height)), fill=(255,255,255,125)) - font = ImageFont.truetype(font_path + '/DejaVuSans.ttf', 24) - draw.text((int(0.2*width/10), int(9.6*height/10)), text, (0,0,0), font=font) + draw = ImageDraw.Draw(img, "RGBA") + draw.rectangle( + ((0, int(9.5 * height / 10)), (width, height)), fill=(255, 255, 255, 125) + ) + font = ImageFont.truetype(font_path + "/DejaVuSans.ttf", 24) + draw.text( + (int(0.2 * width / 10), int(9.6 * height / 10)), text, (0, 0, 0), font=font + ) img.save(imagefile) + def now(fmt="%Y-%m-%dT%H-%M-%S"): return datetime.datetime.now().strftime(fmt) + + def today(fmt="%Y-%m-%d"): return datetime.datetime.today().strftime(fmt) + class WEBCAM_JPEG_HANDLER: def __init__(self, resource_path): # resource_path is really a template string with a %d in it @@ -38,28 +58,32 @@ def __call__(self, index): filepath = self._template % index return numpy.asarray(Image.open(filepath)) + db.reg.register_handler("BEAMLINE_WEBCAM", WEBCAM_JPEG_HANDLER) + class ExternalFileReference(Signal): """ A pure software signal where a Device can stash a datum_id """ + def __init__(self, *args, shape, **kwargs): super().__init__(*args, **kwargs) self.shape = shape def describe(self): res = super().describe() - res[self.name].update(dict(external="FILESTORE:", dtype="array", shape=self.shape)) + res[self.name].update( + dict(external="FILESTORE:", dtype="array", shape=self.shape) + ) return res class CameraSnapshot(Device): image = Component(ExternalFileReference, value="", kind="normal", shape=[]) - beamline_id = '' - annotation_string = '' - - + beamline_id = "" + annotation_string = "" + def __init__(self, *args, root, bl, url, **kwargs): super().__init__(*args, **kwargs) self._root = root @@ -71,20 +95,31 @@ def __init__(self, *args, root, bl, url, **kwargs): self._url = url def current_folder(self): - #folder = os.path.join('/nsls2', 'data', self._beamline, 'assets', *today.split('-')) - folder = os.path.join('/nsls2', 'data', 'pdf', 'legacy','processed','xpdacq_data','user_data','webcam', *today().split('-')) + # folder = os.path.join('/nsls2', 'data', self._beamline, 'assets', *today.split('-')) + folder = os.path.join( + "/nsls2", + "data", + "pdf", + "legacy", + "processed", + "xpdacq_data", + "user_data", + "webcam", + *today().split("-"), + ) if not os.path.isdir(folder): os.makedirs(folder) return folder - + def stage(self): - #self._rel_path_template = f"path/to/files/{uuid.uuid4()}_%d.ext" + # self._rel_path_template = f"path/to/files/{uuid.uuid4()}_%d.ext" self._rel_path_template = f"{uuid.uuid4()}_%d.jpg" self._root = self.current_folder() resource, self._datum_factory = resource_factory( - self._SPEC, self._root, self._rel_path_template, {}, "posix") - self._asset_docs_cache.append(('resource', resource)) + self._SPEC, self._root, self._rel_path_template, {}, "posix" + ) + self._asset_docs_cache.append(("resource", resource)) self._counter = itertools.count() # Set the filepath return super().stage() @@ -108,18 +143,23 @@ def _capture(self, status, i): # that a file is saved at `filename`. if self._SPEC == "BEAMLINE_WEBCAM": - CAM_PROXIES = {"http": None, "https": None,} - r=requests.get(self._url, proxies=CAM_PROXIES) + CAM_PROXIES = { + "http": None, + "https": None, + } + r = requests.get(self._url, proxies=CAM_PROXIES) im = Image.open(BytesIO(r.content)) - im.save(filename, 'JPEG') - #print(f'w: {im.width} h: {im.height}') + im.save(filename, "JPEG") + # print(f'w: {im.width} h: {im.height}') self.image.shape = (im.height, im.width, 3) - annotation = f'{self.beamline_id} {self.annotation_string} {now()}' + annotation = ( + f"{self.beamline_id} {self.annotation_string} {now()}" + ) annotate_image(filename, annotation) datum = self._datum_factory({"index": i}) - self._asset_docs_cache.append(('datum', datum)) + self._asset_docs_cache.append(("datum", datum)) self.image.set(datum["datum_id"]).wait() except Exception as exc: status.set_exception(exc) @@ -136,11 +176,29 @@ def trigger(self): return status -root = os.path.join('/nsls2', 'data', 'pdf', 'legacy','processed','xpdacq_data','user_data','webcam', *today().split('-')) -cam_outboard = CameraSnapshot(root=root, bl='pdf', url='http://10.66.217.45/axis-cgi/jpg/image.cgi', name='outboard webcam') -cam_outboard.beamline_id = 'PDF (NSLS-II 28ID)' - -cam_downstream = CameraSnapshot(root=root, bl='pdf', url='http://10.66.217.46/axis-cgi/jpg/image.cgi', name='downstream webcam') -cam_downstream.beamline_id = 'PDF (NSLS-II 28ID)' - - +root = os.path.join( + "/nsls2", + "data", + "pdf", + "legacy", + "processed", + "xpdacq_data", + "user_data", + "webcam", + *today().split("-"), +) +cam_outboard = CameraSnapshot( + root=root, + bl="pdf", + url="http://10.66.217.45/axis-cgi/jpg/image.cgi", + name="outboard webcam", +) +cam_outboard.beamline_id = "PDF (NSLS-II 28ID)" + +cam_downstream = CameraSnapshot( + root=root, + bl="pdf", + url="http://10.66.217.46/axis-cgi/jpg/image.cgi", + name="downstream webcam", +) +cam_downstream.beamline_id = "PDF (NSLS-II 28ID)" diff --git a/startup/monitor_heartbeat_py b/startup/monitor_heartbeat_py index 1387455..2977e7e 100644 --- a/startup/monitor_heartbeat_py +++ b/startup/monitor_heartbeat_py @@ -6,62 +6,65 @@ import os import time ##load local source -#sys.path.insert(1, "./python-slackclient") +# sys.path.insert(1, "./python-slackclient") ##enable logging -#logging.basicConfig(level=logging.DEBUG) +# logging.basicConfig(level=logging.DEBUG) -#client = WebClient() -#api_response = client.api_test() +# client = WebClient() +# api_response = client.api_test() ############## slack_token = os.environ["SLACK_API_TOKEN"] client = WebClient(token=slack_token) + def slack_message(my_message): try: response = client.chat_postMessage( - channel = "pdf_dev", - #channel = user_name, - text = my_message, - ) + channel="pdf_dev", + # channel = user_name, + text=my_message, + ) except SlackApiError as e: assert e.response["something went wrong"] -def check_heartbeat(fname='hbeat.txt', tlapse=300,send_warning=False,notify_user=False): - fin = open(fname,'r') +def check_heartbeat( + fname="hbeat.txt", tlapse=300, send_warning=False, notify_user=False +): + fin = open(fname, "r") tread = float(fin.read()) tpassed = time.time() - tread if tpassed > tlapse: - tpassed_str = str(tpassed/60)[:3] + tpassed_str = str(tpassed / 60)[:3] if send_warning: - msg_to_send = "Issue detected, no pulse in "+tpassed_str+" mins" + msg_to_send = "Issue detected, no pulse in " + tpassed_str + " mins" if notify_user: - msg_to_send = "<@"+str(user_ID)+"> "+msg_to_send + msg_to_send = "<@" + str(user_ID) + "> " + msg_to_send slack_message(msg_to_send) return False return True -def update_heartbeat(fname='hbeat.txt'): - fout = open(fname,'w') +def update_heartbeat(fname="hbeat.txt"): + fout = open(fname, "w") fout.write(str(time.time())) fout.close() ##### -wait_time = 10 #time in seconds between each check -user_ID = 'ULP5FCDDH' +wait_time = 10 # time in seconds between each check +user_ID = "ULP5FCDDH" notify_user = False if len(sys.argv) != 2: - print ('default monitoring - updates required within 5 minute window') + print("default monitoring - updates required within 5 minute window") monitor_window_s = 300 monitor_window_mins = 5 else: monitor_window_mins = float(sys.argv[1]) - print ("Monitoring heartbeat every "+str(monitor_window_mins)+" minutes") + print("Monitoring heartbeat every " + str(monitor_window_mins) + " minutes") monitor_window_s = monitor_window_mins * 60.0 @@ -70,13 +73,12 @@ while go_on: go_on1 = check_heartbeat(tlapse=monitor_window_s) time.sleep(wait_time) - if not go_on1: #wait 1 second, then try again + if not go_on1: # wait 1 second, then try again time.sleep(1) - go_on = check_heartbeat(tlapse=monitor_window_s,send_warning = True, notify_user=True) - -#slack_message("I have lost the heartbeat - last updated over "+str(monitor_window_mins)+" mins ago") - -print ("Ending monitoring process, lost heartbeat") - + go_on = check_heartbeat( + tlapse=monitor_window_s, send_warning=True, notify_user=True + ) +# slack_message("I have lost the heartbeat - last updated over "+str(monitor_window_mins)+" mins ago") +print("Ending monitoring process, lost heartbeat") diff --git a/startup/tmp/97-MA_functions.py b/startup/tmp/97-MA_functions.py index 6c5e6d6..8d28ab7 100644 --- a/startup/tmp/97-MA_functions.py +++ b/startup/tmp/97-MA_functions.py @@ -1,101 +1,113 @@ "Define Beamline Modes" + + def high_resolution(): - print("Resetting white beam slits") - wb_slits.inboard.move(-8.7605) - wb_slits.outboard.move(-5.0251) - - print("Resetting Monochromator") - sbm.yaw.move(-0.00013) - sbm.roll.move(0.000) - sbm.pitch.move(0.07414) - sbm.bend.move(0.0084) - sbm.twist.move(0.0084) - - print("Resetting Mirror") - Mirror_VFM.y_upstream.move(-2.3695) - Mirror_VFM.y_downstream_inboard.move(-1.5492) - Mirror_VFM.y_downstream_outboard.move(-1.2505) - Mirror_VFM.bend_upstream.move(100) - Mirror_VFM.bend_downstream.move(100) - - print("Resetting BDM Slits") - bdm_slits.top.move(0.034) - bdm_slits.bottom.move(-25363.970) - bdm_slits.inboard.move(400.040) - bdm_slits.outboard.move(-4100.075) - - print("Resetting OCM Slits") - ocm_slits.top.move(-2569.894) - ocm_slits.bottom.move(2460.259) - ocm_slits.inboard.move(-844.963) - ocm_slits.outboard.move(454.959) - OCM_table.upstream_jack.move(4.70035) - OCM_table.downstream_jack.move(-4.19820) - OCM_table.X.move(-8.44701) - print("Ready to go !") + print("Resetting white beam slits") + wb_slits.inboard.move(-8.7605) + wb_slits.outboard.move(-5.0251) + + print("Resetting Monochromator") + sbm.yaw.move(-0.00013) + sbm.roll.move(0.000) + sbm.pitch.move(0.07414) + sbm.bend.move(0.0084) + sbm.twist.move(0.0084) + + print("Resetting Mirror") + Mirror_VFM.y_upstream.move(-2.3695) + Mirror_VFM.y_downstream_inboard.move(-1.5492) + Mirror_VFM.y_downstream_outboard.move(-1.2505) + Mirror_VFM.bend_upstream.move(100) + Mirror_VFM.bend_downstream.move(100) + + print("Resetting BDM Slits") + bdm_slits.top.move(0.034) + bdm_slits.bottom.move(-25363.970) + bdm_slits.inboard.move(400.040) + bdm_slits.outboard.move(-4100.075) + + print("Resetting OCM Slits") + ocm_slits.top.move(-2569.894) + ocm_slits.bottom.move(2460.259) + ocm_slits.inboard.move(-844.963) + ocm_slits.outboard.move(454.959) + OCM_table.upstream_jack.move(4.70035) + OCM_table.downstream_jack.move(-4.19820) + OCM_table.X.move(-8.44701) + print("Ready to go !") + def high_flux(): - print("Resetting white beam slits") - wb_slits.inboard.move(-6.7605) - wb_slits.outboard.move(-3.0251) - - print("Resetting Monochromator") - sbm.yaw.move(-0.00013) - sbm.roll.move(0.000) - sbm.pitch.move(-0.02093) - sbm.bend.move(5000.0104) - sbm.twist.move(0.0) - - print("Resetting Mirror") - Mirror_VFM.y_upstream.move(-2.3695) - Mirror_VFM.y_downstream_inboard.move(-1.5492) - Mirror_VFM.y_downstream_outboard.move(-1.2505) - Mirror_VFM.bend_upstream.move(50) - Mirror_VFM.bend_downstream.move(50) - - print("Resetting BDM Slits") - bdm_slits.top.move(0.034) - bdm_slits.bottom.move(-25363.970) - bdm_slits.inboard.move(999.39974) - bdm_slits.outboard.move(-3550.022) - - print("Resetting OCM Slits and Table") - ocm_slits.top.move(-2469.894) - ocm_slits.bottom.move(2585.259) - ocm_slits.inboard.move(-564.909) - ocm_slits.outboard.move(554.960) - OCM_table.upstream_jack.move(4.70035) - OCM_table.downstream_jack.move(-4.19820) - OCM_table.X.move(-8.44701) - print("Ready to go!") + print("Resetting white beam slits") + wb_slits.inboard.move(-6.7605) + wb_slits.outboard.move(-3.0251) + + print("Resetting Monochromator") + sbm.yaw.move(-0.00013) + sbm.roll.move(0.000) + sbm.pitch.move(-0.02093) + sbm.bend.move(5000.0104) + sbm.twist.move(0.0) + + print("Resetting Mirror") + Mirror_VFM.y_upstream.move(-2.3695) + Mirror_VFM.y_downstream_inboard.move(-1.5492) + Mirror_VFM.y_downstream_outboard.move(-1.2505) + Mirror_VFM.bend_upstream.move(50) + Mirror_VFM.bend_downstream.move(50) + + print("Resetting BDM Slits") + bdm_slits.top.move(0.034) + bdm_slits.bottom.move(-25363.970) + bdm_slits.inboard.move(999.39974) + bdm_slits.outboard.move(-3550.022) + + print("Resetting OCM Slits and Table") + ocm_slits.top.move(-2469.894) + ocm_slits.bottom.move(2585.259) + ocm_slits.inboard.move(-564.909) + ocm_slits.outboard.move(554.960) + OCM_table.upstream_jack.move(4.70035) + OCM_table.downstream_jack.move(-4.19820) + OCM_table.X.move(-8.44701) + print("Ready to go!") def BDM_plot(): - from mpl_toolkits.mplot3d import Axes3D - from matplotlib import pylab as pl - from PIL import Image - import numpy as np - import pylab - - img = Image.open('/nsls2/xf28id1/BDM_camera/BDM_ROI_000.tiff').convert('L') - z = np.asarray(img) - mydata = z[500:800:1, 500:800:1] - #mydata = z[164:300:1, 200:1000:1] - fig = pl.figure(facecolor='w') - ax1 = fig.add_subplot(1,2,1) - im = ax1.imshow(z,interpolation='nearest',cmap=pl.cm.jet) - ax1.set_title('2D') - - ax2 = fig.add_subplot(1,2,2,projection='3d') - x,y = np.mgrid[:mydata.shape[0],:mydata.shape[1]] - ax2.plot_surface(x,y,mydata,cmap=pl.cm.jet,rstride=1,cstride=1,linewidth=0.,antialiased=False) - ax2.set_title('3D') - #ax2.set_zlim3d(0,100) - pl.show() - -#def temp() -# Det_1_Z.move(1674.44155) -# Grid_X.move(32) -# Grid_Y.move(41.75) -# Grid_Z.move(830.39405) + from mpl_toolkits.mplot3d import Axes3D + from matplotlib import pylab as pl + from PIL import Image + import numpy as np + import pylab + + img = Image.open("/nsls2/xf28id1/BDM_camera/BDM_ROI_000.tiff").convert("L") + z = np.asarray(img) + mydata = z[500:800:1, 500:800:1] + # mydata = z[164:300:1, 200:1000:1] + fig = pl.figure(facecolor="w") + ax1 = fig.add_subplot(1, 2, 1) + im = ax1.imshow(z, interpolation="nearest", cmap=pl.cm.jet) + ax1.set_title("2D") + + ax2 = fig.add_subplot(1, 2, 2, projection="3d") + x, y = np.mgrid[: mydata.shape[0], : mydata.shape[1]] + ax2.plot_surface( + x, + y, + mydata, + cmap=pl.cm.jet, + rstride=1, + cstride=1, + linewidth=0.0, + antialiased=False, + ) + ax2.set_title("3D") + # ax2.set_zlim3d(0,100) + pl.show() + +# def temp() +# Det_1_Z.move(1674.44155) +# Grid_X.move(32) +# Grid_Y.move(41.75) +# Grid_Z.move(830.39405) From e4cc3bbf111d24c2eaf426990a289cc50fb5b8cf Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 8 Feb 2022 13:07:00 -0500 Subject: [PATCH 49/70] MNT: improve local name The old name confused us because we thought it was going to translate a sample stage. --- startup/99-demo_plans.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/startup/99-demo_plans.py b/startup/99-demo_plans.py index aacaea6..08a3937 100644 --- a/startup/99-demo_plans.py +++ b/startup/99-demo_plans.py @@ -1,6 +1,6 @@ from dataclasses import dataclass import bluesky.plan_stubs as bps -from xpdacq.xpdacq import translate_to_sample +from xpdacq.xpdacq import translate_to_sample as get_metadata_for_sample_number import itertools @@ -87,7 +87,7 @@ 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 = get_metadata_for_sample_number(bt, sample_num) _md.update(md or {}) yield from simple_ct([pe1c], exposure, md=_md) @@ -143,7 +143,7 @@ def _pdf_count( ): # sample_db = _refresh_sample_database() sample_info = sample_db[sample_number] - _md = translate_to_sample(bt, sample_info["xpdacq_number"]) + _md = get_metadata_for_sample_number(bt, sample_info["xpdacq_number"]) _md["sample_info"] = sample_info _md.update(md or {}) From 67804a33158c8d594f6adef3f94084cf2d8b1cfe Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 23 Feb 2022 11:50:04 -0500 Subject: [PATCH 50/70] Set connection timeout back to 1s It was 10s to work around slow IOCs, but it made the debug loop of missing PVs unbearable. --- startup/00-base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/startup/00-base.py b/startup/00-base.py index 93b0682..ab72135 100644 --- a/startup/00-base.py +++ b/startup/00-base.py @@ -54,7 +54,7 @@ def wait_for_connection(self, timeout=DEFAULT_CONNECTION_TIMEOUT): from ophyd.signal import EpicsSignalBase # from Tom Caswell to fix the 'None bug' - whatever that is. DO 7/9/2021 -EpicsSignalBase.set_defaults(timeout=10, connection_timeout=10) +EpicsSignalBase.set_defaults(timeout=10, connection_timeout=1) # See docstring for nslsii.configure_base() for more details # this command takes away much of the boilerplate for settting up a profile From 7d322dc735fedd3f97b82531cd9f68b6e3853d19 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 23 Feb 2022 11:53:51 -0500 Subject: [PATCH 51/70] Update to new allowed plan schema - defaults to literal names - explicitly mark things as regex --- startup/user_group_permissions.yaml | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/startup/user_group_permissions.yaml b/startup/user_group_permissions.yaml index 2578df1..a955081 100644 --- a/startup/user_group_permissions.yaml +++ b/startup/user_group_permissions.yaml @@ -1,26 +1,27 @@ 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$" - - "^pdf_count$" + - "move_to_sample" + - "move_to_det_config" + - "sample_aware_count" + - "move_det" + - "move_sample" + - "pdf_count" + - "take_a_nap" forbidden_plans: - - "$_" # All plans with names starting with '_' + - ":^_" # All plans with names starting with '_' allowed_devices: - null # Allow all forbidden_devices: - - "$_" # All devices with names starting with '_' + - ":^_" # 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 + - ":.*" # A different way to allow all forbidden_plans: - null # Nothing is forbidden allowed_devices: - - ".*" # A different way to allow all + - ":.*" # A different way to allow all forbidden_devices: - null # Nothing is forbidden test_user: # Users with limited access capabilities From b281e5743de91f166252126af55a9e3da6d758c4 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 23 Feb 2022 11:54:11 -0500 Subject: [PATCH 52/70] Add "take a nap" demo plan --- startup/99-demo_plans.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/startup/99-demo_plans.py b/startup/99-demo_plans.py index 08a3937..1395a41 100644 --- a/startup/99-demo_plans.py +++ b/startup/99-demo_plans.py @@ -192,3 +192,6 @@ def pdf_count(sample_number: int, exposure_time: float, *, md: dict = {}): bt=bt, dets=[pe1c], ) + +def take_a_nap(delay: float): + yield from bps.sleep(delay) \ No newline at end of file From 42489bb250a5b148a6df5cae64f65775d01882f5 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 23 Feb 2022 11:57:24 -0500 Subject: [PATCH 53/70] ENH: upgrade to using v34 versions of plugins This has been broken fro a while, but bsui does not try to walk the tree of all child devices so we never noticed. --- startup/80-areadetector.py | 40 +++++++++++++++++++++++++------------- startup/81-pilatus.py | 17 ++++++++-------- 2 files changed, 35 insertions(+), 22 deletions(-) diff --git a/startup/80-areadetector.py b/startup/80-areadetector.py index 3b32f21..084013e 100644 --- a/startup/80-areadetector.py +++ b/startup/80-areadetector.py @@ -1,13 +1,16 @@ import time as ttime from ophyd.areadetector import ( - PerkinElmerDetector, - ImagePlugin, - TIFFPlugin, - HDF5Plugin, - ProcessPlugin, - ROIPlugin, + DetectorBase as _PerkinElmerDetector) +from ophyd.areadetector.plugins import ( + ImagePlugin_V34 as ImagePlugin, + TIFFPlugin_V34 as TIFFPlugin, + HDF5Plugin_V34 as HDF5Plugin, + ProcessPlugin_V34 as ProcessPlugin, + ROIPlugin_V34 as ROIPlugin, + StatsPlugin_V34 as StatsPlugin ) -from ophyd.device import BlueskyInterface +from ophyd.areadetector.cam import CamBase as _PerkinElmerDetectorCam +from ophyd.device import BlueskyInterface, Component as Cpt from ophyd.areadetector.trigger_mixins import SingleTrigger, MultiTrigger from ophyd.areadetector.filestore_mixins import ( FileStoreIterativeWrite, @@ -19,7 +22,16 @@ from ophyd import Component as C, Device, DeviceStatus from ophyd import StatusBase -from nslsii.ad33 import StatsPluginV33 + + +class PerkinElmerDetectorCam(_PerkinElmerDetectorCam): + pool_max_buffers = None + pe_dwell_time = None + pe_sync_time = None + pe_system_id = None + +class PerkinElmerDetector(_PerkinElmerDetector): + cam = Cpt(PerkinElmerDetectorCam, 'cam1:') # from shutter import sh1 @@ -173,17 +185,17 @@ class XPDPerkinElmer(PerkinElmerDetector): images_per_set = C(Signal, value=1, add_prefix=()) number_of_sets = C(Signal, value=1, add_prefix=()) - stats1 = C(StatsPluginV33, "Stats1:") - stats2 = C(StatsPluginV33, "Stats2:") - stats3 = C(StatsPluginV33, "Stats3:") - stats4 = C(StatsPluginV33, "Stats4:") - stats5 = C(StatsPluginV33, "Stats5:") + stats1 = C(StatsPlugin, "Stats1:") + stats2 = C(StatsPlugin, "Stats2:") + stats3 = C(StatsPlugin, "Stats3:") + stats4 = C(StatsPlugin, "Stats4:") + stats5 = C(StatsPlugin, "Stats5:") roi1 = C(ROIPlugin, "ROI1:") roi2 = C(ROIPlugin, "ROI2:") roi3 = C(ROIPlugin, "ROI3:") roi4 = C(ROIPlugin, "ROI4:") - + # dark_image = C(SavedImageSignal, None) def __init__(self, *args, **kwargs): diff --git a/startup/81-pilatus.py b/startup/81-pilatus.py index 4052c28..4f5e8e7 100644 --- a/startup/81-pilatus.py +++ b/startup/81-pilatus.py @@ -14,10 +14,11 @@ TransformPlugin, ProcessPlugin, PilatusDetector, - PilatusDetectorCam, - StatsPlugin, + PilatusDetectorCam) +from ophyd.areadetector.plugins import ( + StatsPlugin_V34 as StatsPlugin ) -from nslsii.ad33 import SingleTriggerV33, StatsPluginV33 +from nslsii.ad33 import SingleTriggerV33 class TIFFPluginWithFileStore(TIFFPlugin, FileStoreTIFFIterativeWrite): @@ -44,11 +45,11 @@ def ensure_nonblocking(self): class PilatusV33(SingleTriggerV33, PilatusDetector): cam = Cpt(PilatusDetectorCamV33, "cam1:") image = Cpt(ImagePlugin, "image1:") - # stats1 = Cpt(StatsPluginV33, 'Stats1:') - # stats2 = Cpt(StatsPluginV33, 'Stats2:') - # stats3 = Cpt(StatsPluginV33, 'Stats3:') - # stats4 = Cpt(StatsPluginV33, 'Stats4:') - # stats5 = Cpt(StatsPluginV33, 'Stats5:') + # stats1 = Cpt(StatsPlugin, 'Stats1:') + # stats2 = Cpt(StatsPlugin, 'Stats2:') + # stats3 = Cpt(StatsPlugin, 'Stats3:') + # stats4 = Cpt(StatsPlugin, 'Stats4:') + # stats5 = Cpt(StatsPlugin, 'Stats5:') # roi1 = Cpt(ROIPlugin, 'ROI1:') # roi2 = Cpt(ROIPlugin, 'ROI2:') # roi3 = Cpt(ROIPlugin, 'ROI3:') From 9fd169e71370a16691bf74b72c525021eab54e3d Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 23 Feb 2022 11:57:44 -0500 Subject: [PATCH 54/70] Comment out Pilatus because it in not available --- startup/81-pilatus.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/startup/81-pilatus.py b/startup/81-pilatus.py index 4f5e8e7..65e0115 100644 --- a/startup/81-pilatus.py +++ b/startup/81-pilatus.py @@ -68,8 +68,8 @@ def setExposureTime(self, exposure_time, verbosity=3): self.cam.acquire_period.put(exposure_time + 0.1) -pilatus300 = PilatusV33("XF:28ID1-ES{Det:PIL3X}:", name="pilatus300") -pilatus300.tiff.read_attrs = [] +# pilatus300 = PilatusV33("XF:28ID1-ES{Det:PIL3X}:", name="pilatus300") +# pilatus300.tiff.read_attrs = [] # pilatus300.stats3.total.kind = 'hinted' # pilatus300.stats4.total.kind = 'hinted' From b284d739f3068229fde90ecba780fd4d9fa735a5 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 23 Feb 2022 11:58:22 -0500 Subject: [PATCH 55/70] Correct PYTHONPATH location --- env_vars/qserver_extra | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/env_vars/qserver_extra b/env_vars/qserver_extra index 8a3326d..f914178 100644 --- a/env_vars/qserver_extra +++ b/env_vars/qserver_extra @@ -1,2 +1,2 @@ -export PYTHONPATH=/home/xf28id1/python_overlay/lib/python3.9/site-packages/ +export PYTHONPATH=/home/xf28id1/bluesky_overlays/lib/python3.9/site-packages/ export QSERVER_STARTUP_DIR=/nsls2/data/pdf/shared/config/profile_collection/startup From 1ca4898009a6f6547b2c267799013d8f6ac677b7 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 23 Feb 2022 11:58:49 -0500 Subject: [PATCH 56/70] Remove test user from permissions file --- startup/user_group_permissions.yaml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/startup/user_group_permissions.yaml b/startup/user_group_permissions.yaml index a955081..911f05d 100644 --- a/startup/user_group_permissions.yaml +++ b/startup/user_group_permissions.yaml @@ -24,16 +24,3 @@ user_groups: - ":.*" # 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+$" From c3295df48d4f2ce8d39a3c29e240f1ba3a182f46 Mon Sep 17 00:00:00 2001 From: maffettone Date: Wed, 23 Feb 2022 12:04:32 -0500 Subject: [PATCH 57/70] Add client side script for setting up environment --- env_vars/client_side_qserver_extra | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 env_vars/client_side_qserver_extra diff --git a/env_vars/client_side_qserver_extra b/env_vars/client_side_qserver_extra new file mode 100644 index 0000000..b38b524 --- /dev/null +++ b/env_vars/client_side_qserver_extra @@ -0,0 +1,7 @@ +conda activate 2021-3.1-py37 +OVERLAY=/nsls2/data/pdf/shared/config/bluesky_overlays/2021-3.1-py37 +PATH=$OVERLAY/bin:$PATH +PYTHONPATH=$OVERLAY/lib/python3.7/site-packages:$PYTHONPATH +export PATH +export PYTHONPATH +export BS_ENV=/nsls2/data/pdf/shared/config/profile_collection \ No newline at end of file From 76f1680255972fb5f3828f7796dda71ef43c0a50 Mon Sep 17 00:00:00 2001 From: Maksim Rakitin Date: Thu, 24 Feb 2022 16:02:22 -0500 Subject: [PATCH 58/70] Fix for the 'pe1c' detector's descriptor's shape (copy-pasted) --- startup/80-areadetector.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/startup/80-areadetector.py b/startup/80-areadetector.py index 084013e..f7ffc66 100644 --- a/startup/80-areadetector.py +++ b/startup/80-areadetector.py @@ -142,7 +142,17 @@ def take_dark(cam, light_field, dark_field_name): df_sig.stashed_datakey = desc[light_field] -class XPDTIFFPlugin(TIFFPlugin, FileStoreTIFFSquashing, FileStoreIterativeWrite): +class XPDFileStoreTIFFSquashing(FileStoreTIFFSquashing): + def describe(self): + description = super().describe() + shape = list(description["pe1c_image"]["shape"]) + shape[0] = self.get_frames_per_point() + shape = tuple(shape) + description["pe1c_image"]["shape"] = shape + return description + + +class XPDTIFFPlugin(TIFFPlugin, XPDFileStoreTIFFSquashing, FileStoreIterativeWrite): pass From 823e4e5b50b5f5bd964a667d7ce8303a3ac0620f Mon Sep 17 00:00:00 2001 From: Maksim Rakitin Date: Fri, 15 Apr 2022 16:11:24 -0400 Subject: [PATCH 59/70] Add publishing to kafka --- startup/00-base.py | 2 +- startup/94-load.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/startup/00-base.py b/startup/00-base.py index 755cf13..8eff41b 100644 --- a/startup/00-base.py +++ b/startup/00-base.py @@ -21,7 +21,7 @@ bec=True, magics=True, mpl=False, - # publish_documents_to_kafka=True + publish_documents_with_kafka=True ) from pathlib import Path diff --git a/startup/94-load.py b/startup/94-load.py index 7004c2d..f353fd4 100644 --- a/startup/94-load.py +++ b/startup/94-load.py @@ -59,6 +59,9 @@ # insert header to db, either simulated or real xrun.subscribe(db.insert, 'all') +# We need to repeat it here for `xrun` as RE is not used here... +nslsii.configure_kafka_publisher(xrun, "pdf") + if bt: xrun.beamtime = bt From 2892c924bee4d475fdf30b94fcd0e2f821dd75f4 Mon Sep 17 00:00:00 2001 From: PDF Operator Date: Tue, 5 Jul 2022 11:15:59 -0400 Subject: [PATCH 60/70] because tom asked --- startup/12-motors.py | 41 +++++++++++++++++++++++++- startup/15-optics.py | 58 ++++++++++++++++++------------------- startup/81-pilatus.py | 49 +++++++++++++++++++++++++++++++ startup/96-dan_functions.py | 57 ++++++++++++++++++++++++++++++++++++ 4 files changed, 174 insertions(+), 31 deletions(-) diff --git a/startup/12-motors.py b/startup/12-motors.py index f05813c..b7b7012 100644 --- a/startup/12-motors.py +++ b/startup/12-motors.py @@ -1,7 +1,8 @@ import ophyd from ophyd import (Device, Component as Cpt, EpicsSignal, EpicsSignalRO, EpicsMotor) -from nslsii.devices import TwoButtonShutter +from ophyd.device import DeviceStatus +from nslsii.devices import TwoButtonShutter as _TwoButtonShutter #import nslsii.devices Det_1_X = EpicsMotor('XF:28ID1B-ES{Det:1-Ax:X}Mtr', name='Det_1_X', labels=['positioners']) @@ -50,6 +51,33 @@ class FilterBank(Device): flt3 = Cpt(EpicsSignal, '3}Cmd:Opn-Cmd', string=True) flt4 = Cpt(EpicsSignal, '4}Cmd:Opn-Cmd', string=True) + +class TwoButtonShutter(_TwoButtonShutter): + def stop(self): + ... + def set(self, value): + if value == 0: + return super().set('Close') + #super().set('Close') + #status = DeviceStatus(self) + #return status + if value == 1: + return super().set('Open') + # super().set('Open') + # status = DeviceStatus(self) + # return status + + def read(self): #fix for whoever thought it was smart to use 'Not Open' instead of 'Close' - DO + ret = super().read() + val = ret['fb_two_button_shutters_flt1_status']['value'] + if val == 'Not Open': + ret['fb_two_button_shutters_flt1_status']['value'] = 'Close' + return ret + + # def read(self): + # ret = super().read() + # # FIX RET + # return ret class FilterBankTwoButtonShutter(Device): flt1 = Cpt(TwoButtonShutter, '1}') flt2 = Cpt(TwoButtonShutter, '2}') @@ -59,6 +87,10 @@ class FilterBankTwoButtonShutter(Device): fb = FilterBank('XF:28ID1B-OP{Fltr:', name='fb') fb_two_button_shutters = FilterBankTwoButtonShutter('XF:28ID1B-OP{Fltr:', name='fb_two_button_shutters') +#trying to make a temporary shutter - DO - 5/18/2022 +#fs = fb_two_button_shutters.flt4 +#if disable this, need to re-enable fs in 15-optics: line 105 + # Spinner Goniohead motors, add by HZ Spinnergo_X = EpicsMotor('XF:28ID1B-ES{Stg:Smpl-Ax:X}Mtr', name='Spinnergo_X', labels=['positioners']) Spinnergo_Y = EpicsMotor('XF:28ID1B-ES{Stg:Smpl-Ax:Y}Mtr', name='Spinnergo_Y', labels=['positioners']) @@ -82,3 +114,10 @@ class FilterBankTwoButtonShutter(Device): #NOx BOx x/y sample position noxbox_x = EpicsMotor('XF:28ID1B-ES{NOx-Ax:X}Mtr', name='noxbox_x') noxbox_y = EpicsMotor('XF:28ID1B-ES{NOx-Ax:Y}Mtr', name='noxbox_y') + + +#Table X-tages +OT_stage_1_X = EpicsMotor('XF:28ID1-ES{Det-Ax:X1}Mtr', name='OT_stage_1_X', labels=['positioners']) +OT_stage_2_X = EpicsMotor('XF:28ID1-ES{Det-Ax:X2}Mtr', name='OT_stage_2_X', labels=['positioners']) +OT_stage_3_X = EpicsMotor('XF:28ID1-ES{Det-Ax:X3}Mtr', name='OT_stage_3_X', labels=['positioners']) +OT_stage_4_X = EpicsMotor('XF:28ID1-ES{Det-Ax:X4}Mtr', name='OT_stage_4_X', labels=['positioners']) diff --git a/startup/15-optics.py b/startup/15-optics.py index c3998e9..826d0f0 100644 --- a/startup/15-optics.py +++ b/startup/15-optics.py @@ -34,27 +34,25 @@ class SideBounceMono(Device): twist = Cpt(EpicsMotor, "Twist}Mtr") sbm = SideBounceMono("XF:28ID1A-OP{Mono:SBM-Ax:", name='sbm') -# Shutters: -#fs = EpicsSignal('XF:28ID1B-OP{PSh:1-Det:2}Cmd', name='fs') # fast shutter #temporary fast shutter -# class tempFSShutter: +#class tempFSShutter: # -# def set(self, value): -# if value == 0: -# return fb_two_button_shutters.flt4.set('Close') -# elif value == 1: -# return fb_two_button_shutters.flt4.set('Open') +# def set(self, value): +# if value == 0: +# return fb_two_button_shutters.flt1.set('Close') +# elif value == 1: +# return fb_two_button_shutters.flt1.set('Open') # -# def read(self): -# return fb_two_button_shutters.read() +# def read(self): +# return fb_two_button_shutters.read() # -# def describe(self): -# return fb_two_button_shutters.describe() +# def describe(self): +# return fb_two_button_shutters.describe() # -# def stop(self, success=False): -# return self.set('close') - -# fs = tempFSShutter() +# def stop(self, success=False): +# return self.set('close') +# +#fs = tempFSShutter() # Close the shutter on stop # fs.stop = lambda *args, **kwargs: fs.set(0) @@ -75,20 +73,20 @@ def __init__(self, *args, **kwargs): def set(self, val): # NOTE: temporary workaround until the fast shutter works. # - # def check_if_done(value, old_value, **kwargs): - # if ((val in ['Open', 1] and value == 0) or - # (val in ['Close', 0] and value == 1)): - # if self.st is not None: - # self.st._finished() - # self.st = None - # return True - # return False + def check_if_done(value, old_value, **kwargs): + if ((val in ['Open', 1] and value == 0) or + (val in ['Close', 0] and value == 1)): + if self.st is not None: + self.st._finished() + self.st = None + return True + return False self.cmd.set(self.setmap[val]) - # status = SubscriptionStatus(self.status, check_if_done,settle_time=self.settle_time.get()) - # return status + status = SubscriptionStatus(self.status, check_if_done,settle_time=self.settle_time.get()) + return status - ttime.sleep(1.0) # wait to set the value since the status PV does not capture the actual status - return NullStatus() + #ttime.sleep(1.0) # wait to set the value since the status PV does not capture the actual status + #return NullStatus() def get(self): return self.readmap[self.cmd.get()] @@ -101,9 +99,9 @@ def read(self): # def stop(self, success=False): # return self.set('Close') - +#temporary disable fast shutter while broken - DO 5/18/2022 fs = PDFFastShutter('XF:28ID1B-OP{PSh:1-Det:2}', name='fs') - +#if enable this, need to disable fs in 12-motors: line 80 class Mirror(Device): y_upstream = Cpt(EpicsMotor, 'YU}Mtr') diff --git a/startup/81-pilatus.py b/startup/81-pilatus.py index 444ba8d..e5dc657 100644 --- a/startup/81-pilatus.py +++ b/startup/81-pilatus.py @@ -63,5 +63,54 @@ def set_num_images(self, num_images): +#for looking at pilatus data +def show_me2(my_im, count_low=0, count_high=1, use_colorbar=False, use_cmap='viridis'): + #my_low = np.percentile(my_im, per_low) + #my_high = np.percentile(my_im, per_high) + plt.imshow(my_im, vmin=count_low, vmax=count_high, cmap= use_cmap) + if use_colorbar: + plt.colorbar() + + + +def show_me_db2( + my_id, + count_low=1, + count_high=99, + use_colorbar=False, + dark_subtract=False, + return_im=False, + return_dark=False, + new_db = True, + use_cmap='viridis', + suffix="_image", +): + my_det_probably = db[my_id].start["detectors"][0] + suffix + if new_db: + my_im = (db[my_id].table(fill=True)[my_det_probably][1][0]).astype(float) + else: + my_im = (db[my_id].table(fill=True)[my_det_probably][1]).astype(float) + + if len(my_im) == 0: + print("issue... passing") + pass + if dark_subtract: + if "sc_dk_field_uid" in db[my_id].start.keys(): + my_dark_id = db[my_id].start["sc_dk_field_uid"] + if new_db: + dark_im = (db[my_dark_id].table(fill=True)[my_det_probably][1][0]).astype(float) + else: + dark_im = (db[my_dark_id].table(fill=True)[my_det_probably][1]).astype(float) + + my_im = my_im - dark_im + else: + print("this run has no associated dark") + if return_im: + return my_im + if return_dark: + return dark_im + + #if all else fails, plot! + show_me2(my_im, count_low=count_low, count_high=count_high, use_colorbar=use_colorbar, use_cmap=use_cmap) diff --git a/startup/96-dan_functions.py b/startup/96-dan_functions.py index 99ecfd9..dd06ffa 100644 --- a/startup/96-dan_functions.py +++ b/startup/96-dan_functions.py @@ -809,3 +809,60 @@ def phase_parser(phase_str): del pe1c.tiff.stage_sigs[pe1c.proc.reset_filter] + +#for looking at data from Pilatus detector + +def set_Pilatus_parameters(num_images=1, exposure_time=0.1): + print ('setting number of images per collection to '+str(num_images)) + pilatus1.set_num_images(num_images) + print ('setting exposure time for a single image to '+str(exposure_time)) + pilatus1.set_exposure_time(exposure_time) + + +def show_me2(my_im, count_low=0, count_high=1, use_colorbar=False, use_cmap='viridis'): + #my_low = np.percentile(my_im, per_low) + #my_high = np.percentile(my_im, per_high) + plt.imshow(my_im, vmin=count_low, vmax=count_high, cmap= use_cmap) + if use_colorbar: + plt.colorbar() + +def show_me_db2( + my_id, + count_low=1, + count_high=99, + use_colorbar=False, + dark_subtract=False, + return_im=False, + return_dark=False, + new_db = True, + use_cmap='viridis', + suffix="_image", +): + my_det_probably = db[my_id].start["detectors"][0] + suffix + if new_db: + my_im = (db[my_id].table(fill=True)[my_det_probably][1][0]).astype(float) + else: + my_im = (db[my_id].table(fill=True)[my_det_probably][1]).astype(float) + + if len(my_im) == 0: + print("issue... passing") + pass + if dark_subtract: + if "sc_dk_field_uid" in db[my_id].start.keys(): + my_dark_id = db[my_id].start["sc_dk_field_uid"] + if new_db: + dark_im = (db[my_dark_id].table(fill=True)[my_det_probably][1][0]).astype(float) + else: + dark_im = (db[my_dark_id].table(fill=True)[my_det_probably][1]).astype(float) + + my_im = my_im - dark_im + else: + print("this run has no associated dark") + if return_im: + return my_im + if return_dark: + return dark_im + + #if all else fails, plot! + show_me2(my_im, count_low=count_low, count_high=count_high, use_colorbar=use_colorbar, use_cmap=use_cmap) + From 4bc71a66397083aed5c9bbc84fffccec323e5e3d Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 5 Jul 2022 15:24:13 -0400 Subject: [PATCH 61/70] MNT: the pilatus is unplugged --- startup/81-pilatus.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/startup/81-pilatus.py b/startup/81-pilatus.py index abaa9a8..d76bb57 100644 --- a/startup/81-pilatus.py +++ b/startup/81-pilatus.py @@ -69,14 +69,9 @@ def set_num_images(self, num_images): yield from bps.mv(self.cam.num_images, num_images) # self.cam.num_images = num_images -pilatus1 = PilatusV33('XF:28ID1-ES{Det:Pilatus}', name='pilatus1_data') -pilatus1.tiff.read_attrs = [] -pilatus1.tiff.kind = 'normal' - - - -# pilatus300 = PilatusV33("XF:28ID1-ES{Det:PIL3X}:", name="pilatus300") -# pilatus300.tiff.read_attrs = [] +# pilatus1 = PilatusV33('XF:28ID1-ES{Det:Pilatus}', name='pilatus1_data') +# pilatus1.tiff.read_attrs = [] +# pilatus1.tiff.kind = 'normal' #for looking at pilatus data From 825ee9fa017952793eb73785016717d2a0303ce7 Mon Sep 17 00:00:00 2001 From: PDF Operator Date: Tue, 5 Jul 2022 16:03:50 -0400 Subject: [PATCH 62/70] Updated permissions for all plans starting with agent_ --- startup/user_group_permissions.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/startup/user_group_permissions.yaml b/startup/user_group_permissions.yaml index 911f05d..06557e1 100644 --- a/startup/user_group_permissions.yaml +++ b/startup/user_group_permissions.yaml @@ -8,6 +8,7 @@ user_groups: - "move_sample" - "pdf_count" - "take_a_nap" + - ":^agent_" forbidden_plans: - ":^_" # All plans with names starting with '_' From bc58c751e6498a29ec344a55a0adf316af2bf236 Mon Sep 17 00:00:00 2001 From: PDF Operator Date: Sat, 9 Jul 2022 14:19:36 -0400 Subject: [PATCH 63/70] add agent permissions --- startup/user_group_permissions.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/startup/user_group_permissions.yaml b/startup/user_group_permissions.yaml index 06557e1..635c04a 100644 --- a/startup/user_group_permissions.yaml +++ b/startup/user_group_permissions.yaml @@ -9,7 +9,6 @@ user_groups: - "pdf_count" - "take_a_nap" - ":^agent_" - forbidden_plans: - ":^_" # All plans with names starting with '_' allowed_devices: From 8405832e0589813a2123e5517e3e150ee81b4188 Mon Sep 17 00:00:00 2001 From: maffettone Date: Sat, 9 Jul 2022 14:24:12 -0400 Subject: [PATCH 64/70] Add plans for experiment --- startup/99-qs_agent_plans.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 startup/99-qs_agent_plans.py diff --git a/startup/99-qs_agent_plans.py b/startup/99-qs_agent_plans.py new file mode 100644 index 0000000..21b165a --- /dev/null +++ b/startup/99-qs_agent_plans.py @@ -0,0 +1,15 @@ + +def agent_sample_count(position: float, exposure: float, *, md=None): + yield from bps.mv(Grid_X, position) + _md = dict(Grid_X=Grid_X.read()) + _md.update(md or {}) + yield from simple_ct([pe1c], exposure, md=_md) + + +@bpp.run_decorator(md={}) +def agent_driven_nap(delay: float, *, delay_kwarg: float = 0): + """Ensuring we can auto add 'agent_' plans and use args/kwargs""" + if delay_kwarg: + yield from bps.sleep(delay_kwarg) + else: + yield from bps.sleep(delay) \ No newline at end of file From f4d2d5d700c2ba71c6b7295441c160e84a5025cd Mon Sep 17 00:00:00 2001 From: PDF Operator Date: Sat, 9 Jul 2022 14:58:25 -0400 Subject: [PATCH 65/70] updated plans --- startup/99-qs_agent_plans.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/startup/99-qs_agent_plans.py b/startup/99-qs_agent_plans.py index 21b165a..43e1a48 100644 --- a/startup/99-qs_agent_plans.py +++ b/startup/99-qs_agent_plans.py @@ -1,15 +1,23 @@ def agent_sample_count(position: float, exposure: float, *, md=None): yield from bps.mv(Grid_X, position) - _md = dict(Grid_X=Grid_X.read()) + _md = dict( + Grid_X=Grid_X.read(), + Grid_Y=Grid_Y.read(), + Grid_Z=Grid_Z.read(), + Det_1_X=Det_1_X.read(), + Det_1_Y=Det_1_Y.read(), + Det_1_Z=Det_1_Z.read(), + ring_current=ring_current.read(), + BStop1=BStop1.read(), + ) _md.update(md or {}) yield from simple_ct([pe1c], exposure, md=_md) - @bpp.run_decorator(md={}) def agent_driven_nap(delay: float, *, delay_kwarg: float = 0): """Ensuring we can auto add 'agent_' plans and use args/kwargs""" if delay_kwarg: yield from bps.sleep(delay_kwarg) else: - yield from bps.sleep(delay) \ No newline at end of file + yield from bps.sleep(delay) From 63aab202c2d02cdd8997a09312d27e6072746576 Mon Sep 17 00:00:00 2001 From: maffettone Date: Sat, 9 Jul 2022 15:06:33 -0400 Subject: [PATCH 66/70] update plan to vary motor --- startup/99-qs_agent_plans.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/startup/99-qs_agent_plans.py b/startup/99-qs_agent_plans.py index 43e1a48..b3a04c1 100644 --- a/startup/99-qs_agent_plans.py +++ b/startup/99-qs_agent_plans.py @@ -1,6 +1,6 @@ -def agent_sample_count(position: float, exposure: float, *, md=None): - yield from bps.mv(Grid_X, position) +def agent_sample_count(motor, position: float, exposure: float, *, md=None): + yield from bps.mv(motor, position) _md = dict( Grid_X=Grid_X.read(), Grid_Y=Grid_Y.read(), From bcfbad32f7ea27ebf20db42d33387defdf0cf7e9 Mon Sep 17 00:00:00 2001 From: PDF Operator Date: Sun, 10 Jul 2022 10:40:28 -0400 Subject: [PATCH 67/70] update pdf plans --- startup/99-qs_agent_plans.py | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/startup/99-qs_agent_plans.py b/startup/99-qs_agent_plans.py index b3a04c1..9be55e7 100644 --- a/startup/99-qs_agent_plans.py +++ b/startup/99-qs_agent_plans.py @@ -1,5 +1,5 @@ -def agent_sample_count(motor, position: float, exposure: float, *, md=None): +def agent_sample_count(motor, position: float, exposure: float, *, sample_number: int, md=None): yield from bps.mv(motor, position) _md = dict( Grid_X=Grid_X.read(), @@ -11,9 +11,11 @@ def agent_sample_count(motor, position: float, exposure: float, *, md=None): ring_current=ring_current.read(), BStop1=BStop1.read(), ) + _md.update(get_metadata_for_sample_number(bt, sample_number)) _md.update(md or {}) yield from simple_ct([pe1c], exposure, md=_md) + @bpp.run_decorator(md={}) def agent_driven_nap(delay: float, *, delay_kwarg: float = 0): """Ensuring we can auto add 'agent_' plans and use args/kwargs""" @@ -21,3 +23,27 @@ def agent_driven_nap(delay: float, *, delay_kwarg: float = 0): yield from bps.sleep(delay_kwarg) else: yield from bps.sleep(delay) + + +def agent_print_glbl_val(key: str): + """ + Get common global values from a namespace dictionary. + Keys + --- + frame_acq_time : Frame rate acquisition time + dk_window : dark window time + """ + print(glbl[key]) + yield from bps.null() + + +def agent_set_glbl_val(key: str, val: float): + """ + Set common global values from a namespace dictionary. + Keys + --- + frame_acq_time : Frame rate acquisition time + dk_window : dark window time + """ + glbl[key] = val + yield from bps.null() From 1b08d6da64d69bf21b303053e434da517d718abe Mon Sep 17 00:00:00 2001 From: maffettone Date: Sun, 10 Jul 2022 11:12:18 -0400 Subject: [PATCH 68/70] debugging msg hook on RE --- startup/94-load.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/startup/94-load.py b/startup/94-load.py index c5cb2c6..df38cbc 100644 --- a/startup/94-load.py +++ b/startup/94-load.py @@ -103,7 +103,9 @@ def __call__(self, plan, *args, **kwargs): super().__call__({}, plan, *args, **kwargs) +from bluesky.utils import ts_msg_hook RE = MoreCustomizedRunEngine(None) +RE.msg_hook = ts_msg_hook() RE.md.update(xrun.md) # insert header to db, either simulated or real RE.subscribe(db.insert, "all") From 3059f88ce078ee6bb0e42e57fdedd0686e4980b1 Mon Sep 17 00:00:00 2001 From: maffettone Date: Sun, 10 Jul 2022 11:13:20 -0400 Subject: [PATCH 69/70] debugging msg hook on RE --- startup/94-load.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/startup/94-load.py b/startup/94-load.py index df38cbc..f794e8c 100644 --- a/startup/94-load.py +++ b/startup/94-load.py @@ -105,7 +105,7 @@ def __call__(self, plan, *args, **kwargs): from bluesky.utils import ts_msg_hook RE = MoreCustomizedRunEngine(None) -RE.msg_hook = ts_msg_hook() +RE.msg_hook = ts_msg_hook RE.md.update(xrun.md) # insert header to db, either simulated or real RE.subscribe(db.insert, "all") From 674cd1cc51a7d348c4ce653e0b7ca7e69879616a Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 12 Dec 2023 15:00:47 -0500 Subject: [PATCH 70/70] uncommited changes --- startup/00-base.py | 5 + startup/80-areadetector.py | 1 + startup/94-load.py | 3 +- startup/99-qs_agent_plans.py | 233 ++++++++++++++++++++++++++++++++++- 4 files changed, 240 insertions(+), 2 deletions(-) diff --git a/startup/00-base.py b/startup/00-base.py index e34484b..9156e75 100644 --- a/startup/00-base.py +++ b/startup/00-base.py @@ -1,3 +1,8 @@ +import xpdacq.xpdacq +xpdacq.xpdacq._inject_calibration_md = lambda msg: msg +xpdacq.xpdacq._inject_calibration_md = lambda msg: msg + + try: ############################################################################### # TODO: remove this block once https://github.com/bluesky/ophyd/pull/959 is diff --git a/startup/80-areadetector.py b/startup/80-areadetector.py index 2056f81..26e4fee 100644 --- a/startup/80-areadetector.py +++ b/startup/80-areadetector.py @@ -149,6 +149,7 @@ def describe(self): shape[0] = self.get_frames_per_point() shape = tuple(shape) description[f"{self.parent.name}_image"]["shape"] = shape + description[f"{self.parent.name}_image"].setdefault('dtype_str', '