From 3902fdf7a3c86a708718c40cdf64c8d03f76cf95 Mon Sep 17 00:00:00 2001 From: XPD_Operator Date: Mon, 16 Sep 2024 20:09:46 -0400 Subject: [PATCH] update at 2024/09/13 XPD beamtime --- scripts/_LDRD_Kafka.py | 14 +++++++------- scripts/_data_export.py | 5 +++-- scripts/_synthesis_queue_RM.py | 14 +++++++------- scripts/inputs_qserver_kafka_v2.xlsx | Bin 23738 -> 23771 bytes scripts/kafka_consumer_iterate_XPD_v2.py | 10 ++++++---- scripts/prepare_agent_pdf.py | 16 ++++++++-------- 6 files changed, 31 insertions(+), 28 deletions(-) diff --git a/scripts/_LDRD_Kafka.py b/scripts/_LDRD_Kafka.py index f460e2c..a777bc2 100644 --- a/scripts/_LDRD_Kafka.py +++ b/scripts/_LDRD_Kafka.py @@ -101,7 +101,7 @@ def _kafka_process(): class dic_to_inputs(): def __init__(self, parameters_dict, parameters_list): - """ Turn the input dict into class methods + """ Turn the input dict into class attributes Args: parameters_dict (dict): dict read from excel spreadsheet @@ -122,14 +122,14 @@ def __init__(self, parameters_dict, parameters_list): class xlsx_to_inputs(): def __init__(self, parameters_list, xlsx_fn, sheet_name='inputs', is_kafka=False): """ Read the excel spreadsheet according to the sheet name into a dict - Turn the dict read from excel into class methods + Turn the dict read from excel into class attributes Args: parameters_list (list): list for namespace deined above xlsx_fn (str): full path if excel file sheet_name (str, optional): sheet name of the excel file. Defaults to 'inputs'. is_kafka (bool, optional): if True, the namespace for the variables processed - in Kafka will be turn into class methods. Defaults to False. + in Kafka will be turn into class attributes. Defaults to False. """ self.parameters_list = parameters_list self.from_xlsx = xlsx_fn @@ -294,7 +294,7 @@ def macro_agent(self, qserver_process, RM, check_target=False, is_1st=False): print(f'\nReach the target, stop iteration, stop all pumps, and wash the loop.\n') ### Stop all infusing pumps and wash loop - sq.wash_tube_queue2(qin.pump_list, qin.wash_tube, 'ul/min', + sq.wash_tube_queue2(qin.pump_list, qin.if_wash, qin.wash_loop, 'ul/min', zmq_control_addr=qin.zmq_control_addr[0], zmq_info_addr=qin.zmq_info_addr[0]) @@ -317,7 +317,7 @@ def macro_agent(self, qserver_process, RM, check_target=False, is_1st=False): if len(self.agent.table) < 2: acq_func = "qr" else: - acq_func = "qei" + acq_func = "qem" new_points = self.agent.ask(acq_func, n=1) @@ -1083,10 +1083,10 @@ def macro_17_add_queue(self, stream_name, qserver_process, RM): print('*** qsever aborted due to too many bad scans, please check setup ***\n') ### Stop all infusing pumps and wash loop - sq.wash_tube_queue2(qin.pump_list, qin.wash_tube, 'ul/min', + sq.wash_tube_queue2(qin.pump_list, qin.if_wash, qin.wash_loop, 'ul/min', zmq_control_addr=qin.zmq_control_addr[0], zmq_info_addr=qin.zmq_info_addr[0]) - + RM.queue_stop() elif (len(self.good_data) <= 2) and (self.inputs.use_good_bad[0]): diff --git a/scripts/_data_export.py b/scripts/_data_export.py index a289a9d..db65498 100644 --- a/scripts/_data_export.py +++ b/scripts/_data_export.py @@ -6,7 +6,8 @@ import os import json import importlib -importlib.import_module("_data_export") +# importlib.import_module("_data_analysis") +from _data_analysis import * """ This module provides functions for data export. Usually imported as de. @@ -63,7 +64,7 @@ def _fn_generator(uid, beamline_acronym='xpd'): date, ttime = _readable_time(metadata_dic['time']) full_uid = metadata_dic['uid'] fn = f'{sample_type}_{date}-{ttime}_{full_uid[0:8]}' - return fn + return fnkafka_test ## Auto generate sample name with given prefix and infuse_rate diff --git a/scripts/_synthesis_queue_RM.py b/scripts/_synthesis_queue_RM.py index 350f67f..d6500a2 100644 --- a/scripts/_synthesis_queue_RM.py +++ b/scripts/_synthesis_queue_RM.py @@ -163,13 +163,13 @@ def synthesis_queue_xlsx(parameter_obj): - ## 4.0 Configure area detector in Qserver - if det1 == 'pe1c' or det1 == 'pe2c': - scanplan = BPlan('configure_area_det', - det=det1, - exposure=1, - acq_time=det1_frame_rate) - RM.item_add(scanplan, pos=pos) + # ## 4.0 Configure area detector in Qserver + # if det1 == 'pe1c' or det1 == 'pe2c': + # scanplan = BPlan('configure_area_det', + # det=det1, + # exposure=1, + # acq_time=det1_frame_rate) + # RM.item_add(scanplan, pos=pos) ## 4-1. Take a fluorescence peak to check reaction diff --git a/scripts/inputs_qserver_kafka_v2.xlsx b/scripts/inputs_qserver_kafka_v2.xlsx index c1980b1731944582b142650a3d671856cc7710e2..24b7cdd62965d04bb0ca8c434700a42874a30936 100644 GIT binary patch delta 19860 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