From f19312fa423244e1f775aaa84e84da7847f00b4b Mon Sep 17 00:00:00 2001 From: Nathan Zimmerberg <39104088+nhz2@users.noreply.github.com> Date: Tue, 12 Dec 2023 14:06:25 -0500 Subject: [PATCH] loop output (#32) * add optional output * fix version * typo --- Project.toml | 2 +- README.md | 12 ++++++++---- src/run-sim.jl | 14 ++++++++++---- test/example/main.jl | 3 ++- .../output-ref-1_10/a/traj/footer.json | 2 +- .../output-ref-1_10/a/traj/snap1.zarr.zip | Bin 1142 -> 1411 bytes .../output-ref-1_10/a/traj/snap10.zarr.zip | Bin 1143 -> 1414 bytes .../output-ref-1_10/a/traj/snap11.zarr.zip | Bin 1143 -> 1414 bytes .../output-ref-1_10/a/traj/snap2.zarr.zip | Bin 1142 -> 1411 bytes .../output-ref-1_10/a/traj/snap3.zarr.zip | Bin 1142 -> 1411 bytes .../output-ref-1_10/a/traj/snap4.zarr.zip | Bin 1142 -> 1411 bytes .../output-ref-1_10/a/traj/snap5.zarr.zip | Bin 1142 -> 1412 bytes .../output-ref-1_10/a/traj/snap6.zarr.zip | Bin 1142 -> 1412 bytes .../output-ref-1_10/a/traj/snap7.zarr.zip | Bin 1142 -> 1412 bytes .../output-ref-1_10/a/traj/snap8.zarr.zip | Bin 1142 -> 1412 bytes .../output-ref-1_10/a/traj/snap9.zarr.zip | Bin 1142 -> 1412 bytes .../example/output-ref-1_9/a/traj/footer.json | 2 +- .../output-ref-1_9/a/traj/snap1.zarr.zip | Bin 1123 -> 1392 bytes .../output-ref-1_9/a/traj/snap10.zarr.zip | Bin 1124 -> 1395 bytes .../output-ref-1_9/a/traj/snap11.zarr.zip | Bin 1124 -> 1395 bytes .../output-ref-1_9/a/traj/snap2.zarr.zip | Bin 1123 -> 1392 bytes .../output-ref-1_9/a/traj/snap3.zarr.zip | Bin 1123 -> 1392 bytes .../output-ref-1_9/a/traj/snap4.zarr.zip | Bin 1123 -> 1392 bytes .../output-ref-1_9/a/traj/snap5.zarr.zip | Bin 1123 -> 1393 bytes .../output-ref-1_9/a/traj/snap6.zarr.zip | Bin 1123 -> 1393 bytes .../output-ref-1_9/a/traj/snap7.zarr.zip | Bin 1123 -> 1393 bytes .../output-ref-1_9/a/traj/snap8.zarr.zip | Bin 1123 -> 1393 bytes .../output-ref-1_9/a/traj/snap9.zarr.zip | Bin 1123 -> 1393 bytes 28 files changed, 23 insertions(+), 12 deletions(-) diff --git a/Project.toml b/Project.toml index e13a077..c23f192 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "MEDYANSimRunner" uuid = "b58a3b99-22e3-44d1-b5ea-258f082a6fe8" authors = ["nhz2 "] -version = "0.5.2" +version = "0.5.3" [deps] ArgCheck = "dce04be8-c92d-5529-be00-80e4d2c0e197" diff --git a/README.md b/README.md index b5af1ab..ebae1f3 100644 --- a/README.md +++ b/README.md @@ -81,8 +81,11 @@ Also return the expected value of step when done will first be true, used for di This function should not mutate `state` -#### `loop(step::Int, state; kwargs...) -> state` -Return the state that gets passed to `save` +#### `loop(step::Int, state; output::SmallZarrGroups.ZGroup, kwargs...) -> state` +Return the state that gets passed to `save` and `load` + +Optionally, mutate the `output` keyword argument. +When saving the snapshot, this group will get saved as `"out"` ### Main loop pseudo code @@ -99,9 +102,10 @@ group = ZGroup(childern=Dict("snap" => save(step, state)) SmallZarrGroups.save_zip(snapshot_zip_file, group) state = load(step, SmallZarrGroups.load_zip(snapshot_zip_file)["snap"], state) while true - state = loop(step, state) + output = ZGroup() + state = loop(step, state; output) step = step + 1 - group = ZGroup(childern=Dict("snap" => save(step, state)) + group = ZGroup(childern=Dict("snap"=>save(step, state), "out"=>output) SmallZarrGroups.save_zip(snapshot_zip_file, group) state = load(step, SmallZarrGroups.load_zip(snapshot_zip_file)["snap"], state) if done(step::Int, state)[1] diff --git a/src/run-sim.jl b/src/run-sim.jl index 9836bd3..1b906c9 100644 --- a/src/run-sim.jl +++ b/src/run-sim.jl @@ -153,12 +153,13 @@ function start_job(out_dir, job::String; state, prev_sha256 = save_load_state!(rng_state, step, state, traj, save, load, prev_sha256) @info "Simulation started." while true + output = ZGroup() copy!(Random.default_rng(), rng_state) - state = loop(step, state) + state = loop(step, state; output) copy!(rng_state, Random.default_rng()) step += 1 - state, prev_sha256 = save_load_state!(rng_state, step, state, traj, save, load, prev_sha256) + state, prev_sha256 = save_load_state!(rng_state, step, state, traj, save, load, prev_sha256, output) copy!(Random.default_rng(), rng_state) isdone::Bool, expected_final_step::Int64 = done(step::Int, state) @@ -259,12 +260,13 @@ function continue_job(out_dir, job; end end while true + output = ZGroup() copy!(Random.default_rng(), rng_state) - state = loop(step, state) + state = loop(step, state; output) copy!(rng_state, Random.default_rng()) step += 1 - state, prev_sha256 = save_load_state!(rng_state, step, state, traj, save, load, prev_sha256) + state, prev_sha256 = save_load_state!(rng_state, step, state, traj, save, load, prev_sha256, output) copy!(Random.default_rng(), rng_state) isdone, expected_final_step = done(step::Int, state) @@ -291,6 +293,7 @@ function save_load_state!( save, load, prev_sha256::String, + output::Union{Nothing, ZGroup}=nothing, ) snapshot_group = ZGroup() @@ -299,6 +302,9 @@ function save_load_state!( copy!(rng_state, Random.default_rng()) snapshot_group["snap"] = sub_snapshot_group + if !isnothing(output) + snapshot_group["out"] = output + end attrs(snapshot_group)["rng_state"] = rng_2_str(rng_state) attrs(snapshot_group)["step"] = step attrs(snapshot_group)["prev_sha256"] = prev_sha256 diff --git a/test/example/main.jl b/test/example/main.jl index 20186f0..36dc2d5 100644 --- a/test/example/main.jl +++ b/test/example/main.jl @@ -44,10 +44,11 @@ function done(step::Int, state; kwargs...) step > 10, 11 end -function loop(step::Int, state; kwargs...) +function loop(step::Int, state; output::ZGroup, kwargs...) a = sum(state) + rand(0:1) state[1] = state[2] state[2] = a + attrs(output)["sum"] = sum(state) state end diff --git a/test/example/output-ref-1_10/a/traj/footer.json b/test/example/output-ref-1_10/a/traj/footer.json index 0d4ee78..ed56d92 100644 --- a/test/example/output-ref-1_10/a/traj/footer.json +++ b/test/example/output-ref-1_10/a/traj/footer.json @@ -1,4 +1,4 @@ { "steps": 11, - "prev_sha256": "22fa73eaa3944debf0d26bb9d9cebcecc5f3047a5ffed0c42e622003e562c71c" + "prev_sha256": "858a821e8b5c67b9c55e77064443bea55cf8be8d06fa745f21433e0664992966" } \ No newline at end of file diff --git a/test/example/output-ref-1_10/a/traj/snap1.zarr.zip b/test/example/output-ref-1_10/a/traj/snap1.zarr.zip index 7a4e4e72e863445162524cc45eefe84135a88767..f0ba6725837ae049a20301e03cfa1b28d55c8eb9 100644 GIT binary patch delta 197 zcmeyy(agP}k&%O&L4+Z{v_yZRoRzeM#;gef3=9k)3=`L@N-QZUDxN%%QIwxc0SJ_e zOLLX16pXlPCrE8>WOQW`;|3~+fhCRUj0|7{C+9JXYoeM6Q^dfqq;V@$8O(eKW|_&y wnE5!Fm>3v}^AZd6LHZ|uVU}VFWST6%V#&B+vKNaSA3Fm(!z7^A+sq)t0IRtv-2eap delta 61 zcmZqX{>HJPk#VyOlPi+|4+8=$X-sFF{FudpX&d8YSyoF%(aGVga(t`|tPBc_3=9s; GAe8`(;R<*F diff --git a/test/example/output-ref-1_10/a/traj/snap10.zarr.zip b/test/example/output-ref-1_10/a/traj/snap10.zarr.zip index d782a244a9089b92332fd7d0279cbd1e277a902f..26210c84941263f7dfbf458940378f918e2b9004 100644 GIT binary patch delta 271 zcmey)(Z)R?f+Z#MNz}xclg^fwmWfHGW=5$NDF(^r=9ZSmDHdi1DF!B%h6YAy=4qw| zX{IJgW=RIg#s(>gNfxOoDaI+OsV0`DNogr2CdNu!wG*T`xEVwk@=HtfC(2ogEP1QR zEX2UT0K#zb3?=U3(p)7g1w#`HkdDnwj4VuGM@;TwwiV+Bs)d0ijTwv#VACe&GmC4Y z8V6Ivz_6ro8&sKIRboj=QSoF)W|_&ynfW+bnHU&~^AZd6LHZ|uWtL(JVVW$+V#&C9 UvNwwyA3Fm(!z7^Ad(0ri0PPAvWdHyG delta 143 zcmZqU{?0KWf@S|XrNoIbC!Gz9Qq7W*3@we)QjJp+Q%p=PjV(=*Oia^~4UAJP3=+*# zQw@_1EmKX64boCAjgn0bEey>P%~Fkw42%rZjE$AJY9~l-mSU*MS*978B_&#>8d;>68l@<4)lQJ&;ARkE$S*C?pD1S~@_S8$ zw-5sZ0|>*#GnBZCOLLX16pTy^K{_@!F|sg$9Wl9!*;b4js1^p6G-fa|fK8j6&n&Kq zY8*@v1H+QWZBS);Rf#1fMa7dHnPny)XXfK%Wny3`&Py!N2kD>um05}@glV!MizVac V$=)n-eC!PD43mIb?=gc60|23fL#+S+ delta 143 zcmZqU{?0KWf+c+cr|`s>lg=rLsflLB24=>o$;p8O+q$a1Cq$Q@Mn5U(fCL5YrrX?nt8ki|@)lQJ&;ARkE$S*C?pD1S~t?v{u zQGkJg0fb@VdR2)fB}K)PCo+oib149UQgLanl9hrnNcZMOMiwTpgC=(}+lp}m^})cB z#&kvou*sA2n8h_wjfN>=U|7<)6{-wokpr{Lp%48?hg1^OWUlfN)aF$FSB a7GSYt+%VaTMUIc1ft_IzQ0r}GkYNB?kwr}a delta 142 zcmZqX{>CvOf+cDD+?t6oCmhX9(~^^t42&(!lTFOhERxMF42+YL3{p)j49rpzP0UTr zQrep6U~ziOiU6j%u*~ZjV&#bQ&W_a5IQ7G{Pn5Hgo@;k? zssIB60|>*!^{Ns}N{WgnPh=G3=TZOyrQ*_DB`XC}knYWmj4VuG2Tkr|wiV+B>VttL zjp>XGV3Q~3F^g-W8Vys#z_6roD^wZGA_r!f$;X)aIGLCj7>e@}3-m$yCx2mWAj1GOx<$YM delta 142 zcmZqX{>CvOf@S7mi`f%nPB^!B_|uC8Ji~> zrW&T08Cs^9nxvXprWqSsm>C!tnVOiUn3x+{B&R5CVp3oNn>Ja6#a4ia0RfgYrZY}{ h%woZ`jd8Lpt0kl83Mp1q)1t3r=F3nZ4Qm_E&-rUH@!UT5Eatf7+BJn z&d2~Zd2$}JxF)L6FhvXuOB%OAmBB1>V3wJDjG2#CvOf+aN9|Mz>>yv#>tOa gESR=2PL^f0WE7no&ML>p%D~E?z{tShzzk9e0NJ}EZ~y=R diff --git a/test/example/output-ref-1_10/a/traj/snap5.zarr.zip b/test/example/output-ref-1_10/a/traj/snap5.zarr.zip index 348261d253894aa143b8ba98b83d911db67896fe..53d9afd3c2420a396e1b75ab3d976e640e194b99 100644 GIT binary patch delta 284 zcmeyy(ZW3;f~B$h`R<7^C!CE<5=|0~P11~$%#71g)65esER#$P6BErWQ%%xR5=|2= zQj#rA4APR*Obtv7fZ}GU20&GoMuvuoh9;JYN?f%Qq&T=4L>Tf*OY|qoSxIlIv)(4i zz`y{)Fmb)A#FCPt;>i;kMFqGNfIz9ZG*`(=!O$3_eRCrt3lrEylRKGh#kheQVPHvP zIwJ$v=*fA^;+m*t!xS+vENR>dRR*)kfmvqqF=jqaW+n!P;=IHHeUSdiUznwsf|w=? Zuvju~ob1IS$H&gV&M*n6^$s)0FaW5$M?L@m delta 143 zcmZqS{>CvOf~DH?q29!p6OLvUCaEcgDV9bSCdo#oX@*HgrYRQ225APS$rc7CW|kHv zmX^thsm7`1#+H_*sb(gLN#-fW7A6KsiAkwOrWQ(@8JQHAz{X8hWw90DVL*T-jp>Y& ipRiakZDX7)$7;zaIyr(>j*pdrl|g}#fx&?pq!Iu^lOewV diff --git a/test/example/output-ref-1_10/a/traj/snap6.zarr.zip b/test/example/output-ref-1_10/a/traj/snap6.zarr.zip index 5674d334edcad4f7beb526f12198c3fd6f42e700..1b93d0f88528eeeeede8eeecaa94d4e24054115d 100644 GIT binary patch delta 284 zcmeyy(ZW3;f~D!_l+6=kPB-YCZ(ELm|7$yCz~ZFr&yXAo0=vkrly)1rWjh9 z8yFg-rKK7srV?MW{_b3Pj*Da delta 143 zcmZqS{>CvOf~CDx{J_MR6OM-FDM^W`sb-dGrbcF_hL)z5<_3w$7RHu_$rhHTiRK0t zhRKQMNv38%86#6uBLhQ&>dSAy5DS diff --git a/test/example/output-ref-1_10/a/traj/snap7.zarr.zip b/test/example/output-ref-1_10/a/traj/snap7.zarr.zip index 120a32255ed9da992de70dc32106f1d217e08394..5ad91f59b3bc277a3827adf429119c78f1f03a39 100644 GIT binary patch delta 284 zcmeyy(ZW3;g5|>MJ-;W$oN!JxvNSbHH8wLaPcutNGfpu`vM@_dNlHz!OfxbuF-$Zy zN-;JvO-VF1Ni;VwH@8eQvotg`Pck+&OG>jyF-lhAs+}Ok!ObATkY8G&KT*y~de4Gd zNkIk%1`vjc>s2L|loS&QSCLryb8yQ)cz%H8H$!sge4b%t& zOB&M|8NfzQ&SMtWL^T_xh=E~A<5s9Lm`x7MGLw%n^KmjWF)$S8B^Ky|^iTf6EX5SW cG+BVfl5yi?FBUmIb_RBaNkFZ4m_ddC0HTgZIsgCw delta 143 zcmZqS{>CvOg5_7~F_(!kCmbye4UG-WO^j2`6B82+jZKn`EK?IxQc{wW(o#|lEzHu) zEDaJ35{*n!O;VFmO^i~E%u_8)4K0n$QY=hOEK-y?P!+-!w8q*mk iKVh+8+Qv9pj@6P;baDi%93LwKD}w?f1A_xINF@Lnmm}W* diff --git a/test/example/output-ref-1_10/a/traj/snap8.zarr.zip b/test/example/output-ref-1_10/a/traj/snap8.zarr.zip index a98514882e6eb8eb3b95ed80406489d675f8660a..c4e8573675805410c206db49d2ac39a9da8d682f 100644 GIT binary patch delta 283 zcmeyy(ZW3;f+aU2CU9cRNhdSY)Fgu>GjlV`R8vF46iY*MBy$r3OJhSLqhw3- zWWz+`G$SMPv?NP2i$n`E<5WX469Wr#1G8jPBPFid2~r%~3?dBqr6u|k<*cOnv?tjM zGB7ZJFic#pDzT)bsCe>3Mo|GS1t3r=F3nZ4QZO|GY2Vz)$if76(Bw{LTQP2+Mi^Mq zn9j%mHhOX%v$!Uz*)T;63`-ifLY2X6a$uI3e2kfolbMNup*SzGKp&)k@)u?)rXZ%t a0xXt{8z+0Q$nmi=uro{oYQ4h@G7JEZ;y{rA delta 142 zcmZqS{>CvOf@RM`gQF8;PCA&RrlcgN7#gG|C8n5}7$+KA7$ut-B^oB0Sy&n+rW%-A zCZ;4BnOhnso28lm_n_5^TB^nr-Br0uYWKv)Pn>JaM#a4ia0RfgYrZY}{ h!eYU+jd8LZt0kl8fjMrI>=4 bCJV4wGH#sg#UjVY&cMzv38?iBGsrLi9FIli delta 143 zcmZqS{>CvOg5{w3?_(2VPB{zC8ijrnwzH@m?tNv zrkNV1TBIZz8dw6=nwc4x8XFiH8z&_hCZ!~sBq?oXWKv)P8#h^%#a4ia0RfgYrZY}{ h!eYU+jd8LZt0kl8%YI7c= zE0aGrPyq}qX$)ax02`rKm0pxzS`gsP$fV0G!oa`*QG#kJOdA8klEy_)jgu!Z8#2D1 ie2CeS$&P9AUuH|jxs%OVh-_m?Mb* delta 75 zcmeys^_XKr9^+FD=oZC}$sabCs+V3{5ORIyUDsvM_-iF}a-C)}I@w76z6yhB7jMP1CDNFUl`1 z2=HcP(q$H5VBml#LA3y;je%iF<6@}B$rG6k89z-v%xuZz$TayMvnBHaCWgrhOd^y0 TSUC9D8Q2*n0ac!62I&O=fE7R# delta 142 zcmey&^@L+W1dEVg&!&kn+Z+u{(=3ycObkpD6BAR76D?Abl2VK<4b#jFEKMy94UCda zjZ>4-3=LCLOwAHg43m?MO$|+x(o#(<6D`tAjm(uce_&K#0vk73gvFMhhXDbWG=@&T h#A3;`gmE%2t0g1zWOr6MK2`=+1_ee220dnwLIBF+BP0L- diff --git a/test/example/output-ref-1_9/a/traj/snap11.zarr.zip b/test/example/output-ref-1_9/a/traj/snap11.zarr.zip index 34b79c7406d81632852212650d26d149764789bd..77ce92ace0225280fd5441a76a3b35fc546db4fb 100644 GIT binary patch delta 272 zcmaFD@tJEv1WW&+r0)}BwmF+yrWq%hCYz@v8kt&}nOhiHSQ=ZTCL5Tiq?%h88m1;2 zrkSN07$hdA85tWH0Qm-%MyV;5hKZ>u2BxOTsY+b66Qnq}8AKTJOH1@8%2|p0UK8Oh z#K6D+!f^2nCGO(VTqP?7BNIcAj?MXuEKFcWOfF}(_2&kvg@GlFp^OY*)AXv+i}Fhg z0=yZSbeTmM7&stGP%VIIV_;a)xEQK&@ zlT4CL4J{0e4Na0w%uNg}Qq0Ya4Goika+Zmvsgna4WjVMRL>Tf*OY|qoS&8U7MNAZ6 zU|;}YxOj#VXK`t+l9hrnSM3C;&3TM0OkfvGE@QU!=LV{TfhCP0j0|A2^s3T}@=FT> zycwBvnMD{FI3P+;jfZJtU|7<)2&!@N1ZG3V_mdAXTQb=(P5#Sl$vAhiIg1=0I|Dnz LB%qoT%phF=hdnx( delta 160 zcmeys^_XKq1k1y9DfSa%wmKLXni`u~n3$QFnkOY$S|*wpCR-Sp8yhEE8mFci8yKcp zCL5Ytn3|ZHrzNGOrkEuenOme9C0dvpnVVS{nxsq)WR%^^$;840HgU2bi|ynCEPRY1 zlh3nQGA(AD%*AS{%f!UMP@I=opkG{)Sdv<-uUC~=RFqg5;LXa$00gW+sKCg;pvw&6 F0RZ3RDZ>B& diff --git a/test/example/output-ref-1_9/a/traj/snap3.zarr.zip b/test/example/output-ref-1_9/a/traj/snap3.zarr.zip index f41c5d55e5ae895dc692994c1852955d2dce98b3..e81915ef8cbb287d14496edd2a24285d7e1c371f 100644 GIT binary patch delta 261 zcmaFN@queX1dCVcOxuYuTkR}T%#xFnEfNz`OpGm)fRu5Pk)^p&nt4*Hk(qI-iCLnd zp<$w#sZp|ld6Jn)s(GqKTAHbuxk0L_Nvi2&e@1x@ZUzyC{L&KriE>sVbM3B96<}as z0AaXzh7xCSX|9r$f+<(+1gXt=j4VuG`zMz%+xl|@Rl>lM#t=pZuvvOl=|%aa1p(fS zOuEb>3=A9)C8);3v@tL&X;eWhnOvy?3gD1WwvCTJK3B?j*p#zonaDC J%?W0ZE&w&=J*EHv delta 158 zcmeys^_XKq1dDu!Y}mw@t#$^ch89VdX_l78NvY;$W+|qI1_nR@OA9lDG@z)VsbOle zL1L0YQnIC~S(=%JsgaRkVxpNrswdR2)&%nZy^jVA{(%5rcsh%n@rmgrBEvl2PCmUpfI z0|NsH!^Ja{IEzbjm8=vjxN0XzZO&t4VFEi~av8I&KQ~Y%3@m93VPpWCrB{_+lwVp9 z;LXUS%PhjczyVQ$YCKFE1H+QWMNo~CComf_zMp)E*^Q(~=BK49v_84J;E)4N_8#(o)UMQY}-H4JHRN%5LUlVqpRsI9ZUzcJcuhKE{yA z=UFV77Bf!fVzty|Vq#z@&Py!NFD^+eNiEjbt4b^?N~{dWd`v8 DwXZ3d diff --git a/test/example/output-ref-1_9/a/traj/snap5.zarr.zip b/test/example/output-ref-1_9/a/traj/snap5.zarr.zip index ddd3946615d1185fdc3824a47233a06492dd3a07..35332294336a1b6f776d109be0b26d850ee96876 100644 GIT binary patch delta 264 zcmaFN@sVpn1j{yQp&1inwmMiCn28Cx0~BwD1I zr=+A>m{_Ek0+E@CVXC=_g`ts&fnlc^5j59Sq^Rn5r+KI68(vCRwA3~thWg= zFff2HTs%XGtGF~*$x6Y{n5%Yz)aE=!7ACM0CYLeW`f~%7!oZTo5Jm>DVR}{RMfs%# z0p5&Ey38UB3>*+8sOH18F)%D?Tm;oPc>=Q`ZyNoJ5P0AR~JS^xk5 delta 170 zcmey!^_XKq1k1!eG0}-JTOE=tlgyKiEsWDF(kv4#EiEjPk`jT0QIe&3vZ-lGnvqdr zVzPmOWr~rZnPIZ2VPdMefuV_ksi~Q>z0 z$ro5GnHDon=4Q3jWnyArD9%eP&@V1YEJ-ca*Q-h_DoU&j@MdKL>0t#z1x5x2U1ksu E0Fmq{fdBvi diff --git a/test/example/output-ref-1_9/a/traj/snap6.zarr.zip b/test/example/output-ref-1_9/a/traj/snap6.zarr.zip index dd28fd85f9b83e1da67fba32db9c5828490e76de..dba52d684d32bd9934b1ea1d519393850ec334d9 100644 GIT binary patch delta 264 zcmaFN@sVpn1dF9&(3XiYTOABij4hMRk}b`XQjJa0%#2J742%-ZP0dqH&CM;$4K2)* zQxcO*P1B5wEiEmRjFOGg5)F(ElPptAjFJp2Elnl|GRksrGl($cmzL;Hl(P~sV&z&c z$iTn=!f^2nC9dMqTqP?7BSWs*2~wN$7+ILWPMBQAZ0pYrR0;!28bcTvz=r8nr5ELw z76f=RGU+mlFfedHl%Sdq)5gHCq;U~c delta 170 zcmey!^_XKq1k2tZ{BtM9Y;`b7G)giyF;6i{G&M-IG%zzWvoJ6w2Qmby$#3=GA2i3R$_C5a`e#rk?xiA6<;l>y$YY#=?XK&ZgTz@WOFfY3C>GSN6K&BD~cJUP+Q&@kCD%_K1` z)zru$)za89(a0<*#XQB-%*@c(%+$i%*uo^ubaEi0EC)A(2t$5piT*@6E0H}5Y9$33 z7#KhpE}o&pRa}~@WTjwi!c{v#YI7bV3lrE0lgpTG{kefkVPHvP2qOd7FukhuqWsc= z0B=SnU1kvm1`dc4RP$ll7#Nl`E`n;DJb~Ge@x$ap%$7{{Oq2gITQbg@Y|bLb$Iigc MFbSyUBr`}C0D;*)%>V!Z delta 170 zcmey!^_XKq1k3U5Ke#5wY;`a*F-}V~O-xNQHZe;vOHNKqHaE90vrJAjGB!0cFi18@ zF*2|)PD)HNPE0XKGD%EIO*Jw~wn(!`wX{r3vNV_+$SAv+i;0B^Y~o}g7F&KE1_W5r z7&7?+izU-y#>w2Qmby$#3=GA2i3R$_C5a`e#rk?xiA6<;l>y$YY#=?XK&ZgTz@W5% z0|NsH!^Ja{xQa`2m8=v@&A4hONNvtzWMKk3VR9L>tv@$VDGV%W3}Ivd8>Uy4UX)*2 z5a7+oq{}SAz`y}ff@(fY8w10V#zjz#lP546GJcqRh}n|Ko@w%5W=qC-lg(M=_}CfP N872YMoMZ;+0szlAJ!b#_ delta 170 zcmey!^_XKq1k2tww@njcwmPI(m?tM&7#kXxCmE!e8k?k;TBca085tQFo1~hgrJAQ1 zT9_N8SXi2;CL5b4npj$z8>O0=CZ#2&nV6ZRrWs8RWR%^^#l*q{HgU2Li!DD70|G2* z44Hg^#gb_;<794DOI;==28QCi!~*@|lEjkKVtu`;#G<0a$^dUxHjo}xAXH#vV9;d- F@c?sgDyRSe diff --git a/test/example/output-ref-1_9/a/traj/snap9.zarr.zip b/test/example/output-ref-1_9/a/traj/snap9.zarr.zip index d10bfa46e06bab55235020ac5eb92cb33af335e7..a4abc62edbc0a3049d2822fe9887894ca69c0fff 100644 GIT binary patch delta 264 zcmaFN@sVpn1PkNM=aVMJY;{OBHBUCSFg7(XFfvOswJ%Us|F+QO-)lxQV+! zkb!{#gyG^DN?gUIxk^?FmWEul6QnlhF|sg$oiMqK+18&Ms1yd4G=?xTfDO~DN-xSU zEeP;tWYT38VPN2ZC_yzJrj3DNN#i1@#>o?y4H-X7KE!OvWY0ADFS8}%yvgP)a(wIz O>)lvo+y&B_MS!wQ57j0_CA%pe{B DPmwAd