From bf3a73dd78a8326679e4e0e3a12b2e7886d951df Mon Sep 17 00:00:00 2001 From: XPD Operator Date: Thu, 22 Aug 2024 21:44:25 -0400 Subject: [PATCH] update macros with real data at 1LL09 --- scripts/_LDRD_Kafka.py | 9 ++-- scripts/_synthesis_queue_RM.py | 54 ++++++++++++--------- scripts/inputs_qserver_kafka_v2.xlsx | Bin 22382 -> 22720 bytes scripts/kafka_consumer_iterate_1LL09_v2.py | 36 ++------------ 4 files changed, 40 insertions(+), 59 deletions(-) diff --git a/scripts/_LDRD_Kafka.py b/scripts/_LDRD_Kafka.py index 217c26d..1d9b8c2 100644 --- a/scripts/_LDRD_Kafka.py +++ b/scripts/_LDRD_Kafka.py @@ -12,7 +12,7 @@ sq = importlib.import_module("_synthesis_queue_RM") de = importlib.import_module("_data_export") da = importlib.import_module("_data_analysis") -pc = importlib.import_module("_pdf_calculator") +# pc = importlib.import_module("_pdf_calculator") # from diffpy.pdfgetx import PDFConfig # gp = importlib.import_module("_get_pdf") @@ -33,7 +33,8 @@ def _qserver_inputs(): 'name_by_prefix', 'prefix', 'pump_list', 'precursor_list', 'syringe_mater_list', 'syringe_list', 'target_vol_list', 'sample', - 'wait_dilute', 'mixer', 'wash_tube', 'resident_t_ratio', + 'wait_dilute', 'if_wash', 'wash_loop', 'wash_sapphire', + 'mixer', 'wash_tube', 'resident_t_ratio', 'rate_unit', 'uvvis_config', 'perkin_config', 'auto_set_target_list', 'set_target_list', 'infuse_rates', ] @@ -736,7 +737,7 @@ def macro_10_good_bad(self, stream_name): distance=self.inputs.distance[0], height=self.inputs.height[0], dummy_test=self.inputs.dummy_kafka[0], - percent_range=[30, 100]) + percent_range=[40, 100]) self.PL_goodbad = {} PL_goodbad = { 'wavelength':np.asarray(x0), 'percentile_mean':np.asarray(y0), @@ -765,7 +766,7 @@ def macro_11_absorbance(self, stream_name): ## Apply percnetile filtering for absorption spectra, defaut percent_range = [15, 85] abs_per = da.percentile_abs(self.qepro_dic['QEPro_x_axis'], self.qepro_dic['QEPro_output'], - percent_range=[15, 85]) + percent_range=[5, 65]) print(f'\n*** start to check absorbance at 365b nm in stream: {stream_name} is positive or not***\n') # abs_array = qepro_dic['QEPro_output'][1:].mean(axis=0) diff --git a/scripts/_synthesis_queue_RM.py b/scripts/_synthesis_queue_RM.py index 7422a60..1cd9b1c 100644 --- a/scripts/_synthesis_queue_RM.py +++ b/scripts/_synthesis_queue_RM.py @@ -33,7 +33,10 @@ def synthesis_queue_xlsx(parameter_obj): resident_t_ratio = qsp.resident_t_ratio prefix = qsp.prefix sample = qsp.sample - wash_tube = qsp.wash_tube + wait_dilute = qsp.wait_dilute + if_wash = qsp.if_wash + wash_loop = qsp.wash_loop + wash_sapphire = qsp.wash_sapphire rate_unit = qsp.rate_unit[0] name_by_prefix = qsp.name_by_prefix[0] det2 = qsp.uvvis_config[0] @@ -72,19 +75,20 @@ def synthesis_queue_xlsx(parameter_obj): else: set_target_list = set_target_list.tolist() - + num_pumps = int(len(wash_loop)/3) # 0. stop infuese for all pumps - flowplan = BPlan('stop_group', pump_list + [wash_tube[2], wash_tube[5]]) + flowplan = BPlan('stop_group', pump_list + [wash_loop[1+i*3] for i in range(num_pumps)]) RM.item_add(flowplan, pos=pos) - + for i in range(len(rate_list)): # for i in range(2): ## 1. Set i infuese rates + rate_list2 = rate_list[i][:-1] + [60] for sl, pl, ir, tvl, stl, sml in zip( syringe_list, pump_list, - rate_list[i], + rate_list2, target_vol_list, set_target_list[i], syringe_mater_list @@ -92,7 +96,6 @@ def synthesis_queue_xlsx(parameter_obj): # ir = float(ir) # stl = int(stl) - flowplan = BPlan('set_group_infuse2', [sl], [pl], rate_list = [ir], target_vol_list = [tvl], @@ -102,13 +105,14 @@ def synthesis_queue_xlsx(parameter_obj): RM.item_add(flowplan, pos=pos) - ## 2. Start infuese - if precursor_list[-1] == 'Toluene': - flowplan = BPlan('start_group_infuse', pump_list[:-1], rate_list[i][:-1]) + # ## 2. Start infuese + # if precursor_list[-1] == 'Toluene': + # flowplan = BPlan('start_group_infuse', pump_list[:-1], rate_list[i][:-1]) - else: - flowplan = BPlan('start_group_infuse', pump_list, rate_list[i]) + # else: + # flowplan = BPlan('start_group_infuse', pump_list, rate_list[i]) + flowplan = BPlan('start_group_infuse', pump_list, rate_list[i]) RM.item_add(flowplan, pos=pos) @@ -145,7 +149,13 @@ def synthesis_queue_xlsx(parameter_obj): ## 3.1 Wait for 30 secpnds for post dilute if precursor_list[-1] == 'Toluene': - flowplan = BPlan('start_group_infuse', [pump_list[-1]], [rate_list[i][-1]]) + # flowplan = BPlan('start_group_infuse', [pump_list[-1]], [rate_list[i][-1]]) + flowplan = BPlan('set_group_infuse2', [syringe_list[-1]], [pump_list[-1]], + rate_list = [rate_list[i][-1]], + target_vol_list = [target_vol_list[-1]], + set_target_list = [set_target_list[i][-1]], + syringe_mater_list = [syringe_mater_list[-1]], + rate_unit = rate_unit) RM.item_add(flowplan, pos=pos) restplan = BPlan('sleep_sec_q', qsp.wait_dilute[0]) @@ -222,12 +232,12 @@ def synthesis_queue_xlsx(parameter_obj): ###### Kafka analyze data here. ####### ## 7. Wash the loop and mixer - if wash_tube[0] == 0: - wash_tube_queue2(pump_list, wash_tube, rate_unit, + if if_wash[0] == 1: + wash_tube_queue2(pump_list, if_wash, wash_loop, rate_unit, pos=[pos,pos,pos,pos,pos], zmq_control_addr=zmq_control_addr, zmq_info_addr=zmq_info_addr) - elif wash_tube[0] == 1: + elif wash_tube[0] == 0: inst1 = BInst("queue_stop") RM.item_add(inst1, pos='front') @@ -716,7 +726,7 @@ def wash_tube_queue(pump_list, wash_tube, rate_unit, ## wash loop with two solvents -def wash_tube_queue2(pump_list, wash_tube, rate_unit, +def wash_tube_queue2(pump_list, if_wash, wash_loop, rate_unit, pos=[0,1,2,3,4], zmq_control_addr='tcp://localhost:60615', zmq_info_addr='tcp://localhost:60625'): @@ -727,10 +737,10 @@ def wash_tube_queue2(pump_list, wash_tube, rate_unit, flowplan = BPlan('stop_group', pump_list) RM.item_add(flowplan, pos=pos[0]) - + num_pumps = int(len(wash_loop)/3) ### Set up washing tube/loop - flowplan = BPlan('set_group_infuse2', [wash_tube[1], wash_tube[4]], [wash_tube[2], wash_tube[5]], - rate_list=[wash_tube[3], wash_tube[6]], + flowplan = BPlan('set_group_infuse2', [wash_loop[0+i*3] for i in range(num_pumps)], [wash_loop[1+i*3] for i in range(num_pumps)], + rate_list=[wash_loop[2+i*3] for i in range(num_pumps)], target_vol_list=['30 ml', '15 ml'], set_target_list=[False, False], syringe_mater_list = ['steel', 'plastic_BD'], @@ -739,18 +749,18 @@ def wash_tube_queue2(pump_list, wash_tube, rate_unit, ### Start washing tube/loop - flowplan = BPlan('start_group_infuse', [wash_tube[2], wash_tube[5]], [wash_tube[3], wash_tube[6]]) + flowplan = BPlan('start_group_infuse', [wash_loop[1+i*3] for i in range(num_pumps)], [wash_loop[2+i*3] for i in range(num_pumps)]) RM.item_add(flowplan, pos=pos[2]) ### Wash loop/tube for xxx seconds - restplan = BPlan('sleep_sec_q', wash_tube[7]) + restplan = BPlan('sleep_sec_q', if_wash[1]) RM.item_add(restplan, pos=pos[3]) ### Stop washing - flowplan = BPlan('stop_group', [wash_tube[2], wash_tube[5]]) + flowplan = BPlan('stop_group', [wash_loop[1+i*3] for i in range(num_pumps)]) RM.item_add(flowplan, pos=pos[4]) diff --git a/scripts/inputs_qserver_kafka_v2.xlsx b/scripts/inputs_qserver_kafka_v2.xlsx index 36cf5fbb300a394f3be950fd5e919b2dd68e6909..a9f7ac3ef5a93ebc04290d828ff98d1ce25b6f8a 100644 GIT binary patch delta 16910 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 delta 16620 zcmZv@WmsO#vMq|cySux)1QOic-Q6MRgg}ts?gV#tcXxLQ?j*RwA>X=p@3q!B^UwQM z_2_DwPmi8eUEMXH7nPuhiZb937$7h(Fd$d3m^FwLpx__B@f@Hm0A5}Y34MJ+7T9?Y zV+XF9HZ|Q-pEmU2d0Au3-ufC+olhIPPZN($hM_doL)5wkCvA6GcBHWDUIoC!oi9n# zk;L`&Xc!l5C5-=#?>h`So}?Jn!+b2c@w#%_JZgrlTBEP~APaApmOM1x;0(=IIBWM` zv0QEwGz>8MflRxQfaF`~8u}Y{Y2ec%bI1K*is!fcU%81e-{wx2p%WUpkswS?x%jas zh>h#TrN#?FJ03HB?cc+hsp(XdnKy9z=?6z6;%n-xGa&E|VAJH=b$De&E|~QlGe*qW zIPKso%0R<(deZrvfq;Pcf`Wkj$2@3#DC>;DV*fQ6ciGSiS)9@Eay`HsgkG*lIG0!GZ4OvD2vWu&cP_~~g3Y$eehfwM78AtW z&h_s0;An*vv;t6A(PUXYG}AWh%9ot$UDu66;Vx0G#0p!p9O6Nlw^VUYA> zRSfU8KNvx6S{`wz)(Tq6cItOWI!KRwBVOy>!BM5`ckhz-OsQ?4BVfYTMQM7G95}9t zm;_&+?`L6C-OMDi&vkwa3k9V56|>gVY!?O*5%mfSv%Nz7U73a~&orBlRoMXh*UG^D z&np_A14#^M>qV#YVEAqs1iWZk!NbA^&`B+rB`$Q9m%7tc)Sm=GXFx>O#5(aw0k5k# zFs5g=LTwRnd8m$6Qyn3@Hr3#B_iGqBTPS1b(&mPL7D2JdP$SW6(*l^0!wq~5_X*-~ zjHRa$&J>Y0r-0N0pOBeDPSJHVR7oLlo5?zl#!NuMCZYF*aRLQ3i_(mCZzrMROuz(Y zumz%EnTRjSqKJjmP>3?!HTG)#$5F7ONFJA#^}Pi{#3qa;ovx&b$UgEHlt7&2>k>Vv z6our3vt3z#w(+7zk5l}9vQYAL^b|6;w*X4IUbI5kP1;>Wyj)JxmS#Rk`nY06YzS9A z#Atw~aNM|T2v?IK!?-P05`TYKjMa#uLjoxus8WA8uD(&0g3-dXwn~x@cFw+uz1n2)UQi5mEJw*0B$kBETbOfkE{yyX zf;n=p=DmXG4q45geVe41BIs60>!ujmGAqp#afNtn7$U%1&@@;O7d$n5NL`_jdM^HW zmaC7c2DbG}A*U4aR!Wpnl77vjaN+THFn1Twyd?I>#BoE{ zV`=j?pAvPIG6%G7LrB8iLVsSC-Ta%RC#5T&ri+Zc1)yGawa2 z8$IrtwRo_}r7?WT$8vjI1IMaY(t;+ZVZEsBb<;Y+2y@e6H=5`3Bv81jB$O$!m_W4K zTB{+qE=#_A1`8H1v6wqq_YQUk39j&V{5-@Vt;-E_Llic{?x+_p5hY$X)c?tu#dCdU z+njj4>-?nC{K5r9+38n)LsHJJhxk@}F?b51rr9MIr#}~I6)ZoSpWy(}) z1BZc(+<^{EojlxwXoeNzK8l(;KcRpCDL8#Lc4f}0U-7cXaavy&JPoZUw5;JK?Pvpe z5G+JSzHpL+S<~?o%k~}nb0lhVy|faB>B~c5AByW{cyksNn!{Q`^9G+{66>~?oD9aL zS*bh2AD~Z5FtFbThyL)-4n|ifodWlEBH~d3NH6Z4rO?&1Dk#jXewfsTrQZWo;R;{y zfW+ztSFFigTJ4--wp(HAaHrMTLWU;S6%&!59I(Yitv~P>pDPf4*!RSFV;Gt6__zV9vV1t#T@b#TADpsuh&E-LLJfkUDlUy>m&oQ#abP8SUkKtm_C(uLk`%~FPRH9}Qf)gA1 z8Jk=v@x)0XLqZ36qR+n?PqFu8hDvyu^Kk328(GnrnmD=84nV=aRVM(jNM9{1M>*Lc z8z#Uk==WgqV?}5kdx{{5*YEl}DEa~=JRt1Qpw+;qXlkzyl<-Ph>Fw!B%wT$hh)N2Brx1 zdr7V!(Q%GLmdVf$5$(_+0h)P%6Qz2+=#`kLKPktENX?t^U+borMi(zpl@f zb8RMcOA?qge^j`8@9QgCx6UK|6fNgW*h<)Ex^+|xgs=C$Is_9RduC}tig7U5wSE>K zuII!Pd!LK0I@)gns@^=8HaLGR)*hU7%D_AN)#t|mdy@ATp~93qi&p042j%%O@yj64 zPg?TqdlNEgJ<7I&@>SGHA=XM))?F%r~D=>5>w4-#~W zeQxj2f16X;%03Pz#|ESiCJs{a{sB48ddxUDQ>`~w@}RW=8iO0lLi*`!#1d6v)|21f zt0#wd$=S-u-JOs5?cfV~%D+pBcSjpTWgiup2leN0N%h-{;4|tbLJpbaI4-3TGTL!m zfV6u1fiDDL#uep_N}@+&B@*mgV^(WJl+pOVq_m)**`9D5nT&x=D~WcB>&a`|IpqkI z9c?U36v>7I7Bi;U57m!Q%2x?kvOf}@j|j@YGaiYv>*j_b7bAl{9Fa&*B4>r{bx;_+ zZ9c=7ZvmYkEBx8}%8cR{Q?YF17E4Fm!ywUo(M*UV2`Xtoh7+uJT9r^sr zu8xUt1Z+IoH+IA1fyf-^5pOsTZtUGpV0@p&R>5h2l_9X?PGRUrfw-A3aA%LB^>l># zM7}My34-2KWR2s^B}PvfBn|hsf&7-uUZnxJZ8j1Zw}`S!j8NO@+O?xi$W9rX3_Ii2 zMKH)QswnZ6N^9(3i6reEzHXlhQc%l6yOJs(GHra!EiRxtQ^C64QbGxgf@k%ojiP9@|Tz|f}-vfNU!8x zQCnHyYmU3TxK7_qpqw22s$JNg{M#Y->`)Ov9qi-R@vG0-2BLe>z3SEB_vj*u^;*0& znv#Qr_#TOQ0&KBf#`9C%TJSpc)jJY0TO3O&2U@9_^4Pw+B*#?qfm&~vO(6325oPaF zJakmc4q9$`xU#KLf_`&4SL-28+**^WYSLlaNT1Qyd4?L}f$iM{2P9z^ZQ{-68;f9o zLQXG!`So7!Xal@c>h2=W-FJltZudCG^?uNa8>chklaB{=JAQg_bD61*hf)&{KnlwR&iH*ZPe}2 z_ciyeiV!Um?)K9mv=~TFbY412CdXyq8@RMKRi+5#+8IRo_XN`(sWs}J4fh5_mEZcN zdZGEtGEQVL?1T|vQ7~Jk1ZY0cH4P~^!&G+Lxu6iBOKKGMrOG9Ie+VbLIdK(6x{$E! z_mb_7mWX`t-A$LBe#E`wdvnuc^g~wJE@1@Kag9oRCaZl#32;OiAZ67@uI}ascqkmz zAa=qGxQT@Y1VHwkWF0|gQ#VBF)1kvwQ)3>CXfA>Wkw5Q}KK>?t@1ai-P-F2eHN5kI zWd2FV<5~La)PmOX9<;lo!i_JPSV#_ba$P?~l#`7T(lCEZZFl{d*gm>J8~<>j!#ivn z#m{l0i1fv$70iWTvNz?a5c>D6wqO;qq4iJq4bro_N6c5v2gQ zn7-QCcBDJFq)VcOY;6@~-x!}>oT#Jq5ld-l>C}Mmt4U@2h~Fsn4jCBE1w()*=btR< z!u`Z1+vLAGDpzWpzFl;YRfM0C#BsXSRTOslC7jKCWuZS~k{W8lo#98_P}#^5b5GS+ zn9>zXcyEx|jrEo2*vRj6p!}!SWrYBsIErXQLSID%J$cPtr`5tg&B0K_P?XA3XCa2? z?4&6$Ioh6Wq}o9vXKpIwVPS=15x?4-ZXAKwxHZIoQnSHYfLj%b!2#O>(Qljiq5+(Y;xV7G|Q>M+yiku1dv8&k? zFB$1zHm&ty%A>_nx7F9s!VPudek&#<-K{4pGMCPO)k)96!k|c0U9`ACFj3DFIv(96 zX>t!Sw;W?zt02__b4^Ih!Z~Si zM9a{*l8>8)H7sn%-X?MbDu5B=WQi;LLbvnN*FQ}--RjpXWvR)W;q-N#Z!b8I##~OD~$^N89(wZ7nsPjHbGR@L4 zBHGiu^@b?@0;4JrCeeDnbF5`8H-)xoIUjD!n?lqds+>hcrZn0uK_MLnPUDn7utlOy zKyV{Xe}ow!L)&WeC0BJ8E0%`xm^3a?6i=Gq7R(>bdE4E1@|H>KfQ7BWm^D&4Mn^VJ zH9y2EA?^k>GS8H;`%ITcTICuHr4l4eJ1IrHVhk0}A!raF&Vha6)JyZysG!nqELDiG zL1&UCblcz)-Hn`nAmpsK6&Zl0|lL9DT)PW^La|zm~k3nF(^7kiO;xn1bI{;?A zo5Sw&<2_Ii3?WYx8;{3!in8S{Akm=9dBxlrc3p-1VjUF$u-I!{nn9##GQa1K^k8L8Ox+%UsR4^Bp*RZ6B#0Qq0awcNdWU$Zt}myq8v0=iHe-)hksJrkXf^4~@|^qD!GyEub1Bh-FZr7_+55 zos~|q^y9|AgGAxS4J1S*U1r7Xk1C#rw)`}I0n#TA;Xd1YG0AMSwDt+587E}9f^``c z75GM|B661U*?$8sU;}Nrg6l4Pp|WX?quSgJromt<97#YBwjVUePa)m-Xc0(B&MD|35qMW6`2`Qms`s7xM8ydi# zm9Z`}c4St3cWpe;DI`RED_pMb$4`3bi_6xSg)C`0ua9X&_gBRS1R(aZ|Ggl#K1LkP zpWsb@{@?MB^qP`3FrP~0aKM}ucMxS>jHIUNkH5{YooPwdL4WFX2m*}>M03#GL6-TZ zFNK}Ic{d@t$_;|%CyeM%knpt+4bVipk!~fqbvMPDjRlSABQ`^nX*UWJ1{h$yDD`5z zycyt+Yd|FT%IxTdMZ&llE<-3qs`BBL9hOW<_0U0Jg)_lOpeZ-2`-zhvI^vilJA7ll z--v+ZuR4+Zn;vhkyaAGgc_(6Pe*uYk_tWPV&I$n&FP{zH{HS#mzs=n49}m!DUsG(Y z2CZgRr~iC`2Z(5aN{Kfozg z<7_-<73bF4a0#j@D+R{+Fg4j*i>x4F}S2CX`p()%1cKiIjKCcE3~dR z;1xhPav z$O4o2ahNIO{eK*0;vLi>;}40E04bdGsB`&Kj){qUxx-m~iwikW-bDx$YE%B>swxVW zp17ljoV;-g&|{PPxyofd&7|L1V`Mxin~LfcqAX#({;IfRR=3S?T|k>(9ZaD3FS;Sf zvSB(OQn?5F*QKlB2bDVVFA&O~7Rq}wQEu0c>qp%4`zL}H^5fWb24xub09qh}i<6pX z2|IBBLtKfCk+q^%y;sLC454vjHbS??)*w#0UX+KnI_4&wup&La{_us&lXpm>Wgh(} z=s=l!VKTI_jJ_26BwizCd_*E4r+4BphoFu{s-9?h|BIDDSL`>NmS$*e#mn3e$4UX# zTOzcMHcYQ@o$ixaczEzI(1Ir%=S|kR@8Mc?50LqWR`Jo4^7ZTd4 zUTNI=7&fg6S6fM?;_tyCh1Gxzq!a;^FfRRXc3nw!P#na`uA{LDC9`Rrm)^ToCTFg= zx)b-WhG$ZUv@NmD@%q7Rj*$x$b2TvF3=+usW_1CEJk$F49Pc(ii$^vsq;LK_>}A?? z*yOkI>qzpyWVb9!0p^Br-C7P5$MN{N3``a=x-mEX$L)3OHg-NTNcl0Aa%MbKVofsX zSyuYY1%mjm8d{CrZtRZwjSdj>{L&R3?i^E6`>JJbNe^1i3GY?~@7z0Lo)Rl9nCKGm zskP%j7hw1!r*lv#;=f)Vs^!X4I+uKjhkUxGv&bA>u3(e80g`M4SH(pc{&M-b zuh?09?5LcpWTUBH-m+z{*wD_&Gw_0r#dmm|cT$HsE&W5y4Oc_45$gBKY&Be<>^0AWFZK~MNX zD?J&zgk;JW2+MIXr+{>V9u&djYLaJq5h0OF6Z#T-KipVh)P&3wVN??d4vrvU(6Wcq z_;eJ99<4d*LRQbdy&kc~Bx|ibI>6ESBi0z@y`&s^Hke>T<`?P&sbdJ?weQS+i3 zghzbKLEYb79VGTK;Rvkf5eDcA16>sn=0pz!2ZuuDI=p$Mg0iHBLeYvn+!^KZoQy$dlR{_q_6Jd8R^UYG6iO`J>k>O~xwj(R3xv*B}f`X%89F6<2HcfIKr(2WCh z#S-)8^093p@`;dha$ey-#gdnj*U`Cs6EEf3yBEW+HHZT>6(b%hD@MKZBNul5;%7LJ z6;2MEabFEpCL5T~96+R+O}S2Al<-#c>s36T^h6onigep--Cs5w+C;6R&ot%X6bS=b zl#Vr|i6lPL?R+RqmgWkwYe;t%xOmr$DdaSc;>9+;in)Cz7=;x}O3N*Lb| zH<}Y6VVS=YcmGV&cP;irzEamKSp{fud|l|JE62qqP$9)u`E_>eoA|!0G{b!!n6WDY z2#|}_7!^FdbJM$rK?LQ9noto=2Yh^Xr0WCkFhOVj;myzy=KATQem!*aQT+(?^hPHlJ8Gb#QTOdJrn_0c!xY+k%x0Jst0$ zC9#zQQIcAgdwQ&RKHQ17Q=KfLvhu`;f&_R+tw3u&g!rnH+lCB};`%JYm=L-;u57g%=q zD)@~W^j_jB+j)A0{yxc^B!)u-cq4hy84~MK_7T%k_g8g<$JnC*D2Abz8ajh-yJ&IV z*|>=cX)_yk_16mPQdU&Nu0RyMGUL@p`9i6l9hjtdEdcet=c&>U8cpyJJH|* zQ&Bv%*PI~gxL6g!9S{6PBZ!PJ<(`u zLNe8~y5Yes^;CP2aZX_Vc!IxeiFzpX&gE*$qFs8Ovh%3CRRce_w+3~4kVf}}VB^pU zp}D~pnOB3uyUr@E?YkqW{pMajBv+%QcZBauhO23l^@jIQb$y-neakMpShTAYxH50X z=s+4wjA3wSKEWciii_#RQy&_?^e_za&_41Y{izzRT4TeVBRseN=s-T19vVQo+WoikFo4sP3!~Cta{ni6L>1)&W*_oqW8lU4v7?b+i4ydTzGqT{)OynMk1*YtV zfT&LQ2$;G8KZk*Rdpww}ZKX9nfcbG8f69!7{zd4^LhEaoV}N+X$VKX9U)Qt(aR+f2 zPsPLCjn(%ei;gjQezu)|mIK;&1ASHq3-_7dn}gQdv=+HCm3|K5du*mJEA4ZyDKgYq z;RwyMv+`ZRh!AmgIu(uX@`^@$ZIx{Gfd7Uu8q@jNsnp66lqO62rW`s3PJu-q-@c}; zBFB}Fe<7xpsdVurglUb)%rH4vnz}`7Np4?A9ep_B5AiIt>3ZdGS<>@k%RmRzHOnuy zGxgTtvW(}LjXh0Ab{x4)fTebiSYbxm1J+2SI0d#`SrChg)Lf~(A)PhH z%TE1rw&fSMKr1zF7R-hIrs50Zvyk8YT|RPRoR^HHZ8)WsOX;5yGO(^1=le7cC9Bi$ z41xng#ta>soh3}UNsThz48QlUWMRbp*%a9S(wtw@vb|t3iJU@A13*mPJWT&&)EFyH zrPW8Gq`%eVhfCTZUf)5M73H+!mk_LL=aIyX?=Y#tuTd{h*@^qZ{}eb6UTPj(d=Nmp zFIp8=w?Il*K4Q@OxFPLp3$=&&*I7NRK+ zJH9+LN_G;JoKdyQ1HDcTDR}V=YjwI4qu=pDu&UKzodxr4m^&)5e@nNz9n!@&!X_uC zB&u>^mKe|Pw=Rk~qooy27mJ>NU>CYSa!L8|>s20a1XD^0l5ci&dp>$q85sDKrTF+N zxR7N;@16OW^D_Cp$|9)+dv=tZD`szP+P8<}@7DxBdJw58F%!H##=EaQtbTnJ*sgxQ zAG&b(dlVOTvq}B@vB`?!{?{h^*RL4A$bbc`*xPxuQdzlE+40G>X0C8Un(Cl`QXO`m zHRy`##-SLvJ98bDH6|y#5aiQH33M*B~ zGp?325{KhxGEg)FG+$WP(4SQ8P>ivV6;)ll`!pXXok~puoi!sR!{CJK$T&hGh-ZNY zl|+ml)vN@IsKeIS_|Lk_Zb2S5aX6+8y|6!|YA2L>PDn7!Vw|29ppq9zS6#f6+7o&O z4Nd|SLX35%>MuWK4~#j9N{Ol4Cd9Po6jnK($aM5VBd$bkLy!N zc(ca$bSc|>XAeHIh`VYnH&iDT(&z;^TP4oCX%APxA4j2)<|d5~IH;M;X%EnT)aqbV z9NbC#xfq0p_(Jy9V`<>Fsk0D#R>j+62UYf2fcGJ6=LQQqG@7l|4yr5mHO`b<7q+vZ z75$xzX~oEY=QdcSU5tJ)*!0gOkr|B<&3Qq~T5W_y3ot?~wJ0t*182`p#q$U72_hQw z$hcZ(3d+WfmXeM&39FT5m~TW2cul7c1zUR(ll1%99We$W(B$$WmQ@)AC*rUTzap*o zP(Efcu>VJLI35ShNl%HY1%cENcA#Lcx|(rV!lT%{F2ghj_CBt!pcAVNlaq)T)iAxW*sZ=}(f!r|)zZMN}u%8>H-Wn&bxl1_?3o%OU`i99pws&Z$EV}XEwkdc2n!nAs(3z=h3dA zC=YN$<+P2_t~Ib#BqMAJFOa1-mWn0lTnNF)rp5(v61=lf@!R0;KdBG~!I^u4Qgwp3 zxZ%ys(GsW@DK5d%@O|e4JTw-L!DM|v4^B7=i&Qv@87!EViHG={d&U zj&SWbkRLC}8=-l*X$)1R2ns6@&ks~C)>@&5nX#T2lOR4)}Z zNWxw3Qn*9bODkD}??!@5(}d+!oAn4dC}O1uRMR%kzM9MkuI%N4-%?mq+`{;%zS=P( zpBe|)n}7qibA(5m%3Zm)JcgwgX5iw!Os#Ab*9PphhMLsyuJrgprRuE%2>PVL7w8)}*y9{b5AcMCKBk7nybBbWT?-CQ~T7sE%*5=uut!f$aq z-!>9!F>UNnFa-BZ${c-d(M!qiLmLPYL@$|@SyC94dQi@9_}xR~fm&<787~4E?F=*krV5H)VOAQz!(wEi)@M{r8VrB8w2W2mrdz9J-Q+*g8TvD@@Pevmx zkYALunj%9_LM72rSHNp@HwE%_LR>jXGq(-*I(;RpkdBYd!=eDR*{aV^tuYrQFq=Yq z)kwH!=!>O`c4}9wLvyfsHi09Y8jzJqU(sz`e$!ykon@sArlgTm_@($qPzgrt`sF86A--2*4P2f-ly+h3zgNP zLvw;c?ew$m(+7&UAXMNJN)SPvBout+=`T@9gj7R6_e(0Q*W9yW7u-+4ha(n8VqOu3 zw&u2;-D3@yREN0D)Tlj8=9CSJye_&zjFj!y4f5C_DBB<61+L;0q-CD6=wrL&^gKvA zr7qw!om)s;IzIVg@TOVBY71LOEDa*4adP^Jm!{#3YXWNM#xI}L>Utl}i*_q@%C-*k zz=;8vayjJUuP=3Xp`G>1hbe<0T>}4) zh76*QOIIA=_qvH-B2_s9lhWLx^BP5>3XyC78?&_E-3T9ml-&z)4!GkMYZ(RGMdX#1 z^pL2@AwqqK;!m1-oI|gryuk(x^A1>?=IeuBKYANc^?`vXO~a2^uq@JMT1$#@w{&2C zT3q!NZR|Zm(3}j|2h%j~c3x?8wOIb$^c7-FP2;sx(PXef8uWq_5vnAytj9J{nUUSF z#a5?P`gRSUd>O!RvyNOc8Z1>t**!0AE8gvTDm7v*%)3 zrA>{{T*4#t=^P353`tOtmjg$U*HEKKNN?)iq?PVwZ2=%%UMMl!jzfz4L_d7 zgfEfSb;MLAyq>eT?_SseQL&=S%@0{=yNPsRGWwHx+ zNOS7u25>*s1;0bxyF?89C^~3g6|MK!_jXWmN7&%(K%3qW{NjNqnb(E{>9&-sy1fu3 zMcqyxeq?Z8ZW zKZiPxez>M4Iet;yvfFg8$q#?~!Bs+14N0?rKA_GaMBGFjsyarvJ>l?{Fu=^Q%fm~K zOI_|JYAA*i{h7y5?J!5k8V=D)6tTs?pw0Nk4}a;=trkIzNQA=0TlzT zA;4WW&((X(^enWp?iq5#{yP{MHv<;faGhh3xje1~&w()7=zfgT%9u*7Jx5# z^cX~)wc-u|g@KTKc}4oHiP*urCxaO4-gDKg-MNi%!yzqGx=Y;L`^PnPXqcC}bv?O{ zt=5M2|K4h8fdOs1zn+sfzpiiFpARn%tRueGWb$2bgh{c*b7fL>Os;be46~wt!r03n zsS=hlM9{{yuqUWwm+L(-^0+OJA==IKdr9mcBp(S6EgUKo#7Tpa!sdvWeKxs%w)^8} ziwD_f6>5?eXL6m2aWJ&vFh`vxj6pA&(nFX(P}5=zF!0xw8`qG*GC^^W(-LdV3iL!6 z9NeqN?n8uJ6;d=#J09u4Mk&|bI3{!rLhCW*LGtE>yNN2R^NmPF;3{-!ifPqc-qHIc zcCid8_>`vm;L&C!k~aviLB7RV#?F0XS}_!fr{m-q3*)q!VApD=s)0B}K0Ook$haKY z5OeAWvdp3mZ0RzAiAXaH_Bf!Bv}z1(2y)v5x09MX$aiXwr>(%C#faT@qEOxK+7?ed zLsZF~oO;aUI^NgycomEc6_D5~v3#+^pnt;n1F^))#PybcDG=RTMnkzidgW&JBK}j} z%BLswmrNP&ALQ)>I|NVHt{qzaSjsXzHXje*vvI8<^L57hOtU*m9Hst{ zY<_p&jE@PhhfADZ@{9d|$%;xeBaR2_nj`Xix4!dxrwtx+0u?trflHDthpjFU+f=6B zbBO6zXd?wrOn9Yq$+52VL?YY!TTxYNQuI%{(dC}1RtnU?qJ*-!%MM4?m`>zQQ8^4i zTn0}?!2Q0NKouhsywqy^t?myw+{%wbGi0jDb0pur1%b;_U6dYP;)4K#uZ&zvn9ue3 zk3R(BQu56BKoH?9ZgJjtLrWjbXN9ZHEJduKsNiOULvr@PzX8t~-Pil_#yVQDzZMiaBKBSUAONwSn>61cEm z+}P_+Joxez60t<@Q|zU4&aJaM1^lkYNRs1~=<%WGp?^H~F77hg;MrUf)=7JtfZLYm z4kl>gy?xqLZq$;Gwb;QR6L_5$?~u2Hpw%ekI!V!{zjUe!ix$}-r*sO%IYn;@5fp|c z%Z^+9BGm~gl}O!@={u!EzK(yMlh*!vvZvHFLY~sz8laBT7A7*Q<^iYIDFuO%mn0ddv$PRZ&fCRHqfqT!aDhH#k{EBLTs} z3G=SBvEW?zfa|XQhY9L=l@$ioyuw^@y7XsO7ec6NE#pDC@k(~zS>|-~hZfOSLnR|B zxrnmblAf=0=^qSS+tQ=S=~24hZe`^Z!dGyV)50(EnX*pBkQY3Ow;H0`d9%LWV!29J zOtF&h1o}H1yVV)S$rB*FU>MWtvXH{4Qc4MubX{05p<2Y{7Z^i{RqF|S5>{cZbcHT`G(coatWf zS#Bn)3^!#fDD$=_jgGl}AXpq#b5Nz0bN=o^rI`*JNM4flyY4^Qn|Ly^$FF0w{b7IE zg^0U7`RyNeYxrfAD(m399@i5)HxjdLA;a>K+R^btZfutbc&NgLNT!1?r`F9|}z*Xt|a+(o&*GU8FRVLp6ZvXm_5G<^Y zTE;IH$ubmKI1U-MtCAL)wI+I_R=D2CB$;hql(fST-ak~a-3X;K_RSnMcB{dKNxBhi zBoXB8voi2XOg&y-ifQgNV73*a&w#F*^v(Dd~PW`>$6LU>3tB*ig4iQ zIW~~o8h+&)^yH;+;)?4MlB=k|->#88=<>wKz`6SU!RGrm)|`hU%%@BzD_wudT>5mP zJ>!GS!x;Z>GN*_qk%0!b{?fT$*9V<<_&=D%JFQz~G`FNS9_y}tL_tQxqc}nPVOOM{ zmbT!k11YyhKFg;{fz2LnIA|Dqn7Q9wwlHJ}ZX=p46oj{TyGb^f^HvZsZTu8YA}*|) zgVEh@HpFakHIUr(%Xnw?Hh!sDK_eqTQRGa%P!E0Ty-&YQ0uq`pHRb41R#^0nL7QHB z9IWLXH~oqkURYq1yZY;$`C+kN7}=K1KQHa2Rd`UAe4!4C2ZPVvvbEYE$QL|xh)Z^P zfhZ(;K%mk0V3+WuS=>u>ozUvz>eZ>MEh^MWeOw94+<#*1mmVkfxP?a14RoUa2%pb7 zyB^l5KX_c&0+ysO@1xF|$%ssNU@n|~B==ul%GW$E1ARjR`s#&$KE8$=)@6Ky->>D* zuw~j%INITor_2|7ksDEAZ+1^(^wtLJ(F;fqY<0E`-BXWh#>A|n$4}8SWod89#+1Mg?l zw#dqY-(BuQq#hwSN=nNeb2`6DDyVDncy_~~3*C2=b>o_UwiIwtCx7kGM8o2#%R%e) z)mJmi3}~}6?C`emC-} zUG(<{Buh@UR}EG#;ox!Ph9#T+u3|e;6Q@cH147=Q>38+bY?X1nwQk<%;`Pmp8=d)l zfkdk+HqMd^uXwKc$BoW&Fd?k3Lc3=p+vi!Q7#=z=#ixJHXfXKBQbS4>DsiE?WXyi< zAvvJ_*@hCozvjq%^d3R>3z&`7Fiq6RzfL3YY=|i%&9^2ENcFT$^ekupNjHudGcGGw z14s+be3b+H?v=|cheLzQT53hG23gVyLsT|y)P zB^p8rV>$97;6i7>L4zt{r{+6oV8ZuKE?`8-$IT=zul#n_Un&mOA!{NrhuhZ!I5~FC zh4MhBQh6;gDGWGK0Ea4h<1iFm_z5M;u`@N@DEv87r~FA}=;)1Oc;>~b+w!B71HfZ3 zd8^m)BUP%56! zk(%6PRv2&I8VN1fG(m`XJ+dr_UbT?zCHR;p`xM4csb29>;nTi}wk?PiTb#%;wkoh# zC|KomnEI98+s=9eMaReFDr2wc-;_NPw3z%Qq_Wmvi$J$te~ZMf$~~30kV!bYn6>-|SD3MpOU_-mU}p$QLi? zPm*9%=+~>aia=X7Ppd#?OT1KdB3(j^w{R0ozxeXlr zfjO)%fq$8GW9G!}WVRG>uCo3?b)&AfEm++VZFBNF)&MQQW%`%!Qp?saI)j?SyYJ76 zMiW+)7blG#V=HJ3>67~2;Y9k+Kjve-$)Y+yBIdTr(V8`5q)~)`BZ6ggrX%g2f7+Nz zs#1g%6?N-3Bm%gPpJShFdQR@>oH8-dtCNvD)*4HsHYxv*K#p7vxp76nUMB!&mVPPwl{jbgz%=D>S2cC# zGkDc*!x)Ij*&IA3Z_Mq}PDB^DW^%goBK(&co#j4Loj{?3fV};;PqB_!dHi3O1>RJ+ zU_KJ_wEm`Y#|x-({gb`!rYZ#cSNTsCaeTWf7x7<-rSE^!`w%}8y#M!!k4IG__@^d| z8a^mnysR40Ka$;tv=$$xM*C0wf4{Ad@xPTn{*lGcsF9QW(~W<-1c&nI8_K&fDkN5qju_dbb zOLeM$X6UawH=bAn3(Sz=qX9eyMHx^q43PiHtJeB=2kw6w8Dsm~BUaYG`3V1A>)(A5 z|5=Nk@1JojYy4}#|9;N-Phh9WKR_bQe*yos>i=5w{{&`B{R1SCfsD7(MEGaqtq;$# d5g#*y1P220@uK|OGp!h(s7VQxsr*;>e*p4MHH82G diff --git a/scripts/kafka_consumer_iterate_1LL09_v2.py b/scripts/kafka_consumer_iterate_1LL09_v2.py index 99b487f..eb974c1 100644 --- a/scripts/kafka_consumer_iterate_1LL09_v2.py +++ b/scripts/kafka_consumer_iterate_1LL09_v2.py @@ -144,39 +144,10 @@ def print_message(consumer, doctype, doc): ################################################### if name == 'start': print( - f"{datetime.datetime.now().isoformat()} documents {name}\n" + f"\n\n{datetime.datetime.now().isoformat()} documents {name}\n" f"document keys: {list(message.keys())}") - - if 'uid' in message.keys(): - print(f"uid: {message['uid']}") - if 'plan_name' in message.keys(): - print(f"plan name: {message['plan_name']}") - if 'detectors' in message.keys(): - print(f"detectors: {message['detectors']}") - if 'pumps' in message.keys(): - print(f"pumps: {message['pumps']}") - if 'detectors' in message.keys(): - print(f"detectors: {message['detectors']}") - if 'uvvis' in message.keys() and message['plan_name']!='count': - print(f"uvvis mode:\n" - f" integration time: {message['uvvis'][0]} ms\n" - f" num spectra averaged: {message['uvvis'][1]}\n" - f" buffer capacity: {message['uvvis'][2]}" - ) - elif 'uvvis' in message.keys() and message['plan_name']=='count': - print(f"uvvis mode:\n" - f" spectrum type: {message['uvvis'][0]}\n" - f" integration time: {message['uvvis'][2]} ms\n" - f" num spectra averaged: {message['uvvis'][3]}\n" - f" buffer capacity: {message['uvvis'][4]}" - ) - if 'mixer' in message.keys(): - print(f"mixer: {message['mixer']}") - if 'sample_type' in message.keys(): - print(f"sample type: {message['sample_type']}") - - ## Reset kafka_process.uid to an empty list - kafka_process.uid = [] + + kafka_process.macro_00_print_start(message) ######### While document name == 'stop' ########### @@ -195,7 +166,6 @@ def print_message(consumer, doctype, doc): print(f"{datetime.datetime.now().isoformat()} documents {name}\n" f"contents: {pprint.pformat(message)}" ) - # num_events = len(message['num_events']) ## wait 2 seconds for databroker to save data time.sleep(2)