From cc462013f644b068c72d8a67bc30bbd3383f3210 Mon Sep 17 00:00:00 2001 From: Anna Petrasova Date: Wed, 25 Jun 2025 16:55:09 -0400 Subject: [PATCH 01/11] new tutorial on parallelization and SIMWE --- .../SIMWE_images/basin_030401010402.webp | Bin 0 -> 16036 bytes .../SIMWE_images/basin_030401010402_both.webp | Bin 0 -> 31896 bytes .../basin_030401010402_erdep.webp | Bin 0 -> 21898 bytes .../basin_030401010402_masked.webp | Bin 0 -> 9536 bytes .../SIMWE_images/basin_030401010402_nlcd.webp | Bin 0 -> 16224 bytes .../basin_030401010402_simwe.webp | Bin 0 -> 19376 bytes .../parallelization/SIMWE_images/basins.webp | Bin 0 -> 14518 bytes .../SIMWE_images/river_basins.webp | Bin 0 -> 14804 bytes .../parallelization/SIMWE_parallelization.qmd | 891 ++++++++++++++++++ 9 files changed, 891 insertions(+) create mode 100644 content/tutorials/parallelization/SIMWE_images/basin_030401010402.webp create mode 100644 content/tutorials/parallelization/SIMWE_images/basin_030401010402_both.webp create mode 100644 content/tutorials/parallelization/SIMWE_images/basin_030401010402_erdep.webp create mode 100644 content/tutorials/parallelization/SIMWE_images/basin_030401010402_masked.webp create mode 100644 content/tutorials/parallelization/SIMWE_images/basin_030401010402_nlcd.webp create mode 100644 content/tutorials/parallelization/SIMWE_images/basin_030401010402_simwe.webp create mode 100644 content/tutorials/parallelization/SIMWE_images/basins.webp create mode 100644 content/tutorials/parallelization/SIMWE_images/river_basins.webp create mode 100644 content/tutorials/parallelization/SIMWE_parallelization.qmd diff --git a/content/tutorials/parallelization/SIMWE_images/basin_030401010402.webp b/content/tutorials/parallelization/SIMWE_images/basin_030401010402.webp new file mode 100644 index 0000000000000000000000000000000000000000..e9e07c53b277caea773ba478e93539f728255fe5 GIT binary patch literal 16036 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 literal 0 HcmV?d00001 diff --git a/content/tutorials/parallelization/SIMWE_images/basin_030401010402_both.webp b/content/tutorials/parallelization/SIMWE_images/basin_030401010402_both.webp new file mode 100644 index 0000000000000000000000000000000000000000..b930c1dab598b60b3374f3b2f14fc324ba63adcf GIT binary patch literal 31896 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 jLhONf0AL{CDHi|$0000000000000000000000000Ud^%j literal 0 HcmV?d00001 diff --git a/content/tutorials/parallelization/SIMWE_images/basin_030401010402_erdep.webp b/content/tutorials/parallelization/SIMWE_images/basin_030401010402_erdep.webp new file mode 100644 index 0000000000000000000000000000000000000000..b41efa37ac34f6490e319337f39009bdc76c189f GIT binary patch literal 21898 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 literal 0 HcmV?d00001 diff --git a/content/tutorials/parallelization/SIMWE_images/basin_030401010402_nlcd.webp b/content/tutorials/parallelization/SIMWE_images/basin_030401010402_nlcd.webp new file mode 100644 index 0000000000000000000000000000000000000000..bd429cabfab835fe00f4b5435376b5ad9b041677 GIT binary patch literal 16224 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

5RCL!64i3>NQa6lL zMoC4%-J7Ru=K`Q$aV%)PD@2W6>lmrmJ1xzJh*WvS?ye0m zP-`CIBrJ*9UB!rpGx1&S*bn%ghZ8mWlnnajMG(_zC1B{16Eyo$sY!Sy002gVQEArs z^mv?@G0NNPs_!>(m;fKmMv2_N{Rh>89U*}{DeX(PywYyOd%TLXkPc7sy-z4kqhxu& z6L21-FsEoTz0@Et&&3pSm|$MdeJ)}~ic6I>)mt`35WRs3GLaz4-rxZ6*#?F1X((!; z;YiO%9L-q(mK5VGrq*4-+tBh0!D`B$GpcN3c8s6L7Ej-&RIz~TFKLza93y;51~T-h z-YkT)yVx#e7e)R?+UX079%a93Q0c#S#W&X?*mWLrTZiC&&v>Z5AFfPY>!J*8?)OUNRrXz*K0@l!q zE(k=3k~hmFHKlHJFe)9J83FcPT?DcJ#PUt%|D1d%WYbX>q!}U@shy zEr${IPEu*t%rky5NE?<^h~L7)ltT4&aB8oTkjVROSNKYH*FPtUR=ehfo&Ph+5LAT% z#mSOTcaR>joh}5B8OjNN)jEN(t;|~MjMiKu@BwUrEq{E}YV@S>W zTV&nk!0eKZ5r;p}>pexnJgC-Xwp-G$_Qx`4x0}LOAXrCG!;+0`y5G3j^oyuv82}&R z-$Sm}Ua|z&j8ebOvA!(RRg$Du?vRdBJ;Rw?>G!bM`zpy|`xc~zO{Lf#6-TbV<#hK&(uOgpoF-@ z;LQ#sZch+R*YbUc3Hsi|Se#HeqX%mb5RPg$hsbrOk^48dXzaOmCBROpZvs@_BH+#wD<;S1AU`?$*l=vKQz&a>H?SG##fpzd-*RTN-~D)&X0?w?GL?fA7& zyHDZ4^5~I~-sP*C;l3xuwGpE&ci`x9>UzQ2bYivC&1>kB(~tekD6TNnopK^PT7`yQ zI5e1~4pgweX4Z~WQ$feuY$Yb|<5Q3Fzs7jbtie!<$G<8UQDBE+Hhk9v*ZLJ;+sWn@ z_xjtOExb$k1fOThQPE3wQMyZswJHV1H?S<%(e|qBQI7&Cy*C&3F$flV%=wl81pc!D zdX+AjgtqFRY<9|D@L9fD1Bi4ML-536gNAe`Eqf+}I`z80 zt#;kiKQ>PE;eWU@EhCtMp%=TSn)sof>zmSSg-y{GQkt61~}wmrF4ZL{g}{KuVqsU zO2DF^fr#V%t9@0bC-j&_JT#!q$_{ELeK{RN!iuglszez9rkTmN+UitD^bVz^P3+~G z>Gc<%9)3^htr;EhW#hsM+97*zh(^Pq#y^uWseiQ6rG1aG@cxt8U( z#H^)JShP4IY%ggTa`-$UukpNHBZtv|MyvLSrz=mpy~Rr|h6qn@@d1^cRf2&5D~`ku zJab|2OFGcScgrntG%S=b~|M{vCd2?p28GrLd{ zPK9-zY_M{#Ti>+$r*rnElg%qiMZs#>6bLNo`FGuO-_KwInlNAl5qw-b=`OCYQ1VB1 zIvJvPrJfQ;J=^YE*VT6tXc;$uabsC^Qh>urKwPlHm#VE1omIzhr$<3)|SDj5`r7=UlgBU zsNGU>P)7s$;e%?LBYzJoQ~=E)Nt-%z|BpdlI!fBV8U_g9>FG<3PyO6#Rw&eQ9yGJ1 zjTJi(p_$&eiFT41VcyM`Rd=F|ZxOc4C*dul8{GrH0OuV8jM+dhlmryxx9q}LIAqSE zLT7X~B7GNBzCF-4yg@R=XFfH(b$E`EZ1nStO)2?MHc07%{I%VUkd3E`X(-|6nwZQF z;OlfF*>3Kd+tufRt5@YqJXZ6?dll!7(~lKsX+~m`kia-X@HXEHA)hNzn2dYt`*)0W zz!CyTlVca2H-Hgwa4knvQk95EE4m=!1hVxsB`gRUb8vCUv{Eq%opH3Os}%bXqKgD_ zT{A=WHJ5US8|*WA*1?f-Mi$tK4nU3HYT<5yI0+HE)l*QKqQMr10Tde+7~JOr@Eck6 zrZGsOV|22brcg@SoG_?03hbd-TZE!xGXwbo*I48#1f0ZrEr~bT6-zTJw_seqH$7UX z$LxCPv|GIz-aPDA+`s|hnu59lo~Y9UINfg75{A!Alf8u26G>b1?tiX(y@ZFT!#oA; zs~oKhaPvY$qOIdW`W}D0To&50FYmdAgt~>Lur399Gqb+dl4A4KmW=H*pHGEV?E9XK ziGGjvN~X$lXu^uca02od_{ul*xt)UxuDR*xIM6Sr-X`gxY{EtfO3X~jC8G7~LZaw{ z+s7;br(53L4+H|cI6OB{wEMZwAV*(AL1yB<=mtj%AWSbVSGwH3m%}MEoG7?-6H&AQ@l^vNv4AnO(Ep+u1vW< zEukQH`|Q1@~;oE-I|GEEcDYd&@R|*t%f;64(3s32Ux{ zPSB{xoSs|on--}fMyrK>)YHQ49W?c)c+{~YpT>-8_MU4jv(l=Ii&#v5mO6~u3z;ps zvY=VE#6)*jG`%SBRiqNz3)1)Le()DqS*GLIeT)9^&x0v3Vy zl=pa}_AHmSbcH0|4nF|g_jUVH0(Lr_@ivQyCn2t(y89Mis9{P(x>Y1s5ZZ2D4kj1zU&@2z~P7w3Ei{`}bW!Ds)A= zPQUZZ_o&jI)V_uy3k27y^Ty{tIoXr@FntjcS$puu2kfxy*%rR8;Q|@pz5-DWE##rR zjz5I!R@{F6)+Q;>UFWLo;`9T!geD$ptF)BbmZ}MN73qxF7%bzQkauY&pBHimlGt_4 zcSA?U$G|bb;=a!f^=}IMq3O^puy_J)zqL@WE5z`YV_%KLvN2eZ!WoyU9DQWQiLB5vUV!v-0}j4 zXb`;P)oU^_{u&>!uaXs|&H^jO8vBd~R+DN&_i|V^|0|J8kfs4ox*vQ+V!Y&I(Ys^p z1u=zg8JpZv9v8Kc>X%X?@aw4_>yVGBl)vuyDoOaKC~W&-oNOF@C|y72(_ayT`$;dt zXGhI=y`bnDp)Po4&3f(aGo25W9ax6graZL`G?9aBXqui>R}m3c-}uPYfk!t$8*+LK zVnZ8s`z}a05iNS%z2^?E-B)~eSPvm2zylZ zr|Sa}xd)p73J&b*2) zSM{>Y+BvzKu$oAkM>ULE2plyr8qwjzU?1d_bv{8?wH} zfD8}YnCOSUL|t>)eoIk?3KR67Itx5`fz%f7Bu}%8J=E$rBjxmm+ymrpLKhD8n!LUf zyeH$|lxU;4cpx!+xgT{4eezi|zoO|*N?|Qa5*Fy{II^)v!?jEjm-?V$vx$n&2l%1x zNQIE6QZX&CMaKhV%8_l8O(uD>vu3h>Mp-kQlQC?U-?6|_8!T-91)LI+?v*UFnGI^* zTRgY$0;48*zS?642m+T&N7^&WC?Fe3VmZR+5AK2^BxaE{i@RWygcY4cwPKl!;n>4; zasI6iS{#ex_|%dS&-wQA#ORkH1Fmyd?*9OuII$vwZEkH$!-lD{P_%%5iya{v#Bk@& zD))bES0UTLLZE*PY&tet08o$noaFe6V3S|zBnLm{=&gx%)P8FfV4hwKod}3rL)R!- zCHvv=4{>efct~PAXTLz3xHZ-p)z~?Tqg7!}nx>6-mf*Pjl{T z4y4&SYO#+_3&^2Jy4x9AhNUQQXY;NsUq769_t^4i^>A{t=ZWUc$Jt_G-f){ZI$Epy zaAY5v=_ojV_p;V(3bM)mkyGt4H=!Et9+75$a^!~5tW?EYbe>QnX)BBmw0MgM3rqOF z-{n5^gAMv2=zkL6F3YX_EwGxW&kvbk(c6u|LE5DY_}=(I@-|2PS4~-WWt__Vom#(V zsT~OZv`ftYZTyB=``F>mTWs^1zW!$X{JvfT3)|h|V#8+Fy<4ZlJigjLtr4WNq1S@K z<0-a1p#fodi1D3EEm{w$t_h$2a=pgA>E2xzfb-k#bVv%vOG7E78;PQ8I_Sn_|H)Nj zZ7J2=n@OTK-^f%Jp%3y`mGT(^`eC&$L%JKGZGTXZb^a$-;=Wb+!A{LOoK{^yX#uYF zaF5vJKF~5frV|Q@t%pnZBzdfh1JJ){ed)qjb-Rc3TCOkTZwtn(MBHBXy3MnJty2EE zZw%o_8554cjE?sAYAFFt33O3l&w-P>@@d!b;i@o_$&?%TsMxbq`MLud)!7y`)Lr5T zQF{}MV5)cF-Fr%E{@LH@XrUz~ia4!mmFpE(pciS_6Xu>F^9dWn7c)xIU9MK~s zlLSZ0*0;a4)Y1T@|C(dhuBA)IX<>*mU2BnAhv}R}V#snPh`C$``JhB>T;U0HohJuu zwC7ItRDANpzANuH{?R#O_sXyCzUM2Cw+F6BX$207CQDCsQNm{fz_xC0d*GDEGdv%y zUm@w-1P)$K6fmxVE!!t68sB-y!B({L;W!z7?$3f^IZHCnS=Ny=5}jsIoqkuyF#-9^ z_j9li*}^YCdR z_u--&aLs#w4>Q``|NqPM7)dTFshM1BmJz#F1m~0!2R_y<9^lr}Cdb&utx$CMD(yHf zkGNgf>+lk|H-rgr^lx^`m0}#LtMR)(>V0%lvwv}@|9jR>2X9C}*`OFoi*a_Bm!9yp z{Bfq`iM!}0?uCxd(Q9_roLtRLwPjE@}1?8DGKxs6Xi`I#9+%I#<=W zS{(ENnM72S9`STM#wN#^5o?#G8%@2WOXd&6Y32^k=$5*XA)`Ox)DG=%W*jqZ1&Xu+7QOBs~Wjx0TLwH+xLUJ>;Jr2NmIx1y`j>X6#% zq}}S9{;&n?5G=bQ!>;Zx1pW_kIXb&6hb&=@zVfqSkbZLMUdTSX6JU8qdh-Q#M}SvZ z0g>;F-42H3lbzJYjnAmotyQi(O$J-P-me^0NXoEq?_$>bur}C`V6{pLf_Ay7iddGK zuVRZIgPUFhEJ`zUad0nsNQFDmGD&um5}zPId&Y;WJgae9D*6LS8HJ=mum|}0P|yjF z^oiX}d0JRIz~`NjiyHE`I5~+IK_-Y}E|=AFv*|hpa;A`Qp0}5@U)mOj)Fp3qjDTS>n?k%Csam zq<(aLhyWdgOUU_J9Axy*Iz4(7qkI4L+l3Atz#qq|C{dwqKKL* zT(KL|dzUg&Lw`Mcko}f46=qKJBsnvhi=3oa;fu}-_$swaB;=C}`T8ey zW{Y3Dq3S^2(&W~c2QG)4FE+-WKw_XghX>AOJqSTh??v6h)D`zZ882o5FmVYPva_qn z0S53eh~+kWK9{;JXeKlqI29+8Te$b;kj+?G_X>*Hk3*_3r6OB#ByUl|h!DzCxj_%R?S7 zL(#ltM#jZnxg9O@i&!aE|SwUL&E6xK<*~%+~ry>K#<6wsd5?dDUmBU zVXDiamK5pFB{Y!dqKm^tEj1%B_4NyKZh{WPiQAB#?T+xu5lJ#hkBfW*Jo)al5M?i2 zfT?}85iy90^g)R`H)e%EAKhA^blau30rsR5LsN*utn>OTmF1dUpYq2Fz8`i%^012@ zrYhB+#`35@$lJ@F*0jd_4I2bNKhv1e@3Z7ZY!4_y;q38lfMS#Yq7uAHm)9vlwBMG(7ds#$Ll(lZl!+kK zn6h!7D5px=7oJQXo{{AtP?J6rQ`&DB>85kQ;D5 z)B4H)BE>a9mupXs2FY-EN1%y*8(Rrq!9LnicqFh$RER_PT`EKV5XuGI10kA@J4xAp zIW`3X$+0nWCjl0dz9V+_#3)%|1btTIo+b4s87Y#T|JJobTO#mKu{n*zqzoP)f0)^y zz4UR!0bL@an`Q%y`{w{!oCw@ma|xUeJF_b!LB?dw3&MiGhO7x;8IP#p+};BVGE$KX zH~I`Je{%yqn{tZ3YY*L3Z*9eXybcj*s9)ve*8v8&=ZTEy(sX}D092D`&rv0_ST|Zd zM>fBIbDCGXbOJzCZ9SDcsI1`CO_|B<-i&RULLKEW7}#Ox2~wN9x~n>6;u0Q$sSA=v z4v~9=QtLz&suPb-JATsVBUEY36O{2rU7#E`LGetv-bhl=f6=7h1|%E2l%4%UvElWE zdG6Waww9aInJlsL1>fkc``RQKjS%l>MeykT?RsyFcNm- z`~0F2djp?EDSL4bqr+bEH5A|}Y<34)OcuGYMLbFP-)+eyUB#+-QT~xO%khpk*m=oz ziGvx#@*!+qWt{p&@eILkyzMYg5F70)8hcJOwqDYm5KN0W2rA;}irw_|V|piMsCxx( zwMDvReG%E*04M;aiV{@@4_RwdB>J1`wpYz#V@1Y3a(qR!}IA9OWb z7{4`cE@uk{*alI}aDtyp0Pd-lj=~4%BCNVM3|?2CCs=gj0|$!`69v?km*tO);~mpB zK3?-5-tWj@#a5(oAN*|DCh|HZo<_+H2LmZN-|vc~BVf-jYqlVfAua`uJSOwf^#w9O z7u17U#f7Z<;J_TG50bK0#y}}7{5=u1gp!Z~XYEbX_6}1NT7n7Bf(uG8Khf?H7!Z&L z^7xhS0#^HmMb2mj;mu{QHK+^9+m;UOJRne5>Jm%g&JPAmu+B=l!CANl;^Fd;NxZNv z((H{r@aG6X<3YW!dUcWzaRiEMa`ml}Wl`0bZauwlhy~*>z?g6O&N=@_x`wdLy0TNw zH173&>v&0s7_(jS%Ch9K1jJ?)blPI!Fz->Ch9CVJAdljD6YaR*0E_?t(Hxb5#qJtR zlR?r_v$o9)7eQZtvw89Q{HnD}pNE*v$#;&Yi%tFf0daEQNO_Ow=yxxv!^z1_&@b%I zg%oVsVx!v!Jr#QiSfnMr(eHn$xc(bwRNA-c#j@{+aNA`bR`ZTF-jsG|0(uU2jvPU` zml$?0X*<(^!*4Sn5e2MAhYAn9q8_H7Pi2t;No|qNw&ri=c_E|qY-*|{8St4aBsK6d zJ|+_mfj#6W(Bm2n8vU2iF6oKa$qCyfNWy?|vqT6^l)uhSAMnB~I7Sf@@RWzSO|l;w z)}F-Y-W0taCpHe$SMeT{QH(qCfxu z0ZiD`ilxc|)ax#MRTwF})P3bf@H^}D@(O)Yk7w5v?sFL6xvs~Ppei`DP;gbX8|Fs) ziXX!y*o3QE-=>Ip=Zpo!Ld%wk8C&l%$x>S^1zRW7h~jh zmF;YmTgqE?oLsR?sFtF_e$!&D*0YG+2r}UxCNBnkD1-Z;yM9^2=vJ0b8-MkGfB*q2 z{FD;dw{#9)qkL4SkqAYM+*T$H@>r`%zzOC5FbzS;|q#FQxi z&N5uyqje_Ylx`=F-4_N7Fx%{(RdO#}yo_-sryK{Yde7~se4rSJf^>ixvX*tAIqZzGYr_MOV)gA_9UNNs1&_)^*R! zGShv49=7dgBkN7lHe=f}tFhK*yT`M(ZQHhO+qP}n_V%>fCLNx+t~S44+eLc*j0gvA zBPo(=`KXTh1KeKuTbNa@meovdMeZn_Hrs2Css6}e_0K6RpV-mlF;y?WNd!eu1jP`F zP(=6TT$E;5${{IPa`d^g+n9f;O_SP_W7VA;dbaA8W6xCGN$xy5T9cw)s${h4a9G?l zadVo8sho_98&#IpMjf)CQ4~eVtY+La*|B8inv310C=yH*2`1;FjXI=`+WAsY4LH-2 z7B)q-AXW@b{IlfC&_!#urH6-=9*Us!P|7O9&RDHCiJz2LW6bpOp+xDTJe*;w6h%># zHV%r?#-WSyKpSo`j!70Kahxim9n!|*Yon8R*r+I#VCW$>sx2@mqKlx5*r|(M1oR*o zLJ#tUwU|_xE=nFxa79}2dG-2)HtvBo=-_)fXdx6ChSBO=#74#Q9~d)Gi{VQVioh{z zJSfVkh+QJjHc-SO4;y7OZOj_K?ueo&%Eb#|P?bzt`E6%%YRjt2nB?}l{{MOKahYVB zN&^^n3_EMo9hB&Gq9=y!CuW_0N^aH;AlQDu4}w?Uwn000gSe(@MKtJjc;EZq!nbR*!{0CG(|HRl>$P|G$h z&t8AaPyN19HYl5B#oHfwchUQNe^XW#s;z#B(CH0|_~3J0%m_slT&_lM$I9*Hsq_CRx^o9p8_ zL8G6!@Zz~-&DZX(&pPl7FJ4J0_o+99cs{8`&W&Oy)ba-Q7#pYAr7sTmr}GQM)aH28?2A1dFlQ0AvQ#9$oHTN}mRrtkxL0KJs(%Y>!CM#Z{74^V`WLmkEq_@QdlZO{po z11k2D4sc|MVsK<=FRLBbW;j4_93m)!A}9|7`*I?`670%|{1LD#mGV#6c~O0L5tJ6g zA(F5BzrsG1tq8;B;92GSnJ1!Y4TvHX;YTwcXb5h1cbR2e6yK>Rzb{;5_}GiF2-_>Z z?8qQ(zwz@pj`p{TzL{ktO78n+-0BC#xR2ugXd2Du{!)z}WnQla0Ex!lKM*&T+v{nG zTaU7|2DBmoz-&L7JmjOF)c7xEe|~Ni5zdf$y((WrUj+cO>tKTB{cp^)$*GNnnk1K% z_p+pFPE0KQXeR1@DHCyE3t5}#{^5;OxUo&ZxVJo@JfZzDxT`AbypSwJ(Ham%2<|#H z_*ac3ia(sQ3+(BxpoKj)2H3dBO!Y1Un6eH4xNChVKM!3HBS-SQ0=n%y^+Rxc9Hurr&yRgAskYZO|?eL&8P~d5SGrfPdIeJ{> zz<;elYd{ns6cYl$?3rOPa06pjIBQQ@hQ1a-^|2<<_X-D~+Iz#3%_q$i+jes{X(#5+ zR)Og(3aj01fihopS7X5L>B9bOD7P6ktpQQQhDrRhFqp-Pslcx3^vQ6`1qyKf+_Lom zJLjqoY~oQ!ePILJ{8^FU{kvEj#C`e4W#S9p7AF+nM-Em&=Y=F8hSq>6LU8-4hU#Tg zvr)O3nK`-l{q$-u`zI2ZL!*HWOF>+EuRDO5bTbIH0nkFrZ=MVkGkV#e%LNXq4}YA< z&dkiqUN#!%$5Z1spXdCJRv;P>$3$LsYmOuh`WnJ6>+TmD8@uRO0cPc;Voi)y$=dB+ zmHS8k7rL%seItwQdF08A`dqVAsYI*F9Sv+&wNTlM$JvRu;{#?tP+DU?(|_tU-p!3g zB4T6XuTBgeYaM`6x3Vt8A?#yKX#=tdnZSLf=QY5cn+CwL0`GOk_dOVrVy0d@jKSm! ziki9FO;J#N$v5W;XHCY($bPSLbz39gwOVI7kqj#=XPO=QHv4WJ0Qep&2CtzGU#ry0 z(laQdX}G?|Er1^UfFAHe3pq4aP&gn=L;wKry#Sp7D&qi<0X~g3mPe%`q9HJy%0QqI ziEM7}VH)-dJ{|r+k_^}%g@2$Qz%&3qfG&!Z&(8J4Wp6L|_xWA&cgFo@`bX}ctG~Ve z;e4{_JF7gQx!3+z`H##`o1g0c=zp5`HT^sN7yU2K|DYe%kNO|pf5vCH{+iiuv#JA1c1a`ZD^bb^PA@3%Tlhdo|z@?d{?lm*^Mn7u-DdX9wahU=Qa1 z-n~Hov*Azp5BUDTAIbl?|Lgxr?DzkV`mgo>x?bQut^e!()8G^Nm-f$1?_htppZtBw zzg&O)rN0XVWPJ>2aJm50kv+HfmG`xp>CaFfTg3iwS_Swvz6c-y426{GpMf%BZc4o z2S)1dyF+Z%qZkEN3Hz4Bz^|0bLIQ4@a=vi}KWJ%Q49>N?1kO;r{q8y{+j2lRwh=pv zDohpO+27{Ap=dT7>A_!_^wbz_ELH1g0*=11y&0yp!AH_uq3+%*Vd7Lh-qXQXV=yRV zBa&f{(f`s=#rKa0^`}8a66*Ljsr_fo{(F3DY3K6wdJYwQ!*?+G;;B)PmDKs29tjD_ za}dF4erRYR-ittTsZYm!UJvxjc#s6s)hcoP^|c&9`p2OzsxBy$0K`@OtG9tK44Xu4 zWhK$+TZXMidF%0E0B(f)O}$4$VkM3-bCu`iW4Mn!Cz#_$34PpsJ9^v;72=U4GXbA+ zc%f(j3IC}8RzCF5Q=7CY{s{zDf@49e)!fQjFrK@%YM>PPm&+__xNaMQ8L-3oITyr< zkZzPYB|6(CvXIldQnmJjsF8387vRJka7ZVqm7&Cjrod^nG`%aivduNElDA{ic-9s$ zx{2gX$1ze+7t@{WMk=(l{McMmngfSP%i-9`&K?;?rzh9bxSPW2$1yzPCv+WxeUul@ zTc(vu?+0JNOipKjWod;+v%Qv>{Kp#a-4%L=Dxstpo#gJ9hCumtDb{BAY;nvyIsuti<6WRH!$bY9<-Mkt z*8aqw($PJj$6O@NF%4uQ{-#VU9=tk*EvIxA%0SrqBDFsxEK*9g^YbwRo?QO5>+R5? zS%fV$g%CAorRzMoDRfSac4y%U(X;0tDA0pXH0sE;3+&~i(sqfqSVyP%7EWXi@W{jn ztL__GNMDkT4b(ztp!))fi<#3H5o-F;WEv@?l}aLtK)Mu;>{@vHLw|wBUv7zruk8xg zk`mz0;VMU{uTPcxj!VwSo~4jk9PS&kMV_IdpHfBRNQZ$b_e20LRbb;|_fEjeVx){Y z4I47(UdY>+s!ep{YVosIzbW~Z;mx5hUJxawJ zLe2iw{GIe@N;061^)=MiW{fo4`ns~^#8FJl7BCQor{J<~{BLy2s&5^YV;Ws}$kOzL znOqrPbgs@Mcb^8dqq#d8ZO~UgOfnP%sLA4C~4zeQa-d5g9JJlT6IYTLTqa1US#$C-Z{PGzmZe`z+Qe zs5*xY>iW>3P-;YaNviS=hE!gNS3P=nIHd@Qprg-lv>R(Vu8hF0Ku&V_g z_>YPkGnWP@QKI&Cjfk3LLzMLad#yl8h`H=p7KI!x*E|L#?ko%(RsAv*+WyU~Lk;ZG znX(j@RoY&2923OPu_dK!CwOfP(cZ6yai&vhPP}wdXFfu#zj2}i7o<^0?x37T?m`_E zDY!8olp!RJ<>O@0g8-dcc|_a4$x;?{$L|72M8} zuAn9~&90>u4b%P)EnpK-pk!g*e#D{f?|2Z?M%F8=w$xakfr-SK6FfwRK!DU=yLCy6eAZpLZ&M(EiD-S3$@8{7 zI~igm3n1k*5%(E}15}rzmu!SvFAb;vff0g>fz;TPSz0Umf={cTCXuIL&@7xdK5jse zpNCYzC;q%`kHWSs7TOUxU84bzmXWP;SXgF)A<*KL8r_KCJvnt^fpdQ* z=ONhBSPB#xCU74VU@evo_bXg>o=hUP=57pS&~PLyY=vwM7cY0>KMPa@k}p?)L7_Gg z4t267y6GgW&Yuvvr@h9|VR-}rG0tJ0I*<5Tv_q{V`iTMmc&R-qfhK!@!oPRdGd(f1 z9dMrC729K@Ydn=60BdYpAFf`1_WYkUX)A!?%!uvRXA;lofRAlb<~h@la;(K7XJ*0bh%^k3Y ztJ1`uP#WLSqobjOZhec45^$tul7R?HzUGUP4d$T>?m(h<@Ip-N6|XaHu0m6XL!Ne* zHvjo9wFD?c>KLoZxBk8oxzUHq{Hi7G&EBzr=D*d-qD8M2e;x9s)W+2V;<^i>c;h_x z)}>vQx8#}01Q-|CEi7Abv!U1jyNgF5qv@4|8>}tS;Q8WBf3Rp`tMjtGhB+hFh(Vyp z$p}OaJoFRB0L-RP6*?$V8r_R5zJr99Su`mOI=&U#fUd}ymw&=xc6g6H=hrrhxo~}L z^>LPAFZ-Ai>ec!(cC^#x1BA9V`)`_C7ejLY5aZj<=WTawVV@JEJ%}@afcy#s5s^J{ z#b5dr2tv+E$^E(9E|mjTo`VdXK)Jo5L)3^TF+VhZy4QFYU`b-#W{z_0*6{VQ@ycA@ z@Q`qw0wm95_b^@3>}pO|b<~}t8T{$hs469#3mYCO*Y0ajx!`E*vww0tH&Jn_OwE~_ z)ww9=F^h6M7*6|?=!M0=tGfZu>6s?W)CdK#02Y&#Mvq#lcjl0zY2z4{DB;Mc#BJzh z`7?+QiJ$N8ba6`GOhG|pm!ll%nhO9$U(_hPbwk32y{*BUT;{v+__sp-W#TG#jo!9Ir(9xO)$uX(VEm4p zcA0!w#C$*zvY!=7BqY$vhBubsEtBrcQibaDugipMhm$2?Aw6%pGHX9zw;Xc=u zVlr;g;e4PmuGoBUqkT$2SnjT5){}r{mlP`uu%C)ES>PB5L|_GT`OoWm8lVQ?e+4L_ z3Gi*-hyPf}?DCm3Qisd74`h`gs`nSprb{~PuNGzTCC0{l1CzA!cN6L|jH9Qw9e}E@ zkjcpbtLlk1bZC#GmiPvB#%q zn?6~H0I7Z9vnQMh7gLW2k~iGNaQtxdA}f4E;TWo zu5Ya1Psl4QO8JFzwd&UgF8868WluNM7T2w<@ZFG#UI^Ga5v107R#PY2ciOB=OQEF9 zIklTR7#}ep9E|MowAvCX^?8|BFk4i=)kn7ABryHTxo$o3Y$e)e{O`(5>Nx+?XEwdSx3w<$_^xy zHj}GQ)V)#8aPRJqf@BN$4^<+Sw-CjmmK%52bOca>D23&~8qt*5zO84aYam|KqCfJrnO)lezMvL$oF%Jjkst@q$56h9 zd08c9qD&9o#o@SD)sQrp0xCgpnOMs0&6gIi56S>j^Xm{%eyGPte)(eS%tHRXD)pg- zd*zdndLB_v2^Q0C(-P=$0H%aJo3eCI&Y z5Y7>$o_C@kR^&@#_EOW$@=>d3CFq)|#3usEmU%-wfdAmt$nliNfvRTzc4${AAcb&) zN1THfk3q|qD(tzr_18)T9{pl5PLt-P_`2Cnc}Qgp(&xmV@&#&IpkLeL)ECzE-~KGP zr=+dZ?yj1EJ; z=8&%;Cp5fL1dX{11rEyLX0Zlc7>BSRKn7)&V551DjINr+=zS2mI++HnwU5iiZ~Xmgq7gsy^0wiA{z9xq7@ZZ08348iz=jrTf!O5X;$;-c}HzaNvkj zXvz1(Lr_F_03~Bl$}K|GCV@ZTU^#2^Z9;T}9-hDI@ZsjssIRtkChzgqR1FBT$qBX# z;M(;h*tNLu8X=3D&X*eu73(Ly=T9yNv5NrB93Ogb>pGz`S>UL7-J~u*l~G^3B2!Gy zo@nIMERUWN0^2ljJ6=q^W=V+mHOn$Ptt$Zstl}aw#a!tUYG?OZt@y&tgQ_7z}2YTy$gz+rJ{ zA5*q##=cUnIINTMPFrA&fDM|;UXgrFbdOxhGp$oLRE(Qcr!pR*~x;ioHgDU31K<&L$L&B$|y`2 zJ+V4Q@UT`nfrB?@&$SB?8dF}qvv6{*J35TDvw%rr^{I}5egnj%MkdLJ7n{(4@Uz)) z))w8i#S)-)jkjM>wqKPaPpNOoJ#qFdbrH2DVXbs*X}+;6m;UY&8IL28E#M_i5{oRjHe-YX@&n#?AUmz-rEu5TT%Z1kS?N2BZO; zSsgrDWCwCqT6EFx@RF9gXx!0)n_b}3-l!O1c6(BQjdY8LKPGFx^oU{?gyDd%=LfvU zv68H0+|g2-%VAnx%LXLYtCwBH<5qBncr8@I)GFH0G}<3s7lV&A?XjB~ zM0m%nyM|xSFce?LVFwgqy(99YWrG8O18Z_iEAp{G;|lTBOUB*=lX`QX${H#Z zpx0(Pd9G}O@genyn}z35D^RoDIlV81TaK7>zF>}+CgyD(Y!oj*l@V{*T<5*>T>DhJ zNzfhj3U)!O$Opv+fwCR7M#-s(%-oopjjF&oVtyg!v79q!hnh9TfY`3imKfcu!-cYm zKNsFmmk#DZbLu9fH13CY%>LH}YHH{MynPN+VFN0!nn@AsamvY6M+t17NqK$Z%$NJd& z%GGlW@F>f!kNK*zrM<}&(5$VaeX6|iaCb~Dqb`E9jegDsn6g}PaZHSNXVi- zzNcM{I2D_+_E7N_vZCIBQB>{)uy7?VoW|S@Rs&8h$;GW>&+BZ79+CZ_6FOx)J`i1t zD_Y{lJR2*>Yz#Y`=cx65APr$}i<~kft{*IX&5{beIvi2wVcrESm?B@3*ZdGFk$Dfz zPM6n1*`MHRSV|Ua+Kr6k-!f+iS{9Q+ajr{%DQaxV&QI?{)(-*ak-*SwRC&xyl0mlq z!-WmjE-y352N}wn5M==-H z3N77z$o}2+jc|edRCiy-YPo``gRNw7cKgLTml%zYGUBdw6sv6h+Og@s4BD-?5?VRo zgCiDol@#xE00(Ra!m?1LnliFQdcM0)`|pV7ZI_<@ikq;rSxOm_gqu`3Z3LX};^(E4 zwO|R(d7l#R7Rstr#p_C>Jb4>uwaJ zB)Ojy7Hyt--618u2n{bXt;aes^gr_DW_N$4_wDCu5xsz$X1&n2;n{7=5RnEDeZlY| z!Y9pUGx!ND3qs$}Mg^%Z1TrcA@+uf%SJPt7F8_h&hoy=w?5uozC|W!-=@1VMA*pcP@V6~D`X6Lc#3*h<~j zG(~!Yp?_mJ0all2iW?cO*UI64=jWmI#O$3Kni=uV6=p)x$aFa4NjikgBb0cU2%Eb+YCd^*LHx-{={XlmHlKfpGHv$<44AQ}J%2 z99@AHP-t8^7MALmYI2_vqFgW-)X<~sHQN9)yIRzjrZsr7x~tQc2Ew^CCv{dsbOOqu z6pr%{0v*IL1id!639caqLy1(9fP z#A#kEYAAdj0P)GA*t^OETV%S;#p}mJuv%pUt+1M}@mP%_MNu!g9g^}OhfvC4Efuc8 zO7=cJg@Rz^5pRl?dZN0A+t>5Ph%Z>V_PMRa`}g|=dZT;{?`*p30TwT+)!>r?W>c$_ z`kt@imd;hN$V3=4NKOFPaZozy@Xlnf6b`ZCs~+1(OL)3Pz1mJ8Y2ZXJOf7HcO@Mys zq>Z{dm(=HU6zj;8udjEzD_#`OmJTaih9@RbU^76I=cbgn7b&M3eS7{D#~b1BDhl*3 z;GrZctS~adf7}?43_4z)3)4bk_ifXkIK#*bB3l z>c%Y3@{J;CXSJ{zE*IhYhZUXSfWly%O79u{(3q&O(aj-?-3|wsO zL=)ZFE2vXbBUJlmM9eZda_OIyfoo~*Y8MP+6t^z{#Ef~mU2nRxE@+j@;d}5A z4IxB1^zVd`*=um$?X<&XPNbub8yl`w%*=)B?=t{nA&w*?5lVc*`Pdty^?x|a%-2=* zN*r}IxGHyzkm?l*eU!4ln?j8wDpcxz6eHs&3uO)0h#Rj}tHT50X%c~d*l=7zHUs2_ z%utgBETFT`@wug{sBfE!_d((betZQW*xoPbXRR3jI zPrl_jTFOU=VQ$`U3@;ddDiLaVNpqXjQwGgD{xE9)i+>BMYQo$W)h`z61!}R23%`bV zS9M3F3#4*pL6#Q!nr;tGn~R(m4at|s_Dq%85QmDrsFhjjDlU&6e{Elo{g?T-_LFvG zJedjY(dyrFTP*Mo){VDhrQv|0kNC z-855I04g}JA(h!~HGlBhTNH&t$hXR5VFPZB<@(%#?vw_l0&3LPez2`fe5Y354j%mHu!6^pwKsp@t~P$q!Y_o%Tmf|&x8o;_#cBQwydhJFHPuWR0$Wz6uFB+bM3RqVxGFOc5 z>`1NvX&==eU2;lRD`V?IYCz>?pC+=d8}_DO3jj)zD}`@6=)8$utT4ss0}ayQ>; z0AMli=n&p2yda7y?{{q>4uP^12Ga66_z)dSSn9>WGdCZ|U&mD_QbQBEUYdmWlH`J* zjt!wyF5_+vaxB;93_d6H9V;9Tll@p!zFK&MVpSv_kced~a~-UsIC6zAl$ z(4=`dA`-tboe|QE4Z6*qp_sx-1`VFuw8ew>3Z;@1H5(*t?_i=9``l`+Wh{G*;_G7t zrL5wl__RVp6Q4lp(>aDETQunYB2oH%q>7Ac4H69cRAQ7Xn8r)r+#5E%Y`FACsLRq< zLMwvL(A%nML#lt6LU7LnO%=r-+yiKM|G@N$z^@Tr`|l;so99GUpETK07Wq427!>*p z_1ErNMe_JX?(oMwMvS1c=H2ErIh5jF4eax3Oi2P243z|DU^srexqd8?EH^N-3pm}8 zD*>GuE9U}Ay)Ebv6DVxOpnxCv(%vd(P>I;Q|8#aNMHENW`|0{-Qfk727f3^UeH$GQ zLL*W=Ly555IV~o5_5?;09uya%IM3sF*V1l;h=t*VjFm;bhQC4~Gs>|_;+0Bo4H4E0yt^`@^#S6~=S6hek7CS} zve(+oJ{>PR=bq^oy9aRN3RECY*Y6LFzq5U*Ex?d67|>m2G6k!qq-I_(;#>c<3pfq9 zWu8~{jvfHFCoIO!4d&N!FP9OTr$t?5wpXfJ^uGK3BX9A2NzLLTXxmHc@Bb{{VA*mL{^LU{l!%+qv9gqQSEpv$`OVb?F-)qgOzWmFq1rw? zc`=Hj{WK;>!MGuZVok%AM{AB$5*ApbIQ-o42GUj4v+AX3^|H_A|* zH)4a4{MpY2KsqeO=H<6x>qq1->y~XANL(*gh^>WO?|kn3KxD%xlT<6MV7!lSSX zuQi6VYXObyk$&Q~1Ei{+3aWbL!=UP`&_$E^b&SV8E9tSurs&MIh4!m6#;a!R&n4PR zs`hi_X?#{eiVo}M_Yfx5PDDdqS6+EdJ5v;0eA>NCI{gH>tShM{w%8Q_6HD(K$z>_q zQ92Q_(f~D*0K9~1?~=8J^1W$P0Dap=Vrh@RY)Peu&u3MRo~NhP%1moKw5Bi2<~fmA z=n_gmxg+DEW0U)vW)=oS$xNVBe1KYkgt#|zxuYT+bbs~KL~W5gMNY()dq_wlK2|K) zsf+QcV#%!{s8z`?*T{oT4eC*vq6eNtuit9!#~WBkt7S;y`GfIjU*$@G%=rf^q13OW zvR0M+WkR#Ig_ES&0*HSe<*{$TxUXwouP9)N%C|8AJrKq%Wr;ibur6lI4*`Dw zPlwsze3z_uaw|+sl)^5S&Uo*h(C7e(TnqYk{;Ws>)wbL7*lHlY!5IeF!VucCR(34% zu5d~Dbb97!R5T1E=YQ>W9&MqTb!loAK#?-kzfs${`zve^uO{#~DJ;*;8i8i_=#}~6 z|0fOKQkaD-6d`b^LeM!Fvef8LRv3{!^<)R7giY!z|5%vAV%TUL4E^FaO9HGoO2n2` zyQ}-WAWJjgs-Ljto|yMgrcK`9rh*C`ja>@zCU28G*Nzlpqo>Dz5u~qnw0tRfXeLe|dnLR{C z<>h0ReU`Z3h_~hs!8S%{UjJ|AO#s?gm(S!z$Uu;uO}?+UbAcCsz1%Co524xr*%i|*)O-aYX@#I(41 zHj=fggr*x$f8ZVJ81&qZ_U;R%idiziOvZM%TPy*Yuu=uz8)b!-jX=~&9;craf`B#d z)KXZ1cj_L1{W&6`OdGv8C+Lh}F71vqFyrltaeq%I6uS51g@Lo-OcKST916f1C9OEAyg_ev0vmy#PVmc&QYsYOG&k@L>J$Ul~QtcGRKZhy8k zMeioxm12SKgE;_c6QuHiV&bWz0Ncx!n})B=#Wif$A1>*o zuMT(+u@P3Vo^a1ydY6D;x8Y6HujNlg3dPa2_X3rn%r&B+#7It zDfW$98xB#ow^c}eW3V0mk1qWtNnMD+-AW;G&A10YKbSA1u%KAqySyzqUZI%Xl*60X zG0b4Fd^_;7wEwd>+kB-xTy_Rx-iz_1$Lz$g`|s7q1R4qaL!?cgR^-q(L0`6S=tKf9 zo*=vZKc0VDPpCXnrPV!f;|PPSzm>?MrIA=c`0iZIe+rM9hxr|=Chtd64?u)`B!w&p zm2@+ZZ71v@R2lH`J(j8Z?3>#~s z`_{iDBsB3-wMMh_nPP~f&}@xH?R-@+pK}C~l`3oZ^~pdwjv%b6oc-JbtB{A79ksj<%EG2kz2yTl5^UGfeqhFGJF{RYHj0!QZ0)XoplcbMtjJ)%UvbOUYQ}iaRCA1Vv*TwVv zDjx<7q58$|k#=^1`hAf#8e9;dA8>333+FSc>}CDw3b)zvPlf?%SeI8rLXJ=gWP}gU zW^LgbJGH9(j}in0eT^2ksJfi{2gLW;GtC)Cpu2{21v*)^06q|#Qs73{y# z6nyBW8Pl~{gL07mcBOPo|bh7z_5H9GEk*IZ*G&;}h{bYtANuGF91OVA; zG=WF+Oa=B%!7p+5%huwAp=5u#R&z6mT}t5o>Xys0`=X>*$Q9QS9N$9KI!4L^K)bZ_ zaz0n52ZV8f1I1st$H?WiOr7?PLl_w7g(k`5)s}JMI7JI~M#6k#g#oBHYocZW<9mJ| zJA_*rmnY zVC(-RE4a*P1C|R0iQ~W`)Nl|n_=wt2nl#h#3=CNMoEd;&M!qhkbe1r)+IR}S)pD`h zY}{vrl#=MFiC%GJs~bxGFiQ#OI401m>XNZwxey~8wBSZkY}=M8`7>RE-8Y3WLVPz* z{bDW1H3$!2kg4>b_f5ax;T|~ySC#11Do4`o|Nz z;ibpeDZWoyG!ts9=$crkfSP%pAisH`1Nlgwdo3Jj2~9V{>7=VTbLMxfTjH$HrKtt9 z{~%V%$6pch&lXn3#!}7Wc|bXle?)f)+*eq-&mE6Ol9$6#j|`?S+4$E_)729| zDLE^t=bt-S-3>t#HEZa#9vhF*q$O#GqC1RoPFCvYFy$$tR8v4nM_p*eoTlGlQJs5S zsw82V1I2r04DnDFElHo|i>t?+eGyzt(`PnV_N-TY%g_)UEAGa+kx3cQ1`cJJ5|}fR zfrzzwp3YhmPtGN9GbkqkJo;66ca1{r7*Djy*%XmacrZV{_i?dQ83vOu;F+_1dUqJa zxk_944!1Z5bq{!?yHpl3>cA|Gh?~In;+eRV8_3h59Kdu0ilTxg2ZRlSk4dgGkm-P( zxJrHnV#F=F8vTG6B`Ys~6`vhvBQ_^#N<<6PWU!VkWa*L^Z}S;5#{u^i(v zvzd5o-;bDZm#;`l6Rk*wya{fh!oP@KleX}Ei{Q`z2;$2|$K}yC-MVupBhv?CCZAr9 zyVt$xoG%Xo#Edzq-kDM~_G%HOWJ1GS$%(Z|Jwm5Qf&A0F97PqWhBOX~(ThSDm%{q} zdvC&Qt+4I`j*89&Isi7JIxTNl&qAL>2rJat!Qrc)#nolO$^IM>F_dM2aaeh0AHE2Y zyrmoxI*=cxo@})Q$zo1jkxhw3=1fh>P#q*0onW_l9gNI;Hodj<{V_<(>YvEA4?@`I zAwM{y6|_3Crn1jGSD^wFK7)B&_s(KK_6XW5?Za;RW!5gw`HYHw8~YhwWB-~B{vRh< zhz3~f>mbooW*H-STS3#7&ZBn%7BpMSnej>9@e9a#W*m~~uOzjeaiiue5=<6HYh+Td zBisTbPtKDdeAlbuF|S5Re28{JId{jI7tT^Y#Q4hr0URmjG0SgpXLo^X!$W=yl%P{O z-)=o3nTFkhAi|m*SADH$@2%=(dw8e32#Xc-yIKbs>P$X7j)u-b3!ZuN408CavNh{N zgoT!RoM4*9r$0mn^yY%ja(LWU$Ad0XSOMcr%}IMXF>E1bP@|f$Bbq6 zzv;sVR=4jzrYFD+_7u9sQYt zvKth~Di5E){%@>KirPwPb=|VgU;o|cET*EAi`FA|1R5kg1k)NI`e_q|HNX|7Gu;wX z*#%PRFx9fTWmFGn98%(6L8u9Kgkp?kSB()8E_fdR7(a&HgSpT=g=P$#<5-h7)A4Q* zZp4j|d{a5n1xI)j2ggFGAFI9w}fASMdwzzG4U z00~chC~06Zv*tmQ?vUtT-myLs3ks;+C1|$ws7qAxxo@hcg)cZ3Pf*Qxu)VzM88UC9 zq?g7v%KGvU$}k8jG+wxocSfK}h}un-5zq3?MT=dwA7kXbYwv0{e^OM$rKJLw5a_6* z|NkiSyy3~2)VzwExXfv4UQ9z(@W?>+HE=^mtD4vetdD|x+feO`Mr;*`8NYgl28NlaHD z+%kpP;Y$E(md6Qj5CG42XNHW(MZNW42IZijY!y+))*8@~r% zdxW5&P1V$aLVvPwGmLN%>atg7rqB5rY~+>X@hPT<1F0+BdYCdxHy0I8TGWGY2YP14 z00Iw=;<)T|prZX_z~P)w)~!=HKql{BvAMbyzQV{u_|o(h+8JfQ115%L6D zS>dAlImo9QETm`|$%X0)X)*nKbkG(l{3g`9=oL;Z-D+9{-S%!p$ONwaEO7>f9u!$0;v1dt{6XCt%YRkXIc%318e`P)Vc}Z`;#Gi)R6f_!0m^;vO z)cLPo<|F2$R2Nz{;YIV!)$~3D5|8nbVI|0_o8xP4DdXh7N}8aQdS1*g;3Pc4%+xv!o;=wiBCQNTOw082Y|h;5(_`wx4Oh)$ddJtjs1tCM{3Ox~ zMMHR}jv>O0{D+1VNE6Yz-2^>i!0Kkr|0nwGuabEz^a(iOy)AyaU-=?SJGcwS7mne7 zQcvXT#S!HI7>c3v=HaA#s6>YiCD9QMXB95bE&FGO7su{RSkM*_FuMcs%f~z z{IdM?z_ev5^js!`;^bDfeQ9?8O|~R&U}7zKP00Fl{~Q1SVK1Pn{{fN6cHv(4v#P`?RqS zg#boFcS!HKhi_W>{*U70U3MF63n10}sJP|>zM{o~)KHmxTO9vgK7OboPkua7CF?*Ah?iHLAL z#}pG_(z+5L7WwKyH>C_Du#!r~D*p*jrvqJ5J#4SOZmM@hlY~Mw>9K-d0kl_A;JSF1 z-*Nz1Y`oN--v8433Q?rpzWIG}fiigens_aYjfupjGFuB-xQ0yU)GzO3P1r zY4DJ#cjBv7kz909!T(d=;2R7~!H>tXX=UB}&HH z3!08-KcfMQaHxl$WZ%da{mzaw@?{+NzIxL{>s$H9>P4DVjEkDG3w^J|G*-|eX&A<^ zM!vUr_-pT%ClebSkOUP~vDHXqpJ;KG__SMp?izlweuKD=)43=t(xD4343gaN&+? zH54745WJ20S;9jtgp#xrr7Q%#M_DCToKtenBW(tK9z+MEJJDCrOL~VjAye+cnR26w z%1(Ep^*eJ2ql}jfz(DF53x=a`A`i|?B-~E?T4tM01=3UMK{hMD+GaW29vv?*-E+;){J&kVF0>XS4lI zNB{Z7>qoB6PCa&U*Xop-+VZWu1lz-a={OuG4p2=j>)F=QDRvMBt*skqrQX&)1bNI^ zS6)({`9Nr6sVxUi)2{aIkS^xlT@cEM*NmZmc8{U?O3LN*COJgniSYV6@am(G%j&^P ze)apE_Wq2pIu?qqj7r)Q52we^$Ff!$R1JGnO<$ zS*-d|k|b!n$OlRlX9h`sep-T4V94?XBo8Qvx?NWDwV+YV(gv>`MVi`so&g7fA3Bb^ zmEgaATJ(h-5SrQy0sWN{#jnZ}+`)L1`lHScE?k$s*CL)cO}9;g+qa6JJX9rkG!UB$ z2lThmde#K~;iQ>^TvSP%xl($Z1m@5DRwGIO$=kL5Hs)c((1mpKCA1_>wM&M1TwyLc zZ#~5qfgjkm>(Oxt&s}XO7bD(&EGMev_^ph8iFpkDSywU@ZH$DuWZ2`O<9|+XSA-h= zwyWb~d7kTa32`YGgH1DR&R!W45#`nE-}{sMk!eelv=x4}wYRf0P1(QL%Fe22%?W?6HKp3M`!k z92t3H57*@J8bE{;s`(M&wMa#Qauhzr9mGGXllwTVxD~6X4U?E~Z=J=O0sZ^G*v_@> zLHBwyZ;cuh@UHVfMIGwo${F9n=M>wwG($Y zwqK?)DY(n~+9-o}l9o&0M}@q)07cu%byW`x?EsDlFTd~;a-hQG6?_iZEx#kcG##+P zi*6r~5Q{T8wjd@rjr@yXZCQC7PWd=@TJpds@_+yUk^F+x7YI1g(z!T35V}E5A=?ye z>CdHJpAuc?!J`19;VCd`;M%dCn@bTGRgE?_XkJ zW{ir-9N^)9xA3+Kq1C;c^!RLg6+Y?+77WxFJ^&~^%9A<*^OjdZD_AEj+@l$lO)W?T zf+w*xV++-c5~AO)pNWCCF3whp*C*%_WlB#!8c8(;kT9;0IT3zre)bH{wgi)qX4K^~y5!bbX zw?{}?QJ|M+_!j8+ZC4!p@}2i}kBio@#?ilz5wPulNo2U%9M+eTQ1b6<)4+$ZY_-R) zR2|eDWUefjj?MxW%CVAO-AMZLAtKwzQ5}D4;&1#KH^fkgZGxlb{Dije5~yp63L@NM zK`TldZr(5cpRad|0000b`TkY1-xAir5+KlBZUe?j#xg2q=b?a!iA##!+Wbv#(jX{N zZIJI%PtTSW*A=PXX=cO_ZIbGeA{#1sbe%Y!=DB)h>#$o6&Zl#EY5nO{{yATQ z>x(_gNI~uwIbolp$n+o3bc(0{tu)U{g^PWa5hSey4)-A8%@v*BbFP)EEo4AD>e%So z#s@4&5!Sk^avd$lr91!?8dG3I(!TOd@Ns<~25H%2ILIsq067r_bPi+0B5nZNb6zAG zFH~WXMi+Gr(SG3#CO0E66&djnsv@B(8Zr7>7>oJBr*ygojmU zc>4HUVU+$5wzg2N%V;&*MRo&r&(@RIHqF!A26j4ra@srkKie*EOfM>dnkMdsgo@ke z9~+|zo<^xtIMckPCh*^)0|8LBjpK;mZdNL)s)EMS<;-`GQVpg^zbqLJR z2PE$v=TYG-bxa;06#v+w=Jsxy_W@}YI!hY^;!cLg6eFTM8ePFY`|G9tNPPR4`(uP^ zxJf|K`E$$}?gYn7~N`q?x-ar+TYV-l^QCW@l0>5rU{R?r0?Ek`q z%H4fyvWb4E)7!h60HNu?>knD9MF7-~IwQ_7Fn=3t;T1plHIfMP3~k?2+|kF>+tY2U zlofK~5CJ0v3+_&lq@MYKV5?$_^Lpj^lx;Q+!mcxD&D*#E^*m z9GjHG9+-mN66Cj&Jb1YizF*nZ?yk<&TcRJOD%Fq&eta2DV%M1G0q@UK2ghJs`}H9B zEaRKHPSwTs>_pA4Dv)>NRSb}e}f~_M*Kw@QFqiTXlXcd^6iReLA*6o6XDPgXxZTOp) zH|7Ll)|da@iI;@$i>~@`8so2`zVEr~r}kU%3cnM(Ke``VF+W1ZV*HM!)AEG0R2-Eh zplzQm>^Gcb1(jqltDja)&k?i{0*}h(4Al}N>${-q-%tBW7ieH821+=)J59vX-KjxBFoprwIl-~JH~;`J`v9E*Du@A*0X~sJoJ*ynqNOEvSwOH7 z31e-L^jVBi%_v;d^rHaR%s|-RaV-PvALM^-^mpX`!#*GOe>Xjob-$HQLHX_fVd@X{ zPq0tx$DX&TA26S_zq#J+zxO|D{n>wV^#}fY{@4HiwXdm{pf8tC?+?PK_YeC&yx#%; zwcr2!fIt8Hcl1~Czrp9+KNx)u{KIVA4g5b>$Kd+|`@-*Q;zu%bvf1`hY z^UC|*{2r2j75fX_WYZE#s3@FKlUHfx7io&@Bjb) zpAcWU!<~mCAdJ^N;%%CwDvY5c>%o3a`Lyujm#YOn-w3m8Ty!IV2#lQFFcAUEf6w0L z{NC2>jF4sK*ZmV?|9x8&Pzn%qiVSqND?<$T8n3iH5i0E6Ji|>YUM7vG-vx20sPk4R zq;?1Hd*;)AgqY8g*y{T^iiVtU6!Om)SJ`u*FukTDB*9VYa(l?rtuY}@{EbTTd zInAFBnd^+A5CckXFrV27Ke13!lKw{)EKr|K#lOnd4!h=>jdr8&VEFAk7iam$c)oc% zoDAHL(P|(Zn>DWX)DD8r*qMY(Q{J8Yh3_hJ^fdqL;Xv#hg)yBem0W&E(;V!^qPjX8 zC1g`z`GIg<9_X|a)(ZF1m5c;td;i0ni)7#39xM6aO9WmJj3k6bD&~#9qvHQK`RR;% z3GJ^uvhosPzUdGcF?hhA^mT$%d@{B6RFjbjcha3}-N%Q_TaToOKbv@1N~6YRC&x0h znWUYVSi6YtGGl0b!pHn8nE1M07P3;2fmvk35@RI1rs8`9_TW|@e3!QerIG{s7z#EuX?kSEZndCZrAf$DPGAn7relv@GFLudiR!xwI+S^ zAMK#B%0J%nLBG^ydU)CfReD{jn4Z(G-Mb%2^Px5g*KdRUM)B`mu!89#9afCPr%aiQ zkeSMF(^u4t%iMDNelic~25)TWeksP*?;G-~2>HSFTNOT9xTGU4-+dZkHU;W>ny^V} zvZd(8_H)FG-E^ZVL2n~NZ}_9{M0tKLFe=u_x#V)&&}OiEf0ceg%0F!Lx6|F5;YC~^Zmxj-Tx4bkkZ zQce|Cg4If1;?2jSv&1a_a|eb>7R8IF-o7>AW24TA$<*i)&vH7&UNaZa2wAd#qG1DEnfwJxaM>Qy&DFnZQ2u|JQv&s@VrR4t?zfYNlDN`^v7 z2F{?}wk)#3KxmfBwE{Q4V^S2tO_$2k+J%M6vrY~}?lJTGD{18RH zA5~&QScd(r|IUWOsrr1%ySX>q)YIV^l@PZ+#Le`K?cN?6886cxw{+r(OslZNP_pML z#XcI9tc~G1ZTtQSbIWQ{L*4gRb%Fg1g9^l@N4M8+fL+A3*9iU7t59fz|N?w}X<=8p%Xh}dTHz_S4{0er56jMs6aDj_+<@+hGqVLn? zKTJe#Z_WMwGwAk0+OS1Luh-f7!zFt^r!QZKi;E$lw>8ea>o{R*(IOh(Zv%s`50kKDHuDH?E3+j?F;Toa1>5>5F^*i6> z8Ag_O9yk0848?5J5|A_$rfFbL8T*q6t9Cr#5*4l~M`Puve*L&ywcQTp+n`MSZ3S^? z8886O*;plpLHJ&EP{nVpe{RCuAu_tN>AEHWyHJD(yCuK!AutX0XBpIU;@osF>h{;`(Tt$ihv>Zcs2Ax%*N_02Ba}Vm_ z=D4W8ko#YG%U50g3rPO9ajN1V1I26|(fSeSl;hq7VSCZOC9>hP`aNRzAFcc*2*lQ- z=xUT{BwbrX9%-UO(_!tf!=#58G`dbsPW&+d1;J89=jVwA3oyx??o+L+J0B4!=VywA z05B#cpKKi!hE47{qS~_p#JAjNaL;YjTWAXmBmP~6I2%)1)TejfsTNvnsg=%r$y=L-P32W^0D?q*8_ z1Jw$oZ1P=%F|a^s)7AIvR?g#!L<~`j+Q(%NKkd|LbH@Mq2Lp&8hk$$WLn zQFLZ)Hgtl{R*1V=2GOLYvOo<*C~8cLkQI+V$?BF3Y;QIZBzoF>eRwFtDTRdRlc8${ z8$^n7BLGlX^JK@?xx=VS6>`aICz1W~0T8f*a+C38a@yoEhBTSRH?&sMd z^}%SBoK>k{<@*y1elZh%2K&gG`21>I6*gfup5{2_%Ss?uT8=Rd1yGEE{}%5_gHoXf zddj1726RA&={gy^{yP>$G|>oYJ<;iej%PZm*gE#_S&s7@=ka0wL9}qncl#Jt13M?s znaeC-{83(4dnrfE;ZYk!=v*lC-yh}B)ZuvR!=^R&+(dJ&DIvFPbRx7Ct{OAF_WJof znG62^s4+ePmr0#h2=^#eq}ZpSN@>$8Uv_3t=r!%a5g!yIXhGoH;R0UPnIy6Tj%k5X z${%Ve6y50G_EbhUR^Ex8qqY`O(&iwiw@Vb#-7_PPk2v|iKSbsvogpm%SvlP#nRD#M zGn3d6izJU>W739`9xq?FB^1pV-Rmlxoa@aGotxHt{=d_um86#rA*tqidfW{vKyO!G z(O_MQFCBkrz^@EFLi2^#F3QkfWo}G@#;3d1dp|P`K0!zkb!_miIgKxXNRd)r0t1W1 zUj#MfrHno3l_p56;@oHW#Pv*m@%Uegz@=+K{y2_MLL|%f=7ufQX_jYXL2Uz)+zI-l zp6W7G-;uB<0lV!t4dW@%c^o^4X0tSj1v6IS!oBL8;2BC+%Y@ABJt|ILO7sskQ+BH5 za~43R$3xV6z>h;Y@qG#F9^n!VGsbUib;&1 zW|zdb9;-;<7FCh9>vD}*qVcRt$H1qWiM^sU3wP$tHQFbxv;EAx*c zbzU^(q--utX81r(owd)`+c>&C((23;Ii^c9li&BLLnH@#C5N)iS284U3rV(!&j#C` zi(fv}sWGK}ks}8PGuU2nDkH@N<3HI}<)Q z!D5P-_;ySyYI4Mjc>YKhJ~Vw*=ob8wwRGQ_a2GMXl7Gor!=?zf??c_R z3!Z7|e0vq7*@+uVn*k(hi6$(=I_xb4I>mwq&0);>?KBBeOEeI?MKkl|HNu*ySdpt$hpr zF43UN@L?zcSaLFI6HNf4f8xD<))twrIry3|ZEg5^Ne=#d7ioGG#f&ZCY^20%VPyUl zTs`T(C=-iwpK!3rRC+jalyHcPk1UXzFC2qeY-;I5Be$r8x@tRMsceLS7jI8WI6XYm zKWhbj(=%|&6KZvtI(A%?Li*}T;->k}-0FSD;NRHDcHRspbLC9yO{2%hLx0PQfWc9k z^0ZNNe#;UE>9j-fLIUtn!tW)I8@jJbdQfXXfHdN8Dv|E#X-MG9ssQGv28NAoUmcdv zIV}>j?C6h;5rOQ)_?HZH++f1l>5Czrq1!4zS~Cn<5qC*|+l-@|#D0(c3lO6OLTqThVK;@$J{l8JaQH&~@I7ppywg;|a-VHU9yYn)x_u5AN)Ky5z%1>wWm60vH$mDE{wnueHrOLyPiNBw(XYp*Xi1aP#C zfYXPq*@6-oiq2Cj2y96k?y?SKLnNMN9W`wMkd%pF%(j}~$NW<`yMN+ED<@|sl!@(y zhqMAhfgR>aJD5eRkjRk8v=$nndoiWNcaX6GV7T=e{0DVAa{CzEnXDqZr+Rqv&!2?z zadu;$$oGPS+XP{!0GzexYKh69|5|t+*O}mmCBSa}(=S``Y9f--3OHYYUm8;vo-pJG z-@tx!nL2vl-P!tK&~hLfvnK<^g_}>8dbq`}o&k>EZXSBTn`A^=(A#5`)OJD}G;f;a zjQoFkXyQ)S`4p}S>G<}j%s1j#xn)3d>NM~zY`1JjnkF14SXijlL1ubS&!YD9M7rCE zkajU&y;`r)Tj^Bs3{d7z2)^6CuOv^{;`Efv6F5BVaI;UQakLEO=w5RmL3m+Nx1$DV z({QONNqN;4)||DkD;q*hur84dcG05!*l3cu^R#t{an98Jk2vf?LkDtFSS%E*8W*23 z>uaXGf94fV-+~k-~?r(WesycON)(xTwm$HzQ$r>37H=gu6Fq89}GBK(19wQ!_p-YvkG=N3vW744sigtlm9rjF04ym865Jx!?SE}4eU%e zjhKAFgIjfL!DSP~N{A{cB@i?fhxYc2)({SO7~zD9XwQg4X+05y*gUbZh(@addcvdp4_AtXG_Js6y zoYDi0XktBAxXgzw+uXcmd#H{tG{h^xOEppwg*1y{LH2Ulls;1H&~K!$hvaXAOeRoJ zVQi{qGr!tD4)Lr@6!x>oZpiiz3ylm^1 zWh^SDhDq08BV)N=PNNBg{p}!f+V6-J>bGTfiC1u z{vLz>2rmYkB>dsJu&u-Lp9X@fkbkj$n8awYh7cgo|u zG`@b8VLzK70x`>DnF}wHs;W@}arCbo9WF~UxaFQm99VT>!~H%(d3O5OnYP>>B9R|m z+%xo^^V1t7^?aeySOzGfZ{6ExgdF;2AFP%zz+Od9=C4aAGnaN!d-G;IMgMIz4Xux? zZU#kdwSop_Zs?>XaG4-Nh;I+t?l@^Vq!#w--7#kIiG*=|cc+mgZuYcP8)VpY(ZlN) zOK8QSnzIK6ctFQ`oMQ!QR7CAn12PGZpnT*J>9!gnux+bJC7_RY$@zx%o{VP$y-TKZ zoN5u!8go$$Jq|PX`nwezjC9XST!2AE^;3gHXu}{9tc`qvD z8Qg(r7o>ltQ;Z{r8>OA_cTcQxGTSMw(o{&T-3cgmA@$q1)HZm_17;!fmzw~qEL`sF zGFN!6D{_PQ;69OjSyH>3(PN!G=?X32BaH*|d}+U_b-?EFDYM?<$t1@k2=5PnX_Q-6BjDWRNS<`y%_!Ye!+AE%6x|m_FTFb!o(3nM zR8Ifr_ydiT^DP+U$O~d5h7Rt2-?BrGV@j&S&|eWLCF5ozAsWT-r=&?pnjw@-CcxQ; z2pSqXhd<3&NFhnBlbSa+T{#{W<~l$?o@!Zj!n?eB`|*P^f{v9L+62JNM^w6oou>Fx zg==~WdWIc{A%Eh)Ubwy*X*r|<(*+H%Wv5Mx$ovPtv*Y$MWTn9V81c9H`qC3!851~skMYL+)f)~a zomnM6D^r+{`0tBM|2R0Ru@m$_g;baLe52KjLB`k7aA7IEP#@3D(3(wb?>i_| z<60oe<5CB~u*8y03LreBTGWePG&Yyo*ah=hvyWgf87;$~bqwI%?Nl!B`SeJ^n?iG| z2|1oQVjNKgNVy!LTp(=wmt%#Ju(JSNS7b`cB9Sv`iQ_FH(sPWWymR?;kX5_syP4Sd z64Sj-3pEFsP;d3YMCFj477^U~x_ntl-yg`E1AzM^EjTWRM#e2wM-wvx-a|>|`ZJ&P zv5iDhz2k)QDt;}|jV~rVI#D)y6mD6kY?*&98(5O6r@wdi}Bq>4@5PU(MZcuc6&+``lK9o6MsZ=ITl!?SCy!t7jHctl>T9l=+9BEuvhef!&s!3fLz8uxoz5dyJ zH(qI7Tv>S2C8v>OS!Ei1OFAx7Shjh-#Sd25@JT=64Oxvk1TD6l08YElzi>E3K1Vo- zZM8;k`KG6FGfGveL1JYS89T!Z7Su44l@e~sg^xD_9T8Lv;7@-k~SZm-6dr=rQyUMUHOSwjFn7LSRy z7xa$XZ;uA(c6(8sHXyjheD9YhSmb~TzKqXFOl*Tx(fs4uGb66S-tMJt*i=eK&trqZ zIZjBh4jLWFFi5x5F`+~BeW>{R1)>pa~TT|!O(>zHMMhHZ^rN0N= z6R{)raBqKq^y-sk(_qOS3ze>vL@A_@Ic@p7YVm8&W@(1m(hDc+g$Zk`^QvB%19f@N4@C15GBF)(Jc z2#|)^#9MT$mu+Zb&4Q|)>3?}7&qTw&)*6`=&fr3sjGd&2VDQE)3j3rZ;%a9e?SXU0 z=`ypT*lTZlDG5u#r)@uOd5iInSyGB)l03uN#N?091E3wG6sbU1A}0EqBj|RbSvK=wV$YSUD6h^asjA53sZ;RI+@~iQv=~9 zcNM$iaeV*F4#S(7^{xT1+By{sc3!O=`NclY>P5=pSBv_mog0(+2$4cAc7JPIU`BI4 zy|q9WN$Ikfb$zZ8cO@MdqKtnvj^Au_dI3!_1L#hv!B$M})z==dY6zZVrKSWU6Vqu= z>@n;fFjD8~f=pB!a*Ej!lD4QY)?a$19u~_{m=61c|^z-6D=NkG!@Mq6$R@+;h zT{MHfGS-qU-4wsgO_amyd%ZBt0E9Y%Q5*TIz)V|ZL!0~>2e<$7dnQ+fy?9s5NmA*- z+qW9OhuutSHxTpr*NFA}X59L;)lre<_{zSu z4(`|vqH;Z>C2gWxv5xn-n@M6Uj7+U-rO_Av}&}}tue%ST=mG07cSe_J0!HhN|9MFn;hZsi7nikWoL!MX$iVCQjkAReWqJVM z6)(y=x?VAVmDo#5!?H zH1e`8i5BTXdoC%C)+vvAV}m&&BF1PM>d$>^NxU44N70-&TZe@efPzw_i$Wpi!`W}K zv2sfwF_n)?#r>e6IS!gq|Jd>-;BK*2S_hmqP6<*S_$P3OHCne78SfVeLn4NFcx`Kj zt}-BOpG-iP8)tSo(R8Iju5EySEM1 zo?^vz)yaX*5?<$l@g3R>S4WcL{ruv21p1Z$MWn&NcZ_P!lxsVAA5iz-v@JuLj-zui0?+e4FmZ0ZC8SZz_B@t@f`%C5TA{kanXKYy<)(xB@%aA%y# zK}URRXHkxfR)d4loa_kjLy|VPo<;9>TlATG%c`I2_@G_MsvvA;mRHetwr8HRS-}E) z@|D|WuZUs6CgdHpv89DI{RR?RsI{Ne9Tu&-NW%c>%+?$tWaL-wcIbYqUU8{); z%%d}a-p^I1;#n@@8-TdgC?ftO^chZM&s^T31d#Z~jx@bxg5a`tOCbzaa6NErnAbzP zJ{Vz3)#WPGWm_OrY!HBR&A8`E@FX=6oZSg80{j%K;fjp+MPTtP3)~-7SS4rz87aUi zrx$B$YC&`@OB#)UGn|dYWL#*2Nx<*1T*Uhj@p|t-cTP$wHbKKdNr+nQLJ~qjW;dNZ z%WE;$TByvCBDT_^(gmaBa0Zl=ORBR(Bc_p?^$iA+s zs$lccr_R!S$vfn1MVM$4VL;M8hhE^b`g|TWOHKKb@Lt;PAGffs4xW7M%Jvr^BkfBG z-zZKXyr5OF5xZW>FDR3%Rg|R5YfAc-XC1fJeD@EZw3+~YRFjTA#w4TY5aSRVIn9(J zv#h`+l%aJh#}!h1KOk{y4M|d%>b4aGZ5ztS`s}?^H-RE|L}pUT%&rtyXCX?1jZeo- z0T69)9pa7WTUA#q+JfS$9vCsuoE80p8WdwkswGvTAw-|pB@`5!G~q4Rb{G$+>rJ3$ zspQX6f>V_PWVQRZRCSwOT{wQX~GQ_#c?uDqvu>3k{aIN1H2sax2Bc zI+dRwa49_@!WSc}#XeY6YGLs}Yb%wV|3CjU`pE{QdyJZsJGt9TB|^uB%CCKiH==0U zRIYW(KTFDk5>Ei*5e$*e*Ba7w=|A^?gV(0(OUxQEGuL;JP^`p{9N@jf^w5qkN-R0- zmc1BtXpmqYjJ0IdR}+LbEQ=}-@GOpfJaKWEgH!f>!`4ey!Y*X3>67d}Ga^am8jY6 zkf;f#IScYtF!SK5RAi})kHpS$f^@;Sw6oGZIKvRslCfyT10RH0dwe2p4$4>OS^GtC zow8h?JS)+%A200`oVKG&yOgbd^x)Rqi~m^m?dyQML3BsqW9NE%!JlRI<=NF zvh43rNvY`A8dxya~RU zJv?9$wVisXbGw}(feD9@)`nnUXfkihaKne)=$wt-HHaZo9d>|LyIzHWJ!iVt(gd?> ze_`hakc)2JJO&E~hGrRD6+NlwE7@w_WcTLPVxp6(L)6;xW|lIdC+#@sIKdp1G$l#+ zb!@{9ipFv2!l5~4KF{zMZi+Gr3d&rslO0+kj)|GCBp5Z{{c4zI9+HhO*TkI&iPwzN zjkZm^b&BKZ?^xS!q1h%gK~&gvAAHNNkxe3}sFy>+>%%l*u(k>hC8QpbFgV6uArrQy z5TAVgViEznuVN^%?m6&Rj5ppI)2tIHnILc1OiuDz|M>$X`zTk!c)@pOGnJFFJjj?tMz^K%~8_~Gan@!cca*F1kBPXf0AuUXUYFZ(&;(3LL%VA^Bx8%x4~y2_xIJ6#o%2w>I^^z60-1^p&or*jgxqO$ye)WM}PO*&IbV=WCH2oZi~9v7E*p_fx@)Y1LDk)hO*{Qd~c0XtP8O z#Y7|bHz17M&NtW@meBtz{LE_IHV`uR) zO0;kb=hyu~Q^)q7MfXJ46R@$+LOph3n=~SaYm5{1auueXejQSHy0^$o&Nx{}E;j$Y zVmnMN@OwP+WQcDMmFj*c|5UFz-Vlv=~KGs~8ftIy+6@luBBYDYonb!5?i5#U0+ zUYctL@}a?En`smJfOD(Vj&yc)S=8UjHt2S2CPg33c0}(Fe}0O@n0UG~T-FXajTkFL z0X}Qk$Q=jR$(MdIV0I>LnJ*-GeAZc1`40D})L}>=FFVV$7Y$?iv~Wbt?+Rq1Dyyg0 z`R3v=g1Rqa$XzA30gMIvd-^DtIz#$HYF5b7Nj@!e)WVqZIaIg;B!*l|5yW~xO-gnX zhLGl@&rF22qO3eNKQ0@si{yQ_wze{2Q^{1Q`SCKO-hNQhtiRMPKe%_-BD-ZPzGMoj z8_ayoj~IiU!Dh2IEh_{cZr2!F$}AD_pWB_nLo2M{KL-nRaOG42AC#}41|(&_`(uP4 zbJ}yRlQ<)+48%ZeW=H z>VIqeW*q<#&#gi>n)eYULjy!Rx|l5l9n8)=1V`7ZC8WHd)T<7xx{JanS(wcy1W>W(N1Z#la&*feAAl+8z!-9M+gxLn5Oi z%|lvM{zT5RA@6W!F<@%dhsU9GGgNxx)wpQip*^7d6p2vnk+Y6UJ5-xH$_?u`mM9vS zjoL<>f7f_*RC4(3lZA%4N%8$3Dp+!P@$e(I@ZcAqv1uK!_8FHk8dCN8=9oF5Ay=K| zTVq<+Y6XFA7wIGVMsW-V+nX_s(xhx&BQ-G~dU^>b@)}N`)Iz*Y&Uc zI~!?j^h@do2db)nTPjIw$wdR&T7>#LQurVe3QXuY2=<~he+W@lfxr;NYo_|5F*|@} zkDLa!>LXj@{E2H%l=H#IgmWs>y&wC=@pXPUwrY$5U!|Yefg-->R-0*QDN^ho@@Bj^ zHMLA^(L$mYM0xGXh|L-Q+7`^m4)_*(l4D@ePfdUM_&t@iohN&R%ucpQvpxBTC%rcF zX*LiKeA)D+;iUt+%L_sqixU8OlOk$AN1ed+DSt>u2#^=|R$h-_Us=+z5r24Itjv}C z@O?#?^Xgl8ac3P#-9;6PDd}$-*2B-Gx!yQSukp!s*ou~jl7wfF;-fA-IfU2&Y(s%4 z2ucRix1qDU6_ss7^E!83IA2W?ZcKZM=)Xcp3O1FJyK{f@F28GKy}zR27Fd1=;u{dM zXM6@g!EchXh8_m>&sIx2XCt(8MM1qGAm_E)BUdb|sWKl~PN4h0q1bmZzhS0qi92vT z-jGgMfYkqz{QG((h9=TlI)eIJmd3wMMOvn!a5`z=$kccS&(FwBzTBB*#0YXsFju`8 z>AqFN*(R0%`9RP6X{_dCh(k(%n@;73Ls%{?>Swr$X_G|JSpSR`B7kr%CWA_Y*^H1$~sZh6|)tL>e?7^zi=+(H`S75v-cp}D%!NfNN2(*$ zUWIPlCK=CAA90*~X-g*w>qA>)1d2QpN$Jnh>2m;6Hh}Amf#XOTh`gzo&>S0SAz*G% z!#0Y@MmDH#Dtd>IloNQO(@auL#(c2}3IV3C5ast7=30&?%E(?TTrXn7(6?ts9x+a=X!*8{6+;Ji3CKv_;W;E5I4}oj* z*+l0}x(!q}fT^lm$gblRuDZe1e9Kb?-Dio1w~4+d`_Kpu&c`Vkm4M|Xb;tklljI^y|oXt(!WT^$HW*#>j%KXcDyWaT`at_ zQA;>bKrUs-u=4;>K+yLDNr=(MnlQqJCba5Q%IZ{t=$eM_TiWyq+LP+`weZmKX;#{) z(j%E2rvy+Tz<_O68{|NDSpE5hZBN+_pZFPU_6fAa9(;muyrwdl#CJ0^?qZO?K4Pk; za4PnSW6$D2v)8@dz>P+Q65@r+lE7zXaX=GrARph2Wz3HP3$ zU<=*4NeQipiCBi_1)1{cMt~itNSOqZE}b2s^X#AtxfG+ix&H9_*zL~<#S?=El)L$K z4&&4VqyqQmk4b6fC2VFJ63|#%=lgSeHw4rS)42Cn`}zo&2<5~j)O*=L)`6-?d-_EG zA_H`JF^;l2DMH?2JRp)-qut3fLME@|pStmj4LYf;rOen7W%7|)AF3rYD}8D?_&%bB zWL;2j0imv3rHLAO1F}iUy8{eWt{iAMWBgs)lG=$XZfd#L!}e@bzh1OPNw*8Yu|iKq z8nn6OCmuK-Gg!i~T5bW^;pgj)9$KB53cflDge>hSGPl0WU|GJOisw`LXx>{;;YB&RbUp-2Z^)p)_le z?-fdHohFSitCzw?aR#TZC|{iBm#+RZKNiAOU*H>1i~u_baFu3QKueD#9%8z|RLP}T zs@nV+#ium^lQuAhVVQ?xKAqA;ulRCYhHUG1F!aTVVv%J-5Rl^KjmjB0pjUsVcI+{lU z9gzt#zBl@cFw^VhL3x*t<+?Pv6DXR92pmExdaGKsg;>6@O~IMpQWFTSd7r6hZ`>B! zTz+p{ra%7KKY%K~m?)F;?YpR}$x-*;r1t2Cq>$aJY68*j8W_leIBHehA#S)lJ;VP0WL5?z+|xtr&ij3it*&bpw4tZVt0@1LKYsGUrdv;0 zN_~5Fv}&e<6~06z5fl9B0~NqmKId(!7q>6kLXy{CaxmayXZ^V}t2WU%s;rV6`RL_* z){B~NwCU3y`h5*g>P8UGs|6$x$)0RCN>v17mF()v-LJuPxVH{pvtpa7&IE~}D#UA! z;QEb%;f)-0pJ$aglwuuD6j2!LLYvlqLv$9iv*~Az%{{~G7|+Q#42kbjf58JfEfP`8 zWVC1F3ra426QL!X?r;LNxD89O)cU&D8&Z2#-1+?+HJfgMrGU})ufYikGTmky8d0n~ z{=c5>O)|urI^l%6`!yOux`!Q27XJ!9lX;Wo+u9;a>Tut+Y*egk7QlYOCM#rG|Gp5u zsHh*5?DZ}Yq+)eHyD~-!wl>L-tIn=ttY!RBVyNUnerq2W&wp!Zx;Xmv_O?Df#c)RD z)7tuK(#Z0Cx2+l8ol5#u)Sw9R8Q2?6y>QKZnYf~S-L|;yOlcI^V7lT|#8_n`H3aBU z4GVU+T8lu3(QqqLv6+@kfI>kP1PoA{@^xr%oARpRxh?X%*|cvx&m9M~ZOxp@$J_Ua z_c+vG!kWvFdB!0VBj}lwo3|xqvDuAds2h7ne^iYhPMv_yA%F}@6yD^XQI26hCzYo7 zM=727=3q&j7&u&tIK8y-5Wx+s!OdM8Pt2|~^Z=AewxKJVuK(l9dR}I2-uDO?izIFq zCX6Hw5-jW}XV#gcaQ1q7M8ZnBMvEx%q4}m+DQ|F!cEz>qM(Mxp)XjJUgFkY`!3M3G zVB6>FakRWr&9PW;M3|4(Dm{(-9`Jm1=|778s7+aTFXDh_WMV`c0@CslMVT zPy#A0Q8WF2kN6@suMlrb=75_VfS|q@WCsR&q$$4BrhJ)&e0QkAs{T{7>3rm69J!Q; zxktYH>aW7%m^lIX#AZ#UVdpdUJLw5a?U&q&@7Fo2Ys zLgb6!48mvNxQ%U}@b?VDQkN+Xila8!zMNK07{sJiU;7x3w;^ zS3$*VUzyd6#x;S5X7uuSZiO_YCWaLMz%b92wk#f~!`!{NHj80jVq-5PG~NoQY2ufEPNvHK zDCi^Den>ASS(in{3T%cs7jk&&e0^hl5q*CyajH)?t+`3Y&;96n({oWb0?bJ6O=%Hq)$ literal 0 HcmV?d00001 diff --git a/content/tutorials/parallelization/SIMWE_images/river_basins.webp b/content/tutorials/parallelization/SIMWE_images/river_basins.webp new file mode 100644 index 0000000000000000000000000000000000000000..fcb04981692713c627b627fdd3d7a42eef618916 GIT binary patch literal 14804 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 literal 0 HcmV?d00001 diff --git a/content/tutorials/parallelization/SIMWE_parallelization.qmd b/content/tutorials/parallelization/SIMWE_parallelization.qmd new file mode 100644 index 0000000..b3866cd --- /dev/null +++ b/content/tutorials/parallelization/SIMWE_parallelization.qmd @@ -0,0 +1,891 @@ +--- +title: "Parallelization of overland flow and sediment transport simulation" +author: "Anna Petrasova" +date: 2025-06-25 +date-modified: today +categories: [Python, advanced, paralellization, hydrology, erosion] +description: > + In this tutorial we will run overland flow + and erosion simulation (SIMWE) split by subwatersheds + in parallel. +format: + html: + toc: true + code-tools: true + code-copy: true + code-fold: false + ipynb: default +engine: jupyter +execute: + eval: false +jupyter: python3 +--- + +# Introduction + +In this tutorial we will analyze overland water flow and erosion and deposition patterns along a Yadkin river in North Carolina, USA. +We will use SIMWE model for the flow and erosion modeling with simplified runoff inputs based on [National Land Cover Dataset](https://www.mrlc.gov/data) (NLCD). +We will use hydrologic units ([HUC 12](https://www.usgs.gov/national-hydrography/access-national-hydrography-products), subwatersheds, approximately 100 km2) along the river to divide our computation and parallelize it. +Finally, we will use National Elevation Dataset (NED) at 1/3 arc-second (approximately 10 m) resolution. + +Concepts covered in this tutorial: + +* Data download and ingestion +* Creating GRASS projects +* Data reprojection +* Basic vector and raster data processing +* Computational region +* Using mask to mask out subwatershed area +* Parallelization of a computational workflow +* Overland water flow and sediment transport simulation + +::: {.callout-note title="How to run this tutorial?"} +This tutorial is prepared to be run in a Jupyter notebook locally +or using services such as Google Colab. You can [download the notebook here](SIMWE_parallelization.ipynb). + +If you are not sure how to get started with GRASS, checkout the tutorials [Get started with GRASS & Python in Jupyter Notebooks](../get_started/fast_track_grass_and_python.qmd) +and [Get started with GRASS in Google Colab](../get_started/grass_gis_in_google_colab.qmd). +::: + + +# Setup + +Start with importing Python packages. +To import the grass package, you need to tell Python where the GRASS Python package is. + + +```{python} +# import standard Python packages +import os +import sys +import subprocess + +# check where GRASS python packages are and add them to PATH +sys.path.append( + subprocess.check_output(["grass", "--config", "python_path"], text=True).strip() +) +# import GRASS GIS python packages +import grass.script as gs +import grass.jupyter as gj +``` + +We will switch our working directory to a directory with enough space, this is where we will download the datsets. +With that, we will be able to use shorter, relative paths. + + +```{python} +os.chdir("path/to/data") +``` + +We will create a temporary folder, that will store our GRASS projects, since we don't need to retain them after we are done with the analysis. + + +```{python} +import tempfile + +tempdir = tempfile.TemporaryDirectory() +project_path = tempdir.name +``` + +# Input data download and processing + +## Download and link NLCD data + +Download link to the NLCD data can be found at [mrlc.gov/data](https://www.mrlc.gov/data). We will download it to the current working directory. + + +```{python} +import urllib.request + +url = "https://www.mrlc.gov/downloads/sciweb1/shared/mrlc/data-bundles/Annual_NLCD_LndCov_2023_CU_C1V0.tif" +nlcd_filename, headers = urllib.request.urlretrieve( + url, os.path.join(os.getcwd(), "NLCD.tif") +) +``` + +Create a GRASS project using the coordinate reference system (CRS) of the NLCD dataset, and link the NLCD raster with [r.external](https://grass.osgeo.org/grass-devel/manuals/r.external.html). This command creates a virtual raster without importing the full dataset, allowing us to work with just the small sections needed from the larger, nationwide NLCD file. + + +```{python} +from pathlib import Path + +nlcd_project = f"{Path(project_path, "nlcd")}" +# create a project +gs.create_project(nlcd_project, filename=nlcd_filename) +# initialize GRASS session in that project +session = gj.init(nlcd_project) +# create the virtual raster named "nlcd" +gs.run_command("r.external", input=nlcd_filename, output="nlcd") +``` + +We will use NLCD data later, now we process hydrography dataset. + +## Download and process NC hydrography dataset + +We will download and unzip [National Hydrography Dataset](https://www.usgs.gov/national-hydrography/access-national-hydrography-products) for North Carolina and create a GRASS project, in which we will extract the river and adjacent subwatersheds. + + +```{python} +import zipfile + +url = "https://prd-tnm.s3.amazonaws.com/StagedProducts/Hydrography/NHD/State/GPKG/NHD_H_North_Carolina_State_GPKG.zip" +hydro_filename, headers = urllib.request.urlretrieve(url) +with zipfile.ZipFile(hydro_filename, "r") as zip_ref: + zip_ref.extractall() +os.remove(hydro_filename) +hydro_filename = Path(url).stem + ".gpkg" +``` + +Create the GRASS project called "hydro" based on the hydrography data, the data is in latitude-longitude CRS. + + +```{python} +hydro_project = f"{Path(project_path, "hydro")}" + +gs.create_project(hydro_project, filename=hydro_filename) +session = gj.init(hydro_project) +``` + +First, let's list the layers available: + + +```{python} +gs.run_command("v.in.ogr", input=hydro_filename, flags="l") +``` + +```{python} +#| code-fold: true +#| code-summary: Output +NHDArea +NHDAreaEventFC +NHDFlowline +NHDLine +NHDLineEventFC +NHDPoint +NHDPointEventFC +NHDWaterbody +WBDHU10 +WBDHU12 +WBDHU14 +WBDHU16 +WBDHU2 +WBDHU4 +WBDHU6 +WBDHU8 +WBDLine +ExternalCrosswalk +NHDFCode +NHDFeatureToMetadata +NHDFlow +NHDFlowlineVAA +NHDMetadata +NHDProcessingParameters +NHDReachCodeMaintenance +NHDReachCrossReference +NHDSourceCitation +NHDStatus +NHDVerticalRelationship +``` + +Now we will import hydrography boundaries HUC12 (_WBDHU12_) to get the subwatersheds and the flow lines (_NHDFlowline_) to extract the specific river. + + +```{python} +gs.run_command("v.in.ogr", input=hydro_filename, layer="WBDHU12") +gs.run_command( + "v.in.ogr", + input=hydro_filename, + layer="NHDFlowline", + where="gnis_name == 'Yadkin River'", + output="river", +) +``` + +Next, we want to extract the subwatersheds along the river. +If we simply overlap (with [v.select](https://grass.osgeo.org/grass-devel/manuals/v.select.html)) the river and the subwatersheds, we will miss some of them: + + +```{python} +gs.run_command( + "v.select", + ainput="WBDHU12", + binput="river", + output="river_basins", + operator="overlap", +) + +basin_map = gj.InteractiveMap() +basin_map.add_vector("river_basins") +basin_map.add_vector("river") +basin_map.show() +``` + + +![](SIMWE_images/basins.webp) + +So instead we will [buffer](https://grass.osgeo.org/grass-devel/manuals/v.buffer.html) the river first: + + +```{python} +gs.run_command("v.buffer", input="river", output="river_buffer", distance=0.01) +gs.run_command( + "v.select", + ainput="WBDHU12", + binput="river_buffer", + output="river_basins", + operator="overlap", +) + +basin_map = gj.InteractiveMap() +basin_map.add_vector("river_basins") +basin_map.add_vector("river") +basin_map.show() +``` + + +![](SIMWE_images/river_basins.webp) + +The rest of the workflow will be done in a CRS used in North Carolina (EPSG 3358). + +## Reprojecting vector data to a CRS used in North Carolina + +Since we want our project to use a different CRS more suitable for our study area (EPSG:3358 for North Carolina), we will create it now: + + +```{python} +gs.create_project(path=project_path, name="NC", epsg="3358") +session = gj.init(f"{Path(project_path, 'NC')}") +``` + +We will reproject the river subwatersheds vector with [v.proj]((https://grass.osgeo.org/grass-devel/manuals/v.proj.html)): + + +```{python} +gs.run_command("v.proj", input="river_basins", project="hydro") +``` + +## Downloading NED elevation data + +We will use GRASS addon [r.in.usgs](https://grass.osgeo.org/grass-devel/manuals/addons/r.in.usgs.html) to download and import NED layer using [USGS TNM Access API](https://apps.nationalmap.gov/tnmaccess/). + +```{python} +gs.run_command("g.extension", extension="r.in.usgs") +``` + +First, we will set the computational region to match the river subwatersheds and then list available datasets +for that region: + + +```python +gs.run_command("g.region", vector="river_basins") +print( + gs.read_command( + "r.in.usgs", + product="ned", + ned_dataset="ned13sec", + flags="i", + output_directory=os.getcwd(), + ) +) +``` + +```{python} +#| code-fold: true +#| code-summary: Output + USGS file(s) to download: + ------------------------- + Total download size: 4.83 GB + Tile count: 16 + USGS SRS: wgs84 + USGS tile titles: + USGS 1/3 Arc Second n36w081 20240510 + USGS 1/3 Arc Second n36w082 20220504 + USGS 1/3 Arc Second n36w082 20220512 + USGS 1/3 Arc Second n36w082 20240510 + USGS 1/3 Arc Second n37w080 20210305 + USGS 1/3 Arc Second n37w081 20210305 + USGS 1/3 Arc Second n37w081 20240510 + USGS 1/3 Arc Second n37w082 20210305 + USGS 1/3 Arc Second n37w082 20220512 + USGS 1/3 Arc Second n37w082 20240510 + USGS 13 arc-second n36w080 1 x 1 degree + USGS 13 arc-second n36w081 1 x 1 degree + USGS 13 arc-second n36w082 1 x 1 degree + USGS 13 arc-second n37w080 1 x 1 degree + USGS 13 arc-second n37w081 1 x 1 degree + USGS 13 arc-second n37w082 1 x 1 degree + ------------------------- +``` + + +We will select the 2024 data and use the `title_filter` option to filter them. +We will first only download the datasets and use them later. + + +```{python} +gs.run_command( + "r.in.usgs", + product="ned", + ned_dataset="ned13sec", + flags="d", + output_directory=os.getcwd(), + title_filter="20240510", +) +``` + +Let's now compute the erosion/deposition for one of the subwatersheds. + +# Flow and erosion modeling for a single subwatershed + +We begin our analysis by selecting a single HUC12 subwatershed from the set of intersected basins. This subset will be used to test the erosion and deposition simulation workflow. For all outputs, we will use unique names with the subwatershed code as a prefix. That will help us with parallelization later on. + +Use [v.db.select](https://grass.osgeo.org/grass-devel/manuals/v.db.select.html) to retrieve the list of HUC12 codes from the attribute table that has "areasqkm" and "huc12" attributes. +Extract the smallest HUC12 polygon using [v.extract](https://grass.osgeo.org/grass-devel/manuals/v.extract.html). + + +```{python} +# Select for example the smallest huc12 +subwatersheds = gs.parse_command("v.db.select", map="river_basins", format="json")[ + "records" +] +huc12 = min(subwatersheds, key=lambda x: x["areasqkm"])["huc12"] +gs.run_command( + "v.extract", + input="river_basins", + output=f"basin_{huc12}", + where=f"huc12 == '{huc12}'", + flags="t", +) +``` + +Set the computational region with [g.region](https://grass.osgeo.org/grass-devel/manuals/g.region.html) to match the bounds of the selected subwatershed. + + +```{python} +gs.run_command("g.region", vector=f"basin_{huc12}") +``` + +Import the NED data for that subwatershed. r.in.usgs will use already downloaded data. + + +```{python} +gs.read_command( + "r.in.usgs", + product="ned", + ned_dataset="ned13sec", + cache_size_tolerance=int(1e10), + output_directory=os.getcwd(), + title_filter="20240510", + output_name=f"ned_{huc12}", +) + +basin_map = gj.Map() +basin_map.d_rast(map=f"ned_{huc12}") +basin_map.d_vect(map=f"basin_{huc12}", fill_color="none") +basin_map.show() +``` + +![](SIMWE_images/basin_030401010402.webp) + +Set the region to match the elevation raster. +Convert the selected vector to a raster using [v.to.rast](https://grass.osgeo.org/grass-devel/manuals/v.to.rast.html). + + +```{python} +gs.run_command("g.region", raster=f"ned_{huc12}") +gs.run_command("v.to.rast", input=f"basin_{huc12}", output=f"basin_{huc12}", use="val") +``` + +Apply a raster mask with [r.mask](https://grass.osgeo.org/grass-devel/manuals/r.mask.html) to restrict all subsequent raster operations to this subwatershed. + + +```{python} +gs.run_command("r.mask", raster=f"basin_{huc12}") + +basin_map = gj.Map() +basin_map.d_rast(map=f"ned_{huc12}") +basin_map.d_legend( + raster=f"ned_{huc12}", + flags="t", + at=[10, 15, 40, 95], + title="Elevation [m]", + fontsize=12, +) +basin_map.show() +``` + +![](SIMWE_images/basin_030401010402_masked.webp) + + +Reproject NLCD from a "nlcd" project to this project (see [NLCD legend](https://www.usgs.gov/media/images/annual-nlcd-land-cover-change-legend)): + + +```{python} +gs.run_command( + "r.proj", project="nlcd", mapset="PERMANENT", input="nlcd", output=f"nlcd_{huc12}" +) + +basin_map = gj.Map() +basin_map.d_rast(map=f"nlcd_{huc12}") +basin_map.show() +``` + +![](SIMWE_images/basin_030401010402_nlcd.webp) + + +We will create a file `mannings.txt` to reclassify NLCD to manning's coefficients. The values are suggestions from the [r.sim.water](https://grass.osgeo.org/grass-devel/manuals/r.sim.water.html) documentation. The format is described in [r.recode](https://grass.osgeo.org/grass-devel/manuals/r.recode.html) documentation. + + +```text +%%writefile mannings.txt +11:11:0.001 +21:21:0.0404 +22:23:0.0678 +24:24:0.0404 +31:31:0.0113 +41:41:0.36 +42:42:0.32 +43:52:0.4 +52:52:0.4 +71:71:0.368 +81:82:0.325 +90:90:0.086 +95:95:0.1825 +``` + + +```{python} +gs.run_command( + "r.recode", input=f"nlcd_{huc12}", output=f"mannings_{huc12}", rules="mannings.txt" +) +``` + +Similarly, we will reclassify rainfall excess (rainfall minus infiltration). +These rainfall excess values were derived using the SCS Curve Number method for 50 mm/h of precipitation, assigning typical Curve Numbers based on common hydrologic soil groups for each NLCD land cover class; +they provide a rough estimate and should be refined with local soil and land management data when available. + + +```text +%%writefile runoff.txt +11:11:0.0 +21:21:3.3 # Developed Open Space (CN ~68, HSG B) +22:22:7.9 # Developed Low Intensity (CN ~81, HSG C) +23:23:19.8 # Developed Medium Intensity (CN ~90, HSG C) +24:24:27.9 # Developed High Intensity (CN ~94, HSG D) +31:31:6.1 # Barren (CN ~75, HSG B) +41:41:0.0 # Forest (CN ~55, HSG A) — P < 0.2S → Q = 0 +42:42:0.0 +43:43:0.0 +52:52:3.3 # Shrub/Scrub (CN ~68, HSG B) +71:71:2.0 # Grassland (CN ~61, HSG A) +81:81:5.1 # Pasture (CN ~74, HSG B) +82:82:14.7 # Cropland (CN ~82, HSG C) +90:90:0.0 # Woody Wetlands (CN ~70, HSG D) — often saturated, still low Q here +95:95:0.0 # Herbaceous Wetlands +``` + + + +```{python} +gs.run_command( + "r.recode", input=f"nlcd_{huc12}", output=f"runoff_{huc12}", rules="runoff.txt" +) +``` + +Then, compute slope components (dx and dy) from the elevation raster to support hydrologic modeling. + + +```{python} +gs.run_command( + "r.slope.aspect", elevation=f"ned_{huc12}", dx=f"dx_{huc12}", dy=f"dy_{huc12}" +) +``` + +Run hydrologic and sediment simulations for the selected subwatershed. +First, simulate overland flow using [r.sim.water](https://grass.osgeo.org/grass-devel/manuals/r.sim.water.html) +with inputs for topography, Manning’s coefficients, and rainfall intensity. +Running the simulation may take a while. + + +```{python} +simulation_time = 300 +gs.run_command( + "r.sim.water", + elevation=f"ned_{huc12}", + dx=f"dx_{huc12}", + dy=f"dy_{huc12}", + depth=f"depth_{huc12}", + niterations=simulation_time, + man=f"mannings_{huc12}", + rain=f"runoff_{huc12}", +) + +basin_map = gj.Map() +basin_map.d_rast(map=f"depth_{huc12}") +basin_map.d_legend( + raster=f"depth_{huc12}", + flags="t", + at=[10, 15, 40, 95], + title="Depth [m]", + fontsize=12, +) +basin_map.show() +``` + +![](SIMWE_images/basin_030401010402_simwe.webp) + +Then, define parameters for sediment transport and run [r.sim.sediment](https://grass.osgeo.org/grass-devel/manuals/r.sim.sediment.html) +to compute erosion and deposition patterns. We will trim the resulting raster's edges to avoid extreme values at the edge. +The additional parameters for sediment erosion modeling are based on [WEPP](https://www.ars.usda.gov/midwest-area/west-lafayette-in/national-soil-erosion-research/docs/wepp/research/) model, here we use just a single-value estimate. + + +```{python} +gs.mapcalc(f"transport_capacity_{huc12} = 0.001") +gs.mapcalc(f"detachment_coef_{huc12} = 0.001") +gs.mapcalc(f"shear_stress_{huc12} = 0.01") +gs.run_command( + "r.sim.sediment", + elevation=f"ned_{huc12}", + water_depth=f"depth_{huc12}", + dx=f"dx_{huc12}", + dy=f"dy_{huc12}", + detachment_coeff=f"detachment_coef_{huc12}", + transport_coeff=f"transport_capacity_{huc12}", + shear_stress=f"shear_stress_{huc12}", + niterations=simulation_time, + erosion_deposition=f"erdep_tmp_{huc12}", + nwalkers=5 * gs.region()["cells"], +) +gs.run_command( + "r.grow", input=f"erdep_tmp_{huc12}", output=f"erdep_{huc12}", radius=-2.01 +) + +basin_map = gj.Map() +basin_map.d_rast(map=f"erdep_{huc12}") +basin_map.d_legend( + raster=f"erdep_{huc12}", + flags="t", + at=[10, 15, 40, 95], + range=[-0.5, 0.5], + digits=2, + title="Erosion/dep. [kg/m2s]", + fontsize=12, +) +basin_map.show() +``` + +![](SIMWE_images/basin_030401010402_erdep.webp) + + + +Calculate total erosion for the subwatershed. +Negative values from [r.sim.sediment](https://grass.osgeo.org/grass-devel/manuals/r.sim.sediment.html) +output are treated as erosion and converted to sediment mass. +Summary statistics are computed using [r.univar](https://grass.osgeo.org/grass-devel/manuals/r.univar.html). + + + +```{python} +# Erosion: extract negative values and convert to positive mass [kg/m^2] +gs.mapcalc( + f"erosion_{huc12} = if(erdep_{huc12} < 0, abs(erdep_{huc12}) * {simulation_time * 60}, null())" +) +erosion = gs.parse_command("r.univar", map=f"erosion_{huc12}", format="json") +``` + +```{python} +#| code-fold: true +#| code-summary: erosion +{'n': 181072, + 'null_cells': 418835, + 'cells': 599907, + 'min': 3.4630666334578564e-08, + 'max': 154011.390625, + 'range': 154011.39062496537, + 'mean': 98.83270611141184, + 'mean_of_abs': 98.83270611141184, + 'stddev': 1045.8673705761544, + 'variance': 1093838.556835879, + 'coeff_var': 1058.2199068769523, + 'sum': 17895835.761005566} +``` + +Remove the active raster mask using [r.mask](https://grass.osgeo.org/grass-devel/manuals/r.mask.html) with the `-r` flag, restoring operations to apply across the full region. + + + +```{python} +gs.run_command("r.mask", flags="r") +``` + +Display water depth (`depth`) and erosion-deposition (`erdep`) rasters for the selected subwatershed. + + +```{python} +basin_map = gj.InteractiveMap() +basin_map.add_raster(f"depth_{huc12}") +basin_map.add_raster(f"erdep_{huc12}") +basin_map.show() +``` + + +![](SIMWE_images/basin_030401010402_both.webp) + +# Parallelized hydrologic and sediment modeling + +To efficiently model erosion and deposition across a large number of HUC12 subwatersheds, +we will use the workflow we just ran and create a +script that uses Python's `multiprocessing` module to parallelize the workflow. +Each subwatershed is processed independently in its own environment, which allows computations to run concurrently without interference. + +Each subwatershed needs to set different mask and computational region, however normally, those settings are global, and so for different mask and region for each parallel process, we will use mask and region context managers. + +* Masking is handled using `MaskManager`, a [context manager for setting and managing raster mask](https://grass.osgeo.org/grass-devel/manuals/libpython/grass.script.html#grass.script.MaskManager), +making it possible to have custom mask for the current process. This feature is available only since GRASS 8.5. + + ```python + # create a copy of environment + env = os.environ.copy() + with gs.MaskManager(mask_name=f"basin_{huc12}", env=env): + # Run actual computation with active mask. + gs.run_command(..., env=env) + ``` + +* Computational region is handled using `RegionManager`, a [context manager for setting and managing computational region](https://grass.osgeo.org/grass-devel/manuals/libpython/grass.script.html#grass.script.RegionManager), +making it possible to have custom region for the current process. This feature is available only since GRASS 8.5. + + ```python + # create a copy of environment + env = os.environ.copy() + with gs.RegionManager(vector=f"basin_{huc12}", env=env): + # Run actual computation in the specified region. + gs.run_command(..., env=env) + ``` + +The environment, unique for each process, is passed through the `env` parameter to all tools. Results are collected and stored in a JSON file for further analysis. + + + +```{python} +%%writefile script.py +import os +import json +from multiprocessing import Pool, cpu_count +from tqdm import tqdm + +import grass.script as gs + + +def compute(huc12): + simulation_time = 300 + print(huc12) + gs.run_command( + "v.extract", + input="river_basins", + output=f"basin_{huc12}", + where=f"huc12 == '{huc12}'", + flags="t", + ) + # Create a copy of the environment for this process before modifying it. + env = os.environ.copy() + # Set the computational region to match non-null area in the new raster. + with gs.RegionManager(vector=f"basin_{huc12}", env=env): + gs.run_command( + "r.in.usgs", + product="ned", + ned_dataset="ned13sec", + cache_size_tolerance=int(1e10), + output_directory=os.getcwd(), + title_filter="20240510", + output_name=f"ned_{huc12}", + env=env, + ) + with gs.RegionManager(raster=f"ned_{huc12}", env=env): + gs.run_command( + "v.to.rast", + input=f"basin_{huc12}", + output=f"basin_{huc12}", + use="val", + env=env, + ) + with gs.MaskManager(mask_name=f"basin_{huc12}", env=env): + # Run actual computation with active mask. + gs.run_command( + "r.proj", + project="nlcd", + mapset="PERMANENT", + input="nlcd", + output=f"nlcd_{huc12}", + quiet=True, + env=env, + ) + gs.run_command( + "r.recode", + input=f"nlcd_{huc12}", + output=f"mannings_{huc12}", + rules="mannings.txt", + env=env, + ) + gs.run_command( + "r.recode", + input=f"nlcd_{huc12}", + output=f"runoff_{huc12}", + rules="runoff.txt", + env=env, + ) + gs.run_command( + "r.slope.aspect", + elevation=f"ned_{huc12}", + dx=f"dx_{huc12}", + dy=f"dy_{huc12}", + env=env, + ) + gs.run_command( + "r.sim.water", + elevation=f"ned_{huc12}", + dx=f"dx_{huc12}", + dy=f"dy_{huc12}", + depth=f"depth_{huc12}", + niterations=simulation_time, + man=f"mannings_{huc12}", + rain=f"runoff_{huc12}", + env=env, + ) + gs.mapcalc(f"transport_capacity_{huc12} = 0.001", env=env) + gs.mapcalc(f"detachment_coef_{huc12} = 0.001", env=env) + gs.mapcalc(f"shear_stress_{huc12} = 0.01", env=env) + region = gs.parse_command("g.region", flags="p", format="json", env=env) + gs.run_command( + "r.sim.sediment", + elevation=f"ned_{huc12}", + water_depth=f"depth_{huc12}", + dx=f"dx_{huc12}", + dy=f"dy_{huc12}", + detachment_coeff=f"detachment_coef_{huc12}", + transport_coeff=f"transport_capacity_{huc12}", + shear_stress=f"shear_stress_{huc12}", + niterations=simulation_time, + erosion_deposition=f"erdep_tmp_{huc12}", + nwalkers=5 * region["cells"], + env=env, + ) + gs.run_command( + "r.grow", + input=f"erdep_tmp_{huc12}", + output=f"erdep_{huc12}", + radius=-2.01, + env=env, + ) + # Erosion: extract negative values and convert to positive mass [kg/m^2] + gs.mapcalc( + f"erosion_{huc12} = if(erdep_{huc12} < 0, abs(erdep_{huc12}) * {simulation_time * 60}, null())", + env=env, + ) + erosion = gs.parse_command( + "r.univar", map=f"erosion_{huc12}", format="json", env=env + ) + return { + "huc12": huc12, + "erosion_mean": erosion["mean"], + "erosion_total": erosion["sum"] * region["nsres"] * region["ewres"], + } + + +if __name__ == "__main__": + basins = gs.parse_command("v.db.select", format="json", map="river_basins")[ + "records" + ] + huc12s = [basin["huc12"] for basin in basins] + + # set the number of processes: + with Pool(processes=cpu_count()) as pool: + result = list(tqdm(pool.imap(compute, huc12s), total=len(huc12s))) + with open("result.json", "w") as fp: + json.dump(result, fp) + +``` + +Now execute the script, it will take some time. + + +```{python} +%run script.py +``` + +Load the resulting JSON file into a pandas dataframe and normalize the results, so that we can easily compare the subwatersheds. + +```{python} +import json + +with open("result.json") as f: + stats = json.load(f) + +df = pd.DataFrame(stats) +df["normalized_erosion"] = df.erosion_mean / max( + max(df.erosion_mean), max(df.deposition_mean) +) +df["normalized_deposition"] = df.deposition_mean / max( + max(df.erosion_mean), max(df.deposition_mean) +) +df +``` + + +Load the subwatershed layers into geopandas for visualization. Join the dataframe with the simulation values using the _huc12_ key and keep only subwatersheds that have computed erosion values. + + +```{python} +import geopandas as gpd + +gdf = gpd.read_file(hydro_filename, layer="WBDHU12") +gdf = gdf.merge(df, on="huc12", how="left") +# JSON does not support Timestamp type +gdf = gdf.drop(columns=["loaddate"]) +gdf = gdf[gdf["erosion_total"].notna()] +``` + +Let's visualize the data with folium: + + +```{python} +import folium +import branca.colormap as cm + +metric = "normalized_deposition" +color_scale = cm.linear.OrRd_09.scale(min(gdf[metric]), max(gdf[metric])) +color_scale.caption = "Min-max normalized erosion" +region = gs.parse_command("g.region", vector="river_basins", format="json", flags="b") +m = folium.Map(location=[region["ll_clat"], region["ll_clon"]], zoom_start=9) + +tooltip = folium.GeoJsonTooltip( + fields=["huc12", "normalized_erosion", "normalized_deposition"], + aliases=["HUC12", "Normalized erosion:", "Normalized deposition:"], + localize=True, + sticky=False, + labels=True, + style=""" + background-color: #F0EFEF; + border: 2px solid black; + border-radius: 3px; + box-shadow: 3px; + """, + max_width=800, +) + +g = folium.GeoJson( + gdf, + style_function=lambda x: { + "fillColor": color_scale(x["properties"][metric]), + "color": "black", + "weight": 1, + "fillOpacity": 0.4, + }, + tooltip=tooltip, +).add_to(m) +color_scale.add_to(m) +folium.LayerControl().add_to(m) +m +``` + + + From ed1470379323f832280e0d58b60613570d87b263 Mon Sep 17 00:00:00 2001 From: Anna Petrasova Date: Mon, 30 Jun 2025 11:07:38 -0400 Subject: [PATCH 02/11] add figures --- .../basin_030401010402_erdep.webp | Bin 21898 -> 32958 bytes .../basin_030401010402_simwe.webp | Bin 19376 -> 32958 bytes .../SIMWE_images/thumbnail.webp | Bin 0 -> 12512 bytes .../parallelization/SIMWE_images/webmap.webp | Bin 0 -> 73826 bytes .../parallelization/SIMWE_parallelization.qmd | 36 ++++++++---------- 5 files changed, 16 insertions(+), 20 deletions(-) create mode 100644 content/tutorials/parallelization/SIMWE_images/thumbnail.webp create mode 100644 content/tutorials/parallelization/SIMWE_images/webmap.webp diff --git a/content/tutorials/parallelization/SIMWE_images/basin_030401010402_erdep.webp b/content/tutorials/parallelization/SIMWE_images/basin_030401010402_erdep.webp index b41efa37ac34f6490e319337f39009bdc76c189f..bf91cce6395a1dd02aa4d27437bfc18e096be7b7 100644 GIT binary patch literal 32958 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

LDs=_zR1U5Ds9xD6Qhi7Nw1EjTC25@czHz*aS7 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�D4gpb~Z8#kxft`);3iRAd~o>Q4?1^~W( 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 literal 19376 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 literal 0 HcmV?d00001 diff --git a/content/tutorials/parallelization/SIMWE_images/webmap.webp b/content/tutorials/parallelization/SIMWE_images/webmap.webp new file mode 100644 index 0000000000000000000000000000000000000000..d06455addaddd94290e14064e718ff2fe95deb4f GIT binary patch literal 73826 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 J4hwj6`5)kNhM@oe literal 0 HcmV?d00001 diff --git a/content/tutorials/parallelization/SIMWE_parallelization.qmd b/content/tutorials/parallelization/SIMWE_parallelization.qmd index b3866cd..fedbefe 100644 --- a/content/tutorials/parallelization/SIMWE_parallelization.qmd +++ b/content/tutorials/parallelization/SIMWE_parallelization.qmd @@ -8,6 +8,7 @@ description: > In this tutorial we will run overland flow and erosion simulation (SIMWE) split by subwatersheds in parallel. +thumbnail: SIMWE_images/thumbnail.webp format: html: toc: true @@ -677,8 +678,7 @@ import grass.script as gs def compute(huc12): - simulation_time = 300 - print(huc12) + simulation_time = 180 gs.run_command( "v.extract", input="river_basins", @@ -698,6 +698,7 @@ def compute(huc12): output_directory=os.getcwd(), title_filter="20240510", output_name=f"ned_{huc12}", + quiet=True, env=env, ) with gs.RegionManager(raster=f"ned_{huc12}", env=env): @@ -778,15 +779,16 @@ def compute(huc12): ) # Erosion: extract negative values and convert to positive mass [kg/m^2] gs.mapcalc( - f"erosion_{huc12} = if(erdep_{huc12} < 0, abs(erdep_{huc12}) * {simulation_time * 60}, null())", + f"erosion_{huc12} = if(erdep_{huc12} < 0, abs(erdep_{huc12}) * {simulation_time * 60}, 0)", env=env, ) erosion = gs.parse_command( - "r.univar", map=f"erosion_{huc12}", format="json", env=env + "r.univar", map=f"erosion_{huc12}", format="json", flags="e", env=env ) return { "huc12": huc12, "erosion_mean": erosion["mean"], + "erosion_median": erosion["median"], "erosion_total": erosion["sum"] * region["nsres"] * region["ewres"], } @@ -796,13 +798,11 @@ if __name__ == "__main__": "records" ] huc12s = [basin["huc12"] for basin in basins] - # set the number of processes: with Pool(processes=cpu_count()) as pool: result = list(tqdm(pool.imap(compute, huc12s), total=len(huc12s))) with open("result.json", "w") as fp: json.dump(result, fp) - ``` Now execute the script, it will take some time. @@ -815,18 +815,14 @@ Now execute the script, it will take some time. Load the resulting JSON file into a pandas dataframe and normalize the results, so that we can easily compare the subwatersheds. ```{python} +import pandas as pd import json with open("result.json") as f: stats = json.load(f) df = pd.DataFrame(stats) -df["normalized_erosion"] = df.erosion_mean / max( - max(df.erosion_mean), max(df.deposition_mean) -) -df["normalized_deposition"] = df.deposition_mean / max( - max(df.erosion_mean), max(df.deposition_mean) -) +df["normalized_erosion"] = df.erosion_mean / max(df.erosion_mean) df ``` @@ -851,15 +847,16 @@ Let's visualize the data with folium: import folium import branca.colormap as cm -metric = "normalized_deposition" +metric = "normalized_erosion" color_scale = cm.linear.OrRd_09.scale(min(gdf[metric]), max(gdf[metric])) -color_scale.caption = "Min-max normalized erosion" +color_scale.caption = "Min-max normalized mean erosion" +# get region center as latitude, longitude region = gs.parse_command("g.region", vector="river_basins", format="json", flags="b") m = folium.Map(location=[region["ll_clat"], region["ll_clon"]], zoom_start=9) tooltip = folium.GeoJsonTooltip( - fields=["huc12", "normalized_erosion", "normalized_deposition"], - aliases=["HUC12", "Normalized erosion:", "Normalized deposition:"], + fields=["huc12", metric], + aliases=["HUC12", "Normalized mean erosion:"], localize=True, sticky=False, labels=True, @@ -876,9 +873,8 @@ g = folium.GeoJson( gdf, style_function=lambda x: { "fillColor": color_scale(x["properties"][metric]), - "color": "black", - "weight": 1, - "fillOpacity": 0.4, + "color": "black", "weight": 1, + "fillOpacity": 0.5, }, tooltip=tooltip, ).add_to(m) @@ -887,5 +883,5 @@ folium.LayerControl().add_to(m) m ``` - +![](SIMWE_images/webmap.webp) From 1e0b6b4ff0b17ab8b93743b8477d58469fc915d7 Mon Sep 17 00:00:00 2001 From: Anna Petrasova Date: Tue, 1 Jul 2025 12:52:54 -0400 Subject: [PATCH 03/11] fixes --- .../parallelization/SIMWE_parallelization.qmd | 128 ++++++------------ 1 file changed, 42 insertions(+), 86 deletions(-) diff --git a/content/tutorials/parallelization/SIMWE_parallelization.qmd b/content/tutorials/parallelization/SIMWE_parallelization.qmd index fedbefe..e7572b6 100644 --- a/content/tutorials/parallelization/SIMWE_parallelization.qmd +++ b/content/tutorials/parallelization/SIMWE_parallelization.qmd @@ -24,12 +24,28 @@ jupyter: python3 # Introduction -In this tutorial we will analyze overland water flow and erosion and deposition patterns along a Yadkin river in North Carolina, USA. -We will use SIMWE model for the flow and erosion modeling with simplified runoff inputs based on [National Land Cover Dataset](https://www.mrlc.gov/data) (NLCD). -We will use hydrologic units ([HUC 12](https://www.usgs.gov/national-hydrography/access-national-hydrography-products), subwatersheds, approximately 100 km2) along the river to divide our computation and parallelize it. -Finally, we will use National Elevation Dataset (NED) at 1/3 arc-second (approximately 10 m) resolution. +In this tutorial, we will model overland water flow as well as erosion and +deposition patterns along the Yadkin River in North Carolina, USA. -Concepts covered in this tutorial: +To simulate these processes, we will use the SIMWE model, with simplified +runoff inputs derived from the +[National Land Cover Dataset (NLCD)](https://www.mrlc.gov/data). + +To enable parallel processing and improve computational efficiency, we will +divide the study area into hydrologic units +([HUC 12](https://www.usgs.gov/national-hydrography/access-national-hydrography-products) +subwatersheds, each approximately 100 km² in size) and run simulations +independently for each unit. + +This approach demonstrates how to leverage new Python API features introduced +in GRASS 8.5—specifically, the `MaskManager` and `RegionManager`—which simplify +region and mask handling in parallel workflows. + +The terrain data used for modeling will come from the +[National Elevation Dataset (NED)](https://www.usgs.gov/publications/national-elevation-dataset) +at 1/3 arc-second (~10 m) resolution. + +Additional concepts covered in this tutorial: * Data download and ingestion * Creating GRASS projects @@ -48,13 +64,11 @@ If you are not sure how to get started with GRASS, checkout the tutorials [Get s and [Get started with GRASS in Google Colab](../get_started/grass_gis_in_google_colab.qmd). ::: - # Setup Start with importing Python packages. To import the grass package, you need to tell Python where the GRASS Python package is. - ```{python} # import standard Python packages import os @@ -73,14 +87,12 @@ import grass.jupyter as gj We will switch our working directory to a directory with enough space, this is where we will download the datsets. With that, we will be able to use shorter, relative paths. - ```{python} os.chdir("path/to/data") ``` We will create a temporary folder, that will store our GRASS projects, since we don't need to retain them after we are done with the analysis. - ```{python} import tempfile @@ -94,7 +106,6 @@ project_path = tempdir.name Download link to the NLCD data can be found at [mrlc.gov/data](https://www.mrlc.gov/data). We will download it to the current working directory. - ```{python} import urllib.request @@ -106,7 +117,6 @@ nlcd_filename, headers = urllib.request.urlretrieve( Create a GRASS project using the coordinate reference system (CRS) of the NLCD dataset, and link the NLCD raster with [r.external](https://grass.osgeo.org/grass-devel/manuals/r.external.html). This command creates a virtual raster without importing the full dataset, allowing us to work with just the small sections needed from the larger, nationwide NLCD file. - ```{python} from pathlib import Path @@ -125,7 +135,6 @@ We will use NLCD data later, now we process hydrography dataset. We will download and unzip [National Hydrography Dataset](https://www.usgs.gov/national-hydrography/access-national-hydrography-products) for North Carolina and create a GRASS project, in which we will extract the river and adjacent subwatersheds. - ```{python} import zipfile @@ -139,7 +148,6 @@ hydro_filename = Path(url).stem + ".gpkg" Create the GRASS project called "hydro" based on the hydrography data, the data is in latitude-longitude CRS. - ```{python} hydro_project = f"{Path(project_path, "hydro")}" @@ -149,7 +157,6 @@ session = gj.init(hydro_project) First, let's list the layers available: - ```{python} gs.run_command("v.in.ogr", input=hydro_filename, flags="l") ``` @@ -190,7 +197,6 @@ NHDVerticalRelationship Now we will import hydrography boundaries HUC12 (_WBDHU12_) to get the subwatersheds and the flow lines (_NHDFlowline_) to extract the specific river. - ```{python} gs.run_command("v.in.ogr", input=hydro_filename, layer="WBDHU12") gs.run_command( @@ -205,7 +211,6 @@ gs.run_command( Next, we want to extract the subwatersheds along the river. If we simply overlap (with [v.select](https://grass.osgeo.org/grass-devel/manuals/v.select.html)) the river and the subwatersheds, we will miss some of them: - ```{python} gs.run_command( "v.select", @@ -221,12 +226,10 @@ basin_map.add_vector("river") basin_map.show() ``` - ![](SIMWE_images/basins.webp) So instead we will [buffer](https://grass.osgeo.org/grass-devel/manuals/v.buffer.html) the river first: - ```{python} gs.run_command("v.buffer", input="river", output="river_buffer", distance=0.01) gs.run_command( @@ -243,15 +246,13 @@ basin_map.add_vector("river") basin_map.show() ``` - ![](SIMWE_images/river_basins.webp) The rest of the workflow will be done in a CRS used in North Carolina (EPSG 3358). ## Reprojecting vector data to a CRS used in North Carolina -Since we want our project to use a different CRS more suitable for our study area (EPSG:3358 for North Carolina), we will create it now: - +Since we want our project to use a different CRS more suitable for our study area (EPSG:3358 for North Carolina), we will create it now: ```{python} gs.create_project(path=project_path, name="NC", epsg="3358") @@ -260,7 +261,6 @@ session = gj.init(f"{Path(project_path, 'NC')}") We will reproject the river subwatersheds vector with [v.proj]((https://grass.osgeo.org/grass-devel/manuals/v.proj.html)): - ```{python} gs.run_command("v.proj", input="river_basins", project="hydro") ``` @@ -276,7 +276,6 @@ gs.run_command("g.extension", extension="r.in.usgs") First, we will set the computational region to match the river subwatersheds and then list available datasets for that region: - ```python gs.run_command("g.region", vector="river_basins") print( @@ -295,9 +294,9 @@ print( #| code-summary: Output USGS file(s) to download: ------------------------- - Total download size: 4.83 GB - Tile count: 16 - USGS SRS: wgs84 + Total download size: 4.83 GB + Tile count: 16 + USGS SRS: wgs84 USGS tile titles: USGS 1/3 Arc Second n36w081 20240510 USGS 1/3 Arc Second n36w082 20220504 @@ -318,11 +317,9 @@ print( ------------------------- ``` - We will select the 2024 data and use the `title_filter` option to filter them. We will first only download the datasets and use them later. - ```{python} gs.run_command( "r.in.usgs", @@ -343,7 +340,6 @@ We begin our analysis by selecting a single HUC12 subwatershed from the set of i Use [v.db.select](https://grass.osgeo.org/grass-devel/manuals/v.db.select.html) to retrieve the list of HUC12 codes from the attribute table that has "areasqkm" and "huc12" attributes. Extract the smallest HUC12 polygon using [v.extract](https://grass.osgeo.org/grass-devel/manuals/v.extract.html). - ```{python} # Select for example the smallest huc12 subwatersheds = gs.parse_command("v.db.select", map="river_basins", format="json")[ @@ -361,14 +357,12 @@ gs.run_command( Set the computational region with [g.region](https://grass.osgeo.org/grass-devel/manuals/g.region.html) to match the bounds of the selected subwatershed. - ```{python} gs.run_command("g.region", vector=f"basin_{huc12}") ``` Import the NED data for that subwatershed. r.in.usgs will use already downloaded data. - ```{python} gs.read_command( "r.in.usgs", @@ -391,7 +385,6 @@ basin_map.show() Set the region to match the elevation raster. Convert the selected vector to a raster using [v.to.rast](https://grass.osgeo.org/grass-devel/manuals/v.to.rast.html). - ```{python} gs.run_command("g.region", raster=f"ned_{huc12}") gs.run_command("v.to.rast", input=f"basin_{huc12}", output=f"basin_{huc12}", use="val") @@ -399,7 +392,6 @@ gs.run_command("v.to.rast", input=f"basin_{huc12}", output=f"basin_{huc12}", use Apply a raster mask with [r.mask](https://grass.osgeo.org/grass-devel/manuals/r.mask.html) to restrict all subsequent raster operations to this subwatershed. - ```{python} gs.run_command("r.mask", raster=f"basin_{huc12}") @@ -417,10 +409,8 @@ basin_map.show() ![](SIMWE_images/basin_030401010402_masked.webp) - Reproject NLCD from a "nlcd" project to this project (see [NLCD legend](https://www.usgs.gov/media/images/annual-nlcd-land-cover-change-legend)): - ```{python} gs.run_command( "r.proj", project="nlcd", mapset="PERMANENT", input="nlcd", output=f"nlcd_{huc12}" @@ -433,10 +423,8 @@ basin_map.show() ![](SIMWE_images/basin_030401010402_nlcd.webp) - We will create a file `mannings.txt` to reclassify NLCD to manning's coefficients. The values are suggestions from the [r.sim.water](https://grass.osgeo.org/grass-devel/manuals/r.sim.water.html) documentation. The format is described in [r.recode](https://grass.osgeo.org/grass-devel/manuals/r.recode.html) documentation. - ```text %%writefile mannings.txt 11:11:0.001 @@ -454,7 +442,6 @@ We will create a file `mannings.txt` to reclassify NLCD to manning's coefficient 95:95:0.1825 ``` - ```{python} gs.run_command( "r.recode", input=f"nlcd_{huc12}", output=f"mannings_{huc12}", rules="mannings.txt" @@ -465,7 +452,6 @@ Similarly, we will reclassify rainfall excess (rainfall minus infiltration). These rainfall excess values were derived using the SCS Curve Number method for 50 mm/h of precipitation, assigning typical Curve Numbers based on common hydrologic soil groups for each NLCD land cover class; they provide a rough estimate and should be refined with local soil and land management data when available. - ```text %%writefile runoff.txt 11:11:0.0 @@ -485,8 +471,6 @@ they provide a rough estimate and should be refined with local soil and land man 95:95:0.0 # Herbaceous Wetlands ``` - - ```{python} gs.run_command( "r.recode", input=f"nlcd_{huc12}", output=f"runoff_{huc12}", rules="runoff.txt" @@ -495,7 +479,6 @@ gs.run_command( Then, compute slope components (dx and dy) from the elevation raster to support hydrologic modeling. - ```{python} gs.run_command( "r.slope.aspect", elevation=f"ned_{huc12}", dx=f"dx_{huc12}", dy=f"dy_{huc12}" @@ -507,7 +490,6 @@ First, simulate overland flow using [r.sim.water](https://grass.osgeo.org/grass- with inputs for topography, Manning’s coefficients, and rainfall intensity. Running the simulation may take a while. - ```{python} simulation_time = 300 gs.run_command( @@ -539,7 +521,6 @@ Then, define parameters for sediment transport and run [r.sim.sediment](https:// to compute erosion and deposition patterns. We will trim the resulting raster's edges to avoid extreme values at the edge. The additional parameters for sediment erosion modeling are based on [WEPP](https://www.ars.usda.gov/midwest-area/west-lafayette-in/national-soil-erosion-research/docs/wepp/research/) model, here we use just a single-value estimate. - ```{python} gs.mapcalc(f"transport_capacity_{huc12} = 0.001") gs.mapcalc(f"detachment_coef_{huc12} = 0.001") @@ -577,15 +558,11 @@ basin_map.show() ![](SIMWE_images/basin_030401010402_erdep.webp) - - Calculate total erosion for the subwatershed. Negative values from [r.sim.sediment](https://grass.osgeo.org/grass-devel/manuals/r.sim.sediment.html) output are treated as erosion and converted to sediment mass. Summary statistics are computed using [r.univar](https://grass.osgeo.org/grass-devel/manuals/r.univar.html). - - ```{python} # Erosion: extract negative values and convert to positive mass [kg/m^2] gs.mapcalc( @@ -613,15 +590,12 @@ erosion = gs.parse_command("r.univar", map=f"erosion_{huc12}", format="json") Remove the active raster mask using [r.mask](https://grass.osgeo.org/grass-devel/manuals/r.mask.html) with the `-r` flag, restoring operations to apply across the full region. - - ```{python} gs.run_command("r.mask", flags="r") ``` Display water depth (`depth`) and erosion-deposition (`erdep`) rasters for the selected subwatershed. - ```{python} basin_map = gj.InteractiveMap() basin_map.add_raster(f"depth_{huc12}") @@ -629,7 +603,6 @@ basin_map.add_raster(f"erdep_{huc12}") basin_map.show() ``` - ![](SIMWE_images/basin_030401010402_both.webp) # Parallelized hydrologic and sediment modeling @@ -645,27 +618,24 @@ Each subwatershed needs to set different mask and computational region, however making it possible to have custom mask for the current process. This feature is available only since GRASS 8.5. ```python - # create a copy of environment - env = os.environ.copy() - with gs.MaskManager(mask_name=f"basin_{huc12}", env=env): + with gs.MaskManager(mask_name=f"basin_{huc12}"): # Run actual computation with active mask. - gs.run_command(..., env=env) + gs.run_command(...) ``` * Computational region is handled using `RegionManager`, a [context manager for setting and managing computational region](https://grass.osgeo.org/grass-devel/manuals/libpython/grass.script.html#grass.script.RegionManager), making it possible to have custom region for the current process. This feature is available only since GRASS 8.5. ```python - # create a copy of environment - env = os.environ.copy() - with gs.RegionManager(vector=f"basin_{huc12}", env=env): + with gs.RegionManager(vector=f"basin_{huc12}"): # Run actual computation in the specified region. - gs.run_command(..., env=env) + gs.run_command(...) ``` -The environment, unique for each process, is passed through the `env` parameter to all tools. Results are collected and stored in a JSON file for further analysis. - +## Putting it all together +We will put all the pieces together into a script that runs each subwatershed in parallel. +The resulting statistics for each subwatershed are collected and stored in a JSON file for further analysis. ```{python} %%writefile script.py @@ -686,10 +656,8 @@ def compute(huc12): where=f"huc12 == '{huc12}'", flags="t", ) - # Create a copy of the environment for this process before modifying it. - env = os.environ.copy() # Set the computational region to match non-null area in the new raster. - with gs.RegionManager(vector=f"basin_{huc12}", env=env): + with gs.RegionManager(vector=f"basin_{huc12}"): gs.run_command( "r.in.usgs", product="ned", @@ -699,17 +667,15 @@ def compute(huc12): title_filter="20240510", output_name=f"ned_{huc12}", quiet=True, - env=env, ) - with gs.RegionManager(raster=f"ned_{huc12}", env=env): + with gs.RegionManager(raster=f"ned_{huc12}"): gs.run_command( "v.to.rast", input=f"basin_{huc12}", output=f"basin_{huc12}", use="val", - env=env, ) - with gs.MaskManager(mask_name=f"basin_{huc12}", env=env): + with gs.MaskManager(mask_name=f"basin_{huc12}"): # Run actual computation with active mask. gs.run_command( "r.proj", @@ -718,28 +684,24 @@ def compute(huc12): input="nlcd", output=f"nlcd_{huc12}", quiet=True, - env=env, ) gs.run_command( "r.recode", input=f"nlcd_{huc12}", output=f"mannings_{huc12}", rules="mannings.txt", - env=env, ) gs.run_command( "r.recode", input=f"nlcd_{huc12}", output=f"runoff_{huc12}", rules="runoff.txt", - env=env, ) gs.run_command( "r.slope.aspect", elevation=f"ned_{huc12}", dx=f"dx_{huc12}", dy=f"dy_{huc12}", - env=env, ) gs.run_command( "r.sim.water", @@ -750,12 +712,11 @@ def compute(huc12): niterations=simulation_time, man=f"mannings_{huc12}", rain=f"runoff_{huc12}", - env=env, ) - gs.mapcalc(f"transport_capacity_{huc12} = 0.001", env=env) - gs.mapcalc(f"detachment_coef_{huc12} = 0.001", env=env) - gs.mapcalc(f"shear_stress_{huc12} = 0.01", env=env) - region = gs.parse_command("g.region", flags="p", format="json", env=env) + gs.mapcalc(f"transport_capacity_{huc12} = 0.001") + gs.mapcalc(f"detachment_coef_{huc12} = 0.001") + gs.mapcalc(f"shear_stress_{huc12} = 0.01") + region = gs.parse_command("g.region", flags="p", format="json") gs.run_command( "r.sim.sediment", elevation=f"ned_{huc12}", @@ -768,22 +729,19 @@ def compute(huc12): niterations=simulation_time, erosion_deposition=f"erdep_tmp_{huc12}", nwalkers=5 * region["cells"], - env=env, ) gs.run_command( "r.grow", input=f"erdep_tmp_{huc12}", output=f"erdep_{huc12}", radius=-2.01, - env=env, ) # Erosion: extract negative values and convert to positive mass [kg/m^2] gs.mapcalc( f"erosion_{huc12} = if(erdep_{huc12} < 0, abs(erdep_{huc12}) * {simulation_time * 60}, 0)", - env=env, ) erosion = gs.parse_command( - "r.univar", map=f"erosion_{huc12}", format="json", flags="e", env=env + "r.univar", map=f"erosion_{huc12}", format="json", flags="e" ) return { "huc12": huc12, @@ -807,7 +765,6 @@ if __name__ == "__main__": Now execute the script, it will take some time. - ```{python} %run script.py ``` @@ -826,10 +783,8 @@ df["normalized_erosion"] = df.erosion_mean / max(df.erosion_mean) df ``` - Load the subwatershed layers into geopandas for visualization. Join the dataframe with the simulation values using the _huc12_ key and keep only subwatersheds that have computed erosion values. - ```{python} import geopandas as gpd @@ -842,7 +797,6 @@ gdf = gdf[gdf["erosion_total"].notna()] Let's visualize the data with folium: - ```{python} import folium import branca.colormap as cm @@ -885,3 +839,5 @@ m ![](SIMWE_images/webmap.webp) +We can now identify subwatersheds that have larger erosion values and are potentially +the source of the source of increased sediment loads downstream, contributing to water quality degradation and habitat disruption. From d1cf2dac21135db8b3412fa0a6b3bbeb11a6b6fb Mon Sep 17 00:00:00 2001 From: Anna Petrasova Date: Tue, 1 Jul 2025 13:01:11 -0400 Subject: [PATCH 04/11] fix thumbnail --- content/tutorials/parallelization/SIMWE_parallelization.qmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/tutorials/parallelization/SIMWE_parallelization.qmd b/content/tutorials/parallelization/SIMWE_parallelization.qmd index e7572b6..0838e16 100644 --- a/content/tutorials/parallelization/SIMWE_parallelization.qmd +++ b/content/tutorials/parallelization/SIMWE_parallelization.qmd @@ -8,7 +8,7 @@ description: > In this tutorial we will run overland flow and erosion simulation (SIMWE) split by subwatersheds in parallel. -thumbnail: SIMWE_images/thumbnail.webp +image: SIMWE_images/thumbnail.webp format: html: toc: true From e01738400a908098a2144a5d67b50a06b46db6bd Mon Sep 17 00:00:00 2001 From: Anna Petrasova Date: Fri, 29 Aug 2025 12:53:08 -0400 Subject: [PATCH 05/11] add Tools API --- .../basin_030401010402_erdep.webp | Bin 32958 -> 35654 bytes .../parallelization/SIMWE_parallelization.qmd | 206 ++++++++---------- 2 files changed, 92 insertions(+), 114 deletions(-) diff --git a/content/tutorials/parallelization/SIMWE_images/basin_030401010402_erdep.webp b/content/tutorials/parallelization/SIMWE_images/basin_030401010402_erdep.webp index bf91cce6395a1dd02aa4d27437bfc18e096be7b7..d3d9993b6a803578417a72e29ee19e7a22e4d66c 100644 GIT binary patch delta 31939 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 delta 29222 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 In this tutorial we will run overland flow and erosion simulation (SIMWE) split by subwatersheds in parallel. image: SIMWE_images/thumbnail.webp format: + ipynb: default html: toc: true code-tools: true code-copy: true code-fold: false - ipynb: default engine: jupyter execute: eval: false @@ -38,8 +38,11 @@ subwatersheds, each approximately 100 km² in size) and run simulations independently for each unit. This approach demonstrates how to leverage new Python API features introduced -in GRASS 8.5—specifically, the `MaskManager` and `RegionManager`—which simplify -region and mask handling in parallel workflows. +in GRASS 8.5—specifically, the [Tools API](https://grass.osgeo.org/grass-devel/manuals/libpython/grass.tools.html#) +and the [MaskManager](https://grass.osgeo.org/grass-devel/manuals/libpython/grass.script.html#grass.script.MaskManager) +and [RegionManager](https://grass.osgeo.org/grass-devel/manuals/libpython/grass.script.html#grass.script.RegionManager) +context managers—which simplify region and mask handling +and are especially useful in parallel workflows. The terrain data used for modeling will come from the [National Elevation Dataset (NED)](https://www.usgs.gov/publications/national-elevation-dataset) @@ -82,6 +85,7 @@ sys.path.append( # import GRASS GIS python packages import grass.script as gs import grass.jupyter as gj +from grass.tools import Tools ``` We will switch our working directory to a directory with enough space, this is where we will download the datsets. @@ -104,18 +108,22 @@ project_path = tempdir.name ## Download and link NLCD data -Download link to the NLCD data can be found at [mrlc.gov/data](https://www.mrlc.gov/data). We will download it to the current working directory. +Up-to-date download link to the NLCD data can be found at [mrlc.gov/data](https://www.mrlc.gov/data). We will download and unzip it to the current working directory. ```{python} import urllib.request +import zipfile +from pathlib import Path -url = "https://www.mrlc.gov/downloads/sciweb1/shared/mrlc/data-bundles/Annual_NLCD_LndCov_2023_CU_C1V0.tif" -nlcd_filename, headers = urllib.request.urlretrieve( - url, os.path.join(os.getcwd(), "NLCD.tif") -) +url = "https://www.mrlc.gov/downloads/sciweb1/shared/mrlc/data-bundles/Annual_NLCD_LndCov_2024_CU_C1V1.zip" +nlcd_filename, headers = urllib.request.urlretrieve(url) +with zipfile.ZipFile(nlcd_filename, "r") as zip_ref: + zip_ref.extractall() +os.remove(nlcd_filename) +nlcd_filename = Path(url).stem + ".tif" ``` -Create a GRASS project using the coordinate reference system (CRS) of the NLCD dataset, and link the NLCD raster with [r.external](https://grass.osgeo.org/grass-devel/manuals/r.external.html). This command creates a virtual raster without importing the full dataset, allowing us to work with just the small sections needed from the larger, nationwide NLCD file. +Create a GRASS project using the coordinate reference system (CRS) of the NLCD dataset. ```{python} from pathlib import Path @@ -125,8 +133,13 @@ nlcd_project = f"{Path(project_path, "nlcd")}" gs.create_project(nlcd_project, filename=nlcd_filename) # initialize GRASS session in that project session = gj.init(nlcd_project) -# create the virtual raster named "nlcd" -gs.run_command("r.external", input=nlcd_filename, output="nlcd") +``` + +Link the NLCD raster with [r.external](https://grass.osgeo.org/grass-devel/manuals/r.external.html). This command creates a virtual raster without importing the full dataset, allowing us to work with just the small sections needed from the larger, nationwide NLCD file. + +```{python} +tools = Tools() +tools.r_external(input=nlcd_filename, output="nlcd") ``` We will use NLCD data later, now we process hydrography dataset. @@ -158,12 +171,10 @@ session = gj.init(hydro_project) First, let's list the layers available: ```{python} -gs.run_command("v.in.ogr", input=hydro_filename, flags="l") +print(tools.v_in_ogr(input=hydro_filename, flags="l").text) ``` -```{python} -#| code-fold: true -#| code-summary: Output +```text NHDArea NHDAreaEventFC NHDFlowline @@ -198,9 +209,8 @@ NHDVerticalRelationship Now we will import hydrography boundaries HUC12 (_WBDHU12_) to get the subwatersheds and the flow lines (_NHDFlowline_) to extract the specific river. ```{python} -gs.run_command("v.in.ogr", input=hydro_filename, layer="WBDHU12") -gs.run_command( - "v.in.ogr", +tools.v_in_ogr(input=hydro_filename, layer="WBDHU12") +tools.v_in_ogr( input=hydro_filename, layer="NHDFlowline", where="gnis_name == 'Yadkin River'", @@ -212,8 +222,7 @@ Next, we want to extract the subwatersheds along the river. If we simply overlap (with [v.select](https://grass.osgeo.org/grass-devel/manuals/v.select.html)) the river and the subwatersheds, we will miss some of them: ```{python} -gs.run_command( - "v.select", +tools.v_select( ainput="WBDHU12", binput="river", output="river_basins", @@ -231,9 +240,8 @@ basin_map.show() So instead we will [buffer](https://grass.osgeo.org/grass-devel/manuals/v.buffer.html) the river first: ```{python} -gs.run_command("v.buffer", input="river", output="river_buffer", distance=0.01) -gs.run_command( - "v.select", +tools.v_buffer(input="river", output="river_buffer", distance=0.01) +tools.v_select( ainput="WBDHU12", binput="river_buffer", output="river_basins", @@ -262,7 +270,7 @@ session = gj.init(f"{Path(project_path, 'NC')}") We will reproject the river subwatersheds vector with [v.proj]((https://grass.osgeo.org/grass-devel/manuals/v.proj.html)): ```{python} -gs.run_command("v.proj", input="river_basins", project="hydro") +tools.v_proj(input="river_basins", project="hydro") ``` ## Downloading NED elevation data @@ -270,28 +278,25 @@ gs.run_command("v.proj", input="river_basins", project="hydro") We will use GRASS addon [r.in.usgs](https://grass.osgeo.org/grass-devel/manuals/addons/r.in.usgs.html) to download and import NED layer using [USGS TNM Access API](https://apps.nationalmap.gov/tnmaccess/). ```{python} -gs.run_command("g.extension", extension="r.in.usgs") +tools.g_extension(extension="r.in.usgs") ``` First, we will set the computational region to match the river subwatersheds and then list available datasets for that region: -```python -gs.run_command("g.region", vector="river_basins") +```{python} +tools.g_region(vector="river_basins") print( - gs.read_command( - "r.in.usgs", + tools.r_in_usgs( product="ned", ned_dataset="ned13sec", flags="i", output_directory=os.getcwd(), - ) + ).text ) ``` -```{python} -#| code-fold: true -#| code-summary: Output +```text USGS file(s) to download: ------------------------- Total download size: 4.83 GB @@ -321,8 +326,7 @@ We will select the 2024 data and use the `title_filter` option to filter them. We will first only download the datasets and use them later. ```{python} -gs.run_command( - "r.in.usgs", +tools.r_in_usgs( product="ned", ned_dataset="ned13sec", flags="d", @@ -342,12 +346,9 @@ Extract the smallest HUC12 polygon using [v.extract](https://grass.osgeo.org/gra ```{python} # Select for example the smallest huc12 -subwatersheds = gs.parse_command("v.db.select", map="river_basins", format="json")[ - "records" -] +subwatersheds = tools.v_db_select(map="river_basins", format="json")["records"] huc12 = min(subwatersheds, key=lambda x: x["areasqkm"])["huc12"] -gs.run_command( - "v.extract", +tools.v_extract( input="river_basins", output=f"basin_{huc12}", where=f"huc12 == '{huc12}'", @@ -358,14 +359,13 @@ gs.run_command( Set the computational region with [g.region](https://grass.osgeo.org/grass-devel/manuals/g.region.html) to match the bounds of the selected subwatershed. ```{python} -gs.run_command("g.region", vector=f"basin_{huc12}") +tools.g_region(vector=f"basin_{huc12}") ``` Import the NED data for that subwatershed. r.in.usgs will use already downloaded data. ```{python} -gs.read_command( - "r.in.usgs", +tools.r_in_usgs( product="ned", ned_dataset="ned13sec", cache_size_tolerance=int(1e10), @@ -386,14 +386,16 @@ Set the region to match the elevation raster. Convert the selected vector to a raster using [v.to.rast](https://grass.osgeo.org/grass-devel/manuals/v.to.rast.html). ```{python} -gs.run_command("g.region", raster=f"ned_{huc12}") -gs.run_command("v.to.rast", input=f"basin_{huc12}", output=f"basin_{huc12}", use="val") +tools.g_region(raster=f"ned_{huc12}") +tools.v_to_rast(input=f"basin_{huc12}", output=f"basin_{huc12}", use="val") ``` -Apply a raster mask with [r.mask](https://grass.osgeo.org/grass-devel/manuals/r.mask.html) to restrict all subsequent raster operations to this subwatershed. +Apply a raster mask with [MaskManager](https://grass.osgeo.org/grass-devel/manuals/libpython/grass.script.html#grass.script.MaskManager) to restrict all subsequent raster operations to this subwatershed. +MaskManager is new in GRASS version 8.5. Alternatively, you can use [r.mask](https://grass.osgeo.org/grass-devel/manuals/r.mask.html) to set a mask. ```{python} -gs.run_command("r.mask", raster=f"basin_{huc12}") +mask = gs.MaskManager(mask_name=f"basin_{huc12}") +mask.activate() basin_map = gj.Map() basin_map.d_rast(map=f"ned_{huc12}") @@ -412,9 +414,7 @@ basin_map.show() Reproject NLCD from a "nlcd" project to this project (see [NLCD legend](https://www.usgs.gov/media/images/annual-nlcd-land-cover-change-legend)): ```{python} -gs.run_command( - "r.proj", project="nlcd", mapset="PERMANENT", input="nlcd", output=f"nlcd_{huc12}" -) +tools.r_proj(project="nlcd", mapset="PERMANENT", input="nlcd", output=f"nlcd_{huc12}") basin_map = gj.Map() basin_map.d_rast(map=f"nlcd_{huc12}") @@ -443,9 +443,7 @@ We will create a file `mannings.txt` to reclassify NLCD to manning's coefficient ``` ```{python} -gs.run_command( - "r.recode", input=f"nlcd_{huc12}", output=f"mannings_{huc12}", rules="mannings.txt" -) +tools.r_recode(input=f"nlcd_{huc12}", output=f"mannings_{huc12}", rules="mannings.txt") ``` Similarly, we will reclassify rainfall excess (rainfall minus infiltration). @@ -472,17 +470,13 @@ they provide a rough estimate and should be refined with local soil and land man ``` ```{python} -gs.run_command( - "r.recode", input=f"nlcd_{huc12}", output=f"runoff_{huc12}", rules="runoff.txt" -) +tools.r_recode(input=f"nlcd_{huc12}", output=f"runoff_{huc12}", rules="runoff.txt") ``` Then, compute slope components (dx and dy) from the elevation raster to support hydrologic modeling. ```{python} -gs.run_command( - "r.slope.aspect", elevation=f"ned_{huc12}", dx=f"dx_{huc12}", dy=f"dy_{huc12}" -) +tools.r_slope_aspect(elevation=f"ned_{huc12}", dx=f"dx_{huc12}", dy=f"dy_{huc12}") ``` Run hydrologic and sediment simulations for the selected subwatershed. @@ -491,9 +485,8 @@ with inputs for topography, Manning’s coefficients, and rainfall intensity. Running the simulation may take a while. ```{python} -simulation_time = 300 -gs.run_command( - "r.sim.water", +simulation_time = 180 +tools.r_sim_water( elevation=f"ned_{huc12}", dx=f"dx_{huc12}", dy=f"dy_{huc12}", @@ -522,11 +515,10 @@ to compute erosion and deposition patterns. We will trim the resulting raster's The additional parameters for sediment erosion modeling are based on [WEPP](https://www.ars.usda.gov/midwest-area/west-lafayette-in/national-soil-erosion-research/docs/wepp/research/) model, here we use just a single-value estimate. ```{python} -gs.mapcalc(f"transport_capacity_{huc12} = 0.001") -gs.mapcalc(f"detachment_coef_{huc12} = 0.001") -gs.mapcalc(f"shear_stress_{huc12} = 0.01") -gs.run_command( - "r.sim.sediment", +tools.r_mapcalc(expression=f"transport_capacity_{huc12} = 0.001") +tools.r_mapcalc(expression=f"detachment_coef_{huc12} = 0.001") +tools.r_mapcalc(expression=f"shear_stress_{huc12} = 0.01") +tools.r_sim_sediment( elevation=f"ned_{huc12}", water_depth=f"depth_{huc12}", dx=f"dx_{huc12}", @@ -538,9 +530,7 @@ gs.run_command( erosion_deposition=f"erdep_tmp_{huc12}", nwalkers=5 * gs.region()["cells"], ) -gs.run_command( - "r.grow", input=f"erdep_tmp_{huc12}", output=f"erdep_{huc12}", radius=-2.01 -) +tools.r_grow(input=f"erdep_tmp_{huc12}", output=f"erdep_{huc12}", radius=-2.01) basin_map = gj.Map() basin_map.d_rast(map=f"erdep_{huc12}") @@ -565,16 +555,13 @@ Summary statistics are computed using [r.univar](https://grass.osgeo.org/grass-d ```{python} # Erosion: extract negative values and convert to positive mass [kg/m^2] -gs.mapcalc( +tools.r_mapcalc( f"erosion_{huc12} = if(erdep_{huc12} < 0, abs(erdep_{huc12}) * {simulation_time * 60}, null())" ) -erosion = gs.parse_command("r.univar", map=f"erosion_{huc12}", format="json") +erosion = tools.r_univar(map=f"erosion_{huc12}", format="json") ``` -```{python} -#| code-fold: true -#| code-summary: erosion -{'n': 181072, +```text 'null_cells': 418835, 'cells': 599907, 'min': 3.4630666334578564e-08, @@ -588,10 +575,10 @@ erosion = gs.parse_command("r.univar", map=f"erosion_{huc12}", format="json") 'sum': 17895835.761005566} ``` -Remove the active raster mask using [r.mask](https://grass.osgeo.org/grass-devel/manuals/r.mask.html) with the `-r` flag, restoring operations to apply across the full region. +Deactivate the active raster mask, restoring operations to apply across the full region. ```{python} -gs.run_command("r.mask", flags="r") +mask.deactivate() ``` Display water depth (`depth`) and erosion-deposition (`erdep`) rasters for the selected subwatershed. @@ -645,12 +632,14 @@ from multiprocessing import Pool, cpu_count from tqdm import tqdm import grass.script as gs +from grass.tools import Tools def compute(huc12): simulation_time = 180 - gs.run_command( - "v.extract", + # set overwrite to True to rerun the workflow + tools = Tools(overwrite=True, quiet=True) + tools.v_extract( input="river_basins", output=f"basin_{huc12}", where=f"huc12 == '{huc12}'", @@ -658,53 +647,44 @@ def compute(huc12): ) # Set the computational region to match non-null area in the new raster. with gs.RegionManager(vector=f"basin_{huc12}"): - gs.run_command( - "r.in.usgs", + tools.r_in_usgs( product="ned", ned_dataset="ned13sec", cache_size_tolerance=int(1e10), output_directory=os.getcwd(), title_filter="20240510", output_name=f"ned_{huc12}", - quiet=True, ) with gs.RegionManager(raster=f"ned_{huc12}"): - gs.run_command( - "v.to.rast", + tools.v_to_rast( input=f"basin_{huc12}", output=f"basin_{huc12}", use="val", ) with gs.MaskManager(mask_name=f"basin_{huc12}"): # Run actual computation with active mask. - gs.run_command( - "r.proj", + tools.r_proj( project="nlcd", mapset="PERMANENT", input="nlcd", output=f"nlcd_{huc12}", - quiet=True, ) - gs.run_command( - "r.recode", + tools.r_recode( input=f"nlcd_{huc12}", output=f"mannings_{huc12}", rules="mannings.txt", ) - gs.run_command( - "r.recode", + tools.r_recode( input=f"nlcd_{huc12}", output=f"runoff_{huc12}", rules="runoff.txt", ) - gs.run_command( - "r.slope.aspect", + tools.r_slope_aspect( elevation=f"ned_{huc12}", dx=f"dx_{huc12}", dy=f"dy_{huc12}", ) - gs.run_command( - "r.sim.water", + tools.r_sim_water( elevation=f"ned_{huc12}", dx=f"dx_{huc12}", dy=f"dy_{huc12}", @@ -713,12 +693,11 @@ def compute(huc12): man=f"mannings_{huc12}", rain=f"runoff_{huc12}", ) - gs.mapcalc(f"transport_capacity_{huc12} = 0.001") - gs.mapcalc(f"detachment_coef_{huc12} = 0.001") - gs.mapcalc(f"shear_stress_{huc12} = 0.01") - region = gs.parse_command("g.region", flags="p", format="json") - gs.run_command( - "r.sim.sediment", + tools.r_mapcalc(expression=f"transport_capacity_{huc12} = 0.001") + tools.r_mapcalc(expression=f"detachment_coef_{huc12} = 0.001") + tools.r_mapcalc(expression=f"shear_stress_{huc12} = 0.01") + region = tools.g_region(flags="p", format="json") + tools.r_sim_sediment( elevation=f"ned_{huc12}", water_depth=f"depth_{huc12}", dx=f"dx_{huc12}", @@ -730,19 +709,16 @@ def compute(huc12): erosion_deposition=f"erdep_tmp_{huc12}", nwalkers=5 * region["cells"], ) - gs.run_command( - "r.grow", + tools.r_grow( input=f"erdep_tmp_{huc12}", output=f"erdep_{huc12}", radius=-2.01, ) # Erosion: extract negative values and convert to positive mass [kg/m^2] - gs.mapcalc( - f"erosion_{huc12} = if(erdep_{huc12} < 0, abs(erdep_{huc12}) * {simulation_time * 60}, 0)", - ) - erosion = gs.parse_command( - "r.univar", map=f"erosion_{huc12}", format="json", flags="e" + tools.r_mapcalc( + expression=f"erosion_{huc12} = if(erdep_{huc12} < 0, abs(erdep_{huc12}) * {simulation_time * 60}, 0)", ) + erosion = tools.r_univar(map=f"erosion_{huc12}", format="json", flags="e") return { "huc12": huc12, "erosion_mean": erosion["mean"], @@ -752,9 +728,11 @@ def compute(huc12): if __name__ == "__main__": - basins = gs.parse_command("v.db.select", format="json", map="river_basins")[ - "records" - ] + tools = Tools() + # The entire workflow will run in parallel, + # so this limits the number of threads the tools can use to 1. + tools.g_gisenv(set="NPROCS=1") + basins = tools.v_db_select(format="json", map="river_basins")["records"] huc12s = [basin["huc12"] for basin in basins] # set the number of processes: with Pool(processes=cpu_count()) as pool: @@ -805,7 +783,7 @@ metric = "normalized_erosion" color_scale = cm.linear.OrRd_09.scale(min(gdf[metric]), max(gdf[metric])) color_scale.caption = "Min-max normalized mean erosion" # get region center as latitude, longitude -region = gs.parse_command("g.region", vector="river_basins", format="json", flags="b") +region = tools.g_region(vector="river_basins", format="json", flags="b") m = folium.Map(location=[region["ll_clat"], region["ll_clon"]], zoom_start=9) tooltip = folium.GeoJsonTooltip( From 0fb9dc9388935a6eb0f6ddfe5200bb3a5805bf8f Mon Sep 17 00:00:00 2001 From: Anna Petrasova Date: Fri, 29 Aug 2025 16:52:23 -0400 Subject: [PATCH 06/11] import NED right away --- .../parallelization/SIMWE_parallelization.qmd | 105 ++++++++---------- 1 file changed, 44 insertions(+), 61 deletions(-) diff --git a/content/tutorials/parallelization/SIMWE_parallelization.qmd b/content/tutorials/parallelization/SIMWE_parallelization.qmd index b564252..2304949 100644 --- a/content/tutorials/parallelization/SIMWE_parallelization.qmd +++ b/content/tutorials/parallelization/SIMWE_parallelization.qmd @@ -282,7 +282,7 @@ tools.g_extension(extension="r.in.usgs") ``` First, we will set the computational region to match the river subwatersheds and then list available datasets -for that region: +for that region (the output at the time of creating this tutorial, it may vary later on): ```{python} tools.g_region(vector="river_basins") @@ -297,41 +297,42 @@ print( ``` ```text - USGS file(s) to download: - ------------------------- - Total download size: 4.83 GB - Tile count: 16 - USGS SRS: wgs84 - USGS tile titles: - USGS 1/3 Arc Second n36w081 20240510 - USGS 1/3 Arc Second n36w082 20220504 - USGS 1/3 Arc Second n36w082 20220512 - USGS 1/3 Arc Second n36w082 20240510 - USGS 1/3 Arc Second n37w080 20210305 - USGS 1/3 Arc Second n37w081 20210305 - USGS 1/3 Arc Second n37w081 20240510 - USGS 1/3 Arc Second n37w082 20210305 - USGS 1/3 Arc Second n37w082 20220512 - USGS 1/3 Arc Second n37w082 20240510 - USGS 13 arc-second n36w080 1 x 1 degree - USGS 13 arc-second n36w081 1 x 1 degree - USGS 13 arc-second n36w082 1 x 1 degree - USGS 13 arc-second n37w080 1 x 1 degree - USGS 13 arc-second n37w081 1 x 1 degree - USGS 13 arc-second n37w082 1 x 1 degree - ------------------------- +USGS file(s) to download: +------------------------- +Total download size: 5.32 GB +Tile count: 17 +USGS SRS: wgs84 +USGS tile titles: +USGS 1/3 Arc Second n36w080 20240611 +USGS 1/3 Arc Second n36w081 20240611 +USGS 1/3 Arc Second n36w082 20220504 +USGS 1/3 Arc Second n36w082 20220512 +USGS 1/3 Arc Second n36w082 20240611 +USGS 1/3 Arc Second n37w080 20210305 +USGS 1/3 Arc Second n37w081 20210305 +USGS 1/3 Arc Second n37w081 20240611 +USGS 1/3 Arc Second n37w082 20210305 +USGS 1/3 Arc Second n37w082 20220512 +USGS 1/3 Arc Second n37w082 20240611 +USGS 13 arc-second n36w080 1 x 1 degree +USGS 13 arc-second n36w081 1 x 1 degree +USGS 13 arc-second n36w082 1 x 1 degree +USGS 13 arc-second n37w080 1 x 1 degree +USGS 13 arc-second n37w081 1 x 1 degree +USGS 13 arc-second n37w082 1 x 1 degree +------------------------- ``` We will select the 2024 data and use the `title_filter` option to filter them. -We will first only download the datasets and use them later. +We will download and import the datasets. ```{python} tools.r_in_usgs( product="ned", ned_dataset="ned13sec", - flags="d", output_directory=os.getcwd(), - title_filter="20240510", + title_filter="20240611", + output_name="ned", ) ``` @@ -362,31 +363,22 @@ Set the computational region with [g.region](https://grass.osgeo.org/grass-devel tools.g_region(vector=f"basin_{huc12}") ``` -Import the NED data for that subwatershed. r.in.usgs will use already downloaded data. +Display the NED data for that region: ```{python} -tools.r_in_usgs( - product="ned", - ned_dataset="ned13sec", - cache_size_tolerance=int(1e10), - output_directory=os.getcwd(), - title_filter="20240510", - output_name=f"ned_{huc12}", -) - -basin_map = gj.Map() -basin_map.d_rast(map=f"ned_{huc12}") +basin_map = gj.Map(current_region=True) +basin_map.d_rast(map="ned") basin_map.d_vect(map=f"basin_{huc12}", fill_color="none") basin_map.show() ``` ![](SIMWE_images/basin_030401010402.webp) -Set the region to match the elevation raster. +Set the region to match the extent of the basin and align resolution with the elevation raster. Convert the selected vector to a raster using [v.to.rast](https://grass.osgeo.org/grass-devel/manuals/v.to.rast.html). ```{python} -tools.g_region(raster=f"ned_{huc12}") +tools.g_region(raster="ned", vector=f"basin_{huc12}") tools.v_to_rast(input=f"basin_{huc12}", output=f"basin_{huc12}", use="val") ``` @@ -397,10 +389,10 @@ MaskManager is new in GRASS version 8.5. Alternatively, you can use [r.mask](htt mask = gs.MaskManager(mask_name=f"basin_{huc12}") mask.activate() -basin_map = gj.Map() -basin_map.d_rast(map=f"ned_{huc12}") +basin_map = gj.Map(current_region=True) +basin_map.d_rast(map="ned") basin_map.d_legend( - raster=f"ned_{huc12}", + raster="ned", flags="t", at=[10, 15, 40, 95], title="Elevation [m]", @@ -476,7 +468,7 @@ tools.r_recode(input=f"nlcd_{huc12}", output=f"runoff_{huc12}", rules="runoff.tx Then, compute slope components (dx and dy) from the elevation raster to support hydrologic modeling. ```{python} -tools.r_slope_aspect(elevation=f"ned_{huc12}", dx=f"dx_{huc12}", dy=f"dy_{huc12}") +tools.r_slope_aspect(elevation="ned", dx=f"dx_{huc12}", dy=f"dy_{huc12}") ``` Run hydrologic and sediment simulations for the selected subwatershed. @@ -487,7 +479,7 @@ Running the simulation may take a while. ```{python} simulation_time = 180 tools.r_sim_water( - elevation=f"ned_{huc12}", + elevation="ned", dx=f"dx_{huc12}", dy=f"dy_{huc12}", depth=f"depth_{huc12}", @@ -519,7 +511,7 @@ tools.r_mapcalc(expression=f"transport_capacity_{huc12} = 0.001") tools.r_mapcalc(expression=f"detachment_coef_{huc12} = 0.001") tools.r_mapcalc(expression=f"shear_stress_{huc12} = 0.01") tools.r_sim_sediment( - elevation=f"ned_{huc12}", + elevation="ned", water_depth=f"depth_{huc12}", dx=f"dx_{huc12}", dy=f"dy_{huc12}", @@ -645,17 +637,8 @@ def compute(huc12): where=f"huc12 == '{huc12}'", flags="t", ) - # Set the computational region to match non-null area in the new raster. - with gs.RegionManager(vector=f"basin_{huc12}"): - tools.r_in_usgs( - product="ned", - ned_dataset="ned13sec", - cache_size_tolerance=int(1e10), - output_directory=os.getcwd(), - title_filter="20240510", - output_name=f"ned_{huc12}", - ) - with gs.RegionManager(raster=f"ned_{huc12}"): + # Set the computational region to match the basin + with gs.RegionManager(vector=f"basin_{huc12}", raster="ned"): tools.v_to_rast( input=f"basin_{huc12}", output=f"basin_{huc12}", @@ -680,12 +663,12 @@ def compute(huc12): rules="runoff.txt", ) tools.r_slope_aspect( - elevation=f"ned_{huc12}", + elevation="ned", dx=f"dx_{huc12}", dy=f"dy_{huc12}", ) tools.r_sim_water( - elevation=f"ned_{huc12}", + elevation="ned", dx=f"dx_{huc12}", dy=f"dy_{huc12}", depth=f"depth_{huc12}", @@ -698,7 +681,7 @@ def compute(huc12): tools.r_mapcalc(expression=f"shear_stress_{huc12} = 0.01") region = tools.g_region(flags="p", format="json") tools.r_sim_sediment( - elevation=f"ned_{huc12}", + elevation="ned", water_depth=f"depth_{huc12}", dx=f"dx_{huc12}", dy=f"dy_{huc12}", From 6ce7df23c860694b0082d04fad89fe65d16c9511 Mon Sep 17 00:00:00 2001 From: Anna Petrasova Date: Tue, 9 Sep 2025 12:25:33 -0400 Subject: [PATCH 07/11] address review --- .../fast_track_grass_and_python.qmd | 10 +- .../parallelization/SIMWE_parallelization.qmd | 113 ++++++++++-------- 2 files changed, 66 insertions(+), 57 deletions(-) diff --git a/content/tutorials/get_started/fast_track_grass_and_python.qmd b/content/tutorials/get_started/fast_track_grass_and_python.qmd index f6000d9..717dece 100644 --- a/content/tutorials/get_started/fast_track_grass_and_python.qmd +++ b/content/tutorials/get_started/fast_track_grass_and_python.qmd @@ -101,9 +101,9 @@ i.e., there's an existing GRASS project. Be sure you also have the following Python libraries installed in your environment: `folium` or `ipyleaflet`, `numpy`, `seaborn`, `matplotlib`, `pandas`. -The first thing we need to do is to -*import GRASS python packages*. In order to do so, we need to -*add GRASS python package to PATH*. Let's see how we do that. +The first thing we need to do (for some environments) is to +*import GRASS Python packages*. In order to do so, we need to +*add GRASS Python package to path*. Let's see how we do that. ```{python} # import standard Python packages @@ -114,14 +114,14 @@ from pathlib import Path ``` ```{python} -# check where GRASS python packages are and add them to PATH +# check where GRASS Python packages are and add them to path sys.path.append( subprocess.check_output(["grass", "--config", "python_path"], text=True).strip() ) ``` ```{python} -# import GRASS python packages +# import GRASS Python packages import grass.script as gs import grass.jupyter as gj ``` diff --git a/content/tutorials/parallelization/SIMWE_parallelization.qmd b/content/tutorials/parallelization/SIMWE_parallelization.qmd index 2304949..406fad6 100644 --- a/content/tutorials/parallelization/SIMWE_parallelization.qmd +++ b/content/tutorials/parallelization/SIMWE_parallelization.qmd @@ -26,6 +26,9 @@ jupyter: python3 In this tutorial, we will model overland water flow as well as erosion and deposition patterns along the Yadkin River in North Carolina, USA. +Subwatersheds that have larger erosion values are potentially +the source of increased sediment loads downstream, +contributing to water quality degradation and habitat disruption. To simulate these processes, we will use the SIMWE model, with simplified runoff inputs derived from the @@ -70,7 +73,8 @@ and [Get started with GRASS in Google Colab](../get_started/grass_gis_in_google_ # Setup Start with importing Python packages. -To import the grass package, you need to tell Python where the GRASS Python package is. +To import the _grass_ package, you need to tell Python where the GRASS Python package is +(can be skipped for some environment). ```{python} # import standard Python packages @@ -78,11 +82,11 @@ import os import sys import subprocess -# check where GRASS python packages are and add them to PATH +# check where GRASS Python packages are and add them to path sys.path.append( subprocess.check_output(["grass", "--config", "python_path"], text=True).strip() ) -# import GRASS GIS python packages +# import GRASS Python packages import grass.script as gs import grass.jupyter as gj from grass.tools import Tools @@ -101,7 +105,7 @@ We will create a temporary folder, that will store our GRASS projects, since we import tempfile tempdir = tempfile.TemporaryDirectory() -project_path = tempdir.name +path = tempdir.name ``` # Input data download and processing @@ -126,9 +130,7 @@ nlcd_filename = Path(url).stem + ".tif" Create a GRASS project using the coordinate reference system (CRS) of the NLCD dataset. ```{python} -from pathlib import Path - -nlcd_project = f"{Path(project_path, "nlcd")}" +nlcd_project = Path(path, "nlcd") # create a project gs.create_project(nlcd_project, filename=nlcd_filename) # initialize GRASS session in that project @@ -149,8 +151,6 @@ We will use NLCD data later, now we process hydrography dataset. We will download and unzip [National Hydrography Dataset](https://www.usgs.gov/national-hydrography/access-national-hydrography-products) for North Carolina and create a GRASS project, in which we will extract the river and adjacent subwatersheds. ```{python} -import zipfile - url = "https://prd-tnm.s3.amazonaws.com/StagedProducts/Hydrography/NHD/State/GPKG/NHD_H_North_Carolina_State_GPKG.zip" hydro_filename, headers = urllib.request.urlretrieve(url) with zipfile.ZipFile(hydro_filename, "r") as zip_ref: @@ -158,11 +158,12 @@ with zipfile.ZipFile(hydro_filename, "r") as zip_ref: os.remove(hydro_filename) hydro_filename = Path(url).stem + ".gpkg" ``` - -Create the GRASS project called "hydro" based on the hydrography data, the data is in latitude-longitude CRS. +We will create another project, called "hydro", to do the initial processing +of the hydrography data in the original CRS of the data +(latitude-longitude CRS). ```{python} -hydro_project = f"{Path(project_path, "hydro")}" +hydro_project = Path(path, "hydro") gs.create_project(hydro_project, filename=hydro_filename) session = gj.init(hydro_project) @@ -219,7 +220,9 @@ tools.v_in_ogr( ``` Next, we want to extract the subwatersheds along the river. -If we simply overlap (with [v.select](https://grass.osgeo.org/grass-devel/manuals/v.select.html)) the river and the subwatersheds, we will miss some of them: +If we simply overlap (with [v.select](https://grass.osgeo.org/grass-devel/manuals/v.select.html)) +the river and the subwatersheds, we will miss some of them +because the river data don't always overlap or touch the subwatersheds. ```{python} tools.v_select( @@ -263,8 +266,9 @@ The rest of the workflow will be done in a CRS used in North Carolina (EPSG 3358 Since we want our project to use a different CRS more suitable for our study area (EPSG:3358 for North Carolina), we will create it now: ```{python} -gs.create_project(path=project_path, name="NC", epsg="3358") -session = gj.init(f"{Path(project_path, 'NC')}") +nc_project = path / "NC" +gs.create_project(nc_project, epsg="3358") +session = gj.init(nc_project) ``` We will reproject the river subwatersheds vector with [v.proj]((https://grass.osgeo.org/grass-devel/manuals/v.proj.html)): @@ -551,23 +555,10 @@ tools.r_mapcalc( f"erosion_{huc12} = if(erdep_{huc12} < 0, abs(erdep_{huc12}) * {simulation_time * 60}, null())" ) erosion = tools.r_univar(map=f"erosion_{huc12}", format="json") +print(erosion["mean"]) ``` -```text - 'null_cells': 418835, - 'cells': 599907, - 'min': 3.4630666334578564e-08, - 'max': 154011.390625, - 'range': 154011.39062496537, - 'mean': 98.83270611141184, - 'mean_of_abs': 98.83270611141184, - 'stddev': 1045.8673705761544, - 'variance': 1093838.556835879, - 'coeff_var': 1058.2199068769523, - 'sum': 17895835.761005566} -``` - -Deactivate the active raster mask, restoring operations to apply across the full region. +Deactivate the active raster mask, restoring operations to apply across the full computational region. ```{python} mask.deactivate() @@ -591,16 +582,9 @@ we will use the workflow we just ran and create a script that uses Python's `multiprocessing` module to parallelize the workflow. Each subwatershed is processed independently in its own environment, which allows computations to run concurrently without interference. -Each subwatershed needs to set different mask and computational region, however normally, those settings are global, and so for different mask and region for each parallel process, we will use mask and region context managers. - -* Masking is handled using `MaskManager`, a [context manager for setting and managing raster mask](https://grass.osgeo.org/grass-devel/manuals/libpython/grass.script.html#grass.script.MaskManager), -making it possible to have custom mask for the current process. This feature is available only since GRASS 8.5. - - ```python - with gs.MaskManager(mask_name=f"basin_{huc12}"): - # Run actual computation with active mask. - gs.run_command(...) - ``` +Each subwatershed needs to set different computational region and mask. +However those setting are usually global for each mapset. +So, to use different regions and masks for each parallel process, we will use the region and mask context managers. * Computational region is handled using `RegionManager`, a [context manager for setting and managing computational region](https://grass.osgeo.org/grass-devel/manuals/libpython/grass.script.html#grass.script.RegionManager), making it possible to have custom region for the current process. This feature is available only since GRASS 8.5. @@ -608,7 +592,16 @@ making it possible to have custom region for the current process. This feature i ```python with gs.RegionManager(vector=f"basin_{huc12}"): # Run actual computation in the specified region. - gs.run_command(...) + tools.r_sim_water(...) + ``` + +* Masking is handled using `MaskManager`, a [context manager for setting and managing raster mask](https://grass.osgeo.org/grass-devel/manuals/libpython/grass.script.html#grass.script.MaskManager), +making it possible to have custom mask for the current process. This feature is available only since GRASS 8.5. + + ```python + with gs.MaskManager(mask_name=f"basin_{huc12}"): + # Run actual computation with active mask. + tools.r_sim_water(...) ``` ## Putting it all together @@ -638,20 +631,31 @@ def compute(huc12): flags="t", ) # Set the computational region to match the basin + # while using the NED raster cell size and alignment with gs.RegionManager(vector=f"basin_{huc12}", raster="ned"): tools.v_to_rast( input=f"basin_{huc12}", output=f"basin_{huc12}", use="val", ) + tools.r_proj( + project="nlcd", + mapset="PERMANENT", + input="nlcd", + output=f"nlcd_{huc12}", + ) + tools.r_recode( + input=f"nlcd_{huc12}", + output=f"mannings_{huc12}", + rules="mannings.txt", + ) + tools.r_recode( + input=f"nlcd_{huc12}", + output=f"runoff_{huc12}", + rules="runoff.txt", + ) with gs.MaskManager(mask_name=f"basin_{huc12}"): # Run actual computation with active mask. - tools.r_proj( - project="nlcd", - mapset="PERMANENT", - input="nlcd", - output=f"nlcd_{huc12}", - ) tools.r_recode( input=f"nlcd_{huc12}", output=f"mannings_{huc12}", @@ -713,11 +717,11 @@ def compute(huc12): if __name__ == "__main__": tools = Tools() # The entire workflow will run in parallel, - # so this limits the number of threads the tools can use to 1. + # so this limits the number of threads each individual tool can use to 1. tools.g_gisenv(set="NPROCS=1") basins = tools.v_db_select(format="json", map="river_basins")["records"] huc12s = [basin["huc12"] for basin in basins] - # set the number of processes: + # set the number of processes to be used for the computation in total with Pool(processes=cpu_count()) as pool: result = list(tqdm(pool.imap(compute, huc12s), total=len(huc12s))) with open("result.json", "w") as fp: @@ -744,15 +748,20 @@ df["normalized_erosion"] = df.erosion_mean / max(df.erosion_mean) df ``` -Load the subwatershed layers into geopandas for visualization. Join the dataframe with the simulation values using the _huc12_ key and keep only subwatersheds that have computed erosion values. +Load the subwatershed layers into geopandas for visualization. +Join the dataframe with the simulation values using the _huc12_ key +and from all NC subwatersheds filter only those we initially selected +that have now computed erosion values. ```{python} import geopandas as gpd gdf = gpd.read_file(hydro_filename, layer="WBDHU12") gdf = gdf.merge(df, on="huc12", how="left") -# JSON does not support Timestamp type +# drop loaddate column because it's timestamp type +# not supported by JSON, would later fail gdf = gdf.drop(columns=["loaddate"]) +# keep only subwatersheds with computed values gdf = gdf[gdf["erosion_total"].notna()] ``` @@ -801,4 +810,4 @@ m ![](SIMWE_images/webmap.webp) We can now identify subwatersheds that have larger erosion values and are potentially -the source of the source of increased sediment loads downstream, contributing to water quality degradation and habitat disruption. +the source of increased sediment loads downstream, contributing to water quality degradation and habitat disruption. From 7ed5e47d9143fd024c4934689fcf95fc318dcaef Mon Sep 17 00:00:00 2001 From: Anna Petrasova Date: Tue, 9 Sep 2025 12:48:50 -0400 Subject: [PATCH 08/11] funding info --- .../tutorials/parallelization/SIMWE_parallelization.qmd | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/content/tutorials/parallelization/SIMWE_parallelization.qmd b/content/tutorials/parallelization/SIMWE_parallelization.qmd index 406fad6..535a033 100644 --- a/content/tutorials/parallelization/SIMWE_parallelization.qmd +++ b/content/tutorials/parallelization/SIMWE_parallelization.qmd @@ -124,7 +124,7 @@ nlcd_filename, headers = urllib.request.urlretrieve(url) with zipfile.ZipFile(nlcd_filename, "r") as zip_ref: zip_ref.extractall() os.remove(nlcd_filename) -nlcd_filename = Path(url).stem + ".tif" +nlcd_filename = Path(url).with_suffix(".tif").name ``` Create a GRASS project using the coordinate reference system (CRS) of the NLCD dataset. @@ -156,7 +156,7 @@ hydro_filename, headers = urllib.request.urlretrieve(url) with zipfile.ZipFile(hydro_filename, "r") as zip_ref: zip_ref.extractall() os.remove(hydro_filename) -hydro_filename = Path(url).stem + ".gpkg" +hydro_filename = Path(url).with_suffix(".gpkg").name ``` We will create another project, called "hydro", to do the initial processing of the hydrography data in the original CRS of the data @@ -811,3 +811,8 @@ m We can now identify subwatersheds that have larger erosion values and are potentially the source of increased sediment loads downstream, contributing to water quality degradation and habitat disruption. + + +## Acknowledgements + +The development of this tutorial was supported bym NSF Award #2322073, granted to Natrx, Inc. and USDA NRCS award NR233A750023C043. From f050a06b202feb29fbb1acd866f576d6d5b81dfe Mon Sep 17 00:00:00 2001 From: Anna Petrasova Date: Wed, 10 Sep 2025 15:23:02 -0400 Subject: [PATCH 09/11] Apply suggestions from code review --- content/tutorials/parallelization/SIMWE_parallelization.qmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/tutorials/parallelization/SIMWE_parallelization.qmd b/content/tutorials/parallelization/SIMWE_parallelization.qmd index 535a033..b8f4037 100644 --- a/content/tutorials/parallelization/SIMWE_parallelization.qmd +++ b/content/tutorials/parallelization/SIMWE_parallelization.qmd @@ -92,7 +92,7 @@ import grass.jupyter as gj from grass.tools import Tools ``` -We will switch our working directory to a directory with enough space, this is where we will download the datsets. +We will switch our working directory to a directory with enough space, this is where we will download the datasets. With that, we will be able to use shorter, relative paths. ```{python} @@ -815,4 +815,4 @@ the source of increased sediment loads downstream, contributing to water quality ## Acknowledgements -The development of this tutorial was supported bym NSF Award #2322073, granted to Natrx, Inc. and USDA NRCS award NR233A750023C043. +The development of this tutorial was supported by NSF Award #2322073, granted to Natrx, Inc. and USDA NRCS award NR233A750023C043. From 38a2c548537a00f06d71e20da7f1cc099b49e7b1 Mon Sep 17 00:00:00 2001 From: Anna Petrasova Date: Wed, 1 Oct 2025 11:24:38 -0400 Subject: [PATCH 10/11] address review --- content/tutorials/parallelization/SIMWE_parallelization.qmd | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/tutorials/parallelization/SIMWE_parallelization.qmd b/content/tutorials/parallelization/SIMWE_parallelization.qmd index b8f4037..b3d091f 100644 --- a/content/tutorials/parallelization/SIMWE_parallelization.qmd +++ b/content/tutorials/parallelization/SIMWE_parallelization.qmd @@ -74,7 +74,7 @@ and [Get started with GRASS in Google Colab](../get_started/grass_gis_in_google_ Start with importing Python packages. To import the _grass_ package, you need to tell Python where the GRASS Python package is -(can be skipped for some environment). +(can be skipped for some environments). ```{python} # import standard Python packages @@ -82,7 +82,6 @@ import os import sys import subprocess -# check where GRASS Python packages are and add them to path sys.path.append( subprocess.check_output(["grass", "--config", "python_path"], text=True).strip() ) From 5609cfb5e3091c6133d46242fc9ec9713f0f6e63 Mon Sep 17 00:00:00 2001 From: Anna Petrasova Date: Wed, 1 Oct 2025 12:29:04 -0400 Subject: [PATCH 11/11] Update content/tutorials/parallelization/SIMWE_parallelization.qmd --- content/tutorials/parallelization/SIMWE_parallelization.qmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/tutorials/parallelization/SIMWE_parallelization.qmd b/content/tutorials/parallelization/SIMWE_parallelization.qmd index b3d091f..6747649 100644 --- a/content/tutorials/parallelization/SIMWE_parallelization.qmd +++ b/content/tutorials/parallelization/SIMWE_parallelization.qmd @@ -1,7 +1,7 @@ --- title: "Parallelization of overland flow and sediment transport simulation" author: "Anna Petrasova" -date: 2025-06-25 +date: 2025-09-25 date-modified: today categories: [Python, advanced, parallelization, hydrology, erosion] description: >