From 23cdec835f7ec569bfdb2a362e1246fbda2cb3f5 Mon Sep 17 00:00:00 2001 From: nesnoj Date: Tue, 27 Sep 2022 09:09:49 +0200 Subject: [PATCH] Setup basic structure and files --- .gitignore | 5 ++ CHANGELOG.md | 15 +++++ PIPELINE.md | 1 + README.md | 53 +++++++++++++++++- Snakefile | 0 digipipe/scenarios/.gitkeep | 0 digipipe/scripts/.gitkeep | 0 digipipe/store/0_raw/.gitkeep | 0 digipipe/store/1_converted/.gitkeep | 0 digipipe/store/2_preprocessed/.gitkeep | 0 digipipe/store/3_datasets/TEMPLATE/config.yml | 3 + digipipe/store/3_datasets/TEMPLATE/create.py | 3 + .../store/3_datasets/TEMPLATE/output/.gitkeep | 0 digipipe/store/4_appdata/data/.gitkeep | 0 digipipe/store/4_appdata/metadata/.gitkeep | 0 digipipe/store/4_appdata/scenarios/.gitkeep | 0 digipipe/store/temp/.gitkeep | 0 docs/img/digiplan-favicon-512x512.png | Bin 0 -> 18880 bytes docs/img/digiplan-logo-horizontal.png | Bin 0 -> 2343 bytes docs/img/digiplan-logo.png | Bin 0 -> 4369 bytes docs/img/rli_logo.png | Bin 0 -> 43909 bytes environment.yml | 11 ++++ requirements.txt | 15 +++++ setup.py | 51 +++++++++++++++++ 24 files changed, 155 insertions(+), 2 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 PIPELINE.md create mode 100644 Snakefile create mode 100644 digipipe/scenarios/.gitkeep create mode 100644 digipipe/scripts/.gitkeep create mode 100644 digipipe/store/0_raw/.gitkeep create mode 100644 digipipe/store/1_converted/.gitkeep create mode 100644 digipipe/store/2_preprocessed/.gitkeep create mode 100644 digipipe/store/3_datasets/TEMPLATE/config.yml create mode 100644 digipipe/store/3_datasets/TEMPLATE/create.py create mode 100644 digipipe/store/3_datasets/TEMPLATE/output/.gitkeep create mode 100644 digipipe/store/4_appdata/data/.gitkeep create mode 100644 digipipe/store/4_appdata/metadata/.gitkeep create mode 100644 digipipe/store/4_appdata/scenarios/.gitkeep create mode 100644 digipipe/store/temp/.gitkeep create mode 100644 docs/img/digiplan-favicon-512x512.png create mode 100644 docs/img/digiplan-logo-horizontal.png create mode 100644 docs/img/digiplan-logo.png create mode 100644 docs/img/rli_logo.png create mode 100644 environment.yml create mode 100644 requirements.txt create mode 100644 setup.py diff --git a/.gitignore b/.gitignore index b6e47617..b29049c0 100644 --- a/.gitignore +++ b/.gitignore @@ -127,3 +127,8 @@ dmypy.json # Pyre type checker .pyre/ + +# Custom stuff +.DS_Store +.snakemake +.idea diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..52377f3e --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,15 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is inspired from [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and the versioning aim to respect [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +### Added +- Setup initial structure and files + +### Changed + +### Removed + diff --git a/PIPELINE.md b/PIPELINE.md new file mode 100644 index 00000000..45d269a0 --- /dev/null +++ b/PIPELINE.md @@ -0,0 +1 @@ +# Pipeline docs diff --git a/README.md b/README.md index 97020a92..3183b008 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,51 @@ -# digipipe -Data and ES pipeline for Digiplan + + + +# Digipipe + +Pipeline for data and energy system in the Digiplan project. + +## Installation + +**Note: Linux only, Windows is currently not supported.** + +First, clone via SSH using + + git clone git@github.com:rl-institut-private/digipipe.git /local/path/to/digipipe/ + +### Install using pip: + +Make sure you have Python >= 3.6 installed, let's create a virtual env: + + virtualenv --python=python3.8 venv + source venv/bin/activate + +Some additional system packages are required, install them by + + apt install gdal-bin python-gdal libspatialindex-dev imagemagick + +Notes: +- Make sure you have GDAL>=3.0 as older versions will not work +- `imagemagick` is optional and only required for report creation, cf. [PIPELINE.md](PIPELINE.md) + +Install package with + + pip install -e /local/path/to/djagora_data/ + +### Install using conda + +Make sure you have conda installed, e.g. miniconda. Then create the env: + + conda create -n digipipe /local/path/to/digipipe/environment.yml + conda activate digipipe + +## Structure, pipeline and conventions + +See [PIPELINE.md](PIPELINE.md) + +## Runtime and resources + +**TO BE UPDATED** + +**Warning:** A full pipeline run takes 10 hours on a Xeon E5-2690 using 14 +cores and requires about 600 GB of disk space. diff --git a/Snakefile b/Snakefile new file mode 100644 index 00000000..e69de29b diff --git a/digipipe/scenarios/.gitkeep b/digipipe/scenarios/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/digipipe/scripts/.gitkeep b/digipipe/scripts/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/digipipe/store/0_raw/.gitkeep b/digipipe/store/0_raw/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/digipipe/store/1_converted/.gitkeep b/digipipe/store/1_converted/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/digipipe/store/2_preprocessed/.gitkeep b/digipipe/store/2_preprocessed/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/digipipe/store/3_datasets/TEMPLATE/config.yml b/digipipe/store/3_datasets/TEMPLATE/config.yml new file mode 100644 index 00000000..dfd2d7b3 --- /dev/null +++ b/digipipe/store/3_datasets/TEMPLATE/config.yml @@ -0,0 +1,3 @@ +""" +Config file for dataset +""" diff --git a/digipipe/store/3_datasets/TEMPLATE/create.py b/digipipe/store/3_datasets/TEMPLATE/create.py new file mode 100644 index 00000000..cd44ffd6 --- /dev/null +++ b/digipipe/store/3_datasets/TEMPLATE/create.py @@ -0,0 +1,3 @@ +""" +Process layer: Build new layer from preprocessed data +""" diff --git a/digipipe/store/3_datasets/TEMPLATE/output/.gitkeep b/digipipe/store/3_datasets/TEMPLATE/output/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/digipipe/store/4_appdata/data/.gitkeep b/digipipe/store/4_appdata/data/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/digipipe/store/4_appdata/metadata/.gitkeep b/digipipe/store/4_appdata/metadata/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/digipipe/store/4_appdata/scenarios/.gitkeep b/digipipe/store/4_appdata/scenarios/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/digipipe/store/temp/.gitkeep b/digipipe/store/temp/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/docs/img/digiplan-favicon-512x512.png b/docs/img/digiplan-favicon-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..af6d8b7914c51c8d0931cabd6fe20a52b5e7f366 GIT binary patch literal 18880 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 literal 0 HcmV?d00001 diff --git a/docs/img/digiplan-logo-horizontal.png b/docs/img/digiplan-logo-horizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..6a61663a449438546b8b54a89758ad9bf5fe26e3 GIT binary patch literal 2343 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

W<0odVf>s%nM>aWzMDZP6tNljs^AfWL%(~{ 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

}US`)k(h1%yH&YM& z{Js=BuW5IYmc6fQsu|`~N;-YM9sjq}#NG1|F%+PB-y_)h@=ui?#(AVku0c-xfAp~@ zF{W+bEmMFat#Z8IY+lnEr!<`3+FFpb^L?9nB$Z%Sw13~cS8OS1a-iF~a)CDPS{Z9( z+3w1gAOGQ>=-``1ohLS_BT`x8b{S(F7q{ayclVq=nsw=U2E6Pu!NP&^TmE+^V9%6z z(C%^>Qp1TF5<1ZqCu|__zDYfD)7!8oIGq+se~d`}0F7D$V-r$GT?!?2))Sqip{}e4 zg=kNOl~{YPXir_0_DIp*DpK^us9G1f1PXdGeDvlr!uq=rPeh37Qs+U`_Y(=TIq8VJ zf@DfQ7 zy#ktYc+X%6COsUpG-B(AKZOCj2C;es<2G8Db1v$~y7A}c4c)dBX)nB{P;Gt`QkrDxNJ2knr|ab z`+CH2jJ;#b>&;B2Mw8CKL=P&<0dA})q8SSA@;&y}QY7K+0M0czY_%ZG(kRx(>cQKt zMSpS`a`_F|Q>9f$Lz>J(vIW$g!#(L__mHe#0@ zTp81cY?(q_>N5`DnF`FhcQ`5D*wwVUmU&Ux?F05O!KPb(UR<%^3gqx1n$Tj@3Aj0F zvu0gPrq-}s^r;sw?IsYh58(bjb+-?2;9O^Pvj|`~*h?$8YGfGloDJLcF9+N`W*%Xa zk!r>=RfMD4y&C0!O(i3js~Wc5@_#Tk`ch<)`*qf#sGboJ*e#tb5kMGaj@LhP9cfD0T(ZKHu7>L1^e^JFayjlv>jkX2a3A#5Ft5j^R)L z@C$0oy2~*(ehxx>i~#8&)N2x>q=7T5AXCP=K$NMnig&qr#3ts{vR;+tH98BCO0E*+ zm`x?@->oOO-9NekW5=C?tok6`?HI=Q3hiCOT6b(cZqoPd%_Ck~8nsM;H=nPgvGu2P zJnq2S0=4j(_JRj&lYC)hSSJFo9f37!rIRrjesAMCXdL${I=3Zj-fa7Z^=;NJay#$% z$?zv`c^}4huZAqV9{q*yB1RRBhC~#}wj7o{;_}vXR%A|dlC@CrRZtC6O}u%lUz9c! z9%}m+_NZ;Ql_BFbDD?fezHjC`PiXPtOd`!{_L{brHcgx55jx&O`23}|aoQ1=F`JsU zX!~yJ_~OKyF2nBeYcY`T9u~QJT|ow0u>0{*Xh0Dh@0NZZ)Jd%lOkAmuSU+eV0p2}XGew~S)t|7eq)qLNq*R&VB zD*vOOscjqHk6P_)^!E)BXng|__F`*F1pn@l(e zDzq7N2(US+g`VUrkn?K{%AIbM+TBpd?f~qAN(;sm0Nu&Jm&QKT@xIRQW!X)~Khp8O zZUAf#+Fm&1QkxFS@4S5+o6q~Y+VX=}W5*M#30TU=Wq+#qPPFYeX#o_2cZQIg`Ku#( zu5IFtxEXD!wMcpzCSBjZIJ)wbBI4ms{_rbm^Y<@AHMtb|@M{Ft(FQ&vo{?13~ z_&5RepV9HtwBPlC67SCXEalB33tmkTCTPdR6guiyZ6jayM*~pzUWk72`vlr+3DA}z zBv8s{T78_O43*YItuEudQ3$lF1o(aZU2Ps=?-S=bY58A_%hsV6oPz%F4RkM8qCW9l z#7y-XD&*L7q*|UOF#$R6dpd6ujzra|g?MtCM*5tt0PmhRkEG2R`!kj73(TGHUdY{a z{1+WN_h*;xa3;Yco_jQ^;<`bB`dBn>;r9xVzVH|Y6&KwqQq6+ov z6%m$n*7^1bK@IRHU3>z@t5-q={{u>%p(8FcGC?jMXnXFS-7yv|zN@RvBb>U-a=e=R zvQCt`Duk$1Aj>75iEMq?dMY1zSpo9l=Oef5JgS|wP?_f;NsdROoLJAnvn5@(Yh&6`JNQ}edAI_$Kj59YVtoK{ZUIvxY(UNu1d7~x#B|MovH7`yk(H*kwG!C{G8OsJS6$=-U@ zxtCzq-fPiUFuuC;o&1C0gWa$O`?h22gQq}UwZkyowKPMIwq2m9GuSbpKlhRoP#t>( zB2`2p&O^5UUbXf57d9t?A<}GzdE-xrbSVBoIR^@{6w5AO0lD`Ws0jk}%ySS6ddwa{ zwXvAqv4}M7MTp~q&K}f|s2^&C`0 zpso(XY->&0UnZ-gg&+y*Ca8>i?~B4(Z7kw_;Ch<}LjW{i%#_8PCMneOyyYu@1J zqjWGa)5QL?-)^=^&yabfW!KXWE+VW;K*5A<>zwB7R~G4IDrk*RRyuE>2hRCy9;;!y z!DDybIBBsqo!I9USiVA&CDZta7u7+PEA7_-3TK9z%Ccb=NlO?dQD*Ggx(Sjlt-`nGnlzR$dh8y+bO zn=4aV#^K~3x&JBq;Uw_Y%fpHo!Tq9$;Uv8>>7eu!>H3`IrFPQ<<6K;XP)(I>zE-kR zfpo8I6wbOuYp5B%Wwa*M>^LgvhC$WrR5bH5c~ZMp0`D@_1?^)fVR^bIty}McsMJL3 z27ehtL$G8zF8|rVAyWZKQ)_0Eqv@z7aECL?tKrz3qxE{qC%9Rkb0QU*K!hyArPa>&QGzH>vUv)nheAZpi;WU|o)3_yXOhT`6&9!bh=)b@w;MNCUyMGwj zZYtwKJcdyW+=|V%6Wg-`*G^Dn)~fBH++Le)!`8Kf;Yim*`Z-#WdgeLRi8)Lil*!VTBDtD9Ah{FilJ4-hd6k*wx zjXPI*qVdN(ABG)Dx;`_k`%mk!s1OV{`_#cYi1rOO`{>WITgDg4N~R}LSP<83HV0#D zA3!V*1i<^c_RQO&_YU6O)*DIYjtwUClu7cXACc+mE>;KhpT}-*+59{CyR}*)r`u+T?vfYkcwVxqHBn?LWkq zn0nxQHvOBcr+cpa$B!c zj>qX0K)NyJ`cCDiBCGrLzQ$~NJlnQv!#o|Tin6@=Dh?0l7^pR&&$dqWe&sRDkSR+wxm9Cs=%j013< z2p2Z5zpJeC2u_=uL5JU$4Yz}*@C+-JZ{$!eENFf^_r?Gr(zMqJo=Y+$J#y*X!glVA{R; znBo?3ZIQ0qCe;EQ2TQ6C>Uu=z+Q;>C%Lfvs$IEoWz}xwP;Kqnx8iCF+XhPS`ciV7v z+2TM+eV6U?`tx@geBgt>)7^*rJRA*%t5aQnmLh|H4=GG&j>+kV@w;}i{ULm&eWFFp(=j$nqk{8O`GyK{5XN>@rgQpB&%>plED#CKey$;-lNstRmX+c_=O$RDs^UbE2S75^>2uZ z7#S{$p<-FN%s^u3vxnl^4@#V}S|EvqPF~BhWi-ZNM+S&%61yI(ty%TJ*!p#;G!1J`A9d#PJu#bAIfKTmM} zVH3Fahode%o1>>q-;X{Y`g9-q?+mf|C&1k&DeN5CV<=oX#J?Qa%s$aGT{Y-5a3l0& zSS7_Fks0}Jap3Gdw^eUD&ek8v*9$B1#KpqApwDJjSK=>$j?D_?MH?tL2pO7eVs&e-)41K5rL4GjY z_y@YDONSQYwjFsKmlLQRn&9G}?!?u1>CdU3iVRNK|2P)szkMkls6|Vk9+f-a_{vCq z{*B|hEJHjoYdVZ+)vq{Y^floiKV%DEBh)&fvOJezjCz7^pRH z$N2bZr`;xxq^IAzr!9Ltov)HOd{Ckq7qD`v#OC|yH;w@I-b#G~^@^K83{N%5@*Dmc z4g4yczAHzOjReQg;dytTkMHi;=`!~0e=xr_gA;%L1JtRG zlV~wAxtrAH^NL(&)PePcbl~MxiEC5h_%(N8oEig30e#uq)TVW>oi3P&6EA)nc31xn zeSI`Q;_dWpI}t}z*ICX7lWKU8m<4w{NVj%4!hC>;(~s~GycAp3-KM8#OTn3*7}`ui zG@xY5Go^{-P8uY23Gw2z2pZWx|(jz51j>cI~X$^c=uj_TMZeZPUom_gNK z>@ztZBhr4d;qki9avsP%yJ%o8evf+O`hT|gluS-=z~;wtf)yM71Y;BLKt50Xy%AyO zqvx*MyJ`Cx0uo*l7mFH0lj%(A>HBc>#d@+kacv2EYj35qrxA+B%jevDMQIobDN|}_ zh`yWDD4t{;;G2o243}w$LAp3(CSP&vITsTKyq<9AVk*|rgbf)?#Ck2Lvw(#fhp9iv zpFl+4!mhpluKxY*$HkCA56wQq3lcFTnNOViND~+Kb$>^n_m|Xl|2Ne!b>CnosGyEI?OlvOI$n8#{% zo-p@F>LoP3Gc;LM75e+%f?s{_%ltO|iD7ZSD3(W*h+dMX59SCMX^h*lG;}&Po1@KM zi=$JigPw}&o-46OzFQo6!AI!jPbilOn7T}vZPKJsGk_O|c~&RQOE*wSX?x&N)fh>( zk2-5YjZ#28I*M*U>feevkuTeCBtM#)OGw)f35`UJR|;k#sqWr+;4#S%bq?KEl-C+h zlFj2MXVI5@mu*u7y8HjU8onkG@429kJ!8*7K8(@WbEP=xwl}Fa;NPc}c|~_Ft!>f( zr|O=lJ_o$aDfDlc4(W}4o$Zg~FQQw?_v^t^?K2)nKsbVAw!EMieIv|juKB=`+*8h&)ISRQjd;@s`JEaJw1RVh?gf{GxuW^zM}~Q_G`}MTUUE1NP2LI>9)bG!;V3K$%EKxy zn=A)PXMz&+JHsMSx-Sd;dzR~5+DVY945Rpo4vO38=Vw(Zv*}h?Lsumpf9~86-};&5ZW?6Sl&GxpP4kprS~m8;$tY7K94gHs%sJ#H)EdX z#Gv3G%1<7PK0<5LAL1IMZHmRWlEjGv$%q2ryOb89W`c8pbYT0Is;n+6{dkFV?1+L0 zZk~;S`0RVhEQHhNTAT5o2PCR7Nu*2%FUcs4?%@={vc~Ys6DT2ah`#fDIFT%_tp^sN zR%E0RdkHwje}@$tE@6aC_N^fh$&~bx+GtJ$I4CMT1i1*jg%52<6>5tk)po>PNZ^Ay zgtDb#-h!HrGMYn%gOovx!^6+Ki-@KmU_5?M82bjXOMYJ7bHat4xA2bY?+?LL=p4`T zA%@SENFe%(;l$@J5nniFX;^13RVn0ZccsD;K=dBR_bz6(hEuO_8ri+FZq4|H_XUc<8@E<_@KBYN-ePHSgjTAL^u2{jTp#K?wI z!X}dky$k*gVBVY$Aj)0@ok%FO$9&60h9$Wx4nFl2iWEc;e55P;#)HiW^TaDo$}d`Q z8x)IgXYtvY!2LHy7G7jH_I}*M`yk?|PialyJg6Fhoe63hjCy_XOR)U5YY!7^d+6B+ zxhsUM9odaWq=NtlH66zF_DZm4!XprqT21Df5Y9lixEtwLKor+967!HgKPnbnbBwYS zr<-V$P?$hkz-y4sj6gH2*^kXbLVIQqHFw4Ybl}`1q6&nvvcQH7zr1(pKL)CJ(9-Oi zz~^+Ar3tR#oH=U+*=LiICva(GJ8pDhN;n;*e}jFa-+->AF%aWQ62ysVdNxG5j{>{v zbntTTM(Hyb;vE7P^;2TWiFZQ!H@844rFAx0>6$*s6YP*$h=>577Z)Jn5y9JF`8OdG z`v+vKy}01LEDZAaa`}BFZY~_51-7Y8G~OSjRV)&P9(yHp^lWQ5XM`sfoJ`G2m4I+i zrF-W*Yv@ggtU@3`5^9W-2psu1fet=bcK;IS?ffFDKJRXf7Nm<16cIhX!-t7psaY~H zQxqOTYa`Qro3S0vqqjZ}7V1yM2_zi*RuIw8>JqT}Ij3udd4T5~fO;c224vC#@GFYZTx`RL>me!yw0QgB_#z)r^E?N7|6X zwTKowARjprdJ=C$;Woflm_)<@H~K~K(t&&A1A~8@2~*_~!Nj>!q@r)M;oy`KPK5O1 z){MK8s0PED{gO%O6R#vKPN8N;JPBjP^P$6WkUkGW!KHLb+6zTrnMynoXh;(l&ig2W znPuHaLc;o$5`2mRY3+lhYmE;H79G1AqMb^U?Lt&B?yi82?dRd{_zE{aW}itzo{bVm zF|WR4S#yAaFTJ`4y!^YE$;hHm1`5f{#+Y6%AbT!732Mcr6mu#~jzdKk;)plA92V}q z9)DVlj7GvZ3jai68_ZcS2>!(FuzU30L$lVz7#!>GnUje?&qGTQIsOG$^WKEJ=8cd? z6xq=&VE_2QpphY0X7` zih#_r_`Qhc)Jr2>5l|z`0zPwZ=OM6v{$}z+k%h_8osa~DMZhv+TfrCXgqt12^mHR!dCZky&l!Z0dt(3ae~)8la6qJOL$-#J|6E z{T?VpX+epH73Hqq{aTq*KwKe(^FF}@C9CaAsU)e5q-&}!*P-Uk_H(Sm(cHKwzOGsB z^?!Fn*La?OkOKy+)9`zU?BaNDl75LU)JfdG8d`Y#4X_LTC(I+TnzZ2O${tVqBj!X< zT@($$zA~=>3o8+2pAUG2-E!OAcN=?Yxvf>8e`YYOPh5nb$ut-Tqcm$WNpG((6Jp$H zy3R-EIFO&vINskcpWgJCM(H3PQ?}4yq@g~Lf51CjCwh+i4s_1F7QZkb3gbO6?tKVP zecz0X7gX_U8SAmz@^w`=$3m@+$e}h_APwvG{Iv-`^MTd#rZ-Go_ zP&aQ#-?R^|z~gfR z-6>#Y{tdFZfxT8X2 zd9x+`hUVF>6Gj;qkj$~1gnV+{T`UNU<9AxnC?ab_$`k!bq4q8qRfRW&uj|yS$i|XV z<;b)#NsVXsuV4fux8C;@G;`QH0jIu^Ic(N~*)%s?l5}fF6zM9K^F+A=o+XKVxYikUAL@OdT0dD>(Hs(3V z^R3Q*6supeq#RSZnVnVT*j<-QADO&st#B}nm+aIbMxt=pu+wqyNqMjxuH#(*D zoAN%o4IbQ>sjt^Jq?}-6ONG&UZ-u!3 z8JNf+VWV0r>{sC<&Z!mCI%SUP*%UQX<;VrvpkB^n6A=p}Z&sX~Wu{B-KCuItoR`J* zCX-wzB$m&YdQ=2k*|sEuo3{Kj(q>X=G%`5n`YS%IJO8_1QjsM^lnIviI|LQGV4|?< z@ue?$s}4hiV2pD0@3f&wQ1gCKsM#k|$6B$JCjb55<3!~qevdS_S1}F8(%Kyf5Vn5{ z?E%s6?@41Wxp(*?7#lx^Re6dLcE&$^`R=>^UhW*<$!4S}G|KPm4Zsk;pWJ@a9q{a( zXCjll6|$(AC8D&CJ|&jE?5LrBtwDw9K`U{y5T%gWR3e(pJcH_XAM*h*5Ta2_9OufG zHu!lLiur57wz3e#cPzrEApX)Lg7MnvaxQ|>jD(4-BVH3Dr$7G5L3OJ%=8{wXglyHeJuq4}<}Ybp9YYkkmYf4pOfd2;P6n@Ey3Y_i{*BzLT7Us(uwfGHCNc%B&PBOts# zv6gE`FA^7=9aV`WDIjDTw1*pJN2X0<*5zb0&1g0+SUG@#;3$a4J%~hqircW8b2D6b zFF>XHJ8RI2bmh<%&bv^W$FXl-h??{Jp|i_klYm|P68z1kuU(*{TFA#DU~{AvU(i~J zrGFj;G50)(#-C!a;!ey3YtaXXbl0g+{K0Z^0S7q4=B7IPlpGX}$m3lUa1Q(oHP&zA zzD2|g^I-nMe-@iBx3y1RknXPNk_6Czb^nk8VS$&^K^gW=Wwtx;y@PARDXy(T}65 znTKf1!?!> zK+CMKZ8FB{@`?X3)CM7xWSUV8|c2HJnl}D6q|1=IcF9wm=g-}57 z?O2aNr1V?->jI5hx0^4Ouf=wA3H|pIl1nRJ$DSw8hN4`|A&fRW0sHq~B9p9|%YJ6q z8&N>4b+su?R?ksIqsE_~{?W52j6TaqKN7|3mEO`RPF|=?Ga-<6q-!tlBVU?O%O=~f zkwCOP7{`4Zjj!z5>Zc(Q+shGA1@9bq>$UIFIVHA^>|vom%nLPwsu*tH0Ehj-c>5-J zPs<>xC8k~LLdrLei(V`~jwsS+!Rcmuh|mNh&QKfcxha04>8aU;=NNX6Y}t&o1@tUh zBDZdS0MYi9P(qcdSU~kF{;w|+8@k9=c)3(zlqzMl<~k0-8eoW)WpiF?}e-K^T|54nnR= zFVn3-sP(ZpJcpcZbHKH4fJB^Z&=xrHizw|{$6y1Y;(j<3BW(h(=vJe@^T>a{rc5V5bn3 zb0E`wpI>J9P`{_85#+Ef_kD;(A7`FdC@q{=R6L2-FjP4QAp;Dr`E~bX25jjlKT=m` zM*eaaWD5U;?Bto+H*eI33 z(=nyC$~dC6J%AFZh23fH)zrdEkrWUo)e+ZyB1Z{EOW1xm+M9wN>uFqg3nof0yMJlv zcKnu`D(IV9Eknc66+l|4P+$4&-^!qegLiK`?X$tBw>i_`2 zdu+;ri2Mk(Ho*~1B61oF8kw>}ERbf}TH^z&ImX?Q80UyMa>8aOI(YU*fBjX6JHKWe zo%5GY9O8XJ$fR5?`YUr=P4S`(_|(=`QC81M}m)$w$FtDP9?msS9O}-3OzEk8?Ou2gO@jABCQEf58zPnlA;N zRFm#WCwSo;5jFXwSM)=hcd8s{&7ndWs-O;St9EZ$)182y_tb64%zrPpcoVlp=7>AB!)*;yWUDX z3BR`wTfutyANkxtvcPBuwYsG@tP9Rf%O@yyky&2mE`C>fwrKoVP=(z5rs%#rVNHyJ ztFRK?t>kxak{mJT!ie=Th}%BSyN`_f-LQ21S^aWIngoWjY1HfupL|NzB$oMHbc3HY z^T;IiCw9cqkSm;kDiwuFWuR;B@5%H1N1Ud`UG&2f|D zYv;6j5(9`FM}B=B#G~Km4d(fsFwgo|I66&{9hBm3iCNMj$_wY4!d>F&W(X$Kd&)Yd zoCX?EIvBEr41C|VHK%f@8Px`HyeB~(^HA9U+rs=;GnoTnQmgSC&t1J@6TeaN)Lwb- zs+*z9d5r%qth2>S&OL_116c(~`eff0CgYqnI;Fkv-%5r514S=}ry{)BcggGT&I~wS+Tp;!@%Gt z^+pyw-|qpd^Ag+^DBMb@juyWs_kN{LL8r-1tnf4^{MqK4HJ(G%q03ss3Vb^HXwE@J znU}?4FU{fL>Y*Gm&TD|GV&r5O?0@{7DT0bukQZc<|G<^-3ftupc&vm3M6hd1jBw600BpRkI~P>|8LCA7;Js;EA^d*(ry3_*0x6~)q zf7A&nKCVy6rR1_vIAZ5(L9h#|->4LM3t@wtGDQn{f>A@i+XSQbg>eblx8i0dsqGJ zdK8uCfNkHGI(hi5q>GV{O!6wS2bd?{Q{i2fs)gXXXTh@Dqhe(|28R|w6gT={oz(%} zsdL40>j;obPKJ`-15P*IU}6Fi_Jyg3ufGo$Qj`;&!el%-QM%Vc7@Jtg?u`glk1Gi< z0?sN(W&#uVKL_7Blb6sV9v7S%PTBDxMznhuhd?P~vp-Ww862El)(2O?qo?&l)_)ba zr6myaK8Kh8YusMGqH?YXXbpU8s1I&-3FOC@f@h(r(fWuA) zSh1l?tST)4fBlh=h`j>x#R#sQk3a7NkvJFRjy(s+rl9JozyXV)mMjciHx8Mx6Zn3D zODSkGEbmvJZO=kS5|Abou}3%E64{rQ?1=Wu8IseRM+BQ`ZAWAt)`;@l-#!9Yp7uio z0PloCVF`54d-Fghb>*N)LW*gIvnmA)ka+{C>@QQuXn*l8h*ANoND(r-uaerT#F>L8 zVhKDjnVcHEsX8R8MtZ=0=&9mZzArhQz8_RUEfvEo%i5w0BX|{a8$IY053HD9cE09v zB2>YsSzAv^9V+x15K)e7dv?=LV9AE>LZNsrIK?;$>Pzv=S8J=bi;$b@j|*7gskIkM zNfblHgh#ygso(?q>HcYB*Lv!S!w$sxwp6XpAle(}O zJ-Hpm?;pe!yXlHQBJbdgF z<%ki;d>JJ+&ZwgGNm1DUidP7(C!$he_dz`N5Z5KJIfIJ={%MnTBXaAUWZIyTqSD?m zD3YS=0|yiHJLor_KPm(j$6Ysi0apyPaHCPSte;V}H+-E%Yvqw)*d9LDCK%6tU~vE9 zKWq`Rn*<|`XOtKnBPcm*YdHxSQ+zUqIm#T&>3WcFZR--69wWs#E@}_|-HA~ux(5*- z=h=I9?HOmyk+5k*Db&fvZ|@6*wDG0ha4OFia!S-_mPP&(_u|{YqiS&Wc|%`Xel<>K zUM*`%C_8srnJDgg#jC-M9La(v>ik<>N%r3}_nnQpLvnH%W=*Y0BLxh=-23KG#E7ms@mJO^5{ zhzB*jas|dN>yyxHZ-64KfTB19mY(n)oPevjxEAOf;8hVS+9cT#N>xVt2mNr`6s^Nr zT_FYW-GivkT?gA1-+_;vB;IJ2X)+n%xSy!A_=b0r%KS2{Ze7@h=4w;Jkwm>L2QQY zcfEGW*Z9F5OXKe}6R~3c$mZfrkq>39RwTEk5(>C@H zfaQ?@{QS4x_qyB9#0&fvjAp3jHQDZd2l2h@py$C8;hA5&Uhe+&l~OZo?o!8n=18)r zeEv`wL-gjQT(^AWwFP88h5P;>vseEMr;Qio-pv`gJPy7$+LU?U5Fp=6Vlv>=GuXIC(${1B_e2!>F4{hQf}k<&B!}P#^o7^thbHG!EK|^ zpDZzAMd}Zy{`=ak?ZWT|E~diIv#Ec`LNN1RY;JOKpJuG{xEa9!)ujj3#fMh0XU(zr zsHcIA%3Q?x18m*=Q)LWEX_SW=vRCerp_(OBHD#FeIGMuJs^I`TFAu-s0&XovJ{fh{ za?ef?F8U#zRJL!sa|M)2ohns9j(-00R7&DG+rOfo28)`eioAC- zkM82Vn|XLd?cHa0$uHhC&J>z75+bb{%?jAyEI=xND2K;Tu_zQW{^H9om!-a~PhSW< zvDr`_<^X6R)F?$q9`-ylThc&-@8E<0cbW}B%O@Gob zr6oDaBH+E2R=_Nv9GSK1c$CBHIO+-s&2%3Tnvn3BxS4Z9o+4EGycNNF4V7SS$9d2h ze?Zku_CEmj+6(bkSyRY}yP@!8q-VcAh%TP5asVkTtvGw@Sj~W_X1sK}Q22JMwGE_Z zPfFe9SOYeofUdvN-(Rc2ZC#tTHAzBp(_pYEGz~`P{{ZLuG4;OgYs8|>E7OCj_DH&4 zyAS7doe%k9luej!_8VMov|^UjW&v$pv>j)vlTc2cgZ(>Dd-BJ$wsG(UHy^i3%}r7z zPYtF-GtpO6T~b9qxyPe6U~!_0C%3QwYQ-7dJkeCvRR=hf+biOry~#97W5+|EfLP*b zh(!^Qc;|`3)@|Tg=$E6a;=xWG?=H&M3{kX>=dPqc%( zqOTnkr>`pcX)fz?`AFKteN=1LCl4!CvSJm6H}pn$q6i~Ty&D6IvNpQzzE}d#T(;@`YP)DdEc%Pw*^4*ujCCsc)-wE`1%G$7L< zm;$|*?UbX7W|@IYWxTM;wUS4E`2aGw&v8skq0j}-?)?0~(bBGMVhba4bOkjE3p35o zsj)Oi&d3m@J9R>ls+Vn<%30Lh^8yi~{~*Z-a&WuUc>(`>@D{4M{tie)_p_a@l>dxa z-uDr<5e~>o&FDZ2tJz?tDi&FrCrH^KG-$MuR!F@sb(F{+VQQj~ip#2J&mPAI|1<~GD@!SmP z^Rxp`H8Th^xd^q^ETNk8XQ3vbTDle7yQYL49;o5E^HdXs$;+p}rIeiEX%Mq~b~hv< zpXBB%InPF+^@V{OuZ}}6#oxFJA*e>|COtERC4qKe!ZZf=IR%~zDGqTL`(VyOO&UuE zvw76qTVpX5(;_Co<qZu0fr(1>~8v8a!Wo6{?aLc8C z%cTMwN(vHMQ+7ksH|J_hBz%Z+$fX65gl5#zon$`KnIE;>aSEtXqaDS&tg>BIYMU!Z z0ua=Wh+xK&eDb!tk&k~83Z4gD2^$Le&x=FWpTnjK-Klw?68(#ROWCF%{A3P5zY7QA zzNcmJah$98fvUe&Oe!>U47K~!@_jwaCHkE>1T zdd|}_2CfS%)7o^wX~;s=bQXcY{`y{TN3h@_(&`}nE6qJSf%!T_!xv0S}My;{hT(f zuJm)I%SHV0zs}A$GMJdwFsSX5T@j9QN*(01Hbt<;HK@0qNY*bxrbz z_yyOu2G>y@NMcEm&bTymFH>5BDVGQE2~G1{7o*ofcSnI+|c{qCbXHSTu3vl55!hA%jtF{-!%+U zl@d+~Q%ih6_loU56s+#8@GqQ&X^Y3Q!q8#v(o)bW&9{)z(!JHJa)`d#kz4sOowj45}#WV?YjFia3WVjX58gE z1_l2cV&Q9F9&|dUdD+v}rXeU7rHG*i03ZNinUn-M!NA zz_c2xQ|w3Et}IrfC@O(_0#hOdexK^KA%a-7?Yz&RV7h}_Z~4f9;$2t4b#Ge0oyPIm zjQ_!CBh&%Bau2oEjTIT)++mGQqOxt(Gmx(o5drmbQig1xR!KQDE2+VNigXg7=j?n8$E%}@P zT42pStt4c{X}m_3#$e+Jo@A&`C3StV!oG{4 zE4GCtN6B9Z9og@IIBX7GoLXveMkHm;u_Weh($Y8?140FvKxRIp1X^29vgA&42lpiB zZ>`apj*981)YEdgQ^xbu>n?<(Q_7~VF6XPn0UhxXN_{1SR4R4pT07JeP<52QUqn(; zaEZ&Zt%IJAEJTtS4GeByeig*+AE?G6_Qgm5M?)lvi&*kiH}epKg$rf25woJ?3DT52 zuN8 zBqAdmOJ6F!3`Y0=7j9}wl`bbR7$m0ZW@te%1fpT$$)tDD$VTc$jpQIDdexd7X<#Q`PZ`x(f_u?cJ-TlXO@(zwv zaNS9Ja`nADu?2RQ*U+R-Q;l|+fACRi=f*WMz&cBaL%SgweG^P%V#ruBu%P=Zfx7Ef zze3V#-t95fUCzXdnR*VW5mNRg$q}WP_qj%6xE!@)=w3*ns}p!1fb7I-*df1}y5Q`1 zs$4`#3m|D6lS#70v&(Y`UviB=ZD9H7eNeK$#%6(ho{dc1sJTpsv|ZH{oRe6m3f>gRNzGa)2!a!ecHeaqIP$A1QCyr0x#EdP=XfoT zax4xCi?o@x5^|BMxk4o$f zvh-w+>K?W)B_|nDWyKz=2?Gg4un}j2ZK}(Kw~5-?yx{0wiYXDU$gtqze8+f{Qgb6PL(2fx~0 zOX_>28;MjA1NiJj_q0ls45mXimAP%46P0{bOfH&{uytRxkT*#g^loGxFbGj^Ud~86+`fthO}Z=~=$|N>f;!a5M}PEt z1aM!3ahw9`nVHMI39cXcernb6M-3<=o6e?3@T4P37nkm%u_HV|UF0d4fD+OODIYHQ9-=Drr9RTOIT4UFRLioIGu~*LK~tA9 zlW`D4Qnz6o_x>Nm;^yjUg(J1DiJENSeqO}ltw0?Ct@luhs|w!`EL|pkrZXH zr1qX_cUCC`26CW(qZm#J+W-I#y+pOZMx{(eWUM&(-=PrsJKkf_;#X5!fAe7_iNM;3 z8qkKM3TfiiI^?7aAQ$@&lpsFjC`J@H_RhOLuPWf_4K{$pFsRgyV5bNE{-RUfiIaFW z2l2U*!qjBaN2VXCvM^T z4b%P?<$8Q>Y@`~Gj0wwn>Hs{2mUyFTHgAS?6XRrtm{=EFOpFpwrYNcAcpO$-m^-rp+jb_FJ z{V*hlsFZ*ZN1gU>uro*Dp@^zb73_?kE1&rJHT-^jt`0fGb1Ny)p#p40aAS#8>u!Jv z_iRXz#fyTmI)2NJ=1LsA;qMmr6)Xy+mP*Tk%$}t%ujf(u#2sI%bRZAbf5Gc7JLU** z=56B0iFo8$$QC|o zrp;*bAXN6Bu!sp0V}*k^d=$p=U*r-69kDy)7jHiU1{6)26nGLkMs*j7AfWL@x0OhR=n~92pGP~&m2$uQ9kwaV<@DM;#ATa^d|$R z9a%|ZLiHCX?w4nN8}gZVLf0ILXcK{*M6JrZ3Ubl!!JgrVQqY%6^`o#E8n7Ypz#^F6 zbpq1ndAK-dv*VFK88PPw>Sj;=;s&}8g_?3-%Mcl}V)=%%QQ^6f={z2N2KMedM(+Fl zs16!$Tyl8Dx+`(toX>quE&ImQjyujlIc1S~6HIwTQL1dkG-P`7ZaE1N z_D03N|NZbfd-u5OfcpB9Xvc!^8UX8rx$H=r%V~%aYhrSewIkhkC9xByg zsiqZFrUL1wL`;5sq53{$QN}%-`)?xp=Ym^K{~$LjP$@Xlnafg*Xe7}ym$f;(ns#sa z<)YMr(9-L!5QpFOS{NIDBfb=ee~YE-|0v;(8<<#9xZs1*mqvwDlPgV+Iq;|hHFCj3 zmq0bV51GSyoKy>Pl#xlT%P6)HRBa8{^SHz$Nh&fCX@-hdQV==uvXyNH*`q3qPsso>_;LBXk13^c{>Ou1oJu5gY^c=S`Pmj>o7vk5i;_DR5#F~O%S{wBX zKG!9&$c&Je(1qH2H{5|VuuCy)Q$kgD?~z~M=GkkO1;5Q$FU+?_ACzv>1M!z3ukA+CK=sSrt(LTSjPCJ;Xu9plMQ%d!sI zz_dcw&U z)mA%1?I8Bec@dTVF5)HpSPS{_YjJuN0r?Y^(AsiL21hce^5=Qnz}@(BY0tN`o{E1p zouQfeAm!yVh?FMCXm|uMYn`6%Df=gGY_^){PQ;J??m|QwyC8!McA`jIv^J?`F}*6Q7rpC<-b9q9aJhEUSa}7;e%}3 zCPbFW&A~ek!GhC|9OzF?AB#G@dCRXv9pTS~d<5x}()lSzG0+;Uyp}?@SytV%d2?85 zGg!8X&Cq2=)g-Y=i>nvn@6S%4aCT#m!|NA{mZC`xgZ0aE%GLxOddou1R6WG&Q)Ejb z&aBaB6DFfjCpW2!(0=!_Hk9xlc|5WuyD!DX!MKQ1D$RZ%EqPS-Y~MA%A4ctB7||v^ z8+8{an=8|pG-fBzDd#F2mYnEf0hfxP!$zx7^f#joWF_msD-V2DPK`X8A|~ zw%&0bYTh42rnd_L0P+)CFc>KLFTv+O9_Q+K7|$Jze_ISr%x3{s%u@cv9Z=e~LGFFk zb)bU@lwpM&)k!OqlIi$SPXDGJk5r$dx0exNGHhZ_#OXj&^Iz@?BrRilgmdAap*wanjEtxz%yuDKPO54!$hHq-B?K{9oHKj|qFZBr_O)hc z1;hQyMgM#by|y$X6l%XyDP%`U6~$h_KW-yLItpC5x3vFHD!LPqDNfzdg6d;SvSyK7 zS2l1tvJH;fa1j#sYarU?!-VHR%v!(n4Pp~DOv1PKRPq6#(2AO?0{>5X9O7M9>o^$6 zaj_Ml7jRipSmbU!_H7ONI zU1GKY-EcPJ#p`c`g!Kg5qutVGW_*%DM$)*+`uJCTN2yRKWp3)I0^YjH_WW(RyRi19 zx%WcGejh$d2NcKd4O4Gitl|2o5;{(K07|8ALqbU9qO~O#HgYW0>RCC`lv!v zQ509D0?T{EsuTVW)$z5EAkm9V!ry%=&IY3Vl;2uqMPt4gwuZ$00uJxK6>`~K;CMb) zJhXi=`Mo(V+1Hy+%@LPT#kK2-#1K6GNtYBY+cWp|a~VI$+Cvx4Q!Mcv@Fr|_6hsd$tF?nD+kVk3O2>0GYnwCsd6{j5Zy`;X9({Vs?|5fb+H zOFx!Md>oQlLj6h7z>+F@3(}GqGm@GsoHITP@z^ftjy~FV)$lOU_aM^f0w`xHa;F;; z#}9?fBZ$ba!RK?qj_ep5O0grEOhc0AHVKs~K_s}6Mpw~hPVV$V5e)wU-+bK-;O#pX z;*q}s;Vy%s+golv<5>=_1!~TbJ;-Q&kDBBa{iok^6KbTypnWBDxmpU-ofILXK*mNM zgYG%kLa~6)A00hr-$QO$Tdbntnj^dSR+!g`x`XeccJc>`YFR6#J1FkA`pfr6L`~pG zN>z?p3H8dqp@0?f)fYl<&vr!I2`Jf{jpd-x;}6sOE`G@~AP%}(Ia6JYFK`?BxlQ`@XO-E<*F1<49|F1o{|krfd^d$dP;v`53}QzHzHPC2l1_)r+%e+bO&Ucxn6 zgd9guwF5e155q&ZZJ!kX-5#?#+DyAW+M_)}XgZZBBU9d0nK-ITA(&*Quo!kabRzPl)Z6MLSMyKF`%uIim|sxn`yU4d$h-MHfkrZNuNqr^r^yFqMR_L z|BWM}bl`e>901*?t--WMd$dPg2GKBcI8aJ~t8}K?W|212Zjbh8j~5{8sN2{!7)m=E zl^)xp&9vL2J=$Y-n6^%8Dzj*R>N)M`kv7wAkM?Mf=Z-;4sksuCVbn+B?J>hOfq)aC zdQqBNB$a*}Y|GRvVN5ElGXrT->$z*!+L(HeR^MSJ^Ah&i8h!6TY}Dt2In36%&&PYT zM|(UcNP8y4eV`b}OrK%4m_V&-w!+xM2$EI=XPxJ3dM&EoshQ_E&})An*0s^OZHC_- zFB+!(d@^`dWr@6uJCqi^v#%orA|xJh}s? zQ`+q=JVs0{?gq??94c}1Yv9>xr4E>~p!G^oneTJYFq)@&j59D7<~q6Qgo=JfD{y{Q znbL4eP~+TO9l=2r4r76P}#nKl*nKUn{LD;{4B!!Y%C--aKr1nyV>V|aWWzq_XeRCN>{f32Ah{eCT8=l9K; z1@yD5!Q%+c_^c|1O7As-#{+oWiT8M7nrG_4;}gIIZp$S=gXKUQG3r`_7|$lW?|18= zJN)rg`0;vB)%NLcU&rI=I>^5RKmHDngY>%v1xPc)T+`C;`yd`y)?&ic&>BD9PfT6^ z>C5=f+gmYba1VEYQ}moZir>AgjzE5yrVn2~Ypr(_)BIblLG*D0-eS0I7HN+c!*HsY z(?NQ}jyAdB={xfXZQ-#5xcmToy&2*+B`a~vH_ruAiqSOO{D@6oJXyIZdZU1whKdsW}J^qhDh z=rcIywFIj9_h=QJK-)yp9xr&Ntv93>Krj>dr)C(Yrw{%v9w*@SPR48es!60R0~?Y) zvrT;eaQwJPn?wrw-D3J0MJ)gvz3~%zvljK=`tjI_&-=?d>T`!y-%B+Rwh<0q;Cwrv zEz~ld(Dgc}V-onI8<3pJh?=VyST?Xe zUX6cm#^yhv*TUE4wR+z(CZlSB9Gv4IEsDUJL!I}GYN1>cNVHi*d%Pf-b`50GtfyX9 zebVU14gV0*{l4iKb=AfwRUy?7-PW1e)291?MyCb65g)_jH-r}P*o()wW|YLR$Y42{quJMOd)tJUo%#Ej_nPY#Aub^umb3_ znu*f$-=djXLBC72eVd;BrFgtbqvMjAp$BU6^n@!$I<-h9h6t$}UW<3709<#1tikQ%h zI~rPAsPDa6-!G@%i8ku>)!G7{SJ3Bg!;jzKC!Kc&9%q5FaZh19+FAIM;NR;+pBx@Q zc4RBxJ3}Vm1{iKpGuoPrQ9F%qZ4^nPwGg4#i~5&5+(@8?Y!BA5IU#WUph>5maNmU= zH;1_1YXSoEx7EIxdSQ)i#@!w-hGErU60K}HKY%PB(9Dw<&8hg$Yiji*Y;c{>&w*bf zTl^Y*KSE99SiFuHwz)5<_;s=l3z`XBipTD1VG?}qY3!^)RoiF>z4flq;yUGnrlMNc zo=%+)JbO>TEHba^9IMu~LNc+ILm>5cg0|<0R?HMt;ghC67}?6Z>-EHJn?u^;Ma#4` z0cV4%W>^NJ34M=dvV=09#p5ohgmAq@tDz9$+M>!-6XqGnyfI&YCsU1zjX9wjNmU`$ zXYj~0lS*IX9l8VRx>pZ*w!pZj%)<=g#6>{BB&y!E)#MeSwIg?iv?v2+oavCiRckJ* z1X*VQh{#4U_HAa}9xp1UT}LIfS|DV@u*eol=ykVdUSvCdLnEY9b-!jp=sKX{Yk2XoOJ3Ai`ExW==U4eCqRWq#?Oa_yZSY}|;4hlUP;@s)h%CAR1^-y+=b!wYS+T(@IwCn8i zWUyY7~ zOh+_xt!k95KgXa>7~FKswt;y>1hk@fBY_lBPy@_PcM@5TChG_(8RA-XX&?*(Z;$qP zF){5{oip^E&cMc?IN6_Rv`y&!4fsz>8>y<*h`+&j3Y7EHB-5O4822>q=GRlTo5|p; z`ff)xlb9i5D^(#zF%t$;<5^@Q(@%p-j%hQPJ&W{M(~l8GNCoC4rfETjrRz4bZjV0; zrag<}r+7T1H&Q~INvvsXr;Um-Rc|` z4b3MdHG@E*1)KAM91YDGEih~!ny;5qZKg8WuI*VbF^*tXpc72p25bXS{GDWlghu6UHcq7uC78{KG>f4vHS zor|BV_5D_YsvzfU6uuZ#Le4roev9Y+090-5phL3RDs@IXXr&x#STy@WMvXNSfSO>w zxq55bB+3pV_BO+Ak2ceuA>+8R7Gav}X``=x9GB>W>h<(8k!nHZ0@X1Q>Xi0j>qTl__c zR<+f-A5_tPGAodM`HlLt{ZQ$N*fg52uKE_D{N^(O0THQw&KBmd_l`=gf5L*8*L}s-K~q0ofjHrad(UIZQU% z4WPQp&;~l0nzrg<{!N)is%+-6mY|sCd)30GX=h&zMVFbXW1F;+(4+8`MH{b!v{#GanRSj@eciMU7%x<=P`H zP2|)9N;DsFeazGu87$3ewaEB`>-YdvoUktsFh{=@%C3_fL?NJy^c<3=^~5X}ZK`{% zcKUjI{BLI3^B~ZL)%ihlODw47w*)yWDc(lNc+EUtopmIpZF)6Q|H-3k&3!$As(++p zsHoOZsHf=ofk45H%DT2kd;G6q+M4*I0S04Jy^nfmsm9-K(wje`H*j}7^%A2e?d2L$%p z@!#jws!d&|C+KOQnkyHydE~Acbma;44z)}-?a?0ptC)6;jx#12BP?noGYN&@QP*|~ z{hA+OSYgo+MK4gS^(XQ2)No-*EtQ^P!pU}yzfvudmuW^p4CiP1Ii5EpR^xuw0l2oA z4|?ypEuw5=TQ}wv@=cg_V`Q8DF#g->T8uhy%`QCNgg?GRuQdtJ&7hhM%UPUzQA2q6 z?QP#4FXk~@8Ijes9{iAu$uNSg_)kC7=(m*`8^)1!2&j1LQM}%>T6H%~65?7QEZ4sm zHM6({@Bgb=VAw4qw>q};jwa3xqm4{y)X;)Zp2EEG^Krd)@6hwTTr=*+GzzD6*sBFO znb8i_YqU(8rAX_c@&o_VWHaHgOk328E^2T8_V{yP+J>n8CYgf|A)-DSv;wF<2Rt}tFPCLVtyS2?C58tP{W_%Z8y(SXqlx=JMs#AiV^E16Y1v#-bv-8_WM)UrQqMk!_nh#HM<{6BWnan=MFA|5U9+5MM!*7rFctH$dXcy^trA9u4PD=RqCz?QUi!`Gw=neUp zj^k~bapA|J0MmUE|CDXwIcQL##=)9#P=rWA3z3XQb&udRpPJQ4R1EQm08<*lV|NQ^ zG041oweTwHYd&t~v>B#T6&rnMKqDBZnk=*Q{=s|De3MQ4c>VlQ%{*QGF0>BR6k{`0 zWt?pWs>4QC>3fj?rMfejHp6a@KP#qPuW#N=h`X7Z)YCD6R*`BgWObk-6T&=8lN!eX zeXi$}z*O=~r)HuBa`@JImR9GjRa$H_@Ai1Hj{h&f05~9od%q3VVgLXD07*qoM6N<$ Ef_}hD0ssI2 literal 0 HcmV?d00001 diff --git a/environment.yml b/environment.yml new file mode 100644 index 00000000..318c1bb7 --- /dev/null +++ b/environment.yml @@ -0,0 +1,11 @@ +name: digipipe +dependencies: + - python=3.8 + - gdal=3.* + - python-gdal + - libspatialindex + - imagemagick + - pip + - pip: + - -e . + - -r requirements.txt diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..9a53b4b7 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,15 @@ +pandas +geopandas +shapely +snakemake +matplotlib +pyyaml +descartes +fiona +rtree +plotly +rasterstats +networkx +pygraphviz +pygments +rasterio diff --git a/setup.py b/setup.py new file mode 100644 index 00000000..70727073 --- /dev/null +++ b/setup.py @@ -0,0 +1,51 @@ +from setuptools import setup, find_packages +from os import path + +here = path.abspath(path.dirname(__file__)) + +# Get the long description from the README file +with open(path.join(here, "README.md"), encoding="utf-8") as f: + long_description = f.read() + +with open('requirements.txt') as f: + requirements = f.read().splitlines() + +setup( + name="digipipe", + version="0.0.0", + description="Pipeline for data and energy system in the Digiplan project.", + long_description=long_description, + long_description_content_type="text/markdown", + url="https://github.com/rl-institut/digipipe/", + author="Reiner Lemoine Institut", + author_email='jonathan.amme@rl-institut.de', + license='GNU AGPLv3', + classifiers=[ # Optional + # How mature is this project? Common values are + # 3 - Alpha + # 4 - Beta + # 5 - Production/Stable + "Development Status :: 3 - Alpha", + # Indicate who your project is intended for + "Intended Audience :: Developers", + "Topic :: Software Development :: Build Tools", + # Pick your license as you wish + "License :: OSI Approved :: AGPL License", + # Specify the Python versions you support here. In particular, ensure + # that you indicate whether you support Python 2, Python 3 or both. + # These classifiers are *not* checked by 'pip install'. See instead + # 'python_requires' below. + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + ], + packages=find_packages(), + python_requires=">=3, <4", + install_requires=requirements, + #extras_require={"dev": [], "test": []}, # Optional + project_urls={ # Optional + "Bug Reports": "https://github.com/rl-institut/digipipe/issues", + "Source": "https://github.com/rl-institut/digipipe", + }, +)