From f8c07e18fc175fdb7e7e295aa82b460d461f6bbf Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 16 Dec 2024 13:59:42 +0300 Subject: [PATCH] =?UTF-8?q?dev:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D1=8C=20=D0=BE=D1=82=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=B3=D1=80=D0=B0=D1=84=D0=B8=D0=BA=D0=B0=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D0=BE=D1=81=D0=B8=20=D0=B0=D0=B1=D1=81=D1=86=D0=B8?= =?UTF-8?q?=D1=81=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- params/system_params.json | 3 ++ .../ConstantCalculator.cpython-310.pyc | Bin 1351 -> 1351 bytes .../__pycache__/OptAlgorithm.cpython-310.pyc | Bin 15489 -> 15521 bytes .../OptTimeCalculator.cpython-310.pyc | Bin 8988 -> 8927 bytes .../passportFormer.cpython-310.pyc | Bin 4082 -> 4155 bytes src/controller/passportFormer.py | 7 ++-- src/gui/__pycache__/plotter.cpython-310.pyc | Bin 10602 -> 11323 bytes src/gui/plotter.py | 33 +++++++++++++++--- .../base/__pycache__/base.cpython-310.pyc | Bin 16332 -> 16355 bytes src/utils/base/base.py | 10 +++--- 10 files changed, 42 insertions(+), 11 deletions(-) diff --git a/params/system_params.json b/params/system_params.json index d7949a9..c455ac2 100644 --- a/params/system_params.json +++ b/params/system_params.json @@ -55,5 +55,8 @@ ], "UML_time_scaler": [ 1000.0 + ], + "Range ME, mm": [ + 250 ] } \ No newline at end of file diff --git a/src/OptAlgorithm/__pycache__/ConstantCalculator.cpython-310.pyc b/src/OptAlgorithm/__pycache__/ConstantCalculator.cpython-310.pyc index 4d1f74f98dc368672b1378f64654e26487371425..1dac74885b2a755fefbc77235b7792d2f3721f78 100644 GIT binary patch delta 60 zcmX@kb)1VgpO=@50SGGZ$EUk)0W&{3PJSF)>g{7(Sxrr6=hPNjFWAsEC{R`kTgEVHav_vFk4;L_ zs43gp(RPoHBUNhGQRp6B_F!#Y(Y?o}O6@c;iLIM94{hpSQ&n~C##T+5wC(r(-Na79 zO+fd<@1FB}pWi+B^yGy}|7b~x&q04C|B^Zu-TAVAe~~z+`iu5|V)eA+0Z*l4+K~#7 zw1yrpzm<|id#N&OHB~Wi5)|uX|quo?sK9+{mdN>Hjy7$2b2@yx{N@M zsSn)EWvwKpaVh~(D$2ET;TNjS^BWN-UsYmbHsaOAt|auEfenBl#9gulav9J8aDWPu zW<7HOunPaO4OkDfs}Wzl*rLw*4snPwkKV)i-j(&Ox+*B)YsDeatUfG`hB$5b&lR6Y z4fe@_5i?EaB3smkl0ho=xsndCTU{-gslE-acK~Y%ap!{gyVQ_BB95ph{F_Br_D#P_ z%*Q>Dyj_kyXsUNs_mu31nUF!aK;>m>Z@?{vvIhevw3!B4<%x1QqTAj<@m4Q3L)rpt z1-1d(3Gq^yPunl95W7iC&aq| zFCkvMpuRm=y&Kp~$Q7AmX^F&o^`7*YX%6JH%&?WtUhIo;Y0$qG)eiVz{sw-R*SZptkvF1ZzpZ*4Pj%S|?JGBI|oz-L&me8tMA!CrE zfC1p-a-Lg<`iAcx=-YBtU9Og``|`WvB+ZJPHjyZ3OG%5rrRTav@TkAHhSg-GzJ+56 zYeLvgvr2l9w3b-ErQVE016|laU##76wJuubhx6aj!_J**TeM1TstMLlLG2*`u9xJ` z8U0?#nw#5BV%H}B4NEfk1N2U*x1$j?6$!Uj(rqsn$Dp?H<@RZ48UPPD^82Ghy>wHh zGFrX1HTa;DgT=#Ydu_RTzP2)kGO77ttS(osteU~Q^#PrT&#ChpuSsVD8EYeREslt-AUSK(1pd# zlN0b_0QvIY!`s6Ythp(ewR`ne$ahw(!)9`#RzR-fYc|nrCMULX9W%H_8rUuTT?D=dyac=qyh2!XjbyR9@@#w^ zDh80B4Z1m!^EXEb0biu;sqDYo&WdmXnzsNq0ULo^0qcj+YwfE=LcP(xU0lj~6G;)i z7kdYQdw~0Z+W<>H(Bbpp$MI%_`M#P?-r~7LyR+h?p#q7FN^E!~d<5zya2OZ>27!4O ze*MmQ^D4Eqqox5a5P<>cz<0rba%Uh{vyBb_hbjVL*oCC)(DjV delta 3786 zcmaKudu-d)6~}#lv44KFah*7c6X#_&P8&B(VmpS=rYQ~C!lMuh4Otb6+z`7D+QjL# zo33TTl}{T_Iq9up+Hk7!wBfY2T_c?;dR$RKtd1JC8vNS8E_jW-^G>h7MwJ`8X3C;_ z63Iw>A~qgLBu8X25*$8H6j~@6*_n*V#adZWXm~~5S8O~=I!gqhj5e6aI40tWJ;^i@G_?CMj~tQb~N zy+y24$Mpw=PkF7C=3w8xcp}!UHklt4&FW*b+qIf}$dy0^!LQ4DtbNL1X?3>JGJ&o; zM7gNYDui8A1D5wh3;C)Q;dGBx7n_67Uju{yLGYU-Or;a(1UNtytx}e`0FbT)+JJVT zL!GcSi5_*vww*&bEqXuadu4jfvOfz-_`BsbVvVXQ_0@3N@Sj<}H?n&~M#p1`L?kF% z)z;G8RP3vzVR5zkwsfYh7p^Y@DhYn$g7{adWA=IxQBT@?#JcpCc9WQoI~2NH#t%l7 z)zM$N6=p)Z-~yF9Ror0~d(#IUd$pNnlJW!@48BcYq4;bsHel5QYy>U^HWB>gGM9Qb zEACVu_AS5@f7sMN7K0ya)V*UAg{pkO2A6+FJDmKHIQxw zt|nwkViO68#D?|$#6&C>&1lK7Y&rwj7yG4${>{RR759!737nKeR0$u=SwPstCBn{+ zI_o^AuYxLf#-R@duce!F0ygCYb=I{~HB|n4^hW6Llx)Wejq;mO!Q9#8=Y`wD^TOw4 z&DWFB4vn2RGw^UR(1oM1=-W7flj-}bd_wQUM)u6!b(zKE=?`4Z;-Vdp@==Xo#aZ1< zD;isl>x7gOVtYRLi{`wCP+nSXu9@mupEZd~{fI@dT}K>*5Vn z<=&{rAY8A8-3^Y#_Hrj{KJ2#XZ$W2w`YE?j3nJT;CTk%=t5QPxuxv?rl*nk4!MwKIPr~=;Ij0dUs;u3uPS!WA#%{oWOpZ2ug__R^Y`gt=SH=|SF5%)xS9?_Z3=+vCHZqke^n1OT-=_- zZh`zemt^oE^bRV~T(2IgcZaL#>n<0^ptkYH?M`TV0JMrjeT2od8fmOAScBNFwl&tP z*Bh&wQ62T%4TEBdXViC%hbs3$1r5y}mJ_Sh>RwMReV!ikTwlRme;o%&^aS%A4TztdnOOSiwDS6{WrYbM!{NJ zTse#Uk=%N|#otw_ukbOOaLnJR?Tt0mrn2y~p`w7t#Y4)S{|AB`0q&Tq!PNE(ye>(9 z7BUZzOaEKEA^kuLE9W!6`+VhpLUg+536CQEbLt7|>jI|-nUjBO}*O?)yo78_4~p5D0XlkDNw^~iDB^_L9D zA*e3A^qmkCn+8qLrc{SpI>eAlwY0YtxIKj?!3aBCp1OcMgaEiXH0JqW1%|-{qvDrF zM@w~~ZlcM2y}{ac`@CQIBv!>rFvIJN`pn-^F!@>7dH^qg7*<$t^6m022>IIQgA|ws z8%&C)PWOFw4c+$!Yv9M^Fs03%!#(g`Eb-;=c|>_zcW%kg$Zue=WJb8Dxfzl7LB#{) z#zNjgum6YWA;OeP-QMC--?X~R9;R1+e}Vcq53rN1W+u)I%N2$ z8eQ9=^H`-Wc;gCuFdEaQoM#4xNT;)@b_Ebcfd2iv%qtNMcSI^Dh7H~(n4_qc!&9!prTrelkwQvPd#NaYG8%~om y#HHjkGp6K$iG4Bo0t7DtF9WX-GRsO5Nhz!G{-)~h?lxE2OYFMcnm*cHBfbZpkM-*S diff --git a/src/OptAlgorithm/__pycache__/OptTimeCalculator.cpython-310.pyc b/src/OptAlgorithm/__pycache__/OptTimeCalculator.cpython-310.pyc index ce8e571c98ab16dcc5352b153a66df0367b45078..01aa6e0434d6c5b4c6961e5f4561aa7030dfa081 100644 GIT binary patch delta 819 zcmZWmOK1~O6n%HT$t3aDq)D1IlW1D37VMNRML}veLJ{J|LLF*e8XJeCP7}oDjfu%d zcftjKbdfGy2uhZ2T?;PU)J4{Uf-6CA;d@C8nhd-<=bpnoZ|2;CwcgcGB@{9Ue;)Mg z;_|ytPXVR-U71s%g;R!;*ed4>_MUAmrs>XJwcp*b3uS86TG%n1*ic^{*SqHeKlR2p zZp=tY94JbjTqK^tk6M)|P^m4glFi$m#w04=C2qVbQ>6_pU_jNX!n8I-3FT^A_H?Fn zRHh#S5U%QDs*lM`qYxu;ag#=UL%qR?81ekf&wTuCFqNB3jQ34RN%sQ%VgFzAIPrr2 z7zbmd?-F99<6{~#Sb*s)bf^NkcbutA*_Lu-!B}@Q{HMRlyto?hT6>O5;ifhS3g3q_ ztH=J2aw9P69ecrlbShsdSGV$2dqi849Ii#?;0T?_GYEF&>FWx7#v3y)W`_Hy?|9=I z!C>OPRuG?+$0vzww8Y_tn%k~9j$0P=k|-7Yka!72yp?lh zOeiFHsskoW5~MBR%(@UD!}ss<;q6yAYkd?PgSJ$M(-t)KgE4CP5b;E#%rWiB*`o<%xN zg*awm5NWqMb*J8Hn*SnWqT-mSIFL!DS+mJ)Hok$_amYY{q!z(tnA3VV*+0-8Nca$< z({GHCHqCC`9oqwZoPMg**gM3A8>yMZ3ZrGYR9$N{NQ;NBaA-p}^%gIImfpra_>d;> zGo68jOi6S3_2pAxfins?9fO06rWiPYpBeBqI|aWoGq?&<`pv7zVf&oUy(660;&PD4C_GBV(ev!jG zhYK9?95#4k!9_-oxcdUy+3S(hOtN{Vxy0zVq2?%?S16}lm^2QxA?3c`%pK0|`X7$w O_LWucF7-d<68JAMR_nb0 diff --git a/src/controller/__pycache__/passportFormer.cpython-310.pyc b/src/controller/__pycache__/passportFormer.cpython-310.pyc index bfa39d1b77cc2f896efd4834b0a2333747a2eb4e..32ed97ca2c3596d1a579f6ac1c4d99f84d5cf31e 100644 GIT binary patch delta 578 zcmX|8&ubG=5T1FPP4?H@O+vLU9t?^~#DmaNtsdJ)OuO;6qgFM9PK5b|eu6AwDO0Uyi^GxL4(eeiyr_}Y^9rF4Mb$-lkf$Imjb z{U&!+4ufO-T%WVoo=`T*?kEwV1UX~m1kC|7Z-vehfQEP zmt3k0MdlIAZ1Qr>GyL>Se1=B1K6<-Zb{PyPaP2^bL+2y&9w z2cXPl7~uhAfxhA#zqT-HhCo3GtX3~A)k{m_zn2DCGoR{wvoSPszV%>>kSwYVjBQY` z4ef^h;QUziwxZFn-|BYGx8iued80qxi(2DJ97oCHR=OMa+hXpd#k5y+b1NzEy>3T8 zbsyoX{_TERTIcUbWRd(Lt#P`lzj*Jlsc*@Z@U~fMB$s(UcPHciV6xX!Q5xwt^6+#? zE_oMte}-dxk<$`dSixh$!lUS*UiWX}hJNd>$PO>tBJsE+8~Uez3cLD`AK{Mv7A)&D LID%*OVQ}Xk#h{A- delta 501 zcmX|-F>4e-6vyA2z1`cLo!LENP!|hNgh0f?5D7vA2|18}jYP2sA_tSKiQY-}Hj=;_ zEKW!ah{g1>+t^rH2mu>wTRUz12;wL3?H)Ste~)?dd++_3Fa1B4^$V>f@cHUJ%5Q$s zX_WN%7O*_lq;%J!)mNoQu!lxuP<2d@LoKFg{TysSXppOZ4OLKs0^6l-aYlmquIXlw zLDMzUGf}LYaEvChVHuJ)#Q{9teFMj^gGQRp>+t^;QNsXuM??{I@-1N{K^2j#(Z&=r zCSO9a-(-q2u&RtrJVk_Yk87&bB#nA2tRgjIZUYm#At)@4Pr&#WV2meVwYx7bZOn}N z8IaB(7dB}vC9Ne<{WFtNP$iV`%ry6Ep0&S0NCEjf-X<8>gvHc-mfz0JJ=mT+AND5) zqtUQ9>X*BtZFd$Q;w`tNKF;6aZ!L5ak|wNjxa)qa_ty7((Ab3zNb(B E0*;t+)c^nh diff --git a/src/controller/passportFormer.py b/src/controller/passportFormer.py index 77d90ed..f89e7e5 100644 --- a/src/controller/passportFormer.py +++ b/src/controller/passportFormer.py @@ -41,8 +41,9 @@ class PassportFormer(BasePointPassportFormer): return [] system_settings = {key: value[0] for key, value in self._params[1].items()} - + Range = system_settings["Range ME, mm"] tesla_time = sum(self._params[0].get("Tesla summary time", [])) + useful_data = {"tesla_time": tesla_time, "range_ME": Range} points_pocket = [] @@ -59,7 +60,7 @@ class PassportFormer(BasePointPassportFormer): } params_list = [operator_settings, system_settings] cache_key = self._generate_cache_key(params_list) - if cache_key in self._ideal_data_cashe: + if cache_key in self._ideal_data_cashe : ideal_data = self._ideal_data_cashe[cache_key] print(f"Cache hit") else: @@ -71,7 +72,7 @@ class PassportFormer(BasePointPassportFormer): point_events = {key: [value[0][i], value[1][i]] for key, value in events.items()} points_pocket.append([point_timeframe, ideal_data, point_events]) - return dataframe, points_pocket, tesla_time + return dataframe, points_pocket, useful_data def update_settings(self, params: list[dict, dict]): self._params = params \ No newline at end of file diff --git a/src/gui/__pycache__/plotter.cpython-310.pyc b/src/gui/__pycache__/plotter.cpython-310.pyc index 38f4adec0f3e43a871be92774d0234cf53b3736d..b1df31e7796d6bb76de8b1d95f8a789f937f1778 100644 GIT binary patch delta 1937 zcmZt`ZERCj^q$-IUSD57*R@^SZEg3#U{N4p;7}%NgozlCY$lRAm}R%yI=XJV?I6ti zEM~(El>m9sX-rJZKmDVo#y`YAYD^4<@K4h}iisv_Vn{F$6GYE_-KIah$vO9&bIoo|j-?bMf$ezo-Hki8nK+lsJBMkD+w2r$Y@0vE!#0x-(I!@n&z1APJ4<55d z99`Bkjw@w1+mUr;jTpwsI;V8jmsOZ5sd0ntWV@D>bdo)U8XnY8v#D`~^|Re5?O-&k zPHD`I*o)GK*&`_Jv~_K5sn3#lvWE@eNf%2FlitVc#*zF?>G>R+$d>BvQm!_ryhEY4 z_Jh_75Ud&c7XVvp*IictcGu?IKLhNm9rgYR@LX-k{}#Yl?U%q^fYa8^;HOZiz1{p3 zz{|DKFdkj3-HChvaHUp_eoo;di?t4xU8gen92+f`c->jdO%yWuVqGmx=Eh57s%-n( za^kKbI1q|Q5D7 zOa{oDCLCC~a+t@^@faXlUy`N>%?L#u(FzeHN`?vVK!*De^#bq1?S0_q)*CP19;-b~b;e z*U2{_#}_49l1L`i2rAY14vAz&{8fo$4)x$hpp7_RqP*xqq^mka4?ri-vkEM<|6g_+ zMs-D|I3_DuU$Ox%1p7wv)VkK%TDEV%bYjP8jF`Gmrf9{1x8y1*D=?*2v?^HyystYW z)HD#>rU&It;bx8tfV|iA2@g}y*3VQkfY8J=GbsGb86$jf1u8nzQNtA@LJ@jZF_n@c zRNLq32rZk8yDl_Gb~ycqt%SSO^C+%p&Komnds3ctn^5FugDf z$M6xFanxzSUbTvVi1!mSP!>(16^SMhXW^3${;g;g@m5m6fM%O$6Ty=*i8gF#*leFW zh^aPVs>)hJeRiq_T2g*nc+EsX72ZlvB&uN7izQqF-h@`oI6MK2<&+l4heW$bpr04) zo2e>zlSwm$6B-s?X*}1UlafaD2r8$l6rCofS}IY=jnieo*^IK-lFJT9D>30{P&k_L z`QNN-?cbH>i`nt{yge?*wi&6l#b3f_Sl4-`Fp(WSw4XU8Z*J29NEUyzZf*X0D-BVge`}Q9R~+;& zs?d9iV%&>(BEt!TOTFGeTAR%jSf7%Q6rMM`Yww?T*RkWZ^V7z064fM7plMU65JFT`;m|{Rpt4FMhq2Qnc1YI_ zNHC)yIVI_#pmv}KBviZNQZ5x*iAy97ty&4G64$Di-U{lC69V1Te1X8bVo5J1G& z2GR9ZJQ4l~(2IY|-=lC>-WYzbsIzLj`Vm$0Ias53TDUdbt$#p%KRUdnuhOp8BO=+> zcVX4&CVHd;r^$y8E>L0OwuFuLB)1q`1H_JSxy@*Sh!oR=hudem2--R~`f;1cNs9qK za6uCpk-bWIiWvnG&F@0j?KM-^gDo~%(Z$OofN+ub2`U@l8-o6I|n?RP-r+AhyB9|s?>^c8FuZQ;7hGt4Ov zltF>yiOBJ-EE~YPgxuq~IU+pn^AJy;=UA|&MYnj!bHijE3yM6?^I%Oikrx5ah{EMr zY&C_g>ey%o)4KguO^l?`9(Tmhy1|{U$A@~*zpuK&V~p{+hV^`obGX#MZ@>$D=)W{Q z9Y;7UM!42Zb4P_<&iD0UrDOO2az}a;Qx2_Wx><$lbO&$-SvI(B^^4K&AlLRad}_JP z=h7d0EVqt0_AB<-!IEyVFcmH1V~8%Is3cZct=ecsc?DAQ3M{r(mes!w?O?1fA-jL!jBz)a2WfGhoJz$@jsyf=oN!n>tEg{uW=1PNQ<<;^ml;khvyMg+v zM5;=pszy@6Oz1=b>MEf1NdEBBuVF5mJ9EhHTg!eWu~A)T)mC& pd.DataFrame: + keys = dataframe.keys() + for signal in signals: + if valid_str in signal["name"] and signal["name"] in keys: + dataframe[signal["name"]] = dataframe[signal["name"]].apply(lambda x: shift-x) + return dataframe + + def _build_widget(self, data: list[Any]) -> QWidget: """ Собирает графический виджет для одного набора данных. - Параметр `data` предполагается списком: [dataframe, points_pocket, tesla_time]. + Параметр `data` предполагается списком: [dataframe, points_pocket, useful_data]. """ widget = QWidget() layout = QVBoxLayout(widget) - dataframe, points_pocket, tesla_time = data + dataframe, points_pocket, useful_data = data + tesla_time = useful_data["tesla_time"] + range_ME = useful_data["range_ME"] dataframe_headers = dataframe.columns.tolist() for widget_num, (channel, description) in enumerate(self._plt_channels.items()): @@ -210,11 +225,21 @@ class PlotWidget(BasePlotWidget): TWC_time = 0.0 ideal_time = 0.0 worst_perf = 2 - + + if settings["mirror ME"]: + dataframe = self._mirror_shift_data("ME", description["Real_signals"], dataframe, range_ME) + + # Итерация по точкам for cur_point, point_data in enumerate(points_pocket): # point_data структура: [point_timeframe, ideal_data, point_events] - point_timeframe, ideal_data, point_events = point_data + point_timeframe, ideal_dat, point_events = point_data + ideal_data = copy.deepcopy(ideal_dat) + # Модифицируем данные для отображения гарфика + if settings["ideals"] and settings["mirror ME"]: + for stage in point_events.keys(): + ideal_data[stage] = self._mirror_shift_data("ME", description["Ideal_signals"], ideal_data[stage], range_ME) + # Добавляем реальные стадии if settings["stages"]: diff --git a/src/utils/base/__pycache__/base.cpython-310.pyc b/src/utils/base/__pycache__/base.cpython-310.pyc index ca99e606563eacafcc89d61f57adc8501d36f1c0..451bb531ee52611cb6dc5de5e3644d8551e5a051 100644 GIT binary patch delta 468 zcmY+BQAks97{zyP_d4%z=&sF8Z?(;BVir`0+;UnL8YuW8sDX&XjF@58wH~r$P*g$? z#OXoNe2^#ze2~8{20=dPlMhN1g0M&lQD+jBk^}L&dZ_ck$N3%3+nJ3o$DQ3yr^9CH zGNM;sjynfk$m46*1;yT>4l7K$3?(z|inQ9lnW-hAuq`*_P`hHL*=_pkYsCHB9bkZc zZaqVSoRU-yyY(|`l25{)+s`r~?@CJgr=+ZZN&fbKlSy~*Kr(AuXn7{Ez=xje_`;u_ zc6?>Cw;ii|>y2T9q5K|v=Rp1fI(f5T8rwAVd)VQG{usYR#i4#kHi((S&jCAId~sxR z(RUXbKNkks>%RoI#X)ZQo8V=A;12XOuLT-$gjIzj2w2S*2(d4?gk2F0g@L1d6uyNM zOod}86<3Oy6&QSXY!t;Jdia77 zb@CkXJjQ#Ixh0YqA5G2!lFuezl*nX!HQ8FSnDO1@^^!Lj(hIiOzU$&$)djEa+|C_iHSy}4XP zm61_x@?6ytMxDt*YMG1%n`_jIa*d52