From 7fac00c5c13b73e32249bff8a6229a0759dbc1e4 Mon Sep 17 00:00:00 2001 From: berti_r Date: Tue, 15 Jul 2025 17:28:04 +0200 Subject: [PATCH] added some draft plots --- Config/config.json | 2 +- Config/measurement.json | 4 +- .../metrology_functions.cpython-313.pyc | Bin 10524 -> 10578 bytes Scripts/__pycache__/myutility.cpython-313.pyc | Bin 798 -> 2619 bytes Scripts/metrology_functions.py | 13 +- Scripts/myutility.py | 32 +++- .../im_00000.tif | Bin 0 -> 7322 bytes .../im_00001.tif | Bin 0 -> 7322 bytes .../repeatibility_0.dat | 2 + .../im_00000.tif | Bin 0 -> 7322 bytes .../im_00001.tif | Bin 0 -> 7322 bytes .../im_00002.tif | Bin 0 -> 7322 bytes .../im_00003.tif | Bin 0 -> 7322 bytes .../im_00004.tif | Bin 0 -> 7322 bytes .../repeatibility_0.dat | 5 + .../repeatibility_0.pdf | Bin 0 -> 19995 bytes data/Temp/20250715_154024.dat | 99 +++++++++++ data/Temp/20250715_154024.pdf | Bin 0 -> 23396 bytes .../im_00000.tif | Bin 0 -> 7322 bytes .../im_00001.tif | Bin 0 -> 7322 bytes .../repeatibility_0.dat | 2 + .../im_00000.tif | Bin 0 -> 7322 bytes .../im_00001.tif | Bin 0 -> 7322 bytes .../im_00002.tif | Bin 0 -> 7322 bytes .../im_00003.tif | Bin 0 -> 7322 bytes .../im_00004.tif | Bin 0 -> 7322 bytes .../im_00005.tif | Bin 0 -> 7322 bytes .../im_00006.tif | Bin 0 -> 7322 bytes .../im_00007.tif | Bin 0 -> 7322 bytes .../im_00008.tif | Bin 0 -> 7322 bytes .../im_00009.tif | Bin 0 -> 7322 bytes .../repeatibility_0.dat | 10 ++ .../repeatibility_0.pdf | Bin 0 -> 20242 bytes notebooks/sample.ipynb | 164 ++++++++++++++---- 34 files changed, 288 insertions(+), 45 deletions(-) create mode 100644 data/20250715_alignment_tests/20250715_133131_repeatibility_0/im_00000.tif create mode 100644 data/20250715_alignment_tests/20250715_133131_repeatibility_0/im_00001.tif create mode 100644 data/20250715_alignment_tests/20250715_133131_repeatibility_0/repeatibility_0.dat create mode 100644 data/20250715_alignment_tests/20250715_133234_repeatibility_0/im_00000.tif create mode 100644 data/20250715_alignment_tests/20250715_133234_repeatibility_0/im_00001.tif create mode 100644 data/20250715_alignment_tests/20250715_133234_repeatibility_0/im_00002.tif create mode 100644 data/20250715_alignment_tests/20250715_133234_repeatibility_0/im_00003.tif create mode 100644 data/20250715_alignment_tests/20250715_133234_repeatibility_0/im_00004.tif create mode 100644 data/20250715_alignment_tests/20250715_133234_repeatibility_0/repeatibility_0.dat create mode 100644 data/20250715_alignment_tests/20250715_133234_repeatibility_0/repeatibility_0.pdf create mode 100644 data/Temp/20250715_154024.dat create mode 100644 data/Temp/20250715_154024.pdf create mode 100644 data/data20250715_alignment_tests/20250715_134514_repeatibility_0/im_00000.tif create mode 100644 data/data20250715_alignment_tests/20250715_134514_repeatibility_0/im_00001.tif create mode 100644 data/data20250715_alignment_tests/20250715_134514_repeatibility_0/repeatibility_0.dat create mode 100644 data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00000.tif create mode 100644 data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00001.tif create mode 100644 data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00002.tif create mode 100644 data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00003.tif create mode 100644 data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00004.tif create mode 100644 data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00005.tif create mode 100644 data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00006.tif create mode 100644 data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00007.tif create mode 100644 data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00008.tif create mode 100644 data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00009.tif create mode 100644 data/data20250715_alignment_tests/20250715_170343_repeatibility_0/repeatibility_0.dat create mode 100644 data/data20250715_alignment_tests/20250715_170343_repeatibility_0/repeatibility_0.pdf diff --git a/Config/config.json b/Config/config.json index 8ec61bf..4e3cfdf 100644 --- a/Config/config.json +++ b/Config/config.json @@ -1,5 +1,5 @@ { - "Number_of_cycles": 5, + "Number_of_cycles": 2, "Amplitude_mm": 10, "Time_in_beam_s": 5, "Time_out_of_beam_s": 10 diff --git a/Config/measurement.json b/Config/measurement.json index 095405f..38a8d01 100644 --- a/Config/measurement.json +++ b/Config/measurement.json @@ -1,4 +1,4 @@ -{"std_test_mov": [10, -10], -"std_test_wait": [1], +{"std_test_mov": [1, -1], +"std_test_wait": [1, 2], "backlsh_meas_mov": [10, -10, -10, 10], "backlash_meas_wait": [1]} \ No newline at end of file diff --git a/Scripts/__pycache__/metrology_functions.cpython-313.pyc b/Scripts/__pycache__/metrology_functions.cpython-313.pyc index c7c6c10aa7443c395083fe56081dafe9b2fe98aa..9ee25eccb6dc9caa7325119de2cfca698d00b441 100644 GIT binary patch delta 2303 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 diff --git a/Scripts/__pycache__/myutility.cpython-313.pyc b/Scripts/__pycache__/myutility.cpython-313.pyc index 5c90fd673215980d69494cbb0d463b1853275cd5..8ba3f174eda3517588c880377f4e4f451dc099cf 100644 GIT binary patch literal 2619 zcma(ST})GF^t(U(xh<5x>RJVQ?L_T{WiBHk&KYNM{z0%!4M|y=OM6?&=)K){FKCI$ zcqB3h&Je*6;SrZDnadvby6DT^z`993y1i^KyetluINct0zS~|v;&i9I=leb9JO5|B zveJP7e)w>>|8E|lU+KaGwmexs4U;JpK@sL0!ljYH46NC6>{%AGVrh@VoNQX`+ap%MLYfKKRw>)A07L9aNtg9ZR!%VGm*`-HkArXh3ZN+z+c=BD`>kb} zSfns9Q$7?1$+v?aMVZzzt;T{}@H44Jv={9`&FDaxC<*scpoI^K@Jpj(oDZd#0NX_v z9N-AA=46HN1DXnWP?eGamhd@A?$~4>+O@Vo{8h$?!4ZwD)DZt z4#){z>y7AATJDx{O2t_zA&1n&P;VrGGdVcR=7;pmU`Edeb9v&VPsG(eN`@t>h03wy^k*Y9JW+N&=zZkWG z0TI@`BQr6oxdG8vWI>o(V;g|;*u5ygca2!y2!eG-TDnw`PQ+AZP}anhI;14Uj3Vm& zvZ&?cL?)GylVUQ1As|(p4}#;kkK}y7M)>rg+DBMbD|w3_P%{dtIR$LGRQ(j?(}A&y z373^F6MI_LvozfyeXJ>UFezgqz_W4V*>WP4oa#`ct0Qp^L1>wjhnIL#HhWDKPJ5 zJAv8>6-40_Hb%J^0Dfl8$^&(akMcls186K!OBiUkLu+~CMKNQZDb~%%h+0jlB3ye9 zLP?Ok^KFD0(Po^)HsSzom&?KjjE-`bV=nXkaJ4zx9HENZP40>iWx_PWwn0=dZ-`r} z^;TP*_JFpIo_4D2i#YU*(34Frox4hQ?3^l%+pBkMrzt`hIB$ool|RaXr<@y}@`4=B zS5iAoNx-AKOA=_T;(Q0PMq@?z6gCB=F6K60wjl`$8tosQze6V}_mBVXFkMoq!<4x> zQ#2b_sSPkitF#yfDv1S4N?JBbBe7^YvfeK=$iD&dN3r$OnFmYnhIoPYpZD}1`mDP^xcj^@c5GZ&B<8NyXTR&<$<^5YoXw6 zpL~DW?Y(*a`uX|Vhwi<_2LJq_+db3FvZrCjK36qUwcxzt`pI*6okNZL{-{DbytGL) z{OLgzu8Fp*ZId12$L}^3>f63)TDUM9p6j{QGcVna-ECT`Z(DS>E%I$o*BVge>wf`- z$G?u4ng-&of6T%7?8y$`^rKM!&zc7{9MO(~_LCJMf&b!A$j5yzo)AMW{vP6Caj!`X zy=A@ca)jz__dOi!+~3X6dA%|BIYI|*0f*5jF--!)@%S~E5sLzSGmo3;F7*VascO_r z!|rzw_R$TaY1-e-s>z{2`8|9L_GnGhXx9O08D<4J;r}ygSV6)Hs$Jt*rhd)AGA(Nk Oo_TBCRm~hRIQnX7pw#VhCoEVklw^W(JZ>>5Q5z zFF}g^Ci5|iZJfi($jS}mF;8B`_}H5j$SPt361P}VN^=V|nTt3;9KOd0Xi$Q8WFf%eT-e%zb#KOcV^O=i@QNKt8C=37=U@=Aj diff --git a/Scripts/metrology_functions.py b/Scripts/metrology_functions.py index f8845b2..f56dc0c 100644 --- a/Scripts/metrology_functions.py +++ b/Scripts/metrology_functions.py @@ -31,7 +31,7 @@ import ad import myutility as myu workdir = \ - os.path.expanduser(rf'C:\Users\berti_r\Python_Projects\StagePerformaceDocu\data{get_datestr()}_alignment_tests') + os.path.expanduser(rf'C:\Users\berti_r\Python_Projects\StagePerformaceDocu\data\data{get_datestr()}_alignment_tests') if not os.path.exists(workdir): os.makedirs(workdir) @@ -74,15 +74,17 @@ def run_repeatability_series( #--------------------------------------load coordinates from file----------------------- x_coordinates_json = myu.load_object(measurement_mov_path) x_coordinates = x_coordinates_json.get('std_test_mov') + wait_x_json = myu.load_object(measurement_mov_path) + wait_x = wait_x_json.get('std_test_wait') + print(wait_x) for i in range(ntries): #---------------------------------------------move------------------------------------------ #add multithreading for simultanious movement of y and x axis - for mov in x_coordinates: + for mov,wait in x_coordinates,wait_x: axis1.moveRelativeAndWait(mov) - sleep(0.1) - sleep(1) + sleep(wait) start_pos_rbv = 4 #???? meas_pos_rbv = 5 #???? #---------------------------------------------capture------------------------------------------ @@ -188,10 +190,11 @@ def analyze_repeatability(input_file, pixel_size, units='um'): 'Y-neg', p2v_y_neg, rms_y_neg, sigma_y_neg, 3*sigma_y_neg)) print(result_str) + """ result_file = os.path.splitext(input_file)[0] + "_results.dat" with open(result_file, 'w') as fh: fh.write(result_str) - print(f"Results saved in: {result_file:s}") + print(f"Results saved in: {result_file:s}")""" def plot_repeatability( ax, index, com, mean, p2v, rms, pos_mask, neg_mask): diff --git a/Scripts/myutility.py b/Scripts/myutility.py index a1c32c1..aa49f25 100644 --- a/Scripts/myutility.py +++ b/Scripts/myutility.py @@ -1,4 +1,8 @@ import json +import glob +from datetime import datetime +import os +import numpy as np # Load config from JSON file def load_object(path): with open(path, 'r') as f: @@ -7,4 +11,30 @@ def load_object(path): # Save updated config to JSON file def save_config(path, updated_config): with open(path, 'w') as f: - json.dump(updated_config, f, indent=4) \ No newline at end of file + json.dump(updated_config, f, indent=4) + + +def find_newest_dat_file(folder): + dat_files = glob.glob(os.path.join(folder, '*.dat')) + if not dat_files: + raise FileNotFoundError("No .dat files found in the specified directory.") + return max(dat_files, key=os.path.getmtime) + + +def load_data(filepath): + times = [] + temps = [[] for _ in range(5)] + + with open(filepath, 'r') as file: + for line in file: + parts = line.strip().split() + if len(parts) == 6: + try: + *temp_values, timestamp = map(float, parts) + dt = datetime.fromtimestamp(timestamp) + times.append(dt) + for i in range(5): + temps[i].append(temp_values[i]) + except ValueError: + continue # skip lines with invalid data + return np.array(times), [np.array(t) for t in temps] \ No newline at end of file diff --git a/data/20250715_alignment_tests/20250715_133131_repeatibility_0/im_00000.tif b/data/20250715_alignment_tests/20250715_133131_repeatibility_0/im_00000.tif new file mode 100644 index 0000000000000000000000000000000000000000..9309c1e2cbe12b64ce1101f112d231ef6d76045c GIT binary patch literal 7322 zcmchWO>PxI41^~Hk+6deY_ed@8Mr{M#OZm)`BY_hdxob-2oaa-ue&Gk`ug*DK91w_ zaXfrH9&YH@?eBx(4-b!j`7byA@ePOXli{y#{@*wLn`OVh;U6!@@nZg)?RM(Z+n;B{ zaO;#Gtul36J)FXHhja8W@jcyc865mH@p~s+o!$VJW6q;w#*_7i>Pl4ozIjJ~p){d= zv!Bu(zS9#E?7Cyu9lPfmlVs}LV4UUK&YkJTr)*E`6|q7!8O@WH&MUq4k%3jW(5fl5 zy3X8aF+JI_b|IbVE$YD;6I`9zy3RNAZ1te@8J)Y|Nli~Dr>lE8L#c}PDfjT6;Cj3J zgjZK**qO?%X!eAHnv-p9`G1Vx!ExL`dmwG|?fmPfODQ3B%U@MaNLDU*zfJXck7J!# zks5_O7ua{XX8znWwatA>?7l>tCP$t<`S7NHO`)%i^y1i`KrhYAOuzrQ*cYnU8 z`_-|3Z+}tGcb(na){IV-Kae{eocud|getvadJ9~bYfYWz{>1lt_&cnNVZs+Zu*x%#JtTzN^XXdH7Ip=tHv&xYt#jGx! z-ub%o-IG<95PmsV4bMFHnLXR@p03pklQ)}O{blnVT~YTn8;;cvtsV5$rmnZ z!Zn?DmFjm_n)9V{6Df(vta?>;xiwQ=G*ouou6$>@Yk_^QC!sJ?Ri^U$Y-Q_dneQ#W z2i7jsTl+4jkbCs6Vb!I1BJL4hSJ!MNuK2yaZ_YEhNl&szR@lE8NlkpXl$0mX#N$#A zO{u^$@%vo0m6`l<2GZvKGu#uoJ1fT7+Igi&52P(xwDoT+rTYAAJblgy(j?gLnLXQY qPS?tN(lLpgsnqoBR(A4KUYn5r9@KY^JbmuGR`phIb$s1%<@f_%m1jZ# literal 0 HcmV?d00001 diff --git a/data/20250715_alignment_tests/20250715_133131_repeatibility_0/im_00001.tif b/data/20250715_alignment_tests/20250715_133131_repeatibility_0/im_00001.tif new file mode 100644 index 0000000000000000000000000000000000000000..c800f3dedf1abd5abb0a761d0c75a971e32f523d GIT binary patch literal 7322 zcmb`GOOljF421sy2alb-F&h@FIRh8qN}S#;=VW{-RnkV(g~z zpReoXkL%@uemwrZ1b+AO{$Kvj2mk&Rm+wR1zh3>n9{k^t{ql;xeZ8));eXh!kB>i} z9)D_{{-A=CBT}`mN45&5UQAC-b#<(bW_p&bU$EOVePF9Ki$z(Hm~e)7G8$ULL;*E?r{L)QV#&T(zRBNfdF!6|{2mk#E~C<{Pi#+3d&GJ3t#qz#G5l_TBO1(;2e~O3`|sx|k-Yz{C0DJr z``;W_#IjH17SEGDdGF->E-RYoozJa%ywwz5f2vF;b`}l>gnB~0TRJ(Aa&uqXR>#U@ zO6uxanM@VlJ38yllbpX{DfPK}aO-xuaD(K+Yb3{8KGNm%`(WKRnfu*Wv(FsK&g2FL zIR{gS%{rW~%d>MjbJE-(-^t|`U-rG7zc}-rw0DMH(A$pkmP^k3q{S+X5^}??D1GTp zUMVsCQYOkZ_sOg}-OkJ7&zWHFze}Z4owwIZV*E)qyUfn1cC+qg2f06|)b8Qu>AZgq z^laiCC%wDh-sbg8bgf_P8maC|zVK9O0g>@{k<8jLUB014_j>lOo}HfD6VHy`vZ}w& ztXEe??dEHOjr;=bu%JxY?U^of%vCLBWl0!4Vp8$BzVc(*^_ zucq18FRW_zXM_L8^t{}(fO-$<5ld~Ea;gWuOJ8N4chM2nYeRzt$*LVYc_TzJHVh_+T7l?XPx0+LZZYy-#1#6 zKn2M&_e@T_^X|BrtNj_@`kPsk*^@Y(ljnLWU?b0b|DG#$ulW1ksrkmdamJ@R=ftY) zzg2v^REQllw`bR5U$ z!}~FpZr@L@5$sY5;+SefcJ{VImg^V+&PEzdvq_UJ6#X1H%7*9INn&+{PFf*U$y9Hhk?*zU&{2Kk-c={^I={!Rcf5Dpn|O-9hx25J zt0+4-PrV<*;}XHIj-j-i7KTKv+kS}sa+?@#CM%}=Qwgw zt=na<(|}STH$8e1bT(;Y3td)s%fYT*@#?ffF(a+}?)OSwwSCt6?qIIFRt57suez%8 z?u;h%ldf`fQNg~66lPiJQ1*V}aqeEBd&s165>+Nt681Nd;&l{>YpOQS?%5$%rltxl z)e|Sq=lAfsVSRIUM6G&1FDf*e1yfVeDlL$I+^suEpBxT#(#|LoVkYFudd|IW=YKoz z+Z}Va`J7VrIlU?6Hp%vc5|wDw|q4$Vg>&I8eE!;;!gDdAO#zbBUe7xmL7P zcAaytd2eB2N8L-Ws+aF4>OG#G$c>`ni3(0$47}<(n{SCj8~Gp5j@;|Yj=i7v+-EZ* zzV+GXR&`IuM^c~D$6e2A@yyjzW<~w=(BPxb>a63cijHYkx>dL4R?R)9HdWu+@uE|r zzc)_w^lz(djn^msK0@<6N+8pU*GJyzGY5HNA@TB)9a_(l%Jm#5b9Z!Ts4ysSI4`YEBwZ*cg|z2T&G7CIH_T^| literal 0 HcmV?d00001 diff --git a/data/20250715_alignment_tests/20250715_133234_repeatibility_0/im_00001.tif b/data/20250715_alignment_tests/20250715_133234_repeatibility_0/im_00001.tif new file mode 100644 index 0000000000000000000000000000000000000000..58aef766b5f49c567369f382fa767a6f3c154bda GIT binary patch literal 7322 zcmbtTJCYMo5F4`;m<$p~HX!B2V_qsXy;|3`NwEOVED`3|Lewowd}V${{DI#ujaqmj*scj_3tK>9kEHf zCfuFp81$)CDeo5xH2MA6gyqbA+@$LUxU6V%RcuXbpOA7w)h9)$dZwMftZR>Yy55=I z+8L%ey93OulZ{EdYMA)5nb}8{Ghdk5@Z`7NebB`R!lrLm#rAeExXDcR&zWGECFWCT zcMsd0TP4(>XUTav0=X-{J^8}Jk656`-Ja+dnD2_`{1y|z0h7@r>K$Zqk}Mmw2g+@E z%T8@_5n*zZlc*}OJJ;Wkt895@_6zHDzBO&NZQbQc|5aJV#(SK4GoG(1G_d~doxv;D zv1`ipHfe$86g>HxPR?1)?9@+3?(w%nN2Ie$iX(bBLv!rjjJqqC&MHNXQwot3A!=u) zQh~G~J8^84S1xht5=Rv8Sy)cp>^I1)CmVaqoZ&O%9G=EG$81726sl}{blo%IWuDD- zve$FWaQ2(7tZ=<_ZuhobBKu(PcH0j}-Jmk)J=*9E|u$VyFa_-+YZ)3Z- z3C(xp41KrdygMDcYsI^#-sDr{tZ%?%ICJOR;-2`Ix6aZTj_mSng+0x@UsDc9JD-~k z>*;-K7y5F4bxX}CHh%akYPRp{fW}=-%0N5wOFZqkc4?o`nM=yiU7wP?oEgENIc<|# z8z&DN_%z&o?sEDYoL#|65ki06gRM{PPcq@DWAarFxj8+vwSjwgcZS|+R=0M&3vmAJ zO-g``y>jlCtFyuIZtv(!Z@~5LL@U2*uKTMa@3`XJx?!y_zjBbr>Iyq{30`XrXBr-HU~$m@9}Lif!vv*6;p zs&%KM@>7=WKC=%kwTm~DlP~AHQyEA7f~$ciN9M3)uC`1~j}vNHc{^Vj?e%}B+INU~ t&iRd~LB2gF^--fcJD%>*wbSVF`K&*(&tzur%=&ZfFw)*Z%(+WT`wjTWXD-kBsoPGp!@YlQl_l^H1+3$D!<7L}k#DBAG&+quVzGd|K zcuS@;rx;BW_k4Rt`#RKq_9U6^euQ~%kLPqstk-%!*S~KfkY?RED{MwKnAz(*{JCY7 z;5~2?xj>a?Q*Pi)FEY@=3GD5dy1HgU@xElxHJ!DMb48qMPb$8-dT?j!mPo8RJmpiq zUFUr2_mT`3^KWm8j(5_cLy0FPk_g{cQ;*Q zN?VCjk1PIDLykH#=eD3hbHr39L|-5}ocC#RftyZndoA758PDrPFH!2NU!SHQ#dXIj z@4lS$dYqdYYAQT@N+xEmrekJC)tObtgf*r3$UEu5MF*Zl`+#x6yXyIuJa;DI%qv$BY&6kN)P0q~U34BywoRQA zht%GQoS&GO%%|$SIs)snQzJqHPAZP}^?lWw>hzv$W{#6^;HB3befR9`d1riL zE>O0@fzv&hs1iZjKi7ULKscjO@!p2+1LJ2rEtt6vDo(m8Gj&xD(~js%#Jj@mex1U> zyeffR!GyEA>7N`Ew{F1pIW@CvOI=-x>6=h>#!Qay7A&>imKq%OL_^O#!l1Qg$P-mh zpVh0lJHb5aI_F0_&MBpz1$^^6J)e%A{##_8h#M2F6?M9+K7p&6oAI%Ka*#`;SAUkZ zqW9BXswz&W?{Hlmq4*q=Gnziap7cqx^;1a=ew=wHnDWHrZ8~{M70t3uS#_Vo>vSmG Pa;|N5t#?$vI*I=PP*7(L literal 0 HcmV?d00001 diff --git a/data/20250715_alignment_tests/20250715_133234_repeatibility_0/im_00003.tif b/data/20250715_alignment_tests/20250715_133234_repeatibility_0/im_00003.tif new file mode 100644 index 0000000000000000000000000000000000000000..825098cca24136816999f9d177be859ad9a48133 GIT binary patch literal 7322 zcmcIhL2}zb43nEo>)x76ddZ>ZzM&t;m-_mOfiVD=+?8Ta$72%&K#-E(-+yn{ZQH(Y z+vRz??C8(_y%_#-dHUdg?EKRWhwrQ5mz)3Z&cE91&l~>rwry|b-)-Bs+vmF1`0|r6 zI&$n-F_Sx_UH8n9=LXfz!>OpizD1ZmrooRypQEnHoEsheteU9|wV4vU66x+MyuH@3 zb?4blk#^3@9jx6QNRu*pV-vWnfDMjnr_XbxWTX`C&3fO-t9dxbzMG$WLZPZB1_$1M zyKLu}8C}-nO^{)wNBx-6DILeTQHvgXv!Ywh-ry75_L-XZW74_E$A_t| zl8Z{7)iph>)IjLOk?~nqozHmXk_PnXJIkBTbh@B(cj^%rdgt+cc;L$ap}T-{R_@#} zdw1OgxA21K-RGEIuSfcr=d;{&CL_AJc>(goDxVyyl(R^af!MK%>GI@q zwP)d2X`Yes(Nw38T=e|To{H~3Z=ZMFj=9^nc9WU&&T-^NpE>Vln3MTJxZ_vI9ZX|Y z3jKI%(N&Kp36I{G^jSGqXf~rHUFNst?Q*Yng(j!aoaGkxVneqKVMIV!63@Ljt?P47=C5FMQ{Ce&R_l{Keu0;)Wz;kXH?drukp6hHuP}8!6s9mKrP-PnN?Go#0l# z?gVDK>bZGOiizk)u1m_E+#UNn2e`W5vmJLCeELokhZO#@N}nNZ=bnC6zT+f1V&-^` zZdJ~(h6221=#pQVu4O!SJ_F6SX7%2ViG1hC;WJXbH(hi0Ch-y_J%Yw7a^LN8hhtn( lneMv$Zac@LoZsQN=C0MzzjjkaWv7hFNSmR1W^&f~gnun;XEgu- literal 0 HcmV?d00001 diff --git a/data/20250715_alignment_tests/20250715_133234_repeatibility_0/im_00004.tif b/data/20250715_alignment_tests/20250715_133234_repeatibility_0/im_00004.tif new file mode 100644 index 0000000000000000000000000000000000000000..90bc24c69f926987087ad52eb02f60254d2d5901 GIT binary patch literal 7322 zcmb`FL3R^i41*_>2W1Bv*mS{~GjM@kiPIC~en|H3`IAy!Uus#FWX~ke&p(dG<2XJY z$L0NTxuT!f&&BY&%flc3^Ob*i!J+$L_{)p_*OmWj-fu7X`_pkenf@v}KA!$P{+$S= zTK(ho>NP>!4r%tWrPPUc+BLKNKJ=~*Jm1~jt|B4bogV8F`_4WJbDc(>Er*?LD?u2L8%(|bQQKg1WrFc14PR|jl zbuRCUcKhy23Y9Bs;<~Xi?u`g_35Mta_y z`aN3x==BWKUQ|;(%j|sbr>vFJT{%;V&^+n$o~^l1XlmD8=kr^>H7S|!-FoM1cDl%1 z=S--+g>Btcdv)$5@4U`xrJXzVZu^Dzxp&Fy>?{+Wx;lelN?lcbl08qh>c!xsYMV6w zij+Ag_}p<&QRu>lK%NM?DLLJCm!P z`GU&gz+az;X}>_5*IPWv{qpRQ{CnO1m`?X;zn)Dfwo1VbE5ih}`jv?*e1ou%{NjYj zbS545Fv=$9%=r Q3NPPMi17zYxM{>eMY<0?ED1PZY;w8Z1* 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 P2MCUM^z;&nl6e0EE}?Z< literal 0 HcmV?d00001 diff --git a/data/Temp/20250715_154024.dat b/data/Temp/20250715_154024.dat new file mode 100644 index 0000000..824e9b2 --- /dev/null +++ b/data/Temp/20250715_154024.dat @@ -0,0 +1,99 @@ +26.0 25.3 23.861 25.588 24.964 1752586824.1837282 +25.9 25.2 23.866 25.585 24.964 1752586826.183605 +25.9 25.2 23.886 25.602 24.982 1752586828.184603 +25.8 25.1 23.882 25.594 24.972 1752586830.199268 +25.8 25.1 23.897 25.604 24.982 1752586832.1972249 +25.6 24.9 23.915 25.619 24.994 1752586834.212561 +25.4 24.7 23.938 25.638 25.008 1752586836.212204 +25.2 24.6 23.957 25.657 25.034 1752586838.211518 +25.3 24.6 23.944 25.648 25.019 1752586840.2269042 +25.5 24.8 23.932 25.632 25.01 1752586842.228628 +25.6 24.9 23.91 25.613 24.99 1752586844.22601 +25.7 25.0 23.906 25.613 24.992 1752586846.225013 +25.7 25.1 23.905 25.606 24.98 1752586848.2242439 +25.9 25.2 23.891 25.594 24.968 1752586850.223988 +26.1 25.4 23.87 25.578 24.954 1752586852.239352 +26.3 25.6 23.838 25.546 24.928 1752586854.238882 +26.4 25.7 23.853 25.556 24.941 1752586856.238347 +26.3 25.6 23.853 25.554 24.942 1752586858.2537038 +26.2 25.5 23.865 25.562 24.949 1752586860.253046 +26.1 25.4 23.874 25.576 24.958 1752586862.252479 +26.0 25.3 23.887 25.588 24.971 1752586864.2676952 +26.0 25.2 23.884 25.587 24.965 1752586866.2670798 +25.9 25.2 23.887 25.592 24.974 1752586868.266782 +25.9 25.2 23.888 25.59 24.973 1752586870.266042 +25.9 25.2 23.89 25.595 24.974 1752586872.2813718 +25.8 25.1 23.894 25.596 24.977 1752586874.280805 +25.8 25.1 23.9 25.606 24.989 1752586876.280521 +25.7 25.0 23.911 25.611 24.995 1752586878.279445 +25.5 24.9 23.923 25.626 25.005 1752586880.279273 +25.4 24.7 23.936 25.64 25.018 1752586882.293673 +25.2 24.6 23.944 25.644 25.025 1752586884.293417 +25.2 24.5 23.962 25.663 25.044 1752586886.308494 +25.2 24.6 23.953 25.656 25.033 1752586888.308178 +25.3 24.7 23.944 25.644 25.031 1752586890.3074229 +25.4 24.8 23.924 25.628 25.011 1752586892.3069818 +25.6 24.9 23.919 25.62 25.003 1752586894.322195 +25.7 25.0 23.911 25.613 24.992 1752586896.32154 +25.7 25.0 23.907 25.611 24.995 1752586898.3210409 +25.8 25.1 23.899 25.602 24.985 1752586900.336499 +25.9 25.2 23.891 25.595 24.976 1752586902.3356748 +26.1 25.3 23.878 25.578 24.958 1752586904.3352919 +26.1 25.4 23.868 25.57 24.949 1752586906.33491 +26.3 25.6 23.862 25.556 24.946 1752586908.34994 +26.4 25.6 23.848 25.548 24.933 1752586910.349826 +26.4 25.7 23.852 25.553 24.943 1752586912.3488698 +26.3 25.6 23.844 25.54 24.936 1752586914.363883 +26.2 25.5 23.869 25.571 24.958 1752586916.363335 +26.0 25.3 23.884 25.582 24.967 1752586918.3628879 +25.9 25.2 23.89 25.587 24.971 1752586920.362539 +25.9 25.1 23.899 25.597 24.986 1752586922.377503 +25.7 25.1 23.906 25.607 24.989 1752586924.377158 +25.5 24.9 23.915 25.622 24.999 1752586926.376668 +25.3 24.6 23.943 25.646 25.019 1752586928.376014 +25.2 24.6 23.948 25.656 25.027 1752586930.3755782 +25.3 24.7 23.941 25.648 25.026 1752586932.390708 +25.5 24.8 23.921 25.624 25.006 1752586934.3903801 +25.6 24.9 23.903 25.611 24.994 1752586936.389437 +25.7 25.0 23.911 25.615 24.994 1752586938.388937 +25.8 25.1 23.899 25.603 24.985 1752586940.404243 +26.0 25.3 23.876 25.585 24.964 1752586942.40373 +26.2 25.5 23.853 25.56 24.945 1752586944.4029598 +26.4 25.6 23.841 25.547 24.935 1752586946.4026492 +26.4 25.6 23.838 25.548 24.935 1752586948.417901 +26.3 25.5 23.852 25.564 24.949 1752586950.417684 +26.1 25.4 23.865 25.578 24.961 1752586952.415821 +26.0 25.2 23.877 25.587 24.972 1752586954.43089 +25.9 25.2 23.879 25.59 24.973 1752586956.4302561 +25.8 25.1 23.884 25.594 24.977 1752586958.4298198 +25.6 24.9 23.909 25.618 24.995 1752586960.429197 +25.3 24.6 23.935 25.643 25.018 1752586962.428664 +25.2 24.6 23.937 25.646 25.028 1752586964.428184 +25.2 24.6 23.941 25.651 25.031 1752586966.443626 +25.4 24.8 23.914 25.624 25.008 1752586968.44347 +25.6 24.9 23.906 25.614 25.001 1752586970.442456 +25.7 24.9 23.899 25.614 24.99 1752586972.457783 +25.7 25.0 23.892 25.604 24.986 1752586974.4575202 +25.7 25.0 23.895 25.607 24.986 1752586976.456855 +25.8 25.1 23.879 25.599 24.978 1752586978.47243 +25.9 25.2 23.871 25.587 24.965 1752586980.4713678 +26.1 25.3 23.858 25.582 24.966 1752586982.470873 +26.2 25.5 23.841 25.566 24.949 1752586984.486071 +26.3 25.6 23.827 25.555 24.943 1752586986.485833 +26.4 25.7 23.822 25.55 24.937 1752586988.484992 +26.4 25.6 23.824 25.549 24.934 1752586990.484446 +26.3 25.6 23.825 25.553 24.941 1752586992.4995918 +26.2 25.5 23.829 25.562 24.949 1752586994.4993951 +26.1 25.3 23.845 25.578 24.962 1752586996.498636 +26.0 25.2 23.857 25.587 24.975 1752586998.49827 +25.9 25.2 23.857 25.591 24.969 1752587000.4974 +25.8 25.1 23.855 25.592 24.98 1752587002.5129511 +25.8 25.1 23.865 25.596 24.986 1752587004.512277 +25.6 25.0 23.874 25.607 24.991 1752587006.511234 +25.5 24.9 23.882 25.615 24.996 1752587008.52704 +25.4 24.8 23.896 25.628 25.011 1752587010.5261939 +25.3 24.6 23.907 25.637 25.022 1752587012.526295 +25.2 24.6 23.905 25.645 25.023 1752587014.525428 +25.2 24.5 23.911 25.653 25.034 1752587016.525544 +25.2 24.5 23.919 25.655 25.035 1752587018.539364 +25.2 24.5 23.913 25.653 25.035 1752587020.5387409 diff --git a/data/Temp/20250715_154024.pdf b/data/Temp/20250715_154024.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d08361dc551586b435072706da93f58789763515 GIT binary patch literal 23396 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 E0X9hVA^-pY literal 0 HcmV?d00001 diff --git a/data/data20250715_alignment_tests/20250715_134514_repeatibility_0/im_00000.tif b/data/data20250715_alignment_tests/20250715_134514_repeatibility_0/im_00000.tif new file mode 100644 index 0000000000000000000000000000000000000000..7a8c12f76dc01570acba84f0be6063f574ea219d GIT binary patch literal 7322 zcmdT^%W@Mz3|tcm!VNBP$$>N9zz^h?_+6s0dE2&6 z+je=sU9RZo_2(k^-R0>I|M|*4z2WeE5d7uM|Le+smF%}S{QYIyUc`U3Z6D>|^IuG) zddEjT=+D>JY1*erafeUpSFA3@^vrD6XJ4?X)ZbLt6)1hjTz5=KcjeT5o$*}Pl~L@u znD*7s;lR1>=-$k9zILp;r#ptbChD9UoaIF1{m$20)|u{nVa~u*Yfg9WyQU;L&0;rI zqR_gRI#Bm01J`t(^-bB^Ic_7`YoUvXe*Sfm^Un)>O=GSn{QV3keo{pi({!8kWX^R@ zqa)5q+2b?I-?=Skc40f2?DUx}XOZR;W7FKw{do^{dxIw2r4#V%cGjm%2DjqTT~GBZ zu0G80;Oray<;bm1HhGuwk*+fvL!lb`Inm|l5e{$6JD?Y*dcfgS?Oxowg6ZtN{kP_h zHXrG$ee-vUwyq`vy|=CvetPiWysZUpqAt(>>>kL^ZV ze|y|4R5sa&J7(|9?)MyJ@U5;|GQVm8 zkJG;|va9y{_}ZIuWpC>~lMWAjICV>MuK1+xf5&ILr+ei~W+iXtTHO_M<&Z-X=jx?% zes<&UR5R%J|4oBcSM5VeKY{QZ*)PEcH4xiYhd}1<0^gB9oxE_-;-uAfZ5nJ{dS{qfp?G)Z;`cob+Uy;*%~j1!xTdRTrIRO$Y)sCeab}_3ejfF?j?cgD2^W4; k^R&N7HSe98*s3|QGfJ-~e42ABHnMrwb<43r2N5^^2Dj{H^Z)<= literal 0 HcmV?d00001 diff --git a/data/data20250715_alignment_tests/20250715_134514_repeatibility_0/im_00001.tif b/data/data20250715_alignment_tests/20250715_134514_repeatibility_0/im_00001.tif new file mode 100644 index 0000000000000000000000000000000000000000..b82421c6b24752288308c402ee21816dce34d6a4 GIT binary patch literal 7322 zcmcJOOL7!J3`A=%!I&LvVB-aApMeYbN}QgSH5r-uRCP6W8n?dX0UUpMJL+@9X`FNgm0=#Bd%{nrQo>(IZ6_xq#&@iNAX@CP>T;otM|iu?Ol z)ceU;{G0XIYppk^_zOU5Dm1>Y+p4C$x%1p7#uqqa&feXtOs3yD((IItDqoUy^_=(2 zaW)f}f*>}pr@_LZD#bJm#VoB7^J zWX!p`sY&$Jx1Gek-)IdPNtQW5JNa|hOvNO`Bs6l0t?LjK5z0*~J6KR>y zzZo#BpuJ+^UOQzv(zH(34Da`->Vq=#yFS~(-PJvhQ9Vgj8LGV5X}eo;=iU0wxt|1* zP`N>eze&t}UHN;5tG#didp-M{>YbXN6`#9%AW>_&y#s!3SA6$9XFkqx;uY&~UDX*s z)2r7~NwXu_Y5tk0(|KcE&8|Ef?=&yD7bGh8s%TFF9k#h*ZxuUeK4%qMtvd|z_gGEO zJrYo{&ogwZwu_&R(zd~j>h3sc;;LV}bj!Q=`7l>^fAbnmj<@l1;mz8`S7d*F7x(OH zW~Wr%m3Y5%LaPbbbk%4$P&;m=?fdpg-rM!;a!fw&Ec0qEd3NWQjJV2oshZ)vD*csA zbh)k>2^w`y(?i#c-c6(59anr{*G}7lx9}#_a|UOh%wrA?>yCjjj^$X%HFb9&AWAO=hB4S zgO8ulj8Yv=XgX_;z1MC74b^^b>-WUWJRt`)?^m;W*t1)C`<;35)e-nkaRc=}egn}9 BX666@ literal 0 HcmV?d00001 diff --git a/data/data20250715_alignment_tests/20250715_134514_repeatibility_0/repeatibility_0.dat b/data/data20250715_alignment_tests/20250715_134514_repeatibility_0/repeatibility_0.dat new file mode 100644 index 0000000..6cfac14 --- /dev/null +++ b/data/data20250715_alignment_tests/20250715_134514_repeatibility_0/repeatibility_0.dat @@ -0,0 +1,2 @@ + 0 4.000000 5.000000 24.706 23.529 1752579920.330 + 1 4.000000 5.000000 22.412 31.176 1752579924.312 diff --git a/data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00000.tif b/data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00000.tif new file mode 100644 index 0000000000000000000000000000000000000000..7070fdcc00b6a3d737c628ca3f44b81643ee3626 GIT binary patch literal 7322 zcmaKoOR^P53`F}G!k-yT@PvWKtic;#OI|%UIqyVD)s3U$R!OP+sP6ag->yHe>-y`u z-acM$uj=2|?`_n-y?ywJe|q5`-s|vwANA*V{(mq0%h3M)UjOs;y1owni}p(W`ZP|I_RxxraJ?h9=eO!PuFDe ziPqaaoaj>q+3J})bw*FuI#qPCXI8PIGM`+x_hy)g{%KPuWfq}wpN*&E1ypm_jqKFA zppdJ6_prNxy*E2lLqAWM=S`ky6Q2Huja8G1*HML6tlh3~^Xz{pQjh5l3g>Bqs#|Sd z@n2VNf9`N9%FDzY-U8ygnAx2^TN@V4^6q-mW={FD(u>;;hQ4;`%SdHTE4Q6oSu;2F zbfA}kq9<;6Q!|?`Mckoxl_cn~_udZ7U`9VHm{YB<9_LK8FYK+NNWIKCXMIm{o>;o( zp0(b0N8TtOjY?HaNu1|>pY9dy_L1F;&Pi~)zRij)JJ0^B;3# zz1(=-_Zi;$*r|bUUT!|;x##rWO(q+{KUK_N%dqnf&bN_!>XU;QZ*1oq>zS&keCEvD z0v9nEXz5zx9eEhW$rfxCppf{$N)75o-XxJk4yFSJQ-@sD1v`_ zcPOH_Z13U)V{Wg*xlcE%2OKiGOC8)wg&EH{3Ai;K zjp=MY{YdMnQiZPn#~?#SZgQwP#oGjVve*i?FFd(==|qxUoP1lAsq};23@bQOGo4_$ z@6!aOjOj*Aep&2Mp1rqBH*f!>VZWZLa03Su5!3hV`;xu6&g!`NN5q;j|EarD=ko6k z?g6KBwLzTqW;*-wrcysWs$jBvx_O>Dd(yVrEK&QNG`l9L>77@klhay_Yomw^Yrfx%RcPt*kYgE zVCGCt7`i-hoROp7MyH={+-#a!?FD*vSI7(~G+(ZspRmkz0tV4c^pLBG%|hnJzH( zQ+M`N$T;sR=B8oEgn`qw08{%-fDIirMOA-*(Z9LBJmic6?paOM%zO)j#R;Q)k`KgsM*0x zajq)26JI+M^nJUBlgx0UN4x7_czCMY{cI7$&fQGU4Hq7c(F_YWt6}4{b>W#EgeqHg z&mN7OJZIcCL;W2ym461T& zx7+noMp8b~Z(RO(^DSp2B&So3t zs&Gk`>fkdwe{KM)J2SRVP%2-fKK-2;r>^wLoj3HhXh1e&l=;`3dG9?MWmk~sadShb zBxKe;Zq}IpL-f7Jpd@RWDA1E)*6z#{#c?`3lK|Eea>CqRJ>46zCpt9k z5w5$mlUodSuR+^Eq`A!5Lay6%KN|6_<@5&5eThnL&nTzr4Wf?&oXt|Dzy0$ry28qd zXFS~IWayf?723V4?96t8?&A@kd#w-r@gPTL{7*)6?-~*Br<{0O!JZQ&nZAL&oHtAE z{f4b~Ye>?wGn|}vyvB!5eRt^Q#PzJ`RfPQ!&)s&WE>9cyKj8hu(5r8A;onem#sOuOiA%{Z~FK;PlhuUOzgO$vI;KKt)?HAKP!6K%}U}{!f7AXG27JVJz?S5Oz}x3ecbt( zlS!1OL=%LRxR@HQh&Ngk`pm3%p+8UAXt%;yqhjvj8}ni-lW<1o2__?3;tDG$JT%T` z>JGXw>yyo$CodIj-R$U9>lmNT4hp}$_e?);UGzsu$LnEw@?Kx9%M%l9`!?T^iwkYN literal 0 HcmV?d00001 diff --git a/data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00002.tif b/data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00002.tif new file mode 100644 index 0000000000000000000000000000000000000000..86bccbadcfd2d1b8df21c446f8725727cc5f687b GIT binary patch literal 7322 zcmaiwOL7xI5JX3q0JDP)Y`kF28MuJ2#OYD-{K)K{5yXVLtFrP_t=HEd$MbOUX!NKltZ6{`6K4??csJ-uS=n_}9{Yd#k^{9LG!X@3edB$NTsE_oLgf znGY-YRD7Uai^LWEu2}u-hSd&qgXjk%946;^Yutbvr*_uE^l06BPlb`xcv4;WgLZCm z^eMV5?MZ47H&hqDaGZgp3m4b)!<>$f&ZJCa^_?j>c*-z4vn0sj?zBPt zRFVTqhDqJ6Y_d3e&tb{rrk9y4S>ewHBnAtMnR6I)dYk9_UOn0uX3u@&s+D0XccWd$Lq1bqZ|5f9BwDM~ zD}5u^?D01vuG!f+YMq0sR)JU0FmYcecBo|NHFxxKdz!hZPEOE+4yIpw>&zQk;)m0ks*`(~<}UWRdtb6<78DFb7u|!B zi|Wz&*p)=xJMr4fT$wuC=LJ@Hvv=pryxnl{gfAz&sq|VCMj5r0XwUFypG@^s?~d^S zVI$GK%a;1Iuc{U6SD7JZuhJLT`xb6cHQ6mHFc`y@>qcs1%q_mFq%XB6>S^L9L2#Wx%>_lan0lTL*POn5=8*wQpoIx7<$2I1!p-pN z-fuYTta~R(pDB!ew&pvXyK7m&@xEr68`YIge^~ApEgD$6Q_rZQ>;DGS8D9NAxW5`1 z<}nYN3Wi(vt#-JLN1F}6*so8t>Sf{P%-x)ZEf1!1cOggAZB1u4(RKoBPdr5Ia4@YM z#Mm^6Rwm%s?@0|uhjzpz$Z%vcqid9UWoBddh}uez;qDkIqIm11&S`KfcL{^Zd8>Y@ z>`{|(_6f&I2NmGylBuF!18+`$S1dh~#fJ7X4`K~U=QKG<)}6cgnaE~KI=sR`*(Yon zZ0l(bF72CLqnygrD4Bcep`Ij_ySjTg>hQzOEWFf&Nd?O!Z`e7*CE?LYR=b!BHXR%t zr+2niQMM}%QK<#dd!0{59_MJlsQOIm6-s)$#K)Q0>T%pp+2X5bd%zqwxa+MCY2)H& zzDn>>>ywFSvOtp7eA(Gn{o|hI9JnB;DEE=g)MsqY6TI RMr4r=pA`I~U<-K3{tYv(ZKMDI literal 0 HcmV?d00001 diff --git a/data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00003.tif b/data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00003.tif new file mode 100644 index 0000000000000000000000000000000000000000..5120a2f6646eda6b313e17f007a2fb3a7a758ee7 GIT binary patch literal 7322 zcmaKoOOo7F5JlBCfz1pi_QV6mtbq-9ORSzsPM^3ppVWk+l%M-c)z6=QU0<*3`t7>j ze!1RW-QTa@TlJsbKL5A>{k8x6-Vg8B>i>A>|MS{^EA999{?8xR^`rPN+V$m?>+kD( zKbv`G=COw<#XRpE8X=}uA z$Zgq&Pp(WWiLk;=8ob6^q06rM3b`BS&cVjlXE@=Ds&w`e_f)p-;Px~<-c-wtU_C($krI7&@3_}(5u9c}S3a_`uDM_mI1=&n7xg_MB%T&*X zpIv_mJzTxxAqsM4GMgQB-0Z0M$`{jBx4uqY?iUqFYC74evXhxj>$08Bi`@EeG;+V^ z&gPC`#$oqrNNtSk&Xnfw-kVjJy1%krx4th>liJ+b&ZQ*fX4%9oG4ag%c6xXh$$CUx=ZM0%7k;pu0B z^Y#}#m0_WSM;33DPBSMt9s6f?Z{<x$#!l@D1uHwtEs!4c{VL=Ws=E;v(;X6|N|_3KC^G$t9oZ>Am@_8b{E1H_y3uo3WGN zq3ZsgmPFZB{h7H}kog4afe(-}<9%DKxY$??;l zO*7JS&CEJc*^u5FJ!iMkY~n@^8U2pZ9P=AN5jW?l+f9yp=T^*)y>EQ@y7Z#CXm{Y@ zn~`j=%;@#?-`xL~8Mt|q^{#dET=C8YnLoN#27b-rYrxafnZBpa9R|-h49}+>QOJN5 z&rxi)e7#JJQjMO>^0TG$E>cXR%4p0Sb)64Cd70fsy^2;y0an_~tuyT9{_(tHbO+#!faWGQB#SWVd_c)9=g8 z-`nP?@6@=2$ya!levP9F@8oWz9Y!ged*uG#K8or5*?~TPom;rRt&?f~>~N;$du3Bq Oc)ix*Uy>6zF$+eu6fea+->1R-Ok-6S8h%xw{Z>!qOW<~a(G7JZ*JQG z0=5~HjrEc#$ zjgvQh=3wmc{JWJ*V!qZq8u%Z2SEDoD=bg`(@y6fp5f>vtEgRjZstHSrUwJY>qvdsK z#F?*XBUjDdl9!CCe|LSR=ERFuKkWYMK;!oMX7<%lf~qyo-DmcvJ14iR7o;;t@k=MK zaw9!(PG;cTo1pP4N2)3Dn*bk`e$GkpmPCjyz=)_J37^tbX3lP5QR=h+oal$lXA6OPx&O|nV6$amS$&g&i`qrzdb{?3cW z&Q`MviTiGrYS^A=!8>^8N4IZGVosj!L3g8bceW>pn{O3-t9JrZ_V)!i$cozzQ*F=A z-cYtPO@orWRVbn}9W5^J?r9&m6S-)}>#rnf!boOBWU9~vio1ObK`11yeD~hl-+t_Eag5F`UYyhvya};UM z?b;qr@0{$**EzgMwsfPkqDE;Ntc@z}($J{)HD`xTPFgxWz0LW$QSKfmeY-DPv@__q zbl5Sc-SS}jn?w@gG81>Rc!GES=*-|GCuq;0(dQN9*y=e=_OeBEaLMx4+tTL-oh5Tk zp}}VPZl}pjNVUB=I{4b{l%2wW$+SBz_X%Qua>C7x&Es>1Q4t-8`boX}1K+#$1~7D) zaaM1=joC;9U2wC*chaCXot3;q)d$!Z4?Bh&Vxb)@4>e`Lt zoM;Ys>vx7Noa%OC9DCcIa*uZ~er{t@x82=M^HpZfdBs4t<~-T#PR=>$Y~Bp8@bqO5 zX5OKP2@f6KNmKp&L}!a`bH&Z>RGn&fM>{v;)P8!$gU=rDapcB54)avWh{w5i8hmqh ztDDm_mAE!@Rdq6Zoi*n4YkUEl(}6EvbH+!;-8+*Yi+()Y$GgCy&CNZdc-9(Eze(S< R=gOeLJ!#I~bjX=$^DmplZO;Gz literal 0 HcmV?d00001 diff --git a/data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00005.tif b/data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00005.tif new file mode 100644 index 0000000000000000000000000000000000000000..d2882efa75fef88315ebf4e66e851c6aef8e7828 GIT binary patch literal 7322 zcmaKoOR`i)3y-%j5B7@t?G3s^1@v z`9A$TtC@<|O$DE7_ozoBC+ERLsrQKn1~|zlQtrm#kGCk=-M_lYS6v^M8Lw)7SCKW7 zQr*S`Irh2Z=zpc|%AcO!b)u6>dll}rb-wDhHsvD;{_4JNobx!E!yygsFE_3@dc*?4ap;9fkXi6*pfwp0?&+(WZE>*9C+4d^K zw~~EQ@2VYS?Od59g|Hbp&e?Ns!K7EHzjDO$1KIoCA^BAKlHuQ@rCm8GOdbb*zSuo< zk$K{*AdU~U7bF3rs!&qpWCDa*|^Fu z5FNtxcFwMNclI(IJY}cGk2$JpS>CG4LEXH`V0`X^S}wONyZuk^*`3pg;V>9FoX$)X zGOnFF=<9s$`+sIDdL{g=O5e=6dzS!v_iZdYWPJE$=0~l^peW_+ZRN_+WA~?SyERES z?t|+bCmfEGouxaNJe2YBZo±_5WcGu@0U>*Tz0&w1H+vVp3+ot7L@m3pvO?wK8% zs<-JV!+YbgP0}UyaQNWtE-&|-X&zHMvC`RF#nufMe5tP9>3;BXk!MD|3U4Oz%)x(eBSR;d(~~QM z3D|bfQwR7PZL)QuG0B{MWAU8q9d+D$xiQK*eZ#GA-l=44*E5NU-p;mP%EO zx4co7dE(9PIq6_}zUI#4{u__i)SR5|ec1-YQ=Tc}Za%lOT@Tu%O~RPNE5*6^u&CQT zrOD{ko+!F&f}Y_dnZ|u$bUT?%5dR6Nb0@^eRkpl1R(PNQ zYhM%elLhW(qTA6tl{4F)&S*OEv>%pCD_!inQB5M6ZZ+KQ3lmjZIZpM*?R3@&jVEYK zyw5Xta8q)$^2S{qou^s$`$i9Ad!31OB&Zsvw6Z{F(%j6Aoyz{fa8&g8opt`~wYO1w zCb!iUw@>G;COZM2E{2@zY`gB+)bo~o=cvlLy(#r~h*R^p{pXn4&CL#jx6O$=Q_Bs% anR(agRW&-f=HPN}lCw#BS5tm<>-QfspKZ7R literal 0 HcmV?d00001 diff --git a/data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00006.tif b/data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00006.tif new file mode 100644 index 0000000000000000000000000000000000000000..4819bb905f4ed3924ad789faf57812b929f99750 GIT binary patch literal 7322 zcmaKoL2?vP3`2VeMZyj?u*rfoXW#<45~pXJH?O4syGfJ&*l9cGkYanoVkQ!Q2iR|-hJzWr9(4wI<_+hqw~v- z)Q#!u-npy4T;4oe6jNJ^H+yt4)G+T}t;3rH?G4g?B5PeWNpWUz34VN0?1`8g6}iIN z&AYyN`1bCmg4;3oo_I$;!nqH=Wym`uv5VcN}HG33G5*)@a4me#Af( zx0%fjdUgxj4h`B?>4ry7I}(R0)+9nfHU+#|!|2nAMH;u2F zOme2GpR3dRwUU&L+orvlvxGmD}*V4MUYRS9DOB8P3f9;pw+;cE9i4 zrP5{gwil`R46B*C?=>0eMx{=_p4G=6KJ(7pXVqutGc(AVNG)E&;@|w)w?okVcTv|) z@%H!V8)53|mU$*Obh+u=dlK|_-A0YG_w`cQS=DrwerdS6>Alx5xi>Ds>_xqsnv`}^ zy>iv{PG7QT(hF`T^5{xM8*F8ZpPkyvtytcmTW-ZsRS?+Vz9v}sx=meqVaK&~Dx$L+ zrCwCMMlUPb>|k*%m=5T!zES9(1nJ`F9d;&S??jd9RW5<{Epf8;C6xL^*@&0LaB)ha zLAaVOTCeW)DjVMM(vOH2%cbRU0HbA82eST)TXtx3Sc?N`A|Ry9-CzBziEDQVPP z-(Pj+ZEl>%t73mc^T?XZNgj`+=NcOK)c$%m)otI2zR|v=YHGafK*`$ItT|o7=t~!;i7gK>JUwC-9=U!jU zo^Ez1lc}*mTa(_~Dv$Tf^c%JeA}S7q$A{uKSKTUoY$2T3!(@yLL1QiCfz& He1`K6Ep%!MY5C)$x0rn0yu&xr) z_VerQefsD9?`_RLy?y#`|J(ci)5ko#U)KEl2mjyq{U1yF=g0il*VpUo;=j{gzkd8a zzvs_9ClfE<&%06aQ-u#~XSI84QXG9m=Jsb7*_-36K8@4$#`*NzY18vbLz3z{YaH*& zs}nky@>89gz0YU1!wap87>v=tbKkwyc#D;^edEik0c|+VyrO346K=;V!}RT*S`_tm z15p*P@5+U#cbsz?#^#deIb0d!s&?yJmu?Wen|5b={6&{6{%4GO` zgXN*?RRLq8&ojO@$oHPI9q%&@^Krt*#-l?EUmv>pQcJfJQ!lpfs}9TtbTHjU^iau7 zqO-4*YD4ti2uy-d-xi<_&&Mb~&Bx3|9`@Ty)ynX0>~B*V4~~&7B=@ zIil_1ocI-$qk8TXn{8UjcP@PO^WsmRo#H%fb*JM_lB4RpO`^MQI-9;(Td%jgjp>-@ zpuS+LzwYzVd2asDIGduMPV9Z@a=zK#v1=>aJn?OFYKG}1mD_V;b5S~Obs2K!zPkAK zrU5U%VBaDpE5`0*=98{=Dcsp>yhDBE9o9~dGMV7Ied>YoWWd8+9~pD+ekQ8{ ziv!JmuTMw@STd@88peu0~rwTYhcN=}9*!CW@bTnM``Nr|Il-a@Gq~ zoY~8!Lw+LS8z~Df{q-XU#Wj;0x44&Kst&$!mN#hbrpi_8%|3Z)1A&cy$#Cv zxWYXZX+qoC0H71q@y+*BIiTc+!lv9%Zekd#=A8Y?W9J)x-E<&hnDRj2 z?Y&HV^yWsbW-~;dKUBXK%CO!^G_= zgFYdntcNrDb02e0o0DrP=X7WDCH0L@ii&RbHEq%bPn^)Hb_Y|ZacCZnP9fsnrgp0u zhTC#X-uE>%6<)mYb7MQX-lgK|p1e-o+T@7l*~zY=-rL6=_qe&)ZA4M(3tMb%)%3%` N{mIj*Tf7aE=XdeAZN~rr literal 0 HcmV?d00001 diff --git a/data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00008.tif b/data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00008.tif new file mode 100644 index 0000000000000000000000000000000000000000..f0aaf10f567e4843ad9674f66f7798ecf3289673 GIT binary patch literal 7322 zcmaKnOLEje5JWYY0DA`;*m%L3GjIW4iPJMR&o45&B^(N=tF!W_x3}NN^Kl$6$8r07 z-0st#`+KYT)9vYjf4k#P@AL4!)cpOO|M!mnDDBVp`Pb`lycYjXJH9@i=ll2h{>&F7 z-@$p}%Gb_HFe(%h9dfdmi0z8k!cdT_6rhqruK23 zQ$No3U}r98-$o(oB-XyBsD(qb!FDcQVVymrRX-e@WalojCe7a0253}zuG?1m*ETk3 zSBj%u{o*0MpZu*Tw_t zodmg~;ND91X6f2GRoUsNk9SVdvxiP$sH8=3?lx9OgVAI{lPspyuY0*)8F67U0hao{ z4aReY;$rXf*?-pmV!L2wbPDcn)^l#;*`d93kr5|1vboa-&um2H&_EWqIHPNBW?1^Q z!@gNLY|pu}NXS0j*EUH(>3vwvGx4l{#=iZMr#3#>p*U|$Y^F0iZ)PTC-OSBhw7fQLC>TzY5fxK5=T7>yCaSpYSl^@VKkOd1#c%j)=eeD;;v05Y@zPzF+3=8LlhtL_ zhYzkNcsn$Lqg&7J4VJ%4hjgR&)qT|B<|gHw9yW<;z~|=V8ElYbq2KTNp;C+P<)M}l zy_vf^-lpnkVsM<=rM-+2U-QGxKceB+pZR z8t?pWXl8riluh_Lnci9M8dK@n98-dIWBYWAcAmYDZRC=MZ&KP(C78bYa7QVlPiMW! zC68USbJrin&W4dpee{@9OfDz?*?u6+XNw0oNtt&I_n_L?2GSsB{X)saGThl+mYGyyOlNrWtHai=Ii`20DP#hp+DH%+FS>CtXZvM;JRY zs6E=%q~68BZM#K1Xfu)lp1tle@K7y!J_m_Q&*R8_MT6~`?XHF%{sWHi^l@ibPQU2) zZ@TGq-36VyNt8bmE_AXldoX9tRiRqPcsa@7Zg%*MsBvo>GDX)O`1cpy&c4ctQ)_1K O4fhoZhvak9!T$jrDQ#>3 literal 0 HcmV?d00001 diff --git a/data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00009.tif b/data/data20250715_alignment_tests/20250715_170343_repeatibility_0/im_00009.tif new file mode 100644 index 0000000000000000000000000000000000000000..5f825a05aed8c1266127876c0db76f2a43ec6f12 GIT binary patch literal 7322 zcmaKoL6Q_n3Yxczwiz101mmv_JWpC0{pZ}-vtTlddz`k#;fm-7DqcK`PEy1thFA$z2Lxc>Y7 zos-*qz0aKAsoEMmO>5WCq{5LOU%aj04huz`Qk`bPn_!2)Too=DCX!%|T$N5G#FY&G zD^fk}N?<>#(`&c;@r5*VH2J32GxqIoDEBlNZXO~jqt6d!YPkLVlcGIy58WHdR8l&SN%ps5r>co39e0`zjK7oO99=3BtwZZgoRS$o>Q=H#C}{PY>j}@-`Htp=w7VgY z&V% z+;s0FQ)2I*yD4G$8huVw>NRcV{Jh;KdSrL47q@A?={egZIoqpe&Q`*vci!DXM|{%Q zNG5YteR{w9@apu1Tklk@)2O3xMpE{hH_S|B?o6E0S4E=V_QYid9(Oc9wF&N^qO+Xc zlT@S7GfZ=HBNK@%}wP^T-QH9F}@k0Lp^`5%Ny9SVeS z^y8o!dg|^mF$1b!&(_b~zr0|2QMHe*j%;Zz48P9Ro8a6tRI{ASxp$$)p~@W8cDEM_ z%D8(oyPnOFgTb!*}MCNQ9?CySm9DRW1pUHqPoq%wRe}X ziO_VrS8L~P?c9zDXzr}^bwCE>|CR4Y|g`{wRXYU`eP>G_R2w`Nj?Q4N*FAKpWCx~b$t78} zXEt!2NoGxeZ%QYO(;BZ8lXGM1xX9@ZQ1(rll%(kQJ#sir&pS7Py|P90~aZ#fA&MY5Txy^RCU^G;?VlY%d9m2;9eMCX}imN_0a*bXQ7 z{nGWz=~kwzCB-RSs!SxDeOT<(+iePNdbz97C#(CYqd4>Pzv6~h0{^L9^{#W*F{gUY zQ)wNg4k;*l6BIa5k!SL*Ispaq?RQI4nfA`npIUSE_D*EE1E-|DjW3iQC;I-H6paaX bJkLZZ@`g4GICrnZaxUpqhaX7DhLe93w1WP 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

gKVMa8>=!$kzMf>Z7i?m|V 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 T-&Dd-g1m4D6O*i(9OQoh$0y?1 literal 0 HcmV?d00001 diff --git a/notebooks/sample.ipynb b/notebooks/sample.ipynb index 5871a3c..32715c5 100644 --- a/notebooks/sample.ipynb +++ b/notebooks/sample.ipynb @@ -38,6 +38,11 @@ "- Motor properties\n", "- Humidity\n", "- enc resolution\n", + "## Measurement tests\n", + "### unidirectional repetabillity\n", + "### bidirectional repetability\n", + "### thermal expansion\n", + "### relative distance accuracy\n", "\n" ], "id": "ac98fcd46a8e41f9", @@ -53,8 +58,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-07-15T07:13:05.822677Z", - "start_time": "2025-07-15T07:13:05.801198Z" + "end_time": "2025-07-15T15:21:34.553058Z", + "start_time": "2025-07-15T15:21:34.403724Z" } }, "cell_type": "code", @@ -178,18 +183,27 @@ "output_type": "stream", "text": [ "Path exists: C:\\Users\\berti_r\\Python_Projects\\StagePerformaceDocu\\Scripts\n", - "Path exists: C:\\Users\\berti_r\\Python_Projects\\StagePerformaceDocu\\Config\\config.json\n" + "Path exists: C:\\Users\\berti_r\\Python_Projects\\StagePerformaceDocu\\Config\\config.json\n", + "Path exists: C:\\Users\\berti_r\\Python_Projects\\templates\\motion_libs\n", + "Path exists: C:\\Users\\berti_r\\Python_Projects\\StagePerformaceDocu\\Config\\measurement.json\n", + "Constructor for PLC\n", + "Connect to PLC\n", + "is_open()=True\n", + "get_local_address()=None\n", + "read_device_info()=('Plc30 App', )\n", + "GVL_APP.nAXIS_NUM=3\n", + "Constructor for axis\n" ] }, { "data": { "text/plain": [ - "BoundedIntText(value=5, description='Nr of cycles:', max=1000, min=1)" + "BoundedIntText(value=2, description='Nr of cycles:', max=1000, min=1)" ], "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "931ffe1c6a4c4fe1af39442aafcd5a6d" + "model_id": "3b0d5b4ffb8e49818c298b9f4aa88c9a" } }, "metadata": {}, @@ -203,7 +217,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "49d711d81ca94028bd6c60a4ab0d22fa" + "model_id": "e6a7e81d76c54669996f666432736c9a" } }, "metadata": {}, @@ -217,7 +231,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "39198dfeeaa243cba9d410027dffe994" + "model_id": "e984d8a357044a279564d1bf46272beb" } }, "metadata": {}, @@ -231,14 +245,21 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "24e25cd7cc814f898ca4503bca9184f1" + "model_id": "841448ed4ad34367b522a923213d4d23" } }, "metadata": {}, "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "BIG TODO: ADD dropdown menue for choosing which test to run\n" + ] } ], - "execution_count": 5 + "execution_count": 1 }, { "metadata": {}, @@ -249,16 +270,100 @@ { "metadata": {}, "cell_type": "code", + "source": [ + "axis_path = r\"C:\\Users\\berti_r\\Python_Projects\\StagePerformaceDocu\\data\\data20250715_alignment_tests\\20250715_170343_repeatibility_0\"\n", + "axis_data_file_path = myu.find_newest_dat_file(axis_path)\n", + "print(axis_data_file_path)\n", + "mf.analyze_repeatability(axis_data_file_path,1.1)\n" + ], + "id": "35424a827215f084", "outputs": [], - "execution_count": null, - "source": "", - "id": "35424a827215f084" + "execution_count": null + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "## Temperature time plot\n", + "id": "ffd60bd1525f3b15" }, { "metadata": {}, "cell_type": "code", "source": [ - "# Live update function\n", + "data_folder = r'C:\\Users\\berti_r\\Python_Projects\\StagePerformaceDocu\\data\\Temp'\n", + "%matplotlib widget\n", + "from matplotlib.widgets import Cursor\n", + "import matplotlib.dates as mdates\n", + "# Load the newest file\n", + "\n", + "# Load file\n", + "file_path = myu.find_newest_dat_file(data_folder)\n", + "times, temps = myu.load_data(file_path)\n", + "\n", + "# Initial plot range setup\n", + "initial_xlim = (mdates.date2num(times[0]), mdates.date2num(times[-1]))\n", + "colors = ['red', 'green', 'blue', 'orange', 'purple']\n", + "labels = [f\"Temp {i+1}\" for i in range(5)]\n", + "\n", + "# Setup plot\n", + "fig, ax = plt.subplots(figsize=(10, 5))\n", + "lines = []\n", + "\n", + "# Plot initial downsampled data\n", + "def plot_initial():\n", + " ind_min, ind_max = 0, len(times)\n", + " step = max((ind_max - ind_min) // 1000, 1)\n", + "\n", + " for i in range(5):\n", + " line, = ax.plot(times[ind_min:ind_max:step],\n", + " temps[i][ind_min:ind_max:step],\n", + " label=labels[i], color=colors[i])\n", + " lines.append(line)\n", + "\n", + " ax.set_title(\"Temperature Over Time\")\n", + " ax.set_xlabel(\"Time\")\n", + " ax.set_ylabel(\"Temperature (°C)\")\n", + " ax.legend()\n", + " ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M:%S'))\n", + " ax.set_xlim(initial_xlim)\n", + " ax.relim()\n", + " ax.autoscale_view()\n", + "\n", + "# Update on zoom/pan\n", + "def update_plot(event=None):\n", + " xlim = ax.get_xlim()\n", + " t_nums = mdates.date2num(times)\n", + " ind_min, ind_max = np.searchsorted(t_nums, xlim)\n", + " ind_max = min(len(times), ind_max)\n", + " step = max((ind_max - ind_min) // 1000, 1)\n", + "\n", + " for line, temp_data in zip(lines, temps):\n", + " line.set_data(times[ind_min:ind_max:step], temp_data[ind_min:ind_max:step])\n", + "\n", + " ax.relim()\n", + " ax.autoscale_view()\n", + " fig.canvas.draw_idle()\n", + "\n", + "# Hook zoom & pan events\n", + "fig.canvas.mpl_connect('button_release_event', update_plot)\n", + "fig.canvas.mpl_connect('scroll_event', update_plot)\n", + "fig.canvas.mpl_connect('motion_notify_event', update_plot)\n", + "\n", + "# Run\n", + "plot_initial()\n", + "update_plot()\n", + "plt.tight_layout()\n", + "fig.canvas.draw_idle()" + ], + "id": "6b1735e5aee89bc6", + "outputs": [], + "execution_count": null + }, + { + "metadata": {}, + "cell_type": "code", + "source": [ + "~~~~# Live update function\n", "def load_recent_data():\n", "\n", " return 0\n", @@ -337,35 +442,22 @@ "execution_count": null }, { - "metadata": { - "ExecuteTime": { - "end_time": "2025-07-15T07:22:40.123332Z", - "start_time": "2025-07-15T07:22:40.118923Z" - } - }, + "metadata": {}, "cell_type": "code", "source": [ "x_coordinates_json = myu.load_object(r\"C:\\Users\\berti_r\\Python_Projects\\StagePerformaceDocu\\Config\\measurement.json\")\n", - "x_coordinates = x_coordinates_json.get('backlsh_meas_mov')\n", + "x_coordinates = x_coordinates_json.get('std_test_mov')\n", + "wait_x_json = myu.load_object(r\"C:\\Users\\berti_r\\Python_Projects\\StagePerformaceDocu\\Config\\measurement.json\")\n", + "wait_x = wait_x_json.get('std_test_wait')\n", "print(x_coordinates)\n", - "for mov in x_coordinates:\n", - " print(mov)" + "print(wait_x)\n", + "for mov,wait in x_coordinates, wait_x:\n", + " print(mov)\n", + " print(wait)" ], "id": "9813d493bd439789", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[10, -10, -10, 10]\n", - "10\n", - "-10\n", - "-10\n", - "10\n" - ] - } - ], - "execution_count": 9 + "outputs": [], + "execution_count": null } ], "metadata": {