From 35c26427e802b132b98979ce143dd7c3f5e5a9d6 Mon Sep 17 00:00:00 2001 From: Matteo Becchi Date: Thu, 6 Feb 2025 12:02:47 +0100 Subject: [PATCH] Added pytest for analysis.time_correlation --- tests/analysis/tcorr/c_corr.npy | Bin 0 -> 928 bytes tests/analysis/tcorr/ctd_dev.npy | Bin 0 -> 928 bytes tests/analysis/tcorr/std_dev.npy | Bin 0 -> 928 bytes tests/analysis/tcorr/t_corr.npy | Bin 0 -> 928 bytes tests/analysis/test_time_correlations.py | 60 +++++++++++++++++++++++ tests/onion/output_multi/labels.npy | Bin 4128 -> 4128 bytes 6 files changed, 60 insertions(+) create mode 100644 tests/analysis/tcorr/c_corr.npy create mode 100644 tests/analysis/tcorr/ctd_dev.npy create mode 100644 tests/analysis/tcorr/std_dev.npy create mode 100644 tests/analysis/tcorr/t_corr.npy create mode 100644 tests/analysis/test_time_correlations.py diff --git a/tests/analysis/tcorr/c_corr.npy b/tests/analysis/tcorr/c_corr.npy new file mode 100644 index 0000000000000000000000000000000000000000..0ba1ea3c3adca4ea030b057b3f1c935f0f071136 GIT binary patch literal 928 zcmbWr{ZrEg9KdnFA)&M|6s{6)C&dis*nm6c81fMsXj{Xvh)vnpzI#H04L0_G<6+Bl z2RbE?=va5$@(eN|F5vRI*zrNJ5l`)OmS`-p1SV>C5!35B&HjbnzrA1Q1f}mBl0-(B zBWzTa+Nd;8*%T^A!=lnCRE^$HXHe)W^ahpsKQB~N8P(6-SgEK{KmT1!27~q{jnYW@ z-)-t|_OZ#tQRw>Tx_RtwB@~FKt#{;=P@H6ZIpK~Lx?%bxN2G-q&*tDqJ`JR8w0fN^ z4FndnuDM<{_?U^cN!!!_`8R}4hYFSr1AotkltB9G>r}l!3D%~Ay3|1ewm$30eEUTL ze5cao8;>eLo&ud^SLMJQIzN_|EQh{=HH&gd1_8wjzi>LFFw!Qr1z6>fxM{<^W)t`)d<2a6$C zy?5^QGklmNEjIQs55g^i)}J%O1;t5I$IWB;AhxWpQWEw-XE%F6FU^L}mb{2f4A6Kj z{jQP}*gRLhdZ8p5mI?>c&$VsA+bLMEK%ydP$hnp`oPlL@?l;$$_hN3*MZtJG;BV9O zg&))2Li-ylnvQElSkYyOm&kcI+|Es$N-D;)?iKw_gAgSbo~&mPBJ>aMiKI(Pk>2`1 zFOZetRNBa-P%FWE^$z|1>LZw$`GYdbBE^TPo;?ENUrdA^!*?Hh`^J{ged&zk~H&BO{3u1cP*e1*yU(|V~ zO!&%5{M~V>84WPVNe-JaR_49z>at*bsHZxgW5vdc{=itsijPB{-ye3@V@e^9D&ihT z;lk-XMEE#TY{dFs=WWQJ**eg{Z@|_s;(v+?H=vwh>>TZBM6aIgPUbfueP?v`_fMN} zjm|h-@NF~pw`{pGn`6fYZcG)g-Hx)6ob9rEb}Sv8_xG|Ln9LBzk-Ho?y8UPO=OG75 MYrM->i$1`A0S646cmMzZ literal 0 HcmV?d00001 diff --git a/tests/analysis/tcorr/ctd_dev.npy b/tests/analysis/tcorr/ctd_dev.npy new file mode 100644 index 0000000000000000000000000000000000000000..ed4c3f452ebf726514830894697626e7cb5aee9a GIT binary patch literal 928 zcmbWz{ZrEg0LSqSdD;Vv4PEF1i64@5Uw!}CJ$pQPa!%( zqwqp=B&p<4jU^(p=rB1I?Ruoq1iq!vknzF1~z2(&xBP%^z-$J{g!W-U@=Nr#t)g$NnMJHd?v;#?|+&R!^GML9>*&V2KGjY-pFWTAU#g= z$5JW-q1|b!&Luj2&K<#x3v{$8d|I3WI$rxJX1M1v4c{O9Jv&`M1FrKPPc#Oiy_4go zoezMy1f8Pf0Hk$9%92j`!$h0>d)nrQk%cd#?GJnrQ!0`9^L^nbpr?P9wGEoKs4hyA z54_(E$}f&m5qd(Inm=yxddQvUG?A|38>A_jXQ>gc zlTFORsde@m8G>&GbD67TcIumFr#sx_%#cE_-0LQv=6s|wv)yF9W%2G5%}u5pXkP8} zx=2T`i!*X(NqcZy%`&k;&UCk* zq^xa_vSg<`{09%o3%(Ul|74Tg+%JtcaVfYMJ6UHKprGY)Zpdu|6;4+AkB;L$kj*8Y zDbR1j5p9>r*yamcUdKXGpC3fbJ+ld8{@CNZ8g$`K0Qz#+7V*JEh&0yojp;X&q4;xce1tDoE z9QfCK^)+XdgH~r$;oFBpQLB7?vVS%dc5|Dpy)+D;yd$!D7Q#T;HPU5QZO4tdoBF@p z+fih-YR9U=G5v+3c5x{jxdzY5Y8e-E!;92L7Z-nePZL^A1m3!`;J)(|ZcxbKM-FrWl51C@%n*Ciqp5xw>lt1BPB0e~e5l`Trft6@DL?GMN z?-7?1cqF{^Td{_~<}*jlJ3l6HTd0T?bQ919Pe@|N3G|%Ti!~3oe6~0tiM;~}ug=>t zh6$AZ+DLor#Ux N5+`m^hZqk9_!lXBdB6Yw literal 0 HcmV?d00001 diff --git a/tests/analysis/tcorr/std_dev.npy b/tests/analysis/tcorr/std_dev.npy new file mode 100644 index 0000000000000000000000000000000000000000..91005520a64b214eefdc6a84e8d20740ffa1db57 GIT binary patch literal 928 zcmbWr{ZrEg0LO6c|IB9K^%Sc~?J(X)XH~djIx*)h8cLN;%@}Bz7vI zXY%q-2-o=e_a#Y_5R!<{6*t*bx*ML@S~F z@7{I}SohC*_5jQU5{@Kb0F==~S0?^YVrp=98yJcrr#eiNh_4da^07JNUku-SU^BEp!PsE*c4FeTihDk9q< z9le^nbWMR*dGIx*7e46`rOWI-#QAZ;ndkaJ z;rCRPFDOyv9+CSUV-QOIhSsv0A%snZ)`rgxBi?SyD7c_P&~;g%I#dnnaF^v{qZ&N_ zO4p1}H8|;~Fm-7(@QlmfO7qpC{?A5zT8kFV!`s`bt~yxAkniSVT1I zbCDh`t;Fj6Wj&g$A$B{*fZblYnLT$5m|iK}SQ}!5%W2)+ZRJK3d&X>-up6=8?{nz_ zi-5=6v87)W1m>J|8R0Jo9IAO@dbx*0@(l-G)spy@YdXUmC-L}sY=OW`!fne>YupYJ z#k-;`t3@QdZASvE86-AhjB_WJM1AQsrooGZ^Q+gr^NR%BY8HR+e@H+~5fVEE1k!x( zRUUnZz!T~9Mxzq})q&7dwL1Z)wKKN_!30=2)TSvH0#987X#*4^R>&`!r!7XP_(f(f HCV_teuP&a1 literal 0 HcmV?d00001 diff --git a/tests/analysis/tcorr/t_corr.npy b/tests/analysis/tcorr/t_corr.npy new file mode 100644 index 0000000000000000000000000000000000000000..36606f71b2fc5494181dc30de86d3e3870182896 GIT binary patch literal 928 zcmbWr|5MX-9Ki9 zk^~%q6Gao;-Dnr;0=lBt8yXacIiazp!!I~Mkd5(0zBuNV^(XZB?fI-tO4*ytBM}8e z5nCvdek@@}`mm$2BG>^w>@2b5ghY^+A(jY5|NeNvF{$XymmU=y7rkl!_kx21wgvde zeEv5#;y<(Kx6tjB&$(9bg{;mB6$SM(V)6jQfvKFfj*gd3Gb?PgS!#TRQx zX0)sI2k!NRX=GX$ui{s~K(gLjxu5B$(4SkP4W%2WP=<9_%iKSS3TGuN!4=QZ>GH53 zTGs>`^j}r=TEGI;>`U1mfzy8n)LiW?($_4S~RgU1J$^e&XR zk@jVhNR6%>>e=ZiQy}wFb2dG{3^mBltW{3bLxCYP_x5uYuq>;kE!0l1-J5DyuEb#M z6OXBxy>R5fQo+|Z`$4~XXorn^51M#;-rB++g!F;C=gzDD0yAF{^b11|wvflGaTNym z;3(%>JJ|^DMr1I9ETcmEz?uX_slR0o-yG71fqW2w5vXK<;umLO(Kz?j=0m&c96 zm2To}$@K{+bp)Q8TQdnBsB?Mp)D#H&W0YF!3s4b}n?{6YPf-lfqv2ebxGd9ZvQp2$*L<@^O`c~Bfqc)tW%k7ttH^b-6c ztd`7{MaW!X?kE>7K`gP^Ipe(yisWHmyW zS=ZP$8)VN@0(T2nVFNeZ5W}*=nlcvk>O(tt+>k7gZ@h+z-Zamydx+{qhLk(IXY>Kf}7I#j1nFdZ>n=&TBo7nuuo3EJsseJcg2T!6^z&kSNsoc8M{;f literal 0 HcmV?d00001 diff --git a/tests/analysis/test_time_correlations.py b/tests/analysis/test_time_correlations.py new file mode 100644 index 0000000..63720cb --- /dev/null +++ b/tests/analysis/test_time_correlations.py @@ -0,0 +1,60 @@ +"""Pytest for dynsight.analysis.time_correlations.""" + +import os +import tempfile +from pathlib import Path +from typing import Generator + +import numpy as np +import pytest + +import dynsight + +THRESHOLD = 1e-6 + + +@pytest.fixture +def original_wd() -> Generator[Path, None, None]: + original_dir = Path.cwd() + + # Ensure the original working directory is restored after the test + yield original_dir + + os.chdir(original_dir) + + +# Define the actual test +def test_output_files(original_wd: Path) -> None: + rng = np.random.default_rng(12345) + + # Generate random walks + n_part = 5 + n_frames = 100 + random_walk = np.zeros((n_part, n_frames)) + x_pos = 0.0 + for i in range(n_part): + for j in range(n_frames): + displ = rng.random(1) + x_pos += displ[0] + random_walk[i][j] = x_pos + + with tempfile.TemporaryDirectory() as temp_dir: + os.chdir(temp_dir) + + # Test the self-correlation function + t_corr, std_dev = dynsight.analysis.self_time_correlation(random_walk) + + exp_t_corr = np.load(original_wd / "tests/analysis/tcorr/t_corr.npy") + exp_std_dev = np.load(original_wd / "tests/analysis/tcorr/std_dev.npy") + + assert np.allclose(t_corr, exp_t_corr) + assert np.allclose(std_dev, exp_std_dev) + + # Test the cross-correlation function + t_corr, std_dev = dynsight.analysis.cross_time_correlation(random_walk) + + exp_t_corr = np.load(original_wd / "tests/analysis/tcorr/c_corr.npy") + exp_std_dev = np.load(original_wd / "tests/analysis/tcorr/ctd_dev.npy") + + assert np.allclose(t_corr, exp_t_corr) + assert np.allclose(std_dev, exp_std_dev) diff --git a/tests/onion/output_multi/labels.npy b/tests/onion/output_multi/labels.npy index 53105cbad642a156921ae320b75a104f6234b5b7..86a257491e662a8cd19d8fb0afe48d8eb723eea6 100644 GIT binary patch delta 80 zcmZ3Wus~r02lK=W0+SUO6($=nDu9_R0+Uy8DomcioH1De$~ItWfU+Gne_%Pl2$R_S Ofz1NU*=)h_f*k-32pMt! delta 152 zcmZ3Wus~r02lM0&j0zJkC`_CnF!=$q!Q>BY0$?V)2T+iaW%5U6`N;+>4TdZXsDL1U w^GBBRjFVUeCb0;B3Px#