From 31621cf4e07eda1c72ef0a90d58656dac41f4f9d Mon Sep 17 00:00:00 2001 From: Yannik Stradmann Date: Fri, 14 Aug 2020 17:01:18 +0000 Subject: [PATCH] Initial commit for GitHub Co-authored-by: Benjamin Cramer --- .artwork/logo.png | Bin 0 -> 239538 bytes .artwork/logo.svg | 396 ++++++++++++++ .github/workflows/ci-pylint.yml | 25 + .github/workflows/ci-tests.yml | 31 ++ .gitignore | 277 ++++++++++ .pylintrc | 522 +++++++++++++++++++ LICENSE | 458 ++++++++++++++++ Readme.md | 58 +++ lauscher/__init__.py | 0 lauscher/__main__.py | 51 ++ lauscher/abstract.py | 113 ++++ lauscher/audiowaves.py | 48 ++ lauscher/firing_probability.py | 5 + lauscher/helpers.py | 39 ++ lauscher/membranevelocity.py | 5 + lauscher/spike_train.py | 45 ++ lauscher/transformations/__init__.py | 6 + lauscher/transformations/basilar_membrane.py | 123 +++++ lauscher/transformations/bushy_cell.py | 94 ++++ lauscher/transformations/hair_cell.py | 100 ++++ lauscher/transformations/peak_normalizer.py | 12 + lauscher/transformations/rms_normalizer.py | 15 + lauscher/transformations/wave2spike.py | 20 + lauscher/transformations/window.py | 53 ++ requirements.txt | 5 + test/resources/spoken_digit.flac | Bin 0 -> 34220 bytes test/test_audio_wave.py | 17 + test/test_global_arguments.py | 12 + test/test_hanning_window.py | 16 + test/test_main.py | 28 + test/test_peak_normalizer.py | 37 ++ test/test_rms_normalizer.py | 26 + test/test_spiketrain.py | 25 + 33 files changed, 2662 insertions(+) create mode 100644 .artwork/logo.png create mode 100644 .artwork/logo.svg create mode 100644 .github/workflows/ci-pylint.yml create mode 100644 .github/workflows/ci-tests.yml create mode 100644 .gitignore create mode 100644 .pylintrc create mode 100644 LICENSE create mode 100644 Readme.md create mode 100644 lauscher/__init__.py create mode 100644 lauscher/__main__.py create mode 100644 lauscher/abstract.py create mode 100644 lauscher/audiowaves.py create mode 100644 lauscher/firing_probability.py create mode 100644 lauscher/helpers.py create mode 100644 lauscher/membranevelocity.py create mode 100644 lauscher/spike_train.py create mode 100644 lauscher/transformations/__init__.py create mode 100644 lauscher/transformations/basilar_membrane.py create mode 100644 lauscher/transformations/bushy_cell.py create mode 100644 lauscher/transformations/hair_cell.py create mode 100644 lauscher/transformations/peak_normalizer.py create mode 100644 lauscher/transformations/rms_normalizer.py create mode 100644 lauscher/transformations/wave2spike.py create mode 100644 lauscher/transformations/window.py create mode 100644 requirements.txt create mode 100644 test/resources/spoken_digit.flac create mode 100644 test/test_audio_wave.py create mode 100644 test/test_global_arguments.py create mode 100644 test/test_hanning_window.py create mode 100644 test/test_main.py create mode 100644 test/test_peak_normalizer.py create mode 100644 test/test_rms_normalizer.py create mode 100644 test/test_spiketrain.py diff --git a/.artwork/logo.png b/.artwork/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..fb907ca07039ddd83e467a7ed8f398bf1cdd9892 GIT binary patch literal 239538 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
5rReLtPB3B z2i728fM1AVXCS6D{`6O7ipcdbIri?{M7_|_QI&gGSiA7UxUeDkYXqsMZ#T|7Y^=k6 zc7)EXtRAn`&9$4nBC>@Vi}(z&7L^_HVZ$L4ovh6h*_I{tqz{rP5|Rk6xGVnWJS0(x z=3Gp7nvnA>dd7&fkX3Tq|AtCHYgAI{YZcACoQbv^I%ddZO#0BKI< zoO&+R6ev4Ob;UY-((gc1Ro?Cu04ItMws{#BaW&vi0DrKjC{C9em>`3M6^mWNv8nlq zds7UN-|^q@#sYj%FAu!)&pa_)$>5Ybz5h^@_O3@gGS^MyXEq+5AJeP|3CCmo-O_kj zTM#hqNm0aOkmzxJ(@OG=Lq7e)0hc66$kaDdNMd8Fn~~hP>Ht0tPiNV}T5C)ZB6I=7 z@hY}A@$&6d9Sl$ANl9)3BpO&Q>~VDDS0q>$ZKgA>=*Z2>yAHF$ubI{h1GDH07~vQQ zjw$fNx;u+(pX7!OVLyLnw+;Il%B7sUnH zT_8grT0SJB6v?>9#GeS zW<*9z$x1jCa}*NzGK(=wwNM_h#$*Gbg06cT`hLlhq4O*My7}sQz)Z*=R&RQipB|PSD2ZA1 znu%c$|I*Xr)%sc(ds%p})()^rzynKKESP-kKW{f+DNcFWW#2L^7{0Xa?N6`06jIIp z^bBn3f3BNvs|{_;v_{`x(MQCBsF+Zu@G3)4q0tMXy$%JWl@(7d(W)SBj!l zmd^zg1u@s}E@90hXY-!*_se}hT{hnRm~6>q=yUU~rMTl11FsuWH#RI)VN3x{zJ7RZFPo82SauiVNj~4xPo;n&u63-c0*qdDt$YcM|fj%89 z$2Jie@PuuEg<0A*HJDO{-X3)UX)eN|Ja{xu;R?w-hMRxmJ3RaNY-gRIL8RE{V@^>{ zjvrB~%B=*?&4h{Aj%@Wp%%af)u{nF}3+%#*%_PEhC8(xeba8uTxtpH9haF!Aei}@OUs_FW|Q-Q;dBd5oczl#u&xI-Sb>c}C@hTu z2;evNU!6kFg|4_R1)rXM(7pEH+fypzQv@>cz{98GpuO#Obb=yLat0T-Ofhm#Gzu(t zF>r7K1SsfHX-pLSa~J`SQbIN`r%1+`O>A$shA})mlS?S{w2SyJ-g<=`{fv~`)WNY$ zy{6_Kglwm6Z&G0y=QP85M8QxT7b!RfNivdZX)e&DmxhZ~3q~u6(*1&-_2U!cC}RYv zM%i}e+DrvHGVzUU977MF_f()yhEzf2MYEWcU!exsTgz3cl1rt(6IXzN_)*-LSzqnz zH6zrr7{%i@0wa)bXTapTrK6!e1;^}g;H>&5QQc3eOf+}qZ~$OwI$#*hexRG1dp=xC6Jy~=s3bP^ zi~r9bMG8J(4g^*N05*8ND98CFgD4hqMaw%9bb3w9T#G!-kc#|3^{1-DVj2&jR<>=Y zQO_f?+X#&2frbVqCP;o%24J7Fv%lX39$h5t#rItXH^;R&40+bcC-S9hw#30Ol_}{; z?JuL9uju^sj|dxU6fYgQ!D)8bB-tH%X2;WTdK$6O@NYna#>f-TEg!t!>L)=F(C0j+ zZ^Hkk8X;8^F2`*1%=5-LUa@LfM)Z2vAtJ?Sdbo|!pgd~coa{iX+o;2OXbK?;qMX3| z%)WD_F;dfxEyAlh9o??;5!exx++`e?Bv7ILXT%6H6jnfE++$t07zph0h~iOBpTo#L|6T98~l&&b6K0&-!Ujl~9<82d`<+vP9c&n2sYKuTUos4(>$<$@uAY^bi)<1`R%6{wJL$e#9&vf z_I-DmU|gj8_3DR(Lgm8M2?TgaT%bG8F;}Jm?oOyC*1NiqB4b>AKe61HrHc~efk8NR z;oQl(e41GZjM$m?5~-NoJ_UC~#(?dIiE@Y(l^m`Pe1Uwti#3M7ZA(bYFf`=E|89l& z6XsZKqox^K>Yjl4TJ`P~JMHLH#MERyP171aSGgwac4Lh$p`fh^;n_Z{FZVN{nw$70 z!yKO1-LG89Do?i4-FKKeb9HaaVgBu3*6KjsfQjKn+P0;(q z>q$N4T_r+V@~%qTksET9%%ey*=5i%_CF{g{CI2E@)E-me>x*Kk2_Nr3X#96=kWOQU zS?o+C+07gdPj}Jnu^`=le=D@PenQkoqq~$_R>uBZ4HpYhcf)p=5!gA3LYa1KIp;aQ z=)~r`OSL6`Z%6>_2_-rhQa!ie=L%ly zQfnC(R;j8Myl6+1n34fYW`I+RcvWC$3pQ~~Rg;3Q3G}D=D>m?D>u@Q_ViYB-i+nLI z0D&PQmR#%m^4BN-=65BN9S%3h?BwK|btNwgrB$qs%tC@;Q127Tf)QSst zS_+S{_(p<4JOz_xnlQlCqxK9@{iXNL+nh5s#Dd%p1`NW8%5S}DG|5J{SYi%RWt^O7 zCo56^3`v6X{oHa$Y?L-?B3t<1%LYPtb-pz7y>E=KK-nuS>xSV6v7QiR64DEW?iIJ7 zlt#K-kd#&5pYDgBzJuGVgG*t#o)Q>7 z!#pj4e^QDk?x!3#>VDEM1C@AL&+Ww78Jw!8Wz)tJfPTk=oT`84c83Ui31BxfX)HId zw&lDsaFVc`9}L)am0FzpJa9xV{oA~(ugRCaqGrq4NZ23^$`2{IEPST@h3uLZwn?PXJrR1BFdUHCxCN#W}+%3ftgM8NRmBj8D2|9HE10@LFy z-we5Mfa$PUK&Q8-Rv-FpQRx9p-`B5GF1>}&Wq-7xH6bg_ytNGv`WS_NL? zbgI;&4Dk2misoyk4#?vmOT1A4Q*@^3gUe1mc&rTP}I7Cy>9Q;JEhB4{T5e&3}+=THbO35Fz zxLa(aDi_{g5>-FbsDA{e4T&h3X5=SRNoPgS*bjXVLk$V7=lo>y z&_XHr(FG^!!6-?WS}5S0$O2xP_mx+5ZGlvw75(&TEd4I0Qp0DT?>=iy{gQ156MC*T z)k?~_8`yMM{M`BX&zA}nMweN-D05jYf7~s%8&}}H>Dg^$gN-fs-TL?4&!#`)q^$T- z-Rk7R;}7dfce)Wii?(-!dTk58Wuk0J0~9LZJH=jNgvA@Yqxxfq#@l#?BQNEofWl^L zfOuZbvPX1kNj(iZ6pd}8vgdO*371$VSf{i0PHjU3_I%Zs5J`l02Ijr(y<%kv+^k2Q zt{&D-UmfL3&7sasmAB%YQ;@>^3i6U|emhO;2F=?vVZ!<&`-X**UBG#R-bF5V!jKyW zp$C2z?`dRdra1#QBXbT6?z;alJt@Ce`vEwB^`EKeh~|e%j|=!t1X)>Bv!ekKm}YRxlS*M7bJwn4Hu-#;~G+ z9wwU;(86Ku*K4^1+R4dq6Ay-SlcHTAVW3$620oxT0v3c{$zBvUxv_@}tuUAJAmzaG zf5yFE473R8WQ%gusmc}r#Yu)v6|wne-ekrh*zDZi-i|CUN3whVll$*(0^R3zV1vt% z9`t4-wtmHLg;WCw6EN*8WRyB}5I&*yx_A|K;CkZ+29v_6RG1I zyzze*;U{9!a^Q+HZ97k;!D>sIwmykXGQM{&!m7=)^9I|eDps!Qpt2(NaUiWN2U8eg zE70&Fx|k1vf~5=da1@>s^huP?#qa>_&n~ zL5E596@e`FUL4!JMe&WKFFe~3?y-&UZhXv)& zPZX_jfb#m#!$GlY4JXL51AtTqur?`4L=4U0KwSVUg?;-MdbtSGrD_c8_PSAjB0s-b zj7|2>{v!TLjo}ej0v;j$?tL7VXM!5$N3h7Ygupn~&NoG$hejOnez_VQ8h=(!+xyK- z$T2nVU)j>c3HZwaneaeMu(B|)tz0?q0_!cp8S2b>i{A>{aJ2Xmn#4~OYWQFqvB5suiLk4Z(>BS_w?)&L_wky}1_ z+gGL&F2gKXE>7!Dhf4Fy6`?f0B!DCgMuA#D9}uI+dmFEji0H60fdR}GIGzE-gJguB zi5Q$DerG^3H6-rawBOm=6W7TnaGZq*?VGhF>dRY^p4)%C@F^q9`^-;+3@hEHm^ ztH=y?)$IXMOG3a2W+;x?qN1#!%}^IcTb$Y&5m7n93IqTluy|6751T(^~f4H1iVH>v53(u@u?h@B;CXpKw!rs73--W?|0HXpEF+x;f!IT($g;!f^eVrwKI;@02B#|%_g&ucg z4Gr*^!B_468uXcng7JQ^#Y0}vU9N=#g%T}LpAqy1YW0BtXrD)3z3%qpazoc`XJWkd z8tN^iKAG=`i5rT!K}+N5ZX>`rs{|twIf~_5i5hbOv1w8_!e8+RJKZ{gF94#MSj)8w zmFyB|ToJ&MP*43Sq2S9GzwSgW8%GcvO2WrPg5dzxNG&Y=MIF+^XDh+Ilw z1J0i1jlsXw%X62$t%2NORuz2E*3eAW5bK(y1Wdi3qM2<#{RsVHv>{4}Br&F->DZ$M z2!l4=-PeyTjL$9|803uaX1NrA=1#Sc3v(ZVkL&rOS{ZP>tpG*E(b+i*_}FUKT6F-y zw%da9ymjm9i$Gu4lmb(I@n_y4a;4!Vbg{{f$p>+7Zsk60)yO8E_&5BrOk7Mru7xJD zVT+tx#;Wg(SnFIoN~4rw`+bLAF+IN%JQc}EKTC+Gl&7z#cuqz7i_+`vj}4F^)51@A zIaMj@5?1icVd=87n<8lQmXo(R#IkB*4~+Gbd|5)N>9%B_I4K7_WsoZOpI7C798=22 zRZ0Yh{W(xk-Z5osFMG#|n+L>vQxQ}CMnUC%z2k9{jk>)DK3pv{)3 z!a|t2Cy+JD2!5Tfy}CNJEUwjj&*Q^grN@;GSc^X|+gpQ$al@SS&M$A1z4SZ|xSQ`! z`)2^u2KN}{B)m<=G@Ouai1pAi?i3RQ=a^jbJ~5Ft@rsI}ue2YJ-3!ji_L4UGW^lYY zY6HUH7L@=|`{%?Wk(&qsh>fS7?nSMIiEdO_UG(sU(PqxwH z(DsNaH3$=%C-i(gy=6tkfiyVpJq#kOP+j-WUn%$I6S98%_Fq>FXmH0s6-xjU_3lRW zWNZpx>3Q!gkDi_5@m&>JR)RU4tW;V0=^x_uX5@#>Ohv^25#EVEd3xVOc-0DG75%8h zMxBCVp3xJESG80pyq|U=1KX*EcLZyV5s1C7SCga$7quO36XeuK@rD29bnmbSOdLWyh(Cndu};xA@d+K9;?&OgMA&@=X9tTb2#ZR$KNS zcjwiWsYDJCRy&hRLw2V885ur_r#VeTdyP5AknNz$)V8P(6Y3GGxV%yYB)(#ff?RPX z`ij&+ryG0&mCt3OiBnXc$J?U;C67cEYZNUfnAyJ}ug#R^>Ldk-CvLcMKg;I%@nfA& zov6(4cfvbH0-ym>Y-c5~EF{#d5P@UEbg*2eN1~g53%EhZFmBKk_a1<9QtUYDUW$sa z%=<~2rD4u<0nQmV)CD)fVu1186)%R<9}E%J3k3eece%Krm4Ve5d3pJEE(Ks9`t|8< zxtBgs2bXvW=IF?6IYmVxxFKY;8cvCH;r|9y6leI;6vusWVv?PTG99=#28ZWmmk{0y zHRgDP>3r3~z&(K<+}hjbv`!~06xwAJDJK2LwHKB_t$~x4$#oGzk*`}{FpZLXZ?+5QE_NDtsh}}}U*Nee^jUlICkL||a%9$`q zgvq!bT=MqYVDMk$9wAi-DjzbqR@#d+3Ca3X-gSy(*l^Q}cUKl;>1LvTDZa7mE*v&; za>LwJ^c`Z#D3&r-&Z^v1=>6j55Vd#IIWli+v@$pid+u=zy@muBcI0Lx-!gUUxVq@E z#1ZuVD3JKNd-2Aw>==%7j$Bl)B*h^Y@fwuO$MGowUf;TV0kI^$yK@$o9nNRwaC14* z7|@$8H4sNzVN_80lz}1Jx6^J1m@Don^?m^*0;=+D9gX9iq~;Bo4!C>1-fp=_p+7_4 z`TG+^GBV3z7Tq!R3*p?9waECIY3~ESiV{#+YK=#e?udiUto;6wq*q0{cEX|U9HxR# z8J#THJ^>|j#FybSnB6)+R606Dzeh&WCJ(NGRVAemc<h5VR3 zWtrHtma|H)654VsYvmTj+7Z9V7YI=DW%u-{-pQB%=^;J^3dORdpH{!JuS_-&nZZYf1uC=^h}P2zyy@0eFd&X!c-ey zjH@H{g!V2*10lU;r0Z*|K^_6gli~~j-m@|?9k7k+? zPL>*L@m3`9D|=2k>OHWI%(D=Sp#y|)cOO#{0GblisUjY2+`V+O|2IMO>#c^8Y1ICX zL~r1m5zj6Dkys4c$p9+UC^h85AxX`u%~Tu-PMn=8Y;yVW5>XKIy(%vV%_Ki8+sjgB zGyr^15KSZvw5&x%*G+AAZ=sLZ>%=c!oP;0!%TMpoGD{5r@AN=$axjYF#$Apm+MZZW ze`WgYL+*UmVm(*;X0DdOdI`kHPtA5M#pLy@oo?o*eD?@t;TusE3Y`splZRd7OpbZN z@>DA2KCjEL)Y32;GoB2nIpu=^b5l4a<7NnQ&Hkk*cA#rNHt)+er{)I&rIDw3z(pd` zb$kxujp^_E+wL)7e82OH3-0F9?S`3?>+G4Q-_?9~@23q0yS;sADFx~F1%IQ91^mp! zTXx4~o?!WPvz{)5jN{i!ABYZ?fwCp{2Er({EfIj^?c>kh24`%KVABoHfwzTQQB?F9 zbLZ56ZJ0?eqsZbX$Ft6>H(yv{hI3UddYTN0IY3SIB|31YIf?$0*Y`F=D<-EXd+uz7 z1m&+WEr(Q);kLsu6#L_A2Qj6j50%zn(&0SbvSbXu=@cSNx$_E2Kfd$aBxpT0Ts>Zn zI`5A|iF``6sE{q4>C#lZT5E9?{2Wy#lh-dCU0i5M!fC(<}KUUIbl=W7E6ukMrz8AC#acNPu+cdAAL_>NoHVU$-K& zq>aa2RYd9y7pZ9Mt@dF*qI4|G_WX8;JKa5gtMrfn)^@wrd(%f=+mz)I84lC7{Mtlr z1rkEl7q<%Eccx$3lFu)P^Es2kuV#+Bc+sOGz@ismvT)!@J}mrnU-DAXK^_sr_o258 z3xy}BTjE&S@b7CvmFkbWJr3Ou0hyj4G#l^ikWQ_jb0R@WXYv`g_v`;~a^{JXm-CF- zTmqqB<-gkAKWywcj0H3^^&E*5C=?ri>BSFZA3q}Km~GVLrljoWd}>A;ay3ZuF*sG6 zqv3cig889pL|z3y*bfe#0y^(!IbV>3qBAcB&~O1~r)7!fYiKAQ&}m6SSJVgF=Fqhr zj=EvLmj`zB!-4md(*th$z4L&WLVKfXZ@?^IwoLldMVxy((ik z7VWe*4xrOw*#(~dA5UK$73CMLO@opO0@5NSARrcfV)8aH0nQhe~y(LZh!b*Z@z z;-}m|OnJU9iG){t1QYwNk@4>lDJWzVn?uz?qlz+Aq5q;r^W_cwcL9G_#EZ}GXY;p4 z$4Hk~G;zQrorLAqJ8-(7{4us%dcZTz9;T544+rh{wDZA(A$!%ef8K7jk zZ@RzxU+)H$VESJT8?A#VFL6CR7~XL=8pC?@DJ6wsfPGII`DWJ!D%rX3Hfk!}j@0mJ zikWJHA`}h-b$UePBKEjoxbeerUnSj9y1$HvF25q)JFv|d0!z;Qd%W4$ID!7c)_z&F6@Z11Vppw?M- zfy5EazGNJ0{-dCM2f?+Nsb?N^80TG4$=!S53WiN3u7g9(&b@~r0YS$m(#4>nK}BJ$ z*9dL$aW`I#8vh7fde8)<3GR@EVgb#YyPkkJd08S8(zI0aNN(I0TM* zOe;N15L0xMiv1^2_ARM=d>d9^eI2FaQ0S4w>4`=};cI4F!*yx%6a|#P^#LN_2;(XX`qrtK}PH#?p?T&R;1C)(}~?;W_;gqy|*|7rF|T%Y~tzt}7?T{Wf8?`k=f zY-EFaZPNFTC^_0?5lT!Yl2L)R!vR=(bj0+KU?jX9f}!Z=r-qD*tYZPxc+Zl;hiOPm`yH0 zr7mphrULPw_*98fMM+OwGWb~CDQA0uINJYa#2yv_Yh9@a2c}hOjyHu}!=oxCZNm|9 z4l7b_KDE`~tQeKdao~)lMNHEE2JG0Ll=fS5mZAM$EcZkIJ4C6%-@fjP?$bTzMFTzq z#~_#a&aj7D|0$HNHXrs!7O)LBbJ~sUQ;kJ8eG8){McX z$GH9M!|wpa2JrbWFZsj5!T{=Pgx&%I%E8)5RcU{QL%{?J+=Rg5+{)hO9aE+>{UaI4 zx!vK$Ogmyflr*dLfq2>ahF~xKZ@@m^Mn#;LUWaIN+|T7V1`HtW~W)xPnmD~ zJMXGZ9|7a07^setr_?WN9!|YT@ch9iJ@LVu{Q&;8?OOc}91bS+cw`LKG!M04FWlRDo%*PatdEkkNvtm6A$L(bfZ3%JDK zL3`0G$zyIsI^h8gnY8=SXH#;Gxfj@pvhh4Gd(r$hBtwMV>0i$d?y`v&w_=EYKQArM zm^t)%!`}yW$Hv04fh+^#56_Fg|j6{9E zKOZ*9XDDS|ObapZbc=PE3jM(f4kW;9Uu~%aAQ+s+JmvJedP~N>RpEnjAkkiK{lTGP zDEpY{77n#bc|#KOA)GD;BVyPl@%Zdv$Yhfk_u%4&jWht)Q} z`FcB8t|y%T;eHToORufHrnC^6%j&P`iMV@ZP5l1vGJSRHY@Ybvon~*`w_fp# z3U>kLD?-xon{7vkO${9nkFz(gg{OpHH`mk%zV`XH$cRa!>+BV&uos#5_dIg_is1wO zOEE6S8^XabR0@ACV^mW7PVcYp<%8LA6ETRBQFhaQu&6zb%M@-DoE!5y`?qYc?51Uy zbagi{mcG9~@^h~VYAMhj^G?H3T2fllg8FZy!`;UZUfZiegGP5zyyiTN9i~Mu=lG}9l97)YtMNh>m+;CyXq9ksapA z&A9Oh2)KE8dca`_wjRg)8@Jl4r>xsbHNJcOJ7wnIQ+xaBbs-WS5$~P2+@Dn&9`iOX zCm_AGJ;vt5d<%JcApNngDm~D|m&C=ih#r}T?jLi7_%O?Db!QG58evh78RD%Qw|tzv z)|oq#&A~ke`NduazRO&Gz&Jj-_(r&w;$ZW4$iGz% zbw-aLrssBHJc{|t_8!j`*VgEEUDNeB8aV7L>2P>56c=YS_Ov)Z*24yN@#52^$IKq_ zJqQvqi`M{o?__Md)1;RF~sv zEMF*5bUCd^Z7maDbK^vY^tUg6vNSPy=8go+FK@jqQCTSUc4^V*pR*7#2eju8xxKBs zL_EBcXj}f=5~~|}-91QL^P%5&(>LIoBJ}Wn+|BlS4{6-IaT5O43E}h)vCX+Rf1%sp za$64Z$t&03NZGiTlmqHDp0@`b$8=*B9n zPG$cX`7MOQEF+nQv34@N|aIWuXuiMxD;d-R06ylyUe zw(r-O;#rWEjN%mZ`2C!lt3lDSeZDnCNJt3KFOW#(YO}j{D}j^%6$j%zip4HGwj%Rr z>C9ixWn}RQnnITBc*qkINftVv{puB$d~sJ~L_QG{?0W})K2pUv#J#(YvXE=SU0{;< z{+y%U`9^+pYmgw0z9>J4188X+;(HV}gy-}QfF)E1S^K5b-BiG}^2q3@RN)n1zzjrj zwvj(5?;^p}*;xCON?DyE$c-l=b#PR`pTmZO7AJHfyK2t3hwqoaX2xYiZWY7Yoz3e> z>0i0ePfq2U=g25(xbxvuU>yj;AA;OArGw6@+YuN1=h7%TH38nF?%EGEO_{6&6V>_{wPnjMt~;Z zMbbMtOBGzqYKiA09&sP2R%NW$QJQ`~0&o4aZ;(32Q8F$0`-Mz`WJs=trZqd~FKykN zs>U@D&X+lJaPmZuNHS9ZnjUvB%cTVd~T4zL?yv!2i4_8X@&g_*c!eha1pXq;@( z6bhV5E=C%?+_1oFgTlQiB%V!$NGkE&Bh?iVB?DE}C8^14#~tr+amPnkzi;Ovwv$hb z5;T(bk8#py`u!#fHl58BBnC<;()y5w50$=tZf&6I2VOSQaJPS{gLoPmS9L}=Z~RaB z0$y{E{@v)my6hKivkyJu+9B24HdIPZB5;-qT7{vesva&CZ+sR% zS(9`^Qzy1#j?5dle^>6^!2T9+`bCN&PeqReD@(Zg!UOBhWfOPm z6H%5W1vR$i0`0-#xaWLV3h(QrBf0#!aORdcqnQBp}WtGxdx*sx3qT-31#zz zxE5;yqae=`@%_p*_#~dT+NJJ5W3AJx`jH^8vZEb&fy@F?;?VX5Tj%qAoh;vzK{vPE z0>iPz(RXQF1C-mK&i}K$&F9N|mGoJ!(dP@=iBry;pq9zus3FIK;nqzAc|YFwOaB(+@-!ce@9g#X(((UEhiH05Uat!+{8lZU`Y=tlZB@>muTiEQb~ww4#(rt=Rb1UZ9rc;ZCgYIHD6;B(o4P0yJ5ENM7FH%fKi zNGZ}Pj!ln#u(GgWcS_rTBU<`%&FL0FIzkL=b%|pT9V?QN>;FJv{PCZ(*SFUWw`_Mi zgzd9OJqoCvqF)VtS{~>#Iqfk)74OfqvBb6Sa-`Aoy|H#Hk&lsX+R+>(+|wBEmd(bOXE@>_a- z^}4WU33hiaOx0=*&llFAe#C;U_x{31Z_ZT0mQwv{p5`mE8u|%*QM4dgmS{a%SV9;_ zA3^`tjW)RDOpL74AVNv0NRALMe(28*IhK;8=`XJ0#Pa;S-lmKw<~bjIl}lrCzK z?TZAkOGmfAeP9iygU%V#HW*@??qWS_Mo)ZG!%6`E3M(PV&|BE{LGmt6<&s-9Ju>*uT6zCE!ZZz3Mf`- z@Atv#-V@ho=K3Ez&dbXo!Is^67%_B?)1Fgo4T>)CfOX5UGKunruRS4IxG(vS&mh|e6dqDLGH@+)AKNrk>{L@rDou8a?dm6t?xxzHGAnr!= zy=vvEkqi=U=m<5MKS1u|mU(FF5g)L(f+WrDf02BbTLFK|d^b4nTC(MW&>IO1Fb7aY z``q>@7?hSJ8*=X3kZQk%TT~`9)N}x5+>;kkc3>hyiy(N#taR z3L(Qeniow6KAHg%BanrSV_<18#86zUG4w0(iq|o?D~dR9cwS}{J|Xynh-ZkrH&wX( zON(?eOUEVS0F=DBV;)i{;k zKQ81I8#2_QoFc^>gS;oSVQ8@?h|;Kmz*Y7;G?F*>zje5-I12E&idyydBK`jN|4J;j zh2+Qu`}~>G+OnjH-U&LYKiA@!d=a5%Dq5OT12*aRr_;r*B{_LEPK=iiC)gN(IrQS8 zyZ|na?2Dw^c@Fu6o05^G9A3eg1$$E|{vU)XO1qKwTId6Dv3DF-rsT^v$ zHFWfYT{N* z#cCOTsd`ji?Co7~6PnzK+z7N2-NJ~Y#Zue2c7A=hRQb=OKRRSL1M$AfjciD=uC1Q!1JQh#%1Ls3uNGnISwH8M0pyLL^mxXtSS`DEr4hj}z{5 zKpqBcEoFdv+Ko!kwM(PNZO_8dOaIZOh$H3%px^)RYBf23PrzXi<5SI(6qKf(>al$@ zx%cLuv@ow7(fm~qq=@eL!>^~@65Y{4zNxLsq9Js42$VkbW^|tm)uo!0Dw((m{TD6= zGROh9?i^LaFBnjo_ov^X@eECC-uOG-AuX-~F&q5A&cRy83L0i;_^|}R`jJ)22`Pay zpx4Hg`dw`hKc-Qvq5q?ui3*=B-C-v}C1wOC$gYkn0 zW^~IcScNY1h0a?&|9&*8-0`2fCm=N=?Hqhy!li>DMO+uw>d-Z~VJ@DKRFiiI3TJ9X zN;99fw7y<&e+2rp>Q>m9P9pJ}pF#mEjdIESo|Kwo$S%ju^ROi1pK;i%hzf_Z*FVU# z`0s)7}G-^~`cn zDeIR!R}%+;Os14!;L{9@cH#PM4O7aI^(m6744Fzb4yz&pnFQ@83(BVl0k_O|zr#iI zpj-~=2gwnXd<_|xa|IcFp$(67%I(^N;L~;Yd+J){{)*9li^hz3xmymA`LACgeoLTR zE^TU!TC@DcAo0aeCM8t_2KMu-DuaEm^_O`2nPQ0zbIPDTdc*+k1)TVv73P3o*W7`n z5tYL)S*%Nk$Lmfo8~n-c->-iJd0sLlU5Vy*#+KP^l6g@ zW??c7Ia_>;C9Dg-xOP9*N|4R=JK(>&sSK*2-NDM`zz7w5*eu~V2$$>!xz zxo|qV2>Ll2MS<9m>HO@A16Y4Iq38&RW|Fwz%TTniu$XUfFdDC4Ql?uUNqb#&vkJD? zYJR$q=iY@tgo|1j>O%2c##?D^;ru-!ES-F+CUGsN%9cjEJ8+X67q>;ikNA)GknLK~ z%Ii=+-ZS**?pQLc>KnI%FlxT{{wfDEWn{A008wfI_FTRon)?s1+oNd(w-7lxMDmrG++xsN<~Y%eYKr! z>FD@XU;cMM!1hr_6kp-5pV-hWwGMy%$_zBDz$28oKwi1aP)R>4pO|`3D~CTOQew>h zc8>$RaCV%ad_$oSrG4OTX*lnBuW+fPtMgV>6-q-Sli- z2SaYrIft#xy1G062e!N{pl$2!!;F0pM0_}IA;xpG&Yeg4=U6}2ItU1LkLG!)r(7Lc z_lftquC@CN8$*o;FjY0Vs2X*x9gEd>bW*afOR~XsUW2;cph7RAfC(%vF7CG*;0br+ z*)Mo#5<~Mov~!T_>r*VQjdw3SD_UJm#v;yk5`1rK?W3u6*o%COge9qU(!Qw)2*IK7 z!;-mT{U#9eNQRDW5JKIM0-V|CO=eLr2dlqnE?FWD;{uR74mIy#}s_@0%9MCj5YA;WA(JI)4B` z#-YCk{F9EDbQ}D(_z6~T|L~bk2_bJ!i%Y%ZY-(MmIenvCdZbZ*7b7}NFL2!u{RD;Z zt@X1xwjBWiwwjdZe5Eu_u)HB$1H~EScu=e@`9?{1sj3c z4ZuXlBZ-;8esdMbY-?+188x^-nknGFD zN|Mj5ORu%jkPoNnw&nfy`st79Sri6TRMmLU+i>waq4d|6yc`KFJQK4|mEgmnZh@oB zN*Hujy~@BJ(R@v6A+qy}(k*>BDpj}TwFr(|t0S(M)d1$(B>E2&(t~Din`(!~Y4#3& zF28Vc4->k?SjV*tEzsQ?rL`Kw2{El((8p9OD)AIs`K~?;i$lec<6DzIifAl zM6r}m@jK{(ppozXLvl0&uGU{|;I4XKwFI8_XwET$QX}#(ltD*azTgpW6MxDDx<>NW z;aV4^ZA4zg_u+3(pSol=36sJW?H^;HGG>@xY$!jIf1C_4sZH00hEb!eu856Rvjfy~ z!B(wo23UxJFc(O3UkJ3c^rJ3mtofv&VV?H^_f;#gnM_}OUP-04xQY&437m?03GCSbDsDAhwOCG#?-~Q}g_DmzPGN*Rw~kBTTKb9`iyqAI ztmyR*Yz3ADc9$65*D<6%rwj8?Fq92M++4VTG4urD%sX>oLFfE%*~cg5+}hqgRyu#u zjm^B~uUpF#jWP{j2GUockize@E@_*Jshr0G4555CW9Jwr6)|(INm>s0l&4<>dm*xw zRmFI4?DF?$u%Z#;CXRfi)QESh{PR?p3*Ac%okEEHIP~H>J4B;p$hZl?(pnSFY;N{- z*vy+!YE>?>r3ZtF>C!bv?0g^!bhz58PIsx%Dde6pCmY`bI1m6%-`JVVzh{LBf%&$9 zWs%24T)>IYB;vVTyoyE=Z~y@lFKLbx2@; z0m!#<7^rUx)Y9kU=y22vEAr<`r~hnMJ|~r{VaF9Gg65J{FW7oWeL{W#G(!p?2c^nz z_lg{viDJ3BM~UXU{MDkQ!U%-k+xgF)g-hZQ-g3>kgn`Ux;Wf@L^q}y{<*1KYC^p@9 z4YzMqGJQp{(*Fa#cnjrM5SV`WX9$v z1XA7DC|g$dw{=nB-VtTAGX&eAEGBaO3AU+E6K(erRCSfpe}Dp088N}NPwES5+k+_F zTq1V9pRuaBPp?(Kvo+AlII2?z-ylx_g64t)RI;Qv2v-j6J43R>KAx_XqHN5L%ip3O!%z%za2N5qbC&I= zYOv1E{&S_2y~P_NGslmjO$ysY=1*bO^g*B6 zbIF8oN?7DQ*5vx#cG5@t#;~9<0%yH%N8De#225navGM&=;l1NeNS@a5i+LLpG5Vb% zZuflC;;7Si-hwE)i#9&e9gwIfx(WQ+8(+$3*DP#$_-}g@&)86&>m>K??XiN#(4c>J zAg@Ytw-Im~r{{i)t%!IB;bM7;^={+j+<7W2R2HWYS1^nA&pBG2I2ZX`mf@b;$Qsf_ z45~$$zh-lc_Yc*q?pI4qI>9}pg$2ye^dAd307Ii*2oK;LU4GZ&0kg9Wq7xOg|xJ=D7?8cVogd-OHO7ux^o6B-BwVZw{~U#5hYZqY$k8g3QRF(U)rxD z98=7nw$6z0xh}E|@6@r%bHx2DZ1_=LVjH`j)oK9gW)R6xcoLe_@ZaUg(1M9i+|A1s@Xn^`q z!kR~dI6I={@#-M3hq|`v-3e{y@6L?%Ko)t~-jS?TI$ zAV6s4U8y+5qgzf|u2}{j!h|Xr=p?^-pAcI(sjHjAE8N@B6Z8@t8lUG1OQ(e?*0e~% zv>zzK!*5iw|2ggO0 z5MzbIi;qzLj-C8N42swgJHdHsT-e^kE7$iDMfsn|%SjK0Sj%UgEG9i!EMo(^#=Z5+ zyzST7#hr3e>fs*UjMS)f*;5GmQNw34>=tcyHP)odlI-gjt_Iu3zq|QkCBOtEVbHd* z=K17#;`VfAYU&Q!6+l%WaJBr&9K#B|dOIHo&XJkLER92NO!+6Ys75EZ@;Vu085OfP zof}fu8nmM5-UxVrmC()ZI8ulUI^zbmylP(aOCSz`y-en4ku&#x_z?@`PP@tQ66GlO zXA_$68bhHvgGNE6B`10U_K}_yGY(oFgNYs~m_A#*v1Why8LHL#&yaSodI>WPT)x;# zPzV@77n&IBGRe0E#*cpEz|ST9a?u#N`~|Qs%aa&uZ7^$Qei%GxM=Xnao=eEI$!HCrd1wA!vKUE zjsK;Ie8I0mm_I17?XcaLnV2pUM6ZbbL584zSy^@d^ze%XLX;S^Bm_Tq$OP9=!6K(@ zG%L*LsQAPi_17AltEdzi&|W4AF$#9F%Rjk>?+SMmEFY=X@{u%WI}3fp|<_Kn1?Qq+%2z(`m&AOz|ZnwRHmc(*j zs0o92KonP~b>{59)~T6Qyu-=kxLBoy~QvyJ{-2zhG1*nNI zY+=vZEjbIq30E7$8ra0eG&TNNgd~-v&}SwY(t3%Fg*2_ulLynec5{O(!z6Veja^MZ z(SDAGyWqFaQso&~O@Tu3PX+Jo?3sAWX?MKs2=0sTMIJ=~P3)-&)i3Cq?nmNdW?!dv zsb8w1no5gL}bo%)KQ z@f%3F3D+BTBcj^tQ|zD;om)eOjk@b@zR@`eCUiJg7AR z?=a&BSAE95ailuOc38hE35Kd9U?F^Xkys~~73_9C95vToUEMW3O_C%ZYE!p}5aGo` zht>oMUFI0lz2Wd&U+OAxs8 z_><+@!CcuBZXr%sghJ7D(2(344It5upVc)mxjMmQFQ;xIiffM(N`+%X!%Qv%Awkb0 zaH_jHHc_4Po9lDj__pS$%^0QJ{$OpDrF@*iTK;gC+Vmywt5Ol*3*#~9J3kxnPusVgJZ77#n9yCoQR-f5T5;Rx)F<3otdD8MDm*c5o=4Vu zaJ#NOGt*d}$Uaq!xp;s0?#t6@+~AH}iSSEW@?Fn9ySOk3D{W|Gi+Bgdk$g{~48OvD*CJo8Xt~RlSB!{g>xL{#R{qO~aU^H}ce_vyW}XOydAS%j6dJP|7|b;jj=w~2 z6Musy-6~zy^7+Z+(S=%xepc6^Q?-P|4`(ldF!6poLe59^{OJuUDWZL4+biJJ<>;Ap z<8n=RdHqA78*g9KGfvOzXsd7RP4Vb>wd-H@gP9mEKAb)T5#wds>55MtdjcheiSZFe z+PiRrsQ=>v1c@isb^55db#Gqob0018k?M^DcdG7|%k`*xvk$3pUeF1EP`n}V`GtL$ zO29QDUnb7^-;V0}0jvR)3iQ&-7)US&fndu>ARjrAjGyNhmJhYWCh+jaI1-=5*PkYDJszr=}X zJ;FquuOU0#&-WU*0;$dd+IKf{Tq;GoPq1Lrn$q*|V(8}s+;g}2ZG-u@r`bowtCy#K zr+e(UFYWAB6+Pih@ZY?I=d@@zbl!MlPM~FaoB2#o8*~<~??Ym()iPVf-Q3gnM)3D= zU3i9vt?C{I=bC=912cYvT^*@Ke;KD(xn{m$#cMvk{@y4u&;ersz?X*tKbGok7tj(v zrJ$hC9OP9m2eN-VGlkV%lHQmFORFyK{P)+*(y2ZU1mrnji&A=B?T8d zRl*!fX5N(HrYcuO;%1#9?=$)<-~&|M>KvInR3 zF+6zrJ~y|}AR&U}TvMLC)KMmj=Fs@Tm7DtV7fFM8KVF+Dbc5Ntck3+K#2KCGgw*1$ zD-?Izock$Wx8nvjTwwI-sk6_y9gg5JU8yMrDAdmCzTzrbZiH@NL!F{>y|@6-b_C+Vux0- z$Vf}yV{vm313Y~EGlL6By&@KJO3W2rbRl6cx^W{&I~A<{kyI7#*N~1krS>Lte4e-b zVpKC>{xI@c&44B+mDiA4{s{`qkKN~Xq$|=%Gi6EuK$0ihZ-&<~tu|K?c^$SM?d#1h zGC=4A_;Fo!Qo7USawc@#fpXGmTZRq(M6Bu{(fqo_Jec_GX%gOVE?O(v^4s#gICe~0}SaN{N9hq2KVdQf0hgMe_#*8AaHiwXq zE&qhP!oj%1yf!XnJOAX$-p>fJxe!OdxZBvh&a~twpziLlt(%~98?iuV%v^x_>r%>Y zdjM-e)3_SnDJRKAV!?nJ0_TSYO%|J~YfY9tQ46Ja z7I5Lz^B&*i=dEjcYN6bwbTuSpJGF>{c{`@>@Tit672cFJ_Z1I}3qZjVEp$R|(?+Bh z_r?A=6MpJ@nfrI%HS}Fj`&CB!Z-XOmGO*sw1-x@`w^&-yF+kH(B>^t*{^_8j4FSCW zlh>lBukWAy>GpVk^52_w+7L9iqDR!bTa`< z#@Ad$kP9kIAq3s*4IUx-xYJG7H60#Ncpc+I?u)4+6D648*h*zfr>oNh-%eHxdgYy; zlaoV!y_EQQrMuM3>W=H>X$=78hEGB@#Ud`{4dFMV{zer+2A}Kh;u(IOpx8hHO<|z( z$)CwH(0RruB<=4Sy*F{Tr-BO7s| zV?8|>fNgltXRTa|VE95`qW%S3$CxcNKLbD@UX%L)MS9^|(CCn51r8sdbaa2J_|(`} zJLi-Mb&K!)nwd<<6;k%V?-wSp_iEIh1%%2!X9lB(Zsd%df#*iOVN{I09F zM6~(T#AF7(TCX^Fe)BA8;(~zX$#Oh+QpvryX$kt5H^|Yw={M1TuF0#jUe8g2Y29`Z zegFZQ3+g%1*O^XiXa(pao4$i!eQ9Z{S?X17`OpWBRgjle0CJQ479l!3>?eU`2gFH#}GONSy>81pRppPY^q{EBPHcYUS>ptYzpG3W5WY?`xIY%fH%mRiHa4 z`A`Imn?=5fg=1?wRk`Nh#X)J-JDl3BTTVhC3zh#mi5_NzCLvIkSUf3G+G%rOY;ger zBoQ%XTE`277Of|Fq(P@gaq!m_KP#cqnH$D;Y)M$i({**SpTR^CnUq){Kuzci8kADx zss-w0;z9CMM={^58r-vBk{LgkV|EHgCReT$Fh}OzJdx~|!+8s~dDft|&Zk6sxTL+Y z;^BUB1x0Kc3}?LnJWr1bJ6JuK8=~B)NTMCmTXS2^T-WHv|)BoYn@=E=A`IOpFX+I~Ekc0_N(MAQZVT%DZqqGzfg- ziN3k;cTKB5G}xvsib_UDRWb;{xI&B!@K%0&YJdS+uDK4K9Lf1UBOf#>$S*;UfOpH4 z;!R2sFCTc3f?`dKdmCSv2v3}$+Z|mW>kr*sc2Q5|8I*rzCHM-f8GpGg(!vq!OhpOf zDH(bH3bCQ3&F}GL27V7=7zl7q2d`$rJ0mMqaL*|WzLJD~lL%jM*_V?h6qdL5{BeYO z^*+B>^3^az|A>ezp5ZTOHsXvfLye3<4G&KH)$?GB1NRIts5=47Pyn^^`<&a_UPqB} zeuVMf%dzdK`6kab=Ibc2^?Z_uF@0}POS8O#7K^>5P^TLIsaEn6R04HMxzH^NpG^Q) zj8-_^Py9k$wE0RN#P^Cy-taT0B`;pP@QSP!$>IGqBEOgR(V0FsVtgVAgopBv5FVmr-Q<#>>d|JmPz}>i6#o z4nAg!JI2Fs<9o`B@a1ED%R=)VuxgW(Z>V6;Z0JSFH9OFupwhrCq~dHVoh_`Zj!sm1 zZtj8;A6@)o3AM+MC&Efgv-rKTYDPvu8y6+6D}qCVaOX?jyaE5n(S%g|;1LCL`zOK> zV(j`B<(8n#N&DaP1iI!)?rwFKG|083Pwiyh;ubbsRx?Y4cdhVl(MRiVU4%U#%#0bP>&z>CZ4E*S{;nyM z9$v)IO0{j~i`a90x>3-QuY+Xx%@qIL6c7#hUDzkt;>mDY3ma za_lO{T4@^MXFq9?`{LIRhP0^m@632O5%JG!Ir)*zj&U{A(c#?AY*~+0OhdUmO!t>6 z;S2)q5Zc>^p8^`n?c1A;wGy9fx?di_@rlsiF)ix1-?f>GDKF`ESmM3sCW8o8aZ>s*e@06c+(xzq+Pq~I?L)G z52f<3f5G%(?J7E#-X?Q=H$VLM02G~a&DBuUKUkSfC%OZlSyJKr9IUeDE}LO8X}&PQ z`O_XfS@W6*;g9QB1s=Af=@g<>pFBUL=mMBY_y~lo0q66v`zpV$zu%fS19VIddzUCv zQ&Uue?$H2;SO(2Quy-p>#$CqhEfZ(kC4GU~k>jJtJaa(;w)D<3-GmypH-?#hAEB}ppfJhU9;vO=hWKXjBF1Bk=O{2ZqWz>(@K=0Qw9Be3dgjYWsHqEsSl8na!U zyf#j-;WSvj`D>rl1@mH`x+`73jWhA$gv?$UkrmE%>bL7#P`YkEG<^2&7j;n6-3bON z;MkL3GA4BX;$ff4sj7Zg(=x3Ef}d5&HPf=Qw}+D0?&WzRB4EnMy4RXu^=Ye>>_Z6& zI0SNYpMm+rv*eVNCcu;DOVo;BFec*vOzGX}vIkl3TKfO*Liz53GV(+mBi`p06#2E! z8F0{?55_s#HYx**NfnpI%{|iGw2fSWwjtR%n`LRmWPQk7{1Ixnki>%aLVSpZ?RZeQ0Ty zSYPnYFPS4tqGE0~C_r4h-70Ha_x$=Lt33p_P7>=vk=y+e$A>21%dZ|Yqbir~+KFF| zj-IZ?jk_&*EZlG34xWySj#u0cRUDVKUzZ8p?AHJaT5@tSvmSzPw@Qu=OR3xS#T+gAPG zHg%oq<%7L50u`J;Pg*H)eFH4M!DpD>bTcqUZhjb|mi_>_4uY7#u0xfauJU512!EbA z#G$umdB5Z!#eRk0nq_1A32{2+-PbmR8g5B-Y9G0MPv9lE?kkAfgBQDloQk=tU*!bI zgH3Z?%_3ZvkTu?03OF*;u_y?lx05b7UsW=ySR>$;blpW&o^(?9#fb{Ln`?q6#(7~B z{?c$yk%P(D<7QBhGoHb1lo-T_4_AZP>+%B=&ZeW^y|dIhKD>@5_C7D|)~Edf@986v zv;X!jML1EiVgFm#wI;F*|A>;Jf)(=mpaT+5mB3}dkr#SX&hr`CU~pO=BD3~mLksR@ zS0G$2o-=3jgzn2l=!XX94FNtwpUCT5Jd3g>lQ-vdJ^zd$0aa|n)j)J_Fy}{LkhXp) z^3dnpo-!wjuCc*G{;{t4ll&R63XNB=a+(Euf*gb+>}dTw+_2J)a+qt9((Q*Ug?OU= zL`7k9L%O}kLUO2Pxk_f%$HNi1KT7SL>sNf%$tiQ<$Vxe)1#B~683^qkZ!s-3H6VU% zjuYuzDatar?2s^%?{1h8P0@nykC~H?J8+mur~us7v_JOmeW&NUt6;Pa()IYk_oj-J z`}^F1c_DxU{sP3Q8hCdZdTk}mZ`=!K0S9aR&bHdZPW1Y3*TVqE6M8K+d{R9M{Hd-( z(|L%8?Vt1m4!pbmT};SadhPqDck<7k%Mg64$mACyw!h@EJg*xq8v+~dF zm@;W+`^2aDQ7Fy=L~+A<#aCGxDfjtA=?<|M&!;R^0~@kMVtw$B+c^|ntY-qW0+G7S2=-fFtJ-Na&x~j`cYH&zebjQOPI6!nCpq-=alfwk1ZZaWTljO z^-WSe?7@EXZPWQa#JQWJr(bOI#w8+&LRJX~UF~Qy5HZws{-@hJn7fm4itAWsL7Piw zw)@ETpHT-mIdtF57MZPm4p(#d6VRA~`O3a@o!>SwASZM)QQ+{!xR_7Uy8I?b^3a|q z!}ja}b?c@YcA)mbC)O`IjFDuNX7_W8eRs9Z{-3Q#{$ca0E3;|xvqze6dv3;KPB(k< zJ@h?+x$xp?%UN}4*IT&L=CH$BFCI3PD4>OYiusDx?7$3tQ$b_Z0%&VlD8CZ@u49e3 zSwIk%UA?RmG5!5`;o|^N3m?x2BD9F57LE%9=Y(SvcTFKkvdw=!A3#amzJ+0=xraCw z1;$aKzTpEm$RASY$-qh29OYA2|42T}Kkp_v&<{M)jZ~~w!~ZHTo@^_(dPo?2!6<^> zU5%YISk@XjIMEWnMXY+XGVjgv)QiJ%1)co+PoT-`fD1H}6ufs0Pq5RcfceB|$4fUG z(KO8Y$EC@H9>0cg-QJ#2wgX|-6$zlmKE6rJYoqa3HfraScA{_U$SWiM}hc;0K`>4QHQKqBU@0UYbAg$Nyyu;t1?eJwPD+U%EsvV z4Fu=O4etIRR8t^ptKIE3{OXXrN26KKs-=@}wt^jSFUZ zu2d&0AP#4**MS@y=_T#!rEePNC@J!(&AJQ0%Fld_D`!T z7DlINqCoIDD;_;?79j=A{QKX3Ry9d{- zx0Rd%3V(Iuosd(ubLp48?J%1vjd;FC`XgOQKravaKr0mT#%B)FDj{V0{|OVVtgPVe zx(je=hYx&Tn{{dTe=>%=_uX~Tma9{;CkFhcW z5o1_6e}ebefI&`$COz$PXOrsbLjC`-p7cHC57JK?ld5Erq1;AloyLIif52@us-^R1 z&v`4c8zm9Z)?YSRaC_bS_3IYaBk~lm`jHCO7=5Zqwk3Ho@K%lR)3vxTKu5hU0aK}5 z?)6XD+*5?{@H`lG&+ii~#)t$#2`qB2=+)JOX|>%==s5Hl3~mH}C=IXgchrjX2nIZB2n0c!p^(3swc0Y2UyXZzPu8HGb6-$gyu6yIHN z>rkNUccdDl&EESfUxT`~bvbW{r!TuJ*YJFbz+S2(ALbT#aRZq?XeC|)h1_e$?%Ssx zu1EIz`T;4S4jN2EfbZhKe4;`~N>0AB0GS-|8YFUoz0}dH1P>5x0FDHh`VxzQ zP%8{#T{S<7;gQ{fz2GrA*1Bu{SIL!qQvllh0aO2rg$|fH!e+>-;y3;x)Nzqx+aLMS z!J~Bh_rJXe#ZYLz!Vk4juD2H|W7i@XJO$RkHxUMPPe)R1=6F>Fhqjipfeb*w#~B80 z6mjC;Lg8U1u9n3mpZ-C>!n^I-%J<&+xVV)9wkSq93cc=qj4GHLoMST`A29QI^e>dW z=UpTrvg~}cglP{qdotGcu@i`iFuogh9AT=JqXI1PR8V?Iam)SC)I(q;{w>qeR{U9sCysZ9Zb+$zdJ#4a#d{uvuk;h zZPf)BP8M54d+Hs-0{G#udIYlzBW?22+_^>BnR) zUGzXc?tJ{0y?0JoqE;iB8IO8%FhO*51mgNre-@ri)^AgCz?y+9)?se zkL{S&D!OMYt>&wIz7K!}#J9NZW%f))eH9>2c;Z=8^S~PdV{@3@_X^o5&%gp)7J&a5 zAGT}vC$N?|p5m`FCulYMm_dlv-3QH6hm&n+S?Av#1bLAR5=i6865>femUxsm-Ue9S zEkTXS@S2Jr%er6W<%;1hzMwUjVmw3L!1!{^-Q2)8X|e!;FwSoG*t8<)J#FL=N>$>U z_cPN@j1O29XG$@-0X9346GrRIy4^3VUl`?0L;Qgv*CKb+TK)6Dk8d25i6@e9TW!&c z-LH2gzhnHml0LEa_cedYZ53Lszqk*sbj!9pMZqKfAw zFnL*6-=$Ho?cqDvYfWMe7f)OS{d>Bg^?Q_?C2;I@MgI_jAKmNf{CpLAhffjr|HTUPJZep9tzeL_Zl|o4x{TgBC?c%~J{>yDe*tXy2RqH|gRl1~4)5i!eFF zqJ{J4ySYC3s^8dUQ!qH418i|a6nQ_F3l>AQrD2h48Q($C0JdKJMi+;rKaauCLQ6{v zZmMR3o*D=syLNTKqNBzHk{EzvIkH)x#suI+=Ylg;|niAg<|0+?0FaMLdA5mq;!9m-ku0)v|JRgZhpzu)lYcvS^by8{}#mWN91Zmh;O% ze8Q*tIpg;hQn!ML+dk0UJuY*lxF8lg7Pmd{P9P=u#orQ9=x*u$e_8W5AQ3_b0wm)gWNa#$=of>re^fLl}8j@M^4B^ zL{-)JEu#rFHTwQ8^WmQ|n2Bc5wvm^x8H&sI zXP{T5?4O9_`kA!he176Rl?2^LeT4t#PMiiK;H|ltx+YW|x*9BQN{`3P1O|`Fe5-Hke#OI4{qV*eURzrWk3G&fUTyfc-qmMA0pQ>t@UB)r#m7Hv>JGYq>| zKUz!nO@GWP*X=adko}Ix_eR+~*I@`T@N+3W`quT28mQ9m?}eMv?PpMkCQt>^4Cb&# zuCp7tSa`zzpxXHUF6x24&{ PfzjAfIiFmLLGA9ACGc4M+PEl8PUNO3kGkBSSWzB zfnNf%V>+@L2woeJGR(C9OMCd_=ok(57E|qorKyGfQ{qaYizmMT*M%R998ITEtnn9` zDxbg#?Sc=xpDD*9k++XO(mddFhAfGG=q6)_?6aLEzQGf6HZgvyck?gZ`&nHXZ2fz1 zaPSOfPmPs&znXj{3%sFiK2BcP?fOmbqHoY;5mlMvJ#Y1;fQ}iPY9@qal(eZJ{g`)) z8|xj*2|l|~vC~qhmJe^f@@Q8bYl8%Cb4v`uc&ZQ#t_4FQpVXMAf)l&CoC6#PY zzopaP?p8B*;g**xp{1kW-;-N2!HTRH3(1zBZ>H4>Z+IXqL>oTwcWSm?F=F@43=_uN(6z+l1o5?E4mRA-z8 zI@s%gctq@wKr)M#=Ly6EUM7W7mGF%Zg24;*?xTo%53xhG zCIzv~Qkdev($#GRG&_E``hKW?ius!NrX`_>r%9ppbzST3ZvxTqgO38YDDrcksZ{26 zYke-}Pa9eH;t)4IWamQr{-pIUmp#%gHcL971%pE$l9IAos>GelZtvB^K0?9905BC` z-vo=6to3o~dpZ&-s{OQVXiu~Bp@_LFT8%8|OC%s5 z$S>?aI^rBMj{(TV>AmtF0+&$n7g}9T|E3OBh>a!Azu;jsaB#ddxb7R-K>pfV^S^s8 zxRW>p^9cxP5ESY-YMvYPc1uc<2LV#4wT$|WgWLX|6LJPhkj9xmSggmY^Ej* zgASu(4V%j7X2-pPAgEUTtS6XlXT^_Ewys3p#OzsZL_S9I)4PleQZGGM|53J(r8@rj zVC^>_)6;Xj_OU0EUcU%E=8h-kU?TdhLsT@`S;Mk_wN*C(8UF>hHsT>$Sn{oAs?K?8 zUCH%(zO|!$2q&r0EBN2}qWQMaqVd(35R2Y@WE`q%0b4vfg6Aj5x2VVIW|nK@jZW2ClPkcDJzx>9EHK4Fg%Tc)^`9-p0_|AhTF zH#Zy1n7uZASA1^xZEUOzr>ZWH2K3bDFs*fd?1bru?NB*|v& z8Y`WduUJh~w4L9^Bj`T_N-yR^0xB)C@AlO1c9l{fBW#-X23ntYHC@vEH%Wh9xyL9OAlESJa_UGa)OECgw{9ztZz5z9oC=A2t^1^5EEOnu&L@Ysu=2M z8Kx=S5~Du_f__=1_1k+5^*G=ezYQZo&b;;{q!b>gfq;7p(0gDU&9wsVe&867dVj)_ z=G$y{<{dIaapSb#V+#Th8AGOPhWh*EVD7tY3rSMc&n#2VSwD0+ZCzpXwC_EB8Lsy| z_}RGhe8|UPv_fZirwGIkL05_nXAA zoqwrOmf-Ie48Eq4MWZs7q7>R9ga@oEQGub+-_$Dk9YARQeg^(J^F~D*7xc=e{{GXV z-aa}$v^7dS5n&VB4R+P=1d436{>TC}&CYlg)7ABtX1Ah;iV)fiy5ovisA+F{v+calk?V~fU< zDxsA7LDg!)6kSCfZ)@!+nL%l;y@qAvQkQjHPd~Fo4ZIh{y{*22Y^maYCXJqIsik=g zr0=QwA3jWkHMA{;a< z+r_Z%ph1h2(`4vJG?(Zpl$UcP>1D%@NvRXRlDVh^%E%aKmMCq$yhwCs7n+J7XIHFD zDJVh+0usTg)oZh)un_*3;)h4v#t}`t*)kfEDosE#)mtj2XmV28zj&wk0W?`zG_U10 zmGm-bH>o5wozIYEdn)qZ#ODu>s5bb-<>gk&uoQe4XGZxzSmqkp}PHCtpl>$ z@q?xK3}O2}FN|9Y3%PaQV0QfB(ILqZ__0nOX^JbYry>BxY*sM1yZ9qw5Rw_cv*RehBJ+xH0Ma`c2_J`0&>iA4CK-mETCW53KWtN8I#v}5bo zB8mSTzrI5zk_WQ*9o?`|tjAw2btKIoa542n4J#Fy7U(%vS`{MhXivHq-TKV^Ic2d?pi6f=^yYM2hMzBbKP8Hc z5OV!y9Bv_{WT#cNyUvbjOWOoLurSK3NWYlh_g1UtBQUO&Y&D^jY6`TBa;=13KWn=^ zqoT(Q+Ej+=dhOo*Ovpd}K0KdhHpg5VL7m0$@mHV>tsTlW1pA(EvVsK&aePV&tu?1l z;Xi|={6O>^mT|gOa$;^@v2JZct7~$u1Mu~L{$D=K*yqAj4mEoV%c18j^5>J9hB*eM z$5Xm?M%wWf$y!3NJK3=>MoX9n#9s;1B6ZtCjqSguHe9D^jfMpWi~qSbA^z`fG(JNu zk+0_N0cUb-iN4X@711^Z{R`#+euzzKOqFJf1wSSA^wycQ-ds&%YDq>J8NJ*k@;Sx& zhm(LIjUwsF89LyMkk$vdqpiM}vO4T^kD6l0e4MN^8{S_Qw4DwRw>;Lzn9qo zce(iQB)|uR)?)g5i7EsC257`&l!HAZB)le)&U`%pHp?F#(9}81YVeBC^gY$Aw_ip|zrWdR6bO%KXS-WrJ30mle`}8QG7D1@S)UV|_*&gr z4{a+Ju1SV8zQI+qyILEZV_NOqzO{N>p%oJD-t5qi+HRoitT%1PI z;1j*wh1B@OVmRh)t;dGpN1?j^YDvd!q;R!wT@BN@!?6|VeD=M5p|H72@BWyP!&S&X zV>f=Ap85-#wct3OGv6KC8KMww3+MwNS7i*T*qe=`3kC{*$9nQ$DI|SZz2iFikU5uQ zD-M;YsjV%xy1J~3t+)jzshYa9O6;DCzuEN8#{0oN8gSw?`5tx=3wT|yN7Hfe@N^9h zDzN31Ad&YFxDfmiPWuQOnb=J)C92%)Bn6`&Uenn}Uzw-Nc6(3(V`Jkq13lP)8zgRk z;#EPyrGV>cV{D0GSH7D4>~rTABNC7Kw%o9kB#dChjIgs>2i&4E@hO`S9flnpOd*Y1 zNJsbM@%HstDZDnQ!`yS1qToqV;bNf5ZRQTr*3PMKkZb0aDdv`e+9m@AVshr+o*Ec^ zIk~#}{TqMJH!7OBB+s@BzbkHtXPY;%uggyiIIvu7TMh45Qg^2C&i}JkRLTV|Gials z6T4da7(phh^4H0od|-QHF!^*=91%z{-{K^c$g=}W@Kr>$d;g6q(GyFF_|$dc`rwOs z+y0Mx*VZ5NpDsI$_fU`@;t|#y$$c(qdJKI151lsqDAJ@9f1T|vxrNmX)tV=eDASWD zi+CvX0+IQD@v0!dr?0)eeS`S~ROUTcFNV{+8$h$q;jOmqZ?*FVl0VsIG1B!ERBB{; zOmCc+(q9%qZtka{PCIH8=g^9V(A8J~bW)@lk$iMA-41;5*flRhGTN)^D3DGMQUyV41&&T=#Ts z8hOh{0WcB3Kt7~GjI-WtN?26grw}*&ebJP;U%GjpHfdd5QpP;MSy*Vx-$ND(zyH~_ zgWa}Y4RIe<1-zg4cE0BCG=AMD zT?pY55LC+WLog~;ES5KT_HJg5>QZv zM!L?6sg&}pad|!KXT#m9*Bv3D=U1vq}R(xrkQ=GO9yhr0}6b0n%`2$p&`w&&_36*(h0)fnOHHEd)Q* zf2G;*>;Nl-(bYaSk-49-+A3Rmmbv|)ZNu5=^Kp$ z&H0wn3J9F=*|6{ll*?%s0wosjOFG_W{xQ58@V$&0aQ*-W_g0@v?7(K<6)e7Mwkf+u z1^JiIfsNv%r(=bKe?Olrd8tI9_}5AJw_DmLNzCUh7bKXt;yMVpaq-C2VYQwyeI#r? zo0AvEF6H}94VSN?kopP#{o@wwnhSina(dbM+W!3_dDay|J6sQtP+I>y%4=pf$wF24TKOmFeP3y#@*N3=A8uvk8btwG2#`yLrr8t|_?| zy%WHoJdyAmIBD(i0;(UgwPQ=(+Zo=V^OkiO>$stZM*E}H8ztDfeaX+iz4R-&cReV- z$#CM6`>o3-i;u+WXW|bJbRpZ}ExDgfDudX6Murs$$%Z^f%g)V+vD)RXC)*xR_dBIQ zqd{Xo+BtrBx@kv*<*nUL{<8M}Ubr`@@S)%A%O42K)Cc>oqx*EKWJ@cTZo_pNFBy^iPI5_Ce0WsBs1m1J) zh@5aCO?PFkQr=Vl2Xv=Op15hLn;D~sq-MY=KtcKIqX<#VIMy7Y@V`H9_EJEtiyn`VQ#klA6mfwe`07XRIUDTsKH z(cyW}3$rv0d2Xw3ak}h1UlV3h+8Ug!l=tA0Nf}aQB;;L#2X^VVQmijVa%0jueh?JH zXazE7D;++{z6j_REbZU9NZ5>s-y+_mdafl{yq&;J=75Gc{_u`ow=-+6 zg>D!OFaN$WH~9K7dpVa5;1LiUJ1_HNL&iUWzuETopQcumxBt}&5@dXfb(L?dode^} z2D~Xk!c`p5Zc!Y!<3wiJN3|tg9u0W9kMEC6rQ+t zYaXBulZL6_KeG;{|6%fj>=DGz@wKNL;Ul%i_K!vwcemGZ=C=oyN?B}%!WG+ohTqn$XTY};lst1C^;r1QdocgIE+SDEp2ZW z9SMxY176L2BTa7T`tiKC>2Rk-kkvx4(t&y@nuR~m8DJFI+c&9$uQsq&uyAp5jzJRYOXNX9f0GwDJ5QFX)9-{zz8ut^H;{uGab=tm#HZK+mieacLDxmIvm<)D zr2-8M*x~GlHlaP0y~&J7vUTd+&3?GT1jP=?lqD5HwfX~xItbiZr# zMUt%m#^CQ2gQMj!cr%{^ zRNu%EuMI9?w}USTSSe1^UY^*kmCu@tkEu+5`C@&w>iU4I#aRQ1$P88+KYkwS0!Ga*SZq{2yY!5<8!WrE`x5i{%{8^^9`!~Y$Nu+x*A(&-HK+x( zL))g6ryT=VUZ;C3i$AsX2(Ua~py8Bo)ylt`vINgw;c=x_*b5CyaW2D86fa(YF%L=m ztjTjZWxCBJj4^}`AE4OX+=}EqZS2BNBrd#WY7`$p6w64t9FVQC)zHE^Tts~P?K%O(2`bU|Z;8>a^$2S?+d;MOA?^XP_4 zoJY{o0Wdin6D~E>)jSM&b9Q$e@{IaeK4;`#%M!^kghz(MM5hlbCO9J?kE6>FvZ|fir%9XMUf)D_x)1& zZP3}QYLf9=6V6J9&eL60kU9$NDjnxO`{$1T#^^UTHm+Fj0qk(Z+4*whBb9)~|av^KgRl)B715kSrdM_aht41AruP6=l^F1UE*>HHY}SO!!3-mMUs zxT3`go6Dha2p1kdlMocwsL{~fW496}`e-3pek3Y-M*GDK%iv@@}fdMi~`Nbug-}$eE^gIMk;-n=vZ(aZG zh=ztngP$$Pev9eLu+kYJTfMu^XADa0@%K%G>c0ZX)vY*l^2On43brz1lGU z>X3o-d!^nvr8BAFI^yfp!cFn!d3Sgwvw6Pn+btXHE>?iD5kbV2A<{bo9ooHbT% z*-kj`V@+Vh24rE~4Fv|JuJE_b42#QTF1J^2?WcpU8Tt6}FJGd|D6?N~BZRM?h_zo} zu&D_9po^qP#^Tg4^MwqA7X75`S5>eSYJdZd_n=bjx>66k^sKA=S zv^Z|K*y|I+$_vPmxkh4V-?hYqlFbJ$AN}n=FxOchbX9==U&EeN z-Xof{@;A@czH+90tPM*jA`5M}{_<*o0iU3<1I_Qcr-b?Dz#xGZjCs#`pd1Jub1}Dc z)cvNeqgx>|ltlCflXli|dy{6(=lNp$4xx1_$OGs$e$_@K-?OHnlUM$l0jL#66nzpw z#jSAr!Hx`LTdkdNeA^Bh!%~k}H6oD&i>)mO>{MSOZL!3p0)LR(4d(M+Vn%YYu0uYB zvFvP?g%(-xGPxQ<3ZFa^TzDera;vmC`^f2U6uJtUEIx68>V=-X>dWCq4UsEm4QbJ>SQ-X z=XM8TEmtfaz20@1y1xL>tDw0$ z^t8t(?$lpjZSa02`-8L~ZgndY5H%7rf zC;C~le){cclhWDq?QBgtNijaxi-s*C4$jf@Ha0s8d}QT6O2jfGqPOI)7B2W@*nDC; zHVx^89O}qQ4}O_UW7ldFd5vV^b?P^?fb3AJ%U+p_zf`v>J{Lj0iIo;3(eLS8%nYxi z3at)PH1}3^R`2Ijb~-0<>C578GR&onh^jhEs7v;e>g4nimk3!@c0%K4jZ^{#xc`Cw++4Cy04m|9l}tO?RVGxpj&A8}PR zz)*t)zT=g$)7H%Zx%(-tLd(&M)lCCqaIQxK-yhAPbE=K-*W%rVpRYI08W@%744e6S zPS^Vlh)w1&k08@5mE1QoZ^u6sSlRo~MNCVYehVA^<1-*7fO;*>@C_E>SdU`Jr<<3s zMOwYP#Ch8}m%pBMR-P33LO5Jv+l1?7)1r&#E|tU*U&(ytgr&5e+Jap;qCwYj&BF#g z#lY8QZrT&1VU)APQ_W{;B)`&PYAuQGqiZOMQDEp>chp}NmYcxB`M!=5y&*;fE^MID z=L?^Uq=rdrBH%gQJl0PrSro-$-M^=>__rr=_s9y|5Pbl&j{<>?BI%hnZ$G{H$QK5* zC68Z-Q?Soa8HVM>^E{L;IROhcE_*v#|Sgu56L2(Z4+iVBJQUN^P|mNSJYn zI3AHnj~eWa8K9vpWUmI$c<=_r4`jW>7KQVHM|5id<3gcC6?fqX11T}%3prd+}4hNqPX;8RMko~z$p5XMu)*) zrPvq%-8IVpCE^8wTt;nglgp*jRrH80b>V;C>vM_(30De z2LYilSW{r9(8cWhY1I2fV@k0Wdoe-5etEX$Z&{3{mD4|^g)5K;- zsyq>P?0g>iFni5lMv46idkP2nd#OG7>LByA{OW*`8E4NGRs8snY_qLxwB26`xvSs6 z0R!=3?2gyWeaO2A0W4${1Tlc=c#lo=w^F-G;rW{wN%=f5Y)M4h&qC}f=J?|S;I<}H zHh`Kk)) zqbHQmza-XPV=ul_ua%OXR90OU+kK{-fUT)LDwK*|L^y=8XNcvI>|urZ@qgSoX1YiG ztj%$39%Y%}ZRF93q2~@ zoXW+YsJfxcu+sTuDxVRIU$GYri?3VmK7}VwE+CAB@%_!WJqDbmCL?*5T5%c~?+=E# zWw>OAu{?3c0`%)r;E|#D$?dHaDeDs`6hXI+o*i?~EQZgRlqW<{U&G7?zD2zJsXwRe z7A}};&@-?6Yfm$cIvjBnrf!*JtQV781_z%&tsvWeZ-3(1GiS-6v zHoPgo`vNwm|L}eMBt>!;1jA8fir^)ThGt~>Y0!4o z@(!v&B=R+l%6O}n<0vR1T7+A+kpD*-*;`q*D z#ZZ!Fe@d#t^6%1xX*WSB-lQ7wIN(&ORc(hD8}Av=rXi={bLZj-#+d&){}{ltArd+ zUONF?j>1H!eQ&mb3{{Z;w~6do!u~;PlTZBLU!rA+jTCK_FkTM`^F?E2k|p`NAAGQl z|2sQxK0z%EYqWT9f88=1--VCa^WwO6GrlSRsULJ)$l!4r`%9S2Bb6iDZj0{jK4r@6 z@+PSwRfEk@9>tirxCe1~V~LKheO3N+z*5-WCwOR9FOdHj z@f;}2yL*}!WySnJwL+T1tGgDHC|5gN;O~fT@So9da*O)RJCM+FLca%Zlqs4-M{f`n zv?pZOA|rw199x&;wDKwomS>O=R6c7x=_VT*@m|;U-ENQAgK9sJK$u>5Rl;1-|7Oiz z41}hMzo3@u#lkTdgB$!wof|ir#dEAyOP<&wsh5nwOcx#kUsNCsqm824Hf`SfiTkhW z&2RIV{u`Fb8B&crst0wGpqPA-YPU6SnGX1+Y{UY*YVU0XCWzdplZ9)_Mo)F|ARl97 z3+AXG{RtfQv>??!m9nLel9FYRH9ZC|CNT3$AFf%wQxcOg&M(V`UeM9>bB0iV;CG2$ z`w$g1ZejVGRmG6;ua+Sg5?c-}g6GX=Mz|_ZmImyt^4fUSLeHjWpPswAap-Dk=VM=r26B zFaVt^B3C&b9SJ5obyXwf6)GuROy4XB)|^HL@!TrCKf+_g9Dn3A)`GO>(jp46tir#R zWp#Da6x2iagT7cwckXCH!#s+#F?|n#kqYCcz;+430pWp*3*3q^K$?5Fkzz+Pz}aOS z^)^$Sbp{#fuGWc3SQTU~(9p5FIxU9?80 zrxMg6g6|G5xD;sjNE8)d0yDSXt13u7dhCx(-8V+E5fZQ)Dmk`?a7ZtNiygDUu`W z&HIv_pWbn#H~}@@{pDuDWzh)ba&`I2cwwV3e$Km4v3jvaFf|bQiQG!Ch2=8_E-i9Z zqZl?FMpAj+O<$ezy3e;JJgK%2KpHqF_+DGtTHK(4`o>1Ay=3;_5VC>2U=5P1e*00| zJJq*47cY-!-M`3M{3wPxn?xr5u*$sTazQInu@D4xil%H8%+!hKe&UrgztosA5rUvi zz*Fh=jOO>q2$l@n#cqKVO&iFD18G+8vL&i@c17ulnox3ca}(3k0mAbT=S2;+el=@< zdA{dP=fuD^IKT<=1=X0OL5xkp0KntH^0&i-E%R7;l;@yx9;GaVxUuYfMq3&0;eEjM z2%>W1-B*2I+RQ2g6j?D6PSCiclPCRLA1PdI_rs0ETy3Wd8YFsmSrW*ZqA5wu)=rLp z{PaotyEz;s=2*owIHb!e= z+ViSck&@o^g7M$7%84H9a|bHCa@reC9KRiq`~ol(8BG@^R#Q z&*jh~za@RwmD$CI5ZM>O;TW3WEaQQP5~>ga=|i+gx#mt&cj}Og$t3$_E!F%6KxHrN z7-Z`C4SrOD>Kr>?w+NSr#ehW177q25dHa%-JTe9rQS29eWl6NIk?S5^c$hTkL0vV) zH+C;fuiMU5dN}gy$mTcA{Z6U<((W%|RPi^Y-U+^ixKd!Hl{IVPz&VnvDl%hnDjotR z@?s6pVrT~PW4@f?eZ2EbKgd2^wt1DL0LU5OBkFV@2d8|a19sbPQf}X55%{;`do7-O zQvnUS8dE?C0+E(@G(b}6doVW)r2PN6T+U`~K+c8Z^%*2LuY+_7%}r-TWr=MWE4c=V zS5T;bcu zOB}XJ`{Ngmh5<>DgARNP>6eQ^qD|5R?1n=dyd_*Hkst~#k=Yitlt)M)K`no9xIO! zH6sj8HZPHy{gRK234bXuI1lb|>Dn9x*qmRcB5?TQ6&+mod+LqDvu6m6=aVAVMl7D! z)ifOzguRL?UIP>1Q>nJdh_SYHzS8-1-|H<5)5$gz=ABoCSLx?Eub2vra1U!?Hxga2 z;!(R+|1~6>id2d7`pMn;k^$9$wWF2o5+TQC2nDWStK9VBjeKoRI91!H((y2dB{3H zYig-+s-!XB1Zrwv*ic~T02NLk9~8)qfPPfaf^VS}@;DJW@IY!F=a7b2F#bww!kfI) z&sJgZOWgtL+yCC>!sw|ecHZTkU{?ncSXxx~Z2-KQr?{s$dv0tn1fl4}@)K@mw z_*0YFj3K=h^H69=^tYWlOIj1lE*1PPyed6Pp18M)?!zlmy!&RDh-apXb6v^7{{ntn z^(F_Vg}N+u?bwmS)@|#%;f`Tqbs}LjAqu|;$ouF7e#$yBrhekjjDf}G>1=sx6&%k| zEi598$+ZgOyNFBRoBL_L=Hq6yE7PY5b8@T@G2(3vsYSSPQ9B|dqR-AEHU9|B?+;(@ zh6Aqvn=&mDg^H%S>_#ZKC^`ceqxqic7&iXdmrt?-0_Muf5cj)=n<}sdYBWOh09(=0 zRems3vw*gewofD|%*@P9*L#hY$=#p>nPd2;fPV?1w}KpO+fH8N9epvc9LR%ma_9ka zo|ux74KhWD6An?r#h!TKU%W_@hfz_#xkK9L{O_$w9nF06mA0<+e;R**y1J6kaodl& zdY=xbptHGuoo2u=ygr77^X>U_DA#Hb|JAHalG~wK$g6aT*t7kSmb9VFTvY&HI$f+| zfXQ9E!80Xj@$$KRt=*_rIV!$0OdwXfNT&7cHU?<4dfCSr&A431)U`PhCFC8rv!-$~ zAGx`-BV55I2in8BQo|DyDcT*$Db==x^Cw_K3CLex>gObml8mWy7QR(de_w>It@tv# ze=Az*ZTx%2qvs-S*D1*}8wqUi_7FE~6XwLz7eHNB$loMMKj+;pawjotqgKND$1}%l zfvp(u8KXSb|e*Ihh2-2R_kxf1rMd)O_1BYh_HrGTyP&a6WR z&YjlUr}XO=cyXxxzEI1(50R_TqEjc&bu@&RC0Zo|l{X+H;kKnVV(*?csVECvreE)l zf^Kz0!-O>t2)kqdu}7eKclKtWy#`XER}TziK;H_mDhZG!3KS1>Cgq8ZVu#mcF)=Zq zi=9%`>wSS5`163)szXV?fGZW*x#{uP0xHv&`zOBCt>&l!w{w-D!7~;=@=xuCb^GWu z>R@KTm?4k|#tk582T0>@b6QRzz8%J0p34=8*5K38G1BNRqj%{d1Ar`wO5xwBH#+A4 z@5JCV8_g+aWC^LMrk&ZFWm=ZSR!Mh{klFT|WZZ>p$!%9TP?R*4m(GTnb}g>1uBLd5 zg21K!d4%3Q&#fWopZq@a*Z6hIFqp`>Kf}z*t;(i%yepZ%GstdLNWFdj7wK*3LQ?5> zq-QgYq%pDdK$xFEPbVRc@GALEQ%FY>O4C615f z;>i5&nSm~zdo6xKnL0|CIf?1wvO6F+)DƝbs@kO>uOd4%Q6O@BrgJ{8sRjQ*ci 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 z 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∈BVH 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ǴFMbw@!e#cqosvKFD}xQ^mMxsj^6L8_9Fs} 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 +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.github/workflows/ci-pylint.yml b/.github/workflows/ci-pylint.yml new file mode 100644 index 0000000..0712202 --- /dev/null +++ b/.github/workflows/ci-pylint.yml @@ -0,0 +1,25 @@ +name: Pylint + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.8 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install pylint + - name: Run pylint + run: | + pylint --rcfile=.pylintrc lauscher test/*.py diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml new file mode 100644 index 0000000..b64f307 --- /dev/null +++ b/.github/workflows/ci-tests.yml @@ -0,0 +1,31 @@ +name: Tests + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + python-version: [3.7, 3.8] + steps: + - uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Install system dependencies + if: matrix.os == 'ubuntu-latest' + run: sudo apt-get install -y libsndfile1 + - name: Install python dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install pytest + - name: Run tests + run: python -m pytest diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d1dcc12 --- /dev/null +++ b/.gitignore @@ -0,0 +1,277 @@ +# Created by https://www.gitignore.io/api/linux,macos,python,windows,virtualenv,intellij+all +# Edit at https://www.gitignore.io/?templates=linux,macos,python,windows,virtualenv,intellij+all + +### Intellij+all ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### Intellij+all Patch ### +# Ignores the whole .idea folder and all .iml files +# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360 + +.idea/ + +# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023 + +*.iml +modules.xml +.idea/misc.xml +*.ipr + +# Sonarlint plugin +.idea/sonarlint + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### Python ### +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# Mr Developer +.mr.developer.cfg +.project +.pydevproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +### VirtualEnv ### +# Virtualenv +# http://iamzed.com/2009/05/07/a-primer-on-virtualenv/ +pyvenv.cfg +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ +pip-selfcheck.json + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# End of https://www.gitignore.io/api/linux,macos,python,windows,virtualenv,intellij+all diff --git a/.pylintrc b/.pylintrc new file mode 100644 index 0000000..a03b7fa --- /dev/null +++ b/.pylintrc @@ -0,0 +1,522 @@ +[MASTER] + +# A comma-separated list of package or module names from where C extensions may +# be loaded. Extensions are loading into the active Python interpreter and may +# run arbitrary code. +extension-pkg-whitelist= + +# Specify a score threshold to be exceeded before program exits with error. +fail-under=10 + +# Add files or directories to the blacklist. They should be base names, not +# paths. +ignore=.git + +# Add files or directories matching the regex patterns to the blacklist. The +# regex matches against base names, not paths. +ignore-patterns= + +# Python code to execute, usually for sys.path manipulation such as +# pygtk.require(). +#init-hook= + +# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the +# number of processors available to use. +jobs=0 + +# Control the amount of potential inferred values when inferring a single +# object. This can help the performance when dealing with large functions or +# complex, nested conditions. +limit-inference-results=100 + +# List of plugins (as comma separated values of python module names) to load, +# usually to register additional checkers. +load-plugins= + +# Pickle collected data for later comparisons. +persistent=no + +# When enabled, pylint would attempt to guess common misconfiguration and emit +# user-friendly hints instead of false-positive error messages. +suggestion-mode=yes + +# Allow loading of arbitrary C extensions. Extensions are imported into the +# active Python interpreter and may run arbitrary code. +unsafe-load-any-extension=yes + + +[MESSAGES CONTROL] + +# Only show warnings with the listed confidence levels. Leave empty to show +# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED. +confidence= + +# Disable the message, report, category or checker with the given id(s). You +# can either give multiple identifiers separated by comma (,) or put this +# option multiple times (only on the command line, not in the configuration +# file where it should appear only once). You can also use "--disable=all" to +# disable everything first and then reenable specific checks. For example, if +# you want to run only the similarities checker, you can use "--disable=all +# --enable=similarities". If you want to run only the classes checker, but have +# no Warning level messages displayed, use "--disable=all --enable=classes +# --disable=W". +disable= + missing-docstring, + too-few-public-methods, + too-many-instance-attributes, + too-many-ancestors, + no-init, + locally-disabled, + fixme + +# Enable the message, report, category or checker with the given id(s). You can +# either give multiple identifier separated by comma (,) or put this option +# multiple time (only on the command line, not in the configuration file where +# it should appear only once). See also the "--disable" option for examples. +enable=c-extension-no-member + + +[REPORTS] + +# Python expression which should return a score less than or equal to 10. You +# have access to the variables 'error', 'warning', 'refactor', and 'convention' +# which contain the number of messages in each category, as well as 'statement' +# which is the total number of statements analyzed. This score is used by the +# global evaluation report (RP0004). +evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) + +# Template used to display messages. This is a python new-style format string +# used to format the message information. See doc for all details. +#msg-template= + +# Set the output format. Available formats are text, parseable, colorized, json +# and msvs (visual studio). You can also give a reporter class, e.g. +# mypackage.mymodule.MyReporterClass. +output-format=text + +# Tells whether to display a full report or only the messages. +reports=no + +# Activate the evaluation score. +score=no + + +[REFACTORING] + +# Maximum number of nested blocks for function / method body +max-nested-blocks=5 + +# Complete name of functions that never returns. When checking for +# inconsistent-return-statements if a never returning function is called then +# it will be considered as an explicit return statement and no message will be +# printed. +never-returning-functions=sys.exit + + +[BASIC] + +# Naming style matching correct argument names. +argument-naming-style=snake_case + +# Regular expression matching correct argument names. Overrides argument- +# naming-style. +#argument-rgx= + +# Naming style matching correct attribute names. +attr-naming-style=snake_case + +# Regular expression matching correct attribute names. Overrides attr-naming- +# style. +#attr-rgx= + +# Bad variable names which should always be refused, separated by a comma. +bad-names=foo, + bar, + baz, + toto, + tutu, + tata + +# Bad variable names regexes, separated by a comma. If names match any regex, +# they will always be refused +bad-names-rgxs= + +# Naming style matching correct class attribute names. +class-attribute-naming-style=UPPER_CASE + +# Regular expression matching correct class attribute names. Overrides class- +# attribute-naming-style. +#class-attribute-rgx= + +# Naming style matching correct class names. +class-naming-style=PascalCase + +# Regular expression matching correct class names. Overrides class-naming- +# style. +#class-rgx= + +# Naming style matching correct constant names. +const-naming-style=any + +# Regular expression matching correct constant names. Overrides const-naming- +# style. +#const-rgx= + +# Minimum line length for functions/classes that require docstrings, shorter +# ones are exempt. +docstring-min-length=-1 + +# Naming style matching correct function names. +function-naming-style=snake_case + +# Regular expression matching correct function names. Overrides function- +# naming-style. +#function-rgx= + +# Good variable names which should always be accepted, separated by a comma. +good-names=i, + j, + k, + _ + +# Good variable names regexes, separated by a comma. If names match any regex, +# they will always be accepted +good-names-rgxs= + +# Include a hint for the correct naming format with invalid-name. +include-naming-hint=no + +# Naming style matching correct inline iteration names. +inlinevar-naming-style=any + +# Regular expression matching correct inline iteration names. Overrides +# inlinevar-naming-style. +#inlinevar-rgx= + +# Naming style matching correct method names. +method-naming-style=snake_case + +# Regular expression matching correct method names. Overrides method-naming- +# style. +#method-rgx= + +# Naming style matching correct module names. +module-naming-style=snake_case + +# Regular expression matching correct module names. Overrides module-naming- +# style. +#module-rgx= + +# Colon-delimited sets of names that determine each other's naming style when +# the name regexes allow several styles. +name-group= + +# Regular expression which should only match function or class names that do +# not require a docstring. +no-docstring-rgx=^_ + +# List of decorators that produce properties, such as abc.abstractproperty. Add +# to this list to register other decorators that produce valid properties. +# These decorators are taken in consideration only for invalid-name. +property-classes=abc.abstractproperty + +# Naming style matching correct variable names. +variable-naming-style=snake_case + +# Regular expression matching correct variable names. Overrides variable- +# naming-style. +#variable-rgx= + + +[FORMAT] + +# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. +expected-line-ending-format= + +# Regexp for a line that is allowed to be longer than the limit. +ignore-long-lines=^\s*(# )??$ + +# Number of spaces of indent required inside a hanging or continued line. +indent-after-paren=4 + +# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 +# tab). +indent-string=' ' + +# Maximum number of characters on a single line. +max-line-length=79 + +# Maximum number of lines in a module. +max-module-lines=1000 + +# List of optional constructs for which whitespace checking is disabled. `dict- +# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}. +# `trailing-comma` allows a space between comma and closing bracket: (a, ). +# `empty-line` allows space-only lines. +no-space-check=trailing-comma, + dict-separator + +# Allow the body of a class to be on the same line as the declaration if body +# contains single statement. +single-line-class-stmt=no + +# Allow the body of an if to be on the same line as the test if there is no +# else. +single-line-if-stmt=no + + +[LOGGING] + +# The type of string formatting that logging methods do. `old` means using % +# formatting, `new` is for `{}` formatting. +logging-format-style=old + +# Logging modules to check that the string format arguments are in logging +# function parameter format. +logging-modules=logging + + +[MISCELLANEOUS] + +# List of note tags to take in consideration, separated by a comma. +notes=FIXME, + XXX, + TODO + +# Regular expression of note tags to take in consideration. +#notes-rgx= + + +[SIMILARITIES] + +# Ignore comments when computing similarities. +ignore-comments=yes + +# Ignore docstrings when computing similarities. +ignore-docstrings=yes + +# Ignore imports when computing similarities. +ignore-imports=no + +# Minimum lines number of a similarity. +min-similarity-lines=10 + + +[SPELLING] + +# Limits count of emitted suggestions for spelling mistakes. +max-spelling-suggestions=4 + +# Spelling dictionary name. Available dictionaries: none. To make it work, +# install the python-enchant package. +spelling-dict= + +# List of comma separated words that should not be checked. +spelling-ignore-words= + +# A path to a file that contains the private dictionary; one word per line. +spelling-private-dict-file= + +# Tells whether to store unknown words to the private dictionary (see the +# --spelling-private-dict-file option) instead of raising a message. +spelling-store-unknown-words=no + + +[STRING] + +# This flag controls whether inconsistent-quotes generates a warning when the +# character used as a quote delimiter is used inconsistently within a module. +check-quote-consistency=yes + +# This flag controls whether the implicit-str-concat should generate a warning +# on implicit string concatenation in sequences defined over several lines. +check-str-concat-over-line-jumps=no + + +[TYPECHECK] + +# List of decorators that produce context managers, such as +# contextlib.contextmanager. Add to this list to register other decorators that +# produce valid context managers. +contextmanager-decorators=contextlib.contextmanager + +# List of members which are set dynamically and missed by pylint inference +# system, and so shouldn't trigger E1101 when accessed. Python regular +# expressions are accepted. +generated-members= + +# Tells whether missing members accessed in mixin class should be ignored. A +# mixin class is detected if its name ends with "mixin" (case insensitive). +ignore-mixin-members=yes + +# Tells whether to warn about missing members when the owner of the attribute +# is inferred to be None. +ignore-none=yes + +# This flag controls whether pylint should warn about no-member and similar +# checks whenever an opaque object is returned when inferring. The inference +# can return multiple potential results while evaluating a Python object, but +# some branches might not be evaluated, which results in partial inference. In +# that case, it might be useful to still emit no-member and other checks for +# the rest of the inferred objects. +ignore-on-opaque-inference=yes + +# List of class names for which member attributes should not be checked (useful +# for classes with dynamically set attributes). This supports the use of +# qualified names. +ignored-classes=optparse.Values,thread._local,_thread._local + +# List of module names for which member attributes should not be checked +# (useful for modules/projects where namespaces are manipulated during runtime +# and thus existing member attributes cannot be deduced by static analysis). It +# supports qualified module names, as well as Unix pattern matching. +ignored-modules= + +# Show a hint with possible names when a member name was not found. The aspect +# of finding the hint is based on edit distance. +missing-member-hint=yes + +# The minimum edit distance a name should have in order to be considered a +# similar match for a missing member name. +missing-member-hint-distance=1 + +# The total number of similar names that should be taken in consideration when +# showing a hint for a missing member. +missing-member-max-choices=1 + +# List of decorators that change the signature of a decorated function. +signature-mutators= + + +[VARIABLES] + +# List of additional names supposed to be defined in builtins. Remember that +# you should avoid defining new builtins when possible. +additional-builtins= + +# Tells whether unused global variables should be treated as a violation. +allow-global-unused-variables=yes + +# List of strings which can identify a callback function by name. A callback +# name must start or end with one of those strings. +callbacks=cb_, + _cb + +# A regular expression matching the name of dummy variables (i.e. expected to +# not be used). +dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ + +# Argument names that match this expression will be ignored. Default to name +# with leading underscore. +ignored-argument-names=_.*|^ignored_|^unused_ + +# Tells whether we should check for unused import in __init__ files. +init-import=no + +# List of qualified module names which can have objects that can redefine +# builtins. +redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io + + +[CLASSES] + +# List of method names used to declare (i.e. assign) instance attributes. +defining-attr-methods=__init__, + __new__, + setUp, + __post_init__ + +# List of member names, which should be excluded from the protected access +# warning. +exclude-protected=_asdict, + _fields, + _replace, + _source, + _make + +# List of valid names for the first argument in a class method. +valid-classmethod-first-arg=cls + +# List of valid names for the first argument in a metaclass class method. +valid-metaclass-classmethod-first-arg=cls + + +[DESIGN] + +# Maximum number of arguments for function / method. +max-args=5 + +# Maximum number of attributes for a class (see R0902). +max-attributes=7 + +# Maximum number of boolean expressions in an if statement (see R0916). +max-bool-expr=5 + +# Maximum number of branch for function / method body. +max-branches=12 + +# Maximum number of locals for function / method body. +max-locals=15 + +# Maximum number of parents for a class (see R0901). +max-parents=7 + +# Maximum number of public methods for a class (see R0904). +max-public-methods=20 + +# Maximum number of return / yield for function / method body. +max-returns=6 + +# Maximum number of statements in function / method body. +max-statements=50 + +# Minimum number of public methods for a class (see R0903). +min-public-methods=2 + + +[IMPORTS] + +# List of modules that can be imported at any level, not just the top level +# one. +allow-any-import-level= + +# Allow wildcard imports from modules that define __all__. +allow-wildcard-with-all=no + +# Analyse import fallback blocks. This can be used to support both Python 2 and +# 3 compatible code, which means that the block might have code that exists +# only in one or another interpreter, leading to false positives when analysed. +analyse-fallback-blocks=no + +# Deprecated modules which should not be used, separated by a comma. +deprecated-modules=optparse,tkinter.tix + +# Create a graph of external dependencies in the given file (report RP0402 must +# not be disabled). +ext-import-graph= + +# Create a graph of every (i.e. internal and external) dependencies in the +# given file (report RP0402 must not be disabled). +import-graph= + +# Create a graph of internal dependencies in the given file (report RP0402 must +# not be disabled). +int-import-graph= + +# Force import order to recognize a module as part of the standard +# compatibility libraries. +known-standard-library= + +# Force import order to recognize a module as part of a third party library. +known-third-party=enchant + +# Couples of modules and preferred modules, separated by a comma. +preferred-modules= + + +[EXCEPTIONS] + +# Exceptions that will emit a warning when being caught. Defaults to +# "BaseException, Exception". +overgeneral-exceptions=BaseException, + Exception diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..20fb9c7 --- /dev/null +++ b/LICENSE @@ -0,0 +1,458 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..a4eada9 --- /dev/null +++ b/Readme.md @@ -0,0 +1,58 @@ +

+ LAUSCHER Logo +

+ +# LAUSCHER – Flexbile Auditory Spike Conversion Chain + +If you find this package useful for your scientific work, please consider citing +``` +@article{cramer2019heidelberg, + title={The Heidelberg spiking datasets for the systematic evaluation of spiking neural networks}, + author={Cramer, Benjamin and Stradmann, Yannik and Schemmel, Johannes and Zenke, Friedemann}, + journal={arXiv preprint arXiv:1910.07407}, + year={2019} +} +``` + +## Installation +*Lauscher* uses the [SoundFile](https://pysoundfile.readthedocs.io/en/latest/) package for parsing audio data. +On Linux, this library requires you to install `libsndfile` via your distribution's package manager, e.g. via `apt install libsndfile1`. + +We recommend setting up a [virtualenv](https://github.com/pypa/virtualenv) (you'll need `apt install python3-venv` or similar) for your *lauscher* project: +```shell +git clone https://github.com/electronicvisions/lauscher.git +cd lauscher +python3 -m venv venv +source venv/bin/activate +pip install -r requirements.txt +``` + +## Usage +Assuming you are working in a private copy of *lauscher* that has been installed as noted above, you can continue by calculating a first spiketrain from one of the included examples: +```shell +python -m lauscher test/resources/spoken_digit.flac my_first_spiketrain.npz --num_channels 70 --verbose +``` +Note that due to the complexity of the implemented model, even short audio files might take multiple minutes to convert. +Memory consumption might be huge for long audio files. + +## License +``` +LAUSCHER - Flexbile Auditory Spike Conversion Chain +Copyright (C) 2020 Benjamin Cramer + Yannik Stradmann + Koshika Yadava + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +``` diff --git a/lauscher/__init__.py b/lauscher/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lauscher/__main__.py b/lauscher/__main__.py new file mode 100644 index 0000000..57bf48f --- /dev/null +++ b/lauscher/__main__.py @@ -0,0 +1,51 @@ +""" +LAUSCHER – Flexible Auditory Spike Conversion Chain + +Reference: https://arxiv.org/abs/1910.07407 +""" + +import argparse +import logging +from os.path import isfile + +from lauscher.audiowaves import FileMonoAudioWave +from lauscher.helpers import CommandLineArguments +from lauscher.transformations.wave2spike import Wave2Spike + + +def main(input_file: str, + output_file: str, + num_channels: int): + if not isfile(input_file): + raise IOError(f"Input file '{input_file}' not found.") + + trafo = Wave2Spike(num_channels=num_channels) + spikes = FileMonoAudioWave(input_file).transform(trafo) + spikes.export(output_file) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("input_file", type=str, + help="Path to the input wave file, to be converted to" + "a spike train.") + parser.add_argument("output_file", type=str, + help="Path to the output file, spike trains will ber" + "written into it.") + parser.add_argument("--num_channels", type=int, default=700, + help="Number of frequency selective channels.") + parser.add_argument("-j", "--jobs", type=int, default=None, + help="Number of concurrent jobs used for data " + "processing.") + parser.add_argument("-v", "--verbose", help="increase output verbosity", + action="store_true") + args = parser.parse_args() + + if args.verbose: + logging.basicConfig(level=logging.INFO) + else: + logging.basicConfig(level=logging.WARNING) + + global_args = CommandLineArguments() + global_args.num_concurrent_jobs = args.jobs + main(args.input_file, args.output_file, args.num_channels) diff --git a/lauscher/abstract.py b/lauscher/abstract.py new file mode 100644 index 0000000..1b6d22f --- /dev/null +++ b/lauscher/abstract.py @@ -0,0 +1,113 @@ +from __future__ import annotations + +from abc import ABCMeta, abstractmethod +from typing import Union, List +import numpy as np +from matplotlib.axes import Axes + +from lauscher.helpers import Timer + + +class Transformable(metaclass=ABCMeta): + """ + Classes that can be transformed with a :class:`Transformation`. + """ + + def transform(self, transformation: Transformation) -> Transformable: + """ + Transform this instance by the given :class:`Transformation`. + :param transformation: Transformation to be applied + :return: Transformed instance + """ + with Timer(transformation.__class__.__name__): + return transformation(self) + + +class Transformation(metaclass=ABCMeta): + """ + Class that can perform transformations on a given :class:`Transformable`. + """ + + @abstractmethod + def __call__(self, input_data: Transformable) -> Transformable: + """ + Execute the transformation. + :param input_data: Transformable instance to be transformed + :return: Transformation result + """ + raise NotImplementedError + + +class Exportable(metaclass=ABCMeta): + """ + Classes that can be exported. + """ + + @abstractmethod + def export(self, path: str): + """ + Export the data in this instance to a given path. + :param path: Path the data exported to + """ + raise NotImplementedError + + +class Plottable(metaclass=ABCMeta): + """ + Classes that can be plotted. + """ + + @abstractmethod + def plot(self, axis: Axes): + """ + Plot the data contained in this instance. + :param axis: Axis object to be plotted in + """ + raise NotImplementedError + + +class SampledTimeSeries(Transformable, Plottable, metaclass=ABCMeta): + """ + Time series data that uses an equally spaced sample grid. + """ + + def __init__(self, samples: Union[List[List[float]], np.ndarray], + sample_rate: int): + self.channels = np.asarray(samples, dtype=np.double) + self.sample_rate = sample_rate + self.times = self.get_time(np.arange(self.num_samples)) + + def get_time(self, + sample: Union[int, np.ndarray]) -> Union[int, np.ndarray]: + """ + Calculate the time (in seconds) of a given (list of) sample point(s). + :param sample: Sample point(s) time is calculated for + :return: (List of) time values + """ + return sample / self.sample_rate + + def get_sample_id(self, time: float) -> int: + """ + Calculate the sample id of a given time (in seconds). + :param time: Time the sample point is calculated for + :return: Best-matching Sample id + """ + return int(round(time * self.sample_rate)) + + @property + def num_samples(self): + """ + :return: Number of samples in this instance. + """ + return len(self.channels[0]) + + @property + def num_channels(self): + """ + :return: Number of channels in this instance. + """ + return len(self.channels) + + def plot(self, axis: Axes): + for i in range(self.num_channels): + axis.plot(self.times, self.channels[i], alpha=0.1) diff --git a/lauscher/audiowaves.py b/lauscher/audiowaves.py new file mode 100644 index 0000000..982909e --- /dev/null +++ b/lauscher/audiowaves.py @@ -0,0 +1,48 @@ +from typing import List + +import numpy as np +from matplotlib.axes import Axes +import soundfile + +from lauscher.abstract import SampledTimeSeries, Exportable + + +class MonoAudioWave(SampledTimeSeries, Exportable): + def __init__(self, samples: List[float], sample_rate: int): + super().__init__([samples], sample_rate) + + @property + def samples(self): + return self.channels[0] + + @samples.setter + def samples(self, values: np.ndarray): + self.channels[0] = values + + def get_rms(self) -> float: + """ + Compute the RMS value of the given track relative to 0dBfs + """ + rms_float = np.sqrt(np.mean(np.square(self.samples))) + rms_db = np.log10(rms_float) * 20 + return rms_db + + def export(self, path: str): + soundfile.write(path, self.samples, self.sample_rate) + + def plot(self, axis: Axes): + axis.plot(self.times, self.samples) + + +class FileMonoAudioWave(MonoAudioWave): + def __init__(self, file_path: str): + self._soundfile: soundfile.SoundFile = soundfile.SoundFile(file_path) + if self._soundfile.channels > 1: + raise RuntimeError("Only mono audio files are supported!") + + super().__init__(self.raw_amplitudes, self._soundfile.samplerate) + + @property + def raw_amplitudes(self) -> np.array: + self._soundfile.seek(0) + return self._soundfile.read() diff --git a/lauscher/firing_probability.py b/lauscher/firing_probability.py new file mode 100644 index 0000000..6f136ce --- /dev/null +++ b/lauscher/firing_probability.py @@ -0,0 +1,5 @@ +from lauscher.abstract import SampledTimeSeries + + +class FiringProbability(SampledTimeSeries): + pass diff --git a/lauscher/helpers.py b/lauscher/helpers.py new file mode 100644 index 0000000..7d15047 --- /dev/null +++ b/lauscher/helpers.py @@ -0,0 +1,39 @@ +import logging +import time +from numbers import Integral +from typing import Optional + + +class Timer: + def __init__(self, name: str): + self.name = name + self.start = 0 + + def __enter__(self): + self.start = time.time() + return self + + def __exit__(self, *args): + interval = time.time() - self.start + logging.info("[%s] Spent time: %.4f seconds.", self.name, interval) + + +class Singleton(type): + """ + Metaclass for creating singletons. + """ + _INSTANCES = dict() + + def __call__(cls, *args, **kwargs): + if cls not in cls._INSTANCES: + cls._INSTANCES[cls] = super(Singleton, cls).__call__(*args, + **kwargs) + return cls._INSTANCES[cls] + + +class CommandLineArguments(metaclass=Singleton): + """ + Command line arguments used at different places within the project. + """ + def __init__(self): + self.num_concurrent_jobs: Optional[Integral] = None diff --git a/lauscher/membranevelocity.py b/lauscher/membranevelocity.py new file mode 100644 index 0000000..4cfd991 --- /dev/null +++ b/lauscher/membranevelocity.py @@ -0,0 +1,5 @@ +from lauscher.abstract import SampledTimeSeries + + +class MembraneVelocity(SampledTimeSeries): + pass diff --git a/lauscher/spike_train.py b/lauscher/spike_train.py new file mode 100644 index 0000000..bfd008d --- /dev/null +++ b/lauscher/spike_train.py @@ -0,0 +1,45 @@ +from __future__ import annotations + +from os import makedirs +from pathlib import Path + +import numpy as np +from matplotlib.axes import Axes + +from lauscher.abstract import Transformable, Exportable, Plottable + + +class SpikeTrain(Transformable, Exportable, Plottable): + def __init__(self): + super().__init__() + self._data = NotImplemented + + @property + def spike_labels(self): + return self._data[1] + + @property + def spike_times(self): + return self._data[0] + + def export(self, path: str): + makedirs(Path(path).parent, exist_ok=True) + np.savez(path, self._data) + + def plot(self, axis: Axes): + axis.plot(self.spike_times, self.spike_labels, + ls="none", marker=".", color="black") + + axis.set_xlabel("Time") + axis.set_ylabel("Label") + + @classmethod + def from_dense(cls, channel_time_matrix: np.ndarray, + sample_rate: int) -> SpikeTrain: + spikes = np.array(np.where(channel_time_matrix.T), dtype=np.double) + spikes[0, :] = spikes[0, :] / sample_rate + + result = cls() + result._data = spikes # pylint: disable=protected-access + + return result diff --git a/lauscher/transformations/__init__.py b/lauscher/transformations/__init__.py new file mode 100644 index 0000000..28fe813 --- /dev/null +++ b/lauscher/transformations/__init__.py @@ -0,0 +1,6 @@ +from .peak_normalizer import PeakNormalizer +from .rms_normalizer import RmsNormalizer +from .window import HanningWindow +from .basilar_membrane import BasilarMembrane +from .hair_cell import HairCell +from .bushy_cell import BushyCell diff --git a/lauscher/transformations/basilar_membrane.py b/lauscher/transformations/basilar_membrane.py new file mode 100644 index 0000000..8b6a3c7 --- /dev/null +++ b/lauscher/transformations/basilar_membrane.py @@ -0,0 +1,123 @@ +from functools import partial +from multiprocessing import Pool +import numpy as np +from scipy import special + +from lauscher.abstract import Transformation +from lauscher.audiowaves import MonoAudioWave +from lauscher.helpers import CommandLineArguments +from lauscher.membranevelocity import MembraneVelocity + + +class BasilarMembrane(Transformation): + # Model parameters have well-defined short names + # pylint: disable=invalid-name + + # The best readable equation indentation differs from PEP8 + # pylint: disable=bad-continuation + + def __init__(self, + channels: int = 700, + a: int = 3500, + alpha: float = 3.0, + rho: float = 1.0, + c: float = 3.5, + c0: float = 10e7, + de: float = 0.15, + h: float = 0.1, + m: float = 0.05): + # Signature is given by model parameters + # pylint: disable=too-many-arguments + + super().__init__() + self.channels = channels + self.ch = np.linspace(0, c, self.channels) + self.a = a + self.alpha = alpha + self.rho = rho + self.c0 = c0 + self.de = de + self.h = h + self.m = m + self.r = self.de * np.sqrt(self.c0 * self.m) + + def _s(self, c): + return self.c0 * np.exp(-self.alpha * c) - self.a + + def _r(self, c): + return self.r * np.exp(-self.alpha * c / 2.) + + def _xi(self, omega, c): + return self._s(c) - self.m * omega ** 2 - 1j * omega * self._r(c) + + def _g(self, omega, c): + return omega * np.sqrt(self.rho / (self.h * self._xi(omega, c))) + + def _p(self, omega, c): + G = 2. * self._g(omega, 0.0) / self.alpha - 1 \ + / (self.alpha * (np.sqrt(self.h * 2. + * (self.m * omega ** 2 + self.a)))) \ + * (2. * 1j * np.sqrt(2.) * omega + * (np.log((-self.alpha * np.sqrt(-self.a +self.c0 - omega + * (self.m * omega +1j * self.r)) + + 1j * self.alpha + * (2. * self.a + omega + * (2. * self.m * omega + 1j * self.r)) + / (2. * np.sqrt(self.a + self.m * omega ** 2))) + / (0.5 * self.alpha * np.exp(self.alpha * c / 2.) + * (-2. * np.sqrt(-self.a + + self.c0 * np.exp(-self.alpha * c) + - self.m * omega ** 2 + - 1j * np.exp(-self.alpha * c / 2.) + * omega * self.r) + + 1j * (2. * self.a+omega + * (2. * self.m * omega + + 1j * np.exp(-self.alpha * c / 2.) + * self.r)) + / np.sqrt(self.a + self.m * omega ** 2)))))) + return np.sqrt(G / self._g(omega, c)) * special.hankel1(0, G) + + def _v(self, omega, c): + return 2. * omega / self._xi(omega, c) * self._p(omega, c) \ + * self._z(omega) / self._p(omega, 0.0) + + def _z(self, omega): + f = omega / (2. * np.pi) + return np.sqrt(2. * self.c0 / self.h) \ + * (1j * special.j0(4. * np.pi * f / self.alpha + * np.sqrt(2. / (self.h * self.c0))) + + special.y0(4. * np.pi * f / self.alpha + * np.sqrt(2 / (self.h * self.c0)))) \ + / (special.j1(4. * np.pi * f / self.alpha + * np.sqrt(2. / (self.h * self.c0))) + - 1j * special.y1(4. * np.pi * f / self.alpha + * np.sqrt(2. / (self.h * self.c0)))) + + def process_single_channel(self, c, x, stim_fft): + return np.real(np.fft.ifft(self._v(x, c) * stim_fft)) + + def __call__(self, data: MonoAudioWave) -> MembraneVelocity: + """ + Calculate hydrodynamic shallow water basilar membrane response + + References: + Sieroka, N., Dosch, H.G., Rupp, A. (July 2006). Semirealistic models of + the chochlea. Acoustical society of America 120(1) 297 + """ + assert isinstance(data, MonoAudioWave) + + nsamples = data.num_samples // 2 + 1 + sample_rate = data.sample_rate // 2 + x = 2 * np.pi * np.linspace(1, sample_rate, nsamples) + + # calculate fft of stimulus + stim_fft = np.fft.fft(data.samples)[:nsamples] + + # apply model matrix + with Pool(CommandLineArguments().num_concurrent_jobs) as workers: + samples = workers.map(partial(self.process_single_channel, + x=x, + stim_fft=stim_fft), + self.ch) + + return MembraneVelocity(np.array(samples), sample_rate) diff --git a/lauscher/transformations/bushy_cell.py b/lauscher/transformations/bushy_cell.py new file mode 100644 index 0000000..11afe02 --- /dev/null +++ b/lauscher/transformations/bushy_cell.py @@ -0,0 +1,94 @@ +from __future__ import annotations + +from functools import partial +from multiprocessing import Pool +import numpy as np +import numba + +from lauscher.abstract import Transformation +from lauscher.firing_probability import FiringProbability +from lauscher.helpers import CommandLineArguments +from lauscher.spike_train import SpikeTrain + + +class BushyCell(Transformation): + # Model parameters have well-defined short names + # pylint: disable=invalid-name + + def __init__(self, + n_convergence: int = 40, + tau_mem: float = 1e-3, + tau_syn: float = 5e-4, + tau_refrac: float = 1e-3, + weight: float = 13e3): + # Signature is given by model parameters + # pylint: disable=too-many-arguments + + super().__init__() + self.n_convergence = n_convergence + self.tau_mem = tau_mem + self.tau_syn = tau_syn + self.tau_refrac = tau_refrac + self.weight = weight / float(self.n_convergence) + + @staticmethod + @numba.jit(nopython=True) + def _correct(spikes, refrac_samples): + for i in range(spikes.shape[1]): + last = -refrac_samples + for j in range(spikes.shape[0]): + if spikes[j, i]: + if j - last < refrac_samples: + spikes[j, i] = 0 + else: + last = j + return spikes + + def _sample(self, stimulus, fs): + spikes = np.random.rand(stimulus.size, + self.n_convergence) < stimulus[:, None] + return self._correct(spikes, self.tau_refrac * fs) + + def _lif(self, stimuli, fs): + dt = 1 / float(fs) + + vm = np.zeros(stimuli.shape[0]) + spikes = np.zeros(stimuli.shape[0]) + isyn = np.zeros(stimuli.shape) + + refrac_counter = 0 + n_refrac_samples = self.tau_refrac * fs + + for step in range(stimuli.shape[0]): + if step > 0: + if refrac_counter <= 0: + if vm[step - 1] < 1.0: + vm[step] = vm[step - 1] * np.exp(-dt / self.tau_mem) + else: + refrac_counter = n_refrac_samples + vm[step] = 0.0 + spikes[step - 1] = 1.0 + isyn[step, :] = isyn[step - 1] * np.exp(-dt / self.tau_syn) + isyn[step, :] += stimuli[step, :] + if refrac_counter <= 0: + vm[step] += np.sum(isyn[step, :]) * self.weight * dt + if vm[step] > 1.0: + vm[step] = 1.0 + + refrac_counter -= 1 + + return spikes + + def __call__(self, data: FiringProbability) -> SpikeTrain: + assert isinstance(data, FiringProbability) + + stimuli = np.ndarray((data.num_channels, data.num_samples, + self.n_convergence)) + for i in range(data.num_channels): + stimuli[i] = self._sample(data.channels[i], data.sample_rate) + + with Pool(CommandLineArguments().num_concurrent_jobs) as workers: + spike_matrix = workers.map(partial(self._lif, fs=data.sample_rate), + stimuli) + + return SpikeTrain.from_dense(np.array(spike_matrix), data.sample_rate) diff --git a/lauscher/transformations/hair_cell.py b/lauscher/transformations/hair_cell.py new file mode 100644 index 0000000..ec9ccbf --- /dev/null +++ b/lauscher/transformations/hair_cell.py @@ -0,0 +1,100 @@ +from functools import partial +from multiprocessing import Pool + +import numpy as np + +from lauscher.abstract import Transformation +from lauscher.firing_probability import FiringProbability +from lauscher.helpers import CommandLineArguments +from lauscher.membranevelocity import MembraneVelocity + + +class HairCell(Transformation): + # Model parameters have well-defined short names + # pylint: disable=invalid-name + def __init__(self, + y: float = 5.05, + g: float = 2000.0, + l: float = 2500.0, + r: float = 6580.0, + x: float = 66.3, + a: float = 5.0, + b: float = 300.0, + h: float = 50000.0, + m: float = 1.0): + # Signature is given by model parameters + # pylint: disable=too-many-arguments + + super().__init__() + self.y = y + self.g = g + self.l = l + self.r = r + self.x = x + self.a = a + self.b = b + self.h = h + self.m = m + + def _meddis(self, bm, fs): + # Equation length is given by the model. + # pylint: disable=too-many-locals + + # initialize inner hair cells + ymdt = self.y * self.m / float(fs) + xdt = self.x / float(fs) + ydt = self.y / float(fs) + rdt = self.r / float(fs) + gdt = self.g / float(fs) + hdt = self.h / float(fs) + lplusrdt = (self.l + self.r) / float(fs) + + kt = self.g * self.a / (self.a + self.b) + hair_c = self.m * self.y * kt / (self.l + * kt + self.y * (self.l + self.r)) + hair_q = hair_c * (self.l + self.r) / kt + hair_w = hair_c * self.r / self.x + + hc = np.zeros((bm.size)) + for j in range(bm.size): + if (bm[j] + self.a) > 0: + kt = gdt * (bm[j] + self.a) / (bm[j] + self.a + self.b) + else: + kt = 0.0 + + if hair_q < self.m: + replenish = ymdt - ydt * hair_q + else: + replenish = 0.0 + + eject = kt * hair_q + reuptakeandloss = lplusrdt * hair_c + reuptake = rdt * hair_c + reprocess = xdt * hair_w + + hair_q = np.max([hair_q + replenish - eject + reprocess, 0]) + hair_c = np.max([hair_c + eject - reuptakeandloss, 0]) + hair_w = np.max([hair_w + reuptake - reprocess, 0]) + + hc[j] = hair_c * hdt + return hc + + def __call__(self, data: MembraneVelocity) -> FiringProbability: + """ + Calculate transmitter pool-based hair cell model + + References: + Meddis, R. (March 1986). Simulation of mechanical to neural + transduction in the auditory receptor. The Journal of the Acoustical + Society of America. 79(3) 702 + Meddis, R. (March 1988). Simulation of auditory-neural transduction: + Further studies. The Journal of the Acoustical Society of America. + 83(3) 1056 + """ + assert isinstance(data, MembraneVelocity) + + with Pool(CommandLineArguments().num_concurrent_jobs) as workers: + samples = workers.map(partial(self._meddis, fs=data.sample_rate), + data.channels) + + return FiringProbability(samples, data.sample_rate) diff --git a/lauscher/transformations/peak_normalizer.py b/lauscher/transformations/peak_normalizer.py new file mode 100644 index 0000000..fe135a3 --- /dev/null +++ b/lauscher/transformations/peak_normalizer.py @@ -0,0 +1,12 @@ +import numpy as np + +from lauscher.abstract import Transformation +from lauscher.audiowaves import MonoAudioWave + + +class PeakNormalizer(Transformation): + def __call__(self, data: MonoAudioWave) -> MonoAudioWave: + assert isinstance(data, MonoAudioWave) + + data.samples = data.samples / np.max(np.abs(data.samples)) + return data diff --git a/lauscher/transformations/rms_normalizer.py b/lauscher/transformations/rms_normalizer.py new file mode 100644 index 0000000..cd8e8cc --- /dev/null +++ b/lauscher/transformations/rms_normalizer.py @@ -0,0 +1,15 @@ +import numpy as np +from lauscher.abstract import Transformation +from lauscher.audiowaves import MonoAudioWave + + +class RmsNormalizer(Transformation): + def __init__(self, level: float): + super().__init__() + self.level: float = level + + def __call__(self, data: MonoAudioWave) -> MonoAudioWave: + assert isinstance(data, MonoAudioWave) + + data.samples *= self.level / np.sqrt(np.mean(data.samples ** 2)) + return data diff --git a/lauscher/transformations/wave2spike.py b/lauscher/transformations/wave2spike.py new file mode 100644 index 0000000..bb5b48d --- /dev/null +++ b/lauscher/transformations/wave2spike.py @@ -0,0 +1,20 @@ +from lauscher.abstract import Transformation +from lauscher.audiowaves import MonoAudioWave +from lauscher.spike_train import SpikeTrain +from lauscher.transformations import RmsNormalizer, HanningWindow, \ + BasilarMembrane, HairCell, BushyCell + + +class Wave2Spike(Transformation): + def __init__(self, + num_channels: int): + self.num_channels = num_channels + + def __call__(self, wave: MonoAudioWave) -> SpikeTrain: + # noinspection PyTypeChecker + return wave \ + .transform(RmsNormalizer(0.3)) \ + .transform(HanningWindow()) \ + .transform(BasilarMembrane(channels=self.num_channels)) \ + .transform(HairCell()) \ + .transform(BushyCell()) diff --git a/lauscher/transformations/window.py b/lauscher/transformations/window.py new file mode 100644 index 0000000..833a05b --- /dev/null +++ b/lauscher/transformations/window.py @@ -0,0 +1,53 @@ +from abc import ABCMeta, abstractmethod +from typing import Optional +import numpy as np + +from lauscher.abstract import Transformation +from lauscher.audiowaves import MonoAudioWave + + +class Window(Transformation, metaclass=ABCMeta): + def __init__(self, rampup_time: Optional[float] = None, + rampdown_time: Optional[float] = None): + """ + :param rampup_time: Time in seconds from the start of the signal + during which the window function is applied. + Defaults to half the track. + :param rampdown_time: Time in seconds to the end of the signal + during which the window function is applied. + Defaults to half the track. + """ + super().__init__() + self.rampup_time = rampup_time + self.rampdown_time = rampdown_time + + def __call__(self, data: MonoAudioWave) -> MonoAudioWave: + assert isinstance(data, MonoAudioWave) + + if self.rampup_time is None: + rampup_samples = data.num_samples // 2 + else: + rampup_samples = data.get_sample_id(self.rampup_time) + + if self.rampdown_time is None: + rampdown_samples = data.num_samples // 2 + else: + rampdown_samples = data.get_sample_id(self.rampdown_time) + + rampup_window = self._window(rampup_samples * 2)[:rampup_samples] + rampdown_window = self._window(rampdown_samples * 2)[:rampdown_samples] + + data.samples[:rampup_samples] = rampup_window \ + * data.samples[:rampup_samples] + data.samples[-rampdown_samples:] = rampdown_window[::-1] * \ + data.samples[-rampdown_samples:] + return data + + @abstractmethod + def _window(self, num_samples: int): + raise NotImplementedError + + +class HanningWindow(Window): + def _window(self, num_samples: int): + return np.hanning(num_samples) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..d9eb999 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +soundfile==0.10.3.post1 +numpy==1.19.1 +matplotlib==3.3.1 +scipy==1.5.2 +numba==0.50.1 diff --git a/test/resources/spoken_digit.flac b/test/resources/spoken_digit.flac new file mode 100644 index 0000000000000000000000000000000000000000..49b172000642e2f66c26e0b7171aadf4b6a56c42 GIT binary patch literal 34220 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 z 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 literal 0 HcmV?d00001 diff --git a/test/test_audio_wave.py b/test/test_audio_wave.py new file mode 100644 index 0000000..0770de3 --- /dev/null +++ b/test/test_audio_wave.py @@ -0,0 +1,17 @@ +import unittest +import numpy as np + +from lauscher.audiowaves import MonoAudioWave + + +class TestAudioWave(unittest.TestCase): + def test_rms_calculation(self): + sine_track = MonoAudioWave(np.sin(np.linspace(0, 1000, 10000)), + 44000) + + # Full-scale sine has -3db RMS + self.assertAlmostEqual(sine_track.get_rms(), -3, places=1) + + # Half signal is a 6dB decrease + sine_track.samples = sine_track.samples / 2 + self.assertAlmostEqual(sine_track.get_rms(), -9, places=1) diff --git a/test/test_global_arguments.py b/test/test_global_arguments.py new file mode 100644 index 0000000..d4a0b72 --- /dev/null +++ b/test/test_global_arguments.py @@ -0,0 +1,12 @@ +import unittest + +from lauscher.helpers import CommandLineArguments + + +class TestCommandLineArguments(unittest.TestCase): + def test_singleton(self): + instance_a = CommandLineArguments() + instance_a.num_concurrent_jobs = 42 + instance_b = CommandLineArguments() + self.assertEqual(42, instance_b.num_concurrent_jobs) + self.assertIs(instance_a, instance_b) diff --git a/test/test_hanning_window.py b/test/test_hanning_window.py new file mode 100644 index 0000000..e0040de --- /dev/null +++ b/test/test_hanning_window.py @@ -0,0 +1,16 @@ +import unittest +from numpy import hanning + +from lauscher.audiowaves import MonoAudioWave +from lauscher.transformations import HanningWindow + + +class TestHanningWindow(unittest.TestCase): + def test_default_windowsize(self): + num_samples = 1000 + one_track = MonoAudioWave([1] * num_samples, 44000) + + hanned = one_track.transform(HanningWindow()) + + for idx, value in enumerate(hanned.samples): + self.assertAlmostEqual(hanning(num_samples)[idx], value, places=2) diff --git a/test/test_main.py b/test/test_main.py new file mode 100644 index 0000000..1a40f90 --- /dev/null +++ b/test/test_main.py @@ -0,0 +1,28 @@ +import unittest +import os +from pathlib import Path +from tempfile import TemporaryDirectory + +from lauscher.__main__ import main + + +class TestLauscher(unittest.TestCase): + VALID_INPUT_FILE = Path(__file__).parent.joinpath("resources", + "spoken_digit.flac") + + def test_transformation(self): + with TemporaryDirectory() as tmp_dir: + output_file = Path(tmp_dir).joinpath("new_subfolder/out.npz") + main(self.VALID_INPUT_FILE, output_file, 70) + + self.assertGreater(os.path.getsize(output_file), 0, + "Output file has not been created or is empty!") + + def test_exceptions(self): + non_existing = Path(__file__).parent.joinpath("doesnotexist.flac") + with self.assertRaises(IOError): + main(non_existing, "something.npz", 70) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_peak_normalizer.py b/test/test_peak_normalizer.py new file mode 100644 index 0000000..5f9295f --- /dev/null +++ b/test/test_peak_normalizer.py @@ -0,0 +1,37 @@ +import unittest +import numpy as np + +from lauscher.audiowaves import MonoAudioWave +from lauscher.transformations import PeakNormalizer + + +class TestPeakNormalizer(unittest.TestCase): + def test_peak_from_below(self): + sine_track = MonoAudioWave(np.sin(np.linspace(0, 1000, 10000)), + 44000) + + # Normalized initialization + self.assertAlmostEqual(max(abs(sine_track.samples)), 1, places=1) + + # Reduce to half-scale + sine_track.samples /= 2 + self.assertAlmostEqual(max(abs(sine_track.samples)), 0.5, places=1) + + # Normalize again + sine_track = sine_track.transform(PeakNormalizer()) + self.assertAlmostEqual(max(abs(sine_track.samples)), 1, places=1) + + def test_peak_from_above(self): + sine_track = MonoAudioWave(np.sin(np.linspace(0, 1000, 10000)), + 44000) + + # Normalized initialization + self.assertAlmostEqual(max(abs(sine_track.samples)), 1, places=1) + + # Amplify to double-cale + sine_track.samples = sine_track.samples * 2 + self.assertAlmostEqual(max(abs(sine_track.samples)), 2, places=1) + + # Normalize again + sine_track = sine_track.transform(PeakNormalizer()) + self.assertAlmostEqual(max(abs(sine_track.samples)), 1, places=1) diff --git a/test/test_rms_normalizer.py b/test/test_rms_normalizer.py new file mode 100644 index 0000000..fdc7014 --- /dev/null +++ b/test/test_rms_normalizer.py @@ -0,0 +1,26 @@ +import unittest +import numpy as np + +from lauscher.audiowaves import MonoAudioWave +from lauscher.transformations import RmsNormalizer + + +def rms(values): + return np.sqrt(np.mean(values ** 2)) + + +class TestRMSNormalizer(unittest.TestCase): + def test_rms_from_above(self): + sine_track = MonoAudioWave(np.sin(np.linspace(0, 1000, 10000)), + 44000) + + sine_track = sine_track.transform(RmsNormalizer(0.5)) + self.assertAlmostEqual(rms(sine_track.samples), 0.5, places=1) + + def test_peak_from_above(self): + sine_track = MonoAudioWave(np.sin(np.linspace(0, 1000, 10000)), + 44000) + + # Normalize to 3dB -> factor 2 amplitude increase + sine_track = sine_track.transform(RmsNormalizer(2)) + self.assertAlmostEqual(rms(sine_track.samples), 2, places=1) diff --git a/test/test_spiketrain.py b/test/test_spiketrain.py new file mode 100644 index 0000000..a2ec504 --- /dev/null +++ b/test/test_spiketrain.py @@ -0,0 +1,25 @@ +import unittest +import numpy as np + +from lauscher.spike_train import SpikeTrain + + +class TestSpiketrain(unittest.TestCase): + def test_from_dense(self): + data = np.asarray([[1, 0, 0, 1, 0], + [0, 1, 0, 1, 0], + [0, 0, 1, 1, 0]]) + sample_rate = 2 + + result = SpikeTrain.from_dense(data, sample_rate) + + label_time_tuples = set(zip(result.spike_labels, result.spike_times)) + + self.assertSetEqual( + {(0, 0.0), + (1, 0.5), + (2, 1.0), + (0, 1.5), + (1, 1.5), + (2, 1.5)}, + label_time_tuples)