From c0c88ef467d2c915c688b6166fc5ceaabf09f306 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Mah=C3=A9?= Date: Sat, 12 Mar 2016 08:35:16 +0100 Subject: [PATCH 1/9] Improvement suggested by Gloria Broders (more robust fasta parsing) --- scripts/amplicon_contingency_table.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/amplicon_contingency_table.py b/scripts/amplicon_contingency_table.py index c9ed7747..dc40bac1 100644 --- a/scripts/amplicon_contingency_table.py +++ b/scripts/amplicon_contingency_table.py @@ -8,8 +8,8 @@ from __future__ import print_function __author__ = "Frédéric Mahé " -__date__ = "2015/03/15" -__version__ = "$Revision: 2.0" +__date__ = "2016/03/12" +__version__ = "$Revision: 2.1" import os import sys @@ -38,7 +38,7 @@ def fasta_parse(): with open(fasta_file, "rU") as fasta_file: for line in fasta_file: if line.startswith(">"): - amplicon, abundance = line.strip(">\n").split(separator) + amplicon, abundance = line.strip(">;\n").split(separator) abundance = int(abundance) if amplicon not in amplicons2samples: amplicons2samples[amplicon] = {sample: abundance} From 5862a0a583c5d6a250634873436f6220b79c86c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Mah=C3=A9?= Date: Sat, 12 Mar 2016 08:36:49 +0100 Subject: [PATCH 2/9] Minor corrections --- man/swarm.1 | 8 ++++---- man/swarm_manual.pdf | Bin 25269 -> 25314 bytes 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/man/swarm.1 b/man/swarm.1 index b2af08d0..55482dc9 100644 --- a/man/swarm.1 +++ b/man/swarm.1 @@ -249,8 +249,8 @@ set the gap open penalty. Default is 12. set the gap extension penalty. Default is 4. .LP .RE -As \fBswarm\fR focuses on close relationships (i.e. \fId\fR = 2 or 3), -clustering results are resilient to pairwise alignment model +As \fBswarm\fR focuses on close relationships (e.g., \fId\fR = 2 or +3), clustering results are resilient to pairwise alignment model parameters modifications. Modifying model parameters has a stronger impact when clustering using a higher \fId\fR value. .\" classic parameters are +5/-4/-12/-1 @@ -332,12 +332,12 @@ or minor bug releases are not mentioned): .BR v2.1.8\~ "released March 11, 2016" Version 2.1.8 fixes a rare bug triggered when clustering extremely short undereplicated sequences. Also, alignment parameters are not -shown when \fId\rR=1. +shown when \fId\fR = 1. .TP .BR v2.1.7\~ "released February 24, 2016" Version 2.1.7 fixes a bug in the output of seeds with the \-w option when \fId\fR > 1 that was not properly fixed in version 2.1.6. It also -handles ascii character no 13 (CR) in FASTA files better. Swarm will +handles ascii character n°13 (CR) in FASTA files better. Swarm will now exit with status 0 if the \-h or the \-v option is specified. The help text and some error messages have been improved. .TP diff --git a/man/swarm_manual.pdf b/man/swarm_manual.pdf index c9d0ba47e8386f431a848eb2ea516fdcc2b22dcf..b26f90b911ffdd17925dfd27b2ae7e9f31e582e4 100644 GIT binary patch delta 21231 zcmZUaQ*bT}(4>8H9|hJg=; zf#W3rmv&ncZa;Np6lb%oe-b7u572_3_A(s*&>MNXkr*Sb1^G{#wY3jQXPHRfcn0@* zu5=0YD6{L4Xg0xsg40B#RXTsqxXax$!}!en`7rlGpB~NwNUj;SL$2)~Jc6mSXS^%2 zT!m@##4m(weuwylHHp-dB>81FY@Qe~^XO~?e!c^p`S$|)zBjkQ5SaPlh}=FM?j4g} zr_11eU55F#x_*u)P!#Lm@4q+O>UO?e2Jdd_+5rC`MNh~p{8oA8tGoi}Ia(2Z4Do!uZHPAe#Hj)>|#zcQz0V0mn^m-*Bjrj5q-c zo=i>=_tv6Ie2ECzJHJ}%wt6bdJ!rB5IMVz$7LUqS+4+ASPEI%3Z+C0lvXVWwE7Sdx zO4IKoHB9e6D{nWzSAuCf@mp)POjk>*CJ$6jd2vP-YpEdIC^j2sM-%rC(BvCLhSS(qB{7s=x-IQYmYaBz zlI;j=n2+?jo2;t+a<;6Ad$)CnSHK8|)7KC*mrVqnrRQ3vz_X#@33xxT!ls~2n#=ea z%CYX-b_SmMjkbISzqO`e_<=b9$&5L9qaw?TQMLI?D<#y;umZTj7Z2?2+T9f1&6Lr` zl4=7_-?I;^F6&V17yrC9YwZ}{oxF7gAz3AOc*TC!Ozn*_stF) zLN_R1*b@c9eOn4XT5tUhQ)c~Q<%1=MUAv4GqKCn`gA8e#MD}Hk6CldxMasdt$8Qp^ ztI>gx7cv4dQ)tL49rSk{u@%+&*hFs7F3IzQ^iPNK1$7Ajl{WFIXWUzIP+Gee{%IWX{VGX;gKInv9EJnc0uxk z`dY@jVPbVm7f>&S%RMart(-=1%e%(~l9|bj;ncp5Da<%?o=itITrI4^RmGAh?kZlu za>Ep0k+7*7x&LJ8#tG7M`bC1~Yn7Ew&zw@Bg#;A1?~sPdMGOMqSDlSa6#mCLu<6$4 zAOib$lJ%i9 zVpfzzv^pNUJ6IjyGTmy0Mpe0XA&1&I>Qt?g^XcL`?L@(z=*OB8sl1uysS7uU3f8fn zdEh%$^#kn9MB_2_Y1KCw_eU~cE@U^lIGr1)8a&B1fnJoWAM>;l)CPCxqqlyk7dPubxiX&knnjb1UU>HHd zZeWz`u|+D@S3MiNvWWHz%=M;D;l7auF$=j~ZwW8DQb};M22xn0&jenD#x%C4It3%F z^8)hdhduGHnBU~w@elFV-D1VgRkIipLfTx$TuI+T-tBwYbg?cpC*Do+#(@g74Hg6? z?=mq9a&ZDcg3Z&Hin17%AVx`_qypy3Us~KWqfv54jx=ry8XP3C+z8g=4?H%gVe7k6 zjCo8)>gb+q@o)nUk1Y#+5XGb>qUcuq0(9RH1?hbeXUsOvj_r=Z;fTe)Wie1#HL!gkKY!B`{UDK`ST7#DGGZ2LN$n8n@3U5P%{ z{kV$d|R65>ks)Mrk_N17@VLs3So`tLsk`0do zc8COt##UoYMn*G5Ogq@67z}zGv^~ZlouLjOhzmO*m|ejhOPJXf(Apndyj}0XEp2{a zHQ++B;KxO!`Pmo%m9iYOlt~W?IXPu|V^%u;+}H&q^Va;Xd@NeH%=8NE5^+vaUZ1i= zT7kG)KG05bRnQ|!v@?DSxsI5bMn`;4?+NMm@PkobST zfHNME)fb1jH{n(&@n6ZoT7`pOOH=eiYy0pO=M9tfTTx5H1U$LgEpWk?(d2`=Y#U z`$5#8+%N!BT5a}mLPuA_1ej}Q9v>kf9UIc9q<=hks|c(I;}O4f4fePIAv6$MjK zXE${;_sJU?l7U=dliz{-Iv z5MrhdOko*t(#YpGB4}Qk2HJ|}Umq$HQ=K9&Hk1kvn^17@hc%5NRLta&XxjXTbqJq0jUk{N))-kIFP zi$0&-6W`TCFI_)J1w7Os69I+O93`UepYyiug!5^zjid$Q@+zpr|S>!F13C#>HY(2ax@LXw^)7pOiw#fitE?T?j+H=4!xs|hOTlsl` zC6=MdngUYSEo{mR;-C?F4bwsnnm_k#R44!LWgh6!Qr1aLpbN5Q9B{@fH<-L*T3eVB zbGEH#nUSPO0s$A4Dan;Y?WJYwla+T!m(mM>2LDVkCrKRI!0R}?SI<$3Ryg$&UO>5J z)&YLoIDOrkgcv1|N&=9$CL3hQX*a&X9;kG#(IRr-G8;bg>R2Nv^_KYCpmlgDqNS4F zH^aaVlZ`ty7sr;9&(J0S3Hp|f5q7U0$o_HtR23jVRSZ^+w=79jbLd1zJcv5P;{$x~ zhy6_jZz}zj%KwpfdP*!P6PYI1;udsU(gHjcWkt?IzPt)IxD!yBM)A7TTNP-!0Uz*V zrqgS5mn8+e^JT||y6TbPkH=@#oL9S|NYaE+`Fto;;~Im)FS`JivNL5wYA-7-2~+rr zqNs^rEDupWZSf7 z%Plqa(`5vMt!4=Xm-mI}sjZV{2RtfzA= zcKSfr4Z@$!a{lHINP z%sjAVuNpOLVWi#s8M#?Ux=6SeNx)ZJiu47E&6VNleP4ni86}%+3}1b%GMQ`zq)_Ua zN!c<#{Q)q1yr`OW{fKG8LA8%cNRbI6C{{Y9MFI@W2tD9Kr!`HevY)U>aQotnI9U?P zF5xb2RzI!grX|R2*5(Q|r!6W6{)n|h5!N9(2qQ=VOV09rXgLf#th_KN=b2(ybfe~W z6xD~jb_16Fdv0^&bciBDGwY+45S$=VM~%5iV}SL)%atl3B9H&9x0@&$ea`%}SnfU1 zxyptUc=Jovc+MhVu{un39H9~C_chQ3UUO#o%29i(;7ydG1j+j5Auc13jT&puODcTv zCkCcEK!I4p->e4a=S8T=)p3lH$EG9TlSAQyqf3viu-s|DIl#W$p2zViX{Dp{bqifX zJOQw1(h9oCXq5+syeqP3n{NQ23yp=jVKn~pNfIxt ziae0>7T5mJMh3ks3?lKWKRq04&P0TkJ1Fj8c9sozMJ8h>4a+a&+!10tW;)e3CK14asJ^|=j zV17NH+^pOtx=ZIBm)Q1Ivku*lWz;zlxHoxZ37Q6>8Oed6A>RV@7n%eKZ*@gNUb4k4 zKd6UJoK#zDGGI%8IhTuNwH-!WIa0(fd4Jvbzz&tmkrp!d>Pb2@3S=j~8EG8@JMfGzziLj!`={ zg$j%nW$GWgO;F|>DR*xF;AO2)Z9WcJ*3p%qnDU5tv(_H+q-;K5jdxH+5@@;Q@tM}? zHgajtvFdnlJ<{b(ZPpLDBEXg-)&OXEqU%xkt8wcU^Mx9hMHFpR&$Z2OJ2+84?e*m>8sPQm#M6BAf)>ov%yo$r_-Rbeu*-UIAiB)#TI^d}I6eV5_d zfSPW}sPCX!ne$Gh%@xiPK0Cg3V+Vr}S3_)(#dr2MQoJ+xDw=(kD^DN4cK|Y#H1~vJiLX~5&)-%UNp0Aa+w!{i0#W_1xnPp0Ha)z=!Jg~`r=nHdqzyu@*%NtzvN8?04|rCjhDBJcJ(-E(53 z-0}~CEQ<~kg0ZK{;a_2cdA49Xh6X!P6e;;qg7l64RgPozsX8DA8 zOL0wiP%DGKbKF=DUP1&8HP*Cd9u@s+iCM{z24)2LwFpJ-Us;=weMcleAJKCET_PD zyZ0C@5JKS`Q9tn~EP%f!s~ttcx0{FdHZ_}&&Z&ky`-v)4)$`xI)1Nz2zJsD4#o$!1 z8M+mSp%i-eIv^WFzSV*kgx{YAd`xbS+S6pXr}qOKe{k-?dwsp}%}4TFlt%pX{k)Fv zDIniZYOpt)8X>$`efO~Y*H`wk(S3Zq@72FP`H@`5$V}}_oRe6PF#a%dB*`L)0=7nw zx@Xl@&WxIk6@<{-sC@`Y@vi2KqNe8zM<8U1ys*hq(fxDh-*85LuhLq8w+BU=YxV+2 zIu!o(`eeL?i0agb|E%@8Z!f3uA7A-(M6P`=)2j>pj$P?@#&+)<2nZsyeo{Zi8vHZy z#Cj|=*}S1j$7kOJ=t1=pBT0Vs0BY()lpctr)?e-~$jV1<*bv)rUS6i#_-%zU#QInH z{eHiz2zosK10ejZfNm+1@yCI#%h|;m{T~&rb;IlfnehRR#j;ZIY-aInuZAO2vJlmP zvJeumz|m6Mb%)HjvWyrju9n9kx501#eprv)hc_ESwb3FETW7|ymC9%@RB059}n>TUmY<{US&(U$RGL{7P zduV<3NiO4#My~6fx3+_?4Zl=WDfwmW)0Tc=Z8P_%!SRPB>AC3Rc&X2zbvL<-h8PQC znMEBIItC7Z5Lo;x`nT}{U`I@hFDi+Z{n2sZ9?5%#IZm-JNtB&>Eh)Q&jr+*t`XVNF z!*11!)Gl6Zs?dL2&F|`NMH03$?MJNqm2A?FzY`iB!HR;SGpQNEQ=rYPXA!agvvm+{ zu1UgFH5<~a^vMDH%FtYqwa=ok7und)-Ih{{6<0Jw>xTNFG4Sm#QUYBS_cazdC4F){7M?guRy_2> zk;e zZ|jGY)GhnaTDIW;C?RdxaeST>ha@Jqz#sar$&RpZbndV+MYKmRwpbg}8AvUQYZr*`w1BkM)oJ1*^!hZ1JX8s_3XNJC2IFuGGV!h8b^iK|AM}A4b}u zTwz@lN$s1y^1xR81jWU4gOJL^^U;iz=rx+mr>FLej$Fkxqk~gmfh{Q0?1CgS zT;K;g0|+gAoN@ywW#wDtUH;&E&v}9|NG2{-WF$wRi$jW5bh4UiE*O&_5-E70;*b%L zJ=G0}QgTqKZVFMh$KU@sAz~Yuf_O{)atG#-90*th5I|h0vp_xdTMmY8E79M0__is5YD~lkyEqG!=6?|hs~gul$$y!4f=zU z82S+ps*)`2N?Kx>U%Uidr>K%UYRR^zESPOivu){afM>Z)`Sol9lWQknD{+>{Rrbhk zT^2P4;G7KI9@;oS9YCY63CXe&H;V5Z=rk+!fy(Qnjps9LSC*Bgj5Fuv2@1Fy=Yg;3 zS)&M5A~+%5vv!;IJ@zhYVUS3=+p79{EM)qFn>IXY1{bJQ{Ykjf`Ya?Q!ybLWbN4-F z>dL+}&8*Y@M~&c$mUBoU%{&M zs7TbXQ3l6UV(BSGGCNfYyV}?eQir^3ELeN~J8qeSy)TR$@NHXmkZ$#b1pLB-G{cT^2g<*qH8fLteo&tdi!aeIq>P$X>Mr4!=|QF`RHzxV|qu zOE}HN-34`J#@mb}g48{0Zk4wUHWlqLflsBH8;NAmY)~OeS&C+1FEMe1i@*RKhgn1^{RQ!MMaD7e z5$74H%)?ezRAtXc%;F<~40sQfjUW;yzlX$vTAZp#QG$f(Kx6vHwBojURiRh|$Yq3| z{_Y2g9&-qj24Bj_j6W#|iBGOWoz`jko9@BSL({x}1{E=fgxpR|t*gdYt{QwqrRil* zZcC`;sACG38pO8kQL*57;#Dy9>*)NQY zg`Y~nc2;kVn)dCPwevqBzttuKu!ee0y$WGv7eP0MrLshV`1IV5;nF->Si7>2l8I$n zAV+HUmIX2_Y;obuUf6?{Eym%z;%0Lw4?C~{Cz95`kNW%46?rNTfxv|!Am&N$Va=oDcMNPraX|Go=| z1cS|b$Er*WRlzK0TbxZzx>-GE$ll1*fKn9rur(n>H)!=hxM}Oik*x6F#E&tE*3eiD zn>!=3*tme--oNbaE`bA@*UeOBjUPHc&c0~&zO{f}b&TGuGT_q@Vj7cH@nK3w(DETN zg7rpGorR&8X$0%C`?Gljz-J?xzg=HN)W=4PS>adFekY(dLc%f^kMng#nQ;H zsCEDohl8A7^2^-vHxp!J(FVb*VR3#Y7&YtCE5|JF&wZ1Z{TA0}VErW;nVa)qK@k@e z%ZI~%nmLM?yXW0X5SuoIY`#qROs$y?iMW^O#4@dsIg`g-;Rw_at9r@3<#T8zK2}E(#q7F*mD1j($j|i@dn0Q&%&U0b7Ai<{>n^U zsiOXqjVV<*v;J z;y3JI15!ix`J0L1nws!N(e2V$_o5oQFan}^AzbU{`x}phWo@A=TxFz%SLrCi=a%n{ zcGt7slvXmLmiivv9#WI5@M0F&+T-ZV8?aBhD~VDwoB70&c7#KGYfrfARkt_3>eZjm z=}9>O*aMT8n>%|XuvLCmEu*W%!xlTv)QDOFsu*UM8a7^z_R`&`va-n=c=b^flGCYY zR2<=v<)`8)Wpt@DnoYI+qos0|%H-^du~KQ<5t_<+h8yZkO>zdmg7_2(_hQ?m(KNSfSYy&lr_N8uRknUt6*x8k zTK7fyUd&(&-5QC+5NOp2Itn#95Q>@|isku<(+l>lmOJ`VRRqM~zPrEU3n4&~<8-wY z(QS9R8X>t%H-b+^6+_)xGP!t|waTe3sG_#qH}?$Mpp^1WCYxOUu#okSyvb&Qf9YUm zObn=)4~xI>vIk&cFqYl@IZhB0Xt=GyM+%BTT-{41V%9%W9QFIAJ+HNIQwNOZ{Q~(I zw?QT0;^P4`CUN1501`LZ(6=wC>zP@X1EG2{RFsZo8Z)rv&2T-JX98sfk(qrcd^Fs8 z{yxq+(*Xq{v~=RBE9o_B7yCzf&vL%%Jk?Dd2mX7S{hF$po@8g_cEw4{Ve7RE_8Oat z>oVHCz84ZAxQfI1#_KnV8?Km5O1`d&S=4R&)MpcNP;bZ21>7RwAQkgC3b*#!-Q-l) z>~J1zr*?mzhp}(wV06sv0(`zdmV0}CBlbJ_Z+{!0x{^mDerkR5)VAMqXAhIFzru6> zc@4+gy9cgRgk1=>R&zGirlrN=ZI&8+Yc>+J`Asa6z-E7IuSj|t_zpH+D4}~QH{Gsr zi(h{}#5hc^19<571xz8mko!-C0VfG^#+dGfjgdgwi)Y-_tEx1(rK!Qzo z-nx@r)y9uEC=rBgt}C7%7@jDH<(Qw+3d}V%8>QTI0d9$SOzm2Dh6{sIuCH@aFabM&wgkhAo1BZeam$SDyt=r(h^2+pX znQE$QwG6_J!Puq7YwoM>T8>w74KL;)BrPeo&Pd{=SIMOErsu+R^uE9X!2XT4Su14H zh9gnNfLsH?EZtps7q>VX`_R^;?CV+0S?q49`G$g|(E`vbOdt-EC&$rR^K~gVTj22z z7j1CFfKNrIEZ#Ws=KaO>#{-e-#Zxci4>L{agmDuQKB4aBX<10j>cxf z-pI-J!3WNB;p!Ogs{aL#Dlkc}ne~kL6c$(AY4Y!i<5Lg6ZNQZ&J6!^_g1k}UBd!31 zMLZ=4M@1Wv6bZrgohDrE0FSsvA^B7Qpu+m?sd347COX=-201^GI|A;I#~2UQC3Ia0 za|V`bY1GxK4Z2m563;}uvemXiP0aYxGPLSbhp@LUG{f5uVlA*UIa;zc zKe0!?^9M|BCs{az4_pePrIsfi@RlMa!-Dp;gVfezS01GgVOb)8WWwaJboOe08|^mF z^t*NS>vrpLDCE0nP8#l_Scj?l$GmVH$fx?W7;3a@6Oyl?1vL055O~nQVdT$r=?inu--3((i21yj?NzMEK?$KiG zx`IHfq=t^>=i9cd&BeIev*vLVe#5~60<|)bn9tC|bhB+1W^^`!JUtKQtn4s;YqozZ ztO{2`v|qq+AydLgAbE)k*k8TyaS8Z{SVm!&b-_ev?3Jo;E{TkhEAiumr}b-A4PxVX z?(<3oVV6L{qCxs19!nUc+9o~3}qv#UHEYkIE_xRxsvIK=M4gX{hB zo#(k;6TyLO0a;pcF~fvWZHb!dzXG9rT9_cfhLv$$RPNlS#0*CywzIKSa{Owaf~VO# z3gYX9fT=b1o^Ke`SrKJ{&ORRkR3jBl@kE}a^w3Qbs_4wN80B|pr+BQt;?p-+E!Z)g z$`s2R7P3LUDAj-hFjTOKV20c(Ou(S{wYG)AM2%Xhn^wjg9mJ`8e)9_u)8_+f- zZZj_Np`N$!|M<7@`-&;M=C((+${~1~!!^l-Wo}jlBH|GM<1AKz?Y!==nwGHJ*yZGH zInKy;IAg=W&*@kPexHYYU%5jiNtgi9XceQPuP$X^qfG|9BAu94>MXgY9tL%FPT994 z$T-%4BbF+pjB<@ti6}VH_&oidRet^QYavVq*N~$CU_Y+J;w%~#R6Chiy zm(!d_+YDa7*u!P*o2*|`D2cAq+PIIaamYk$&-G+&)lKh@CVOV}>I-}!miPF?S)4lN z^Dp@F2bqP%G}dCuvV!RH#(wd+iNs1kqFFkekn2{X225Vam{7tGZ&Sl#r}$lUH#%M` zRg|)B02vK;m->M?Vm<}DSZOC3VtKQRLlw76rzk6+J(n~EP1e-cF$E~)#Yhx|3jJKE z-uOcz`u$67iuxw(oE%X$YmYfyN$_Sjg|GuchSm>TEWBjnf2H${Qg-ez`ifC_Czr!cxoX%e5vIMIn@oaEg zebN~49#z`Nm6%_8$S3b;LFU1mphLtR_8ekI!w}a|^!7W>-eD1M;h%Km)~GINjbZ)y zS6-}8AHxBz2&(ov-~&j<9WIS13m*hTnH-m%%}f`^j6m2ajy;C{qZIKz8Em$r1)>cZEChiC@CQ`LntW`#^!2&j`LzmriR(Y4K>jp>k zXM{hY7`5!TiYZu*`ClQWaG5PbW+Y6}*+}-Zc{|Hd>-pU+278|ydXH;_1j$ajW7yx8 zGEX*j_%r6)DT=HIkkB~zkH-ifX!bn-Rs^p_@vDr`v06GmWpn~xs-B=P+jrs@cK!{3 z2g8bupjNMj?z}H<32rzE?{B0q_1lIU*C?5ITnJ+oBMvK`rAmeQrL*Jt9t{cqeW&XR zh{S(LW^Jw6Q7@SjPKnxN*JFAmO1Y!SO$*R*5Yqc_od-|B;5!-2`Q2biYfU*+O95j= zk=|@Woass!H^asJmtpH?DP(TUg!2+0__4seT6S{Pa_!7cpUd1~e)-W_A)o#nbrHCq zS@FUjVig&+olM$?F*6JW^7%4sluCMO!|2K2@I2rOJxbC$YgUfN{4ccTXtK8k@?#Tv ziAEx~D^A#2(czgxZ#S^Tjxc-GL^1=>eQHo4|Mvr$Ym~UwN9!`|`-K1P74Y{j!Y0iB zX6G(WriQlA|0#PTD`+MLLI%SB5p3+NNvxDY0If}@O)+HORrRSwx^~i7hM-RND(IrI zR;AXX_~a%!ZvsLm38KHi;24Y>_IIOK_Qwb>j`Fj6ViHmZvL#fpfnkTNZ0XrnI=h{o9323+vB!)4 ztt&PcUFiKoIE;5kWg>{>v?42Pg*d+@Xd8!Ama0hXpGGKy)X z^LpjM#_qGxZ$N5+$(a2~>HIOjTW-@qmg1xhjGN?G?DoL9GBWYFa;#M~!-R6vTr^?J z7H#l;ok=r>q~;pRy2L4kZi%vU@lsmcX}3z)R&~4;mzv$^;&rl7iqf6^%0x~Xnj?XGHfch$JZk)gLGdNBB5 z(HvMuEJGgUJPhxtlnO0xdJ-MJ=NJ!G!hDwp*+@&Pha3MbM1SOvw$ptUhGQ6m9j#f$ z*u7DzeJ3~iEcz|nvD9DxPr5e-piAj!ur4y(k#ULYD9=ynd9*g2)aLmr6$a9G(zrn^ zO;zH*WRLz~7(DP&ME3n!`MMK6$sn{bEk8W3Hs~g(J$gf76Xf6-$ZhESNi1_hOy0Nt z72nF?o?r=&pBUGnVepEZV__l;$ZJRjSIK?3$Agm9kohFj+WdmWwo5t*_VPS zB@p6|x?{uoHq$Yo9`%^GBV3vOTt2MwXx6vgpR6jUUcG3yFhdBw?}ffogipORecg=y zo=|3)S)=mTJud8)nAMp9!Z6gaD~%PZLK`9f;c&tIkU!e}(qZ^5^*vvlc*WDJh!Y0I zV(6%&B#LsI(ZksgtJm%Ct@c^AzqxGG{QZY$m*nCL#K!NZ;;?Ib%kkawTYlTduL31B zN+-9j)bQ#O7j_0isr6B3J+%@7Ds+jqz{RJ<_y>NIfM08PSVD{r;6dCd*Sp-mJQ)-d zLcqqZYWZ(GKBx_shuU^O@YM`rI#NjLf{$J!cRPk;-UL`jFXfm9TqaR8HTL#Eh*nckZ8Dh9a7OR2Z8S4@ zjtlZu1xK@aI<@!#a2wlHOAxW)My5|e@3f|#)wqR0KQoi6Ind-o@+Uc-xaJv)2oaQs zW0N}Ncg*qjUj=zUEwy(@kaCbLL4Q~+)>|_qubBL*HpE#)9;g?W9Y1)SO`Z=lkK383 zJ}7?Ep7I`WQ`kNtkDL1qPQ~BW+mH`JnYWw`p;8=dvY+gPc6312&o*bXn;-owKVuJ8| z!-@K8-5PtxlnJIrTb)@@?b110)~BL{%Vc%OCMhX()?#zzh=0(LjOC%mmFU5D)VNE1_K*_s4n;siO0vlAVS@e>Bn+1?Lr5_nGf2su9n|I z{;JAsQ=dG~GsT2wdd3q@4|N5Fw{^GsqBg`?cBe@aMuueORYdtz-JWb$r~6+fz#~{; z6mGB|=>#!Zw3P}@a}#(u%Ls~Tm&LE5Y6qd^&B{b`iyC^q?rjM5lxo&3F8**Mj#-=| zHJ&CJP*!$_aD4OvHZnZjiLh9uUUxc+g_?-;`NDv}iCG9*r{k~EN9z;~cprT?1yn49 zR+JyQEMG^g_yr+9{LvM9>{Z-CEaII>80CgurBW9UAfb=1!npcdwMHZt@MNl#>}hl% zo?qk@yX(S3&tOm^6|Cnz!ffE2)?ddn7eb{AsMN6r+^xXx7?u1!TzsU;s$~L5mx^`~ z*{WsDs$rb)*LiP|p%=CED^!l}Q@g8f`Xa7m8x<&*!DB_#BjGy8MbK#<65-hvAr@gg z<2R;zg!kFpP}yVav3Y<|v0kb|HYk1=B?vd)r*lNw3>+*+xCsT|Mcrg z8eJs%EZm_(+gy3Uw0<;c~_!f_Wj zjAMgs*^UCQ>>`NwR6fE(da9+kS~D*LU{G)Zi8c-hr1gjex0^PMMCCMkC$D!>Qok`F z3VFjWm$pF_30-puDZX=aMlIh3B>lWOyFFr(Ft-M`Af}qS|1wKKA&6oxjKHDF`3@lmEGEzrDabiGYKKNB0W!at~=EM+)Qk9 z%T3mpRT~ysAcN^uBYqT`U1%w2R>Ewa)SW;U)}VCIZIP=A>HnEfKPz%A+;J$igv3U~ z@ze{eY;Q$jti0|}uRJc`L%op6TNT9GviQMg#bcpt+ugTErrsCsit}K#x|!_qsA1?= z+2J=P9OjeNsIH^9B5Pha;Yig1z$8#?ZrKlU?U~2Eypk7}^P$>cN!&B*^=e?dB_kIJ z|5>UfjwqCV=D*{@hb7!<`sAo-1%x2#Yd4uVy8U$eIl6g{li8cGkEZrqvfn+7>p`r6 zi-!3NSywT%-8I}qSi#>lPbc7WmVo6XMtz3klHl=kGeS!z8GN5cK( z{$;s<$QuxidCr~jrpl@>+cp@{2ow|LfUH~jYw z=S8cbpa=hqd7DZ*>%mjIPTXsOB=tw^A1yct**W4ROMwSdV0T{tM;Dy~MKc>v=_NnA zRzb`X?*_siPn_-wleWq>H~1qCSKvzWcPU915Y4?f+A)gUP{rgP08{6cOif;`wRxUW zbXTssH+!bmu6F&hYF($ZiQ$2UNdu_W-q&MAUUT((oJ6B{H3Ollj6By-^O!6e)#;7; zNuuU~kKX8TuyNVZDC9H4eo1D8B# z;0*XSL|k@K^LqKuoYCNwxE&htq4opY`P_xBqH0hbU>Zo8%K*gNf*i(a@LUKj zTeej+v~iv6GWlTqg^{aZ;6OL~{z0t=SE+lDYwH?UxTAPJOKf-28{>*@_r8 zA`?$A%xjPYyf<$s?SiiE;447#^>>1}xrhMv5%Y{^rN|~nyr@&Sal-I5-_VbwCG{qL z%)8v7o_A;f(D({v=~LdjogR-Lw_6gE==kj?Q6TayXb*j^Bn@#|NM5MOajj1F0M}9_ zba-)M8**NgyVtYp1}n&%t9B62u~CJKX)Q-@=-5pEZ*?>*BRY`(9loe?eGZTVDUioMHVx z?u_;SxHD!JCibLaHbFp*=D5@07+TjO^#z+juzv;Er6GJ%Gx3#!e4Mt;=iEa9Xexz= zfPaiA?hN}`QBDgm32Dn&sxSnlztFPw!||m0hmge(xwM?T1BZ7^iOo*S7jyhD66iG@=QZ#tphazh0eh^L`BxtYd&juNJ+AjtHmhm{so^ z?wFl7N_`gTyUX{@A=42QoZrvg&v#t!kCW`(b+0-=d#EeCam$apX0_Arx52?YjA**3 zn()n5jrT5GG(z|A`cN}@O}3nm>rAD_q;BO%>l(bJTNQ7-4zg^@2ct2Zv5^Xcvj-ZB zee*~8TwR6Vj0GUI<(3yzTelIK&OCldAdN0AnmZJ5G2Uvm5xYgl8ACBG!eI9?#^Gw> zoqbUwlq&XaNdkF*1hhC zd%uL$vm)k@4#sRYYc}d<(3C=CRCvc3H}V zOX+?II8KO+sKn_Ozk4cMFvr zpLNRdIY-eylHge<9wvKqpCqD+q>%(!M_BH#8r}Ki-kJ@lR#FW;2dip`tV2+}jqxc}E zuTRr_iHh7Qhh|p?JQxFK<9FQ3p99HUKtiHr+qGsLs-rL7U95;lE`$5C|BAFeYK}fC z{1gDjG17Atb{NFrjtQ+mveu@SiEZnqh@EO2t<$G9VqQhFlUpBa20l25uNlOeTqMXa zLuMfg)dB>81gEQ=RI|~#4P2j$b1eT;VYf-^Sq;IWB5-Bkh9Dh7zTMUy4*E!vsbD>? zkK^lCg3vqQWskwP3(}iUV~lVpnfzwfdJBk&Aew0raY83rSP?)p=Z5ce1X?x3N=BZf zd<=mQW2;ij>!awDduH<@AD5hW6m`tZ#stThB`M2G8hpk%nXl@JhHhEf%*1iG<^%h7E5O8Z023OV1fd3J)WFm*2 zfw^b;=n%-)gy^loBCcTJPGRGCTmvk2yZVm`ZhqI|EJ*udBRbazEO_2-!O@ua=zBJx zVgOIH+9Jwa8MVM;)N{+qGZ3i2L4p(lxjhr&7)$Vz@5#6L1*Vh3Mfc)Q_LgtjB^z-5 zxb@vN;k)_ze#;>~fvN1i5LrsoC$!qLW?*k{+8W3}s3*2?*&0&x2R@>t76arlADk81 zxML7x`Sl1kYijmHxfAl~uHv3Div7@(pgw?}he$phEi>f3txmhCShwY^yWy9z;kw{Ofz|YB?GQ@(2ya{!zn` zAA(5#CDY)!{jdA52aF_G!2+1LulLiT6G6Y1k(qAEsfjG2iRB&N%)KxTREt*yVaC=B z`<{zAW^h9%%q~Nkey71xvWjE3BCOv0Z}%s#fK$sxAdgb!&m)cWb1@S}l58X@M9Y-_ zj-G6_c9gh5^w!lUh)&9UefglteV!=(^|;A_iLnrxELtb-PVIZqTIDl>mC;js(ybe5q;ZCt|V~^Gn&(aOer$Ipl$@Fml9Cx?{xl`RH%&BlT6-? zlG(_EL~UXDPUF*)b*xW;Jf_VU(KIWlKcTgw=E{njT0#7yP5}rNMNBZKp?`x(v(qp0 z`mYpxTFXE?zc%RF_2JlN?HyG$%6|nGe5>Mx$gYHb%d#`#m-yRS^8K|*ZatPH4c%-z ziCSv%`ij;_%x$Wnv4T%GA{FDatMwx8VbCG;9R<=6`WczU0z7lBBZ2TxPTD~1ui9ev zdKkavhN@xP+HxMg6l6EY3U;avnqhfDJ6zpvX%B^BFC_8u>+c# zW2;QT;o+0$NHme&*#lofrp!#b{u~cvCv}ivt}Mec5Cix~-{OIh7mu%RFpkC5dn)%A z8`Hfr@@0OB7Uv*}$4MWXP4Z z3sHpdu+QmI>x55lGxn@)lPG8cg8=z(zn`>+4|&C@S^EB)2Fh0HpEbwZuSm-C_;wJqCUK$PS@{GuXuqmk;R^ zNwtfU4%Od<#ed{rhSxVnrHw$crz9ffk97-ZyuEibY4JcTW&xdaP44Fv-}cIdlbi1r z9SfA5%LfE+@AR5lgkt|6OK1MSES-gkEoojr1dz1Zisidn*LM`L*XP%cpARg6yb;rh>=`&vw3AE>u^E7COIS=M!araJh zsp^!U#HLK0Z?k5nF4%J{G_KGL&^Z#A+|%Bpx$X`sO(NasUxw9LtDeiJtNYuC9QZkq z2JrCf){S5|tRQH(T)e1BbARTR@9H$-?|DB7t7`dQjaqp)RBs!$lO+ZbWr^(DoS88* z#@3L1&rS%9k;=Z8j&)EZhO+Nvub4=dqQx#-WEV-qC|jiHn{TFoSyIOfAu;(z1O!DRAK6-qDOB07&^Z7gMG~VJ0{LN_abYa z+i=x~lv_RWz6=a0I)S`-Z@*(K%g$HGU9;RIYX`^%w-qaBgkF}b=U8d5p%2E(6_0I6 zXeC|WwF7rle6xI#&jxBb)UlCtNJ&EOJ}Voi18)y?^*2-@y2lDGqteRxSUazc4m_po z1N3H;krPc)+%j2Nbrl=Ab*f~`SG&zFcFpS28~zoUwekHJh)Vv>(YtoPch^O;rLzh# zo<5FYmAmVvQiLhXl3R7=m7|{>95;9F%^ZtrDr(e8-x=69u8ys=wYUck)z&In?L^hWy6O!Xt_39V$~PyY zB~plx!Q*Drk00QKAWy^}L42-GCTD!G_2nZ!%~dO zv6o@LQ-i)SwyxmQuUXJk(t2fNc_^_s%f5SXF%L@SSJR$Oodq&1L(v+wsSn3GBV^<8z0-o%JR-T)ar;h>7zaf5?kG=746M(v(X7b`2PwfMVwfXPiexh}T<(FidYl;q`JXV&Ixq_e?U76FaU_q9|sQw zWalxT-z9#B1HECiX8JbEub z2h)RW==u=(1+&=`*VkClu?Q+IePVQTJxzJ}xCC`*S-?e0SESm7&C<{!E}B*Qhxb_t z5yT^pBxq;DS+#YRuA${?3>%Ca+ zz1QPgTN0aWnkOtng2Y<(_?jj%yr`0yUrpa7Er(6B(-8);m{>QQ@UbAXED2hES;V&| zy7z6@GwP@WBW$$Q%^aiU*3&o)>Mo@T>Q3Sc8*t)w;zE*C3Y3L6?6~^b zlK~T7lLQpU&U}H>3H~ZbpYM4)kC+*g9HnJ65a}o?$YB>g)l+G{HjImi&-1oFc6E65 zt(&$AlCD50C1k`MIyDV$O5D0DnMC>Gq;|L2MIkYy&c$a?-TFNky4<|6-|+S4tGqmQ z^&Des;H-x@SCYN;!$Rl&`Tk^)t-!t)B38dE7jFu7b1Jw9 zf;rc>nt`yOC(X{lb~p`{oI(_S@r?i&+0~dZiD6=5Z_`Co(L<!j&pl-Kj*jp!EHCcG%$so&MZQfhrPv5h63m<$G8l)^yg z-LzH^hyUEVIx4HEd3XJcaXC5nbysRh8CTyl=cj(c!ct+?OP#vmpb)>FMmWna3FO_) zC^3M*9+8`&@9qZJi3+!rZL!kEa~usByOg<*jUHeaBshY{WAGdV6@U6>hrpN7cc$wQ zz7S-ItL1BVW^=-H;+Ir&Z7N`FSnSgDdX-2mZB!V41stIj*BQH#>4!Dvxx6G8CuDe@v(>eK-+MNZ zKoSG@$G~^lyQ8Jug-5C_B?SqbDWyIlC3}Mf?y`N6Gp$_s%>hRJ)aIOmTRNpwiL>cv zil%P!ri(B~7%Yi-*-t(swKmN;w3HKy$}OW3!upcF zkptibS?0<-f3shSuKOzA6+@_^MI$HWt=-i%;ns*aw7b!JM?hiE?MILNskLI&NKUKBl=jz3fCo>rJ%?J!(Qe)Q`xvnzEKm5py=nsDl3 z*KB>6ezQ&?Sa2$+=uY5P!l#L<=j;wnCl~KMD@exd^>B|v3n8vf(=tbda3_lMw@e&j zcl?eCJ6na)&u?qaHY1+WNBJg^lPV#cHA~E0hPavYkM?6;{H9)_XIdnZ4NlOa;V2@D zAr_3W==Pm}vNkQtcvq-!!B20A_$|xC8V?zo*WN2;v~xKbxOr1|mwD|_Zlq82Ml+614$b?Ut1K7D z+q;@6etOc7%Sk^31F~@07MyjqORn!kAGD2YMe(($x~HdRu(x@P27NRR$j6X`LRHa^ zjZM-EPa-}J*7jc-jy%yS-$+I)4gJoz8egLPB6+zq*SlL^M8iOx&l%X4r7yYsl%x%w zuduIw*BD~9!S!vO6^*l96k_3fXY^9#B>S)-;amqRtB}_k+eSO z_Qy$?AO;V2C*jMr<_|Q}s?6Wo;Q3j6Jo>gFKVZpk0Lu-k_gU6Qc%#>^SeEYZ_T4ZG zzqy8|CQ}=2Z%4wl%VBt+_0{KrUS|cKL|2{q8C?;vn&K`4AL^*1feUAMHpL;OV3e%& zoy~8{#UQpzG;~}`KyD?H=>1d2y5hzc!zic98|OFs7bOENIqY&@KOC7=R$ZBjVsk-? zdJgfwX#Zy4+cu}~JTh&DU3Ojy3MH)Vvp@fc{QzwkCXd4+ubC>(>exImz2QrRZFZ^` z*nKha1M!f-t+gdYt0qCMVq?Q!!79c3l-c-krd~Mz!$ijL?39$wB9`1tL!uid(tGfA8Jz3#|14MyBA2^kn-Wcgo5L`0F=l z**@NwAbvCEr$xcwL^cx{21O-BVKjmmVX94xHnIHcRLs=sf79&$4RwefW`7V_&i#d` zO|1H3N-{C;q+-Fna8WKw zXeDQ~B8oU>YeC7IVz|t0x;o!76&Tq zDa`z@0So~}A`fB!0sszTP#8*yIOHe}Lg5E*0g5QpK@5gKAP!-0=wTj!JcI#A0DbUT z0EzfF2L8o66aiN{K!hR?u!9DnC=~Q?j!31$A}H7)42p#QQ48>&WkaE02VDbD1nN-6 z019;|Ab^G*!k{SRLDQ6Yl;!lV9{smj09;84JS>7%JQNT>qYq(FCD@^W2q{)E8!*7=33eQrFYBx@2NXrOIZ70G>Bd+oLN;b#{3oCWls{azz=!OZcCVu!vsH%$qFxu0zb`}ClYzd`#1FCfPTkgKhA}|)z5F~^V#|^@S`AQ z9uMj3K-mWyazD?1A};9B?7!I8ZpX^zG)~npvVPCHsu-HHSMREBs>`Bb-KlJT= zXpc=@_T4D`SQ-iAJf8TOH09<$-hcSz=G~1lDAxwbpGae12A;k&S8!is0oTslsV{k; zzfJrg33#Hv?T=GUW-MLlj z`tFz8cOTxbo;Ex4wv(7Zl4eZ!WUP$%Lp}6ei)bR2{eW24os4VSH&uCRih+&OX;)Vx zJ5*gY6jR0U;T6wti534n^YUiF1F6xJ}=j+Dc~5W`}*+RQ|!gW<0r}NAm23 z-Q0ZiB*wyjDD@Kn+896lDjg%Q2~hAmu`zrz&Pa>=*m{R(Dc`Ekr>ZNf5qO{OiwWSV zc5Ld|wlbK)zv~X4%-;4#auVr745s2s-}P->vQt-2WcY_GfIZ+*vbp_;+xqOszHR$X zM!+)=(Y7PsNhE`yA69n<)>hMfzZ+RGRBT&}cz)l1vBLnv&g4wwr-}A7^AqFfbv-+Z z$48NYVRt-DUO()rf$gee)lpTjqB-9qCHG9OLc-FR_hGICgv4WfA915Rh;+9G`FdP}$q&ewfXL(;$7jWm$)@A4P`G zY+;kVnc^}_NSU9_6@FdpXVViu2@SS4#W=}Oz*w2G*ykcPsX}z5-4WK*zLwUkqag^?-64jgmpZ;`z9GwEAtgrZm2bmwoCJehJS!9$MZd^b~ zHk6WGEh7+dKMsYta*vv!lJZyFnfp^epfsrvqD`j6b5WTAlYtn>UIUJzh-+>9RAmT zw-(4wZPXoEN6hfFyh@#{L?$atV?PfKFwVYB7V-~R#NkZUxFi*dmfn6T%85CoP>-x` zj{`oH)Jr}Q#io9qi;yUGS4;&A1O+|bR~%8f4&zq!i^nIIiu%O-EpVvqnhHtWdn1r3CXC&!JG<7J6mhZtG5RrbJ$U zB4i({sg_;v)73RA;NV0)Hq=N?-B1-xJ;GbG?{=$O`?08pM?90^hR0&4M_l{_W+A#* z{7sxC+*W%%>ROCZi!++Ia^BK!!P??W-JV))4H=`s&m&=BWU;?0EddM&%NwhI(n2@m zIgd=>InULztLd>qCMT)a$Y?37z$KZ;`LpC17>>Eym_omng|qL=(?~tGL$=_~!xfJ= z71+LPdPGx}hiXt^6e0DgQ&(I6p3aJnjljW`sEA`fdMa!@fr57M6LT$A zYY-NrTErjiX;LASIf01S_d`1}JST#njiU_}y*Exu1r$?xPk-5-4chU4kNaZ0_u#I+ zfZUbIkQE+BB(h&h29yWnqnix@@0Q6R#b!0?-RAqSzY+noQkHCngM5fgj1cA*s8SHr zmB^Jn*D4wi?dZggRDLpXAQ#zdx%hl4cBHdPHyuG3Iq9%5w8WsJ=kf!4(=lL2hA4~u zL>MyuTGn9pRh&WqGBY%PxcPlqs*xW#65P|&A$z0swyk97VXTPf<|6U1@f4waZ8WPB z4#;ijXNYD*f&6xC2T6_qI0|<=6@ccB?N0K->ArHi1Bkh#ehg6dGP8Lsm1SV(rp+S+ zRBvW9)qhZ*iIb+{p?Ae{V9^3N2a1!>1KS?j23C>I0fq3Hx}WPO0+W}v3H+Ao!GbzjMMIMWw!`Rt-0L+iSd_=*#+cWwBa)@#|m725A^1FW0%^qo#@&+J5AdM8A z^O^hH(cE=I!fh25T*zaisN+=k!eTc{c+m*1Rp5$8a@=#C<(+9Am6fiX6E98`nJ+A75>5(mhs^$S zI}MbJTa;=6@)cr5iyWSD%-@d45lS-es;@*Xg>uPZP!t3{w?YJ8UjEA^8_(^wSAv{A z`Z@r<1~NWW)BroA|<4Ku~2@oagn69FU9ILHF9 z{J2bSf`ZGxRktA;VrqrdX+jQ1Mw)Z6iTW}E{5{{PY>!(B5ayRi%wEE z8L75^%=?4jQr;Kcp;CfoTir|agmH{%**Gj>VK#C7Kr5v;WSCOCPpyL*Y6{9h3GS|~ zuvd4SOGs#mI`m+ax_d!VsQE$dT=O(eH0mUOF4DwLGizk7=7ewKP&!$6B-+$8h`IJ@ zQwc-R{Xf=Id{sKsNtRQKn&uaTIO=5|J#^;0!Z03+{;ntw({IFM^taP*n(L@zmQZfg z5UGbw%YBT9G6?VJH7=8L$y5vys>PmGWRqq^0hK|5c&6r5t7C^tXFexZm3hIpazvohNP#7Fo)7uU!wV$S_rQE&e?%0LQEn0qBUba-;Lu~<3oTjRNRi`Fy`xHOoigv@F_SU3AD1z6?g)inEmm9t#KoK<{iRTQN9 zdI6R>uB}C)nFzdXPX#%gS85=Z8qErSR7sA+dz#=V#!9|h~tFAbk=B1e* zhq(iP5i0mQt00$lJT*xN=zxLUI|#Mby(5`X@9O?UsQ31ST3Iae4v>>_3(^*&>XLR1 zm7yacfgj{7mBks2vqdQhObk!K)jhgrNKrC>PnM>1 z2zk>z5TV>w>WH=oJaE?rw5g{#ny@3TX|q?Cg>EMWt#S4GOc@bEip1s+=lsF7A+R=( z?-KYjOoHl8Zp^d}lPf`Y*Q7U>03iyNR+g6(Ra&qhEqP>zi$wqOP+j`$2Z=Ee%aQaO zJCgYU9osYP}O zTyDmq)UGV-3S2!b)Q2_Z)|~bQI_3Jt99nhW?VpeHjp--z{%fq&MnE`!hf}Lo5tE)b z3l`F`v5`Oz^IcP)+oaPP*&NIgNDpe`LJ{v6m!bmNb39fhXnyCjkFwbB>jTBskkM*E zMy%X4bkRH~k5#ExSs|D;h&fxHy7siODk$e#dZc1=qJyNdhX$i%xV()$4g;@(hx_Ja zj*^zWCZwl)Ye~D9_w*KjWKHQIX3tzWjP8}|&1#A=2w&suvZ~P@59^(6CgsNe6J;lY zmMXRj3SXr9wDo1q=34T-K+x+DLla>zc&44lt9HIP)rwFn3Y7nZIly{DXH}sN85ye? zMeW4f3iNiyD9}%s8M_H~)oRZY#sG7iILk3@LlB#t^?X=+aHXDqaJYVZp6G;jz3GQZ zk*SjxCcH44Pc(9ULL|Xo?EXeG4n-JEyXpJZ+p6k}ebhgy^U zKv$}L9!dGHljMD+rd0q4=+00l?_kOm#D@x%>ogTYNBMAC!I?(m-@22gIm82TeVHv?gR2xsd)jFh~^`g!+^%z_lv2t?&mC-GN!^B~lKBexu%oFTq0q3%$R zyL!K`w5k9zs{$ULw)6Yd!YC_CoH@O3WfX8+4XX7tL4ne50ZJu`nYC*Yt8nLrx3f_OgqhSsDL z+i_JRoK`%4PY)+w<79dhfj{MB$dVv6(XrNTXhB~?XAM)KPB%P(cACwa!OU6mU%wj3#>MaE;?47evNU%`Ms*S5XjfHhhTabocqM7D><9w609_6W5 zMKnB~wrF#c)DLPW?@1k&hfY~#>H##C4{G(%(>Z*9Q|V*n#qQFgJX8B1nz;?Tuirum z?OG$rvPJ1Yu$J=@r=`~l%-NHEA*N{RgM3{|8J*IW*)>|7@oz{}Z^^bjsWkGqs@SEy znY{~ImFh-Wh$PzWnK_>)(YiA;>?Jj!y8CZhbJ*%0r|Kw|M(QQ6RJ}c=%WWlkP(UfS z8k#D9$a6~w!+W-P_v#-lqy+V0p$cT=>Eet#klTz9LO~1K6NZFq)uN~ii!7fnRr!GU zB$c}sZ6N>HzG<^tY?T(roK&u_ZJ1`MysJv+?(th1S9SY9p!wM7s5hwG^7loYK6%k- zdDsw`AJ9uRnLck&`d7b7)|_R0R<83Pk^{?sw_OKigh~FI>-1>-?hwU*R>u5V4SpDr z2mBj0s3AiiY3Mh*1T_&8e*drTc%09uvkG_RLKOKti59O(*jvBk!uNr@JDwN0N?%wN z_oA6+vuym{a4efvS%h~{Prbilu6?2#w60FMQ z<;$0epIO8Oi|CL2d)Hol{zJ|l#;b@uT>X3{^q0*3wQJd%TRc$E2e*eS^Bci($?_y& zx9wFhK5cIQeI*2sL?rQloZ? zV8>A7WB7f-*Z41gtF}53B9lBW3m3v9HzAz6ebwz0d!$Pfn3728tZimBa_f1_%Tzkg zBa{BG)L|ncfFmt~3c+XH+-}uCq21SqjZE=Xk_89E9aoI39+}|Um{sx4JejJ7e_+IbpejYDE7xS2Wc4qUaFqS`m9aYDkD0D?4;-DYi5m=t; z>1fRpkv*b_c;dky?CE?7{IT2J>Yf~*L{Z^V^cMl&3yx2M>yth(qUR;7F^`ZTLWf@s zhkj@YqY9|mvt2WflN!jHQ#I;54r)ImK?K$%zGGVf1>b9Pa8*)Td<3^YjvlKyF7d9X z2qWEi9}KvEs%=%bS9{ip@}1)uS|mL%Kx*gmng*vPoh+~K&3)+P0+!hR_*I*QohL8uIjY2vXB7E%Go?I z=-w*U*5gQ?AkOSG52|?vAN0E;L1u^GRwJqv2kvgnr3VOIlDbplMOc`-ZF+~8Bb-l7%mHo&>bv;tB>_C&1+t{ zW=MRmYbz=XFrXp1hoL%59u*W!86g`{=8Td>ZVm=O*bI7P+xp>wz|^70*_&t3BUQ65 zWL(mJ;g}@C)2Lc~Ug!?=wkD-*1E1-8KV$WQ)e}Qxf#;Uc3!qAdxHkl$`(RWC#$mYa ziFbx)7Z7+*cjWR&Pasf_-a}#`!so5=3S_5~5vQPN$I$)gbAe`66sfD%lTv$I4h0u$ z>K3uV)pSGzDIyo-k|bP;vivA5r$Dv?_B<+oa{Eow_bq#A048z@NE?*FmIJTtQ`8^8 zEyhLD7L4bX2&no^-1Cg*ak3(@G%2;|KtBV(C0!J=scvDx2y9T>kvv%dnHpE0$fhHH zL^*gF#>r4jh1+~PY3JRMwPbXw@Yl1gYJ-0XOC0?9+jYprLXkGdCb5=_;)us-vUp&B zmwjN;_#J z)%b-$RznpIF*4Oev7@tR#Nki?r)rpL(8aUARzS#W9 zhz^~FC2+V%7gtv`xN(?w6BwQ@tIcJrLpY9jRdyWDYr6o4ctU?&b{ti6x*&yhDclA7 zdOS51WfZp1)7n3^5mp)fQcu64hq_NU><*T7eb`TPxE(fv8gMECRguK8mtC4`F%|4p zwVP_&^kiy9ONKUWZ+u)gJ+YX70@5voX$F(2|LsPSGL$ly>t;fhbUy*#6?n2@ixNk(2C~|ZfU*nN5EuEStrI4sy0m+r|w!LQ0wQBT##Br=2j)s9m zhBKThMER)^Fb^%qq>AoG0{oL$HtdJ6F~?vR9|4)tqF*@{Zs6nkC^yn3d2TIy>GvqG^E_~z{XTr8U{`hxZ# ztDYk=X#(@`e%IEkyS92~r#gFEp3?B|4pq|%GDU#_)RonFs?5NGkV-0GzfV=Db;f5?reZy5}>U6vlZ@kGV*`u9S$!bW{)r-zXEE zG#N2F)RAQIii*l5>sG*9c>5@!(qH;r$%qf2oMPO4t^bGOx615 z31qTZH?1Y$8F^Q{_qxGX{tB(M2obBwQ@^}2T$o_f7Khfvv^!M80Bp7pdlk69KCt)8 z&UFOLgG*-IvR2O{2QxR@Sh;DQi1AYGq=~j?EqUro>5W16H%M>2P4Lody;jhQycA`B z@E&2%sOW0}EmUJD>-kEl)8k*H^;U*OsLt5)tXTnsL-uqrfM7RRa3V$t!U6ej9wvN`W9$sSybO@F%>|g z{#jQ{w&X*Y4k5UA#lA=(Fwxt;Mcm(iG)qO%1D2e&sxjP@OS70=axH(usc%-NiWTQA z$9f&^j*YpU73lj^FG1IEf9)mLtD`TP@+ERap7H1pYBurNs_1@W+>~WRZ?7&BlW_Yk zDKje+KTW%}hZ~!W0A0@lG10B~4L;=lCFbwM& zfzVmy32kQjjTc!_1|<47G_kpwWY(g4QJ9%e{n73sAeYkgd>H|Q>0S%iG!6LqUF0dl zRA_b9YkQ)*zzmy`3!ZO6bZ4+5;9u2tnCWGWOs*kOMP^>?BlCW-F6p?hZ?FD|KmP-1 zg~ptd2_78*Hj^hFM1OMIMi$-kD|%gNYn?r!^XVBNbHk12*|G5IP$XH{kCC@dd&0jaJS#EAb+Ka7n0p&^TEm5>egYm zTXOTu&+oUcA9~K;-o1VM`d@E;A$a%K-9I*gpVBxn?~d!$t}gdEjZ@ZEuD~( zy07j;tCobE;w1g5XAW!*M0VmV$)Rm3(wzi(x8*5KlQ3|0H$)1tCtX9b>Rc9iQjSIA%79U)$S>$oTcok-FZY)?pp)Y z_FQjY)W}!1C(U8CW#H2|8XT2fR_`+%OO?kVWb|l1C4l)fNV)m^gVVO#AfRdL z$4=AgRF6B%N;^U_({u>yWxiJ&k9!r}N!OIvGHi(|cRuCf+!ZJ!6rO0?rX7Q%k8*vS z9i_n(R)5YD6V?OCo4%ETlHDomNMp7sBaCoc~m1yQ;SWtg(Iq4by1eJ9*io$Xk`UR>;2W9_b*)IPwr)pTlXG z#>;Bu3Prr3+vxj6wMOv(#4sZ^sAvxb;K@REs#Y^n+P^G5qLz0z@+E0%1(|^dL{HU6 zomeozMRp2kPQtzRy^%EM6p|$uu zm^a{au@`k$d`9wt-RG>$Iso|H1Ci$}7m|`U;;?0&lfggLJAii8BSQUQy8zIlvp{Vz zkF}FTG&EToYi9-4F`^0Jc&>J;raSd(oPS4GDfh>c2*G4emjuc^Bj_Qt6Eanu(N$O&;M_Fe87ue`l#9RX_ zY6bi^)X31eL({g6WjlMmuL>i!hhDPjPzCqHp-#O=qb*?EXHY|9h1`qBG2E$*W=s4< z88~@U_7w;WOp1)Dp`Q2G(kgB69JN+P8SQC}iem6dnqHa3>4bIK`73Z# z-m6WE8X_PowU*VL;0|lodj@n^tep)}P=iBeftJHdw|Ou-_i?wa$Ewt{C(o8t5X}6|G399(M+nv{r%L z2~@ARsx`oOrUVL>N>XQC-y$_-QQ_a)?T~YO#@dpYs_n2VAjRY;!sHPJqezZJJ4acA zNt^A9UN_U=E_gbKlpVKDL4O5(Nhag-zN-3C!^FNgXjA+UyyOpnd4Q&@bHfO(pTgs&~XsGXyP3D zww!0f9o|_|$=dDNL|3SfJJ?tC`H9F1a|#MB49tQnmSLKcN1Ex^Vt;WyoqdsJdd=RC ziA4pr&rpo-n^9v7G{darcpG{@nx9+rhn~vPDr58T4H#~yo+oHTdN0xZp9hd1>OT)232k7 z7H!BETnofY!)v~k-JFO48pDGtWrFvE^vMYZvw0AYxQcQ+Y&F0|iIYL}46!y%d#CM9 zAx~0o*4&XLLuhVb3b}{gcd`;xttMkYC> zvn1(ote0g-*d*P(QAJ5$s6`R@;d_I*8e7yAhkkNR;}gza6O)i4+>PI zz{t*G02dC*Pp&o)$A;-(6RDfoDHLeU7F!ld>O^Q>I80;Csl+}PotqCv> zDAy3Ay$Y7?a5R{tV@n$V9E(LE6ZEvc&~*Mi)8O+PRDX0}dnqK2DvM)Xp<_t4ztc#&kT!SPC}&(>d(&DmOP0Wmc(FJgW``fyJkvak zzjV8T)2FvaVwj}~`fL=WiWM!}i@Z73s1vFE_AQqizcCqCP#~_lk{E)ZC)>k=z8OQ( z&Y6whv43ptpf7Y7E#@#U!i1MBXA~V`nKznr)nru(FtGe?=?-78%E}d{SjT(5%K@Wk z?WxZNqOxCKK*tQ@v^O-?pL_$25P$*sh`LgAI%@4=Z;oMMpu@|ePQz%b({`_@0m8k8 zJ`qia35IA7hl`mRZ9}MqSKx`kAz;fpnDaMDvVW?OCbVbJTiHFVsyvCIz(=0=(<6#D z2uB?LFox9H@<@!VwI)nj%<^yyQ}E2)$nl$QIFH%cZD0{<{0l)!;r(9~AtmdR>j)jU z!JsqFL|He)%uFkG4h+?FX*Q;B78lp!o&B{;L?E%^N*;!a`R37FNujU2^Hb3jpD=ew z0DsUI;>o;#{$)+ysym zAm#CR?-hoIv<^)Ua)malF%>mZVN_|R@l$b@cH&(JJy75N%=t`-ixr#}9t9 zN|)W!E>`BWJ62R<<~+?eJun;3pn+kyi)|h=q{r5 zDWmb$WkDD)=kMaK?X&iQ_`yr!V?Z$9BBQV4VK(DxyPtQP|KR8Urn3d|li4U612-`^ zllLe>e_7jd+eQ+7*H_HbF1RI*FoU}{r3$0Swo zdBAQb=i|XpdbV|T{o%vt>iY@9yZ@g4aOBE}2cdbleV$f58AsTdM;`4xbX}VV5gR(b ze(?NXqYpQi=M(c_b3)u43aL-Q!_cKOSZC|1C{>>PN3n9H*gP&{R;bdvDD3*pDCBnF zf7d45S)0eFwHgSQN0AIHzKDx5)~D_E@@#JVuBZ>5q-DmgX;JC(puJAVaEvRaw*}iJ z_%=XQu_qmFHNz&ype_IS99)&Uz7Hmo8Nmdms+tS{MPF3I;=CWC~ z*;Zw&PgJh(?!4fzO7HGEu%&ho?GR}1l2vi8*e*}XQsJ%4*az?JJ6KRC!o}&RZF&T2I<6npH`2NGhRt2NH*}@swk;a3Sl3e>e;)4X zHzki8yNTXy-Yw~HfY)4BTSQ2uw6*W{ z+;-qDPjDw}9)E_%eBcDI%@65_1ILGF-NR#;J2<-&fAZk39h`l`x)(#wtuv6Fve$8g=ui%5;Pi<@xPSq2 zLke!FV|3dE#pBX<>cd*o_t)bCLXjXH$9EbG-C1WDGICq8`$zUR|84$Tp3K;Xc=g*c zOE%lJ+89HSK6qd{2qJU*EWiKxzj?~W*%FD*>$vn!shO*B{n>?v>JYT5f1xZw?uJf- z|IxHNzsrRmHE_MSzB-5(vLlc|#|y5jdD)^9v$qDek*k60;BL^YbUg01kX#5iZ1Uc9 z4XbKH*tA(f9~1BZKQ-_;{;|J?-%(|iz=iDWn9UXYNY8kPf{>yu0d=m~`dnbPUP3M7 zy&WUqvAua`6=wq(x!{k;e>(nNJ6UfJMize9JXEFSDnl$jaB!`(g$w?h>;?#hEu^Fh z^oHfx{Q#l2?I^TRJy@L1YXbEgj|h~_>Z$_T+$bzKHy9KlZ1FlK*1lR~Ig5dgWR|7F z`?yeZR+QB|AtV@6YuNV4l7Ly;e4|=NqEfcpl>e|FZ2d|@N_Uogf1|v}Vc)FEa$CGP zIhkh(&+>r?kU5UDmM1Vc2t;tQRVx3PNv&mTLf>7}**Sx!WD@ zY)+D*s8n%!41tKvVz#Z;YpAqeD^hEj5nD0@8@pXaINaJLBJrZ_88!unBPt@2GZU#cv{-)gvtlQrqAz4~M7g;~81ESzr>uhh5s zD*uI7X)^p}f6eFWR6BDz2GA5bC&LcwoX5in7QSrD171pnOv-LFAjtFLl=Yp;ljw zE{l6fA^I7gnB-jK+2$E?T>E+C2*(ndh2r!Q{vn;*f3RP_uWvq$FW$YMzSf0ISn z{DZePe`qci`j2;4w`{b~{0jxO(iLHN8cgzS;vkuKPWJe+>6}0CdQuJ`0_bSi@}GBwNHi;_F^5 z_Dm2CBiqCcJ4OA@riH^D#cj@#RGYKPw$u%SI1#vA0+PE|Xad!uT2r?vOj*M#?57K; z;@c@3U43Fd8CoT|<}_g(jmM)alf~#CXfL!!0e9PRfc4MaUT+nIP02^m7Ht8G+WCouNIY?9~+ys+z}T%N~i`AA{@ za6UeJ4_gfOJyVO?MU2~P&LUENdojH_pG?@>>oFU#8$AYb9F)t}G3HXAk){`Cx0jqFC|`AxWT0RueAc_F&j7zlG0j~JzXbx(CW>efqklS!*&Qje@~cd z_ItjM*BLs2dc4!6CO5q2a;NRyE*6IMBz)%t2N6%RlC+01RS89Dx7!VT&*ICp(#kA^ zC|jF7i<8sW8p*cRot&Su(dFcNzt`{T5SsjCtG(_4^{Mbf}0YWt?+cz|kv%nqzn z_1uYmK59@;*;$kKmoi5;48fxNf2PQZblWt6s9OzxYAYGB-v*V3rgGF7!T30z!HHS6 zHZ62m7s&&O^4U75{SLewv^~>nwVw`X;@#5#CIz9&Bl}P2Iymt3^PnFJavqi62QmgR zqxXb0TQ%b?_h7t55Z!k)vWoj*1U&Q{jc_<^p^98R;j^|X9Tr)Yqc_UcfAC-iQ5Ub- zIxY%;wbD(+^VSv4gsaEdy~;~=#@YFNsWZw4DFuy3ZkKE2v=Sy%n>CCWmtbng}~k459M%8eVz<>!a#R8m}!!fnN(6BT@Cf?CDE8DkTf*F9soXVqy29p$yns z%RtDlEi@iz0ySsefBQT!+|}O(*lwlLgYmAk;cd6!g}Eudk{0iiT1b~#B%O+$K!eY{ z<_2ldovD)Cx4UspVMy5nzWv^Z4PyAFQc{uKsvISTtoMxSHyYPydnjSsbvpZH(AW0l zIG?i%v@+`=gS0`rO};B;Ny28UIFDx}&C`qthkCOynlmhIf978&K=2Dxj;g@b#FUQVinOl&-$Mfl@L#c2v*bz5IYVn+j~*n^ z^nspPsr44^f1rsDy3H?Ulv-pP#Z;b?U{ysCFX56^ThD7@=tkW3o7g#xu)OaK@OjWy zO+(#Er9?<|W7&SKvHMc@p+73y6PVAwhyZ-jiw=|A|9X;t51G3`HD$six%Y>YTt)_~ zJ*X1ONvQe2i4%1Xn$ARN&58Q5sna-HQ#(!rrDP4nf17S^o@r(~knsZ84P+}Vyn0D^ zyX?ay^uxnlfr~GppQPwLQ@&y=70(Tdk1dY)P<~bUDNk9 z(H#mXDJbeKJ=vW5l@!=3DTASKJy%%I3zq(9?>XIU)urXmr$;~H=YLGXb6As^HX8#o zG&YmBHbH;2S<7v#g_%sFNytCHsr?@ z7G&zd>V9FqVI<`wjUuvY7M|QMSN~lw7EnexUao)E3l`-;Mq{$tFFt!k-`slac1b?n zy#KiLc}%^Zu0MSE;g_Fp2)_Mo^^Zlw^B~R4x6^vH>${J+J=hPEEJ$;L-+I*p4_FYH zHO@Gm2C>V?)5Y3(FNpwXxWwH9sX8~hmRW34oSeO76o}0N1l+RsoJh5cS}wKO4HCAH8MZ=s$Efm$6!oU- zt6|%aQQ33f_1f=u9~pJFM^V5N8-lemg2ODBF}pW;=Y7v+E5m?=xr<$J9yFvSQr;y& zHis>IDQt7Zei%2S90$N21R+N9gOVZtwc5Fmnm89DZYE98ESqALH%-i5i zJIKJsX7VCR)Xry4u-BdVQ1s=NgzTGqph1{L2Ens4Y)XEbspJClRZ+bGk?F# zgFH{;#4F@bt*dU7&fj5M45TbH4yu6+9jP`z5YW;!f|Om`iqh8+@QpRrOloXVdq{tB zCx*QcEvb*ACrHt*iEN6xCfCcz;&JuqX+Tj!XVIjWMw7q2f+%T<9#~L;dhCI+?taN* z@3E|kn%LtMQ0DT1i5Fmk2I-|;ZO^*-wJ>AsA@MBE0Xw{Tm3u_SQMTi;nwqgDa2ZWTCrEz zHFs5Ow$?cG|0HUOJ;R52EH|uWt+`#k3Je+~7l$-_BQS8*8MPJ@xlWdEE(1dRf3_MR zj>9t`#H4C=eW!OqbJgUX(jbcxX3u`mdxh8~R4?;@XE`{=yp+T7L7ZC*c_@Dp>{|;( zjV8M&4Z|_I?P4wCvsDIfPgqAWgXUp}tic${(I6OS6SRVu8i0d{hQ6ywBbu&10G7o@ zxRZaZyRIRR^?-&7h#mCqeyQ-J`W6p^kU0{Ksj=wqtvbI_hhJg6vkRZ^fnQLTwukXJ zh+Q+=OKoBpWkHrZ3lV8!Ac%jn8;9LEfa|afii2g8xxxb@>s6~yV3b`iq>0{1auRgh zFh5OB1cUQuk|XEjaP@{c^olQ|KrKmAbK`DZ3;>rcwj8uPh`CZA$-H-Fh5woFS57QNxregtS_Bij7_GxY*qtONnD?p{ zgaJ_iyCld)8zScf{3+H?5c8yg@z-PdH*wdG1z3*19WeZ?huz%VyblTb0;;dMNZQg% zr0rWxrkZw68yHi;Ey!A&wlI`n&iM&T(kBf0*{i#q!iS?#8gOs>I7k!KT*WbflToqKn8^kr`m2%9SkWT2QgfrdM=Q|Ka0|gltw{B ze>nk^hvzj&m9ctu$l@?o1%&-obH$Mr{saL-&Rr=uX&+buF~OpFM?J834~Pg#r4^Qk z)#GvzrU6gGskwi4vsF=mS>BPn>8Va8C6)+%B)I5ny?$jX+)*oksnAd16EoO|l`O2Ax)g9Gi33sg~Lw+`gfSELvvl=I1Ma z+BXaGkY~<0UyCNxTrv^XOjB2|y6yaK82!6m6pHth2g-jPE$tz}5zE}gsj3Hr#@32< z&JV-*XkzoOS0({T&a86C!>O5m>W`ZspIv9U5jf(p)#U-F+YWIA=1l%|o$QQULJHii zf%=jgL>-1L5GBjL+6}PZ2!fP(2WUAZ`^kUiQDZF(;AoV3#aIuTUK`;?&=?b2p3X@Q z?L-4eAYgw5O6!Cz!UPR_0@;H_V5UAg*Hm?JTo-iWn9m*p4!%$_r$@~mY&%sB*otts zDOE{|9g0C|AykfhTYA0pU888pO4f#XE(!QBLyTw6vdo{bUSza!G-UxCk_`G%GUhz|a*FgQ z1q^>Ed!;XWxm1UX7Z8YJA6^kj}V-Duu=hMi4Q$T@g?l5t^>GJ6f|7m7^v zlw{UJ0@x{ur;bfA(S&x?$K>W%cshdktr>rFis40%a%hCi1}{=KW6yYmBcjL=`AjB8 zWH2Q%oCAnHpdK;sYfh#ocBFjhADbjo_e>- zO8=eG2;`#Oqn2ASj7?vhGUU;HqY?^RjM(Ma_kc)!Fqh7=h_=+8D6Kv#?jYjUQx|^` zX_{Y&z19Nh(#gYsi*gwBRW75HG*w-z)QoL~QJ54^b(Lao()C2O8+A8@(aFdFbd%I2 z$1`_Z?%CX7qTC>6+l{>p$n`zC0seyS0p`)6q-K-8+TbbLHvB^z+MxmuJGOEQQ6)=m zIr*V7i%q#8AUbtgM&aat>VIT>clv*S4AU3(`hOA@cJ6*s57m`YCu%b}=^PpxW>XXK zP4mV3J*9l8(suvx%qC%(+`!q5KzE-6rwlW;&A12r)+la4?{ ze~;s~8GZM!Ao5bVSaU_{-ZlZYX#zCpCfn>Jeb_A;S?1VEba6y^yv}dPkM8+MQIa(? zne7w^=D`??BERc7=c9jSJ{QcVzu~i}S1-R!*j}%EwqN~~TW3%d>(W+9f`BARl7oPx zo!Ly3w1AQqafu2NL=ZvJ5|^MzPAfTs2oePZQKBeOf`A}PRI(@_(Id%^^W9T*u5hdF zx$|Rc`kC&2I=%B_s=A(Op8vc;c3I*EDMpDn32GG&Y`L7D#nfIcQ_yZp z5*|;eG7W>wJmsxO+gQp-^4#*#t-oHiI_bZ*>@6rbwY!)0vHZH<{)-p1s|UOD#aBh4 znUA+8T;!K`*2f%Cc;>fax?qTI)sl{Lr`l~c^w(3Jf^`wPc0L(JhGj$14OiPOhD?Wm zl!hAvZ2S$ijAo}juqCJJYZwO{_Zo8575pR#zC17YQ5KaxOO!a|vx0 z1m0l*Wtul5!8z!$viv?jMe6!No=iip819`!zk_*MkK*-%50)gIt)fN7vrYr}1W6p@ zhFfCsY=xP8@{>(tdvBz!u2njXS0X0Iy~xOY%>0w{5G$G_U#n^Hrl;~tormYe8=9nN zvgB{ERr|R<79l`Jy&LQxi%a`}pg!Y6h_$vGvbyo}nYd(BP45ji&(r=z|8zlt{vu9(2ClPh2 z)p9uttrx@aoYwTuq<&gouo2W!&x&$T5_(CCdEv{`7Km=GiCHc#?V&vA6h9SBh>(Zm z<&Us>nd_g%pw&`r;ZC?l2=v;9`)nAOGq`Won7tZ**hlr2>S%5%TMHNS7+ zC7V6UnAybPgvo^kL>oA7$t0akI2+ZwXd?ZmezKtP@>x$y@!-d9JQapRspA)Qr8!7a_aeZR}eji;Hc#zVQIkK>$CfCQe+5 z^OaF6*V!emq~Li-8az)rnL=mp7j$UP1ic{1aWTYUwCU9v zPQ(AE>4S``D#XV2Ii;jBo{*&6u1?tf0#_BP*;-%-EZ-Y>x&IXRjyyy1e*5+FA0rb$ zB__;ke33UhP*f^VzOH|t4$k@AQ7ockJmZylL?E-PBXnai*5L+txxs$7Qjful&1ks2 z3~r?LGkBJ!Qe>?hArJ=wjIPkF0yO~t@QpweO7`B4vjhj73`L%|=JRk{k| zo`m5!=_Tx17#Ux%eN*kqMYuS9sZkHu`yphel6~iuHG`V;`U^mf0EZFjsbxT_3 zB@|z9zy1zSbc6)4Y;dJ(`!Us)dZ^V<))N-x_+|xA?2MNT>uCw@Svrn|mi6BA->mjI z{NB9BT%9bXs8tO1^x2@}Gl0uh&wQJY{XrIJc|+)w_-I*`3I!q2n0*M&=;hLp){x*z zM#+&Dbh?y9HVqN1xm{Phl$-nZeGuZKZj$DnTS|Sev=(KbL_FjSn;*L(hRc17SBD!; zy0io(=h@3io+WRA=Z5|4#k}T0;h2Yy|y-IKAg1A=2e(_EbAtv|3N@$J!MJ8@Q#{hRI^?Vgi9tI`h}6%W45z1#R%AI)z7 zO~H@9s*Da%BC4o|e;8}pi^T0~_MekaB(^^LwKS4&j(Ixe=~}SxQ}s~S2@CyOT5Gfe z;-A`;U!~)MnpPG{KB?QwWw4Az@=?*jigNnX8-C9BEL^vq3J82P;icWB)Ap1aPg-o0 zB~3m{_E9|TpnKfJ$4JzD&AZi^Oc_Y?e5$QG9&nj-B^n+_>1B&gqG}T^l z5aAjEgee%xHR5H?jk{C+{0r29#`r!AsC;m<80(u!LGRf&;Re#hI$7irCB=h(b@lcJ zPdqig9U?Iom~J>m7M38UixtUi5bnyM>lsuteZWgHx<1z#eAO69vOiS|MfByiI|9s_V4sd5!bl1WT4oCHD3A=Qf>4)Xd7>bpsu0Bk9ps z8S})nIJ{pJVRe=ld0IoapG)XS=hp}pK6$TDQTKiZi4}$H)TRZF)NpzT@1&_l@{cXI znh$bsgzzlpipMn2At?)CVHYa*mChz}*;Lv0QfM2O^99Xxqs-m!0aH zS@chvT`u<;TW_RLXMQv}QNektc&wMQxFp*+(|TL2V)tytt5EF+RM*Z)O^eW^QwBb$ zwe@+N$1Cy>9caxMQ{`}Q8lNivme-pe=R#nr`?6o?SdDAQAUphHQqps$AY}c^Wo>id zF5_3`RI~8+X!3V=I2^T4kJikv?+SgW&d}zM;?s_9_J?li! zhL4r__8dMiFujP2IjCy&L4yYJxly5ZBRs2(YzgoB+JX*Bz9W-1Q55z$NFkS4okC4u z2qwNXAalQDIIz{%dt11c*{Q}xH$KUmXCzfkiaR!|rZ}g|7Z}%mF!+G?mwzUs*q)1Z zC2R7Ja`4jljeA-&-lH8+%VppcFE zz-mL%h%fIepN=rX0!&VsS6(SQ3+Dj@EjJ-vZ6!&Q4sP!l&rg@R%wty1oJyU*wrvK- zIww+9G}y^!+iRN5*{HxBm09cpSg7aj0f+6%&oCSh?pc3L!m(QIgQoS^?A8wPjY< zR-Apdj{9Tw!Ss7Y9woVa4EdQg=H~@kyc;>44<3@L6TbJK1G2w{y#phfnCL|u^lVvZ zRc2Nsw^J;u5ZT$@8>yv#)h4=Y7~7D*Jr8cEIPo_g$VEQ*FOkn z7ks229W!^q>ZwqWt=>xB!&=UiW#zAwqT_l^Cd45T#q zeOFBPBE1{q1Mw-dK`cz)-Snj+A-pc4QP{JW>_+j1QALrX%?TzkSa{>9zP? zZd<)!#&?#TwJLi#^K45_Vx5)mX*%=2hhlzk-w;^rjo!B{N;vs7RhK#~c!{7fFVx4x zA@fDHU5&brtLUuj-Elj2yioXXvo&PkwYJp8iK^xHno2u8_cYHAM3>Pk zrG%)`5`@u5O5cyrDdg-G)oH?5$&yH|xo>DK-y;#Fob}A~XbuWdcE!`Twr_v;&l=s(_UFFs(!QRe8A#~3KJt~aJHb}9>%=#;j_eA-N!fyi2EU1Y zzll{Y*iP~)HC)C?AzQ%K${J>EDG5Nq!y8}=NJ0)TNu(7LiGo;zwjc;2QkrOyAw{H# zO~!)%%pl!Fi4K$mVTJ%g1`d&dqlil;Qb!PBQ#3h%mI8@ZrkH=`wcAwv!as@ke~7dy z!0hQs6{HxAw94Tgx10T4Csj)~8&Opm5CR||hq(g?I0TLohX5iFh{&Ou_Fe1$s6lkJ z5cpR*@fOmGFeHla&oV;zocL(|{{e(SK;S3_K#|C!7zBjD(jk$s!;Sjihye&3dK3czBkZ3>+gku0T1c*{nL0}I3!!ZyAx&NwRPNSee Date: Sat, 12 Mar 2016 08:43:16 +0100 Subject: [PATCH 3/9] Add the paper describing swarm 2 --- CITATION | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/CITATION b/CITATION index 326c836d..4dd8ca23 100644 --- a/CITATION +++ b/CITATION @@ -1,8 +1,7 @@ Please cite swarm as follows: - -Mahé F, Rognes T, Quince C, de Vargas C, Dunthorn M. (2014) Swarm: robust and fast clustering method for amplicon-based studies. PeerJ 2:e593 - - +- Mahé F, Rognes T, Quince C, de Vargas C, Dunthorn M. (2014) Swarm: robust and fast clustering method for amplicon-based studies. PeerJ 2:e593 +- Mahé F, Rognes T, Quince C, de Vargas C, Dunthorn M. (2015) Swarm v2: highly-scalable and high-resolution amplicon clustering. PeerJ 3:e1420 + Bibtex format: @article{10.7717/peerj.593, @@ -19,3 +18,18 @@ Bibtex format: url = {http://dx.doi.org/10.7717/peerj.593}, doi = {10.7717/peerj.593} } + +@article{10.7717/peerj.1420, + title = {Swarm v2: highly-scalable and high-resolution amplicon clustering}, + author = {Mahé, Frédéric and Rognes, Torbjørn and Quince, Christopher and de Vargas, Colomban and Dunthorn, Micah}, + year = {2015}, + month = {12}, + keywords = {Environmental diversity, Barcoding, Molecular operational taxonomic units}, + abstract = {Previously we presented Swarm v1, a novel and open source amplicon clustering program that produced fine-scale molecular operational taxonomic units (OTUs), free of arbitrary global clustering thresholds and input-order dependency. Swarm v1 worked with an initial phase that used iterative single-linkage with a local clustering threshold (\textit{d}), followed by a phase that used the internal abundance structures of clusters to break chained OTUs. Here we present Swarm v2, which has two important novel features: (1) a new algorithm for \textit{d} = 1 that allows the computation time of the program to scale linearly with increasing amounts of data; and (2) the new fastidious option that reduces under-grouping by grafting low abundant OTUs (e.g., singletons and doubletons) onto larger ones. Swarm v2 also directly integrates the clustering and breaking phases, dereplicates sequencing reads with \textit{d} = 0, outputs OTU representatives in fasta format, and plots individual OTUs as two-dimensional networks.}, + volume = {3}, + pages = {e1420}, + journal = {PeerJ}, + issn = {2167-8359}, + url = {https://doi.org/10.7717/peerj.1420}, + doi = {10.7717/peerj.1420} +} From 08ea03457ad59c143b7a9621f532733fee7cc114 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Mah=C3=A9?= Date: Sat, 12 Mar 2016 17:26:20 +0100 Subject: [PATCH 4/9] New organization of options, improved documentation --- man/swarm.1 | 115 +++++++++++++++++++++++-------------------- man/swarm_manual.pdf | Bin 25314 -> 25324 bytes 2 files changed, 62 insertions(+), 53 deletions(-) diff --git a/man/swarm.1 b/man/swarm.1 index 55482dc9..ef277e3e 100644 --- a/man/swarm.1 +++ b/man/swarm.1 @@ -20,8 +20,8 @@ algorithms, with arbitrary selection of global cluster size and cluster centroids. To address that problem, we developed \fBswarm\fR, a fast and robust method that recursively groups amplicons with \fId\fR or less differences. \fBswarm\fR produces natural and stable -clusters centered on local peaks of abundance, free from centroid -selection induced input-order dependency. +clusters centered on local peaks of abundance, mostly free from +input-order dependency induced by centroid selection. .PP Exact clustering is impractical on large data sets when using a naïve all-vs-all approach (more precisely a 2-combination without @@ -60,22 +60,20 @@ other symbol is present. .\" ---------------------------------------------------------------------------- .SS General options .TP 9 -.BI \-b\fP,\fB\ \-\-boundary\~ "positive integer" -when using the option \-\-fastidious (\-f), define the minimum mass of -a large OTU as the number given with this option. The default value is -3, indicating that any OTU with mass 3 or more is considered "large". -By default, an OTU is "small" if it has a mass of 2 or less, meaning -that it is composed of either one amplicon of abundance 2, or two -amplicons of abundance 1. Any positive value greater than 1 can be -specified. Using higher boundary values will speed up the second pass, -but also reduce the taxonomical resolution of \fBswarm\fR results. +.B \-h\fP,\fB\ \-\-help +display this help and exit. .TP -.BI \-c\fP,\fB\ \-\-ceiling\~ "positive integer" -when using the option \-\-fastidious (\-f), define \fBswarm\fR's -maximum memory footprint (in megabytes). \fBswarm\fR will adjust the -\-\-bloom\-bits (\-y) value of the Bloom filter to fit within the -specified amount of memory. That option is not active by default. +.BI \-t\fP,\fB\ \-\-threads\~ "positive integer" +number of computation threads to use. Values between 1 and 256 are +accepted, but we recommend to use a number of threads lesser or equal +to the number of available CPU cores. Default number of threads is 1. .TP +.B \-v\fP,\fB\ \-\-version +output version information and exit. +.LP +.\" ---------------------------------------------------------------------------- +.SS Clustering options +.TP 9 .BI \-d\fP,\fB\ \-\-differences\~ "zero or positive integer" maximum number of differences allowed between two amplicons, meaning that two amplicons will be grouped if they have \fIinteger\fR (or @@ -83,37 +81,15 @@ less) differences. This is \fBswarm\fR's most important parameter. The number of differences is calculated as the number of mismatches (substitutions, insertions or deletions) between the two amplicons once the optimal pairwise global alignment has been found (see -"pairwise alignment advanced options" to influencing that step). Any +"pairwise alignment advanced options" to influence that step). Any \fIinteger\fR between 0 and 256 can be used, but high \fId\fR values will decrease the taxonomical resolution of \fBswarm\fR results. Commonly used \fId\fR values are 1, 2 or 3, rarely higher. When using \fId\fR = 0, \fBswarm\fR will output results corresponding to a strict dereplication of the dataset, i.e. merging -identical amplicons. Warning, \fBswarm\fR still requires fasta entries -to present abundance values. Default number of differences is 1. -.TP -.B \-f\fP,\fB\ \-\-fastidious -when working with \fId\fR = 1, perform a second clustering pass to -reduce the number of small OTUs (recommended option). During the -clustering process with \fId\fR = 1, an intermediate amplicon can be -missing for purely stochastic reasons, interrupting the aggregation -process. That option will create virtual amplicons, allowing to graft -small OTUs upon bigger ones. By default, an OTU is "small" if it has a -mass of 2 or less (see the \-\-boundary option to increase that -value). To speed things up, \fBswarm\fR uses a Bloom filter to store -intermediate results. Warning, that second pass can be 2 to 3 times -slower than the first pass and requires much more memory. See the -options \-\-bloom\-bits (\-y) or \-\-ceiling (\-c) to control the -memory footprint of the Bloom filter. Warning, the fastidious option -modifies clustering results. The output files produced by the options -\-\-log (\-l), \-\-output\-file (\-o), \-\-mothur (\-r), -\-\-uclust\-file, and \-\-seeds (\-w) are updated to reflect these -modifications; the file \-\-statistics\-file (\-s) is partially -updated (columns 6 and 7 are not updated); the output file -\-\-internal\-structure (\-i) is not updated. -.TP -.B \-h\fP,\fB\ \-\-help -display this help and exit. +identical amplicons. Warning, whatever the \fId\fR value, \fBswarm\fR +requires fasta entries to present abundance values. Default number of +differences is 1. .TP .B \-n\fP,\fB\ \-\-no\-otu\-breaking deactivate the built-in OTU refinement (not recommended). Amplicon @@ -122,14 +98,46 @@ OTUs and to separate them, yielding higher-resolution clustering results. That option prevents that separation, and in practice, allows the creation of a link between amplicons A and B, even if the abundance of B is higher than the abundance of A. +.LP +.\" ---------------------------------------------------------------------------- +.SS Fastious options +.TP 9 +.BI \-b\fP,\fB\ \-\-boundary\~ "positive integer" +when using the option \-\-fastidious (\-f), define the minimum mass of +a \fIlarge\fR OTU. By default, an OTU with a mass of 3 or more is +considered large. Conversely, an OTU is small if it has a mass of less +than 3, meaning that it is composed of either one amplicon of +abundance 2, or two amplicons of abundance 1. Any positive value +greater than 1 can be specified. Using higher boundary values will +speed up the second pass, but also reduce the taxonomical resolution +of \fBswarm\fR results. Default mass of a large OTU is 3. .TP -.BI \-t\fP,\fB\ \-\-threads\~ "positive integer" -number of computation threads to use. The number of threads should be -lesser or equal to the number of available CPU cores. Default number -of threads is 1. +.BI \-c\fP,\fB\ \-\-ceiling\~ "positive integer" +when using the option \-\-fastidious (\-f), define \fBswarm\fR's +maximum memory footprint (in megabytes). \fBswarm\fR will adjust the +\-\-bloom\-bits (\-y) value of the Bloom filter to fit within the +specified amount of memory. .TP -.B \-v\fP,\fB\ \-\-version -output version information and exit. +.B \-f\fP,\fB\ \-\-fastidious +when working with \fId\fR = 1, perform a second clustering pass to +reduce the number of small OTUs (recommended option). During the first +clustering pass, an intermediate amplicon can be missing for purely +stochastic reasons, interrupting the aggregation process. The +fastidious option will create virtual amplicons, allowing to graft +small OTUs upon bigger ones. By default, an OTU is small if it has a +mass of 2 or less (see the \-\-boundary option to modify that +value). To speed things up, \fBswarm\fR uses a Bloom filter to store +intermediate results. Warning, the second clustering pass can be 2 to +3 times slower than the first pass and requires much more memory to +store the virtual amplicons in Bloom filters. See the options +\-\-bloom\-bits (\-y) or \-\-ceiling (\-c) to control the memory +footprint of the Bloom filter. The fastidious option modifies +clustering results: the output files produced by the options \-\-log +(\-l), \-\-output\-file (\-o), \-\-mothur (\-r), \-\-uclust\-file, and +\-\-seeds (\-w) are updated to reflect these modifications; the file +\-\-statistics\-file (\-s) is partially updated (columns 6 and 7 are +not updated); the output file \-\-internal\-structure (\-i) is not +updated. .TP .BI \-y\fP,\fB\ \-\-bloom\-bits\~ "positive integer" when using the option \-\-fastidious (\-f), define the size (in bits) @@ -183,7 +191,8 @@ in situations where writing to \fIstandard error\fR is problematic .BI \-o\fP,\fB\ \-\-output\-file \0filename output clustering results to \fIfilename\fR. Results consist of a list of OTUs, one OTU per line. An OTU is a list of amplicon identifiers -separated by spaces. Default is to write to standard output. +separated by spaces. That output format can be modified by the option +\-\-mothur (\-r). Default is to write to standard output. .TP .B \-r\fP,\fB\ \-\-mothur output clustering results in a format compatible with Mothur. That @@ -237,16 +246,16 @@ options modifying the pairwise global alignment scoring parameters: .RS .TP 9 .BI \-m\fP,\fB\ \-\-match\-reward\~ "positive integer" -set the reward for a nucleotide match. Default is 5. +Default reward for a nucleotide match is 5. .TP .BI \-p\fP,\fB\ \-\-mismatch\-penalty\~ "positive integer" -set the penalty for a nucleotide mismatch. Default is 4. +Default penalty for a nucleotide mismatch is 4. .TP .BI \-g\fP,\fB\ \-\-gap\-opening\-penalty\~ "positive integer" -set the gap open penalty. Default is 12. +Default gap opening penalty is 12. .TP .BI \-e\fP,\fB\ \-\-gap\-extension\-penalty\~ "positive integer" -set the gap extension penalty. Default is 4. +Default gap extension penalty is 4. .LP .RE As \fBswarm\fR focuses on close relationships (e.g., \fId\fR = 2 or diff --git a/man/swarm_manual.pdf b/man/swarm_manual.pdf index b26f90b911ffdd17925dfd27b2ae7e9f31e582e4..30e1a46f9491d5d49a8eb9d2c614c1f10adcc35c 100644 GIT binary patch delta 21185 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 Date: Sun, 20 Mar 2016 11:45:01 +0100 Subject: [PATCH 5/9] Remove list of versions from the table of contents --- README.md | 52 ++++++---------------------------------------------- 1 file changed, 6 insertions(+), 46 deletions(-) diff --git a/README.md b/README.md index 6ffab2a3..836ac82d 100644 --- a/README.md +++ b/README.md @@ -41,48 +41,7 @@ Table of Content * [Contact](#contact) * [Third-party pipelines](#pipelines) * [Alternatives](#alternatives) -* [New features](#features) - * [version 2.1.8](#version218) - * [version 2.1.7](#version217) - * [version 2.1.6](#version216) - * [version 2.1.5](#version215) - * [version 2.1.4](#version214) - * [version 2.1.3](#version213) - * [version 2.1.2](#version212) - * [version 2.1.1](#version211) - * [version 2.1.0](#version210) - * [version 2.0.7](#version207) - * [version 2.0.6](#version206) - * [version 2.0.5](#version205) - * [version 2.0.4](#version204) - * [version 2.0.3](#version203) - * [version 2.0.2](#version202) - * [version 2.0.1](#version201) - * [version 2.0.0](#version200) - * [version 1.2.21](#version1221) - * [version 1.2.20](#version1220) - * [version 1.2.19](#version1219) - * [version 1.2.18](#version1218) - * [version 1.2.17](#version1217) - * [version 1.2.16](#version1216) - * [version 1.2.15](#version1215) - * [version 1.2.14](#version1214) - * [version 1.2.13](#version1213) - * [version 1.2.12](#version1212) - * [version 1.2.11](#version1211) - * [version 1.2.10](#version1210) - * [version 1.2.9](#version129) - * [version 1.2.8](#version128) - * [version 1.2.7](#version127) - * [version 1.2.6](#version126) - * [version 1.2.5](#version125) - * [version 1.2.4](#version124) - * [version 1.2.3](#version123) - * [version 1.2.2](#version122) - * [version 1.2.1](#version121) - * [version 1.2.0](#version120) - * [version 1.1.1](#version111) - * [version 1.1.0](#version110) +* [Version history](#history) ## Common misconceptions ## @@ -124,7 +83,7 @@ Table of Content ./swarm amplicons.fasta ``` -That command will apply default parameters to the fasta file +That command will apply default parameters (`-d 1`) to the fasta file `amplicons.fasta`. The fasta file must be formatted as follows: ``` @@ -136,7 +95,7 @@ cgtcgtcgtcgtcgt where sequence identifiers are unique and end with a value indicating the number of occurrences of the sequence (e.g., `_1000`). Alternative -formats are possible, please see the +format is possible with the option `-z`, please see the [user manual](https://github.com/torognes/swarm/blob/master/man/swarm_manual.pdf). Swarm **requires** each fasta entry to present a number of occurrences to work properly. That crucial information can be produced during the @@ -433,8 +392,9 @@ methods, here are some links: * [Sumaclust](http://metabarcoding.org/sumatra) * [Crunchclust](https://code.google.com/p/crunchclust/) - -## New features## + + +## Version history## ### version 2.1.8 ### From 723c7562f1b0b7d37ba9510243e32fb88d97f6cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Mah=C3=A9?= Date: Sun, 20 Mar 2016 12:14:07 +0100 Subject: [PATCH 6/9] Link the new pipeline description, correct typos --- README.md | 57 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 836ac82d..1953585a 100644 --- a/README.md +++ b/README.md @@ -3,13 +3,18 @@ A robust and fast clustering method for amplicon-based studies. The purpose of **swarm** is to provide a novel clustering algorithm -that handles massive sets of amplicons. Traditional clustering -algorithms results are strongly input-order dependent, and rely on an -arbitrary **global** clustering threshold. **swarm** results are +that handles massive sets of amplicons. Results of traditional +clustering algorithms are strongly input-order dependent, and rely on +an arbitrary **global** clustering threshold. **swarm** results are resilient to input-order changes and rely on a small **local** linking -threshold *d*, the maximum number of differences between two -amplicons. **swarm** forms stable, high-resolution clusters, with a -high yield of biological information. +threshold *d*, representing the maximum number of differences between +two amplicons. **swarm** forms stable, high-resolution clusters, with +a high yield of biological information. + +To help users, we describe +[a complete pipeline](https://github.com/frederic-mahe/swarm/wiki/Fred's-metabarcoding-pipeline) +starting from raw fastq files, clustering with **swarm** and producing +a filtered OTU table. **swarm** 2.0 introduces several novelties and improvements over swarm 1.0: @@ -21,8 +26,8 @@ high yield of biological information. * a new option called *fastidious* that refines *d* = 1 results and reduces the number of small OTUs, -Table of Content -================ +Table of Contents +================= * [Common misconceptions](#common_misconceptions) * [Quick start](#quick_start) @@ -50,9 +55,9 @@ Table of Content similarities with other clustering methods (e.g., [Huse et al, 2010](http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2909393/)). **swarm**'s novelty is its iterative growth process and the use of sequence - abundance values to delineate OTUs. Swarm properly delineates large - OTUs (high recall), while being able to distinguish OTUs with as - little as two differences between their centers (high precision). + abundance values to delineate OTUs. **swarm** properly delineates + large OTUs (high recall), and can distinguish OTUs with as little as + two differences between their centers (high precision). **swarm** uses a local clustering threshold (*d*), not a global clustering threshold like other algorithms do. Users may be tempted @@ -162,7 +167,7 @@ converted to fasta. ### Linearization ### -Swarm accepts wrapped fasta files as well as linear fasta +**swarm** accepts wrapped fasta files as well as linear fasta files. However, linear fasta files where amplicons are written on two lines (one line for the fasta header, one line for the sequence) are easier to manipulate. For instance, many post-clustering queries can @@ -239,9 +244,9 @@ you still want to run swarm, you can easily add fake abundance values: sed '/^>/ s/$/_1/' amplicons.fasta > amplicons_with_abundances.fasta ``` -Alternatively, you may specify a default abundance value with the -`--append-abundance` (`-a`) option to be used when abundance information -is missing from a sequence. +Alternatively, you may specify a default abundance value with +**swarm**'s `--append-abundance` (`-a`) option to be used when +abundance information is missing from a sequence. ### Launch swarm ### @@ -252,11 +257,11 @@ Here is a typical way to use **swarm**: ./swarm -f -t 4 -w OTU_representatives.fasta amplicons.fasta > /dev/null ``` -Swarm will partition your dataset with the finest resolution (local -number of differences *d* = 1 by default, built-in elimination of -potential chained OTUs, fastidious processing) using 4 CPU-cores. OTU -representatives will be written to a new fasta file, other results -will be discarded (`/dev/null`). +**swarm** will partition your dataset with the finest resolution +(local number of differences *d* = 1 by default, built-in elimination +of potential chained OTUs, fastidious processing) using 4 +CPU-cores. OTU representatives will be written to a new fasta file, +other results will be discarded (`/dev/null`). See the [user manual](https://github.com/torognes/swarm/blob/master/man/swarm_manual.pdf) @@ -276,12 +281,12 @@ that the amplicon fasta file was prepared as describe above ### Refine swarm OTUs ### The chain-breaking, which used to be performed in a second step in -swarm 1.0, is now built-in and performed by default. It is possible to -deactivate it with the `--no-otu-breaking` option, but it is not -recommended. The fastidious option is recommended when using *d* = 1, -as it will reduce the number of small OTUs while maintaining a high -clustering resolution. The principle of the fastidious option is -described in the figure below: +**swarm** 1.0, is now built-in and performed by default. It is +possible to deactivate it with the `--no-otu-breaking` option, but it +is not recommended. The fastidious option is recommended when using +*d* = 1, as it will reduce the number of small OTUs while maintaining +a high clustering resolution. The principle of the fastidious option +is described in the figure below: ![](https://github.com/frederic-mahe/swarm/blob/master/figures/swarm_2.0_fastidious_reduced.png) From 1cd0cb3dabb5be21ef2eb34131584c875df2860b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Mah=C3=A9?= Date: Sat, 30 Apr 2016 20:38:49 +0200 Subject: [PATCH 7/9] Fix typo --- man/swarm.1 | 2 +- man/swarm_manual.pdf | Bin 25324 -> 25325 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/man/swarm.1 b/man/swarm.1 index ef277e3e..aa62e3d3 100644 --- a/man/swarm.1 +++ b/man/swarm.1 @@ -100,7 +100,7 @@ the creation of a link between amplicons A and B, even if the abundance of B is higher than the abundance of A. .LP .\" ---------------------------------------------------------------------------- -.SS Fastious options +.SS Fastidious options .TP 9 .BI \-b\fP,\fB\ \-\-boundary\~ "positive integer" when using the option \-\-fastidious (\-f), define the minimum mass of diff --git a/man/swarm_manual.pdf b/man/swarm_manual.pdf index 30e1a46f9491d5d49a8eb9d2c614c1f10adcc35c..2483bfcd09141f56a04f94d543dd69540a0becd9 100644 GIT binary patch delta 3753 zcma)52{e`K8qO>kqg`f-$oT(z-X)nf5@p)dwhh}s88R#LA05GLxe=;j?8nJ z=Zwirik*mD=bU@ay~n<5-Tt+{wf^;d&-=XZ^S$(3)2A0(f&Oo$E|UGY=a zSX^R2O4P9^87Bk>WJ?U+F&fd@SM{1CZXzn*F;ytl$RfIIT85X1Zu?mDOm_plDje3f zDNe3!DksOp^cY{hQOaYb#W^mS6ERSt{^l`rDjffX&5H4Z#4r@Z zlak|?a!N%(D6MVjekA~F*C`Dtm+z`qi`3zrSIhfWFX`jh$Hz{hr?Q7+74VX`!JfdW z&RnPTjx6SiRfru`Wtxt+btloKz*YCEs0`CZvLwb{ix~F^p zs#WFZFzC*K;E}7YsqV!IGK^lQlc@GFu#<|Fi5F+s=_YhFoaH3&R0P$f+)I0Wis2Mz ztv`L)(aFIzfsg|Fq9QfV%iA!sJIr!}eXa{LzLRv*Z)@eGT>DqYB|A>M-DsU->5^$_ zi*-2Um`=#;3AI#VioM?1K1`miNwPCh2&nSUnuk)3ZP}MsKFp1c)JQiS>k40dNx+}U zZ{!cbj-kT7UHQ&b1@I)%=igCb^a-kPO}sV{IUt(8DT@nK!XTr*C{1rT;sQMr3O^e? z>FRMjr2Mi}3TBX@wEy;lX(8LmxMMN1&5le$o*u0&s~WPdl9A@Wem}r+Kr^M$*45`r zImsI0XFBoZ_#>6bM)Kkf4(47Zkqi5@D%ZyyQ@Fe!VUguzv8(m}53a=w%N+sJm|SOGbBeNAU{ZUa~I%59-cpV#(AecBv2K;=lLGNlMv=EoV#6$l@+%4oS#pVO;g)DNy1*^!YXFS1NHKPm_J_Ds0!ZF+O4`P6xPq(~76*xDo zF>TjdwGV3skPX;6jbtiDk_GjRYq@*9^&=}ojT|++aKiV~SVkCr99z%Mx?nh5V){IG zuKlDcQD)M<0aer6>_G3JTKB~mit=Dk@lHKr@8A?!+3>AXL0Gqi;Cx62Sn6xz?LQ?? zrm`_+3Cu6R4mR4JVdy)1@o9*UqSpO&>r7}sK{~pws6$asnxx}w%6G{)_twIW-j#Dz z;TX3`1HDoUn?g2z#tb6M`dRDX?U0E2o-H$(u;wPUY>aLeDm%Hji%Yi~dQmteJ|JT+ zXoreorx&k19njkIO29>Owj8!3zI>>+G|LR-9nH5U@*DNt(dD?SQQtMc`soF?7{=x_ z*;g-Xb}dxBxKwR)PB&3o)A#<*&I`CImj`1Q~J%0bo}je1W|dN zrKSWQ#7+*Afaki~Hi<6CLfYhxzlZY7v5)V4Q^$12&#E44-2rZNE58qX>}ob>%%oRW z?9~}a;woSMzF)6mDE#%fZ*uAd*v63ALnId^T!U-rV4KV@)Eu)AbW#L#do$0dj7R$A zcXk(k6V2Fjx*UGgn{y_LUo+oIz}ziTqkK!LB_h~wMM3H=bQR0=!TCS7J2b~E=ezf( zDZL68%imX_JK833DC&oF>M_3qE>?nlemcP@z90XL0d~9FHEmdPiK`qoR+#5|7xRQ#fafklGjXmoWQD_2hZc?IN)5s z$`j^ZY@YpouAm8or5#j1-Re|m?&A7m$oJ-bRh~TI3%%t>R}%UoyQQ=&m@cRUSK`aJ zw1#5>Mw<1C)N4z>gqlCJ7ejs1%<|4oGSG|sEvNCTc+Z&n`sKnpC8sx=re|YpE%_c! zy*lIG4Qpq|cY0>qMLjC2z5(MW#+~fPOsE#?^>h2-`#XdrZz9(n`x$<)7w65)ZwL}j zj2=c)#Fd67vgEEo3e}_gVw`OR6WaaO)+)lEp9x^EqiBt7MwNSV5Q6P$Zf&Q3k`%q^ z_C$gn3fDrE@Z>L%YR#n!VH0roCW@)~~duE4;h#^K(xP^u3kcA4u zl}Zu_G{PE##MsIsF`%712-<=2!0sn+i?hWc$+ifDH3+A06WxD~m_bzKM#>`qV>oaU zfjNo7$pUc7I#HGugqz*?ImtdVt)C;Rk|ckMSQtjCrc*#7062ia{86D407#u+Q`B>@ z(I9);N^6{i10WjsZwAH3!uT{??Dx(9V$Nc0fBe9a00y%c1Cb!O7X#oJ9EHvD6hy;@ zBT=ZmY&ZhM(qJHl1_RNwJP?hf;q4m1{i#Q(vlNGD?m;w;7Q?`4FaQngbq4Hi&cC() z?g|KiC>oz2=CAspzlm@V3(zLPpb>k_?+X4E{C6yfKp|+x0b)@!dLS12PfQKiojVS` zx9hutD4N7*0KV599K<0gJY-%7{ZH9lRS>}L^}V}AC}6Lh-HK>pcNgw|V6?LY;mAKL zg8s9HAQlJElnKCTd$H@AHVH^OXgC~A(_1(K_m3PxyDtC^M}EAXY;S{`)~|s;g>X;7Cn8fJWdj%1Zx_LFusOV+GkHCGi(D+5QD7+xpP} delta 3726 zcma)4c{tSV8b-2Lwn8Ea!-tyRZ+6*dkPK$}7|htWEFnuN+ph%?Lh~tmvSgc(7E5+Y zmide%qOyljq>+?5o$os5T;DP0x=!z3?{&ZTbHC4hKhM%*?#0L4RX7PqBD~?1N^JwaZ2SqGTM5WOPie2`Ugl@?I#MrG4 z#(r^hB16{LRL$I)@4PJc>1i&vvcdz$d`&Cg`RzU&V_!L>KHI1Lv+TL}8R?B0}u4^@G zc&OrjJLX`DSHgRN7K`Inz8~jKl+dbaJV6N&*-I-QlH3PO-)EVeiyOY|z2wr%pPD9f zp;NW4l6;WFuu4mCHCb#jkk=PAe3)%zXF2y}P7pTTuKYV3>O@p^=2ORp`~tZHeT%u5 zma7&~O1i$v?xNAw-Uyiv68ZxF&^FJ}~iGEd6wOr9hJw( z@3k+b+@(+lk43I;Cy>rbZ8pfo9%}IRoO#AiyixWB!nNJJy|D0-I)BtEjIG)DRGw!2 zX3B?x~}=uDd*?s?D=lM zDtnZ#L*x`ipZ9{(XZJnXIqXbgx~=e@nhxL9^kSa$*#s4wQgVN?BGTga1goOO7aPMW z36ndEr>p5_<}}faX=%v^#k~pyQzf_Wa)a&Ku>)RlBGaFR8Ys+^GmS7odunOU3)ps9 z^azBt+&(uvMs8Vy-^pctKg4dG;_*lnVrx?Wgx;4w$cyIMAMEzsY`c-AY=uW`F1Opg z%;>`0)gG*-b{@b*NGlLb)?eAZa56!cG-7-wOyTRR#MO&y6P}V7w!*k|yrPl>-~HYV z>?3TcioBa~eDIL7S%I4QQi%UXNBXLkzMReiy=t+CV)t&^8P)+!VJ^ihHR#_(0 zkI&(i66~~PUsq|4J2y}>on&5GoZcTpBkEj^+lOy>EGY8c{Ucv{N@#($rOQwyM2V4f zQ`}ROWSJ>#i(CMc!_!Atm!!%@n4+~u-q!SvBvTM2I7v_Se&8_lIFAzUm!I@PTKZb}I zUj=?>zmAJ=+aqQzr1+s|fBgO2z1P3+zFm*odthB*QKu^Fa+2?e!OJmmQ$hTuMO^6I zWZvO3?GZJJAui9Q_7sWg6jhHh>$r_jBIG3gnYnQ617oWj1Kg%zES+(^pvue*r3aDW z4{S5OGb9R&6mvc858CH2RPy!^G%VQ=7Q+?Ie@;jkWHuM&rzdI@hPD4eE$H@!ZMGmcA+2(` zi+8S_aiOd}RS*SV4b%|L%UAYXtnlrZpL8TAWz}0>f|(k8=s)s7W72lG*`>!EVJ4DMG))vHyLG}$`~f9x*Q=ugp!`}j5aqIazo zyFdT=)$9z+Y9BSvAawsw-)_;l7}uDmnAu?6Kd}zAGC)dSy|vf9mtIgwrB<5k z1@T9H%hz2ztm-(t}35q5|6LUCG%)i*DUkhPRweJyms$RV*f_|$L6y1R*M+fH%5-|n1lhA zsiH^+q0fu|OXIxX5$}afSZENG84gpA&47_TCY%O~9CB`G6|*B3Hf}bW@2kCA^HDs_ zGd;F<-f#S^#5FQ>Pnd^`lHtJCvD8`3x1EuuBr}X97!x(|-+=B}bi`~2HS&++-}5ak zZYise!y;zZw5a5w!!qI=9_V4m!K?jUc|*-R+l$;|`y15u-@ zal{XoJ+fyCg-Ud#85*QdIx7dy`gJIT_y8<5F9rS&F3i9KBe%F1`AnPlHKl`HxcE?w zk+Jz@riDqso7%5b(WhgM>t{S{#^{*~-cfCFrda_ZdZ^_lyU+^XQlJl%63aX(c<=e_ zAs^V||P^3=5TGOyB{Sz!-! z-~8oJ&MT`U$V7E$cqW7I_@#h9t`yhH3{DUCgq_@PxQPmZ&}O~uYgtel!EViH!qnpH zL5$x@FG zg~Y1E0s1;sofAaR&i|U^5Y6P*h>ld{Un1U1uy5r)gaAMQ0|I|_2!q36YC?z21KbHN zAs(s(Ef5Z%;eTh)!yK)20EK@h16S}@5c=x^BHvNRU@2l Date: Sun, 1 May 2016 09:52:56 +0200 Subject: [PATCH 8/9] Accepted values for the option --bloom-bits --- man/swarm.1 | 2 +- man/swarm_manual.pdf | Bin 25325 -> 25325 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/man/swarm.1 b/man/swarm.1 index aa62e3d3..b2f85680 100644 --- a/man/swarm.1 +++ b/man/swarm.1 @@ -144,7 +144,7 @@ when using the option \-\-fastidious (\-f), define the size (in bits) of each entry in the Bloom filter. That option allows to balance the efficiency (i.e. speed) and the memory footprint of the Bloom filter. Large values will make the Bloom filter more efficient but -will require more memory. Any value between 4 and 20 can be +will require more memory. Any value between 2 and 64 can be used. Default value is 16. See the \-\-ceiling (\-c) option for an alternative way to control the memory footprint. .LP diff --git a/man/swarm_manual.pdf b/man/swarm_manual.pdf index 2483bfcd09141f56a04f94d543dd69540a0becd9..9fb38fc1a41427ec4b1f90836a7a80d9dad6d2f8 100644 GIT binary patch delta 413 zcmaERl=1CR#tl_ctdR?wrY+xGFICATDeS@fce?zB^&8HKlwA8BF8=?>`Fh6o>Zlo; z1!eEps2G|j8(12rBBD1=uZ06?d=wfbU U;^t~#W^8G0XG2KESUH||9 From af5d65f2acafbfed4dcd00f5ed29326ff40c65f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Mah=C3=A9?= Date: Sun, 1 May 2016 09:56:23 +0200 Subject: [PATCH 9/9] Clearer description --- man/swarm.1 | 4 ++-- man/swarm_manual.pdf | Bin 25325 -> 25326 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/man/swarm.1 b/man/swarm.1 index b2f85680..84007917 100644 --- a/man/swarm.1 +++ b/man/swarm.1 @@ -260,8 +260,8 @@ Default gap extension penalty is 4. .RE As \fBswarm\fR focuses on close relationships (e.g., \fId\fR = 2 or 3), clustering results are resilient to pairwise alignment model -parameters modifications. Modifying model parameters has a stronger -impact when clustering using a higher \fId\fR value. +parameters modifications. When clustering using a higher \fId\fR +value, modifying model parameters has a stronger impact. .\" classic parameters are +5/-4/-12/-1 .\" ============================================================================ .SH EXAMPLES diff --git a/man/swarm_manual.pdf b/man/swarm_manual.pdf index 9fb38fc1a41427ec4b1f90836a7a80d9dad6d2f8..8838cab79e5cd887d0ba2fe46d3de625d9ccceec 100644 GIT binary patch delta 4334 zcma)7XHXN`wx$}2(rZGOE+v&DbO>EU$^itF-n$g(gx-r9iby}8B1$o|5K$2X=`BFu zPz0$`L_lexJm0x@=G~Dy^UnUW_k8QyYklk6duDBSQGV{CtUr^$&gig3ku3*Eas=%R z@PoI5g;f?N&Nfn3rh0w0`HjphXwiEy6!Gai+sGr`eZY6Z9E@;LNXp2k`KC*rf8pyQ z)u`}Q?vKVge5d47xe(p=4Kdz*my^A-qS1~U;vUg?N_%ru0(83_j!~5#97O%~S#AS$ zoL?y6`#PO>NvuxTafd9%L+)pn#YKRM0# zEo9OerfQDPN+#X;Yk-quE5WWU$}LKs%)YArrL8Azvr(il)vYUH?1nz@ioPk^swt=3 zW$BK1`D6I_=iWtY%1ft`0cU!K%XPT}eWJs*sSJTMD}$i3vlOlIkT(LXXot8swb%)u z*9G16sVQL?RwTfhso1qhCyN`Almlr0YlLU0O7KXQq6&1(K(iTXm5&##Uxp4|)n_Q^ z=DcC-i;L3#EUS+UQp_s&;{I}+VW*YCUT_JbXR@rcZT5i}_Pr>1xHW^=mg)BPWvJ#0 z2zfK}k6hQe>yPbk-Lk-|FL2-!7IH=9MrNV<>;>kP*uGv>qcjYa(K`=(uXnBnH~*S# zAq_x=Zd^CyXiUzomt+3Q$Kr&#{7~Uz{5WgbGReYqwJ$jJ?7efLcQc+xyDO7Vn##AE z_RCUuCn167q+WLI{ZtGaV}#_RrXp#l$?Jqlk0%G|N|cEYT70GQa{x0uBACAFo`y^r zJ^ajjY=7E;dpXY^+DaFShR(uH7FYKoRXYq1qjWIfOJtPSpSyng)it8e2ytD`--^77 zn0!JeKYzOVSA0?J552?^6;ReioBdwjm@W+ghD3 z%)vAgX2Ujik(F4;S1q&H<%G5@ zP!H2&3{{ps$dEwn4=G-6zMiIgs}$L7oqkAeU@a%8znNW&(pBy+7dhk%3l;H8|6uWk zv-f^vO3RyT_gYL_Nm=U0?bPY|EFSy&9~YmTaqt$bfFvW$6x;NC-MAU573k1dS{E); z);n`+L8CMBlKT~0wcKROib#!M8sCxqI2NK>dDn7Hl8-2dKl&i<;3~=LO~O@Pb_bh7 zO?M0Pth?IZ>0QJXsAId!TUWqh3gEIR=6Rdjz61XgsDs!}8$O=EBJ^wo2$@q-}Rnkp$>rKN}4zy)BigOk6}D4-zq4!cvto)%jih*WtJI8m zUqbppx_(MC19lu++Jmf_KGSJXGtaIxIK;%C1eJxGW1h6*8pE+0MfGrH}V6gMYeL zC-x`!&9Z!EkvcEJF#kfH^>;Rd9!8ETE^H@3BjaEJVCcY88!SAi?zk#^*RRLS7Uxn# zIc7;e;E-A?c%f#Tz3q{|yzwKC3C;xDrgu*5k4uieXcpJlhhuh`+nVAR9czAuh6GEKQ))7{u?D`((Gs zM5p(@wUW)d>1VKZGtVIkU(^H2Uo+mcxvaPc7`}*Yo)Xy*wgbJIBI)zEH4lQGa}?mN z0g{ylX3|6p0^ACBZUZlTOnAr7Ce#X`$CTY9OBod!wje?iBZ(B|kuQawSeEumTze)- z4lV2^O>ccQu!IaS6Sy*TDLH?vl0GoUPfOFy$EtwzXXQ;C)23zxFwxNV{0@KCL2cxXOe9{9cFv-X^B z&=hD$(=eUoc!N8^LsKGtVg?2dVh z*?u6z>L=F)Q>{sr`ZH;J)Lg-kTjA?pA1{{an~Q8IP=2AG8;q7exc#tGbi{k->mz+E zVu!x(<)>}O8mr;Nsa^Y=U70%L2)()7GAVwhY0N+>4tP7RVOlcC2PyRB0o@6iDCG%B_`Wi-2)b*J2a zr!ctCR=#_f4g^joCts?r4YXs7Cm-02uv`)#1HLk)k65qt6VJNcae!OKMADY^0HgcM zhU4IghkW-|~;H$Z~N4cu$6}gJSaax8sR| zej>C*zFd~4=6ii~m<_ykLo=Bb!vwqW{JJh%)7HOD~4!Li|jn{ZZFUR{n&1Ish?8ZF&qdOFz(1B%5c_2jB&f7{X zZQ~U@SoB39vs(l-o{so8hVcYZhwtxlw$pved?CdU^=5j-sTz~q$WAe->#@N*ylE{% zX0OP5;(2Xv#Zr5L609?F=s16IY@J1FL_$TWA*Q^gjLQKpXM8a;E92oc%lDg7H{CGw zk*V63p3iZx7~SL>jsv**Jb#ypw&}ZnpVT<;<|51 zbq`hLb`ZbWw--P23aSt+7=U}65wD4I}JB9LHbXIVHBNk z+Y0`@huB)O!-W2~J+P3k5X0XGC>)H7wPWXoL!iG$z)%zz$7rX7Mg1Ou!VwDRFc<`V z4uc@iVGxD$Jct7P91jeKga4He*JX#0Iv0l^q31BL0vL+BY_IfR*eLLMHc|nOOSYH5 zp7R8PLY!kmP^fbl7!Cd12M7#-fdA$LL;(!@cQ60vI|L2;cRuWYf(qw~K)|TqAK+I) z1myQ3sQ)4m3O;W(6#Sdnv|un40>wEvuw&7Xb2`D$^Ikx~=yNiEr8tj470!A4>%*O^ z0Y$+6Zjt3bKPFTGfxwwLDr;(>kQy)y6soNWgJ^1MDCp?uK((L<6hZ^0qlrR8RF(ff T25!`mgAU3dCZ>H|hv9z!0@Fs~ delta 4376 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