From 98e73bc53eb3e11d5a258390e80d0d72e7701cdc Mon Sep 17 00:00:00 2001 From: XPD Operator Date: Wed, 1 Nov 2023 14:03:16 -0400 Subject: [PATCH] Update BS plan, kafka, qsever for ML --- .../qserver_zmq_001-checkpoint.ipynb | 101 +++++++++++++++++- scripts/kafka_consumer_single.py | 60 ++++++----- scripts/kafka_consumer_with_qserver.py | 65 ++++++----- scripts/qserver_zmq_001.ipynb | 58 +++++++++- scripts/queue_test_004.py | 17 +-- startup/existing_plans_and_devices.yaml | 68 ++++++------ 6 files changed, 271 insertions(+), 98 deletions(-) diff --git a/scripts/.ipynb_checkpoints/qserver_zmq_001-checkpoint.ipynb b/scripts/.ipynb_checkpoints/qserver_zmq_001-checkpoint.ipynb index 9b963f8..6cb32c4 100644 --- a/scripts/.ipynb_checkpoints/qserver_zmq_001-checkpoint.ipynb +++ b/scripts/.ipynb_checkpoints/qserver_zmq_001-checkpoint.ipynb @@ -17,16 +17,18 @@ "## 1. Open a terminal for qserver manager\n", "~$ conda activate 2023-1.3-py310-tiled\n", "\n", - "~$ start-re-manager --startup-dir ~/.ipython/profile_collection/startup --keep-re" + "~$ start-re-manager --startup-dir ~/.ipython/profile_collection/startup --keep-re\n", + "\n", + "~$ start-re-manager --startup-dir ~/.ipython/profile_collection/startup --keep-re --redis-addr localhost:60737" ] }, { + "attachments": {}, "cell_type": "markdown", "id": "c1098d2d-02d9-41e0-8411-84ba2797fbe8", "metadata": {}, "source": [ "## 2. Open another terminal for BSUI ipython\n", - "~$ conda activate 2023-1.3-py310-tiled\n", "\n", "~$ BS_ENV=2023-1.3-py310-tiled bsui" ] @@ -297,7 +299,96 @@ " \"data_agent\":\"tiled\"}, \n", " \"item_type\":\"plan\"}, \n", " 'user_group':'primary', \n", - " 'user':'chlin'})\n" + " 'user':'chlin'})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "32f7b36f", + "metadata": {}, + "outputs": [], + "source": [ + "zmq_single_request(method='queue_item_add', params={'item':{\"name\":\"insitu_test\", \"args\": [1 ,1], \"kwargs\": {\"sample\": \"quinine_qserver\", \"csv_path\": \"/home/xf28id2/Documents/ChengHung/20230403_qserver_collection\", \"data_agent\":\"tiled\"}, \"item_type\":\"plan\"}, 'user_group':'primary', 'user':'chlin'})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ea5f28a6", + "metadata": {}, + "outputs": [], + "source": [ + "zmq_single_request(method='queue_item_add', params={'item':{\"name\":\"take_a_uvvis_csv_q\", \n", + " \"kwargs\": {\"sample_type\": \"quinine_qserver\", \n", + " \"spectrum_type\": 'Corrected Sample', \n", + " \"correction_type\": 'Dark',\n", + " \"data_agent\":\"tiled\"}, \n", + " \"item_type\":\"plan\"}, \n", + " 'user_group':'primary', \n", + " 'user':'chlin'})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e2e50765-b098-4ef2-b38b-adb77d0b7d1c", + "metadata": {}, + "outputs": [], + "source": [ + "sl = 50 # syringe_list\n", + "pl = 'dds1_p1' # pump_list\n", + "ir = '99 ul/min' # infuse_rate\n", + "tvl = '30 ml' # target_vol_list\n", + "stl = False # set_target_list\n", + "sml = 'steel' # syringe_mater_list\n", + "zmq_single_request(method='queue_item_add', \n", + " params={\n", + " 'item':{\"name\":\"set_group_infuse2\", \n", + " \"args\": [[sl], [pl]], \n", + " \"kwargs\": {\"rate_list\":[ir], \"target_vol_list\":[tvl], \"set_target_list\":[stl], \"syringe_mater_list\":[sml]}, \n", + " \"item_type\":\"plan\"\n", + " }, 'user_group':'primary', 'user':'chlin'})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25660cbd-3f2b-4cb4-a129-eec1287798cc", + "metadata": {}, + "outputs": [], + "source": [ + "zmq_single_request(method='queue_item_add', \n", + " params={\n", + " 'item':{\"name\":\"start_group_infuse\", \n", + " \"args\": [[pl], [ir]], \n", + " \"item_type\":\"plan\"\n", + " }, 'user_group':'primary', 'user':'chlin'})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9dd512c1-cc95-42e5-be7a-8c3493a30034", + "metadata": {}, + "outputs": [], + "source": [ + "zmq_single_request(method='queue_item_add', \n", + " params={\n", + " 'item':{\"name\":\"stop_group\", \n", + " \"args\": [pump_list], \n", + " \"item_type\":\"plan\"\n", + " }, 'user_group':'primary', 'user':'chlin'})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d17b2b61", + "metadata": {}, + "outputs": [], + "source": [ + "zmq_single_request(method='queue_item_add', params={'item':{\"name\":\"take_a_uvvis_csv_q\",\"kwargs\":{\"sample_type\":\"quinine_qserver\",\"spectrum_type\":\"Corrected Sample\",\"correction_type\":\"Dark\",\"data_agent\":\"tiled\"},\"item_type\":\"plan\"},'user_group':'primary','user':'chlin'})" ] }, { @@ -815,7 +906,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "a855ce6b-f4d3-41d2-a606-c074abace2c8", "metadata": { "tags": [] @@ -864,7 +955,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.8" + "version": "3.10.12" } }, "nbformat": 4, diff --git a/scripts/kafka_consumer_single.py b/scripts/kafka_consumer_single.py index 7ad5493..877dcab 100644 --- a/scripts/kafka_consumer_single.py +++ b/scripts/kafka_consumer_single.py @@ -37,7 +37,8 @@ ################################################################## # Define namespace for tasks in Qserver and Kafa -dummy_test = bool(input_dic['dummy_test'][0]) +dummy_kafka = bool(input_dic['dummy_test'][0]) +# dummy_qserver = bool(input_dic['dummy_test'][1]) csv_path = input_dic['csv_path'][0] key_height = input_dic['key_height'] height = input_dic['height'] @@ -63,22 +64,30 @@ from bloptools.bayesian import Agent, DOF, Objective dofs = [ - #DOF(name="infusion_rate_1", limits=(1500, 2000)), - #DOF(name="infusion_rate_2", limits=(1500, 2000)), - DOF(name="infusion_rate_3", limits=(1500, 2000)), + DOF(name="infusion_rate_1", limits=(30, 150)), + DOF(name="infusion_rate_2", limits=(30, 150)), + # DOF(name="infusion_rate_3", limits=(1500, 2000)), ] objectives = [ - Objective(name="Peak emission", key="peak_emission", target=525, units="nm"), - Objective(name="Peak width", key="peak_fwhm", minimize=True, units="nm"), - Objective(name="Quantum yield", key="plqy"), + Objective(name="Peak emission", key="peak_emission", target=500), + Objective(name="Peak width", key="peak_fwhm", target="min"), + Objective(name="Quantum yield", key="plqy", target="max"), ] + +# objectives = [ +# Objective(name="Peak emission", key="peak_emission", target=525, units="nm"), +# Objective(name="Peak width", key="peak_fwhm", minimize=True, units="nm"), +# Objective(name="Quantum yield", key="plqy"), +# ] + +USE_AGENT = False agent = Agent(dofs=dofs, objectives=objectives, db=None, verbose=True) def print_kafka_messages(beamline_acronym, csv_path=csv_path, - dummy_test=dummy_test, plqy=PLQY, + dummy_test=dummy_kafka, plqy=PLQY, key_height=key_height, height=height, distance=distance, ): print(f"Listening for Kafka messages for {beamline_acronym}") @@ -256,30 +265,31 @@ def print_message(consumer, doctype, doc): ### Three parameters for ML: peak_emission, fwhm, plqy # TODO: add ML agent code here - # predicttion = ML(peak_emission, fwhm, plqy) - table = pd.DataFrame(index=[0]) + if USE_AGENT: - # DOFs - table.loc[0, "infusion_rate_1"] = metadata_dic["infuse_rate"][0] - table.loc[0, "infusion_rate_2"] = metadata_dic["infuse_rate"][1] - table.loc[0, "infusion_rate_3"] = metadata_dic["infuse_rate"][2] + table = pd.DataFrame(index=[0]) + # DOFs + table.loc[0, "infusion_rate_1"] = metadata_dic["infuse_rate"][0] + table.loc[0, "infusion_rate_2"] = metadata_dic["infuse_rate"][1] + # table.loc[0, "infusion_rate_3"] = metadata_dic["infuse_rate"][2] - # Objectives - table.loc[0, "peak_emission"] = peak_emission - table.loc[0, "peak_fwhm"] = fwhm - table.loc[0, "plqy"] = plqy - - agent.tell(table, append=True) + # Objectives + table.loc[0, "peak_emission"] = peak_emission + table.loc[0, "peak_fwhm"] = fwhm + table.loc[0, "plqy"] = plqy + - if len(agent.table) < 4: - acq_func = "qr" - else: - acq_func = "qei" + agent.tell(table, append=True) + + if len(agent.table) < 2: + acq_func = "qr" + else: + acq_func = "qei" - new_points, _ = agent.ask(acq_func, n=1) + new_points, _ = agent.ask(acq_func, n=1) diff --git a/scripts/kafka_consumer_with_qserver.py b/scripts/kafka_consumer_with_qserver.py index f7aac72..149a643 100644 --- a/scripts/kafka_consumer_with_qserver.py +++ b/scripts/kafka_consumer_with_qserver.py @@ -32,12 +32,13 @@ plt.rcParams["figure.raise_window"] = False ## Input varaibales: read from inputs_qserver_kafka.xlsx -xlsx = '/home/xf28id2/Documents/ChengHung/inputs_qserver_kafka_dilute.xlsx' +xlsx = '/home/xf28id2/Documents/ChengHung/inputs_qserver_kafka_ML.xlsx' input_dic = de._read_input_xlsx(xlsx) ################################################################## # Define namespace for tasks in Qserver and Kafa -dummy_test = bool(input_dic['dummy_test'][0]) +dummy_kafka = bool(input_dic['dummy_test'][0]) +dummy_qserver = bool(input_dic['dummy_test'][1]) csv_path = input_dic['csv_path'][0] key_height = input_dic['key_height'] height = input_dic['height'] @@ -62,24 +63,33 @@ from bloptools.bayesian import Agent, DOF, Objective dofs = [ - DOF(name="infusion_rate_1", limits=(10, 100)), - DOF(name="infusion_rate_2", limits=(10, 100)), - DOF(name="infusion_rate_3", limits=(10, 100)), + DOF(name="infusion_rate_1", limits=(30, 150)), + DOF(name="infusion_rate_2", limits=(30, 150)), + # DOF(name="infusion_rate_3", limits=(1500, 2000)), ] objectives = [ - Objective(name="Peak emission", key="peak_emission"), - Objective(name="Peak width", key="peak_fwhm"), - Objective(name="Quantum yield", key="plqy"), + Objective(name="Peak emission", key="peak_emission", target=500), + Objective(name="Peak width", key="peak_fwhm", target="min"), + Objective(name="Quantum yield", key="plqy", target="max"), ] + +# objectives = [ +# Objective(name="Peak emission", key="peak_emission", target=525, units="nm"), +# Objective(name="Peak width", key="peak_fwhm", minimize=True, units="nm"), +# Objective(name="Quantum yield", key="plqy"), +# ] + + +USE_AGENT = False agent = Agent(dofs=dofs, objectives=objectives, db=None, verbose=True) def print_kafka_messages(beamline_acronym, csv_path=csv_path, key_height=key_height, height=height, distance=distance, pump_list=pump_list, sample=sample, precursor_list=precursor_list, - mixer=mixer, dummy_test=dummy_test, plqy=PLQY): + mixer=mixer, dummy_test=dummy_kafka, plqy=PLQY): print(f"Listening for Kafka messages for {beamline_acronym}") print(f'Defaul parameters:\n' @@ -255,30 +265,33 @@ def print_message(consumer, doctype, doc, ### Three parameters for ML: peak_emission, fwhm, plqy # TODO: add ML agent code here - # predicttion = ML(peak_emission, fwhm, plqy) + if USE_AGENT: + + print(f'\n** Send peak_emission, FWHM, PLQY to ML agent**\n') + table = pd.DataFrame(index=[0]) - table = pd.DataFrame(index=[0]) + # DOFs + table.loc[0, "infusion_rate_1"] = metadata_dic["infuse_rate"][0] + table.loc[0, "infusion_rate_2"] = metadata_dic["infuse_rate"][1] + # table.loc[0, "infusion_rate_3"] = metadata_dic["infuse_rate"][2] - # DOFs - table.loc[0, "infusion_rate_1"] = metadata_dic["infuse_rate"][0] - table.loc[0, "infusion_rate_2"] = metadata_dic["infuse_rate"][1] - table.loc[0, "infusion_rate_3"] = metadata_dic["infuse_rate"][2] + # Objectives + table.loc[0, "peak_emission"] = peak_emission + table.loc[0, "peak_fwhm"] = fwhm + table.loc[0, "plqy"] = plqy + - # Objectives - table.loc[0, "peak_emission"] = peak_emission - table.loc[0, "peak_fwhm"] = fwhm - table.loc[0, "plqy"] = plqy - + agent.tell(table, append=True) - agent.tell(table, append=True) + if len(agent.table) < 2: + acq_func = "qr" + else: + acq_func = "qei" - if len(agent.table) < 4: - acq_func = "qr" - else: - acq_func = "qei" + new_points, _ = agent.ask(acq_func, n=1) - new_inputs = agent.ask(acq_func, n=1) + # print(f'\n** ML prediction: {new_points}**\n') # ... diff --git a/scripts/qserver_zmq_001.ipynb b/scripts/qserver_zmq_001.ipynb index 1b09a30..6cb32c4 100644 --- a/scripts/qserver_zmq_001.ipynb +++ b/scripts/qserver_zmq_001.ipynb @@ -17,7 +17,9 @@ "## 1. Open a terminal for qserver manager\n", "~$ conda activate 2023-1.3-py310-tiled\n", "\n", - "~$ start-re-manager --startup-dir ~/.ipython/profile_collection/startup --keep-re" + "~$ start-re-manager --startup-dir ~/.ipython/profile_collection/startup --keep-re\n", + "\n", + "~$ start-re-manager --startup-dir ~/.ipython/profile_collection/startup --keep-re --redis-addr localhost:60737" ] }, { @@ -327,6 +329,58 @@ " 'user':'chlin'})" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "e2e50765-b098-4ef2-b38b-adb77d0b7d1c", + "metadata": {}, + "outputs": [], + "source": [ + "sl = 50 # syringe_list\n", + "pl = 'dds1_p1' # pump_list\n", + "ir = '99 ul/min' # infuse_rate\n", + "tvl = '30 ml' # target_vol_list\n", + "stl = False # set_target_list\n", + "sml = 'steel' # syringe_mater_list\n", + "zmq_single_request(method='queue_item_add', \n", + " params={\n", + " 'item':{\"name\":\"set_group_infuse2\", \n", + " \"args\": [[sl], [pl]], \n", + " \"kwargs\": {\"rate_list\":[ir], \"target_vol_list\":[tvl], \"set_target_list\":[stl], \"syringe_mater_list\":[sml]}, \n", + " \"item_type\":\"plan\"\n", + " }, 'user_group':'primary', 'user':'chlin'})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25660cbd-3f2b-4cb4-a129-eec1287798cc", + "metadata": {}, + "outputs": [], + "source": [ + "zmq_single_request(method='queue_item_add', \n", + " params={\n", + " 'item':{\"name\":\"start_group_infuse\", \n", + " \"args\": [[pl], [ir]], \n", + " \"item_type\":\"plan\"\n", + " }, 'user_group':'primary', 'user':'chlin'})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9dd512c1-cc95-42e5-be7a-8c3493a30034", + "metadata": {}, + "outputs": [], + "source": [ + "zmq_single_request(method='queue_item_add', \n", + " params={\n", + " 'item':{\"name\":\"stop_group\", \n", + " \"args\": [pump_list], \n", + " \"item_type\":\"plan\"\n", + " }, 'user_group':'primary', 'user':'chlin'})" + ] + }, { "cell_type": "code", "execution_count": null, @@ -901,7 +955,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.8" + "version": "3.10.12" } }, "nbformat": 4, diff --git a/scripts/queue_test_004.py b/scripts/queue_test_004.py index ab090ee..bd72264 100644 --- a/scripts/queue_test_004.py +++ b/scripts/queue_test_004.py @@ -5,12 +5,13 @@ pump, syringe, precursor, mixer parameters ''' ## Input varaibales: read from inputs_qserver_kafka.xlsx -xlsx = '/home/xf28id2/Documents/ChengHung/inputs_qserver_kafka_ZnI.xlsx' +xlsx = '/home/xf28id2/Documents/ChengHung/inputs_qserver_kafka_ML.xlsx' input_dic = de._read_input_xlsx(xlsx) ################################################################## # Define namespace for tasks in Qserver and Kafa -dummy_test = bool(input_dic['dummy_test'][0]) +dummy_kafka = bool(input_dic['dummy_test'][0]) +dummy_qserver = bool(input_dic['dummy_test'][1]) csv_path = input_dic['csv_path'][0] key_height = input_dic['key_height'] height = input_dic['height'] @@ -52,12 +53,12 @@ for i in range(len(infuse_rates)): # for i in range(2): ## 1. Set i infuese rates - for sl, pl, ir, tvl, stl in zip(syringe_list, pump_list, infuse_rates[i], target_vol_list, set_target_list[i]): + for sl, pl, ir, tvl, stl, sml in zip(syringe_list, pump_list, infuse_rates[i], target_vol_list, set_target_list[i], syringe_mater_list): zmq_single_request(method='queue_item_add', params={ 'item':{"name":"set_group_infuse2", "args": [[sl], [pl]], - "kwargs": {"rate_list":[ir], "target_vol_list":[tvl], "set_target_list":[stl]}, + "kwargs": {"rate_list":[ir], "target_vol_list":[tvl], "set_target_list":[stl], "syringe_mater_list":[sml]}, "item_type":"plan" }, 'user_group':'primary', 'user':'chlin'}) @@ -66,17 +67,17 @@ zmq_single_request(method='queue_item_add', params={ 'item':{"name":"start_group_infuse", - "args": [[pump_list], [infuse_rates[i]]], + "args": [pump_list, infuse_rates[i]], "item_type":"plan" }, 'user_group':'primary', 'user':'chlin'}) ## 3. Wait for equilibrium - if dummy_test: + if dummy_qserver: zmq_single_request(method='queue_item_add', params={ 'item':{"name":"sleep_sec_q", - "args":[30], + "args":[5], "item_type":"plan" }, 'user_group':'primary', 'user':'chlin'}) @@ -122,7 +123,7 @@ params={ 'item':{"name":"xray_uvvis_plan", "args":['det', 'qepro'], - "kwargs": {'num_abs':4, 'num_flu':6, + "kwargs": {'num_abs':9, 'num_flu':9, 'sample_type':sample[i], 'spectrum_type':'Absorbtion', 'correction_type':'Reference', 'pump_list':pump_list, 'precursor_list':precursor_list, diff --git a/startup/existing_plans_and_devices.yaml b/startup/existing_plans_and_devices.yaml index 22bdfa9..bcb8ac2 100644 --- a/startup/existing_plans_and_devices.yaml +++ b/startup/existing_plans_and_devices.yaml @@ -42,7 +42,7 @@ existing_devices: is_flyable: false is_movable: false is_readable: true - module: startup_script + module: __main__ dds1_p1: classname: syrng_DDS_ax components: @@ -301,7 +301,7 @@ existing_devices: is_flyable: false is_movable: false is_readable: true - module: startup_script + module: __main__ dds1_p2: classname: syrng_DDS_ax components: @@ -560,7 +560,7 @@ existing_devices: is_flyable: false is_movable: false is_readable: true - module: startup_script + module: __main__ dds2: classname: syrng_DDS components: @@ -591,7 +591,7 @@ existing_devices: is_flyable: false is_movable: false is_readable: true - module: startup_script + module: __main__ dds2_p1: classname: syrng_DDS_ax components: @@ -850,7 +850,7 @@ existing_devices: is_flyable: false is_movable: false is_readable: true - module: startup_script + module: __main__ dds2_p2: classname: syrng_DDS_ax components: @@ -1109,7 +1109,7 @@ existing_devices: is_flyable: false is_movable: false is_readable: true - module: startup_script + module: __main__ det: classname: SynGauss components: @@ -1519,7 +1519,7 @@ existing_devices: is_flyable: false is_movable: true is_readable: true - module: startup_script + module: __main__ trigger_mode: classname: EpicsSignalWithRBV is_flyable: false @@ -1541,7 +1541,7 @@ existing_devices: is_flyable: false is_movable: false is_readable: true - module: startup_script + module: __main__ ultra1: classname: syrng_ultra components: @@ -1722,7 +1722,7 @@ existing_devices: is_flyable: false is_movable: false is_readable: true - module: startup_script + module: __main__ ultra2: classname: syrng_ultra components: @@ -1903,16 +1903,16 @@ existing_devices: is_flyable: false is_movable: false is_readable: true - module: startup_script + module: __main__ existing_plans: LED_off: - module: startup_script + module: __main__ name: LED_off parameters: [] properties: is_generator: true LED_on: - module: startup_script + module: __main__ name: LED_on parameters: [] properties: @@ -1959,31 +1959,31 @@ existing_plans: properties: is_generator: true deuterium_off: - module: startup_script + module: __main__ name: deuterium_off parameters: [] properties: is_generator: true deuterium_on: - module: startup_script + module: __main__ name: deuterium_on parameters: [] properties: is_generator: true halogen_off: - module: startup_script + module: __main__ name: halogen_off parameters: [] properties: is_generator: true halogen_on: - module: startup_script + module: __main__ name: halogen_on parameters: [] properties: is_generator: true insitu_test: - module: startup_script + module: __main__ name: insitu_test parameters: - kind: @@ -2032,7 +2032,7 @@ existing_plans: properties: is_generator: true reset_pumps2: - module: startup_script + module: __main__ name: reset_pumps2 parameters: - kind: @@ -2094,7 +2094,7 @@ existing_plans: properties: is_generator: true set_group_infuse: - module: startup_script + module: __main__ name: set_group_infuse parameters: - kind: @@ -2123,7 +2123,7 @@ existing_plans: properties: is_generator: true set_group_infuse2: - module: startup_script + module: __main__ name: set_group_infuse2 parameters: - kind: @@ -2157,7 +2157,7 @@ existing_plans: properties: is_generator: true set_group_withdraw: - module: startup_script + module: __main__ name: set_group_withdraw parameters: - kind: @@ -2186,7 +2186,7 @@ existing_plans: properties: is_generator: true setup_collection_q: - module: startup_script + module: __main__ name: setup_collection_q parameters: - default: '100' @@ -2222,19 +2222,19 @@ existing_plans: properties: is_generator: true shutter_close: - module: startup_script + module: __main__ name: shutter_close parameters: [] properties: is_generator: true shutter_open: - module: startup_script + module: __main__ name: shutter_open parameters: [] properties: is_generator: true sleep_sec_q: - module: startup_script + module: __main__ name: sleep_sec_q parameters: - kind: @@ -2244,17 +2244,21 @@ existing_plans: properties: is_generator: true start_group_infuse: - module: startup_script + module: __main__ name: start_group_infuse parameters: - kind: name: POSITIONAL_OR_KEYWORD value: 1 name: pump_list + - kind: + name: POSITIONAL_OR_KEYWORD + value: 1 + name: rate_list properties: is_generator: true start_group_withdraw: - module: startup_script + module: __main__ name: start_group_withdraw parameters: - kind: @@ -2264,7 +2268,7 @@ existing_plans: properties: is_generator: true stop_group: - module: startup_script + module: __main__ name: stop_group parameters: - kind: @@ -2274,7 +2278,7 @@ existing_plans: properties: is_generator: true take_a_uvvis_csv_q: - module: startup_script + module: __main__ name: take_a_uvvis_csv_q parameters: - default: '''test''' @@ -2335,7 +2339,7 @@ existing_plans: properties: is_generator: true take_ref_bkg_q: - module: startup_script + module: __main__ name: take_ref_bkg_q parameters: - default: '15' @@ -2376,7 +2380,7 @@ existing_plans: properties: is_generator: true wait_equilibrium: - module: startup_script + module: __main__ name: wait_equilibrium parameters: - kind: @@ -2400,7 +2404,7 @@ existing_plans: properties: is_generator: true xray_uvvis_plan: - module: startup_script + module: __main__ name: xray_uvvis_plan parameters: - kind: