From 16aa1b4d5718602cd4f6790970e8893dceeeda94 Mon Sep 17 00:00:00 2001 From: KlausVigo Date: Wed, 31 Jan 2024 12:59:10 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20KlausVig?= =?UTF-8?q?o/phangorn@7a6c2d931149284dd3963c27b84be240571c5109=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apple-touch-icon-120x120.png | Bin 13393 -> 13393 bytes apple-touch-icon-152x152.png | Bin 18794 -> 18794 bytes apple-touch-icon-180x180.png | Bin 24069 -> 24069 bytes apple-touch-icon-60x60.png | Bin 5308 -> 5308 bytes apple-touch-icon-76x76.png | Bin 7203 -> 7203 bytes apple-touch-icon.png | Bin 24069 -> 24069 bytes articles/AdvancedFeatures.html | 4 +-- articles/Ancestral.html | 4 +-- articles/IntertwiningTreesAndNetworks.html | 2 +- .../figure-html/unnamed-chunk-13-1.png | Bin 63193 -> 65234 bytes .../figure-html/unnamed-chunk-9-1.png | Bin 76398 -> 78628 bytes articles/MLbyHand.html | 26 +++++++++--------- .../figure-html/ConsensusNet-1.png | Bin 64718 -> 63191 bytes articles/Morphological.html | 4 +-- articles/Networx.html | 4 +-- articles/Trees.html | 26 +++++++++--------- .../Trees_files/figure-html/midpoint-1.png | Bin 49542 -> 50576 bytes .../figure-html/plotBS_ultrafast_bs-1.png | Bin 53374 -> 53329 bytes .../figure-html/plotBS_ultrafast_bs-2.png | Bin 43782 -> 43610 bytes .../figure-html/plotBS_ultrafast_bs-3.png | Bin 43486 -> 43312 bytes .../Trees_files/figure-html/plot_bs-1.png | Bin 50846 -> 51734 bytes favicon-16x16.png | Bin 1211 -> 1211 bytes favicon-32x32.png | Bin 2445 -> 2445 bytes pkgdown.yml | 2 +- reference/read.nexus.partitions.html | 3 +- search.json | 2 +- 26 files changed, 38 insertions(+), 39 deletions(-) diff --git a/apple-touch-icon-120x120.png b/apple-touch-icon-120x120.png index fce80b932bc3d3b0876fff3cd8421066f54f6ef7..867336095098d7a8c40b3bcc69dcbd5cfcba4b22 100644 GIT binary patch delta 71 zcmcbZaWP{;6^A^Jh1Rj>7wb1RNg0b88-^GfS(%zynHXss7+4t?ym+J$GI^u145rM? M{S#hHeq@{v0D@u|g8%>k delta 71 zcmcbZaWP{;6^A5`1=o#7>#{dCNg0b8nT8k|S(%zy85(FC7+4t?q;PGxJ9(qA45o}| LI7i~-N5=U8R~r@S diff --git a/apple-touch-icon-152x152.png b/apple-touch-icon-152x152.png index 184987fffeba172b75051ba8a2cbd8615e7294ec..32544eb9bfb35680c27c83769d5013c073238f55 100644 GIT binary patch delta 73 zcmaDgiSgAW#tBs%@;nyW8y`G;xv|OEL)6$X#L&pf)Xd7nSlhtB%D}*Hs`7)$r#xgZ OW$aJPj+y-1BOd^~_87zf delta 73 zcmaDgiSgAW#tBs%k~|jN>z~g1yRpgGL)6GL#L&pf)Xd7zP}{)3%D~`I?e5IUr#xgZ OWi~4?U!DBhBOd^`MHrX> diff --git a/apple-touch-icon-180x180.png b/apple-touch-icon-180x180.png index a72aa0d6fca2f1fbf55203b2625b4efe3d28c58d..c2236a5da9b6046b5b0e2cfdb534b9c474ba7408 100644 GIT binary patch delta 96 zcmZqO!`QlqaY7Y`JdcHLM6=7CjZNob+>8xF42`Tz&8$pJwG9lc3=DK##cnY$FsPQe lMwFx^mZVzc=BH$)RWcYE7@6oA80unZh>=*AHhEfXJ^+=B96$tq+6D$z1_qy}F8sp4z@S>< l8c~vxSdwa$o1c=IR>@#wU}U0eV5p0sq3MLA$K+|T`2eIC9TETl diff --git a/apple-touch-icon-60x60.png b/apple-touch-icon-60x60.png index 72bc175807072afc7ae2f3927a1f087df951455f..cfb51e05ed472d387d4b10688c6b60eb43467b9c 100644 GIT binary patch delta 71 zcmdm^xkqzC6^A^Jg@(q<4Z$0mT7^Z84MPl#tW3?UOboOQ46FT4})C(DS)V9M|* LG#;GnE0PZY`XLkB delta 71 zcmdm^xkqzC6^A5`1&7(2^X?m)T7^Z8OhXKftW3?U3@o$_46F diff --git a/apple-touch-icon.png b/apple-touch-icon.png index 2edccf52cf1b89097c512c2679278a80043fcf59..f19454cd4be3925d9cfd33359a5b4abd69d4baa4 100644 GIT binary patch delta 96 zcmZqO!`QlqaY7Y`JdcIm!7kCXjZNob+>8xF42`Tz&8$q!v<(cb3=Cw}^0+fFFsPQe lMwFx^mZVzc=BH$)RWcYE7@6oA80unZ$o;V8_vC4@`2d0i9ZdiL delta 96 zcmZqO!`QlqaY7Y`B##BJTbuQXjZNob+>A^^42`Tz&8!TKwG9lc3=Bdat#V*sU{Eb_ ljVMV;EJ?M>%}>cpt7I@TFf!3KFx17+pt4`+&*W*b`2eRt9TNZm diff --git a/articles/AdvancedFeatures.html b/articles/AdvancedFeatures.html index 4eafcd72..3ee40ba6 100644 --- a/articles/AdvancedFeatures.html +++ b/articles/AdvancedFeatures.html @@ -89,7 +89,7 @@

Klaus Schliep, Graz
-

2024-01-25

+

2024-01-31

Source: vignettes/AdvancedFeatures.Rmd
AdvancedFeatures.Rmd
@@ -756,7 +756,7 @@

Session info## [1] Matrix_1.6-1.1 jsonlite_1.8.8 highr_0.10 compiler_4.3.2 ## [5] Rcpp_1.0.12 stringr_1.5.1 parallel_4.3.2 jquerylib_0.1.4 ## [9] systemfonts_1.0.5 textshaping_0.3.7 yaml_2.3.8 fastmap_1.1.1 -## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_1.6.0 +## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_2.0.1 ## [17] knitr_1.45 desc_1.4.3 bslib_0.6.1 rlang_1.1.3 ## [21] fastmatch_1.1-4 cachem_1.0.8 stringi_1.8.3 xfun_0.41 ## [25] quadprog_1.5-8 fs_1.6.3 sass_0.4.8 memoise_2.0.1 diff --git a/articles/Ancestral.html b/articles/Ancestral.html index 2ebf9dcd..d122204d 100644 --- a/articles/Ancestral.html +++ b/articles/Ancestral.html @@ -89,7 +89,7 @@

Klaus Technology
-

2024-01-25

+

2024-01-31

Source: vignettes/Ancestral.Rmd
Ancestral.Rmd
@@ -333,7 +333,7 @@

Session info## [1] Matrix_1.6-1.1 jsonlite_1.8.8 highr_0.10 compiler_4.3.2 ## [5] Rcpp_1.0.12 stringr_1.5.1 parallel_4.3.2 jquerylib_0.1.4 ## [9] systemfonts_1.0.5 textshaping_0.3.7 yaml_2.3.8 fastmap_1.1.1 -## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_1.6.0 +## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_2.0.1 ## [17] knitr_1.45 desc_1.4.3 bslib_0.6.1 rlang_1.1.3 ## [21] fastmatch_1.1-4 cachem_1.0.8 stringi_1.8.3 xfun_0.41 ## [25] quadprog_1.5-8 fs_1.6.3 sass_0.4.8 memoise_2.0.1 diff --git a/articles/IntertwiningTreesAndNetworks.html b/articles/IntertwiningTreesAndNetworks.html index 63fa3017..b8ce060c 100644 --- a/articles/IntertwiningTreesAndNetworks.html +++ b/articles/IntertwiningTreesAndNetworks.html @@ -85,7 +85,7 @@

Klaus Schliep, Alastair Potts, David Morrison and Guido Grimm

-

January 25, 2024

+

January 31, 2024

Source:
vignettes/IntertwiningTreesAndNetworks.Rmd
IntertwiningTreesAndNetworks.Rmd
diff --git a/articles/IntertwiningTreesAndNetworks_files/figure-html/unnamed-chunk-13-1.png b/articles/IntertwiningTreesAndNetworks_files/figure-html/unnamed-chunk-13-1.png index f62a97db89b97ea2004c9f77fe6e041bfc290c11..4e69c9b2ca54d426f5bd594151c0ef8c6a487ce7 100644 GIT binary patch literal 65234 zcmdqI2Uk;D)HWJGKt;uJ6hr})0Md~v9YuvumEJ*V(xpavtQ;HYrq`fAF!UOvCW?Zg zOYf-kE+B-^a@U6QzV{p7{Rh`E6wJ<=Ypyw;+1Gw?TUY()VUEKH1mY-4jO4yk)x zIo4vbd@icI92!z92G@|kAHUO(x_9v4hwt{s*$H<;!; z435(?N^zR)%Bt0(-{b86U;o%SSwRYp5f+g4(c6?mWtB^uq4yDp2YNYL%m{=~`!1@d zS#ehrYGLRKG0a=MS$6~|a6mim7y@COR_78)^CDG77AWnu9=}Hi1Y>(BImV@{Z4w!I zK5Zn?yru<3V29};5J&2cCg}X0mr$(ix7`rfaVofH+qo7^J$Ck z%NnLAm#h4sbSOD?yc3nLQGAhHZ%9s;j5_~A9n0_F|6}Hf(=I`jOh&cp6o*a@C4?w3 z0P>ha4@@1^mxKLDl}=r=%6VE9A`<9q)AF%xU##Z(5A*&7NKxA8i&LlqKkJ4i%us!g zK!Q$Uvb^muchBr%XXcRgj0#<;9GSVQ)UQQ5At`G6Zk!C4{7)bFTyQ?IdW=9^r$kq(;$!W?;FF;^2K>8nIs4Otie@+vsb9Dg9&sMME?`kCG{@PA*ouVvC8iQ|RUdW_W97=n#l}mZotTSIK zmuH;sd~K>S4+cYL;0?B})`FS;zDenBwra{6G@QjF3%(C!{0Oyb#99lXug7^0@>lp; zR}ISi4e4#JSn_jbfhh+>v<-c2GKo@@A`c|28sMQTk-FZ$s*4L2f2@P|dU*r35$-DQ)q`xb%XamY=zR6n6biCaM#J9n1H(j+a)+U6 z3341X6z`H%u!iqp3Jl7&stH^e@3wD4I%OnI`k6r7ya7|%L7Z9kGM`s}K9_0DPZ_;O zcLl88`x9LzO6HVo5Sgi2*Bn0O;y0?W-3}hy^7NZQAYw`XS$?*&_)g&eT7FveOa~o8 z_|boszs49ulzeImlQX4va`2}cQa^UvQ)hDVll?MmWEh9p=goXx{%6xhY60-YuE8JP zjHhRMo%DZOeR;H;K*_5c+!CwhMyS;2@l$vL1My<_itTG`_;1VYb1mtkR<8 zYnSo*(BF|Fw^yQTQ`}PxQZitr?U59y|G;-VLr)&R_qwxyk4|1Q5JOhbNk==V3`NkE zmd`Tjn0(50WwBfR+}hZa5S1XX40HN-RDw>ZVlXDqRZ`Zgxbl6oaoOrQ$TDVp-4K

6nF1KJB|ZbUGLk_Qg>r&Cr_nwe+U}i{^n`CFJVfGJY zX1;*l>ZxKini%ZeNGs(ROI}1SFn^?w%xknP8i!PTP6?Ut_LpVO=eSIGBv6-5nKv$) z2?gySuAo<+nbN5F&F~4JcgjiMlDa@FUDg zu)ls+Z81AFH?aQgzyaXbFIQpc#xiQ>dj7|~#7e05a1pPN^{PtI=!In>KUE`g*Q8~e zGQc&lS*EqHETZOe3P9j}V$UapDgGFU2P+sqtZC5pPOL;^p3?69$o1J*8Z@s-zNeFe z5@dp8B(XbvI3sbu-!fakAv{AfI4{Y>(P&}05Yhx(Bfh1i^gHW?11u$(*XTHNaaL3s zPtGb21RLaSrz$n}WV!kcR=8O~l9Ff_GnIx5t`}i{C+xb$n1%*{=SNwfJ5TtciO}jJ z<$-ONyx@WvLK{9NDicW!tkk1v=D9)Jg}=59Ar@%JX_8i;z49B$su4479@U@sQ(^EkdQ*|8 zJ}N9`fbU5R3|^GWV+HK+jr1fatT;3&&$-9B447n%)L1muR2WY_QW_XaH(nPB`TD0W zq1YXjQ|G#nl2kFbB_;RXc-JB1Z`(?t6%^JuAA}Bp)Y;w~1hirkW}0;noI_4Ek@gv05vp11R)a+Z5l zv{L}pE3wyWAk+Rfpi?;1r9R@O8*@DHe)b(1RLu8&neNg=mZ_K!zc_z%UQCb;x0mmL z$KajZ#e_0K4uDSvLQrD3z@!ltuSnDdBlr$*H0dGc>zRYuKE|PW*Cq4%4GU*#4M@ z9my1LfC<(iEOz`5Dpa;RZb2rzn=7nbJ*f)(D2im~Qdu3ffQI_?9Ydh3zxSuK@V6AY zcfw#PKd^5a72|UL2R_)B`PlIo{7D{JTw+9-a`%9$r(Ri!alvq@d~56czpu*x=+Hmq z^VR!BTpUye)z1g<$?oB4y0DYN5#!s$wE%VX}z2B0h4S zvo2z-Dv1;Re^cLGXWd=5fAIq#BYJU83voHeeFv)r4JkFMf-J-4q$=WeEMpps=K7%+ z=T!Rj4UZUjq3PMhl*w_BSSg%&&4R#Ou{+F;i0+ixnR|(xQ$GtJGNuEPg2tjW`)&c z>_JP_le%+qR(DsZ zXOaP7`{L7&1MH~7EVH~?h-9RN4M4r;zJLO+bKd7l=n~}C?I7bw(Sd3af@aq`k z7)*}I*LQ$8PV<3`Ca$L!W@S+;KUKrrzgBsr%5Y@#CZ6!r)B7P5_gef+Y#f0x?LTyp zZqFx<*GomNfAX4CjGA(FuI00~l(-BC+Wyi-Z5b9uo_YOBf}l}+rKPv-+WuB&?iyuF zhYdig>TxV@=#S~G`V}hU?19CQUal7!R)tB2EE9#h^Y3auH^EWmuM%N4w3&!k>4o#O zqJq;VhAyIXIqwQbJJ8(+`>@+7@KFO2)x(CO?J3^xuUx0Sn{@r@#b^hg>iKj=X#wNk zULXi5f34M^Ff_ElQV%Qq$PYuP0H<{5Zy#7gPfVDk>}>Hq*;}*p8MUbCbLr4Dw5(#oumYYKr{b6xi3g&>r6cms9(`;N?)M4x)p3qP6JCY znP^*RurrzclLXm#;=0}UUA~s3)ueqkUe{wY02{Q+>}+*@Mv0?i|AF{*eGh7vr-l4z zFzWnmVTtDs6e%JR&EKDI3nwR}gG#&$>6li%GV9|)y^vjD3fQ zxw~V%7~w|U`o{AHR=w%Ea_TzXR!oGQttLdNWoeMS4~bZ85Wg9A^2QgjsCj)+sY=tN z@pUPpCo53E-iA9K1L|}kpKL8l6~JkG-(2y7qvZWUL2{L720 zOv{VsAn+7e-aobQuN0A=s4ZaxJG1Y;AiZYq(?RLF%9ZdsRc-Y!iQ-KY_69{t$IdqEKMZfmeqk5Qq>)^cn%QHt2pu*W!p z-7|=qRrS+EW8UM{)j7N znY#W%fK`BPz%)P)JYkLAe{#M72Y}IQ$Ah`MaVybglwMKJod`FLD5>B`y@cF{Er=vDMJ<&SzggyA#x4Ok0O6d!5DfE9PY4msh06MZnWilSG@G|5bNdPABXOA`jP>omY}=Dd!|sjM!X$4LoykRd;Tf?yBowi~kPXUtfI#C?(H{FI zucOwwV|U*pPY>>bVCD08Oa*eY5-y(j6)#1UA!@{^GJqP_wbB<9ALnSPF4v~{f_MYQ z4%(ST>^V&Q$!p+f2%#^=sLkPh1!J9pD@) zQfmc!tm(L$X>|9!jUW{dxpE7rJVG?u;r$?e`yLlPXHcO)!g}G+EbimA36s6Q828W3 z{(P*X_DuV;gxBvfEO;vViTHi#u}nLQC6@4@?YmP5VoG2;$6CCDIds-xVr)5X5w%T(X7+xufxP{nz^*0<7u~V!6$-B##w*m>m zs9obT8N2ThZ&Uck%u-7tM%ZF_2ja4fAwvZ|Cdnp*oknGZUnnH-TZYmL>;1 zfJ|PC$7XuN6@+fgK{zb32Pxn&y5k1mpg33OKuuGmK!{ z_rR!0_d-<2*z#lrak4WoYST)QJu!>FBj~JjN<}7CNRvmtU9yPR>fE-}72Zn-RGr&2 z0UuZ(l{A8GS&v@lYG2mAIe*jPr8boEKT5R}Eq$aY*s^Scot1+Rrd`SqHIzDepi!?_ z!oPj9PO5>{56ho)&-4HX=I-WQ2u(;HR3Oi(vo$_8+cW00@H~Sz>&_fEeS#o{#%Dd9 zhS_*)og$U&{jHi>4Pd;f*i-W}OFR?pY9)p2HepneG(tpyD4b5e&Pkfek{i+bPiK}3 zDR4Ppn2#!UFZw>Pb2D))#Ae@;V@qUV*Np{BTFN`l&%M}(v}tP(AGKVH-)K?O`$0wf z;@u>}E7IR8^*)2XGbpEPY~XNNU{4i3xHB!)uu&q6Wrv+%Y@QyR?piR8Wd~U$j%{i0 zZ({sX3ECEHITSk=1#+xXS`WdspZh$zCN(Z9{vo=z%;EcY6#SnP3Wjxt~=)oJYW1uKCuR; zWa2%_Z-MC)aNIdEMfgh__@7TfLHA0E-_}F3c<>}er8|>m7yHQ*d>`||%NwM2JKZNK zHDOvrG+)2Vi!FGn6VKj>64eGi>=W<&R=N4+_7v|t=o2AqFL6Tad3|AT?O*ZEQkr9x z+e|;~g3l3r1A8fzpH|lt+I%x;@#GrZ>lFV%(DHUqJS9<%tQdW}Wf5m@pcNK$v_cGC z;;0Bmq1LnBHj&OVQv-%oPhdS39@tBxqEz+H-?Q<&KQlIeaUK3#^$9bw0wn(l+)fV% zOK4VF+y!U#w_rNH%UN*w(Q~m>C1#vWWPw}h>E4RzyGclsOu1`57SIk`|1O<~`{+CS zrke!Vp{Zh1;q-dS!HY$jSeQAib>;^jOp5`SI2D*usLu)au(Zq;6`LDL@aMv$T9gb< z&dkRT@?&wMREfANJH1(;mH_i%H{?Qv9BwvG!Za1M!;PYFg*ikE+>;Bv*2dyUl%AEcgL_I!_y zn-0{}nfw)?xSeawrca*&@xBBZeJmrWc?&^Y-YXNb%#T+NI$4zO_byCtwQ7R0HqIAM z8IF~2Gi$Vkh0i_|0&SZlM#;${`zzkJ67aYe(%luK9pOj7LsFV9oV2k@N2}y#&g&U0 z9D@-=k|+@*mxJ0*{+=~emJq!)c;egMIp`HHk%ygi=YtiDppRp#A``mj?pDL>3X{TN z!|FsQ& zK6nQH?6VF(HELEDI zgyrF{KmYx=ls{}yvzTBB7wuqXR*96w$=&09IIHmZVF3i8keMEx+U#cn7` zBOR=NjKm<=(YFAH;>-W{ukJh;@Dcb^|5ev{gmFF}>AD}0NymrZP9oplQ3c`QfB^{+ zf53eXVRn!M_<{>`2S~`mW1yHh1zJ)Vl&#Q1VAzQVjw7N-#(%)~r2qqbj|6OCx^^B` ziDMszkiOm;2iq>dolujMpA|ZkP*!MLNpKz2ym7A zG5*L8F<3BreJOD_9EMJuoXc-?VWAgYg5@vC z2)hQ`X7?nRwr;V*e}efi*OB~P|D*x}v40offc##KEUpdjGqb15z9>MhV_!~t04jk2 zWC!}27?cwXNzg<^KS*SIR7=<^uMtPujPZmJPfhx~y$;EdHvpm9m2Xh_Ad{xS%}q=u z;0duOk7l4(42(B+A0TO4fJB6yE@1mL0(JxJLCiQH=5zaH2q9oQDk@(gr=Uc0QW%vjd=s~Aw49> zPmZEM4Dk5Cidy-MG~ut{CErA)#(l0$FVI;TM{;Yd>?HVyz8fz=rOKZIIl)nDxNYtP zw*yQ|rBV4>YZbe!Wkgz_qso%ah?50(UiW`9yvd+{TTl@>-NS-Lk8yeP6*Eew-37Zv z9aq_kQ^PDz%(2rWqyl{tJ=1DUfRWn%&~2KZ+FUFnE}3m@*--j>q|4;DK%Z*yMf@B5 ztvR=Z^);rshC^1Hsk+j|A5G4sj3p-2(qXv3uJT}7PrYb#em{cR#k9?2f_j<<<#*G!@9?wSn5)o!SIoVkseiUT-5p0ad%YhyIH3D zcG)(cTQygj6Q(5pt&>#9-JA{p#kh3WW&mm=W*jnX%QC2SkM|>{zFj|8-uia_WbY0A zqhrc47+orK_83C$`XQ~o>c|>GzgP+$ z-CrHQ>%<)*vd)&TJF3%=dUi+p$MS|D8E4%_3qpZg7%8LE>2Cr%=9aAn20So?#0V8< zXY@b49{TI@47R1pG5rVhI*Gs5?#Rsrmip0}ceFnVlJi9zY>b4^P0eB0c71~K$(hYq z3BCLns!OD4x$aszdD77JWdE-t2=i)@oiI8j?}Iyen$jOKMwN*vi!56U;;I%YV>%39 zH-FI$DAlz2N6nVG1z8b0(y;`_WVQ};=dy`XE9+L`^usa4j)$&aNw3W8YzhOROs@O; z2R>G7czL}c4?aMF|cx3=AMr6q!2ak=w$f5+;M4pQ!LA^2MH30rq}mJPXo<~T+$NTM^oM;33` z7|qIZB^kVl=;QBx{LBCaioDY1&_ABKlsq!4<_g)+AmEs8v7KW$lU^3bhwZP;DRs4S zHR>|jSsbyJ1wI~-dh^#l=P)aXIdk*gZbqmzCZRH}rIgz8+{Yw?Ljp{u)Ae=Av&Dus zMwGW^x+!9k6sk05`X@ffOG4{mrm)&-)6(@lu)S&JLui7T<*11 z#_Oy>(ZgasOGg7kQvDZKLx&zLI+PK(hSF0a*t%!u`<*yJ4FQBE7Q&a3UT*@C)XAw2;Od95YSyU)RW@68wol)vma@gKVP^U%5!6O4C|;uu2W!Ws81;JA4;v5 z>mGhrfsLwKo90IFH5yKa{_?O$&qz-_;;eP}@0h~bd6pR?FxC|NFdEUi{ikK7_TOa& zNy@F?eHZ@@Ux{(KGS-3;hx}yWQV>xV9Fw;2&MxiilquLaJ!3EzK^R4HooN>2dHMu0^k3wy^14 zd?`9H%W}(RSpA4+cFdAAeO4`@9lzSTkh~rg6&h(hr%q40AtztL4G}fgE{?X0xlAyd zP2uuG>wYX5kJ%J-&!7)JNXm0{w~AZj(H8v}v(tBJD`lzAe2{gfq}6az^m}#tvw$he zFyTzQ)!7#5A9qF_#&ODxyB5mF`XT$84nwdZ}k(kRCdk>m6vX9m?v1fGU_<3H$;ctN~taHS&vw4RjTn{^a?3u zMEKsJeW<)RjP9Ggnr%Gwgk>JwvXfCBP^UWCFCNt_ND-V&(kyH07}H-s_Bc=FDb0pd z8?Q$(toLh$gl=DGo4QjLxOCQgR2D~l{(#7}aC9v3V@`odiL%iLyYK`b1N^PGN&-H; zjHdII+BuM=zH7nYy|H0!Uh1v9l+fP6nVymB|8ZV}E(>0GyO}_vmb@K%A>vNlyNmF< zZ~rdBuvu=Ub7?D!i@Q>FBmsdD4V5k7&J7!KO34yUYYkp|`gy^5v{nIs%b}V3!;q^| z%&89L>Hwc?v5p!KWRLx#Z<>0`_D(HoM7*V!UV-eHK|Eltzazgsmf+89b^cRr z*^DGp?qJSRAbmz?sXO=JmDjHKYI*c^yk`AMHd_pd4@K)|k=Xn)Dy!MXG26DBvehuQ z+hOdz9_r+|BeoqnnVZ`4>u3GlD@PfQ{zjSgIeCQ~?y<0Fw7e};;t;tWQ4ph4tKPp^ z88#)ATo9=k7yusx4CMP+d&1Yv0N%-~02d)g(^~MMI{`Nwr&0@arDw;7oony9B&Clm zhl{Mq%gXKqSJ27=){9ED&iFFUuAjxM~++4Q|54E)5d)myt>+Fc{D}sbf(p+(x z32pncYN+CUv~Hj|;`ea;Y)PKY+Dw~``&E^g{|wQ{^bTU&NdQg{^dM^ZwR6m;3J3 zn(~cM=e+H51ChW!z3SeKt;ZFe3B#PTEFp?l$mJegg{pEPA`h?)9=1LMo9Y^W1BJ&!IpPg95khSgy!&_B#Ig z8Z5hJRct$`y zO|~0W#g3%92%bmWE(w{8z)d%FY4_{agoeIw28F*(*4ELEOi8cMkL%^3{@9OmL+pz3 zKE1d5-?}v5Wt^nG`UGSP$PZ=)iWp~ZO6)ENOoZlWRe{j2U`v|v#s(A}$u=1k1M}iP ztX2c(C#8%0vaNo}yQg4XDm!H)cXD;t0^7nok6EeOggY*Zn$RR)ZIu<)I<}Ux^&2-_ zFBs04_hS;r<0L7mnKK)0N6_{Y9%Y1rmY?TXyVN(_biE4#rXukvLH>~hoU4P_bo$aJ ztFk+Vb?wge9j-b{({qUW>mlJeViYqcqIpVA_&*JI@n?=L3Qt!lckAjmWK{|zv<`{Q z@(X_`=uW7r>+-3J&RdEg$aU*zmfIA!;$wDvwGw6w3kD~p+WeL#iprEX`<2|=Yr`a4 zWc5w_ozd~VU)fyTYd)#>N4YqJiQB3W-&M3N$ui}tj1C}sdk5yq?yp}z;=K?H0s~+7 z?9eLndt6&*P598#lr-F;S=tM!pjy0UaVo;@glt<;BuFu*;R4FZOeoPNNb1q-(!$$AXDHDhF-kfJ10;35gL^*OTL)TpS z(x&tk+I{mJ+xXraA>V_EbCjlRv?=`O;$mX8DA zyZ{|&?MnVIQ9WrR7DU>=%ueg|-Lzm)$gYTN)D`op) zSwHSSc{l@)`ps8wH(2u3;CXOY=rT?M9o>{}-nfuBo^4*i`sM;5MSobzZ?jtd71rEG z)scAKQ`fJvr=`i&VRR&OD6u)^WmoCM`irvFpdA5uEn1_5 z2;{#gaal-7Swtl+7`TUz2+)4SdNboRJ^UM$LJoTQ&nLRLXS7Jt7M!B{u7i|m&oIb@ ziYdnvtC6odX#X06ej25+dF10zvddvDr>*t{eI5P^yz%5qU%ju2;DYK(nLB5#14Ps; zd+^IYVc5*oDEkL<0eJ}d72JyQbe{W!ypyx~3EWMc|6ww9RjDQ`WQ`+KiT2QwsY(EZ%B_&npu36c0(s>5e=Lvt=)bu!lSRC1eTp+DD!Jc@HkBEo9%HiJf2-3=Ka#y%SNg+8gWdN^ zjpb)2%Pc@?7XJ@LvrNXkJdB4XO1Q*~h^-JYSP=X>VaQ`9gEN0Jr8855@NU>1elp;H z!92<(uyqTvjCJ|vixny~S`hyy+0bWhtEffW!c$k8cWO4FPd1Z7#Op4&ot#MM@=Vh4 z*IP3W<{>Xgh6M8%L9^|mYu3sAz3HQzs$9^skSkc?!IkTqiyLjR%A#!@mZw%162?oB zHmI1s>1wP^JT<5wkKE?*f{0BY+)6-lgB05o+m=NZFBk?T6bad<q))fdhA?++qKPvv+^WS^&x(EAsK z^r}~MMamu#QhkntUDV<_Y9$IbNnsWXmSdnJRwz@VV3blzzZL42=;=*sJO115p{BJH zVr-GrJUmk}v(ePN=m_po2(?Ca2B!zz0pl^-8^<)4j!Nt*b~~N`JEa}rJ9j=AY|r;Lzk1;p!DV^Kqi zi)8Gmz!@+T5iW|$qVjE=0+T?@#Xx;%up@N?v`t^Vyb0RpJbyk(jUEXr0Zl(~q@JF) z`aqNlnpdvK6wL6&FKuN|pFdQa52XjUZH7vh{43-@iz{`nJ&9+#|8Gdq~Dcpk!?_i`9Cx5FjL#NT94%a=hZO;;xN@M(eteyd|OMHBm~=} z7Syo+WV1wS6iI_8y0)reZ@~eQ?)eIVHurp{bM2koLC}d)#p0l9x#1|4xhTbIL(mT_ zJbylEGHIgea6Ndj0yJ<5Kz&1R$J_Pk=n*9EqM$_2cuyS(c%(k~ib0tAow5*KWrp6&DqNgt)5V;4`GpUZ7%&@wU7QAv|;IyN<#aeg- z2ojlnz_oXwzec+t8o^*Q4rU4kaqbOJgvf@_nsaT@NI7UZYv(UO!6IO(O_Bgm^WPb4 zXRy!C1`wh6JAZBI;w+1mDXjjRNa&0WgG)5 zr@jRoWjRz8NSNJ%qPNls^jfXbgJwiv-fx;Gde&miK|8a)<1;EW761j!n;-}a?{!Wj zj>@!M3ZK*en2xs^P|U~~GB@1MFVI`n*>5p$h;av}ZS`?B_~Hqdj3@852%HZrWQ;&BG{b zW7rPkRZX&}liP0r6NUGbc*zUEFxVWi(r+d2f~o6^vo|Ps3LA-Jm15 zB=jy2m+6&I{$ccHr8IdNUWS0c)%?|?TW#>cU;dc|a@-aqr@w-Yf4f|yqt>x*9pK+K zAP7#3WRP;jFefCX?W--aORVrMrKS!;i1rQ$`P`T!cuOEQWffpQ>>j+8Kd?p~05TQ5 z6<2_L@G4vlFq&mg0eD%XAtc!W@M#4-*)tknv`eDrI4v6hMfhANYF7d*G~t&^gRM=~ zlRty%xQm6EECyE~8^FTVDCAZ&jD_j8TIbsLv;sr5UAlN}S19-ryrpKb6AUrTZl0#M zdZOn%8eG6cOt`%ppNEg=3JvdVdSsE=xwb+D-t?a$2dFIz=(ZSKkAcBbD2~-yJ-X}3 z_WBU!$Dlk}1qU8>AQgaju!Udxv1Q!4(=@s;O)oCjlgU9{ofdTv)m`~&IQJDykA#}R zrD&n0ESTf(ZrJe;zTDK+8028=;p3QR7I7{=+7zH6=(B%d!1cVvpm1&u1kZZB)aZOz zIbh}WS6x(X0uZSfE|H6gbolSv<{jpc(DQ4R7?cc z%7Q=hoXPfCpqC@e6v(*N*N`p2Vg1(E?+a-GAam_ z&MRNA_WjbGJD|yUm$10>kn_{grS&aE((EWvFs#T+V z%J@fQR_3O@*G=ds81HMIPe~a6S9uH07IpvM*O^cr+A;0&LJI~RT+sLvRKBis%dZc} zwpXsqX?0+TIktpB+UOMP#Yu4MdV51UJTDGnc>PQrOSZ6_g^Op)D)n3iN^VxtKHOGm z)mw752k$hE?!D90mkBy`e&w2L=LZ{8&#@%aBgvjw)KPNVX`tj^0k)89=g!D>jhE*U zabsQbyvj<}G1KzYht69QwgtX4+k~*-LUn9!SK}hqJ|uEohR-a?rTnoq%b>fi_w~^> zF56(vlu3{+l>sFl`F0T%nz~5&y7YRSmDESIcci@!+d!=KI4*{NosIQwKvHjm`>b1h z{e0bqIe5eLkYm~_`2p?=?HxVFWfK4MLR4;w(}3mw_kF0}DgX06lqAU&A)fEAv&!~( z(2n!qPny$GZJmQaKO2uCL;6%s&-VQ~son*Et(c#~QU``!-JKIwVzXePgqvrk2y#%oob2HBYS% z-%;bG42um=K5~6MiC(N$zT=4f*nH16FL_huJvFYsYVbT!IcA>x`=VAyv_G$IOiTv; zp8C%#D+*!C`hZB+MH6p9QET40EM7_q+s;<+aCk@Q_V)ITgoO`bVJA0&bVKyiX|-oJ z%#+4?v!sTGammOxFOyCdRGo}R>WGT*3loZcbrV<-{73lCqx4UY=%qK%tavGJqOKHl z;^w_c)=w=}iM+zywS^8AC%emy{G}~V#h`R{vIpe^w+J#0PU;TCL7bae6$6oOmwx-- z!s6DKO3KfXYjr2=Y0ow?4%-EGo-YoSn zoYZ2xS1l|!>S6x#TzavX@NM)Ro6L})I0O+f!kjx&XQ!oKPT<}0nVS@R0wGVYFn!_X zG#I_cc4Ea<6S_q@k{EWV`Et=x+=rcG-yafht@`F!V9>{J4G8P8x116ak$Y0Fk+6h} zsIV{`4R!y0?$xXigqYBIXiK*Ylzp zDaOU>?|aJ`pZ>T8Wt=Gbr-gXXk!{G+EHUhTZtNYt-JE5r)Jfs2d5#zr@jH`}cM@6# zyUL9X*Z;^kTtv!qGINRDCcKV&H~Op7V@vwa-7nMpsO&Ex_F>BI#tyfkj12UN-H-8` zp;Y8A)*P^b#I04aCr)fbORhhZr}!I#r39lir!8f}C-L|2mN(*VI1Kn1*IW|ZdI=PK z)1l4XfRM}aOH7>g?JlpS?-u7DPttRxh&#}VrS7^@M^5$;O(~ozYk65}x-v zQy;nv^13(DC$q=c6sc0J6OT1B>_)X3Yr78b9tn;WUl3i|)X=}<#UD_;^Pw>fiBjFD zMI))BtTfaHLje+{%@C1p%3P=Pj~+*PP*P>6?swWLG-3g?Jb!-Fu5#A%qMxoi{FNH_ zqPRvEVbvpbUA;F9f&LNV)Nb=g4AEBCdI6OZbgUnH1q}=D1;?MI@i6Xcw!Y$Q1TU)2 z_2^GE(oNEnr!xkuC%hR#9u*dwRCQOI=P@MTh@UKrZx`^IzhULK^nO`OaE)a)`D1hL zjfBdFH;dxR1Qa9%x9VgZn4MpXb1q!{DO0(0q%!6Ylq>R9w>vhNfH&9+mO*+OGrv^5rsAB{vA)M=9F zNP3uOzLeXa9(+heYj+9Z%{wtBCn0&X#EO{b?DXkVYg&+ex!?m4D)!qHLrKoz+YnMm zr|HzKm1K4H{!SgI_Ip2_NROV1$wEv{em}*3%E)g~Ym&sx?=xJlePLJ;$@)++2Dmj?*$glJ4U#UMr*H8BQG4&sG zerbMoa)U9 z-}01evIuoLi!nA{9UTign~c@-7GVcQ7=$~sHhP*~xSyz5cmQRPJ%WCoSWzigxdRdd zBq~ILX&#Y`7`g@yAj_bBYPZ%xq^%eY&@^5*~*`)esrSRMssyzIhE(PNo+H30)?I(|BZlejcgoju>5TR-o~ zR}tChN16OT47~GnWnhis9J^;bID0)RLv!Jf@P!?@U8x7E4nI&3^5_eWi_DEqk5oE= z7?qv|3ySd~vtqN0>Fz#@(>;|wO22)sa5jyhtw?3&A?-+WzNi!``|I36&NX~n{Wnr* z%uRk^{a* zOt>%6BzL`Rt&KjT)Mlx^v=pTgYw^B6Ab{Ny0d^raBRr*9-NIbUQcY(Xh;eWKlXK$a zE38gvaa;AmC0kFNu5z}~qb*dV#{j;v9f=p)eY4$0RmUs{z0&2d-s&7YmS)6st`_Oc zo_DM|?oZk=_p?n$%TmE881nExqfkY-2zhqpHs5$k2dIYLe-hAy?Tk_OW z_fwWy9>Me810a4kagawc6rp$%opSBfBP_$xMI=+tc*&K!)OFpghi@2&{JsYxR(!L1 z-zuw=(={2NNkIBJzW&o5N1=wX8K7SlNL}u9-mOS9vc)=+E|$_F*4g&#ID@b(NGDkif3TvlQE^z`>=e`^zdF8_tZ|HIc? zheiE8VZ(HYfPhGYNJ)$IQUX#^(p@6mv2+TGNJ@jiN=b)wv!c==-60Ljvh>nCpT+O* zectQ++o&IvZ7gWY9Dim zqyUFMg$4FY_deL+`1 zZx}rX8{WSn{!1WRGT@Cn@l}a6TYafH%M<`E$>xzoiQ*#Sg9G0tWZVJBAX^dL{R-iTZ{I)lydJew93>m@g5FH^`rO|PruxByroZ&2HE%5uzAD#_(9!U$m`D93b_Lz~; zqk+y7ckJw)RO%Jhh|89LKPzM%FE3DY({UIT6IDEV5c>?cH>vTmYMO{z){yLUtIPXlZCADd_cu9p-}6Cy!#qLPIb3@hM1cj|4A)0lg!3CwsMElV#IpUlA#PQnevjSIMr zuY$={(c1j9_o7Kph9T3N*(p=2pB1K3i_{bHSuLSn;Y49`+c&8QZs>O?0VQ1RLonn0 z;lVG4s?$u&H6@@1oQ4@RcpyFQQdO?0=e;c$9h<|p!9F=`^*N)B zbYYXrhY{mW+YACl@A`)`H#h+)i^L|9pv^QX>skf7f=ro<%q$atwBOpd!^HzT@-J}h zgd2Jr+rn|J)Ui zu{U^v_>Z%5qMMP-nXIMMZB?DLXDiKY(gGicze;E`adaOf{osaWnaxYd4x2eU5=a|7t4iz7G7d5TdDpkoU`sHX<=wE z*;A^3pXKjO^fobJ?uX zj>*OU3Y*NEA3padJ82c+sL|W}tDG<{1w+Hd?8t3VOLAN0>ntIvWLvY@j@X9oh4W4? zlr|yfaLECGDnkMac5ndo)7-I z`FSHIM@?=;`l7+`o)3k^+w)cEo6e^Pm86fz?HV5UiH>}~R*7d;ZKD2&(7I9rRn6b_;oG@O-)feug4xz^48eawm4OUiM?bWx zr1#u2g^h9X5s7ZSAFqYypBZSP$+$OzE9u|LYAvhgVaEJ9e=0TXe)osl9$x5Ln~U+< z16-Ymay7jlSL7DIAyi>R#=u4X;?)k#U!I}(b|*8@QNVx#cesT~;_ zL%6P{zc)BXiTZ0D9$hC=KO+~BByXKGrq)#BV z#;kl&mUj4Ty(4J}lUAK_gs-p3=o@-!qNF-QC4i(Pi?Ca!b;-Ll4g2uA`DVwl^`|B zZX9U>1_RhcSiqZGJ5vhu$}aXAKypo%NmdC#N4_d2fIFukBrep?eKC`&6)Uk!Aq8Rgm zx{BYG-eSGGnodd>^Y$K>)D{$FsDgltAMFJ8AKUVp!RTKAF(nfE&_JJKG zm+D!-C4ZLcQ8U^!W}(+BKt@>y)n)1Gjz7HU^`!um+L%FV7mQmUQBFM;VwNar!%)g2 zV7KOUKU2}BR8I0<=6y$@{UX$A;I+a0j^!mhE**dYb`qUo>XYY&SmF&RG`}?_WC(Df z4mglMGXj+~p~M*dL?BmSl+r>m`ewpSb+8OdNN<#o7}h!zvwuKo$D)@K75S_ubJgLo zUuf8uwvPn%EzR{ZH&Cmo+LxjOWz&@oOB9yW`&y&K$`F*qg7W$|65t`CazM;ibN5BC zeWDNPq~adj;8h&};Rj_o;mi0Syhf@tBb1;{qrUtpXmh&2lJ*S=vnjw1tjcZ)&4#{D zLL5`Em0_Jr%DCI2B-Q#elh1&sR{X5O;zVe46E+OpMfnOY3eMG6_L{;exRNScwTQPF zQ^cXEWb&dYJTp3VarRiQL-wnI&%P2|4gdyDqlQ^RdRWYure~z9d+R%91efN1c%7X;(;c^$!e}&A`0mG;{ zpb;nBL|vSsTxXIgn5E9Cgg{kxtELw5YfEnBq?C21`9l|8nuXNqB9!-DQvYlP_M$4K z@08!JbiD~6qvrc|r3-@FRL*DzeYo;Pzyj8t4LJdZIfSO8Buq>d51>7BAddZRqP^sm zxHe5N*9xiQMsFu>4gWKf2s-^b%L71E{Du?5I}tF7@|{s!iMEfxZ%}rnc0~swk~TQU z?&Ej}O~_a%@`3z#InJ)is;OubZg-<~ZUtw=+4NBeBz}oKah4vf9j(l0dAfKN*$f8+ zO!)9CJD-7dk9qCG>z^gi>$i}~!qBV|0w>$`^89*AJx#6I2-|tiOHYHTSPc`oy(VdT zf6%@k;9yd5M?l3JGene*R!o_94ke`B$4u#qA1lZAR;hI_<0Z`+mJ|96PT2y7jFnW` zH%A)Po0VP~V^(}A+MJU0+)V~{0Wrnffc*O3;pB8?Dt>~MYO{oG4lRIG`HVH<7Paa- z(w1>3i`oF>H7f(yp@SLp@*>C13N9;ABNc@sKW@sMI7(o3FMjybbn|c<5;^Y0 z;L2R38`14tnCf(A({L}AYp9!W70MF|l0$;yC2e?7;Vc=TC24kgrf!~-6*aP(&}3X| z*n^+QSo81qVEk5+#?0eQ`9&|5eceyqJ)Wb^TPAZT2O<1ErYIEz!~M}lcjVK5Lf_AszWG}3Iy4l=05^&CDm5jeF7uE(IkiNF_=;e``^v* z#N{tcd8^xMep-6ZI&Z1o$)t+G%XIzBo!7!Igj)Bp%4g-Q8WWUIbw)}~-8(X451Qh; z0>8UOfOj8Fd_PBvl_2xs-!~eC;QP+G*mBL7%C+POZ{Eqod;rO3cs*2t^2JwxOYz7g zI0-rcK+U73DMBZ(ncxp3PaEAX)%EHi6AgpG(Zh&Ace`&v@kAN+!5G&4-+f194?Agy>Q*7W^_Am2$jo6 ztdF011346ln^jy^;g}b4=ihAUbogU#)%3=Dh37ePRkW_S+YxONC?(5Pg5J!h0=pu| zsXI0D#{u206wbWp_uD23$y2UnC#X(7VxbkT2c-$2qN8oea-Lm?T1D;r8To3=*AF~+ z*7XX~cT9n^`T}Mdur0}=+;a{uvRBYgQgu~wi~0P@bmWHScx&1LQvn_Mx!p!)kH*YL2iu?(N_ZlOQWe0;$!J=ISFeXqX`7k4_2&oz4h*q9x%IuP;vgi#g zBmo(Bht{-+pUQ`i#4lk#N^Doxnxlg45;56;7*6O$htbcsi9b?+s#9m=STc#_bLw*}kk= zIK|q3OVM3Xy|6$JlxdYlAM(+h@o(cou2Fbr$y@}0K@yfFVp#xB+d3Ns^jpRn_qu^; zI&7Ef?(Jz|Zjc;i6p$`$IyGQ0Fh!rS`|nPFom=St2fIu?OBUv;h0Hr`!2xV%*6TlK zA5dQ2KcfHRsl!|z!21`FJhwqJlQ$jP;daHVP(6Yqi1JqLIoY;9kIUux%YZSEh*yeq zUCY$Jn2r6L7_WQ|TZFu9A~s*)p*UI@Dpzu#7)4GmG$zbyYhu#lKB{*-5Hw3TxKSoM zY2%*dMc6oCE{lL@;781^9941=C}pofci6MrK4KJpx$}3+1Z7IK$ARrZAz9W2YD|Gc z?HU%wJLT)!j%$N{RNz50`V61jC@REMNEW_mKWO``*u}`pb(dpq0r5}O&U*AmpMgE< zsU&l42IjotMb6G3YSI*RXJ9te0eGjNe7lV4jkUZ9B6=|{v5c3H_GJ)JO%Pp6pBM2z z=6`GasU*d0{8C>{pOE*7N^uX!j2OcKwXgOWDZx$6*8$IrPgmLspvP6q^l@5^43?5P zkBwCbO$;3biJyMe_H_gZs>JjLXCHSI`1)qlW)2qEK02|?yqAK?c4`2A{#=(3*ozAM zFO3KxM(g+T*_GZbEIFJ;`LcXZia5WUZJ6=oT)(j{-eYO45*AA%na;(j6g1)0C+-^ z&yajCWfj|Bn*zteVG)ami~jh%IjAVD#Nvo9E_eEK61W5c5Kpqkn2Ha25eVeo|IQeC zz#bC69vT-f#qtc;Z-ek!X~hVDf%&5;nDrQ^*s-`lxLl9d!VMIW#Mg83VEBW!Amif; z8JX(gC)V zaOi3QQwit+{4Y3Xe)N=ULn|Aq4MNsmI-;_ zygjZxoXER*K48aR+!E=SXC+qUXsM_rEz>iuS5@$wvj?ik;;#93*M#7`NbQW zhaCa8b^R9&Q9H9deu45UKK>7jJP<`!xXN7~DqVcM90m%d+BA&Oolh^mjy1bTIf}ZK zO_FyQD*SeQbs2H1Hdk#m6a)v#0C}2*+)L6XR$@1Y6-W1%vq`)6PU^C80_uJp%#{m_ zmtNKdY_#7<}-(uu!R^ga)QFni`wR@O1XGa!VU(vtR0a z)i-`YNt{NDbI(9s>jEI=A_ z-pnO+eN1qZu`!Zj@X|%6&k~uWu??E;GyDrPQ0>E8yY-MZgr0HS={=EgCmjR?h=Tl+)OFOhKzo^JJg#r#W+@MxjGs>^>dKESZzUo)a+qvQ9A_rwOz-~ z`R500WPeMlQ6<>ECG*A@=0m+nI-2!XPTOsXUhX2(B!uY&YuGjv7HX#1K4wGPnBiJk zce#s7&c-b_N3O$62pgSqW6f+@gN;3-DMqhCvQm>ovq3_T72*iqxYIAf2eXVL4p}O_ zN_F4mdyF(H#W-zLxq?E}C0xCMROER-n@a1WI5d#B%~Fg~+#h|#v>|esmC-lM2Dy{+ zMXNwCQUUx(>20PrZ-Xgpm@J{Fklu53y~5wET-c>J*pvdS174~Jf~kqgc=?TC`X7=2 z+;y?QN0>Gw3B_~0!0i^Z&R2PlJ>W9z#cFLcr6P9fMl->%KDa4hi%E3@rrZ3MltESc&Z;X4A&uhi$? zxJxl{EcMsZQcs+G=7E(Mag-dzw0Azq#1^h^M-C6zmpIm}OJ*YE?VF@V+;xlRDMqGpqfX98w?C=Y9ELX@^dr!YV+`SFhkWuLk~vckrwbR_GMgtE@~(Yhr-t2QXI=QdvCSG2 zfpdN))%9laS%t5{_`_VyjMdK7Aa2V@sL^(ijuI+1OH`A^@b0pC=_`m=Z_H33DjC`s z;#MLH?b-x1yv4ze5g6agR4m_)*cdKGiRIEieXYke(bc%RLLxId?^PdnDq8-Q)^{h5 zgFdIp!~D@8v2`&ntdToT)zN_1E6O%HdRxxO9_o_kXXvq)RPNy0X`5V{2a0>z7`)h) z>0Mq(@-1pz;(@n+c?bOj*eexGc+swElG>U)PQ>AR|D?-4{MX;$!hphI8JX@I0$ln! zR6Nno9A1cgf7lS6taZjBYLWUi5opzV_S3 zIFSybA^x-@R&5?wxn~aXn#|!_u#HMV3dO{xCPRuV>bMcC*I&H}EvU_SXRCSPh_ECR zeBvwud{KGB)mCaB=^xFr3;pnl6V|oL@Z*AaZg112J)FN~v6`CEh(!MxIu8%u+5A^M4MBn%O7#4?^|BPj1Bsghh8Yycfv%J;9YdP9Y(dc z8Is3*ViLsVol)#6dZ0 zOr#qrtp6)xtdHB?!2D-;4=e?Aoi3Erno4smYhzb@t&SICxe-ne+EVp`B~tvdzw|44 zKWY;#@#qi&Pr}-`Nn~R-B614ujpOdO*+QJZiAit0ZhVtlq0Zblo+uMXCU5;#sm_Y7 z^I=X|M8|Kaoaa=^#m92D&N_Bj=1a#D_@hrO51qYvDcUA21-vV2og>IUvM7sF!|Xe4 zbDt1zc^?dXb`5KE={HW@UaQRaa{Y0pJx?7T+Zg;Bh;Zl@pp~P4+i^bdy;iHr*Czn% zHnq2`kY!dd4FO)r7>&UDQXAiwbiNg+R^Q)aAkJL@F$bvO2!@XL=H^lkl z&^%^$=k`o_Jj#Xh&#AlTWI84ECzYtcChA*%j8a_pzL9`*+7~tV%1vquD!yFS_keqW z*oWUKAP+8-?;$&NlA*5zDqh~`5G-9f&t-r)3C$F27Lx62?Uv9ivdio*TFz}-lv1im z#p?WqiboIAEpr3C`=%?M?WmP!80J{_tnxr}<$jYDF$X0o6b;3tJf@R3L+>v0$MwWo z-W`wUrVB{@Dmd(1t1G~{`gj%bv)U0$%gk0`nkUQgn7=S^*!L@)(b z+(7vY#p=hJL35F7>Mz`*q;Wp^Ye{FZA-|Zd3jeBwb7VDt@c*>a&wvIOHRJqe$?%-`g z#2Pphq`t{ntZLFAy5V9(i>+YfXjcFlQ z;Wx86l9?o2*E~V5k)L#TJ*{4b*_^!OUWkV;T#17;btC1dQd<6ZixPH1^$s} zu9|wg*j#-q$g?k0gjkBvX#RS<*gy;nX+8tU{=g z3`qI@%~SzUdQQb)Kqq?Q=?Pa(>ujd6Ncu~F&-7I&>tir^r$BGjqlgD_D~Vj@RCf=eA2M0+rvi>tiBbf+f__MztC2s<YO$FjJpjuSI&&ou^O4Gn0}^Qqi3qu0iZ!E3Q3- zmu1AeoUZ(JN&Pg;c?NcW!31`#1e8B}5%(=}2@fPA$SPc}X}JhmKW)svCMG>}IBDko zZfZsm;)KVfrP<%9-sRN$%Qq;*HRk5tRphe*`18);b6=v-9Ia*#lZw~Xqf%B6r=n0#Scqh_xtTMTUh@q zR&iJBw3$mTZRn&W^LoC|C5|lUR5crQl@k-&cr)Ry9B{owF@v{o5EdPb_JY2J(T ziRUYgB6;(1c}Q=)EnCAh1`?(i4v8HUsbezBawYjT;byLLAp zlx!%dn1fYgyOM6RyE|t&0hchZ{IJqc2^qVs1IRxlZANogEDx#6?mF+2{C(0+*LS7Z zY!zz3jc{RTL*jyl%iUzO)dNAAGeTX~>bt>w7RSF6p~>NDX(!6#z(rBl8(ZeYa_l#}>qf;P*4Ieq#7OoaIhNqR9(p#}|>*;}l zm2Q*He!)3cpQluiE%wC7{Kv0@U;2hj5D^tOg<;(y6VZfs8Tc4k8xrhvrTG??UV8Ij6URIS9ti5uhOr6M=7SY ze$l9SsZAM~!cheNIr!$4J|P@kMrOOv-*esqb%jwjTehDZ56qmG%BioIVZ117DbW2Y z+>T3Y@M-OLvs0{~Bp(FN@=Q3p`A>7oilY+f3AB$25kn?F{AbGkp+ml?U!6 zFYDTu*{7>*>LiC&=y%K>O02eb#^y3FFBI;V*Mn!`WH2 zMu0_@h8|1E{BCRkp2ZD)N1P~+Q#%DP~aYBEUQ?t zM|KD6j=!{CdAj&Fbb=m9+)`ai)Crl{F1#(%6BpX{wlYYt@Bdc!3GtXzynq&iX0qG` zFZ_L0nJ0T{SL(To!ruBzZ;x#N@Q6^a008l+oy?dQs9bg5yAhUZ=dQZRxWm^uKic^& z%jS#G&pHvKvtfJz4tj~C-6FZTVD(2*%$KyZum1;Ky?}-2k@hB3@~#@n7T7*S`TD+K zXKl$?D3Is(&Q+kD;%*#2-FZsNcO4mcgl)TG!XSywU zF=_FPvplX^;e0@&qG;f!VV$bZlU@++Qt9)jC}9&GtDwIEQ)h;8Qr5i!dq$HTVwF#? zu1esZk>+3)CdNWa@#)C=k3}kUVQjHduS(4anJ#IKwJcOnW0}#b9=eik6NLw&3e|z> z$LAN;#5)k#wA_;~nX79~>S$(6D&#cUn^C3aKMdbC1WP_c_2>N?DNz-^8!?3&Du^Np zH|D&2Gp2PV5p03>j9A8fLk$#Efh(yfh+q6er^-HjD7(y~%Im$`oyf<*u`CPUT_yAQ zV+xB>6C}-$7@QPkK=0c5iP^?@Y6JIUuG@B|2{R@DBdLTyB2&YE;4)7PvIdJDG~8Xw zz6WU0GT2Uop@4~8AOGC2a6ce=g-$hWnM0rPug9dQNY#J9esUtQ(vzohnI%Q&EwM|3=#<`-RZq2E95N zi~cYe3mpTl{BT1iLck%nxK|Py6$@Ut`|Rd}=yk8m+-JH1cB=g=QBW#iEJy1{( zPAgFw-}1D-)41M`5+EvBWrYy}6>F3{`6~P&Qt^9LK4yS8??s_Bp$v&?nG4STXd;iM zeW2fwW8S^au&3qkPW%CXsQAwxH2ZX+GSv*$3~XFhlCQe(m<)ho;Cq;7?Qj7!C_F$} zD+XXk1K@!SMgMW~Fd)HGp^KL)X06=_&Fpbm*MuEV9$3zgZ2nf=khpN8VTcXG16EKX z??Ne|q*<{IP0kk+lGHY_4Xgw0TP)i*_rtZ8D(D=~l4r7aPj8$0zT!Aa0YlVFfyYQF zRlMravY%Y$oZ_1&?#RH3o1kCtiFdNN7P1=#Z3IYdTJAk^R0d)aFz{{(j+NDXG2x)W zwZKLQ&hGsHI-lqvF&}yiHB7H3Z4WODG3~XI?ZZ7jPuyr2U_1C$&vjs>8T`lfIzhrS z!fm4XI9&=ug?fw|x-+pX?+Y%hpcne>5^7rks<~IKH$rx{jrShS1KgP|``?;x_?MNc z85|)PLcsm0%;b~kx39o|9xenCwo>S`yJaHSPW`dR5ksHanI zo-cCS8N8;-lz!?|Ek6SgPDMTULLvNI=*hzO>Ic)+@6zm{z$>i8o6jH1drlwjODs=# zW>zk6%FTJsd;FA0HA)2M;CfZi7F;Dpbpr-ye)S320v(|>6xmTAYKk!;$iLERir`Of~GAbglLUA%-*7 zD$ZwZOEEC$y?lk2gdD^g$;Q|OLToM9xBv6z<~r8>$1}uj$|1KH&T6e@Z;ddn?)z|7 z9f!=0$6WS0cYo8t5qy!?es7YiQ{oGlsH8{vZXeYg&Uat(thpvRdzuqw_q^%d?&+=u zppYm244eUovp4bpl%^=@@_Sv%cF=%3H^dy2*#GtL5^z0J9#Rgx{n^`-ZVU6&S~=06 zLQk^4WyOriH7w3l&+{Y#q6Wh>I`A}SR%G8)CJ0hZkK0bPd%sLUe-NhLM&Pt8fBjbq z@aAnaOawY$Dz=|#SXv1JetXzN7(+a->$9geX`sGPvcPDEKeXscPDvms`D=P0Cq(7) zY>JyFP4`47^~TSn_)eJ##<Ly9z4b@{sV`uL{I6V z=~BCL0RjEqcTB|u0hNK^H>ArN>R4@QRSyGFG@5Y#r!O^Y-r_mB*SmDQS^pOa%qO9A zFB0-C+?7{O>Oz{r?&r(oE#eF9z;TB|feI$3SO~My&o%tzp0W$ekz$f>e)st!TY z4q^9S0)0<(UT8o+%wSPmkk7qFrh~<&Dq%({Ad2y#c}#DTy)a#6G7ttpgI6^ubsXh^ zRYeFL#}T20pRw$DKxLcN%$cT422_)d^Y0p;gwAZzFRY zFGPQb1k~B#yHm=V(bZ_B4KOd|$p}L%+9Aqx|0bl20i@RmKJzB$3dR9oi<<#xLM;y{ z>P|DGoKyKypD3`T-w4~G4!v75d3+cue|D`3^o>Dz9{@-S?Bp>#B5`N5qI$1Z)v8k^ zzfRvs;Um6!G6S8(jFkg4N59j2q$myzL+ppV1j(_;A|}vt6tRm2bh|KlK&SDopV;1U zPWIm?;o)|#%TsW5>0P;Ws7@koHC&`bFo5WM5`U*@EmkAT!D5joTJ*)w+ah&zOtBw; z)WmmE>;5y(vL<{fZRGss4FH(ZPP)c90BuG9z;L9RxpWt-{~5J%&Juxm%E1M&c_;5+ zEj&n*?0Er{N7igm5bMYI;l5tf+{$w$>N=qJaed<;NT(lMm7@rF-VlnQRn#Z!=H|E` zIYZAq9xEmI{rc~hv?9wtJ0icrv4GGnfm+;7e}Pc^^TCBCGy^lXfFti_AA$GyPFJQo zT_=h*q38@Zbm(hOp8-zy@0aOxk7tA|1cD+8D{cY#1b3uRcqz#L?ayPjJET4tA-+YU zANC0ps+t7221LsOv5-lod0ZgGzDKz@wRN841)~f5vBowQ&550P90>@+XabKZ2XNMZ z?lK@Bi1lC^;60uBvII&2=$+dsOPo1lsnEQAOiqo0odF%oD;#)uN?(QI<#mJP0AeGFwx!5=NS8AY04&kGKL zf9l}gnZHGY;d)80K+CA^cx0N4Z>vI#5??!7Y!N+YxZ%6}RKlS%udJUR8> z(h(uJ&rKonTUgZC0Be${(FHmF3j+zL`FhQP1x2vA=AMFs?gD@wYM3ex3fq(Y4*I0=$0h<4{aB+k5NN$d_X3Nh zaWp@VbLf{o1F&BQqfOvYeFQp~0`4?^1Zeyhf4Kq(iB%6Tp2)DhM#a}Xv`5yh?X)>e zz{!Xm0Nc)U5a$$o2zL*A15*zJf};x?<10iz3P}uELXT6SMS_6y*l*8MyK zJ&HU;dQ!qnslf1gYsgf6q{L!2^Sl;3p#FtP4QpSJ=s}P}w@wGbY70@PCd#fcOafgI z>i*PVNy=xlZ6(%c3`=5QJq7-L*nL#OB>!vk=}mmCNnGrCFKIU|+f`lA40;2A-=tIO zM=SZ<8;N`4P2So!VJvS#_tED42BKa~j&Mu>l2lGPE^og)w|dppy#6bQz-Y%#7_>G` z>Qv;y>#Vg|;B*?N&=w$|v2o1$zT?IJdI5@5P=ejosrd%y#v+nMOanPb|IWa?lA0#j zZ?mV7N7$#yfK&ocBwrk1{+zUbU2im&AA?cuy^Rl_(K>J zPRfjPv-M4B{C(SkCN=c}IYHPqLVu+LX?@tL479t~MK6<2s#DG;Ih$@Has!c(rY;hx zC-B8cmxgs#9fV}-IOo3U&6Dg$z!`GN)Ag?XN=qeX1NUd% zY*O5jwr8T=8{pddDcs$t>_M_>xz{+X{+Ow2(x>vv(_2_HGA?SzpK*|Q%2z2J=+Zc1 zmwdOfJ`!}qYAVL;SDt7W?CZ39a&qxxaH_ODu;fLiCGz|X|JzLVDB^TN$} zV`Bu0K!;vm58_>=EbL!q`(*s)GokfX(;m*l?sFkezI~IcQaLvoM`?MKduRl-Y^WaJ zd=ija4i+w4jLE(Jq(Tw)$If&3mn4OJWw+MrMYF1kY4K5%#2^trsl_3#2R4Cy^Xhiu zPa(7uBT+hkcI*Yb$IG!Vat?f?PWivqL=UPM-0&w_RzULtWMuvO?SqMAk*2q5Kbm)D>%LD-!IDQV4^F=b zowQr#&Jzki#=blalIZ^^rbnM|>|BtX7wFRCbBh6-V%m=pfS6{mBp@`qxYR6BGTy4S zT{)1V2r#o}Sa|h$*JFP);a{8L`(MP!xCh@}*VY8q4%?Z~OJ$E9Klq#Da2|=Y51)uQ zMZ0;FtjwLYP+5Qcyi5Q8(-~1fzqL|qDJL%pG)BDa`+qe?RK{F4n$jpBy62=kcFHRC zPw*J2Tuord9j2;~bet=m5+of9a*2Hw`70W^s-b+~C34-8YOy~BVyU~QtNR2-oparS zrl(*Pr#LRLHQeuo`j4HNP?os6uGV{^AG?13_>7J81>;_>`I5vGEBMYOhvQx)1=Sbm z@lD2zq?H^U0auiAg+335cehT)$G?dvD1H7lxKuFmBT=yAsoK*v&(Mpnfi#zHZQn4X zdfJ5yBCDoyKJ#1O^+KEu_6?6mZVO0dnkk;g7Q`uBc1W&X6DKU(xTv)*!ThO8fY63u zZIM{Q^kP{v1#X*P0hjak%h;k|;)|o|g*r7QZuMZ}-v3%lc?u3(Uwans%H{>0!lmzX zl7K|2>3h2HOSg9Qzh?iF8U6^~;+s1#qLDtSA-<{B+8!R?!uE(QBq-r@EGnBKc}YTJ zBdJJb(zbvLK093rBUhjM)Id?6WR%fWz2yIPyvDm0L4v*7U-QsaLwgf}Cz{n)!d61h z))Ho|2ULA8Ba!}ryt3daP``Nf+=;?6StN32s?o$|9{6jXb0)APpkUOMdkzKMj9HaW zFoS_8g`?3-{9O(>ee=2XAH~)=XaA2^3J1TMoDCT! zg+DI#mv+!Aw*fVP(JVQa*q!-G)vOagm;T5c2-39GF|f5wkb|GD@y*JKI`d9s+M4rXQI5M*-VXZ6l>JaEQ)i9lEtof_Ko8ezjSfB6HQ59Vzz+rpd`K09QQ zs*6Q6bR-qY0jWBjT#t7@gx$O=R6^YCaFdA~$f; zoJddpIi2%x(eD3$!vl|+VZf^|pd5f5zK8;ls3c9YsO3r>zmm7#HOp+nmx;vs9AB2g z;SJiFtcg6o3iYIPHIHuT$;ncH7;Tfqfm)^JzkAENS>O2M51t3pGnU=xfyF)nd-PpV z@zXjtYLgcD?I^$cV|nG><*)vzrJ3K~gGncjhJ>t;aed!z-Yvw{AA{uah_k%alEj1y z=lwJS?>ZZZ4HS=F-`$1w=E=WXi}1e#`C@t%_lpiA9gCiuYh#aH}Y`I&Xf_ZN@az! z5Su#%QYHkhUp=a%dz(>=xDGzulM1RSUc9|s_3PM7rRwM&PK!26gfO0y^J#nxa>Xm| zsXUf_B`Qak?&9`J>M0$2Y&a8}oOW#HOHoo1hEFdeKjwYr8=&NmhFx|ypEjBL4;%Vd z2AW(ppPmGn4PV0Rod=Em;dN7{{$_fU8Fi)(w9}zph0E`HJk$g?Gw1(;8+d&eaP}KT zZNTc;C5QqFFxE7rF*eO)g*@Z8M@X;b>fH3q{T#m+po(G5*&l9!>@>WrG~PX*nz~Kf z{k?=az63?h!HXk}Vv{KbX7^aVl;2)gJGQ2ubJ4tQCM!&PeuR@46y8DT{HalXx8?qc z6fB;($X93`{tjH#>-}xhrvt%sY7lXS6HMdTlBw|$_0#n=%g+1WP-Kr(%<*V~pjhjk z@3-jJXlrH6TW)02^B%1`{@ZeN3U-M0HW|5$|;JDYHDptnc-xwl=(MVA;WP+u&2%;k42HDqjUYY$E zseH3?y{T|k4I;w5eq3k{iF!Tj*BcI6QrN8_YI+zh_lR{7QJuh^T?^;&XY2 zSxi*kQQW(uH_`Enggh=vBbcGXmbi?c7Og0wZRifomycc#a4RB0ybCvdq!4)nHAMJr zm^GlM%Ks1*p?T^_e;#UQ6Mv((=A2R^{&XgO*vj*_)%DZZL zRZ-s>A1J&hd2J!Z^TpzyJ>AO;aR_HolvQfazyU3gnYQRKo@+Ch-y?DKsv=|*Qwi5l>NE3v57fPsW~~4>=TDQxSTWBdipKxBkCvG zl5m-QmM-iyba^6FL8bkuxpj}_TN!5$La{u2EyinF^%p{r8XE=? zju9P%H{%w*fW-lucV)e7v8+OCIDR@qWhb}%cz!g3dHA|fIy^qmu3Nc@C*DSQlrF&` zl-rg!mGTF-jxWPDcM=6g>B+WfN!cpaY#7fB_gvtq(E4wzSk-ruypP*16J46(2)X<{ zU(QVSZOj+sZRF5V(W`H@FP4IfW9Qp6vx=&VOAzh03K{dh{-pwC!Btu^*Mm?jk3?6`a|CBT2A}2Y?a5|*GzO1Xs-SvNvC}Sn;8b&a4HKP`A zdPehneSWprhAlbcR8{Zc?U?C;ulGZN|H(ICo4Qp@ApMUdA>) z)^Dkp^2Mn5pA4mk!pd$*r@kA1x=cNDFobwlU%QbbHFfCXau?`J6^#4qExgio=v$6U z@dG$K=5c&|6}cSU%6dP+mm zz?qGj2A>cu@?(#_;4bEi2lQwe*jHu4;O&N1rv<6SSA3?d!68LoZU@Ec)9i7w>3>O~ z)$&oJq41H#d;vrNU5N*00kZSA9c|;?&EqWNIIF%79Qlo*J3m8{Ii9*;38y6qe;w!4 zx&QqAiUeW*a}i)I9s&ui}uZbFDC*2#ZbaQU$hHtrR`TmM%pyJ-!uA|^%z}ROLJM%ll4H~Y9D@^1YnvDl|Su;22mTFpze_j&9hp*bX0Dvtpi^={|ls0_t&Q0kM| zjiAK?@!smEV{rO#g?T=l%UeD9xd3Zfu*I2o%gf=oeUWpRwD3!w5waQ0m2|06(K$Hgk%|QTgl>E5vxsFP!`jd6 z-ofp;_ZZRWRg_D{+ut9J$P9>|S%6l8#BwLm zqM=Zy*R?Egq4WokyuUIRcpuw~rPTZ`e2}Fci{??He6JG1Y+z~-WY%@bduR?`Ec=zE z=936-kb;_!P5LV|PjPX@{exADnbIY`>Arf=A_oNSo_hW4A>`sH<%ktZQvK!O2Mwm| zeuC_oJXVmjLmi@rVNGy`;Uvf0-{-bg%B=W@h<*h^5vBnI?rpx}suP~FP^M3bh%7LI zHo@_xz&Df>BwDzs8u3(xq_yK-dLw5208jY8G(Y$j!PEb=@S$cX3u8CS)|hUBpiL$} z^;7t@swQjJzp(~Y>L9ZWH6pc#gl^YNc|_d$AF#Z-Yq}SOp0aGA=9E3w+@Uc#WjhJS zH!sRw^O0cHq_K#$vcFua3T5>R$mSaoIc|$3azKVGqyR?)uK0qTGjJ>ovyWbBQ)mVj zEa|EM-Cnn4>yW+|?KO%Oa8rU+AQx%S4?0J;@r!N%{aI=Y@SwUPrsXCNa z)kKYVbmK~A-cdI)Fb+CeBVd{lA;TB&d!V_S_cVtP0FR)#ke65gJ{z$j4 zNu2+M$e~0ozNc&UoCPMe2Pwsf1pEeV}v|FqCVQ^qjhvhSS( zf!|AU?BfE6k4-}~`P%gl+j5HYQ&J>dq|&GWNc2~W?EHWSnm44;#Mad~iyfnmu>ao2 z0eJT0A6OBTdvW#XS_cv@1M)R))yI6m)L|sTHBF65>Lj_!N3I|EackMsvRrU&B@lXT z=Ya#lGz93ETjY=;W+=RS%Zg@WnYgUZr>pk)`wEdE^MCXZJV9C8%kQ~o`Wcbd^S|nwVJJ}?aO z91_9P$#Lov$s>XRL;osoa#)p_bG6G8o_` z#XM((l3|-XP>h7D`r}27q5T8}AbmJc+^GppGiMKYSq>06cKB;qw5r3Td)oT+E40>UPG4LR3COjfsbP6{4+m}9Qi@>p_ z)pV#|lc1bK;6N+_K>;NZvrIdSo`(AxS_O~}^q+=m1}~^>{wOITX@}!6=qaZszN)_z zMUmO2$r)v+lM^zHwj4HmYC_jEq(?EVg}0C~W}gAi_C3C*g#6NT?|-&&Wm6uWnqMpK zpK|p$v~y`f@S6Ob)|lIe2(OBl<)<;GDr9)=TM7g*C0e)y!#>wusrfFlAKyw?I0MHj z;QFVC0i?P+wA4zR%OFI!7IB9h2YDjlwBF(x=zkE_}db{SA3?3F_Zf zdj<{;soT#PToV?~ql5o>*e(u#GrXJ{>vm{4udfVSQUB+YOA1F*X_KrB6)o>4H zlo3>-hXdLx_FxI5K>tLZwk~S+1E`aL^I2_y1PY*8Ekq86@&8Lvb$)DnycAR6q^b*0 zY%Z3?u@z`2_`Fc}_2-r|c>yZ&`1M*oHY#QGiEwL<6mo-B_5IG(!LM24uNixc|FfPd zMc`*bTfW^~gMi_L|TI0RrhTSx`% z87rE|WAC2YQMR7o*yZcP0lr*7kh<@?AO#4y{)5>0V{<5$I6*k9eA!!k`Sw{uy+^M{ z-4_-yxgvz`mken^o9uEnkvi?rMqDPK}ENbH7&S@F3{Fqq0uiffzaK_ z^#O$tN!#PvIb0ehIuCa<2wf5j8~j0LbqqmGZt>QMPI|mF90V%K_u)bdD^*Qj|MT02 z<68a^8gR~@*2Pj&KdUUUd4Z)uxu)*fSL++sRm#9QF`z6AkymrSn1`|MDP61nFL>-Z zJNUMwS@r~mLGOkc7g;agM1CA^?!JA|zB|1#t{J$1q zuC=3?XRH3Tkf#cZ`IqGP`Jt~ottr_Rh%YZ$W)@9vgkqzFKy+m`59ZqNK`dkF-9C@`|Y#oj021_d+Kf3)>b{;&qa}o|dbAR7~c)k%|n*JYg zi?Kxfu6RVv0)%Z-^qcS+^w|mcHKSQWl%$WeDkl(@ML<~MvjD6aKgbzd_PI-k0Bf(c z4IprkN!5mk>43*6n6lCE5?|wuA_UI=F>((~8Uj8nxXS!K@iZc1>(SxA8RL-qOL+Bn zH4ayj{YhD-s*++krZiuRz1(!F@?!ZynZr4tv|@XA-@ajM?i!#U>;I!4^HZCr*rET_ zugy=LuqMx5r)xiWuxH-OGz-{rXu!NAEJ$W=8~&o{^zjowZ6wmmz()g(TNN8Gd3dSLz*%rOyYiOi6=U#NOqywO)iDC@iU4pA@P60*76!*r`yDOi`G_D#_e)oy3l= z&1@eL5m)4C*}wgpdggKkb|@>sXE!D&WbsBh_nuM!V!5kuW%eUbcfJ45S7UCR+I+`0 zcH;9bfos)<>&UB~yR@~rt%%2L?_Q#Xfj3G2j0K!q^vICgWxysMaxMT-tuWpYE)=pd zH&mWw$ZW|OYt5HF^eM=BF77Z)ZDG+91U0(iYWl)e2^hDv8U1O&jzp-k-ax-tHn7Ao zYfm`Yu6-}%3pxLyLHH!AKSwN&iS+pcj}(OPHle3yYSbH-97vg%sx)L%R@fssqqvlC zm(XI}jE!$ZUig>&SU(AL26z7R$2-=nqMz7{M}c>CF;>h@V+0Ue3nS#ZpDvEyaE?X$ z2IK?^i(YS?zn+hHh{a%GNM>>3)hy=0#UFmrR)U}VC0q*(t(U$NdAA1uGzz+~w{6?u z+06lXqu}W%X22ZZvvsa5>B<2nWNu`A%@GS{3n=6qijiMf@i^w!`tNDBxJeGJiaX&$ z8?~|k`t@<{_wn(-i40!Gna35FvMeSLjr6{Z$`Ss;0+5$Cc zOQo_6@P;hBvb-~e8tli6oUr*SV8Sh@pSF)Q(8EAP9(`xDACdbYVESL-D71TO)0}tH zo^)ED)EiaYUqqZNA^rmt1GqZ~2v8R&?L+gQR!hOEq6zS@7tj8*=cNH6NU&#NfurUp z<_Z>U7?)M)Net?LTmZ8lesy_yn$YAy4;Ji;JmIBgo+ziHroT!#bRb?|=k;C`lLTAr zF6$-}6xMR~)W)WA*RtAEz#?NBu3aRNjUZ0dL+gUPlXLG)mttJ9r zIt+q?)r|IY;XL4<3;)MIZFoXLWQ?E!$ogpS;5_E87F*&Ud`UCdtSvIzSA_K@MYB@P z;2<&`Nb7ba`6h3;0@Q~r>TKEv{9s#5t z_B+5w%?zMp3j<_75a4#5aSH|;g*k^%c#j$VTI7uzi$U*k?x)8zCh2A(ujSxAy0QZ3 zTKFf|-L0x*+pm(leJ~VOtX)cd2zP)ZY4`$W!10o)fXpr;C47{1-*!+=n~ji0-pe0x ze!vRjMGhkKBa}m9gKZpi4R{?-eC*Q)eC*F)FVv5&v5@?Mwnu>r=nEB=T$lj(dSU!Y zc<*iaVeeQ`)~@-_chzKd|3z9IyyV*hIWpudb&3qi_siXDd)w%||1$PD50X6!qq5CLl>onr89+R9T_N_b z06xsYH{tQJ0T@MyHbgCF|C&A+kDT~%3;-p;J8~va!QqP-y2^|&k6OQb-qV~s&7RVl z?-83Rat0jLO9!UoJTP5>-b=<;%q12&jT zs)q5+1lz;Ejw#Y6(CFR$0g67$Nk9Po{i#F)H)B`R%02^7RIb=}s@x+0CoFJGaIQ0> zAJ)+jflPKESoUvb_?>iz5WEz8NcKZjW<>sbjP zZPEy8ar{&rM`J-S;vZU>jwYC1xM{_uGb)|5MHu-q|DJ z?!N&3hn#hD^f7V2BrplTusQnV((!DWo4Hr`M8fduD!9q*p7D_*5 z66gW+_V~wkWu)SHWi3ACkdHL%X4LWk73bmlIzK{5B^6)&ZlI~EU`ziq)w(NmE-l?4D0e#Awz*d45!-@w4m5a5wLoiToVCz2XRKMc zXq6&Pcv3&)6Z0;kP)UhiB5jfKMH>9s`(C?3$W0no20HlV%yd??kn^(38?<%3$JsBR z&uKmr3Xr}?dsKjrabvXA*?RO?fT?HFs%0%o>dEOpQ7LFeTNz1kl6XqJfhn51AppcU zb&V!71O2;8`>{Wg68=C~&-eH>bo2VH3e`sQoY&_Uj~Sy4Q>1-l=@m)kFa`2Rb;c=4 zO(z{3LY(nZ_b0p6_AHN>ub6LKFCA6GyR2t0UN8L3OxCOW{0z^tm`SIK=43y}e7b=< z{-Q+XSbILCyK20*DYWEKj!hs=aBCIpb2rlU{Fepl=ZkQGf-q21w-`0UKd62C_&(gn zd(B?!%Xl8`sd)E}rOU}h_<*6Rt||Ki;ihh*vLOb4DQoG?dDU|mDrOcLYv{~0eUIce zb}X*Qt5aCKrpJS%TCSbAH?)CmCz^V}@}bI;EZqjKZ&eO;F&X4m#G0`xo8&}Vve>&n z?m(r&AdKIyym1QT~yb3ciEi#(aDy?$% zP0ci1_2Tl@Kl{?tz={HJq530d;s7+i6DYD6Zu&+^#YrD+Ot| zuM2)b;4~-U#x=1wawzG~i2;HdFzoxhB+KN1F9aRpYLH4GMV{UxhQ9R_BBFN2B4sGe zr@He@h3-h~Id$Cv$rtg~s%B0c*qBPrR&f?h`5E83v|^u- zg#xI<+i9Y0iNk%vki=e#q)O=; zgupm@zhFSiHQ#G2>4}0j4U>`3*Y*CjvBcCrJ@R|ChiSm}`}?5XG^5;K)_Qtp&z#vE zIPvq=e%ig=`fi`UFgvNr6S#4Oz6yI7<@ZsF^6gMZ^uXB$`@YxL8)x(~A?G?mtJ>iP zxA*YkXt~}c!t7=NGNU0O$Trht>BVgQyBRwYM@)i+z)&h~Q6ZI2E7`HT6&^>Z4~9R% z8@Nka_uj}T`jTHLVGg_OuI00n*{0wjPfkkxkR&~iO5P}MsnE9wo=i@qk4$Lvl{ppc zHFmc$(m!MpQw;%|h*rlc-{s7S#ke%l2f5;9-z{mbp zeFK}jhfh69D9T5~l(V92=h{o{^D&Kl^XNrSJ} zs<4|k)Q^cOlZT7)A@6W<(bAXV{r4B|*cW`w?15Qzg_5L${f>LHpt&~Ch?5C`lU z6mT;BXx#yWkKGNKoV;1zlfGIcTjJsWg>IAL_*VYVm{YO!@mE8#sP`}D1B%8}2Ql4D zcu+vwbabS>17y%`LPewhOie|=fKL6UNCW>ab9v zx^0j=dAK8!dh>MAPVgk`_q~pH0&NVZMDi#?ZIC&&j-DB6R$eg}(#M*IpSjy!nEi6O zCW0WcD`r)?F5#v4L;GB^uyvp=hA@3O*6c|{QUk5 zgHQP9{`3@ZrBc4WrK2ITRG=t%rH+M&&0R3pc|7QcFq}{YANE4LD#3I+e-ZPXVtkH^+CAz2Hun* zew{|KGgES|)c=|!seK?D(zb8uNWC~UJ+WJbvM@Pf8Nc*e@0_sPaEgd{!<8?EUoh+W z^`oBhes+3To^Q{cj!R>@5520YQStA;E+W*W42~vu43c%dB3zPrm>OP9Ui)YC{f-Ck zbeUy3w#yu`6TC1@s9+ARn5#i<^YVnGzc*Qu@af37wZilvhWTf6cP<{W;gcF3-R|o| zI*lhoWDJAnDWU3EzOJ8FpZM35&;6Soyx!0+AHk+Y@yAk{`VJg!5tHtp!`k z%yn>3XhKu1+ixs1`p=9_f$4NEnAPMQuA%~B2Lm5cX-)Ex@RXg11?KqtqJ;yGUc$8N zB89F;3ht!d1usL5-)oP_TAV{R6^eW68#IFT@OTTg?RWNggW0WFa~ryjb;2nHWdRZC zpcJXq-e(Gl-lDueKP38luznL>yim!Rcav3gXf`QSig(FCb5;36VxZ*=TC{)jhSciHvX0wq=7-=JzrJfmsPM#`jGA zFyisAZjYNeQU3Cstw%a}B@fDxqvnxo=m%KmH{)gj1G2@8tI3OR#-it&i-+q5C5tP3 zjKzt;_iS8+`cS(e$w>DfpAu~Dt(%Ndqg{$tB`SZXG^Ds6>IjW)M|qu%i$PTkn-E=Q zH|eSNFnU)cyPrzebVh0-j-z`o=tk-rc$_1#fxoZfZuy);qW|{w%)sXE%u_A{9?E_4 z4`-)f@I!(v>}@^s^~4_+x7AkhwJMG_!yP{I6SQ@{{6fEOa^hX|s*-zxPdCRL-bSAa zkvsta2&2ahAfYXga19qafExOl;U|jS;7g!!Hw1s)-{Js@+#4{?Vj(eHnPs%*$jtg; z@pb(%^k=ePZ^@NFwC$uSOu5i$o>EpUPZl~MEpQ^P7oVVTPz2b+vI+div($8xZWRg8 zveDUVgD3!(M36W1;@W1D*)kO{Xp#E9sRM zL8blVo%I1*o_)Y~7q@1954>3@=a^zU(|t&)4y!;JmnPA>suI^&_TDL?4^6{8nyNy0 zmB?B6Cc4GOc-kh!djYSyaf;4dv$&9KsfJxN@KkD9D5&b4&f;$q_#+4Fvi;8Do7~|W z6E?fz&A-?7%i)tznn2GBTvM-vjZ`GW7+3l_#RnItTh+IY2}lme-l!`)OOY&&NS;Qg ztPSGj7Zfsv4H7c)Dg(1^+KX>!jgDtIb&SZo!OE8CWPY$#t$x0YdF1S(_lFudD`HP< zF#Z;y63A)~oV|Cz--vxj(TR7}5By;9Fz&rtV1zdeq@Ly<_BDM0wyIP2DLeLK>JGq{ zvKybNgF~1!V$i|~l{Xwz8aDMMKc@Mwz?X^J@z#Sn2hbKSw1lGJA?`D9!J4j1%^YtUW!^|^SQl^mb3FE^j$ZOmN*jnKK3Av<1fhX# zOx%3A!2y186dIreF30U$Fju_mf4W0D?-2cql!w!eah+WMW?YpiYY;L5*;}+#Cv14yuEH%z&P%VON)4dy)OjTTo6uDuJrlYD2^i^`fZ25AnBuq zwWr9>5=NhUN@oGI$wWU^vdjfI>0Bpo{?&Hd@`ny8BPhqK+;S86BXB}zu1bErHftb^ z&kC+EcO#lrEwH10Ka#_PXYu&^Iu`}fKKV{lOf}@l%vXPN3?-wSn=(O|RuKt~!~0V-b>!T)6|{MZG|98tx%GRM`<2$Z^Z^4t^UfGm)$rb9wHYo@rE=-3g2X zS z-vO-9LEUHBUl+EAi{5&ov6N7$jlyvHz54K-Ef_-RO!XB1CgdIql(w@;^yEA2*es_>a-1 zeZMIZLfUDvO6E#;gHtQDn;X!PNXX*hJL5XSxa_foZs>dpnU_k$?s9YDWw#q*SMbkV zuS)GP=H3)6<)!%TH>dHu`gw%ZOZWIDIGCb_1tmWnpH`Qpj_7>qrOCZ0*_iG=obGC3 zb9R6OilQqBe*qYondQ8Sfp&ZBezEPMj|%LC=e~66N{?DtjGlp~FK8uaddGzYAO-5;1n1MNWEi*iQe#o^<@^}3ux@XTd}&hKJ9 zxO~M(_#pg}^UMBooi39Ahl50H0aji$$Abu#^KrMVrYJu#;B@?VyyY!evNIpfJtl{o z`AklcoPT{?CF5t=FNS78p>3PN>==}YeMj+oZF|y++{D{iM70Sr)!xrNbA5UvDEjlh zyiI==YFX326`fDZPd9fPAyb#j!>7*m@a26!{9BoM^NxeX&?JX>xp<$=`;#c2IP2nx zONy@ghM~~q>Fr3BMt=wE@`Y7G-nxYZjcbXp4PL>`BfIF3RC}<~?~NbFW?uB+kITg$ zW>4?Y1x+}~#Z>o6k5n8<=rR7WzzI&A7gnL$n3hA)P(or{Xphn^R}EqNP*G4E$;rfh zynx);%;*{G-&$SFoZsen9d~vt7QQhZr!%i*gX$-;g=@Z*o);YBb{5nwd>!uC%=UmuW z!Z&-bh;&yLk1Ines0i<`^(i(3e`4&S0(;HZE*@m6QnYgkJmiY; zFGo^M+jw6yk$gz_c1Y>3$Xw2UvasDsfk&0Iy>8CdX|r{t-V4GT8HXGJ-$fc5G}h;x zk|Q;eK};`=)V||1$kTyu1@B64Wdt@z1*5uZ)7X~&*%nH4#~R#MGWXdS(IzqUH^FnM zcRoPg$x!@}dBxGrjOwx1!LqPG^BQ@Rjg>K10Z?2gE%-4pqa0Uf;_C1_nKn8yzx5VS z;g*em2S767;o4rCx2gN`alc$^!=&8?SGQYS9m;!H*MODlUpij@3LQ}w?&z=n-Z@sT znTY5J z5ytMPxAsx^RwqlG+~>QGaSkZY+R{<3>j(%8EyWk1X~$^lz(^@iNu7z$&3Kz~MN35tQ`AE#aT= zY86ePc}Iwkn{11G3NR$-Y`wTr8@~hFb&o7x@PV>`%#1W$l^Q&-CP0et_vt9u5*(x( z=v~;6t(Qm~Y6P2V&JU|<+z80GE16eL8%M{Py1d~Xvl2&oqnGm14pwudzP%Enw>GJ{ z#d)KKb`3Gvl$A9_VOxSw(~n9r-dslmvI1{cZor$#H<()3+;Go@PIx5D69VR1f6%@) zioa#)5Q|6T(UI2+wA|A3J>CL*ZbHXi@N?G7l#wTaroSJ8XBTf*C4WjU$a;b%Msh4= z(%6>Hhful)S8mH?`MC*`r_=lAw|Jb`< z#=O_RT1$Ac6o>E;ZDRk~-O4Y>ZWFydL`ezX_Cy`m$1a|#Jey;4t`dBGXln9bbC0WV z4Ixl&b=%Wf96YW~RDr){^#0@-t0P&vYJs>W_9uJt6RKMstmdE^nH>buLU7d!^~(Cb zQRV;+7Q&&t{a65}0&i+b2x6{zFvH%5z%W3dpQ9qQU5e9e`WGaxkN4P8F^qTF8$_F| z02LFOs$8pY!9mc+Ej13*0VMvh?k_?`Y|+#iGnL)k#>0*Q)`Um_@lV~+rA2zQ0 z=}&3_=APe{9Ny|PMz@H0NP{d#*6VU&aP0~q)*1M>X}anJe1#7`nqKjRyeZecGITpR zuv~?l5l`N9)7rB6#LUn_7NudnBMF;!o#4ox&Wf#pSRvrWh7DiM2y>2OeRZD@=!xng zhB_3r$Y2h;6XcK1Vzp&&43CDa=~yw%(M(hsSLv{eW-gbr5zK64Sm z+kz4~2p8Vko}{drbC1pbi&GU>^{)NYQRP1}QZ=q3+@ruuGo$r;=9DH(Du4OLHFO|_>uXN>BA!-(lV z$L3(Bhdw2mZxCuPQ^(N!pkZ3nGw;14g(*H^pC}vl{Og^;q90Z%RiUC4qwW4*Z)^oC zd}$8ctvm3s{U!zDFjoH62(s9KgyRkO!op^EYEtbbSZF~V@9qR0l}gLR@Vs}>WCY#b zB_5MpO&VNz+Xa#DY{&Q|B)?yEdu)kX_m;%>6nW4pG#xr{y8iu{rZcXiPV=h`;U_Eu zwY`LC(Q1JuN5(4LwNX6u2gwBQFt6;_g&a_+hZ3x3zh}-eGX`7ewow5ZgIr6fa-q3R z%~iw<3wd*VaoArT)o)?;D^$;StD&0WJ%GAVtW_s$2OP{-E&2neuU@leNsLAAa4$B! zbiiYd^~qCuF4O(_l6;sJ-Cy2PjL{&`3!PuS=O_KR9ynA(9kz~wzH&Xrdxfl)s^XOL zbh9rabw}ATHfx}O=D|v4h_BKz9?j?-nMOzLJ2Q)tG`PSbr=0IGru)hQrN0F z%&^^8gk034O}$oLEvUqqoWV*=KQ;kQi>MvQh3;qv1&J1w6J0&a-iHw93)1a6XzYP} zbL0l!M}O)je!=g_=Y)SMrHyB_d!$I6N9_)~2W&ks`yUrzH08|_Quw8%?4Uc=-zj_V zV{VNJ{EV{sn!qalX)ZW}9H4tI*kpDKZ`~OZt4t@xt5mn0saQ!Ik70x@KF0frGr|x% z`rmYYF)bI%11og3+`vvXD~<86(WPW52|U7?4dgL*sBb0GuD=sgg&9S3D`E|rWq8!a zLN@HjULO~_zO{<^guqQqo)3*)!_49=X;fDdV*-|2L2*}V{Bbs)c3*nCFl`#U+-{HV z{6NwFMTq@EbVR5HQa+k)1ZON1n9T-T4|eD8@Z3uu!UfM&{!I}tLQ_2Mh)udBAc7bUYOR6GzSRdd2*J6wR=zMTa}F@ zmFgGtkaIgUSIA9aM=DvpM4cNvGHuyajvJ_+I7P_JBXL2M?Ev4;xYQn=Vp(h)B0EL z;-0rHLDx)t+?;0XdyAbLcl?86B`U0B`F^?|n`17@a*Q2?)enbg#BWHy&UJSOE6ur8 z$LZs(qZg!K)#gs=(K9D9XDbx-#syR7H#484`iog+W>_RCU!UkdtM2n9GI~bggz~R7 z;&cr@`gw$e;kU)&x9XqVg#S@59X(%vo@-Cw-;Z>|BFPt`K0J**y;z(6bsoExGQ&}w%sJ|mLhrB zT&p_KCzTw8;#hL$>Fd1M)9J$LdetXZ&UyW1*9s02yZg=)JX}<=cpud=i-SEZUBL9; z1}4LyH^t-Jv3^}-Q3*ozS0>TC)f-u#yePWm^^125!T9iRc>iA7ks3ufy7aAwUtcHc zChqb^Mq4s1qD%cmOMUxDrY~xfW7@9zzNU(gJF#M^GFB*2HmU~}q&c}0}88?$VWp~80ut+6gq)D^OvG&tLCQ5Ot* zO{kieHXJuqr1@VgJ~xDEDFPUq$E>>Yn)Q4ZMldR;8@OkgFpV zRz2T&ilwPZClWKUGTRohYh8sh3hwkA6(!M{GnX!HAJMei3;SnDP{UONm9+yowQAtd zS%KSXGaDyZF49ht-WCPxH{RlT95{wCgbA&YS3C%Wwx2Rdjd)ef?Lv1;m?gFrp(;)t zU(6M*SPy=`hRWb-hznE=d{IW6pZBKHhntpb-l~BL&?z=Q|L!BdA+%8*?3vsa)DG$i z<{tV`D%>=UQ!?@?FFbc;`A0L)b-^6|*#B&;kySR_VC3^`wlLBxUC^?;AqH zu|NH0ahz;aQBa`!sMDZjcbUMwWJtl9U)2S zz<#aIp1Ab-5z(AY!DK0l9L98(GW0_vDP7>2L?y~5Ay(=$5hW#>J`x70E1F6?j{Ao2 zrc8<@$Hc$gm#832VgVI!@2nxK^7V@IiRFv$)%Q4TpQr<~lY_qQcI&GdDc)fe?6!() zP!9^RcJe1$0Y09#k^SxdnD-lXHODJn5hvOg5SHC!;M`)`-7VWD;+fA=L;9Hx)$MwH z5yl@X{cZ~l*AbrV)f=CMvu>I; z@^leW`Fp`>_Gz<~jsgMt**t(Lok}t!^6M!R zFf*$fKQ$rcv;5~atm{+P?(28bG+N*5_)(sRf^H!O78jZoTpBdSb>;S}>HVaOLB}&h z8TdRi;60OAc+}eUy9rC*{EpJ(vl>Lq5uQhXI}A3Z&Q`=#YE*z95$*)kj-d1!Z*`MR zJW+gvaG|3XY-0wfRlz8IJ4gS%GDS!6nRL!#){sNRA8V0*yS>FmoIpV|S`1j_n2(#+ z*9ApSR@M15`;GBfg)GrH*G>b~*TA`h4C&UYDJf~8F@LszVUw5B=G9#}h?moXdxUf! zThfU9O-i#ACN`H9WZPbj3pfo;sl<_& zu3B2MnlgXX-0IBWiouA|la!f^;Vrjg(7?Nij{dn9)9jx0o~)wWo85f&ikjWfd_hG{ z&OrZD^*_6fp~+O{w?)wLw}Qw`D=pmAGue6bmpYY@b-JDN!D)rNxhI@)nB}~hhn_L( zdVxb6)bnND$s~@eJ%@jiI}xjK%7HzypK(#*B_5FCX0Ao1s)r|&=Im3-L-Qh5wYjjn zo2HixCEU}leNRVmE*p>#nDwZ>!$|y{VE&=%_T3Xzl&^Y$%EyyZhI`Xjou^eC7qqv= zXy^G^RynUhAw@wpIf}Xf9Miu)_XU_CwQkWoUr~byP_)phRl=*;T&5s zYE&gGsQ4?)%_uf9F5$uZ+;kBSO4-8}1xBaTxE_)`ri@q{NaLbn}mqw6(V5yzhB zf}2+TI9vB;Ew5g?1Rq701?+D}Ll z3^PD^TQ^#r)_qk;GO)NI%(>>%;;%w?2^I=hl7-)UK`(gVBFZO!Nh?1dS~4vBG3xas zM|OfYC2u<~-b|Tt&+ho9k{52~a5Hx8;80w=yxRp*$#d{4k1xxQlwNt-yi}WGll#VV z|2gd1NKbnIV|+$VM}DZ9pGw;qKK79AM4r=W$^xxe8%FE(h6?8Q_9GiwVfjNRJ@pH? zZX3n};Czi>i#s^V^&^r} z)L%MUJT;0Sx5JB-Nt2uh&e?Wt&FP!)H|*!?Th8E`A<%RNl$yyscKq{{za?FwpEsfY z)uhZf8I-`VKCnM{_NlO{{pe=&{tAd3X4P}X-`r73%Pyq&{R4H}BPc6Ve0Ae?CqOAt zp!@SoTV|{^v@TpXb2tg@m6Gyd9O_t`o3)lIn2N3B9KAW`@2k|Q|7U~dHV42{By#z4 z(26&Mg44?FS*YTQrYDcuc@ak;Oyc)P90e9(d ztc)f%C7HSr<_Bp zH*%|)zmZ6qorGD8l=>A_&FPQM5^OWSRC2~d_1!v-dtAXP`zauH)c=xBAgTkO1o~Xp z;h&eN+PI*C&8H(5e;rT{99{=sn&=_gdR0gjY+Uk*sX9k3Nj1?dmu zZbHk`#htKHuhKH6bms#*I#7)SL_x<|aB_yss(?>@LA6XBT1?S}a{A=G6c&?vgYJg7 zm8rwUi7C9eTIgHKJ!QWxT{#v?doAZ*={>(D5D{Vae8n#Q${n)o9jh;|3y03hs`7ON z=Sz{#VT@-fU$v9V{37c{rbo3dQns+Z0U2&VQmZsW$Kq90pTds)N1ifyCq_-zTW=~pkT;iaFTxW-89P01Ivu(> zzY`r*q8JG~lUi|67BxC=$gFY4pH;Jlg_37=nS618(AYPK;aNW3ph&(SM$h^aVRtL# z5@RjB^rr(8yHpJQJqi8}#q*Y@?+?QA>oZsb|56yarE}H4{-bo~Ui@x*7JoSx=o-!H z@pgivA(s84Ix~_D$qF)Y;+GBU8o;0sGpdE#$%r7i^8}T}YT>x6jwO%Y)PQI^|M=`O z+}_fUKxZEqFC-i7_Z&5?-642h5M$PC?0%sZa`C$yGjA^HLU`6cySwciJF)J>8}y#@ z0Ee+@fFU-53-X$WdoXG6*5^3Xenk5Ja>ckKHvvkCF0~P1sRRPELUK*BhOcSqhDUf& zoRv6?fw}oRGwS$3_~eXrmS?uZ?Klhh62=M+6Lp{_c~4F1nPgX7Ji5)|gaC`la0 zVyu3b=tp&-VGuiQ3uq3!QBv?MYRMWF#T- zvn0JIZoL6`g~Ob|7)du%4ra6@JD%_jXovebf7yb?gS>FCgd+gb$7-{fK3B+>-Ugr?#BbAxD{(|?n3*a5I_kTZ;-bOK06#g?v4>FBe04~XoN+ri|JyNDzGowt?#IrP$@vb#+I2pD z{KY<3NA6WPcwBWH9xXol?8R=nebblx@S7O6aY@87x-pTf)qU0^kEuJ z8^eo)5S(W$L}()EH^;7jtx{d2wKTdqvV=)+%z*9PUkF_fRW4;Oj*;kvqUJCf(%^su zf~kx=IFWM4s&~<)NI~1{#uvk`X>db!Cc}*iwcHT5bRs2Zo#46imhOH)#OE&WbOm^Y z!5<_uqX1sv@$W5l@i2){u{oL2hnI|F*Mm%2VX5|MZ$<%(71y5VMZuv>dqx}a&zcJ6ZF(bI` z_}E!pff~i3uU+fVrR@3}n?1fydHU8z&%U9EB$B16Xv>%H>iIxc#62e&QA?M&w=N8k z7k#Tpgx!IqibGOi+V-4%8Q$ez%df3xuXL{K*{Y~~;HMNM)FyP{*oSu(hpL6)w>E8p@Ueup@m2qD?RIor z{hAn*BTo3*A$GO#D?UpLPd#GzNveI6gbZfir|ndZ32=W=?X+e}dv2DFbFz`$i9}l2 zv--o9^h{}E;+uAie>)rm{M}F?X`i$XoC|1P@Xj*z0td^u@9t95SCy`iTckm(%Fb)I z=hNrA$R1Z5LqFdp2vl^_Eg`XsZn52Y0l=T)>F+75Sd8l+S2whyYFN-M)5P*-zgwp( zv+M85tq6&fr&tX84Van+1^t`Y? zOBd72CX|^2w85VtB3loAP`(S#+vY>Z((PFXdoE|$p0qH_L5vzSM9x2l{MnuO;tcNa zUm9#}p{@80+vEqB^>fXoUMh*Hhl-4*hQ6N^eAEc5KgCeD=J(n)7%3Cz_gt|HyBCD{ z>K4Sc$+#=`fbS?o!k z?zGHQ5(IHd<*VDeQiV@i&tDVG2{^iXA9#h$K{b=xl}q?i`jNBM zsSG~PRbvj3w?NHTsJQuiug5nhk<2o8p=i}JLhDkR!oz0v$*{KROHl;h*X_alOWTa| zrCiFA{{JlPF8Jp6gcX%j#|c7Rp$C=X@t{kKy#HpjD7J)zd6BGy&Yc(cT%D=p3M!rYWCz$Ht;*70N&8kJayXWb$mg%fa`HPFOt5;>OVQEryK8 z_<5?PT$hRc703CGB)MZxSx#_>i1PisBrem`@^nO$CbBfJ<;K02(X`a;zAB;+zt;89 z+A^!;a7cmQ-Z!(15{%!HJ%=fVr&SvI_7CmQr`zpFmRiJeM&yr0pE6i(!`c-&0lILQFyYEuGQTSLwtv zZL5BX5-^Ug@!52Jbu8Q^7A;=hwa-bEZbR`x&2AWLFEd+(0}~AilAUCRU|W_u#oWZJ z!Y9ES`n|>X;<2Y#Zlv(55I^alJB}mrI8}_qUA}9u1Sm(WBcAYEBh{zpOcW=sx+7gN z#@EQlHt5~jvAbC_E*^eMqZjuudg}HAyBU!KfFSu(9LP{s9sM!s@?PFh4M&c%Aks5k zf4h^5O?5^=N0eVl|B0D|dEOD>$OY-l(5^B!vNNz_^8T6Y>)u#XZ^enG9RE}WzL?M3 zT*c>v3vNaDYJZXB^7+=2*$$1#kYSwuCR|}lK2tHrJyyuQO*1IG6^zM_6v9Lc?nph= z2A_T0|AT#|wfZCO5M}~kB|@L6YBHtY42bshtnj9GNWO1*lEO;hP8YJM!E#}}Qm=z0 zHzimD6S8~t$J|m+`N1I_zcy;ah3-}@CZ){s*RW1_V@#34!%CQ{9{^b{e{x9^UnHXg zx|1YS&d~ysZrqPYctg`>>$1>kMrvw5r3Bk-kQv86B-S5e73s3#Ln&Z`__H;Xz=Bg;#KhE2bNe1^$c&<;=Es-)h9WuzFP!;WYShriXP&U+iO1s z%r8ldn%<}BhEBItq^SWSc*iCay$t@-mUToH{}^!j}9q5R5Y!OH@+&7sQb35}dMbI#%z%3v4NM`LWA8 z>aKM1Rgz^-kmS&oxI?%@Mwu(MSsNiE(g*Y8rqjXb{uCF!xw6%p3*UWm?yMgOl4hml zRKIvei{UDaEhhy{@y#-AW*IG}`9>1`F|*Ej%)Nq1s3TZ8Yh=uPsyiA8oE_5ouJ$07817~6h#ru@^bK75jlEkFLxa@D z^ws(e7lluDCC)`Spux*5kzNKkgX1YAYOYJiG-o1_ix*g>dp#r@6uiI65Je}3Qkx3G zBwzY}X&rdF6Yds&)+$be^F|}?%qrRp7SB3>d>MI>cg2T|F_=BdPFp93j!fj>d5c2XsE zrC22QlU!5z(fh}gFpejC12r+RV<{zRsBl{;#(;$_atV=gLPI=9f=zSxLU<*mUMF z!BL|Jp$rZODivgQ3|#$yF0-MTX0Z|s>D^c9n4q)ceXr&<<&VvOtPMNR=VLZy|8w7M zwcpo>jt=KY#7pe|9OgWA$K6lA86;VSW90=&Ba{xaYLjq@B|o)@H)O!3beox#$!8lAzDSyU|&rV%eRV~)NMfNeGe`A_lP$u}-x z^UTOAc|ZT$Vz^}yrCmz&lN!Y=njI+ZPhLOyL+;}~%Dt3XM)In@g~EF`1S)L3nw%-} z>wa%?P(FCWzPw;%apl)3c3I>zXTe0(owV#w-{;If2Ny{(o<}%`#nbOLG3s|c05ZQ3 zfs>C<(7gFv>v_>$5B){>dPzn0$k#$gLp3kNma%Qy*qxD`r)R5g`k)){fuBr+lV`^Z z&ahg~84Pu99J5<5V40uAJkUyOV?L+$y9fIYaERCiYhS|}wDh^Ae6pm!= z^p`i5s$ygk=Mh8u(o0mxhJIXuJj8VH-~;~iRYzH&q1!!<*$2k;zr)EdnkVHZQt_ue zLg3PYI(^FO6%Sd?!|{^#bhES3`xzhR5XA0yOyr3{LYtLle7`a_cUy59@)F{~GAlrA zlKuO%O%T(1Sm_xY%Ftz@b2EwzNzj(L>Pfe%Z4mll@6T}^KS&BcEHL7cn} zdstB)p~{LKeNVlwEbk%w zDI(sK@jJ0}R9lCl%*;NCnAlGY;_*g+tw`wG&Z)6;w9jV%X-n_3TR*82n*r7=BH^?4V98OUy~%>K`==k0{mkUBGj+Ea!N z+YZp)cbE)?;WqBx0YA|Uv2L5*pDhxDH;iK$^bJwD`+S1fd!`)1^w{l7ZYNk7+DaAs z%s`PPWdG&(y#pEJpEbr;AKCMj?U5}tCA6m9ryr`Fi5XpN|3NA!cW#`kc%w%+I5hmN z+sv*yrS4tjc%7j{lLol|Fk&~j-RPCFXXgFln?i`s)8O3P&z06&oMmQUXH|gwz7S7v za71pgCM=hk7A14>zkC<*(!tnQOSsShdHp|z#-nt;Lj1XQZ+>`@VPX&Kkc@4<~8DvAex*#1gBzgE-k8EJm@$J9l+2C)Uq36HpjF0bBC z3bidR0snM4qY}JRKFe(BibnU^ef^m!a+j~Tz**X3l2+l>gw<7U#8sHwz|x*LmyXX0 zTMUiqd9gp5^hFYqLOp-Psr&U{@!O_Tz`i9|)@5}uGC3gDp3igc!E)#ClziJ%zg%*Y zz|csof)}qXx~!`ZHF)e*r0)CV3n4yU6|TtsQ?5KYmhw&_3W-AB1;swqcbxhkfJz~M z>kCQf!n;w)-y5f*2z$m74cGe`%dfxe#q@#eB9;7qIMmlQD-vD4|4xbdm@npWOpc8R z;0;r<`SXj`Ew%ZD2wCjM`|smQ(#N|>d0yqG_hMF*>cddc!*TI$SI^-xeEe{Zc6rQ; z0XNTBFNv&?psQ!W2WN6gF&_pK6-8e>cl|VpBad{PpD9oJXRT{ar}q8Qt@u-*s$woQ ztzEstBAj0m)w#XC;dObnigJQO%)r<{yr_5;@#RKP{&MB8gh;7clF^%7m!h34`T6w{ zfA+_?8^2R(Yf8kvsrJZyz2Ij4s+cAI^wsOF?&2oJ#ZRIYKPK2*X@)Dkak4*g3f?9l zK5|z;y4mTnNrJMGqRr&7s|4Yl7f%Sw?T}6m7dS`|6*z&)`|feRq#ucA_WE^IF{@}A zoM|iW%;NQwpFXs;4@LOoQ?1A;|E`fif@Y~&g z^cq@w(rCf)em!sND@qDBL605hm0MHLRySnM!C)a_lW1onPnRP{S(nz|>PLL9pA6QD z%1Jn+NIKwbbp1$Cd{^%rkvzNu22*5zxa5=U)0H;C40wBkBHxl7Qp_EB^%TpaMS2S# zxAzsAxL_7Q5#fP_NWAjAGVhO$yU~=L%HL5nLm`IQ{0Q(%T#sIUs!cX3C^vlogTeSd zU26xYSoF}M*A$9eq6`X^cn1BzdiUg<$)x|P z%H1(PNIYt?p%%2}32JAvfK%}EF(*dG&q!ZEPVx0-e)R<-LvQP)2yJ|lo%@HaJTRD~ z*L}jxOzB|Fci!@+<@CMvd-$+t>?h@)gk><(;e%+f>L#?P8Pq9E(#NHo?|#;eX8t#> zcL}*!H9O{?!HwTS5`m47E_+|-;lq?jnpr8Fwh>jA>?aG2t~qD@cljS+CT(h2fmi$; zstQA}j9+jv=+?=R(BTRxN4v(g1C`L5IA*690ym3cd=|zTtn}IrDuQO%QTn84U5X{J zyWqsj-d4JYLQ#jC^uWBwp4D7l9%7}!-^+|`Yxc}FDv(*#Ns}4&*$RWDm1kuJ4q-fi zr2oC+Ll8>`6Rn5qeczY~V`LK5;^+?XM&6>=PJ>pt67(w@Qp<3=KN$mtFyuiMbMCa=P8QBFxbGzdSV#%v9r7|*e&l)2|9_x)1w1aaX|49m!nMeZcKDz^<>HUKlLLI?&S+HfSnhwlL<=(GW_$8|m9IZl zn~nubQKj1Ve<;qN9~qHBqh2r^8zvm_m8kx(97Dc^0T|l*K7j_bR;WUq{Ii6y$m#AFxgWw%5(p&Hwt^|wxF^Oxoh?9<32m#aiRRo`2lXJ zLJRZN4HE9GS=WdTl8f?)C#qWVm8G%52|kt~(i zo_w34z`2Ih@JMW(8+BHzKn0aYzg4B+)Fc-_H;c||+CAXfys$@mpqGb!W-jm}uFzZw z%*#M`PgR?oplC9kfgM^C96^1>X!WYV85VGMhuEc@!V&+0UoC za^YB0D4KQBJWGMA?Z+|_FiBLtmX4I>pd_9%IajM9;-WTf^wNKY@(Ys#zSn2HWJ zh9EGUf3)IB3iD#gc`QGj-Ynlb&3EC8#GT7Wi&my$b(l}&y2KJ0Ny529*HF_U;xw<7 z8+z;9x+iCASBhn+%gRf0vk%m%z=sY#^tT_2SWz(k=3(ZbKss9~o?{`2S=x%T($d`{ zc5(@2+gkLt*(v}NNU+vdah*8s>>wE%78hGzrG;v!($hfo^Je<+O^6NIs3WMU!132K zsmC{5rC~0kIp_&~cq=PPt_Mev0{yDJTldppA{xK^D4y&VE3yc5XzPj<#`SbYJY5(( zIx_IuB9Rl?UMxVV6d1D6INgGdz(HY$vKvI`52K{jZNcBSx*JRPteP43744h1PE9Dn zUSz)1VP@UVSvT^+{r9N#u|3Bmf1hq$bir|oqh5=pJWt*?O$61y!+LAEhT(BB7%aiD z({U_fxpQZ4>dnH{qNs$oaIMznz1dd>%;p!vh4PO?bQkZA9W=MVUp3ZpCH5uI!xH$S zV_eA*9Vm4WpC?wCN7CXNr4|D~=JS`tdT-bYW^_$cEH#gH8Ylx(cl1Wx%FJP0@SU?5 ze_c-)?sglOR%n5D_gXba8(mg$J?ZR#`k+7C>l}BwPeTfW&(`-z59+O*cm?%ce0R3? z)nZ>Gm#A3-L6chE)pHKjc{MH%Fr&?>RnAejJt=R)7c+!#@-nu$BI1v=P7RCoc&~ul!|pHKHveSaX+iN ze;;@3gvUrYs%du`?TGl}T%*QfcUToIqC-o2(IRmb|8>hZ*M?I6cyXc|yR=JUxlN%q zh;pL8$+D@@d?evM4EE+-vKQqH_2RExspTgH7-5v3ObhY9qodnw8%IL}XTo(knp zb;wqgtF%Od1c|jyy!MHMwQL)_raRv?zEUU{!m;z^5wLj);#r`u<<=!nVccGEu=EFc zlGG|^u@wtbC4~@PRItcFj2vK{9{RK0w|8!V!I;sMc4RmGI_NfxbroGrSUd3zNvaY& z0tT%tQKpJGi!m&20`BdoOS6lhWw8_%{RiXt>6Y`Un}cL`rDMY$a~FFo|g-xKv2*!_P(^yX}N(! z*>M&x$($&g8~?xB$~iW%FCI+kJGyfNEu^)K`3l;$X2&0_t^Az~A2bAkcMLxD2ak3Y zIg3@g8Tu$6h6&Cu_>z-L*1V&{`X_T1+1Nor| z0QQ88{((JtS2RyjZvYAQgABRRv8;PzR$!htKt8a8i3iYYs;{G;Xh}sq;R9K{K)(Z} zO+T2`1v79tMP);HJ9@-d2Qn`Db36YYKB+?hA=%ysSh5Yp~&E^{h{Yf)_CoX4XJ6 z^<$;*5(rX#fYY*LZKAnZi+9g0syjU3Xmzx&rSOgeIOwacOyv{`o|k`{aH!VS?;?Q) zaAqNrs_!Dv{X+(8lS&h%unOSTuFmVjKRSR8djRtJ*!Tze}>|duOL?Dm_G2y zHVBLw8RNbeVYMi41Dh2aLqcH3TEq8^sfC%#;L)qb7-q1##dF!9e>HiZ-=?O zAbpQ!`wA+n0W@y&Ho%C$2Kx?QpTt*RKVp1hJ`15!tyfmQq+-Y^QS`VmLBaKWC+?hx zyXgTX@?r6kto<`JbfLMJ6Ap%ico2UJanW5-URnSvDw;}`iL=5YrhvEP{f9*LlWEJM z>k3q3vASf_{oDc6>TM0mI3o%}J7pW}yi_C;(G@l2#C>>T?Dt&;x97wfNknNdp?d8# z+*6+$xIC{k4NQo?L3na)wj#sU3I-Q6_Pz^*Flg-m!`?~jMjyAMBUetrD$qwi31F3^ z>b38a1Fi7M7W~kL9w{1&l*Na#Xznvo%$Kn3scI+>3ySN)x`>IfuD(Aee9CYm` zS(R6tqSf-p6Ebgkr&X!4>QnKF!K@KEcO!+Km5RwOQPWC}F_OD%BUFNkT&YHi1X}mt zA0tte!4h_c#&-b_eu}PjAQRL-fJrtNpP-VVecYLrN6mZ%_t#U0t!UC#HTRZ^JX@b= z$+noh_ingCNWMNlH;}sAj}q}=A1*_dPR!*ZY^`GG?5=$c6Nf;Lg>O|Gr;B$V^LXa` z3pUqsJu&0*>!;dcUqY7!6yjeav+u9Q)=xb?n7ckc{QGW1*WmTawSuTXk=u0^YPufA z3d4f~LOyqd=2DfGwgP>7`jqntI(F*whX}PAY;1RoGe|gk{p;RmR zxpnK=oQc5cz3)FqxGwMcXJLMxruCIK;wng16~W^#j%aJ$ja)%l)#bXDSsl!)R@TKs zeZ>YUG~<%N4h`1ee?AfEzw}hQ=Je2NaLxo*POhs)1;^@BO+vCGkT|10q52{PZeMO6 zETHA^qPxs+?=I`;Q#mz(k!xUg^|3;k#rtm{Asg(jU_=f1{w$4Y!&xcbfhkL!8k%ca z@Zx+C4Sa|5OdJ`EZ+Q}E+C~%O^mz`p&5XFgED!p7FvIC4b(MCJD4u|p)qA`li(?C_ zjSIz#ui=P2w(>A0`2$)_VsSZY%74%O+?M*e++vIMPxCceNu-XV)=LGBMtv&gJZCUR=_dg>Px10z{snA&qh)dPtug96;L>dFa! z$DZg!{B-g%zW8-+Q$#`|rcU!s_+o@m84}ZqGiHU$aH}a@A~0A)&m(w6hZU?m4Rj+g zf_08_sXG2SbxScyrA8rVI$T4Ng3m2Tacq^V^?lWDHFX3^D z8m$sAcpSLvetDz78ArXNkNLGryw{U`xUb1YI$G{cUpQbtZY{Lzh!(Z7K&VkQoY&sW zD3ItO0iKEUD?TDOEb!~W5GtJ;C|B*^^zPC=1OiFOB3n>-4l(j#bs|esgc+?{S1rY= zp?qz$Bq0&bu6ouH&*7x9;c_9+-_40t)Z=(CMWD0T`OH-da5j$)71(agQ4N!RroEd-jmwpa##IobHzt7fwh5M&hE%;b& zwiTXCU8O*w3VZ}?%n0V~Rx4%F)azCMLEjwy^cL`aZf~}}4mP-ef0{ZQ@OERghb<5v zR5~`E{#xX$u=Xd>1Dd}Z4KbnA4t4b<7BKsWc7B_k%|Kizd2ettpr(Ip4bTEMP;Ej1 z2Gu4Y{&sJ#o(L@j;V9&K5S=GaZ7n<$A`dD@5Y1br2xMf5?!4K|56BRnqa?e)9)9h3 zkmMmc6r{~z+Ml!u=vvrDO<-GE6DS}+w00{RSe7SYA4mind{c=s1nBYoUs}8MGM7m< z1PKvvZD1Sas9_pZj)Lf8j_H9MTHK}vpj{}?Kqma!ZxgVkg4yf<6&eoBd9(F3w8tgD z?}Rr^Wo(B=`v=sEI5g7l_Kn_7c4byAP)@f{Z2%7@Ya^8bnDot|ZUUx{G2#1WX8;0m zXl0w+c&MoywP$lGyU~~|U@GS}rCblB%)I37yQzb6I0ACbH-8O)@u~0-{ttYC#@>F< zj=+MnV6v%&V4#ISf?M`qso%c`5C&)u3aZfa0*qwPo+GIN%7YuU%?(f<0R{ugBY*hW zzO*$6)I!wuJP5`rtU)k#gZ9=fcU*S^NC={MZ^bd8g01uCp8YG8-=JzOXm4|DT^e#|w3_K(W7Sj#n+PCgtIhF^ATbk@H;q3J0#-m!09Zjw z+wN@&X6v?T`nN#!1_&bO{omPYi1$|39ep1@+T_Z?ySz z0#wP2(E3x!g!qqsJpfA5pjh38D1p&L(06gBhA;pPAT2Y~A!fyh;-CnX*osA<+fOgWO0R zoSpS^_=Gk8Q&cos{<61YV#~Xl1cp{!st+_;RcZ{0u6EO)oAc@wt7+V#LY)%-_%||D zF^kn3;d+FiscM*?^?ucmB(1!m!p14(YnQMi58XXwdQbtaMM)~bJWj0S;?dM|#s;%3 zN=pl@ojw3igPN{p^c?8Vl`VT!5fzpgSeZQXQVm zye0-^f>#%Jpb3c-X9P+bk);l@JeW@^9L_rUCl0rq)N{n#nLL7yVuf3hGQn}`PGv># zY>0*^fiz65+Ert^D+l2kOE?HHjZcti*h%UFxFdIUX~XNOZ(sgK(y>EwUE&BMRkF{rvC9N`ifoJHt6 zBZ6N(JR>Nxgl8X~0nftpjX?QNNZeMRCf#G%v9E-Ea)IUi6!H4SwiH2wgvO?Za3H%q zus|43v$YH{TRM2H4HU(T?yu#iu0@lB*UD6N60fFS(Omy@ct+|VZJqYF+pj;HQ69MO z39L@LF}vI_ZJ`i2wgTwI6@2^9a7q VMDFRhz78!Htz&dC=e*5>{{v~Br^f&Q literal 63193 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

uKG0@? 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

M3_oQj)G?q9kxy=Qm-W1h59Kb~<+0yi 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 KQI^+*8-D>)^OsBj diff --git a/articles/MLbyHand.html b/articles/MLbyHand.html index b19c3bb0..5e7bd6d2 100644 --- a/articles/MLbyHand.html +++ b/articles/MLbyHand.html @@ -89,7 +89,7 @@

Klaus Schliep, Graz
-

2024-01-25

+

2024-01-31

Source: vignettes/MLbyHand.Rmd
MLbyHand.Rmd
@@ -240,23 +240,23 @@

Maximum likelihood by hand## model: GTR+G(4)+I ## loglikelihood: -2608 ## unconstrained loglikelihood: -1230 -## Proportion of invariant sites: 0.007416 +## Proportion of invariant sites: 0.007413 ## Model of rate heterogeneity: Discrete gamma model ## Number of rate categories: 4 ## Shape parameter: 2.994 ## Rate Proportion -## 1 0.0000 0.007416 -## 2 0.3917 0.248146 -## 3 0.7367 0.248146 -## 4 1.0906 0.248146 -## 5 1.8109 0.248146 +## 1 0.0000 0.007413 +## 2 0.3917 0.248147 +## 3 0.7366 0.248147 +## 4 1.0906 0.248147 +## 5 1.8110 0.248147 ## ## Rate matrix: ## a c g t -## a 0.0000 0.720999 74.084755 0.5999 -## c 0.7210 0.000000 0.003601 25.9146 -## g 74.0848 0.003601 0.000000 1.0000 -## t 0.5999 25.914640 1.000000 0.0000 +## a 0.0000 0.720613 73.979940 0.5986 +## c 0.7206 0.000000 0.003609 25.8874 +## g 73.9799 0.003609 0.000000 1.0000 +## t 0.5986 25.887352 1.000000 0.0000 ## ## Base frequencies: ## a c g t @@ -278,7 +278,7 @@

Model comparison
 SH.test(fitGTR, fitJC)
##      Trees  ln L Diff ln L p-value
-## [1,]     1 -2608       0.0  0.4997
+## [1,]     1 -2608       0.0  0.5021
 ## [2,]     2 -3068     460.5  0.0000

or with the AIC

@@ -377,7 +377,7 @@ 

Session info## [1] Matrix_1.6-1.1 jsonlite_1.8.8 highr_0.10 compiler_4.3.2 ## [5] Rcpp_1.0.12 stringr_1.5.1 parallel_4.3.2 jquerylib_0.1.4 ## [9] systemfonts_1.0.5 textshaping_0.3.7 yaml_2.3.8 fastmap_1.1.1 -## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_1.6.0 +## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_2.0.1 ## [17] knitr_1.45 desc_1.4.3 bslib_0.6.1 rlang_1.1.3 ## [21] fastmatch_1.1-4 cachem_1.0.8 stringi_1.8.3 xfun_0.41 ## [25] quadprog_1.5-8 fs_1.6.3 sass_0.4.8 memoise_2.0.1 diff --git a/articles/MLbyHand_files/figure-html/ConsensusNet-1.png b/articles/MLbyHand_files/figure-html/ConsensusNet-1.png index 7855e115bdb94caeaf6bf446a56bc9d44e69063c..0cfeb933fc4c409eeef7d6fa8ce044e5a0ddefca 100644 GIT binary patch literal 63191 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 W;#q@vduN?|K}dV2W5q`=-1tAm?|>r! literal 64718 zcmeFYc{r4P^gm7>REn0TJQ7+4O*Ko2?K1ECKIeVTd7tHV&i(3^xzWM>C-(F4 z@g0QTyawar69WGHD|+wFMZ5Jy8gLQ1Z(?)}xB@?0h7CyIvd{0PT_7KyRLssVf5ObF zD<9t}KIpY8w?i_P#>49#SVzjUY1(E2KZ`w-0*+c zHko-g)-=azN`_8eJuAYXr&4CIf165jvS$6t^Q2ZIFYxd3_`e_jD}n!&!2gvJNE&KK zkM$Ab)BWK#U&8y4O(H~tqf5N6FE}Kf8G}7Ldu~CEr#-OpC5C^GwA(k7%?lH+`J}t7 zizUB!!NF>9eEwTBMNQ(KVvIv)-H4g4wVLT-6TZd)H`+Py-U{9mD;juLdJ3)6y)s{$ zAMQL!IFA>Ge@l*^m|oLaYOq4RS-{&eZ{r3PjNJKa93|d3;8zU727*sLG98fN3b~~sxyQ>DTKhaKtTU5lS-Tx292ScJZe{v03T>Nw(+Rz;tbVXyz^{ zg)91}SkIGEwho9+IT2a3bSt6dq4oQsU6VyzGpO_cDlqx{tZ)-`0^}|`g74UR4}zb3 z?f6>Q2B$QyUz;1Y9CVP?C66=U3>jbpK0I)#CgszwwdZ15wY77)esx>NQ_&~W$dM8e zq+nk{(BQ4HA=seOa8q)i!3-zdtmAp&1)KL4*pmC2a$8zZ#=?w!Unky=c`b72OXXeq zZgjgSSZa*C%+OF&VY&L9+KdO``;X`*lP_2=$y9ySzkhB{v1wY}F1@vtk%Qq6Gfxv{ zl`iQsQ(r_nIZ!LhoatEufwoE?Ak|vd+6mqdA#zV?BWvHu#IppC&au2aYpRwk4sMdQ zg^4{J#4{S#*rnNWBvOgPKO$fC^(40S3DGEyU`Mj{i!w3Q&yRwmgyRUIS8@aS-#c|q zrYvqTnOUqqx7hWVZ=MugArv|Pe2=!tyan}xhs+o}z4Zt*&wL@pWT8(K>O-j>N2^kh zn4_wj;p%TTPDU%Xu#0qe6mj{JyG;Vm)}-t3z%;~+o~fekn=f7ab8o3Ii5H1No-~${T=AN(4q8{b zahNbhI?7?<&!+dHU^K0J^56CtYj0s@R-uVZlgqiGImsy_J1iN4sb?k2;xt?bBbvr- zXY?W-@+1ptnpCAss8*4pLqV4&xYlf>Ll|>cst?z`t_wea=$`TU@K<;B+54ViMfB#T z50Tyj1`YvvP)A=RcqUl1fF9wI?>$#QeKrv&;u^EuH7hWNuvz_NJhFr$kDaff)HHWk z;<lsFe1qC;)%^CV{M6F!ji?ChLy!;3Y1eENCAyXxg&Yods+~>(mcfR zafSU2Y1B%Y}VpqAz;A#d<@^@`sE|2S^+HaFAGwOdW-X9>E zS=jEl{Wt{mDJ;R)1pMKzU8<`2ln#>4ndP2>x`a0bZ7huLewtgCR99-NGJQND(*%sK z1QV=X?i<-zNv&laP~vNxgh~{JA}viydTdn0d|qi+zLs#(Lk!nrL}W!)6C^w#A3RyV zQXD>+R$9p0cmp2N%ezA`S&3q{E8((h?b(o1tj~x2Nu^WECKU*iu{6+}bvf4SRXS~E z1Vav&+QuR3#ncl5oD=5?0mt!RWlsygqJOQe3bFQUhSfK{z-#!yJPf=bp@DMCv?*k@ z3CfUp=Zo=REZnmuI)Y>OXxSyxqlR!!m37MkJ4AndlkAmw8+qNNOVqk+V?k^ba+-tc zp};&TaLaEKS*kC`vZWu;RMVTX5|IHho0=O6+m*?0-6Ip-`_uO3+4@6_!N^L(Qg5@4 zZ_kJF4rGz^{w9*Q&(98GVAm;qc=SEs3)D2KQTHiDO2G&_Yt^x-@YNxaT()i^L`@=x zLZg0p;Xl9D&z;fOjpr8y#dDe(JO7Qjtzz+W@)VL7Y}=v3=M5-YJa~T2&YIl{$UD?t z2;O;L%5r9_9N^!xLyp{?2;M|&AuvslNMRd43BQex& z*_}_%(2--W$;*ic{+j+jw7Q zZYW1^mtyW@*}AYt=|6{=%jbQ}XgEhJ<9P?PYJRv$$ElURUS*zY$6P^%ZrrO(lK_M= zV^I`G?6PfdR36_RneDSKQ4+r>YD#a#pmdmWxYMqRPtO*nY=8W6ww+8=A&8(duoVVv zkzjGbW^{nGxmiW~e&#|QW-ZLVV{4lTDmBI*=znp3XsDgMD_iG%1{iMilEm4m=F}Xq z=C)6Lyhv7?1ap^D=ky>yq0XwM!6UXkX%K{K{ddj9p+26Yj{o;a{-jozPvOopoEL(j z0mdj^Y1lFqJmZqKWTnp?3wx&~6eNR2)T)N@08ele0Lh#-Xx*m=<~$ihyZN!1fXMFmdN+V&5ZHYTC4 zo@CC)v%2MRAMWwo70WFOe+EO9%vsvaV1l$7MQVqyGS4Lp`J;kQS(ueCPw}^SA8mT{ zm;qx{fy-h40Pc^AXW_G5c>>A5@&@KJs<5OtP*LpvZ0SA|q~*3YLdcWXK1UD*BZRx; zM>KNueqBI05MwzLubFk}I1nOdeRWjgByVz^)I;l;uY=zVFrux7N-@U4u6|)w9fBXi z3ml9G9y7nhHMgvN90@wO!`B_f;I7#jCvy`CJsEeU92>S|QZd4$(tW#h!2*!eoJ~7# z65y=>B)%?98oozDShJ+zJGTA!v1Cxlwzy?l4J7M-_#{^@h?!2LlP#?}!tZX!wi|q8 zjwyi=#{i3|aU$XlvX(KhQf?P$F0a20ukWhK(`bs!8vY<=l*1c!8V>g{Lmjm`uG*|f zD25tf$;o}xkL{oddnul_RrmNtoyE-nn~k-6)tkb%{e7VUk2cnH+fN4GoqIGKfjWzB z)F%wVx`)1llC#I2SNI&(PVSQ)Vf&wEMkwM&;m*?$LOZD+<62~Y_I z`O30PgDMi^po%v!IegXI$^M&x0)Y!Hk$Fe^*A(H$C^*mL^!pn0U^eI|5S- zjIQCLAjaZkIZ3_8j`}iA+7v!dsnngd_wj-`!R_Jr^Z?u4v(Qp;7Y$2}y5~n1usrBejR#+h7&2A6FuSI<&jk>=x&h`XmSTTnb13dN1D;+|3{Z*=B7wL`UFVVLWNnc zF7|J;w(G^PerIYq)Br^$W4=8?m`mtkO;WX^9-^2BXU3akhcXw$T96RJIMgZg0p6)w zqbUL|(}BRhg0Id>-mmqPY+ky6X8pQ5WHaB3&+j|6l3Px*9BjT_xyK`TRa1Sv;$2`30RJC^IKUP#60=q z5oVRh8-Bq!Xc$>1>-wvX5DX4l6u*yj+0O~@{N9BN3+sINcfylBEl}tDuxbu z)UkzbjXhxY^lK0_-3%&v5>1n^Uc#DwK+?=v(JT4X+T4&amx4JGDSSD`aFx<4)7bnz ztl8=ER)#FYqqQ!uMw5_Gm|~UpcxLicGP=}rKY zeS2dw12kl&jYKV3>rV{-ih8iISq$}&M$-xwSDRz0w`V+J$7n<=Js(apvXV)PL@(Xa z=jE<64Iv7t5u>&;$ehsMqa7CXH}Sao#mSQv8| zbAl}*S~z-KiH~ZlujL@LxOQ;$lj(HEfZ77n^C79XQJ<>Dqjk)RIPAJYg@#JC@c^yr zutVEv`Q#5%N~F-^+p#aU>)xW^ChXgSdGaNg6DEKu!_A)`w~3j&6e*Hlz_vZ6C6V_4OX&-M{xt@%%S7{|ro* zKGx%^_qTH>A8Ot}xw13WdU6B{R7Ss7xNAq;hM;7xvdB8MiWhIXmZ6^=#!fyuYwv-_ zkdK}n<$-dZ9p*b)wi}8}+j*a*A=w(9{-TA_h+-*7G8wfljPf<6(=m1%k}x6CT)2NA zw8nxS>$H?CNgpU(Kq8jf3JcoXf;O2wAsf+*-viSg13k2l2FtZ4M)89z+P(#`Tco$- zo|vgcW+_$lwFkCRprC!I_GF+*nE^o@wjA-0z5#MCc0lYXmrqC^%z?>Ds*N`+lVCGZ z&h3%$MGV|USN{RaEW2;`iVvJbYgVkzN!}l8w%|c(p4($wvVF`H-mY3|_|Ik^Os3X@ z`h3W3tr_y+^s==z3k=j74DE2}0QX-NoSUn`%<{7u($nIy7Vj62(v-#J%i16wgP zt-CTNCEDQJxGrN>2F{kJ8LOTazAmqwqf- z3ughvBxiirJ$X~4m(Z=u<>;h3Vqpq(m!N3Jq&5W>>>-x?a>oyN!J^vZP3X%9NqhXxB!gyRXTxOHJ8akUHEEg%_FutcCQ zN)pv5|1`F6P@q5I(GSZ~@3LDcw-^u}T`^44hc+jZ+rY6?nuAeec0XMcADMa=@jM}>L3$H9)oMMpGYIWE+$y%BkfsZIAD&qQ-m{9FP@6IcNl!IO0 z1=J{Pgz~O#$3|d>?vXN4kCwi{F|h6S=h8duI^TECi(KJlJyy26S~-`?i;4;{T{2PI z`qqM;aS`b+LLsajdOS(DuTg!EJ43h;b+l^4< zRa9jGb|`+B7JYtM5gK0{6*c#g6KssTgK$HwSxqz$(PN3Q3CbAe`g3^=Ecpk>*MeRR zs?B8^IG`%dZRW?`-eJEb?j(v_Qzgbls;4Ix-V3nJ;blpy%LN+>^|a`VkUjof`WR5Ry*5=~8RC`-cOlXHKtRU22=hB}v^ZG+OQc#WJ<-S9ZF z5em3`@IVh!rkr%WDTQb?@l@+JD|5J_hjG@aeT6ae7~V7e5~F+k#!Q1g0Z1eND?3`0 zpv{?#D@~m+w78)btt>khX(}gKOTGvn(w){Sc zBkCD?(3@BXyG@wybvBdS5lER}iV1zBN{q}2>~NMfVYVFTZj^S#V@CP`#OCB--DK{U zGD#~p4^lFj3F{tD!|-#2Ww-7pt_hzFh{}K6aF$SLySF*9c+x0;}nlHn%;JdpY4sqQ$CnQUb!C`v-#X$ygDv&vA}?~;mk{HnltDt z>xnIlj0cc%_l>bctNEeyf(UOORtDWlDxP~oz!{EL znak@WBC8jk&B(%_F1OKmKf!9n?b;=ya}yxp_*eM%uVtF~$_zW=cxK>gPD6hTujxE# zWs=RcCQ9m(Ju7d8b8AG)8*JLyFhf?=uBH<{XCaX^oQ&wVQWNC(bCH6%gaUeo+Vd#= zs*WM`GQ8$fSCo0?7nL2PHu{*KUq>9Zrj@r=p(D;2KikQySGHiDSX54bFB9}CNl9Q7 zZo#|XT4rm5yOAhW&{Q<)zB$!qZcWUDX8lre_l`N=4uAX-`REvrb&%RO-v?S;Yj)pY z10@S(kFA$Ae?-X&I_!VW9NGZVtTtQe9$D4|q z!#^w|tQJ0KiG3UE4`0rIZ0}I-#J3qIy1H>aF0baRLbZkCz#M1!fK$JAk*97Qb1Z5g zkoHf<#@35XO^Q`i3dprP1BeS+2OI}xU*8uYzVPsEkSkj zfSvpQ%mOq&>#Dhr#n2T*WPKN@?$9WY*X=s_9h~A1H8_ljl110#dy1I^QoO~XqlKM| zQPrOA44ff)+(%CJpSg~kL?z|Fclb|Z^0(0KP!rYK9ciT{s#u=ZU1KnNHT6-PE`nk}UsD4-Yi_RZq zCwVQHyL6e($*b+@VLcj-EBWGl6UA*RKBZGb3Rb%e*&U=p7OFEdfxvrpDK=(G^R~Bb z?Mbf$%*J1G`o3nA^LqZK_#KlvwKfuQ{6ghgRh-j0Qv-;duS5J$32ti@8s5at+>j;2 z?NF@Rm8F>WuY&^H%JaVxv~I78o$%Dn@eIEa<6u&)Nho#o`^DLOQAg=BxTU|uZ(Wjm z#Heo(aQV2107I60AJ!G=OXx&87A`sG}r=s{Wko^opdf< z5bN=S*?4|PeQ?*WIZIZ^5$yY9t~H!6OglU|eHPIO#n{(*A6Zot|9O!z=0 zE@dY9+Thv;d?ER-n{+?9mjfWEew87l`OY_At$qfofVwIbVAfe#FwJefMNBK8#!3Zb zT745szLaKzm9xY$SsGPCA}pmxX0b=`1)jclu~R<^IA7xMYkyL$*%u^7DWvC0;z>JN zyK_BCEnUo$6I3(KKdU%y4lOZdIWu`(HKBRmr&a6xJcpm0xxm82HrHTqS z8^HvZ8($r7eS2fySmUHTS@42!w7{WH0jX}TAHo^^P~%uoWATQtHhG}A$HeYO=3eXQG^oVV+I2;of&DkVx(`iC)Pbt^zTS>PCW0EAr~$l)%n9^Peim(=>s=Pwrl4DG z{4=L3%2#rU>)#Q#=1nLEi> zP3W=eVr9!3ZBfNG_;dz8EgY@q8tj-}fCE`r(6v$@{o*xaPRu7bd~Y78{M?|>pN_E` z+qj;VJ2D+^no^tP9Ti~Gg(yg|N3+8^c(oz|v^DV49|_RUzDNYB^8{T_lfz_knl>E^ z7>-t+l%XJs?~mEi%4V;7RvjN3SvKA**{!At|K{XYRa;%9|4zzCY}Y#sGyHT}WOjIa+H6Av15Hxm;7DCJb9 z1+JbFAGM&qT`M}@>@D@Lq1p(m4(z&u819to^0!5?YS$OWr5L;`LhfToWGbuw8?nH_ z!trX>*#bS8hp$H7{^peqi66>x;IPXNw-+m44H_w0+rxM9EGxG^qfwra4rr(J{zTQw zV7_QUUz4@TU)Y{9i^AUmFt_;HgM*x*N8?_qMNkP-ybk&xjH^IEc621^*H`Iq?;Tx2 zI8~FpPK?4Gs}Xj5bxN`7o>Kp|yOrIDAO<5)B#X6C0Sc<|G$B)p?vV6b)-BjLpzkFI zpBkWbEz;;KRxuD;pWnlZGWijB1L(9o&kFl9l}nw%FyA-x`HiNy$m}#9Ld9$TTn7Mz znww0ER0;ZTj6H;Qlcz~gmJPM-DE`(^B|E%lpmy6JPj=SBx~ot8wp+RiE%>c@*tX|RC9@UDit3=?&dxBW8Zog)90y~82=KX0weFWyGSw=zJEm>MrssfX z!?!K5f|T6ndEcuA_&}~U44&DVdtUp`GI$}u0hN%)QCq@;LMMxKYX1Ucf8LcZ0M)Zp zE4#&nG90#)fNZp~#<8R89klt{0pDpiV%KP1FO5>4l(Ic#)VGB3r}FVZ>G|qNr_q$( zvPLOcVf6NuV0cGnrajsb<~hU*lw-wlk*G!$S4&SI?>RPldPcKnJN63|9HbzV{vfi$ znd#8+{NE;&p4^PckDpDOw4#vGJYNHj;3p-=Yr1?b|B|3<&P%eDOa12q96F|Iyq`|F z|19x3N_G z;;{QPUfS%H5kwbouD(72S56RxzC+N(F26~voT7$-pg+H#Q-SWVoIQ6O2gLpTo9F{k z_b&OTCe#`b7NAO|c4dntnCG1a81iqaz>FmBlzjq_?U^JpcK~ih*2zH>b90>(bM*M{ zX6HPRk-WB=>yvy6Y&pN~g6r>!K(wC!S1w=6Ag#eeIwO(+c-Q?)DP&ro!KEl`RHpl2 zgU>RyB4h#YR`G=Ag#x^hR0H4)LLG$g>KTo3?Est%dpIVZY~dc^IJQ=>IgZM}sFp!8 zDC?Iggcj93bVwtKxA;7u%w|DYL4ZslFi%8iZCg%6N#F zIsKhFvP7zy(*wevpjZLUG!chMWs1O08kEPikDh)SI~Pw>`Ug!*avIA7i=VL#ua#4IdBVpIW3GH1D$0F5b^U`NS?G7QR+=~~hA zj&u`uA;{~TJ5b~nmAR;HK7W|ts?!~TDz$E}*L7`*7O)cfJr~v<6)A-OrB^LWs#izy zhXtYpdi5^CX=|U88Uq)4YPM(3jEbL3R}G|)F%oXNdH85L11f4pZ~o9sGdLr|R|b@W zX^_&02T7Tu-=)%j$8wwfgB`s#hC$fQ2T!@_C^i$LQFnk1*mSW0nw$JmOkvu;yCgo) zq~mJ6x0B7cD4gu<2MP9`{u!I)Fs$0$`^&c98Uqhg(Ew6S8wQgF_-alj=Y&o&wA_dD zyhr$$WqKuEiNAqy82cAN9;JVx z<`1x{i$_mW#T_(dw}MfQZi5ZYKxi}hFSLn+k0M0jtJ1)(?2BU_ti*n+d;U+5)jh*CrLssu-HrV^M6 z%E8QyU|>w7cYCv=^^AAH9K4p~`y~UB!--{Hx1OLL|LtVIGeV-Aot)Ds)`l?ck8Mo- zEyzcVCs~AV9nYmCO6Ui2?J6mE2SK5hs6w^v!1WbIB}k^@v0Mgl3JUu@7LbHGzjxYM zcV|MZ4Oz|BtaiB{4dt~xVv?haz1N2xciGa`a*|STm{t=LzWir~B4 z5T?oP5l@}YUt9%HT$$VYT%_*omJoO{w+DjVLtT%gKL3i zLw#AvuJb_0v}}K72KUh?FMzJ3b^O7DROO;kWR6Ss(ZWb`uZNI(hqWn@S-nTBhNdB* zhp9l5-R!YThj>d&uEMiMAd?d-HpBn*%U!2gl+U@7`AfZLxmlh=_)Fm@1FB@kGTlbr zOubzJ3x?WVSd2Nl-CxDQVgf81ik;#7K-xD|b|8v>B=ies=r(I&7a`5=TVvA^3n|h@7miyPOKerm}+E070(T&{yVBxxM>^zN|3KcIxjD@td=tV zHjbGGGzoYfHa@?{#?g)1u7g~V0IxPXqGrrv4FhPkuUymh-o$g|Gw$Yfyek9E@Q1HL zVaEc^V=^|*_+THt!ezf+sL%In>WMJv5_F-*dqFBaWoqBk>JM}u3hzn@;d7>}!h7}R zSfev<4c!G_WM_c09FAdbad2h+G%DLca{k zZb60c?<164{Yj2}rFM{H*qQm$;M!`qN|goiDgsL1IKQk5t{fL{W{TGUW(`g()!#A0t~URkt;qG6IIKNAgcr#g_{3 z4bwT6X%K;k0KmHovGb~s&GlyqZMhMR?Vv3rZ1C@t2a~)hOi!o~7cgVR-Y38iK!D0* z5@v*lkj2Rn+O0e}5S^UtpV`62c2(3u=(1@lG{_K@AQu`|KX8rXunjM(p@obou`(cX zZVutpUG#aaa^(aGP5yCyHtsy>Y(wK-KIg&}tyH$C(T&1R1x;^nM2OONUirB_yoHR8SZw*!z`6(~9Gl6fB^7KD_ZI}T`p&p93O zAWitSZ_m_nmIHM;Il#!3$j64edBjq>WkbzToi|Q?@?eFc)?kCb{~PZ(mOms_P+JP* zF!rCTJ(TmRzyzLgMbtao5GeE>s_+KccQh)AYzP&-OZML>k@$v zr>O#~JT1b#*dI7ef^V*a-j3wDK{T@p(tY@Wo%MY7r8p1|Gs{oT1JXqMPswiU(d<(5 z6yJ6bK9d~oLKpP~K-(A~LF|a#CE!e9M5~LPAtgT;l3;jwtqlX?2$8qAQb)<7vV>G< z)WtLKKE^c2-F;Q|1@QQ2SIy*#OC(8@1BT3kE}I8#!%=PF{(NP(@kz6-S8)tc$=MDOz;o59=oFP1n@-Xg5WM^0yZ4T>Q*;6Ov2=s=%JutVZIlffHdJW z3i&(cIZErcN-{GZNqL6juL<%sUyEMb+L5+%4~S&O zissm=*3HvgU=w}txZykxmM3c3Wm0BGU^*5(lgVr&r87p3wOdO`DQg8Ozw>;8#oCr3Ml;wn5jPjNrnc@s-$><30YYw~T`ZsZBx5KYFVcYOc z-%hft?{U4_jz9o#28J?J8?_1i5(*Z#bTtV^sEiEN=;pwV%fB5uzQr1%8-35sEguXG z{yd8OMO-!uut9Oc+p!kl$n|dkUJxjeQ66TCvIXJb%0p?Om~4pd8vQ&Y!xWv;uz>7Kv>JzI?`i2Bo~2Sn7S z@@CAemt7=BV}z4^pcQbFl4`J;y!d@$2VbVcw=qmq>hpVEFs0Z1?IbU9A^#o6?wf1T z>!fZ#>Sb+en+VSk*6)`!xm0&BWkJtR5WdsCxbOgQ6iMXk9x{hqiB%Rt!hD)>qB08u z)>*knF6W6#QSO;svO#a}Xv0%nwpKCn^?1d&E910LXe9#t-5$=F`rnN2k2Zh4VtdmeHbkN@hh zG5He!D`};pq^7Sf8rr!X$g75|m;y%a;~&for==!Es&XN{>4RajVZo*{;-&B%GcF=c zI3KG9MDr(upe^GhgB4yM$Ty+kH?X0aQ0&iH_jSmZ;nJ-3b3rEwA@AauPF*cim3SW95tT|}o4O#LV(=Xf%JTZzW9>ou@R-d$_21c|; z^4UBMJG>Rv-~$BCJqMF}(;u+%K=||rbH`{JeD=?_?0|8DlvLkZJswc5DH+HYNt=9z z@+KBn<$*Nj7K=MDEdr#xXI+6dSXP-b#4LdID=;XMt0chKkh++xSp~@tV-HEOHdYqP zuP8=0yWGw4-DV=Hb#w^s$ID3wtK)YJE)kG7KW_oJV#|5@{JKe|y0&ZbC`P)={@98-QArqnT6j&f{2g${Kdf)6^uE{xa*-QW=Z-aB{{j<5j zqQ8H^uqt4nb;u?t-}Nb4tcVw1wMidaf;_WhDdc$&{>K9~ZmAi)7lTg*Bw7?udXpvo z1D;KcR-Wo4f43+j@1}Nf8WpdrH4<`-dVGsgJY%R>0Rf!i3h33JJm9S ze>UMoQ|S|Ec@t~x6FbZ)zUAG0ZUlo<{Ue)y^>`?WpsG&9vY zqVM14>L73sM|?`A@6g&tLFCxKO@Ux>L(QDA=fB7!*3G#Zdpv= z$=FOTTE4PGMX~+s#n?Q@4pMFoW=#NqTGCA<*x_cVo}7NAiD6=i1zj8%^CGuO1q@W0 zVYQz(>woTGW`N002RvgAh{8mDhq4tSI%?)zBpOBDcYez<0&QKXCVf9JI8ypk7FR2d z2x>RTMEf8w49es5p5hDJ@Of(s$->)CF)lR6nJ^2Jt`8CsRBxW|qhzv`AqN2R4fu+V z$R3=0AtCfT_sZC%jU*P~)8X$Ggx_MPUd#GS-_Ri=A$+1js=6)L`oYNe7E_m3$niZpSvZ1*w0>F8JhP#T0|4{B&XxXiThj|$O zRIfgKtlMb@S8AKD>@K@j9XWd`JSj8nLwmNu81Q1%kQjj4+=%>(&snnE3KiQMIf)D* zewL-lT6fi@bvyQ}U1(1X;`^>E_sQ#L$)GZsSa0NBaiUFxh(L|`nl8H(Zd&Ou+zq!8 z2jfOd%;@CBxdaVzf$%zf_|LGr^{Q~f%fcc4f2y1G3GxNlywzGUXZwrE0e@;1NZs;1 zW$;QmFx&qxdxfzE;`!J}0c;SoIoA=goF%qf5IbB}>=faQkG6p}h&4%=?hAW27 z^~wCg-5&`PQyB0C%I`U4RK~@IlJYo)3BCHUWPh_7p|h{pV2x715lwv$={eCC6Kkc! z9u(&@mkeYp&Ae&8{Vm~csk0IR=d!&?cUt=5xSurd7ZE)$^|neZpw>)o^tg92SwMnU z%WMFPFY)s^LxW8N422+%vXXpUA+s=_>yd^gK!M&}Q{U0D^iy_A*@L$y%wA6NhbtxE zX2%&S+&I9?n8PN*249A_cl`T?SiRhY>&f9YRC1n0YF{J>TM7N5nQgJwvp_~RD(<(p zWVB~Dy<`90DbEnfHIy(xqnx7WfnL5O-)x7+!<9qL$RM`u-HXA?8xV}z=2B+H5fD*NPorkyN$-Jkvd2r)ap8&P0puQ3T;>HHB zO4X6)fCqjU^cawzG-QU2htC**2+|VzEg{!$B*QP2z8=RJc4dKOl}cp%yYg&UB_{Oe zhs(v?)-w;&O74p-O7RvCZ}}`X$(Q9^Iz@owaS)8k@^csCV9B+ci*c+yWjR~HX%Kh@ zP^lKbCEcV~#z}9IQhdCIfcKE(y-*R5PTjTHsq;MLoUUjYt?8MKv-I)a*e(Bgee!vSk^P|{%FqLbaxAo2OZjb=>DlOtv&ya#hgq2@nP@Fl8Wf5{rMsv z_r9zj}Hzaoo}v*Ub*=8&|c^)(APk(LQ z6gg39+oYPBSCHi^(`RI@PnzQHS*51=FB3n8QN$aYYTef56YuF>Rhp=pTbk<-Fr`{3?~b#w zXZlg5Ksb!JckRA&&==R*rf0VeSI=`tz;nwvT*HWXJ#4=sz`@QHH%U5&qqFMc)twf{ve=`trv;?0cO%yT&?>ctZ?DEGkX{(Aw=pgV`_Ua?zw zaK28=-=6?R>VNq68$8QW+sk1d5?ZXZ>1t1UGo`KnXET3(vl<-vH7M)6U-!{Z+o21u zrkVufO+Q;X4y<2(5-8C1dRs5YIbDweOTYQ5Gvdp@;S1FZdW#0wGrCkl18{&)prE?5 z09}x zf_p*Dt8EhgGUwB$ZRpd!hU@L5cfCdqb5FJBD6$co%X!1%34tG*(Mlt4l)bu%rge+; z`DX7hSFT5-uoI0q&mJo!!yv0?W+cSMu5Yg`_BgOI_))m`uJswb6|$i*GOxoNS$s@ z_d!dfhey|x&NOWCHudDdxOU$1aQ^ZVMu+rj(E-&5S3W&sQO#v&Z=_eB*^oRUu4pS@ zU#)%ojj8UtCh!VASv(B{UA)LbvqS%6sXp~=9c)n}BWt)va^Zlpff1B)82mw}%Pd=i zy^i$G>ZMq^N9B-W_OELxzMhVIHm%<;B-s}*(;oEtkxm5cad+bz|LK8ktm)^Y@WI9u zzjV|(zqnCQ>A6Fc%igAU#_`YC%IEyI6z@e3S&wxD{Jqfg;d*x7BB0Xo8A%Y*sqTH( zd!hF+emS(O6%Z5rfhB8L9PlM96WlMfSU3~mY}qy zza;g0Vqg38zJIN(wqH^*>?bp{EG3J2>{Hjc`836&@$I&IZ(9lK^FO*m-T!L!*}zqQ z?mF(kPuW(=A-V7hn@94AkUim(*P>Aye97;)>`>`DxT<-8a9&*|xo5wOl3Kpp8$qQr zytOrfx^_S?D4j0*Cqo_vj;4b#48@N+tYa_#q~vow_qEr)iO(y}eMKRA>x@YbG<~=n z;cm2%CwCIArqg_MBt6@vbI)t)n_uRIdq^L*+F3o%+RJ@kPFv5V^Rb_=&vi@nTgVv~ z&&xK(E7}I1LS=uELpASp-8eGs`Tf9RA0jsqdzdi|hyoEG`Yyqx1RD%8Td#wou1qm_4Lfk_(A_I;rD zw;P}P>TDt8bXx(a)gn9WyJSB3`_0H56BSTTorr+R@_y}KJ{TY4l zvt<_mFD(=?r4u?grcuyfWj?L~c*2~1ZN&mBM_K&eekc7Pr!D4BUR~xPerv-;bNS(N z*=Ic6&Hz4w^n>)!ZrsKFs!nm$T-Upq=edX9C-`YVr`Hybx(dlc&yzy{0H_O4(w?xr zq}Yj5tiV-=FJI2>xQesG-VZFCAJ^wRIT|hg(C5sg$Cn#rM`H{g1ikM;aUDVhhMOCI zsdp(F(bpCyRG*?i#{x76rGK!m7UKj&|B4dTGpaM*2>w#AeN0HDhR|~Q8R2E#J`t?+ zUrK+K7{Ah0VjeBgb4v2dX|sHG-3oDtarN%41*Y*N{G#GVKuPKf-&p&yyaR^YLs>Z*an)6R% zomscIYJ6I2e#zAvKQO8ud~4JM;%O@7CPkCEWd&&57-| z1N=7fk=1a>J>|GRWeZrHPBCbdK_<-Y7Ao6RMs};3CHIAUd6lLlI0!oMi+LDE`O3oU znT8ucGKhW?$^wO!ORuAoqsJw;(+_4C-n>_(axbB{{8{0Fu;|Z;tkcUZ4;^=li#tlx zj{m^87nNNSK@(sIaIXd)}qlpz~rBT(6tDH~;ri@jt+TLeWmGL^lz0RxLOU=3*$P+n`!H!rJcnzMG6KGb1ihYE&0C8P0Xd0s#2 zKQ{Bgx`$*u6MD8641cbj8HIK{3*gftOhMWUy@>_6jtUBq1(Ufu4 zE-W&=y1`7=mbQ;CKKv=g;&o{B8n~a&WNYp{!n8z$mTb9RZaDN~*j&kBHMCx%X7V_g zrWVO+V{R6~{YgBBC-Ylm{D#3=hgebZ*_*)u0pbU1miQ+t$v?3S%y(k{k-D(dpG-dD zI!~_s$R!vEjQ86@9s~2oSph#`iy{HrkA9q`379b&DOGQee~I>ZMW!fPBj^d*Q0UdC zJiZVBg-cwFGPpwUveVY)=Y8;66|X*Ir4y^0Wa@FM2D#E7qOtEGFY4@rrI-&q&%J73 zt{4+mP4TGs5|2(JbR9d{ z2RRKoH8)2B+!D#$R@6})=I-*btq9pFp#zh>b||`TqYvF*Zk?KQ4nH9EW`Mp$;a|mt zlTPT?IAO{oLaKX1K*6UDdOMD6)T8nlEB*f4^n1f5 zfTU}#^|wel&I=ASE_zx`*Of3{O(-bPS;?0)sj7@%#OZkdrt|BEW)=*FHb z_IhW!Jfnw8veN01m2_9%^n}FY_LdH^E%*{MSNeU&&aXV$E$cPW&q7EKRkO$R2&E$I zz@i{OzEdOn#!w{Mg>`ABbneoT)S&rafxse09Sn!3)G^zb&4|=H7f~~6d-KPGTdF3J zF*M;n-_i2Z@|Lsiuo(Zk-_egKwYTHfaElije`o*CH=B3e#EEOE140ObgivJS67Q%)A^PYcL{6(tn)LdNoqk*urJmc-_c;g z$I9hLOC#Cpgop2)77gqdvrsZFk0nJ)i2~Q@ddw^(!b2G`9D;ftTI(_q1Z3Zk`zr( z%KiFCao3_aC)EUT2b*7p$|UHJRjQ&Cp}5&J1PGl2<4?!Y>l|Q76YzScYiEiq_KE0) zrLQp&Lb^P#MVQq`uPYm>JET>U2}4LuEY9YY*V}2jWV$=KjORhQJP3QZpo7|>b6Y90 z_QLL%v)q2L4?Z2RbROQ{pcxpUcvR!-87x1>3b-v9F*Em}Ii$OH@8i@R!^X7XZ>y~C zStpIG@+IelBltEBf0MS6*UVcA@ymC464YCqYOCDD<{rJ0xfYB_{6@o+v z<9K`fz(|<;)x(ypLEtPDi8e`gSN9s4#T#C+eq*+Z$O<2|=N3 zR#RQ%ecND`d@zc>v|{$lY@XWGPn~M#;0G%V4vlz}j9J2IVnv1Id{aWT;qk{FfCU(* zADsmj$aOB0Ws*xt{OP4qJjIly{pyPL7N=@!c2$3X2Sw!eul|5SI;Y@1sx`i%gFBRp zdaqpNke&}zPHVhX))vZSQ;Z}_PT<|e6R#Ia*A`QA^_#xh&7L5PP!ZI9_PUsqZ{i{h z5ie{(R@obTS^q3odQ-!IhuFra6!`p>aE%+o(n~TC-{uRLJD5r-+0z?POk}y6YUx%- z!b;c52O#ER+7j>XPw4o1N++px#0m!2&*{fh&t#rD7A~G`p3?D~fs>^>M0$Q zBS()TrmMT3P?7H?xSTKwwjU4HOmDPvM}N}uN_Js zPV4UsG8}8^K)nK~$6IZ}bjf^ZKKF{~8P3fE?otG}6#Kd0!4Ha8TKIXNhk^O!_d6oc z{Y6Wk&hdWcg-t(HSY99QVOw!@!dAq>D;Ce$7t4GWC3AAoK@&m)BIyE~*+v5HYr*;P zs@9(4_Ip4W-EVmh<-MMq*ujtVg|VMU42^co0oRKYnnM_>H%^4P=d1d*=NTqAjyMD{Er+sA_4**wtm%BDaJI>Ors==LBmsrustMF3B+zIETH z5b}+Sy9z*b$(gQ4z)03Knc9;~igZ@2A4fq|*8BLw*&HRHu!7F}O@VGjZB>rF;1S>3kD$#YD(%b4n2N8PVy`{9C!K zWp39)ymYd|3luoa;A1o^pktPRTJN{($#AEQ&zPpLQrgN;4{9dLAcoJ)(i;~#v8&-2 zYkQD`*t6|05r!SehR2{=`LCdLP$O@ZUWQ53x;gf?9`ptfGKD1Um|k;Qe2ATvJ1x$R z(!>*#b0=I9G*R_*`RJ4jDLlSWLNGWZ(b}|>`M_DHqgj#4RmSwhu(KE3ow;HyoC~HE zjN15(aj`KtYumhj#zK5#@konYMV+wt<$xDE%ttph+`1spp0XpKcQhtl_v_t+(LAJ~ zpIjQd=@nBslal!Mn3_l7nkA!12ILsoAVux%qV?^|Ul~ORi43i6YtaQ$KVGnUy|9G2 zXYU>51sl>HQ`6o}-nrQBR@`TbZB0?|I=ozSJn)QsRD9!&MwHpb3R*xPnKj+e*~a`i zJaX-~a%r@7Wev+E`77$EH_rUvIyler)|_3-GCy~p%3&<_z+7NJS=4D?ca$MDs2U;( zBPFq>7kcAIHe?}k9094nay&?o5cX;|r}RbI zCu(Ksf5~}q=nO=}w1kL-E>aQsc%K%vWoJu=oMciGK&Pbx4b zTb^J5^1E8ZI`JZLA7QMP9iZ{}ZXfZW(K^MakJCQpYd@m9e6s37gwiFM{1*K@Gt?xV zK;`%1z2n{+RC1@~KnE_1OD`6d5R6%K^v3CxQ}qQ zQA3?oNkIjoX&BKU7RS#x{^@6ml2*ycYsxIcZK0P*d&=yWFC$7YZg*rV5J6#hjW>GR zm0v`zRVz}2(8y6*MlKL!+1eQc;&zUXzPB>&HM-ZB2CIUqHUtad}-km9c z))Xe&%0oSstGgRVpGXlf&jFpV$!d5f^vB`&7fo&D6^L*69KTupfZsCpj{)#xC*}1Z z=yEXEw`knL8)76rMK$4envk55ErYkL__h zvDT4Zwxe%bE_!Zcgs3>01_2#VZ?jd6j&Yuh64>RexFq%tPfdz4|$m zA&Zn%w*FahMk!*4X>>l}jJZxVqp*JS4Q^WrB?X231mnIYt&v$Y+l%$zWyA`3-%Kz0 zPbljl0>7K6JW!1UK zA-<}vV`W4K0bhf79NUHK?FtpMePRk)Nu*qr&)kiVkR3wA`_=-#=n0!7<449ott^XZ?(u?GB=j?* z{>L^SQ~#x`R>#8DI@Wjup90Frz;3?W@N7Lyr$bI@@E}V$n3f}RcbFK*rv-xY9qFch zGA?QdA5$MB=-f#(K~LLF`CrqMTKE*mTyrlubX{-!TicJL1;HuH;G&in3tjkcCmxZ< z!|Q9|0)i9BVbm}^8%2HROE(UL987u&8e`!^wJ?0!8S3|GJeM*-Q$rhVN36JAib*p# zJoY%Csc%`VQDdpnk=YycnyPTb=x^@@sgMD){0ldsLdE+L`*r$=dh(m9i)}i|C`AEJ?fL%HT#B47k z+PWLZwA^MhjQMRFW(=E+?LYk@A+hC8R0M7 z&2{NAf@wV3bCeZsy59dqz>TpsCFAu#5#Dl_+b^r3M3>>y!lWe+&>kw z9Wf$5N`iJ`Otwr{$35dYXjzf0LZSPo`IO?F%KV)T&>ay%Pk+il`A;bdn=QAci*If| zi=CV@43=FpZ~1=pP{LN5IBK0#^h7cYolLY(N*N>gcQg(~M^2|Sxf z_)Dqlo0vssDxB^cb}jZ>Q0fE3eZ&P1t(N4PsM(o_DAdDg)?HtjAFT9TFL25)hdtU2 zyY6)sIi+oDqvOO_-!=|xjH$i)q7#(W)bp4hrX$OAz`DF%xPOLkj~9@)^xQ*du8J{_ z0-N?A!eLe`EA4X7kn*=#O?J=Riv*zeIy6+FqRzZ8aGnvF&|l8rfJNmlFd{4c`kOBk zFx7OG(0Mv!I52zltC7N*W7K~!`T1RDZv6o*S__70UF{`lOI9#5XqHM@Gr;X@>r?(2 zbYbp9s=QMg5G8b%HMy&yZ~oe05PzO{M#SZ*r*{~9ySKTc;lu0WX?w!B0i&AhdG zadcXsbnR8yTE920j}isb-maq!cva&axLwxQRY;W4TP}S)Iix1St2;3R8MWS4bkNgIU+_sZBNV<#r~WvJ9$k!rA($)s*xWTM|AX58@02aDTisfzt%&=eO1 zSMLiix{VyrUS*$nPR+8%(7YATn@k=7y^l~`{L$i~T)7~bu<D~iEN^B4-UGV)& zh6J7CeBmb6JxOiJjG8$QpqiFCi!MI1Z-WU@6|56NhL-6ENVQ(M7T+RwTXBl;a-nMv zOLj;O_k=x#me-T_LCHEX24pet5OQZtjyh3J?`66)+(da?iThVRQE$@R<*d&7V;3e3 zvo$;T{#=HYZkgsCJ``*zkY8Pk5xKCsMw2G!=U)!VhHcFUkwMlWaWC%W^#rk(N_S4M z>!jz}%)53IG49vlfg^k~>cR5%hFB@ACbhrM+!9@8BRoDaJmAts?e7B{OcVW{bmRhK zhXpvN`>{V&i7flu8LcfxJd}Jne!w^sp~XZ&Gd8x5PdFBkc{Y*07f3a^V~R7M)bB03 zNj(mhqd)L?M>A|C!eD|&bB(9gq~BuZUhEefSwB0#93rb2CDRVFS(~j(m$<;QQ5mY;XG7{BsVgx$};$ZF4>wZz$oP3{|MN6PPPuFl!nqi z>&~;!PQ+aP!Bu;e;rJ{Sj*DY7ce*o>D;EFSIFI93#-wM6 zj&pq+)i}G#TZDkwFkI35#t6D7p|GWH&aB79!W8b5DEbw;6_q{8k4w~^h_Xwe5vi51 zg!zYLh$H(R1J-wFb{hp?{eR8Eka+{#AhtDGI+CeLDCs!g7%(HZk3W0gP*D%W8HcmW zx?LJ6{xUIbxMQ04k0A0BMznY8g5anx4>Uek6z~u@3L#^}u8m{M8CgOqS#{;}p*a)j zhk+4sURq}H`qX=+aK{-My2Fj(6_s&*du|6$>29VG=Bw5WuD3*1b;KMHVIKq~%>MM! zr1i+{k35GXD1bz1nJBm%&b}%t2C97UvAoagOn1VZAvxmIk)b|-EU)`88w)?nJuwx* zACy>)Xhv5kwQ%BS%zX6Z^o?3zw3t6RJLnsn-ul!i6(KOOHT;- zi7u~uh(Z3OkW1%)Fr2>&V=ug;sTYHMKKuL6_cDER!7L-pq5M*8HOnj8jm8}ct@FRP z`RskLkchDOn_(JM^G+q!uyH-hY^NLCZYD#HP2}v@_zp33WxpX*Cr0l?!i?i`*xT5k z&d*H@$Vs}&gGXmq3e)i_PhV3_e4|u`9Oon|Jd)VBri7U`G&L zFzY4ikn;hrzVn0K!G2v)NCR)q?u5}6@~KdB4OGR~)$dnVdJfy2n3q(ih@m#ZliE{q z4)-)nk8+Bxotef&;e8~4wDFX4#8Shx@WJ2J7S=&0f=ZJ58B5g&R;E$Z-DU*=_g9`4 zqc0W@t<#3Po;y9H3IGKAj6<`fwxI7q{|vaOuNKIMu@8V+KmgkTyMwBVS|v?D#zNPF zQgZa1zv1w1Hh0G2pHafHoi23peI$`FJ9$hgl1`1w+oCONp=+Ljyn%366MN9|I;=G9 zpXQ90GATo-1D*qgI3iOB=PN}r?p3G_zw}mwe21y`0PcvWyu*-JO>PDt3+eewFU;J1 z=0={>bR>x)4am;hzMkWmC6PYHW$?x+79wYph%?)?b2>67U+0l_kn$AYU;%)&Zx9r9 zl^n3ZGl`g6P!1=~A{s}4R9KTPB|go$D;AK-lqNuo681Tz124j8JRSqNap zxsExBpj-ze-hTYj}mU`o|eQ!Qcr^E|(@9+BS0^sU|lOxt_Xx7T$e{y^Y zi0%BwO+b#8r;cgIJ-=Mz3O!jLT-n-(IuY?3M z=g|vA=wB%M_J;O>zcOzfE|-D^aHd09sJCOPMyeI^yL}Xy_4lzVzc0 z%_s?&u@KXhBk6s}N#7Lk+mY<}A~^DwF*X~c5g{etd#Y>})SjLg&)*Zzxav;PNX>VK z?=&9y8Y98DYtZ|9yUwVi>1^xbq5?2>wDAk@(NeB)A85s!ghNw?g+7#2W!aV1%wyol7LNPOT{!289(OHRPAx7;KevaDAM3 zeeRzGD|c^0SxAeqtvwLgm(c6OmYg7E`q(J^#mU?J9yP(Q%hs}DgSLfyb9$DmO?JSf zD~IsO3Nmf6-Xc$zF&AB~Ii2u=rH;}eKHawA|CnxYE927cw#shNHHCTq#g)h8N>{*#X@vU&&#r^c8M(AR3WQ^VXuSDfTadxM< zf41>m&lz&vr`xcX!a@3BLvNE1nuGZgND;Po<+fv>JpPc^-lJ0xP78r1hbbYu3WC}m zeB7%on<*ZVd2dajsNO7S|7c5=pVRqfqO#FXzVxIaspL*Z>_VCQgu03mP|g3EK_S;> z422^sW%AMQbr|?hv^~gZYV{Qmda|4|-=8@f?E z7=G&Z)0By(WMuhT(W4g@B~10-t`%im|GCU}WK&{~R+}^A>5|Vfz5u&;_f3&!ThX)a z&xE2>G3d|l1D9ktu~9By@i!llV0F=SHgI^cdTSK0_nQQz}_XIEzj znK?H)+cbATEkO8uL|=bRB(&Svl0p>lI6;CFnh{7OAtG$%eU!YoAHD21KnQ1>)vt-$>YJF|wh^`3wI zqK%82GeltQylY+1$ggrxj=vRleSvw6C$)^{6+F##va6!T9)uMJY!|60I@n14kK>7_6UeXr^o{ZY&OTEV{YQIc z30*KQbsZsDib>{;DYNZD;={&qi#3+62CMp;H^}=QTsC7^;|$DJ=DT!gXZNP=5~2P(;|NLFcIh zZc=|>hN0f@r(Z}ZikD0gn5qa0t9-oXi;vf-+WbRoI)l%-MJU-s^XQ#3too=#Z%K9V zP>uAaX?;7#MN3CW%rlw^L+BQLg-wwfJ|qeaMGRIT7oZlS2^2%MGv1cQgUS9WYei zWKJxVbNF?qz}-@iq2{ir>t_3G0>1U>PE_Ps+QYm|ea0Pe2dd>)&xvW&?$Nkut<6g6 z=U=Z6$&N{lJ}auo*PCl(+PJY?-4eKjmZ=EV?A-iZ@2T-Eexk~*Chnh=9xCoue)BJB z90~#6#@K~Gna`LHmi`DA|5DG=ELz+LgqWN*K!`a`ai%lxm>%OW!u(u}JCs7O{P?Wg z#qn2(t@n(ctZ3N(h@CVlnN17{jz2jc56X<2^-G8q<)6J-J#t**+`iw2IyJ!W-fb54 z(yKi0dhM^@@a1En{t$Dj4613Vk-IojMvM~h4MO%X;0i~Ko?m@tCALA*Mu-qNYVK(sZDLrB2zAD|#o}i!Z0ipO4EHD_{_QW5 zN>Obu@9+Vp85}x&vEc`A;mmdHahA_#3tGK|iFp31=OmZ+dtNPPEn6_a8gF^Ji0Z)Q zi4#_P*}2M4gib>-xxOCs6LbjQb0(B(ql2m*-<6}apjEs$if$g)KdBSLaPIT8f!o#m zuBbMoc!1BI_V zxRV^_w8XZb?f5|SiKr&BI~j4q&Bdu)XB8ho#UqcS zdcsPcO#<=!U)G0c2N_lvkE4FkBoP@b9e=AC_=37?b8LW%O`%VCBAxu}J)Tr6B*X`2 z+Oxc1=XHBj=ik}p@qNkJNra$FfgtTuMA*CCNaY3DL-B42VmaBJ75No;hI>kzeRo-q zj4)L$47(iW6V^uO6nGBA%xbH~Op$gG>*mD!&;2B|ert>vE$G#w+<{aZL0`zQA5jVG zva8>WuA%#N8MB?bt(<;lj00$Pg=}hcjxvpUPhr&3rNEc9_EL=}|I0p-Qrso&Wq{D? z<04Y#bDbfB*NQlDyF)fV*T3Nj15X@J+e_480CdCSzo>}kY#oSO=1)0C z}=tObUz9&y87crH4;X!~vQa3hf78}CUWVc_gjmGnHf|0Qu^kGjU@zxWvjX<`J3EQJ}R&KmNbibs;dW*d>!8sKoi^r$R@VC%P8jr^t+kLVkgJG|^m>12c@s;x(z$ z&6zu6Ws`JAk$+t%?8DI92z49KDfcV1US=cL{2a?$O*zJKR?D~EC?m|Gyj!Jj=R|_Ec+vESE^L@RXF~IF^O|O?xCaFkfK$(4!yE7HM z$)jT2p;UOl2l5d_&tBsu?rW{0OgCh7FWymB!~f~KY9IL@!jp7&OpTB?21Fe{M-MVt zjrXn9d>}^Vb zzc$Or;bOwE(~7ds94(YFm8l)8M~j<3^4Ks>#s+t#Ir_RiaT7^8x)KWY6&Q-f4EmZ}ITiub(?( zguM7tKex}0&i0FV9`Q2Tc@wwGr^17@a02?G?S5o+&`@PMd+6q)B?$jV)A554%1(vJnNEGHGA_`8w^$PcLju(?0|GIZI zSMbKwPeTie)WSA-{U(Jn{Ct;4`%jmwK4!{p>Q7V!C~kCs2}&0U*7t`Ufz$l*zTJg- zAE4C(5}Li!J72jdkKM;?Vw@Kvd!1N74-jiHS?r44F86S*QlA6D6s z6Or)yoAFh*nZc2J?p+@>hC&;B-#2z(KG3cDd#G8TTyO#(PM{xqpdHM>@;$UN3LaEW zGKNa#_nno34j7AME@UBSu}5j7S&p&;6IGXe(U_FD{94cBx_$ctg9&%PBvTBmuNPlT_ysJWhSQck&E zEOU@(&U9sg7cO5qquMF>;cBIS7btyU=X`pVN|r75`qnUmO-y)<@tq*r@I)s>t{Av7 z{am)f59N^@{zqraNbk#t1uC(Xm(z;R{gFReFrMOV)$#G;utvMMi8XdYNHE9Glht6n zFJvKoLRO$ZEaumLjdswoXZoz6bUF%_Nb9k1_>4N#e@;iU{8a80!n!wIjSFBEA40Py zd={svaMc{62*J`d%Fa=jT#zWgwX{sSxC9*PsqA1frAT8mDefQsb)64H!#Y!FTXE?o zI)B>SsEWq)Z`)7N(3(bPsvGdc$WtX$bt6T56frl|_OYhvdJLvP?pzE2w763M>Ae_ti5cyFuUo3+FN*WvKU%)-Jc@nW;;FC6=cxR?mNAsVU!aE1 z0h`Zk$+*?Y`2Om$*TJ%t?zaWy*V*SQUao>2Y^Ur(ewQFg% z`OQR{WuAU(`32`9x}2=C8t=sBsc8V^Djx~$*dlSzPZ^vz1?paf`^?&=`d6y%Reras z+&Z%DBvR;pA*vn=*Vw3{`L%q{LE27J^SJ{62iE~&WDhbfiYHjBuFXqvX!f2^EX4Gr9M;y*dy6fD|vVI>R~o1HILD@U_+KhP(gGbv5LC#){Z-G|KO@R7On& zS{s_F1OrV@q9$D7|m>sZ6e;777A{0N4s$}|d#ILjO z%APx@&LZOJoL+pVCh8H+uPXv6PP)i#J7bs6U<41r<4{>OgH51U*ttI)m=P>@r#R-u z9+nZq7lwddZ+I)DT36<2e1R&0=)h!B0E*#rFnNx8H9XQ;7tLw#oaKhB>4tdHM1 zU$*0n?rwDZXO-WJtoV$xm(lOG+EBm!a}6F3>#jzJ(-cfXq0Z^PpH$k`)XEGkMhvwH zb!x?MkK!uIkR(s&v^1pzLA*ke>wvum+|cz<+S$VJqlL&y&d^`vJlvhb+3t2O|51z* zM%0Kf%o<;<@uf6V_Ax?&`wfP1a9tGkyE?MwrKd42qWPmh=vsH%;Mpd1HyPn^%^{49 zHhy*kO6LR&&<7in+V70tKDYgA>AO;UU~#BWd;)$(X6|5uaS8EqMQErZ&FQghq&Oz~ zKHKhk0~f4}b=G3j9^w1$Sc}f>Cu6c~<+13@tAlf^mBqB8p3D6>kjMJZzRN#GIK zw8xM>E0`B&v04fsJ|^DyiKhHsYN|dlCwrj6CYZwtG?;wQYrhaWxOJn(i^K7SMd^B) z=W*5V11J5RVD*u;7{Hsc0L?v-Y=AH+k3fU#U7BbpFFv%r#k*Z%)0XO|;MG6MigF5j z9WvR~qpz5v<1d@#Rht#ynd>DqVVAG0dpnW+Px8tILI@MLuWHU>K`trB2soDX+%_0y zSbwS2uCT+9JvDdg`y;x_&0lA{pCf>d?f{w%ebu{pQj&BKuHcu)pMtN=D9&xD8iXWK zKcwDZ7_z|3K-z&f4&S_VpqrCEV2bXjW|O85u-YL>M1(%Lrxc;GDjil04rY0)(-v1F zhUt-CdIerl|MCNMn){8-Jc@1e{^2lPD9~rs^5v|P*-dq5soM%iun0cT_CxIf>aMo7 znyIhH&h{x)h0JBlc|r8eRD31GFBXofzGeMpCbCNl%4LHM(Wt*T>^0bbo=wi~xcylF zJ^RTicW#?CvC21>f^Go;aXaJL%J10TWq6W~W8c*0Ey{+FFI?AL@#$tHGw1Zp1h9E2 z{6R_jl5V&Q?-t2G{LPu&(BLq9$A||LsW!GXnRfYUMn_znMP^)d{IuPb z&*M`%ZFc9Y(3(%)8cJV^S+8{Ah}VyeH?wH9yK_iVoXNW3WNQlj)A8=|zC-&gW?iz+ z%=G5H3^oGs5mkSi(a5jxH#4+<-DyE2UaXCkzOhZwxh{}(DN|kBXaI*Cy5tPeu>vDF zZgKVB&c)?PFuyDM?xy2*Yj~(*k#=Hf+6Z0B=IWz8^6N;zx5PLk;dOI+%D~vy!OiM( zv8OwcJ`K~gRFf-Q4L@4vEJN%rClBmB`&v6s8;mvmBg16g#lbq8d|DT{%tU;Cx@)%G zi>BG;;J-U`tUL1XgSmS|QQxqY9|d6F#wy8$xl63(Jxj~n*2;Ffj{y#~zT6BE=2lWq zL$DZMj|D$8%7p|_I}AX8*`?_4%*+?_2A$7iH>u$o7CSJ(UmqgSJ>7w4rGL7Oen$ON zS<9qvj4~M&N%m}~X$D!=Zjri>YIN(YJuK$!`{uY^mLVpy*$?p71G7Pc{k`q7Z!Qpy zwcpEZE`04^?D}~mxa=JDM~Jkh>2`0y0o!%KtJvoCK;Mz4=FYa7z>-iww#1urgyVqs z+g!>>nUnL`Fgh_}UTTwT(&S8@ngM3X&a1+ws?G+)&~mKqnofL+j|ZNipJm6klbyZ= z04W^|p|9WxZ$+lg!K4f6f}f;x;HHM;7whW#-HgzZ-Z=A6K4%}>&duJ!d1$FJb4Zd6 z(38u1iFEHti1~Z=@*Oj`{V?$ESOU)OwWlJgI?Ygy(__U-#ENGmMwSomp(DK7&OD#G zeI)6*8oR7ESWBSKx{11n{gl=E&!GUNaTUV9(s)mKW@!feO0~77wqd>gPFuZMYGh)r zM+oP};qzJPUpLc6+84`bEk52ml;mdAy}6@75G}Bzer}8HF0&azdMm2b7#SddCN6CRD#Bx-k`&e>@zZ=4d?T8o_>Xc1*^hBQal zFst9JVk3lHJ1k!S0>}m-EeV_K+hVqtq1ii%`zFX)V_gA=hr#Hu8oOm=V$xDv7Q17c z29%2_Bx+%FzA%i7g2RG{Q1+N{ZQexb;DcTCs*|5cLq_bl)BP6hZmxfzDaeH~Wzj2U z580*peP%1YdCcQ^!$Cr&a5G}*SYdFTc$>%a?}_~Ie8jxW#wf3g&~5QwF95ODi15Qr z4iQ3yfknK3U6oq2U69M%yBtgvU9D~_SMq+)vNgH=cK)?OQ@iqV%(n4C- zc@{bna>FBw>gDAsfR?`gr#Q{+(1`AZLR!{OhSDQ$QX&e(-Oi>{Y0(qYCWreH*wqo^ zF+EDZBDn9NB#+(ubF&t2tlt1Z+VL&T4j@Ql;p4CHwdHB|)64hcRpXjN&2Y-a$$B8C z)?NYW$0=`F2M5(%!IW+cDk3Tx=V%9Ou=08L@Ca~YooA=P?TMm@9Xu(n&~K7;XmjDy_KjtWsStsRCKFaKsR?1+(n@R) zVDtIPk?@!Ayj8hYuKFw2SK41Zvi6^mIPDvB>;Sxs%EKnAE$9xM zYYz9!gJnx&X*W;-!2Obv+(5^1$LLbA`Pt-&!t~>%$*cBE-2Ei42(yLWQ>c?RFq*m- z;(?yj4v3hFfLn^oUu%U5<{dNS_KS_$aKS5s*ttU(O-|1N^y`*ki48ivD*4U)HG1-4)pb5)M$$xfeD# z&B!y<9q)+GZ9y{@z!M;*1#;QL-Mn2_$r3xmGPDLD-N=~-5vc)z?r{?<#(8jN&nJB? z+h6ZR+eiS7NO3i1YQEg>vSRos<{Kk{Y5GE%41BS-a{4Ol!(e1t2j`lRxA2K;B; z;({meBIOelvsvHE(b-B&nEn*CQ&EON?eQOrmx$Cvp1AvujDq#88x|~2w0u$Kvq|nX z`8QKqn{nr5xfe|P{%rp#@({ls_rwZfm`w8D;;K(`u};!_I$7Q!8ZRn;?!bmi4=>jI3LoZLkjM7ggJr%iEtW=OH>#*g_GSj5V8O#>qZ+TDGdG^vAqTb zrqKW1G{N)8m~O7JV=mw+`%u)`0N{UxA33_)#VJmL`;$n=q^rM<{=z6pQeT3Qh7=x& zO7`;S$Ls8Kd%)-W!-+>8wm-xl4eEczR&0hOed3m7hew6+kP_saV;zm|6PFM8f?bB~aUpmr1^zxzY} zTx4?$W9a4@2w|}-wa?`MC$RnAww^kF>qFNb#^*k?G@YW$@#KL6@|Q0!h}(1j2+tIQ z9I>ry*x3o+YegypkdUO~5E6-U#^!&FrZ@>d7+kA$kCy_3pm@Nzc$8LGzGNyNdIlz`t*rujGG%Qe_(7|+R=q(3#!~3t8>;;mD zHIts80Qo%-^2hlrJ2qsCM%fM&Psw-gw@)ZG9~_!vCyzEQ@u%od&Rr*2sz#qo!jX4r z&cs{wjYL|R4j#8Q3)~>BE5fw3!E}*dB*0*h3QO%%#tQ@1 zRNe&ssEEOS_;g$F?gwG}M_6`j3}!WglT`@U)qXk$aW{0WGK`-Vt#jz1DmmM}KEp+q zN%`PsFO302=HmM!a$Ey^ii}G@>r`;VhKOT&d+zLAn%_GC;BlAxGt_Z4H$u5Iw=6g# zK|MNE`GjVM@rn-tT5;pk|1f#u_zRdwWLH@lODO$;+?|bw`^_i zfZ6_G!Yp%KRpu9x9vA!jmVSX(H+`)&AD^1iZ&%X%o%5Fk9w)}SFvHt~ZUU5o-{dU_ z*NRcWyv7(Jp%z({-)bXnJ3sK#T7QZ!*Ss#WtB+N;H&l(vf;@)jEF}y~apmm>Z?i@p z8C3CvjMd=?O#GL(JP=S)NfiNUHvjhS1*$;fob zIs~P^>#Y{pbq_m?$rAlu`d%*T*HXYo+K;n2-`Bq`Mm$7m%$ED7#rlWbn|jhoZRR+o zy)W}mcv32E^jW%(Z{Ovug>!MAR(L=;<{J>|)^s|E{z=_wpc{^}<_GN?iw^&@*V1{a zLHp{P2(`m?WAl4xrI{a8+g(b`#vD|C?IvmDrAQcpGR;KfB~hqzcsv>3KGP7^5oUs{ zr0bwo_(5yQ6cRU(eyh+T?mJ&=hdV{P1zRxhr`gP0O$5ieyH$`JdeCZIE0PmE~#INf&CMh5Vbj#t>WG$3O2b63rn{O4~sauTYn= z6tr+V=+e=rlp}XVx)m$*!~Wm9)eWCAIkK(vTI{+OKK*SF0PJm#;%$CVd6o-qEMB8+ z_%0N+;w8c@QThJpdT;;Y8>QGbCeQPqW}h8Ke1w0i3 zNRky$MiQj6n(A|ScG$WR!Gc*9T9Bxr8_^{$_Q;q;R{d zKD$jop~nP$e?-+ee0(Q&e{rzcqT!8nyhO)Bkn#T{^@#^d`!!W2Dq#@=1zYVRx*@ex zz?g;N=uBx_*fjx*Nt@}(SHFT09_h8uk;B)CXTPvwW}?`o?O{@Wgx^zDzjt|g$5PH4 z{@W?VD{wn&bAmJ7YB8n-^N?V-RaQf{L3KB|=0Q9a#*THyKQ3!*Fr*(nu94*%#$|Ne zGQ;GW!}{pYD%5mf&X!*?`aao8a8Vp64t>k$MI^I#G9bQLGj4Q`eF$o zfc?PgdlhT-j9lEWU_u&`qpM*{TrJ}2ap+ecO)26?qfeXG63WQi?fFOfq)j-<;u1~=GNg2QOWxabuDRqU^`?fbt{ae+RK zo9J6Vo86Z8aU%NXzgr~3{vn8~w2pGOJEEvCx|f2O(X(CrgsP5wQYKA*N4C_@Ji1edMC2dXE@>g)&ySDd$8MZjNtAeK@IT5Imt=UQpf)-U zlsjOooU8F8@Hh$oD~chlv>He4YBYy8UupH?CsH zC-C#I)#~=M(p`6#ljQ2y{8z}DNd?II$at_uG#3*%kQX)juNHk_vXyCK5quZJ=*PHf z7A*4)8B{374SZn-csq;mPrsTNqK}=F`lp|rCs5n($SHK)D`i{d%Z;{SBKIZ1bEju} zw`f#I6|5|+F&S9~20Hb2Sa91@t#&mH`Q@7%v5n=R@KW7F9zz%$%AH zpO@Za%Wh5LtroD#q|y)9yoeO~xQgm*GUeDRS4Q{u6Qi{C;V1sgg4JE@4{WJdP2t8E zXfYy)sF%~35GYftkJnV&uVZeu9CsYQ@;pDs#wa-DJY0aewz#$J%6k?CyPntXCN3&j z=8XNHeV59)(FBTlJt}R|2nHQLrs;k2P4SZ;lp*xDH_A$5&{v0SQOJKQ+|8@gJA$F} z_87wP8I*8o+%nfM27BojKA)|A+d8OxnKcZVHg%Ax7-1;&)K4_Z_0yi$UB!M$58x!N z9f{SId;?~CQiBIJng?;pbMJ~xC~!Rsrw$DLp81nEMtPo)9w%a`Fzx-tolI9@!;4xbCZxfa>%$Sa| zC&DgNqUvv0pAmqBUj1pm(HGCw^fw!ZGP~is!p?2oeiG!n-ZNj9EMbLcwXn7X6m^Zg z&8HvOH*dhD-tuVs#9cUWY3JOZpv|XuNmZJ?^%D^b-coHd)tW4q+(>JqLq%>ZkjZ52 z_*4h|?$J1LYVxhd<7_CqFERZ-wD)3{f7N`cNi_E*uZ^jj>6uF~I)}C;^(N7HQoizF zzvN7R?bIH#bPWB9;&+~2^9teBYd==nV*PKDX&n|E1g;D!{ag0e3rw_rv4#XV`HKNQ zGVo>kR#}|hdQD5Z)vuVOfe))z0W!~*_Ade{#saF%D`(f(&s2Q5P?Q?}*}dDCX|?@6 z-?J05-Vr6+@zUq)MN})3q-JO?=pKlM^g$L|zH|=0cRiq;!QU%>Z#fpbGnc`+`OIh8 z$AV9xoKd6pwL6!|omG$EvDc6MU(%X~o%9r4tr@5ys7_xULBc_5y6uOtEMo&g+*<_J znoW1ZoWZFh%`^TBdJQ~c!>UBS96Z4`@-Sa-5VS+}1LsFZFg&W>a#+J+?rT&_BWjGa zd#}MTbMfiM#;!cZs{MVTSb0dbTgb$)>{i$FjxOE#FX^8(W?en$rM^wG7F zdlJOA6w~9abO@QPYubl?Nt}7<;f7O9TGI{_DtIm-tR`;%`;B%5i@OmG5td^`nSmKQ zSyyIdLM?I9h*5d-SIKUv9VB)fJ)}puXQ0Y}vNkE4BqdwRaNBnLvA)XK%luN;&$}MF z&kga-pVwZxis4?}=mX*z=eWI=!e*3M3>o}v#Vs+vIuZw2x5};(42t1qL*={q{FQ(c z2~7rRt0>(AEQ9)o{E=X2NblU;cQdow=XX;FbhKn<*=mv`_;-Z`CcSCgx$Jp+8~k_! zLIReYW=20RC6p$T*F!0Gn10|kRAmPai%J|`e+S!9xB$Rq)Qy7bXz7VYFdFyZ8M7*7 z!(rC(kLJT~q~i9wZj4^ZK#Gcdf2;C5C~4bB#9r)Eg|D@?7RyUw1_e%~xA1F2YR=?_ z#tQtHs0!U8t&UPTctOyfuXq;Jmp6Lv&5T(!;44kLJalE5vdz+ksQq)!3ejTp$@Q>|WydoqwC$!401%TCzJ-5x~z&kPwmGupj8pv@y&m}fg>8mYi3f7TX zm*WmtBn`%ymM(v7iWBRMEAtXGE1Jv^7SWgauKGJ!QrAXzy~Iv@6*?`Ad*?sEZJ0u@ z8@XrqBy5!}cfDTwzWZn5wDUG^^bUaL^PB27e_b9Y@|G07qr@G1)C?-1%9Jh&OBMDa zm0R-p-i<#u2RkmLOeAaG86Aa2D%;%>n)&^dLHgC2no@eh9-o>*Lg5*H61_npx78UN zD#@n=Ge0K50^_=&&kMA_m_*}$>({ipt%&PKRxDIfG(6l2^KTBQ>_R%K1ErPfn`#QP ziO9#tu(|6-37I`t?l2-%hUic`na;_*~mU>1{wmCR4xNDvKu+waJTBW%xziGI2R@>@Wf44ekTV8MABTO>K$j z!)1d~ZLKe~`T53{$X`$CgR<>hEB;_f^;?ECHA5%;rN!68v)-)k!Ipk>>|9Yd6Fa{p zv5<(y#!bQlw!~{srbZaWYDq~R2WJmB>h;2oJ?H|~(Uf(gqb1tZM)apQ41wSBJ=%AGUQqD`*Z!&yTEr}N1|){7fZo@m5x z$+6Ix$5Kn4Do|4|+2o~t7^JfBy3Ebd1$UZA%FK_!2)i*(WFO8gy=38nZ;7A`WHkBg z+MWT~`0ejAu;??hT&S@w9}K<4?YMJEk8f@)>RgPT#Uc?vzfQD3^q$MO$-*>I!C z0I&3tmBj~=lp-sW?ko^ANgXfq{$%KeK#Rs0PmqQxrSch3^!B91o=0G*lEAYh=g^2D zf6?dlsjr|HdnlzI``#}{zBCCZD)d8-^6xN2oTAmbdG@O{t4?c;L~&E@LaFNsW|d8G zBZGaymHJW?4~;rj9@GtV?q;HrUb(A&UgOmi<|I_i;ct!qIJ;IDjE z8_1u4=!q&!BHsmG`^w{jh-OUHqkPBSm^r;7QzYo?i*GyCQ;<(rXLY=6q5SHma|fMq z-3s}B>E?L4y$dV!ox5&P?(3kuSkH(QLp_a!ooP^gm`oy{Wgn5~XZ5P8| zlBE=;YCqkDtg_&wS`*4w8RTYFGW{lYW3kPn&mEUb`$!7Y?sYP9?7;n;{oIN8zvkg^Dz zv|&xI{bDR>-nZmex3pCy`E0-XHjCV(%u55pox)6=(vr1>*9rk_o^|9fr6Do~dO|}c zf!~*90jQM>&bdyc$NZ1B>>)Vo8U}p;TNr9yKB(@7)J#sTkp&4kEW&xv)+`6RZrroseh#Z} zE>;2C-}@RE_kB4(TjHA^;hm{=w=P=Y<~o+F7SK*-XJbi#tCk1pcn+AaXsJ2DtrWo)1^)9uEqA|K)@* zlXn4hFYA0m<_0;YLu-YYWA}diar-PZ%g`!8RmIDUG(yMeH4jOM!?VZ_Ar1_^o0z^~ z#n6;{5#iGqnDrevxvAT9 za#$0QKW{$N*+NU}_#l1V&-0^EdqEDW{wt4+1m;xh0636|YTYdOir3PQ>tm<9aLF_8 z?<{+JP^1WMRv|PN+Mx4jn;eCCt#dLT<&ot9+2%^Obnlxl*V1wZC?BK>Qi{WoW_ zED$nZR>#BaW^UNZ-x=rQZ$&+0)$?VnPI--a0`bTs9LF=!M0JpUZsyF+V<>@}8?C?$ z--hfXg(5nKGfoa`Bkt1-ALW3Ct$O zlHf=g=q(RcWXqzSe&jXh$?ba*T78dMxSTMkHtrKRQ^!kLzK)c4_iUI8!s<0!iL&jm zjAx@R$r>(`j4z-9pe>}CO)Hq5S0y3|VF@caRZn4)&3=e_lGTd){3khLU_)TG#n=uM zHP3apcSIrxojZGkPWtQ>CbsGvjgHj^>|{oH3C;5?Eu6PMF-BkxD?}jbsq9hL7y#)r zN*XWybNDb+d?dl$r>LP&7Wki049nq}2H?j5ile)SQ_*2g;3q%HSH?If>I7Z_Kk_S* z!~oQaH$d1!YC_*nsnvtJiSizY>Zj8hH6$%w`bQz)CJL-CGp>MILQU*d z!^z+zdSpG~Nwp*Mz|!qr`6GvuH5rV#oR%!+qwS!?dDhKAO;TwsamPajXwh=^SyG@KtC#Zy;@GVwWws4xT;1tefDnHdiE1(ZY|qdu zHbSCHf~VPfSo$c1xl%CvytRV6qu(V#I^d)y5!9=&o^;>Wkti>#I?lA!AL(C>dNhbm z?*4Yr_Gy1l@jhZX@|6 zaz;EM)3-gskWG#A)Xrf>=r(BNpGVP*#9VXyL$+4jl~Pd<@TD2kTY@sowVIgfQFRVv z8hiR50t9r~f*MH>IlM$*Mf7%|{oiv{e`Z&zEr z%NsGYeaEFX0F(dXM&D+sKM>~^G67gJm4GCmVWbyHVJl`4v;dEamB!hiS zDHcwm4cJ00uQS0s^*BwU*ZXH!CIe575?nq1DMR@q234?SB^|@qZGKMjd|gB1762ZO zx(Bsv`@D5?|BmHWN!UW)iv6%wy+qi(k*3oA+Hc#9w*k@0ne6S~dQZGN0!xc_kN|Bc1aCHEx! z8N3PV>!lLgkV3H=X2Ztgyl0*6hA;Rl<&LOib$^a~w0Z46jsiMTY2j2jUsE%s(kBzDixMUkNVb|SQb*hh?whQx@|=TomEnXl!->aHIfJU{B((Xd_<)Yon()twcGqTOnil>O z_sZUk~!beu$^M-j93`o3BdxTQ{aw#147}m8TtXOmY!?D1WrvjH=EIu8S z$=@k}w0m6A=TB!(SDXlq##123ZyzgUuPIylNZ;O`>{VP2wne`DascJme@+kye47NY zfdtg4u)O6Y;{t~YI=Yw}?_RH^KnWKAIYu|qs|-hw0qQG7A{loN_xG6E!R!e&yGpQL z<#~W$*S-J!^q;P?dNKjAK8D1K=09MJ`T@$YRFuS(<#@2Z-zGU?Jvn4K&Jg5uBp!3~ zsdxgtlso;$5Y1=$gsC4Lx1QhGqX&M_zecHU}Wt6U1!KG(SZY zT)igf@r?Qe)`MZa$%?+~NQXL~|Ngc}m!C0Aj;inHIxf}#%#!DJ)cO~v5yY^`BJxs| z69pmEehs4h5KlK{Qr!<^sHDhFHP>}Rm5iS|8Si&)$Gm;_^*+-0e=VlKU6_ODzy^>N zNdy>;XZ1UKG-nRS`%9_7u9BZ}IJ!Z`Y`Eb-yY!UYFJT6EgtH3qj#la-oMk7qso!s5 zDED+0sB}T~rGc&$`Oh<9r?*J^ZGf}=r~D9>sD~N!yMAXXp6Jv*J@D>xc^NkMZ_~m$ zEkd3@8FitI)a+ieyeZ~*OGFM_#rm$G+@E1M-{|(k<9Ks?;J!aUVtYE$mN(*V2fB^d?*f+IiJ*Jf~Tf;NTs+t zf2ZPpsOh?)6C6>GqL@tcOT( z(k3|yB5ywWa;9~_Cf(pv`8;2h{F@&`CW_9yy;GP-&Pt|3BS~`m>B9f#JQ?)E8 z`(4UqM9^LhBeEDxKbaA_Mu9*Ybl$V&6Z5NWykp4r+u(mK$tOs=s5XC~T$!**kxokc zC66#Jc&~}QH>jSyI2a1c+j>xqaB6nVh1Y)O>&s$mIyC}|YoiZ+Ne`5mu-<7ltv^r| zfm3*}KD+%RX97vu3qwANnf%F-K;XM(74^O%#S(uQ&Xw=Q#iPOl@5sH2@?s%iS;q%F z7rD|sUVPLgJylA^b2HKPL_$i6L)*5EQMhtb3hnJ6bQ^C;3bVbJAs-#7S$Dz*nJT%~ zTUi(H^1cnAr$l<2x8gR~J5J57>wW+GXIhYGJTh1$)&1~Ph*3L#+~ni`Nl|+Bnu9NN_CA+j_NgUEU4c{#MVL{U_?9*$k^{#)X4RczzRHN3 z`81-)uNX#m&b==7H!U;p-%l44U06#x)#O%>!xRKNhN!Z&g_;U|8nF8)m2TDW!XPZt zT&bbCxjV}0hE5+lbmiu#M%>`tBAWk&xb!}tq8AK8?D$o^?bBJM9GxUkI1ArScsuFT zw@VJxpqfM_qg2L)#?O5xmyd6wqD*8C@+7Mv-{P}} z?Sj$ET8{0i=~m%6RiigiTtVg1N$yh8NQ?XUcxd7^4uk_?^~PxY73@*bbD$F{a77YZ zaIzqhBQDv=r@#ikiP+F%*WJja?E^kXnD)2iL!T!B*pn*Qa^O%1wSb;wC)XSMHh4N> z%nlBBY7cgVtzwWCqCmDMV=Ae9uOIEQ@KR4ikt+&^(ZVI8YPLLhNVGu=m0=!_t}j2_ z+KBzI46%n_Hrt@>JC&pBy?6{BGEK~t3tjrWCK{FGwlJ6QD37oD$Ab)PgEo4HH+>`4 zEQx4;FkBD_CpFg0vq>qHI!vVP(Zk;Py(<6{+{89%=DnPPX(vs>(zDRiYCMV(d0f{FlrCJET|OhLA6L@%0+h^m7Zg zv6TTr=NE_X`p(V`yA8EVF(+$(bjr6(OkdlZ;9q`lVh0(8O60yz#4QNdiuK;OOFYEt zoox5Lh=a7KPT7IHi)`>~oz?W8u~`21sxv#VSlnTP+3=5eP<`Ns-$jN`oezXF zSY}CEZ4!&Ve6#<^5t$kVr)kZL&<%Mun(biQa-*I0tivHn_7FH>4R%>%T#xL3{lw?NwWtvEPj3FGwRE5(!Yjyom#mCZwx- zMkC{?99ymAs0SI5Q&`o8dApeTz$VXl6)`%JGU|zB`Y@RS{Y8o=?GlRS%#s2UiZ}Nk zmi&TBp2h}?CPh+07(NicClzO=Fus=L@iw5v--6q4ko5THs^L2bSYAT?>cIx26;=V6=oXEdvq@EHO$^~%kbYv{FmJUAa z=elrye~&QN@yIu~b0*{Um$|f|YIXfwZ^% zf9@gJ0=P3GM`vklEy$d>23CH^>i?JU&9VRrAdcIe$vSWC^4bYBkDHSE50rlM*53*S zsUfn&2^aU$yr8K{Uc^n`*IyrxIR%_54P`+4R0=(@s?4x+cHdJdPgIg2G{ZL~df+oV z9&^{S$G;Zi>*xDm=j`#}c;K0Iv_gQ{p^O?M?JO_qTb<~&)9BL zY|TR6jC_oQyIu0-{vS~Khlb>3fA|3_YZKkueF#5j#80of8W2<>8bda@#zR>)c?X$172jhfj z+>;h@E0BK`V)06gp(+A^5VI&PGVPK6b%U;z$>smvXCfuUJ9q8Tq0oo-h3R(yolp1v z_laFFFpbWQ_a1VH#-%Jv{%Zz2?;rU0W<>U`un%{kzYb*V-}JWocPy1aL!^G!lkvpA zfJ*tj6BcnUBA@=0o>(AEs*=`T03cm}>H&<*JC029(e{3={=e|YCm#LpUakNLuEK>3Pw(&xR6ukoIw%Yhu9$hbsCWQ#JX6GcT$5Tu-B zHM(h`5!lM3pfxNxHJ#3d2O0D&ya5N~6{SHp%SnJTfdx&~2ICQ^7YFdd6J8e3!BoKb zAb@Gozpx}5-$D(d*n&11Q2=&7fS-<~1$5w&d$9AJ-AmT|5|kb+Admn#@L`hkWU+r{ zPbVIIpYu3>7i>y`N;xr)7eL&6aGl$Ln0-%>wMwe~5{3F)M&!p_U?V;8lGPF41g^gjUh zCZni?n#?(qrICA!IxGo(!gmjU)I3#K&e%4I-nHb*gt_sUtiY$DAdo4@4N}NKK4YY+ ze=5?(U5b=z$>#~uci*vv)eM0ApS90N1Ti+EDp#FOqC|#}6|=p>Ja|i(U^aOBU}+r%CXm$*)yH4)#t#~`r zHj}(1@M(FrzD1f&U*PL&3Uo8TkIY;70Y@KWWELQtmsA%t$H6@Xomc4Em< zZ7gPGy&Gc7k-$Q??2-N9W;5BzirwO~Czl{czr%0pj{qsE<9!0ep2d0^!*5fTao6#J z*Lv?y=cduX_0q%*-49;<$jBDF9?^ zA0~pZBn#1Xu_wC$fsV4kf@^F1C>3(pl$oBE3%t95ScxEAa28XxBuo3XcCA=77U!rI zi~FCtzPQm&N3MvHmh;d2{Q>xlKS2bp+PYY&nku?ewQt=ef6)`sO70r7q)P-W1RpX#??{HJN|F&0k+_MUEm4i5n;fu+B{>yiTPdXa* zTtr`DoC~EMxDILYHw!q6Dn~J)76NF{5klFE zO5n6>UuiZV$S8<<3417g@P~i;pMeOa-I;sJ>0rXTDoCKxPn^-K-gKRZhuC+~g zqK(A&xuFzMeuuWHh%MD!CW}nrv%|)v$x}&GYe8<$mvZJxYN#&Ah>V2r6eU;1ii~wg zDdWaUghht zIa@|O8hg*yGW`TfcHP^&mA2{>Bnbk^u(oe@TF zmn{vdlOM5y?b7t`n&23{7i$;`yb)-0-tt$iSIw4*vK0+CkE#O+hPr5VOhYL zSC|+!?8O6U>Sv+_g9FeXqLVYhVSL0G(&I;kSDqLaT=n@r7Q*(|Px`7mQ!#sipV{4O zc-Vqw82e72K4!%vcOu>JamZGmM zNOQ_rOF?Zb9r^lL*BLdMUwJMnGcP*wgjW9c?if>^s}wvhsWCCwA%|UNIPf4mzWtT% zZk7jKwlkxVmlm>FliPNt)U*p99EyD#&_TZ^Hx-TBHGi`u74v@0`zhXFe0^^#`)a5a zs|?v)#e9Pf^I;0k6*u2Q*zWccy*YDkJ)B)51 zZ0SOx^eMD@vaYaCXSX(#qvPzv+p@z{mAg3@!UjGy#l`l*6Jd{U!SegeX2#I&=jI{+(3^nDuSVb)pquGw6A$%o_rG7kRJMb(!Gbx>`>A7zgX$$6E0OsK$)G)-nb`6QCmj62=+_9bKZLJ{%PiettP z@4=oOw!pS`b&M^PCP9Wd@QXT1{efEVOy@tx2P)Nc|0L>}#6Kv@=>6C!nKxJXKf4J| zNyD*#fMZ2lu`pM(3#Q}e`zx`o9`K;*2)mHv%r(FQlkSBHDfmZB=gTa>7OqF8FU0o2 zLsA#V1RO?eJL9+(igelPD;`eN5!b-=v8Fn)Zjw<|ruTn%iABuJDD2ng zlhU?px

K&F!~TNJ2k(nt8xR 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 diff --git a/articles/Morphological.html b/articles/Morphological.html index 05f32976..9e7c55a2 100644 --- a/articles/Morphological.html +++ b/articles/Morphological.html @@ -89,7 +89,7 @@

2024-01-25

+

2024-01-31

Source: vignettes/Morphological.Rmd
Morphological.Rmd
@@ -298,7 +298,7 @@

Session info## [1] Matrix_1.6-1.1 jsonlite_1.8.8 highr_0.10 compiler_4.3.2 ## [5] Rcpp_1.0.12 stringr_1.5.1 parallel_4.3.2 jquerylib_0.1.4 ## [9] systemfonts_1.0.5 textshaping_0.3.7 yaml_2.3.8 fastmap_1.1.1 -## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_1.6.0 +## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_2.0.1 ## [17] knitr_1.45 desc_1.4.3 bslib_0.6.1 rlang_1.1.3 ## [21] fastmatch_1.1-4 cachem_1.0.8 stringi_1.8.3 xfun_0.41 ## [25] quadprog_1.5-8 fs_1.6.3 sass_0.4.8 memoise_2.0.1 diff --git a/articles/Networx.html b/articles/Networx.html index c58333e6..05cc2ff0 100644 --- a/articles/Networx.html +++ b/articles/Networx.html @@ -85,7 +85,7 @@

Klaus Schliep

-

January 25, 2024

+

January 31, 2024

Source:
vignettes/Networx.Rmd
Networx.Rmd
@@ -260,7 +260,7 @@

Session Information## [1] Matrix_1.6-1.1 jsonlite_1.8.8 highr_0.10 compiler_4.3.2 ## [5] Rcpp_1.0.12 stringr_1.5.1 parallel_4.3.2 jquerylib_0.1.4 ## [9] systemfonts_1.0.5 textshaping_0.3.7 yaml_2.3.8 fastmap_1.1.1 -## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_1.6.0 +## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_2.0.1 ## [17] knitr_1.45 desc_1.4.3 bslib_0.6.1 rlang_1.1.3 ## [21] fastmatch_1.1-4 cachem_1.0.8 stringi_1.8.3 xfun_0.41 ## [25] quadprog_1.5-8 fs_1.6.3 sass_0.4.8 memoise_2.0.1 diff --git a/articles/Trees.html b/articles/Trees.html index 2f28968b..8898550f 100644 --- a/articles/Trees.html +++ b/articles/Trees.html @@ -89,7 +89,7 @@

Klaus Schliep, Graz
-

2024-01-25

+

2024-01-31

Source: vignettes/Trees.Rmd
Trees.Rmd
@@ -275,10 +275,10 @@

Parsimony
 treeRA <- random.addition(primates)
 treeSPR  <- optim.parsimony(treeRA, primates)

Iris Technology
-

-
## Final p-score 746 after  1 nni operations
+
## Final p-score 746 after  0 nni operations
 parsimony(c(treeRA, treeSPR), primates)
-
## [1] 750 746
+
## [1] 746 746

Branch and bound

@@ -606,19 +606,19 @@

Conducting a ML tree## unconstrained loglikelihood: -1230.335 ## Model of rate heterogeneity: Discrete gamma model ## Number of rate categories: 4 -## Shape parameter: 2.272925 +## Shape parameter: 2.272944 ## Rate Proportion -## 1 0.3238135 0.25 -## 2 0.6812164 0.25 -## 3 1.0755279 0.25 -## 4 1.9194423 0.25 +## 1 0.3238155 0.25 +## 2 0.6812180 0.25 +## 3 1.0755282 0.25 +## 4 1.9194384 0.25 ## ## Rate matrix: ## a c g t -## a 0.00000 1.00000 54.54799 1.00000 -## c 1.00000 0.00000 1.00000 54.54799 -## g 54.54799 1.00000 0.00000 1.00000 -## t 1.00000 54.54799 1.00000 0.00000 +## a 0.00000 1.00000 54.54421 1.00000 +## c 1.00000 0.00000 1.00000 54.54421 +## g 54.54421 1.00000 0.00000 1.00000 +## t 1.00000 54.54421 1.00000 0.00000 ## ## Base frequencies: ## a c g t @@ -810,7 +810,7 @@

Session info## [1] Matrix_1.6-1.1 jsonlite_1.8.8 highr_0.10 compiler_4.3.2 ## [5] Rcpp_1.0.12 stringr_1.5.1 parallel_4.3.2 jquerylib_0.1.4 ## [9] systemfonts_1.0.5 textshaping_0.3.7 yaml_2.3.8 fastmap_1.1.1 -## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_1.6.0 +## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_2.0.1 ## [17] desc_1.4.3 bslib_0.6.1 rlang_1.1.3 fastmatch_1.1-4 ## [21] cachem_1.0.8 stringi_1.8.3 xfun_0.41 quadprog_1.5-8 ## [25] fs_1.6.3 sass_0.4.8 memoise_2.0.1 cli_3.6.2 diff --git a/articles/Trees_files/figure-html/midpoint-1.png b/articles/Trees_files/figure-html/midpoint-1.png index c3008b360cbd0bbf4811e4a12fd2880c0fa6a460..47ffeb072fe856b5dd0c2fc305f45806d55d33e8 100644 GIT binary patch literal 50576 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≶*xEkm^GN( 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 KGbO)!-u-`V^exo@ diff --git a/articles/Trees_files/figure-html/plotBS_ultrafast_bs-1.png b/articles/Trees_files/figure-html/plotBS_ultrafast_bs-1.png index e57965ca2a54955cc5d39aeff062485fcff0e46b..04078d6c3e2981a0d60f72c98d3afcdd7414eb93 100644 GIT binary patch literal 53329 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 literal 53374 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

M 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 ONwLQ~UCWQ2N&Po0qDevk diff --git a/articles/Trees_files/figure-html/plotBS_ultrafast_bs-3.png b/articles/Trees_files/figure-html/plotBS_ultrafast_bs-3.png index 1d5e34cef18a64fc7b1ae4d3e2b5cd2742466013..f00550995a7b7cd960717ea8d5a4982f4c0705c2 100644 GIT binary patch literal 43312 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%0AV>1aRfi!Gy5N&21r1(oEik(U#+wZILdoW;j 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 literal 43486 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

Arguments 1\\) positive selection. use data set follow loosely example Bielawski Yang (2005). first read alignment phylogenetic tree 45 sequences nef gene Human HIV-2 Genome using read.phyDat function. tree data set can estimate currently 3 different site models: M0 model constant \\(\\omega\\), \\(\\omega\\) estimates average sites alignment. M0 allow distinct \\(\\omega\\) identifies classes, therefore retrieve information regarding positive selection. M1a nearly neutral model estimates two different \\(\\omega\\) value classes (\\(\\omega=1\\) & \\(\\omega<1\\)). M2a positive selection model estimates three different classes \\(\\omega\\) (negative selection \\(\\omega<1\\), neutral selection \\(\\omega=1\\), positive selection \\(\\omega>1\\)). One can use likelihood ratio test compare M1a M2a positive selection. Currently choice site models limited three models mentioned branch models implemented far. can identify sites positive selection using Na\"ive empirical Bayes (NEB) method Yang Nielsen (1998): \\[ P(\\omega|x_h) = \\frac{P(X_h|\\omega_i)p_i}{P(X_h)} = \\frac{P(X_h|\\omega_i)p_i}{\\sum_j P(X_h|\\omega_j)p_j} \\] lot implementations differ way codon frequencies derived. M0 model can also estimated using pml optim.pml functions. several ways estimate codon frequencies \\(\\pi_j\\). simplest model assume equal frequencies (=1/61). second use empirical codon frequencies, either computed using baseFreq using argument bf=\"empirical\" pml. usually really good codons rare high variance. One can estimate frequencies nucleotide frequencies F1x4 model. Last least frequencies can derived base frequencies codon position, F3x4 model set argument bf=\"F3x4\". F3x4 model can optimize codon frequencies setting option optBf=TRUE optim.pml.","code":"fdir <- system.file(\"extdata/trees\", package = \"phangorn\") hiv_2_nef <- read.phyDat(file.path(fdir, \"seqfile.txt\"), format=\"sequential\") tree <- read.tree(file.path(fdir, \"tree.txt\")) cdn <- codonTest(tree, hiv_2_nef) cdn ## model Frequencies estimate logLik df AIC BIC dnds_0 dnds_1 dnds_2 ## 1 M0 F3x4 empirical -9773 98 19741 20087 0.50486 NA NA ## 2 M1a F3x4 empirical -9313 99 18824 19168 0.06281 1 NA ## 3 M2a F3x4 empirical -9244 101 18689 19040 0.05551 1 2.469 ## p_0 p_1 p_2 tstv ## 1 1.0000 NA NA 4.418 ## 2 0.5563 0.4437 NA 4.364 ## 3 0.5227 0.3617 0.1156 4.849 plot(cdn, \"M1a\") plot(cdn, \"M2a\") treeM0 <- cdn$estimates[[\"M0\"]]$tree # tree with edge lengths M0 <- pml(treeM0, dna2codon(hiv_2_nef), bf=\"F3x4\") M0 <- optim.pml(M0, model=\"codon1\", control=pml.control(trace=0)) M0 ## model: codon1 ## loglikelihood: -9773 ## unconstrained loglikelihood: -1372 ## dn/ds: 0.5049 ## ts/tv: 4.418 ## Freq: F3x4 M0_opt <- optim.pml(M0, model=\"codon1\", optBf=TRUE, control=pml.control(trace=0)) M0_opt ## model: codon1 ## loglikelihood: -9668 ## unconstrained loglikelihood: -1372 ## dn/ds: 0.51 ## ts/tv: 4.581 ## Freq: F3x4"},{"path":"https://klausvigo.github.io/phangorn/articles/AdvancedFeatures.html","id":"session-info","dir":"Articles","previous_headings":"","what":"Session info","title":"Markov models and transition rate matrices","text":"","code":"## R version 4.3.2 (2023-10-31) ## Platform: x86_64-pc-linux-gnu (64-bit) ## Running under: Ubuntu 22.04.3 LTS ## ## Matrix products: default ## BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 ## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so; LAPACK version 3.10.0 ## ## locale: ## [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 ## [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 ## [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C ## [10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C ## ## time zone: UTC ## tzcode source: system (glibc) ## ## attached base packages: ## [1] stats graphics grDevices utils datasets methods base ## ## other attached packages: ## [1] phangorn_3.0.0.0 ape_5.7-1.8 ## ## loaded via a namespace (and not attached): ## [1] Matrix_1.6-1.1 jsonlite_1.8.8 highr_0.10 compiler_4.3.2 ## [5] Rcpp_1.0.12 stringr_1.5.1 parallel_4.3.2 jquerylib_0.1.4 ## [9] systemfonts_1.0.5 textshaping_0.3.7 yaml_2.3.8 fastmap_1.1.1 ## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_1.6.0 ## [17] knitr_1.45 desc_1.4.3 bslib_0.6.1 rlang_1.1.3 ## [21] fastmatch_1.1-4 cachem_1.0.8 stringi_1.8.3 xfun_0.41 ## [25] quadprog_1.5-8 fs_1.6.3 sass_0.4.8 memoise_2.0.1 ## [29] cli_3.6.2 pkgdown_2.0.7 magrittr_2.0.3 digest_0.6.34 ## [33] grid_4.3.2 lifecycle_1.0.4 nlme_3.1-163 vctrs_0.6.5 ## [37] evaluate_0.23 glue_1.7.0 codetools_0.2-19 ragg_1.2.7 ## [41] rmarkdown_2.25 purrr_1.0.2 pkgconfig_2.0.3 tools_4.3.2 ## [45] htmltools_0.5.7"},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/articles/Ancestral.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Ancestral Sequence Reconstruction","text":"notes describe ancestral sequence reconstruction using phangorn package (Schliep 2011). phangorn provides several methods estimate ancestral character states either Maximum Parsimony (MP) Maximum Likelihood (ML). background methods see e.g. (Felsenstein 2004) (Yang 2006).","code":""},{"path":"https://klausvigo.github.io/phangorn/articles/Ancestral.html","id":"parsimony-reconstructions","dir":"Articles","previous_headings":"","what":"Parsimony reconstructions","title":"Ancestral Sequence Reconstruction","text":"reconstruct ancestral sequences first load data reconstruct tree: parsimony analysis edge length represent observed number changes. Reconstructing ancestral states therefore defines also edge lengths tree. However can exist several equally parsimonious reconstructions states can ambiguous therefore edge length can differ. “MPR” reconstructs ancestral states (internal) node tree rooted node. However nodes independent . one chooses one state specific node, can restrict choice neighboring nodes (figures 2 3). function acctran (accelerated transformation) assigns edge length internal nodes tree (Swofford Maddison 1987). ancestral reconstructions parsimony based fitch algorithm far bifurcating trees allowed. However trees can get pruned afterwards using function multi2di ape. seqLogo function seqLogo package Bioconductor provides neat way show proportions nucleotides ancestral states (see figure 1). may need install seqLogo Fig 2. Ancestral reconstruction using MPR. Fig 3. Ancestral reconstruction using ACCTRAN.","code":"library(phangorn) ## Loading required package: ape fdir <- system.file(\"extdata/trees\", package = \"phangorn\") primates <- read.phyDat(file.path(fdir, \"primates.dna\"), format = \"interleaved\") tree <- pratchet(primates, trace=0) |> acctran(primates) parsimony(tree, primates) ## [1] 746 anc.acctran <- ancestral.pars(tree, primates, \"ACCTRAN\") ## Node labels are not unique, used makeNodeLabel(tree, ...) to create them! anc.mpr <- ancestral.pars(tree, primates, \"MPR\") ## Node labels are not unique, used makeNodeLabel(tree, ...) to create them! library(seqLogo) seqLogo( t(subset(anc.mpr, getRoot(tree), 1:20)[[1]]), ic.scale=FALSE) if (!requireNamespace(\"BiocManager\", quietly = TRUE)) install.packages(\"BiocManager\") BiocManager::install(\"seqLogo\") plotAnc(tree, anc.mpr, 17) title(\"MPR\") plotAnc(tree, anc.acctran, 17) title(\"ACCTRAN\")"},{"path":"https://klausvigo.github.io/phangorn/articles/Ancestral.html","id":"likelihood-reconstructions","dir":"Articles","previous_headings":"","what":"Likelihood reconstructions","title":"Ancestral Sequence Reconstruction","text":"phangorn also offers possibility estimate ancestral states using ML. advantages ML parsimony reconstruction accounts different edge lengths. far marginal construction implemented (see [Yang (2006)](Koshi Goldstein 1996)) joint reconstruction (Pupko et al. 2000). can assign ancestral states according highest likelihood (“ml”): \\[ P(x_r = ) = \\frac{L(x_r=)}{\\sum_{k \\\\{,C,G,T\\}}L(x_r=k)} \\] highest posterior probability (“bayes”) criterion: \\[ P(x_r=) = \\frac{\\pi_A L(x_r=)}{\\sum_{k \\\\{,C,G,T\\}}\\pi_k L(x_r=k)}, \\] \\(L(x_r)\\) joint probability states tips state root \\(x_r\\) \\(\\pi_i\\) estimated base frequencies state \\(\\). methods agree states (base frequencies) equal probabilities. differences two approaches specific site (17) represented following figures. Fig 4. Ancestral reconstruction using maximum likelihood. Fig 5. Ancestral reconstruction using (empirical) Bayes.","code":"fit <- pml(tree, primates) fit <- optim.pml(fit, model=\"F81\", control = pml.control(trace=0)) anc.ml <- ancestral.pml(fit, \"ml\") ## Node labels are not unique, used makeNodeLabel(tree, ...) to create them! anc.bayes <- ancestral.pml(fit, \"bayes\") ## Node labels are not unique, used makeNodeLabel(tree, ...) to create them! plotAnc(tree, anc.ml, 17) title(\"ML\") plotAnc(tree, anc.bayes, 17) title(\"Bayes\")"},{"path":"https://klausvigo.github.io/phangorn/articles/Ancestral.html","id":"fitting-for-discrete-comparative-data","dir":"Articles","previous_headings":"","what":"Fitting for discrete comparative data","title":"Ancestral Sequence Reconstruction","text":"Often already phylogeny want estimate ancestral reconstruction tree. common problem phylogentic comparative methods can use function ace ape (Paradis Schliep 2019), fitDiscrete geiger (Pennell et al. 2014) fitMK phytools (Revell 2012) package. want show fit models using optim.pml. First load tree create data. set pml object optimize model. Instead optimizing edge length optimize rate. can also fit symmetric (model=“SYM”) ordered metristic model (model=“ORDERED”). can compare estimate one ace ape. log-likelihood values differ slightly phangorn values get multiplied state frequencies. Thus add log(1/3) three states ace estimate two estimates almost identical. complicated models can applied using defining rate matrix shown vignette Markov models transition rate matrices. “ARD” model currently available phangorn fits reversible models.","code":"data(\"bird.orders\") x <- c(rep(0, 5), rep(1, 18)) x[c(20,22,23)] <- 2 x <- factor(x) names(x) <- bird.orders$tip.label dat <- phyDat(x, \"USER\", levels=c(0,1,2)) fit <- pml(bird.orders, dat) fit_ER <- optim.pml(fit, optEdge = FALSE, optRate=TRUE, control = pml.control(trace=0)) fit_ER ## model: Mk ## loglikelihood: -16.47 ## unconstrained loglikelihood: 0 ## ## Rate matrix: ## 0 1 2 ## 0 0 1 1 ## 1 1 0 1 ## 2 1 1 0 ## ## Base frequencies: ## 0 1 2 ## 0.3333 0.3333 0.3333 fit_SYM <- optim.pml(fit, optEdge = FALSE, optRate=TRUE, model=\"SYM\", control = pml.control(trace=0)) fit_SYM ## model: SYM ## loglikelihood: -15.31 ## unconstrained loglikelihood: 0 ## ## Rate matrix: ## 0 1 2 ## 0 0.000e+00 0.2747 1.604e-06 ## 1 2.747e-01 0.0000 1.000e+00 ## 2 1.604e-06 1.0000 0.000e+00 ## ## Base frequencies: ## 0 1 2 ## 0.3333 0.3333 0.3333 fit_ace <- ace(x, bird.orders, model=\"SYM\", type = \"d\") ## Warning in sqrt(diag(solve(h))): NaNs produced fit_SYM$logLik ## [1] -15.31 fit_ace$loglik+log(1/3) ## [1] -15.31 all.equal(fit_SYM$logLik, fit_ace$loglik+log(1/3)) ## [1] \"Mean relative difference: 1.229e-07\" anc_SYM <- ancestral.pml(fit_SYM, \"ml\") plotAnc(bird.orders, anc_SYM)"},{"path":"https://klausvigo.github.io/phangorn/articles/Ancestral.html","id":"session-info","dir":"Articles","previous_headings":"","what":"Session info","title":"Ancestral Sequence Reconstruction","text":"","code":"## R version 4.3.2 (2023-10-31) ## Platform: x86_64-pc-linux-gnu (64-bit) ## Running under: Ubuntu 22.04.3 LTS ## ## Matrix products: default ## BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 ## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so; LAPACK version 3.10.0 ## ## locale: ## [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 ## [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 ## [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C ## [10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C ## ## time zone: UTC ## tzcode source: system (glibc) ## ## attached base packages: ## [1] stats graphics grDevices utils datasets methods base ## ## other attached packages: ## [1] phangorn_3.0.0.0 ape_5.7-1.8 ## ## loaded via a namespace (and not attached): ## [1] Matrix_1.6-1.1 jsonlite_1.8.8 highr_0.10 compiler_4.3.2 ## [5] Rcpp_1.0.12 stringr_1.5.1 parallel_4.3.2 jquerylib_0.1.4 ## [9] systemfonts_1.0.5 textshaping_0.3.7 yaml_2.3.8 fastmap_1.1.1 ## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_1.6.0 ## [17] knitr_1.45 desc_1.4.3 bslib_0.6.1 rlang_1.1.3 ## [21] fastmatch_1.1-4 cachem_1.0.8 stringi_1.8.3 xfun_0.41 ## [25] quadprog_1.5-8 fs_1.6.3 sass_0.4.8 memoise_2.0.1 ## [29] cli_3.6.2 pkgdown_2.0.7 magrittr_2.0.3 digest_0.6.34 ## [33] grid_4.3.2 lifecycle_1.0.4 nlme_3.1-163 vctrs_0.6.5 ## [37] evaluate_0.23 glue_1.7.0 codetools_0.2-19 ragg_1.2.7 ## [41] rmarkdown_2.25 purrr_1.0.2 pkgconfig_2.0.3 tools_4.3.2 ## [45] htmltools_0.5.7"},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"installing-r","dir":"Articles","previous_headings":"","what":"Installing R","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"Download R Select nearest mirror location https://cran.r-project.org/mirrors.html Select operating system download relevant installation file. Install R following instructions.","code":""},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"installing-the-phangorn-library","dir":"Articles","previous_headings":"","what":"Installing the phangorn library","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"Open R run two lines code command line. (need select region download library)","code":"install.packages(\"phangorn\", dependencies=TRUE) # install latest development version needs devtools install.packages(\"devtools\", dependencies=TRUE) library(devtools) install_github(\"KlausVigo/phangorn\")"},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"getting-started","dir":"Articles","previous_headings":"","what":"Getting started","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"","code":"library(phangorn) # load the phangorn library ## Loading required package: ape"},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"set-the-working-directory","dir":"Articles","previous_headings":"","what":"Set the working directory","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"often major stumbling block new R users. need specify folder structure wish work. .e, files stored wish input? done using setwd() function, e.g. setwd(\"C:/TreesNetworks/Example Files\"). now set folder phangorn package, contains files want load example.","code":""},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"read-in-the-example-file-datasets","dir":"Articles","previous_headings":"","what":"Read in the example file datasets:","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"example files based woodmouse dataset available ape library. Ultimately, dataset study: Michaux, J. R., Magnanou, E., Paradis, E., Nieberding, C. Libois, R. (2003) Mitochondrial phylogeography Woodmouse (Apodemus sylvaticus) Western Palearctic region. Molecular Ecology, 12, 685-697.) example files read R.","code":"## automatically set the correct working directory for the examples below # setwd(system.file(\"extdata/trees\", package = \"phangorn\")) # for this vignette we create a path to the files we want to load fdir <- system.file(\"extdata/trees\", package = \"phangorn\") ## in your case it may look something like this... # setwd(\"C:/TreesNetworks/Example Files\") ##DNA Matrix, maybe not needed woodmouse <- read.phyDat(file.path(fdir, \"woodmouse.fasta\"),format=\"fasta\") ## RAxML best-known tree with bipartition support (from previous analysis) raxml.tree <- read.tree(file.path(fdir,\"RAxML_bipartitions.woodmouse\")) ## RAxML bootstrap trees (from previous analysis) raxml.bootstrap <- read.tree(file.path(fdir,\"RAxML_bootstrap.woodmouse\")) ## MrBayes consensus tree (50% majority rule) (from previous analysis) mrbayes.tree <- read.nexus(file.path(fdir,\"woodmouse.mrbayes.nex.con\")) ## MrBayes sample runs 1 and 2 (from previous analysis) run1 <- read.nexus(file.path(fdir,\"woodmouse.mrbayes.nex.run1.t\")) run2 <- read.nexus(file.path(fdir,\"woodmouse.mrbayes.nex.run2.t\")) ## How many trees are in the MrBayes tree sample? run1 ## 1001 phylogenetic trees run2 ## 1001 phylogenetic trees ## Combining the two runs and removing 25% burn-in mrbayes.trees <- c(run1[251:1001],run2[251:1001]) ## NeigbourNet Nexus file generated by SplitsTree (from previous analysis) Nnet <- read.nexus.networx(file.path(fdir,\"woodmouse.nxs\"))"},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"viewing-the-data","dir":"Articles","previous_headings":"","what":"Viewing the data","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"","code":"par(mfrow=c(1,2), mar=c(1,1,1,1)) # Setting plot parameters ### Plotting trees with support values: ## RAxML plot(raxml.tree) nodelabels(raxml.tree$node.label, adj = c(1, 0), frame = \"none\") ## MrBayes plot(mrbayes.tree) nodelabels(mrbayes.tree$node.label, adj = c(1, 0), frame = \"none\") par(mfrow=c(1,1)) # Setting plot parameters # NeighborNet plot(Nnet,\"2D\") ## alternatively, # plot(Nnet,\"2D\")"},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"a","dir":"Articles","previous_headings":"","what":"1A:","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"Identification edge bundles (black) neighbor-net (NN) network correspond branches (labelled 1-12) tree (maximum likelihood tree, case).","code":"# create a vector of labels for the network corresponding to edges in the tree edge.lab <- createLabel(Nnet, raxml.tree, raxml.tree$edge[,2], \"edge\") # could be also 1:27 instead of raxml.tree$edge[,2] # Show the correspondingly labelled tree and network in R par(mfrow=c(1,2)) plot(raxml.tree, \"u\", rotate.tree = 180, cex=.7) edgelabels(raxml.tree$edge[,2],col=\"blue\", frame=\"none\", cex=.7) # find edges that are in the network but not in the tree edge.col <- rep(\"black\", nrow(Nnet$edge)) edge.col[ is.na(edge.lab) ] <- \"red\" # or a simpler alternative... edge.col <- createLabel(Nnet, raxml.tree, \"black\", nomatch=\"red\") x <- plot(Nnet, edge.label = edge.lab, show.edge.label = T, \"2D\", edge.color = edge.col, col.edge.label = \"blue\", cex=.7) # the above plot function returns an invisible networx object and this object # also contains the colors for the edges."},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"b","dir":"Articles","previous_headings":"","what":"1B:","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"Bootstrap support branches (branch labels) ML tree mapped corresponding edge bundles NN network. edges network found ML tree branches highlighted red. can write SplitsTree viewing…","code":"# the scaler argument multiplies the confidence values. This is useful to switch # confidences values between total, percentage or ratios. x <- addConfidences(Nnet,raxml.tree, scaler = .01) # find splits that are in the network but not in the tree split.col <- rep(\"black\", length(x$splits)) split.col[ !matchSplits(as.splits(x), as.splits(raxml.tree)) ] <- \"red\" # simpler alternative... split.col2 <- createLabel(x, raxml.tree, label=\"black\", \"split\", nomatch=\"red\") # Plotting in R out.x <- plot(x,\"2D\",show.edge.label=TRUE, split.color=split.col, col.edge.label = \"blue\") # write.nexus.networx(out.x,\"woodmouse.tree.support.nxs\") ## or we can also export the splits alone (for usage in software other than SplitsTree) # write.nexus.splits(as.splits(out.x),\"woodmouse.splits.support.nxs\")"},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"c","dir":"Articles","previous_headings":"","what":"1C:","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"Frequencies bipartitions found bootstrap pseudoreplicates mapped corresponding edge bundles NN network using threshold 10% (.e. edge labelled occurs least 100 1000 ML-BS pseudoreplicates). Edge bundles found ML tree labelled using grey edges.","code":"y <- addConfidences(Nnet, as.splits(raxml.bootstrap)) edge.col <- createLabel(y, raxml.tree, label=\"black\", \"edge\", nomatch=\"grey\") y <- plot(y,\"2D\",show.edge.label=TRUE, edge.color=edge.col) ## Write to SplitsTree for viewing # write.nexus.networx(y,\"NN.with.bs.support.nxs\")"},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"extras","dir":"Articles","previous_headings":"","what":"Extras…","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"can also compare neighborNet consensusNet (Holland BR, Huber KT, Moulton V, Lockhart PJ,2004, Using consensus networks visualize contradictory evidence species phylogeny. Molecular Biology Evolution, 21, 1459-1461). Furthermore, can extract support values consensus network, place NeighborNet (similar process explained 1C ).","code":"cnet <- consensusNet(raxml.bootstrap,prob=0.10) edge.col <- createLabel(cnet, Nnet, label=\"black\", \"edge\", nomatch=\"grey\") cnet <- plot(cnet, \"2D\", show.edge.label = TRUE, edge.color=edge.col) edge.col <- createLabel(Nnet, cnet, label=\"black\", \"edge\", nomatch=\"grey\") z <- plot(Nnet, \"2D\", show.edge.label = TRUE, edge.color=edge.col) obj <- addConfidences(Nnet,cnet) plot(obj,\"2D\",show.edge.label=T, edge.color=edge.col, col.edge.label = \"blue\") ## Write to SplitsTree for viewing # write.nexus.networx(obj,\"Nnet.with.ML.Cnet.Bootstrap.nxs\")"},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"section","dir":"Articles","previous_headings":"","what":"Intertwining phylogenetic trees and networks: R Example Script","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"four possible data patterns phylogenetic reconstruction: (1) patterns well supported network appear bootstrapped trees; (2) patterns well supported (part ) data/network appear optimized trees, .e. incompatible tree; (3) patterns weakly supported network appear optimized trees anyway, .e. compatible tree. demonstrate patterns showing relationships splits weights, NeighborNet splits graph, bootstrap bipartitions support bootstrap percentages plotted optimized tree dataset Wang, Braun, Kimball (2012). (advanced user figure…)","code":"Nnet <- read.nexus.networx(file.path(fdir,\"RAxML_distances.Wang.nxs\")) raxml.tree <- read.tree(file.path(fdir,\"RAxML_bestTree.Wang.out\")) |> unroot() raxml.bootstrap <- read.tree(file.path(fdir,\"RAxML_bootstrap.Wang.out\")) bs_splits <- as.splits(raxml.bootstrap) tree_splits <- as.splits(raxml.tree) |> unique() |> removeTrivialSplits() # we overwrite bootstrap values and set the weights # to 1e-6 (almost zero), as we plot them on a log scale later on attr(bs_splits, \"weights\")[] <- 1e-6 # combine the splits from the bootstrap and neighbor net # and delete duplicates and add the confidence values # we get rid of trivial splits all_splits <- c(Nnet$splits, bs_splits) |> unique() |> removeTrivialSplits() |> addConfidences(bs_splits, scaler=100) # For easier plotting we create a matrix with the confidences and # weights as columns tab <- data.frame(SplitWeight = attr(all_splits, \"weights\"), Bootstrap=attr(all_splits, \"confidences\"), Tree=FALSE) # we add a logical variable pto indicate which splits are in the RAxML tree tab$Tree[matchSplits(tree_splits, all_splits, FALSE)] <- TRUE tab[is.na(tab[,\"Bootstrap\"]),\"Bootstrap\"] <- 0 tab[,\"Bootstrap\"] <- round(tab[,\"Bootstrap\"]) rownames(tab) <- apply(as.matrix(all_splits, zero.print = \".\", one.print = \"|\"), 1, paste0, collapse=\"\") tab[1:10,] ## SplitWeight Bootstrap Tree ## ..||........................ 0.0171433 100 TRUE ## ..||||...................... 0.0013902 14 FALSE ## ..||||......|||||........... 0.0001589 0 FALSE ## ||.........................| 0.0027691 1 FALSE ## ||.......................... 0.0840367 100 TRUE ## ...|||...................... 0.0001773 0 FALSE ## ...|||........|.|........... 0.0003663 0 FALSE ## |.|......................... 0.0060907 0 FALSE ## ....||...................... 0.0385909 100 TRUE ## ||||........................ 0.0018195 34 TRUE col <- rep(\"blue\", nrow(tab)) col[tab[,\"Bootstrap\"]==0] <- \"green\" col[tab[,\"SplitWeight\"]==1e-6] <- \"red\" pch <- rep(19, nrow(tab)) pch[tab$Tree] <- 17 par(mar=c(5.1, 4.1, 4.1, 8.1), xpd=TRUE) plot(tab[,\"SplitWeight\"], tab[,\"Bootstrap\"], log=\"x\", col=col, pch=pch, xlab=\"Split weight (log scale)\", ylab=\"Bootstrap (%)\") legend(\"topright\", inset=c(-0.35,0), c(\"Pattern 1\", \"Pattern 2\", \"Pattern 3\", \"Pattern in the\\nbest tree\"), pch=c(19,19,19,17), col=c(\"blue\", \"green\", \"red\", \"black\"), bty=\"n\")"},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"figure-4","dir":"Articles","previous_headings":"","what":"Figure 4","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"several option plotting co-phylogeny. following use cophylo function phytools package. Unfortunately function (yet) offer add confidences splits, can easily basic plot functions. can compare consensus network different bootstrap values different genes.","code":"YCh <- read.tree(file.path(fdir, \"RAxML_bestTree.YCh\")) mtG <- read.tree(file.path(fdir, \"RAxML_bestTree.mtG\")) ncAI <- read.tree(file.path(fdir, \"RAxML_bestTree.AIs\")) all_data <- read.tree(file.path(fdir, \"RAxML_bestTree.3moles\")) YCh_boot <- read.tree(file.path(fdir, \"RAxML_bootstrap.YCh\")) mtG_boot <- read.tree(file.path(fdir, \"RAxML_bootstrap.mtG\")) ncAI_boot <- read.tree(file.path(fdir, \"RAxML_bootstrap.AIs\")) all_data_boot <- read.tree(file.path(fdir, \"RAxML_bootstrap.3moles\")) library(phytools) par(mfrow=c(2,1)) obj <- cophylo(YCh, mtG) plot(obj, mar=c(.1,.1,2,.1),scale.bar=c(.005,.05), ylim=c(-.2,1)) title(\"A. YCh B. mtG\") obj <- cophylo(ncAI, all_data) plot(obj, mar=c(.1,.1,2,.1),scale.bar=c(.005,.05), ylim=c(-.2,1)) title(\"C. ncAI D. All data\") par(mfrow=c(2,2), mar = c(2,2,4,2)) YCh <- plotBS(midpoint(YCh), YCh_boot, \"phylogram\", p=0, main = \"YCh\") mtG <- plotBS(midpoint(mtG), mtG_boot, \"phylogram\", p=0, main = \"mtG\") ncAI <- plotBS(midpoint(ncAI), ncAI_boot, \"phylogram\", p=0, main = \"ncAI\") all_data <- plotBS(midpoint(all_data), all_data_boot, \"phylogram\", p=0, main = \"All data\") par(mfrow=c(1,1)) cn <- consensusNet(c(YCh, mtG, ncAI)) cn <- addConfidences(cn, YCh_boot) |> addConfidences(mtG_boot, add=TRUE) |> addConfidences(ncAI_boot, add=TRUE) |> addConfidences(all_data_boot, add=TRUE) plot(cn, \"2D\", show.edge.label=TRUE)"},{"path":"https://klausvigo.github.io/phangorn/articles/MLbyHand.html","id":"maximum-likelihood-by-hand","dir":"Articles","previous_headings":"","what":"Maximum likelihood by hand","title":"Maximum likelihood by hand","text":"function pml_bb phangorn (Schliep 2011) lot steps become easier shorter. want control used parameters, also possible use older functions, e.g. optim_pml. data vignette Estimating phylogenetic trees phangorn: starting tree, calculate neighbor joining tree: function pml returns object class pml. object contains data, tree many different parameters model like likelihood. many generic functions class pml available, allow handling objects. object fit just estimated likelihood tree got supplied, branch length optimized Jukes-Cantor (Jukes Cantor 1969) model yet, can done function optim.pml. default values pml estimate Jukes-Cantor model. means equal base frequencies transition rates equal. generic function update allows change parameters manually. usually want . However might want supply different tree change number rate categories. line changed model (discrete) rate across site model 4 rate categories (using default shape parameter 1), 0.2 invariant sites supply empirical base frequencies. change model GTR + \\(\\Gamma(4)\\) + model optimize parameters. control parameters thresholds fitting process can changed. want just suppress output fitting process. larger trees NNI rearrangements often get stuck local maximum. added two stochastic algorithms improve topology search. first (set rearrangement=\"stochastic\") performs stochastic rearrangements similar (Nguyen et al. 2015), makes random NNI permutation tree, gets optimized escape local optima. second option (rearrangement=\"ratchet\") perform likelihood ratchet (Vos 2003). algorithms may find better trees also take time.","code":"library(ape) library(phangorn) fdir <- system.file(\"extdata/trees\", package = \"phangorn\") primates <- read.phyDat(file.path(fdir, \"primates.dna\"), format = \"interleaved\") dm <- dist.ml(primates) treeNJ <- NJ(dm) fit <- pml(treeNJ, data=primates) fit ## model: JC ## loglikelihood: -3075 ## unconstrained loglikelihood: -1230 ## ## Rate matrix: ## a c g t ## a 0 1 1 1 ## c 1 0 1 1 ## g 1 1 0 1 ## t 1 1 1 0 ## ## Base frequencies: ## a c g t ## 0.25 0.25 0.25 0.25 methods(class=\"pml\") ## [1] AICc anova BIC logLik plot print simSeq update vcov ## see '?methods' for accessing help and source code fitJC <- optim.pml(fit, rearrangement=\"NNI\") ## optimize edge weights: -3075 --> -3068 ## optimize edge weights: -3068 --> -3068 ## optimize topology: -3068 --> -3068 NNI moves: 1 ## optimize edge weights: -3068 --> -3068 ## optimize topology: -3068 --> -3068 NNI moves: 0 logLik(fitJC) ## 'log Lik.' -3068 (df=25) fitF81 <- update(fitJC, k=4, inv=0.2, bf=baseFreq(primates)) fitF81 ## model: F81+G(4)+I ## loglikelihood: -3037 ## unconstrained loglikelihood: -1230 ## Proportion of invariant sites: 0.2 ## Model of rate heterogeneity: Discrete gamma model ## Number of rate categories: 4 ## Shape parameter: 1 ## Rate Proportion ## 1 0.0000 0.2 ## 2 0.1712 0.2 ## 3 0.5959 0.2 ## 4 1.2500 0.2 ## 5 2.9829 0.2 ## ## Rate matrix: ## a c g t ## a 0 1 1 1 ## c 1 0 1 1 ## g 1 1 0 1 ## t 1 1 1 0 ## ## Base frequencies: ## a c g t ## 0.37481 0.40160 0.03911 0.18448 fitGTR <- optim.pml(fitF81, model=\"GTR\", optInv=TRUE, optGamma=TRUE, rearrangement = \"NNI\", control = pml.control(trace = 0)) fitGTR ## model: GTR+G(4)+I ## loglikelihood: -2611 ## unconstrained loglikelihood: -1230 ## Proportion of invariant sites: 0.006977 ## Model of rate heterogeneity: Discrete gamma model ## Number of rate categories: 4 ## Shape parameter: 3.08 ## Rate Proportion ## 1 0.0000 0.006977 ## 2 0.3982 0.248256 ## 3 0.7410 0.248256 ## 4 1.0905 0.248256 ## 5 1.7984 0.248256 ## ## Rate matrix: ## a c g t ## a 0.0000 0.947351 63.659981 0.8068 ## c 0.9474 0.000000 0.004462 24.6544 ## g 63.6600 0.004462 0.000000 1.0000 ## t 0.8068 24.654426 1.000000 0.0000 ## ## Base frequencies: ## a c g t ## 0.37481 0.40160 0.03911 0.18448 fitGTR <- optim.pml(fitGTR, model=\"GTR\", optInv=TRUE, optGamma=TRUE, rearrangement = \"stochastic\", control = pml.control(trace = 0)) fitGTR ## model: GTR+G(4)+I ## loglikelihood: -2608 ## unconstrained loglikelihood: -1230 ## Proportion of invariant sites: 0.007416 ## Model of rate heterogeneity: Discrete gamma model ## Number of rate categories: 4 ## Shape parameter: 2.994 ## Rate Proportion ## 1 0.0000 0.007416 ## 2 0.3917 0.248146 ## 3 0.7367 0.248146 ## 4 1.0906 0.248146 ## 5 1.8109 0.248146 ## ## Rate matrix: ## a c g t ## a 0.0000 0.720999 74.084755 0.5999 ## c 0.7210 0.000000 0.003601 25.9146 ## g 74.0848 0.003601 0.000000 1.0000 ## t 0.5999 25.914640 1.000000 0.0000 ## ## Base frequencies: ## a c g t ## 0.37481 0.40160 0.03911 0.18448"},{"path":"https://klausvigo.github.io/phangorn/articles/MLbyHand.html","id":"model-comparison","dir":"Articles","previous_headings":"Maximum likelihood by hand","what":"Model comparison","title":"Maximum likelihood by hand","text":"can compare nested models JC GTR + \\(\\Gamma(4)\\) + model using likelihood ratio statistic Shimodaira-Hasegawa test AIC","code":"anova(fitJC, fitGTR) ## Likelihood Ratio Test Table ## Log lik. Df Df change Diff log lik. Pr(>|Chi|) ## 1 -3068 25 ## 2 -2608 35 10 921 <2e-16 *** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 SH.test(fitGTR, fitJC) ## Trees ln L Diff ln L p-value ## [1,] 1 -2608 0.0 0.4997 ## [2,] 2 -3068 460.5 0.0000 AIC(fitJC) ## [1] 6187 AIC(fitGTR) ## [1] 5286 AICc(fitGTR) ## [1] 5298 BIC(fitGTR) ## [1] 5406"},{"path":"https://klausvigo.github.io/phangorn/articles/MLbyHand.html","id":"bootstrap","dir":"Articles","previous_headings":"Maximum likelihood by hand","what":"Bootstrap","title":"Maximum likelihood by hand","text":"last may want apply standard bootstrap test well edges tree supported. already shown vignette Estimating phylogenetic trees phangorn. Now can plot tree bootstrap support values edges also look consensusNet identify potential conflict. Tree bootstrap support. Unrooted tree (midpoint rooted) bootstrap support values. ConsensusNet bootstrap sample.","code":"bs <- bootstrap.pml(fitJC, bs=100, optNni=TRUE, control = pml.control(trace = 0)) plotBS(midpoint(fitJC$tree), bs, p = 50, type=\"p\") cnet <- consensusNet(bs, p=0.2) plot(cnet, show.edge.label=TRUE)"},{"path":"https://klausvigo.github.io/phangorn/articles/MLbyHand.html","id":"generating-trees","dir":"Articles","previous_headings":"","what":"Generating trees","title":"Maximum likelihood by hand","text":"phangorn several functions generate tree topologies, may interesting simulation studies. allTrees computes possible bifurcating tree topologies either rooted unrooted 10 taxa. One keep mind number trees growing exponentially, use howmanytrees ape reminder. nni returns list trees one nearest neighbor interchange away. rNNI rSPR generate trees defined number NNI (nearest neighbor interchange) SPR (subtree pruning regrafting) away.","code":"trees <- allTrees(5) par(mfrow=c(3,5), mar=rep(0,4)) for(i in 1:15)plot(trees[[i]], cex=1, type=\"u\") nni(trees[[1]]) ## 4 phylogenetic trees"},{"path":"https://klausvigo.github.io/phangorn/articles/MLbyHand.html","id":"session-info","dir":"Articles","previous_headings":"","what":"Session info","title":"Maximum likelihood by hand","text":"","code":"## R version 4.3.2 (2023-10-31) ## Platform: x86_64-pc-linux-gnu (64-bit) ## Running under: Ubuntu 22.04.3 LTS ## ## Matrix products: default ## BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 ## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so; LAPACK version 3.10.0 ## ## locale: ## [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 ## [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 ## [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C ## [10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C ## ## time zone: UTC ## tzcode source: system (glibc) ## ## attached base packages: ## [1] stats graphics grDevices utils datasets methods base ## ## other attached packages: ## [1] phangorn_3.0.0.0 ape_5.7-1.8 ## ## loaded via a namespace (and not attached): ## [1] Matrix_1.6-1.1 jsonlite_1.8.8 highr_0.10 compiler_4.3.2 ## [5] Rcpp_1.0.12 stringr_1.5.1 parallel_4.3.2 jquerylib_0.1.4 ## [9] systemfonts_1.0.5 textshaping_0.3.7 yaml_2.3.8 fastmap_1.1.1 ## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_1.6.0 ## [17] knitr_1.45 desc_1.4.3 bslib_0.6.1 rlang_1.1.3 ## [21] fastmatch_1.1-4 cachem_1.0.8 stringi_1.8.3 xfun_0.41 ## [25] quadprog_1.5-8 fs_1.6.3 sass_0.4.8 memoise_2.0.1 ## [29] cli_3.6.2 pkgdown_2.0.7 magrittr_2.0.3 digest_0.6.34 ## [33] grid_4.3.2 lifecycle_1.0.4 nlme_3.1-163 vctrs_0.6.5 ## [37] evaluate_0.23 glue_1.7.0 codetools_0.2-19 ragg_1.2.7 ## [41] rmarkdown_2.25 purrr_1.0.2 pkgconfig_2.0.3 tools_4.3.2 ## [45] htmltools_0.5.7"},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/articles/Morphological.html","id":"load-packages","dir":"Articles","previous_headings":"","what":"Load packages","title":"Phylogenetic trees from morphological data","text":"start loading phangorn package setting random seed:","code":"library(phangorn) ## Loading required package: ape set.seed(9)"},{"path":"https://klausvigo.github.io/phangorn/articles/Morphological.html","id":"load-data","dir":"Articles","previous_headings":"","what":"Load data","title":"Phylogenetic trees from morphological data","text":"dataset ’re using contains morphological data 12 mite species, 79 encoded characters (Schäffer et al. 2010). reading .csv file, row.names = 1 uses first column (species) row names. get phyDat object, convert dataframe matrix .matrix. data can written nexus file: Reading nexus file even easier reading csv file: reading nexus file, states 0:9, data states 0:7. one possibility change contrast matrix: Now data, can start analyses.","code":"fdir <- system.file(\"extdata\", package = \"phangorn\") mm <- read.csv(file.path(fdir, \"mites.csv\"), row.names = 1) mm_pd <- phyDat(as.matrix(mm), type = \"USER\", levels = 0:7) write.phyDat(mm_pd, file.path(fdir, \"mites.nex\"), format = \"nexus\") mm_pd <- read.phyDat(file.path(fdir, \"mites.nex\"), format = \"nexus\", type = \"STANDARD\") contrast <- matrix(data = c(1,0,0,0,0,0,0,0,0, 0,1,0,0,0,0,0,0,0, 0,0,1,0,0,0,0,0,0, 0,0,0,1,0,0,0,0,0, 0,0,0,0,1,0,0,0,0, 0,0,0,0,0,1,0,0,0, 0,0,0,0,0,0,1,0,0, 0,0,0,0,0,0,0,1,0, 0,0,0,0,0,0,0,0,1, 1,1,1,1,1,1,1,1,1), ncol = 9, byrow = TRUE) dimnames(contrast) <- list(c(0:7,\"-\",\"?\"), c(0:7, \"-\")) contrast ## 0 1 2 3 4 5 6 7 - ## 0 1 0 0 0 0 0 0 0 0 ## 1 0 1 0 0 0 0 0 0 0 ## 2 0 0 1 0 0 0 0 0 0 ## 3 0 0 0 1 0 0 0 0 0 ## 4 0 0 0 0 1 0 0 0 0 ## 5 0 0 0 0 0 1 0 0 0 ## 6 0 0 0 0 0 0 1 0 0 ## 7 0 0 0 0 0 0 0 1 0 ## - 0 0 0 0 0 0 0 0 1 ## ? 1 1 1 1 1 1 1 1 1 mm_pd <- phyDat(mm_pd, type=\"USER\", contrast=contrast)"},{"path":"https://klausvigo.github.io/phangorn/articles/Morphological.html","id":"parsimony","dir":"Articles","previous_headings":"","what":"Parsimony","title":"Phylogenetic trees from morphological data","text":"morphological data, one frequently used approaches conduct phylogenetic trees maximum parsimony (MP). pratchet (already described Estimating phylogenetic trees phangorn) implements parsimony ratchet (Nixon 1999). create starting tree, can use function random.addition: tree can given pratchet: =TRUE get (case 19) trees lowest parsimony score multiPhylo object. Since minimum 1000 iterations, already edge support. Now can assign edge lengths.","code":"mm_start <- random.addition(mm_pd) mm_tree <- pratchet(mm_pd, start = mm_start, minit = 1000, maxit = 10000, all = TRUE, trace = 0) mm_tree ## 19 phylogenetic trees mm_tree <- acctran(mm_tree, mm_pd)"},{"path":"https://klausvigo.github.io/phangorn/articles/Morphological.html","id":"branch-and-bound","dir":"Articles","previous_headings":"Parsimony","what":"Branch and bound","title":"Phylogenetic trees from morphological data","text":"case mites-dataset 12 sequences, ’s also possible use branch bound algorithm (Hendy Penny 1982) find parsimonious trees. bigger datasets definitely recommended use pratchet.","code":"mm_bab <- bab(mm_pd, trace = 0) mm_bab ## 37 phylogenetic trees"},{"path":"https://klausvigo.github.io/phangorn/articles/Morphological.html","id":"root-trees","dir":"Articles","previous_headings":"Parsimony","what":"Root trees","title":"Phylogenetic trees from morphological data","text":"want unrooted trees rooted, possibility use midpoint perform midpoint rooting. Rooting trees specific species (chose C. cymba ) can done function root ape package (Paradis Schliep 2019). save correct node labels (edge support), ’s important set edgelabel=TRUE.","code":"mm_tree_rooted <- root(mm_tree, outgroup = \"C._cymba\", resolve.root = TRUE, edgelabel = TRUE)"},{"path":"https://klausvigo.github.io/phangorn/articles/Morphological.html","id":"plot-trees","dir":"Articles","previous_headings":"Parsimony","what":"Plot trees","title":"Phylogenetic trees from morphological data","text":"plotBS plot tree respective edge support. also possible save plots .pdf (various formats, e.g. svg, png, tiff) file. digits argument determine number digits shown bootstrap values.","code":"# subsetting for tree nr. 9 plotBS(mm_tree_rooted[[9]], digits = 2) # save plot as pdf pdf(file = \"mm_rooted.pdf\") plotBS(mm_tree_rooted[[9]], digits = 2) dev.off()"},{"path":"https://klausvigo.github.io/phangorn/articles/Morphological.html","id":"consensus-tree","dir":"Articles","previous_headings":"Parsimony","what":"Consensus tree","title":"Phylogenetic trees from morphological data","text":"look consensus tree 19 trees pratchet, 37 parsimonious trees bab, can use consensus function ape. Unrooted rooted consensus trees mites dataset MP. can clearly see , expected, two rooted trees topology.","code":"# unrooted pratchet tree mm_cons <- consensus(mm_tree) # rooted pratchet tree mm_cons_root <- consensus(mm_tree_rooted, rooted = TRUE) # branch and bound, we root the consensus tree in the same step mm_bab_cons <- root(consensus(mm_bab), outgroup = \"C._cymba\", resolve.root = TRUE, edgelabel = TRUE) plot(mm_cons, main=\"Unrooted pratchet consensus tree\") plot(mm_cons_root, main=\"Rooted pratchet consensus tree\") plot(mm_bab_cons, main=\"Rooted bab consensus tree\")"},{"path":"https://klausvigo.github.io/phangorn/articles/Morphological.html","id":"session-info","dir":"Articles","previous_headings":"","what":"Session info","title":"Phylogenetic trees from morphological data","text":"","code":"## R version 4.3.2 (2023-10-31) ## Platform: x86_64-pc-linux-gnu (64-bit) ## Running under: Ubuntu 22.04.3 LTS ## ## Matrix products: default ## BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 ## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so; LAPACK version 3.10.0 ## ## locale: ## [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 ## [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 ## [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C ## [10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C ## ## time zone: UTC ## tzcode source: system (glibc) ## ## attached base packages: ## [1] stats graphics grDevices utils datasets methods base ## ## other attached packages: ## [1] phangorn_3.0.0.0 ape_5.7-1.8 ## ## loaded via a namespace (and not attached): ## [1] Matrix_1.6-1.1 jsonlite_1.8.8 highr_0.10 compiler_4.3.2 ## [5] Rcpp_1.0.12 stringr_1.5.1 parallel_4.3.2 jquerylib_0.1.4 ## [9] systemfonts_1.0.5 textshaping_0.3.7 yaml_2.3.8 fastmap_1.1.1 ## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_1.6.0 ## [17] knitr_1.45 desc_1.4.3 bslib_0.6.1 rlang_1.1.3 ## [21] fastmatch_1.1-4 cachem_1.0.8 stringi_1.8.3 xfun_0.41 ## [25] quadprog_1.5-8 fs_1.6.3 sass_0.4.8 memoise_2.0.1 ## [29] cli_3.6.2 pkgdown_2.0.7 magrittr_2.0.3 digest_0.6.34 ## [33] grid_4.3.2 lifecycle_1.0.4 nlme_3.1-163 vctrs_0.6.5 ## [37] evaluate_0.23 glue_1.7.0 codetools_0.2-19 ragg_1.2.7 ## [41] rmarkdown_2.25 purrr_1.0.2 pkgconfig_2.0.3 tools_4.3.2 ## [45] htmltools_0.5.7"},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/articles/Networx.html","id":"consensusnet","dir":"Articles","previous_headings":"","what":"consensusNet","title":"Splits and Networx","text":"consensusNet (Holland et al. 2004) generalization consensus tree. Instead representing splits (taxon bipartitions) occurring least 50% trees bootstrap MCMC sample one can use lower threshold explore competing splits. Note , basic implementation used , consensusNet edge lengths proportional frequency corresponding splits provided list trees. input consensusNet list trees .e. object class multiPhylo. many cases, consensusNet return two incompatible (competing) splits. plotted planar (2-dimensional) graph. situation requires n-dimensional graph, maximum number dimensions equals maximum number incompatible splits. example, three alternative incompatible splits: (,B)|(C,D) vs. (,C)|(B,D) vs. (,D)|(B,C), need 3-dimensional graph show three alternatives. nice way get still good impression network plot 3D. result spinning graph similar rotatingNetworx","code":"set.seed(1) bs <- bootstrap.phyDat(yeast, FUN = function(x)nj(dist.hamming(x)), bs=100) tree <- nj(dist.hamming(yeast)) par(\"mar\" = rep(1, 4)) tree <- plotBS(tree, bs, \"phylogram\") cnet <- consensusNet(bs, .3) plot(cnet, show.edge.label=TRUE) plot(cnet, \"3D\") # rotate 3d plot play3d(spin3d(axis=c(0,1,0), rpm=6), duration=10) # create animated gif file movie3d(spin3d(axis=c(0,1,0), rpm=6), duration=10)"},{"path":"https://klausvigo.github.io/phangorn/articles/Networx.html","id":"neighbornet","dir":"Articles","previous_headings":"","what":"neighborNet","title":"Splits and Networx","text":"function neighborNet implements popular method Bryant Moulton (2004). Neighbor-Net algorithm essentially 2D-version Neighbor joining algorithm. Neighbour-net computed two steps: first computes circular ordering taxa data set; second step involves estimation edge weights using non-negative Least-Squares (nnls). advantage Neighbor-Net returns circular split system can always displayed planar (2D) graph. rendering networx done using fantastic igraph package (Csardi Nepusz 2006).","code":"dm <- dist.hamming(yeast) nnet <- neighborNet(dm) par(\"mar\" = rep(1, 4)) plot(nnet)"},{"path":"https://klausvigo.github.io/phangorn/articles/Networx.html","id":"adding-support-values","dir":"Articles","previous_headings":"","what":"Adding support values","title":"Splits and Networx","text":"can use generic function addConfidences add (branch) support values tree, .e. object class phylo networx, splits phylo object. Neighbor-Net object computed provides support values. can add support values tree computed splits (edges) shared objects. Analogously, can also add support values tree:","code":"nnet <- addConfidences(nnet, tree) par(\"mar\" = rep(1, 4)) plot(nnet, show.edge.label=TRUE) tree2 <- rNNI(tree, 2) tree2 <- addConfidences(tree2, tree) # several support values are missing par(\"mar\" = rep(1, 4)) plot(tree2, show.node.label=TRUE)"},{"path":"https://klausvigo.github.io/phangorn/articles/Networx.html","id":"estimating-edge-weights-nnls","dir":"Articles","previous_headings":"","what":"Estimating edge weights (nnls)","title":"Splits and Networx","text":"Consensus networks, hand, provide primarily information support values corresponding split, information actual difference taxon bipartitions defined split. example, one may interested alternative support values correspond actual genetic distance involved taxa. Given distance matrix, can estimate edge weights using non-negative Least-Squares, plot onto consensusNet splits graph.","code":"cnet <- nnls.networx(cnet, dm) par(\"mar\" = rep(1, 4)) plot(cnet, show.edge.label=TRUE)"},{"path":"https://klausvigo.github.io/phangorn/articles/Networx.html","id":"import-and-export-networks-advanced-functions-for-networx-objects","dir":"Articles","previous_headings":"Estimating edge weights (nnls)","what":"Import and export networks, advanced functions for networx objects","title":"Splits and Networx","text":"functions read.nexus.networx write.nexus.networx can read write nexus files SplitsTree (Huson Bryant 2006). Check-new vignette IntertwiningTreesAndNetworks (K. Schliep et al. 2017) additional functions, examples, advanced application.","code":""},{"path":"https://klausvigo.github.io/phangorn/articles/Networx.html","id":"session-information","dir":"Articles","previous_headings":"","what":"Session Information","title":"Splits and Networx","text":"","code":"sessionInfo() ## R version 4.3.2 (2023-10-31) ## Platform: x86_64-pc-linux-gnu (64-bit) ## Running under: Ubuntu 22.04.3 LTS ## ## Matrix products: default ## BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 ## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so; LAPACK version 3.10.0 ## ## locale: ## [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 ## [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 ## [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C ## [10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C ## ## time zone: UTC ## tzcode source: system (glibc) ## ## attached base packages: ## [1] stats graphics grDevices utils datasets methods base ## ## other attached packages: ## [1] phangorn_3.0.0.0 ape_5.7-1.8 ## ## loaded via a namespace (and not attached): ## [1] Matrix_1.6-1.1 jsonlite_1.8.8 highr_0.10 compiler_4.3.2 ## [5] Rcpp_1.0.12 stringr_1.5.1 parallel_4.3.2 jquerylib_0.1.4 ## [9] systemfonts_1.0.5 textshaping_0.3.7 yaml_2.3.8 fastmap_1.1.1 ## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_1.6.0 ## [17] knitr_1.45 desc_1.4.3 bslib_0.6.1 rlang_1.1.3 ## [21] fastmatch_1.1-4 cachem_1.0.8 stringi_1.8.3 xfun_0.41 ## [25] quadprog_1.5-8 fs_1.6.3 sass_0.4.8 memoise_2.0.1 ## [29] cli_3.6.2 pkgdown_2.0.7 magrittr_2.0.3 digest_0.6.34 ## [33] grid_4.3.2 lifecycle_1.0.4 nlme_3.1-163 vctrs_0.6.5 ## [37] evaluate_0.23 glue_1.7.0 codetools_0.2-19 ragg_1.2.7 ## [41] rmarkdown_2.25 purrr_1.0.2 pkgconfig_2.0.3 tools_4.3.2 ## [45] htmltools_0.5.7"},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Estimating phylogenetic trees with phangorn","text":"notes enable user estimate phylogenetic trees alignment data different methods using phangorn package (Schliep 2011) . Several functions package also described detail (Paradis 2012). theoretical background methods see e.g. (Felsenstein 2004; Yang 2006). document illustrates package’s features estimate phylogenetic trees using different reconstruction methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"getting-started","dir":"Articles","previous_headings":"","what":"Getting started","title":"Estimating phylogenetic trees with phangorn","text":"first thing read alignment. Unfortunately exist many different file formats alignments can stored . cases, function read.phyDat used read alignment. ape package (Paradis Schliep 2019) phangorn, several functions read alignments, depending format data set (“nexus”, “phylip”, “fasta”) kind data (amino acid, nucleotides, morphological data). function read.phyDat calls functions transforms phyDat object. specific parameter settings available look help files function read.dna (phylip, fasta, clustal format), read.nexus.data nexus files. amino acid data additional read.aa called. Morphological data shown later vignette Phylogenetic trees morphological data. start analysis loading phangorn package reading alignment.","code":"library(ape) library(phangorn) fdir <- system.file(\"extdata/trees\", package = \"phangorn\") primates <- read.phyDat(file.path(fdir, \"primates.dna\"), format = \"interleaved\")"},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"distance-based-methods","dir":"Articles","previous_headings":"","what":"Distance based methods","title":"Estimating phylogenetic trees with phangorn","text":"reading nucleotide alignment can build first tree distance based methods. function dist.dna ape package computes distances many DNA substitution models, use function dist.dna, transform data class DNAbin. function dist.ml phangorn offers substitution models “JC69” “F81” DNA, also common substitution models amino acids (e.g. “WAG”, “JTT”, “LG”, “Dayhoff”, “cpREV”, “mtmam”, “mtArt”, “MtZoa” “mtREV24”). constructing distance matrix, reconstruct rooted tree UPGMA alternatively unrooted tree using Neighbor Joining (Saitou Nei 1987; Studier Keppler 1988). distance methods like fastme available ape package. can plot trees treeUPGMA treeNJ commands: Rooted UPGMA tree. Unrooted NJ tree.","code":"dm <- dist.ml(primates) treeUPGMA <- upgma(dm) treeNJ <- NJ(dm) plot(treeUPGMA, main=\"UPGMA\") plot(treeNJ, \"unrooted\", main=\"NJ\")"},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"bootstrap","dir":"Articles","previous_headings":"Distance based methods","what":"Bootstrap","title":"Estimating phylogenetic trees with phangorn","text":"run bootstrap first need write function computes tree alignment. first need compute distance matrix afterwards compute tree. can give function bootstrap.phyDat function. new syntax R 4.1 can written bit shorter: Finally, can plot tree bootstrap values added: Rooted UPGMA tree. Distance based methods fast use UPGMA NJ tree starting trees maximum parsimony maximum likelihood analyses.","code":"fun <- function(x) upgma(dist.ml(x)) bs_upgma <- bootstrap.phyDat(primates, fun) bs_upgma <- bootstrap.phyDat(primates, \\(x){dist.ml(x) |> upgma}) plotBS(treeUPGMA, bs_upgma, main=\"UPGMA\")"},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"parsimony","dir":"Articles","previous_headings":"","what":"Parsimony","title":"Estimating phylogenetic trees with phangorn","text":"function parsimony returns parsimony score, minimum number changes necessary describe data given tree. can compare parsimony score two trees computed far: function users want use infer phylogenies MP (maximum parsimony) pratchet, implementation parsimony ratchet (Nixon 1999). allows escape local optima find better trees performing NNI / SPR rearrangements. current implementation Create bootstrap data set \\(D_b\\) original data set. Take current best tree perform tree rearrangements \\(D_b\\) save bootstrap tree \\(T_b\\). Use \\(T_b\\) perform tree rearrangements original data set. tree lower parsimony score currently best tree, replace . Iterate 1:3 either given number iteration reached (minit) improvements recorded number iterations (k). set minimum iteration parsimony ratchet (minit) 100 iterations, default number k 10. ratchet implicitly performs bootstrap resampling, already computed branch support, case least 100 bootstrap iterations. parameter trace=0 tells function write current status console. function may return several best trees, trees branch length assigned yet. Now let’s : assigning edge weights, prune away internal edges length tol (default = 1e-08), trees may contain multifurcations. trees might differed edges length 0. mentioned , parsimony ratchet implicitly performs bootstrap analysis (step 1). make use store trees visited. allows us add bootstrap support values tree. treeRatchet list trees, .e. object class multiPhylo, can subset -th trees treeRatchet[[]]. cases pratchet enough use, phangorn exports function might useful. random.addition computes random addition can used generate starting trees. function optim.parsimony performs tree rearrangements find trees lower parsimony score. tree rearrangements implemented nearest-neighbor interchanges (NNI) subtree pruning regrafting (SPR). latter far works fitch algorithm.","code":"parsimony(treeUPGMA, primates) ## [1] 751 parsimony(treeNJ, primates) ## [1] 746 treeRatchet <- pratchet(primates, trace = 0, minit=100) parsimony(treeRatchet, primates) ## [1] 746 treeRatchet <- acctran(treeRatchet, primates) treeRatchet <- di2multi(treeRatchet) if(inherits(treeRatchet, \"multiPhylo\")){ treeRatchet <- unique(treeRatchet) } plotBS(midpoint(treeRatchet), type=\"phylogram\") add.scale.bar() treeRA <- random.addition(primates) treeSPR <- optim.parsimony(treeRA, primates) ## Final p-score 746 after 1 nni operations parsimony(c(treeRA, treeSPR), primates) ## [1] 750 746"},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"branch-and-bound","dir":"Articles","previous_headings":"Parsimony","what":"Branch and bound","title":"Estimating phylogenetic trees with phangorn","text":"data sets species also possible find parsimonious trees using branch bound algorithm (Hendy Penny 1982). data sets 10 taxa can take long time depends strongly “tree-like” data . 20-30 taxa take almost forever.","code":"(trees <- bab(primates[1:10,])) ## 1 phylogenetic tree"},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"maximum-likelihood","dir":"Articles","previous_headings":"","what":"Maximum likelihood","title":"Estimating phylogenetic trees with phangorn","text":"last method describe vignette Maximum Likelihood (ML) introduced Felsenstein (Felsenstein 1981).","code":""},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"model-selection","dir":"Articles","previous_headings":"Maximum likelihood","what":"Model selection","title":"Estimating phylogenetic trees with phangorn","text":"Usually, first step, try find best fitting model. use function modelTest compare different nucleotide protein models AIC, AICc BIC, similar popular programs ModelTest ProtTest (D. Posada Crandall 1998; David Posada 2008; Abascal, Zardoya, Posada 2005). default available nucleotide amino acid models compared. Vignette Markov models transition rate matrices gives background models, estimated can work . ’s also possible select common models: results modelTest illustrated following table: speed computations thresholds optimizations modelTest strict optim.pml (shown coming vignettes) tree rearrangements performed, time consuming part optimizing process. modelTest computes optimizes lot models waste computer time save results. results saved call together optimized trees environment function .pml evaluates call get pml object back use optimization analysis. can either done specific model, specific criterion.","code":"mt <- modelTest(primates) mt <- modelTest(primates, model=c(\"JC\", \"F81\", \"K80\", \"HKY\", \"SYM\", \"GTR\"), control = pml.control(trace = 0)) fit <- as.pml(mt, \"HKY+G(4)+I\") fit <- as.pml(mt, \"BIC\")"},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"conducting-a-ml-tree","dir":"Articles","previous_headings":"Maximum likelihood","what":"Conducting a ML tree","title":"Estimating phylogenetic trees with phangorn","text":"simplify workflow, can give result modelTest function pml_bb optimize parameters taking best model according BIC. Ultrafast bootstrapping (Minh, Nguyen, Haeseler 2013) conducted automatically default rearrangements=\"stochastic\" used. rearrangements=\"NNI\" used, bootstrapping conducted. can also use pml_bb defined model infer phylogenetic tree.","code":"fit_mt <- pml_bb(mt, control = pml.control(trace = 0)) fit_mt ## model: HKY+G(4) ## loglikelihood: -2615.014 ## unconstrained loglikelihood: -1230.335 ## Model of rate heterogeneity: Discrete gamma model ## Number of rate categories: 4 ## Shape parameter: 2.272925 ## Rate Proportion ## 1 0.3238135 0.25 ## 2 0.6812164 0.25 ## 3 1.0755279 0.25 ## 4 1.9194423 0.25 ## ## Rate matrix: ## a c g t ## a 0.00000 1.00000 54.54799 1.00000 ## c 1.00000 0.00000 1.00000 54.54799 ## g 54.54799 1.00000 0.00000 1.00000 ## t 1.00000 54.54799 1.00000 0.00000 ## ## Base frequencies: ## a c g t ## 0.37480751 0.40160148 0.03911303 0.18447798 fitGTR <- pml_bb(primates, model=\"GTR+G(4)+I\")"},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"bootstrap-1","dir":"Articles","previous_headings":"Maximum likelihood","what":"Bootstrap","title":"Estimating phylogenetic trees with phangorn","text":"instead want conduct standard bootstrapping (Felsenstein 1985; Penny Hendy 1985), can function bootstrap.pml: Now can plot tree bootstrap support values edges compare standard bootstrap values ultrafast bootstrap values. function plotBS possible plot two, also transfer bootstraps (Lemoine et al. 2018) especially useful large data sets. Unrooted tree (midpoint rooted) ultrafast, standard transfer bootstrap support values. want assign standard transfer bootstrap values node labels tree instead plotting (e.g. export tree somewhere else), plotBS gives option type = \"n\": also possible look consensusNet identify potential conflict. ConsensusNet standard bootstrap sample. Several analyses, e.g.bootstrap modelTest, can computationally demanding, nowadays computers several cores, one can distribute computations using parallel package. However, possible use approach R running command line (“X11”), using GUI (example “Aqua” Macs) unfortunately parallel package work Windows.","code":"bs <- bootstrap.pml(fit_mt, bs=100, optNni=TRUE, control = pml.control(trace = 0)) plotBS(midpoint(fit_mt$tree), p = .5, type=\"p\", digits=2, main=\"Ultrafast bootstrap\") plotBS(midpoint(fit_mt$tree), bs, p = 50, type=\"p\", main=\"Standard bootstrap\") plotBS(midpoint(fit_mt$tree), bs, p = 50, type=\"p\", digits=0, method = \"TBE\", main=\"Transfer bootstrap\") # assigning standard bootstrap values to our tree; this is the default method tree_stdbs <- plotBS(fit_mt$tree, bs, type = \"n\") # assigning transfer bootstrap values to our tree tree_tfbs <- plotBS(fit_mt$tree, bs, type = \"n\", method = \"TBE\") cnet <- consensusNet(bs, p=0.2) plot(cnet, show.edge.label=TRUE)"},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"exporting-a-tree","dir":"Articles","previous_headings":"Maximum likelihood","what":"Exporting a tree","title":"Estimating phylogenetic trees with phangorn","text":"Now tree bootstrap values, can easily write file Newick-format:","code":"# tree with ultrafast bootstrap values write.tree(fit_mt$tree, \"primates.tree\") # tree with standard bootstrap values write.tree(tree_stdbs, \"primates.tree\") # tree with transfer bootstrap values write.tree(tree_tfbs, \"primates.tree\")"},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"molecular-dating-with-a-strict-clock-for-ultrametric-and-tipdated-phylogenies","dir":"Articles","previous_headings":"Maximum likelihood","what":"Molecular dating with a strict clock for ultrametric and tipdated phylogenies","title":"Estimating phylogenetic trees with phangorn","text":"assume “molecular clock” phylogenies can used infer divergence times (Zuckerkandl Pauling 1965). implemented strict clock described (Felsenstein 2004), p. 266, allowing infer ultrametric tip-dated phylogenies. function pml_bb ensures tree ultrametric, constraints given tip dates fulfilled. differs function optim.pml th tree supplied function fulfill constraints. case ultrametric starting tree can use UPGMA WPGMA tree. phangorn also can estimate tipdated phylogenies. use H3N2 virus data set treetime (Sagulenko, Puller, Neher 2018) example. Additionally alignment also need read data containing dates tips. first process sampling dates create named vector. lubridate package (Grolemund Wickham 2011) comes handy dates case one recode dates, e.g. days months. use pml_bb function, optimizes tree given constraints tip.dates vector. loglikelihood lower unrooted tree, keep mind rooted trees use less parameters. unrooted trees estimate one edge length parameter tree, ultrametric trees estimate parameter internal node tipdated trees one additional parameter rate. rate comparable slope fo tip--root regression programs like TempEst (Rambaut et al. 2016). last plot tree timescale.","code":"fit_strict <- pml_bb(primates, model=\"HKY+G(4)\", method=\"ultrametric\", rearrangement=\"NNI\", control = pml.control(trace = 0)) plot(fit_strict) fdir <- system.file(\"extdata/trees\", package = \"phangorn\") tmp <- read.csv(file.path(fdir,\"H3N2_NA_20.csv\")) H3N2 <- read.phyDat(file.path(fdir,\"H3N2_NA_20.fasta\"), format=\"fasta\") dates <- setNames(tmp$numdate_given, tmp$name) head(dates) ## A/Hawaii/02/2013|KF789866|05/28/2013|USA|12_13|H3N2/1-1409 ## 2013.405 ## A/Boston/DOA2_107/2012|CY148382|11/01/2012|USA|12_13|H3N2/1-1409 ## 2012.838 ## A/Oregon/15/2009|GQ895004|06/25/2009|USA|08_09|H3N2/1-1409 ## 2009.482 ## A/Hong_Kong/H090_695_V10/2009|CY115546|07/10/2009|Hong_Kong||H3N2/8-1416 ## 2009.523 ## A/New_York/182/2000|CY001279|02/18/2000|USA|99_00|H3N2/1-1409 ## 2000.134 ## A/Canterbury/58/2000|CY009150|09/05/2000|New_Zealand||H3N2/8-1416 ## 2000.682 fit_td <- pml_bb(H3N2, model=\"HKY+I\", method=\"tipdated\", tip.dates=dates, rearrangement=\"NNI\", control = pml.control(trace = 0)) fit_td ## model: HKY+I ## loglikelihood: -3117.857 ## unconstrained loglikelihood: -2883.911 ## Proportion of invariant sites: 0.6865553 ## ## Rate: 0.002543584 ## ## Rate matrix: ## a c g t ## a 0.000000 1.000000 9.866635 1.000000 ## c 1.000000 0.000000 1.000000 9.866635 ## g 9.866635 1.000000 0.000000 1.000000 ## t 1.000000 9.866635 1.000000 0.000000 ## ## Base frequencies: ## a c g t ## 0.3097759 0.1928617 0.2376819 0.2596805 plot(fit_td, align.tip.label=TRUE)"},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"session-info","dir":"Articles","previous_headings":"","what":"Session info","title":"Estimating phylogenetic trees with phangorn","text":"","code":"## R version 4.3.2 (2023-10-31) ## Platform: x86_64-pc-linux-gnu (64-bit) ## Running under: Ubuntu 22.04.3 LTS ## ## Matrix products: default ## BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 ## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so; LAPACK version 3.10.0 ## ## locale: ## [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 ## [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 ## [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C ## [10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C ## ## time zone: UTC ## tzcode source: system (glibc) ## ## attached base packages: ## [1] stats graphics grDevices utils datasets methods base ## ## other attached packages: ## [1] knitr_1.45 phangorn_3.0.0.0 ape_5.7-1.8 ## ## loaded via a namespace (and not attached): ## [1] Matrix_1.6-1.1 jsonlite_1.8.8 highr_0.10 compiler_4.3.2 ## [5] Rcpp_1.0.12 stringr_1.5.1 parallel_4.3.2 jquerylib_0.1.4 ## [9] systemfonts_1.0.5 textshaping_0.3.7 yaml_2.3.8 fastmap_1.1.1 ## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_1.6.0 ## [17] desc_1.4.3 bslib_0.6.1 rlang_1.1.3 fastmatch_1.1-4 ## [21] cachem_1.0.8 stringi_1.8.3 xfun_0.41 quadprog_1.5-8 ## [25] fs_1.6.3 sass_0.4.8 memoise_2.0.1 cli_3.6.2 ## [29] pkgdown_2.0.7 magrittr_2.0.3 digest_0.6.34 grid_4.3.2 ## [33] lifecycle_1.0.4 nlme_3.1-163 vctrs_0.6.5 evaluate_0.23 ## [37] glue_1.7.0 codetools_0.2-19 ragg_1.2.7 rmarkdown_2.25 ## [41] purrr_1.0.2 pkgconfig_2.0.3 tools_4.3.2 htmltools_0.5.7"},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Klaus Schliep. Author, maintainer. Emmanuel Paradis. Author. Leonardo de Oliveira Martins. Author. Alastair Potts. Author. Iris Bardel-Kahr. Author. Tim W. White. Contributor. Cyrill Stachniss. Contributor. Michelle Kendall. Contributor. Keren Halabi. Contributor. Richel Bilderbeek. Contributor. Kristin Winchell. Contributor. Liam Revell. Contributor. Mike Gilchrist. Contributor. Jeremy Beaulieu. Contributor. Brian O'Meara. Contributor. Long Qu. Contributor. Joseph Brown. Contributor. Santiago Claramunt. Contributor.","code":""},{"path":"https://klausvigo.github.io/phangorn/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Schliep K.P. 2011. phangorn: phylogenetic analysis R. Bioinformatics, 27(4) 592-593 Schliep, K., Potts, . J., Morrison, D. ., Grimm, G. W. (2017), Intertwining phylogenetic trees networks. Methods Ecology Evolution, 8: 1212--1220. doi: 10.1111/2041-210X.12760","code":"@Article{, title = {phangorn: phylogenetic analysis in R}, author = {Klaus Schliep}, journal = {Bioinformatics}, year = {2011}, volume = {27}, number = {4}, pages = {592--593}, doi = {10.1093/bioinformatics/btq706}, } @Article{, author = {Klaus Schliep and Alastair J. Potts and David A. Morrison and Guido W. Grimm}, title = {Intertwining phylogenetic trees and networks}, journal = {Methods in Ecology and Evolution}, volume = {8}, number = {10}, pages = {1212--1220}, keywords = {exploratory data analysis, networks, phangorn, R, trees}, year = {2017}, }"},{"path":"https://klausvigo.github.io/phangorn/index.html","id":"phangorn-","dir":"","previous_headings":"","what":"Phylogenetic Reconstruction and Analysis","title":"Phylogenetic Reconstruction and Analysis","text":"phangorn package phylogenetic reconstruction analysis R language. phangorn offers possibility reconstructing phylogenies distance based methods, maximum parsimony maximum likelihood (ML) performing Hadamard conjugation. Extending general ML framework, package provides possibility estimating mixture partition models. Furthermore, phangorn offers several functions comparing trees, phylogenetic models splits, simulating character data performing congruence analyses. can install - latest released version install.packages(\"phangorn\") - latest development version remotes::install_github(\"KlausVigo/phangorn\") install development version may need install Biostrings seqLogo package bioconductor first: Also development version usually depends latest ape development version information download can found . Additionally may need install windows Rtools mac XCode GFortran. use phangorn please cite: Schliep K.P. 2011. phangorn: phylogenetic analysis R. Bioinformatics, 27(4) 592-593","code":"if (!requireNamespace(\"BiocManager\", quietly = TRUE)) install.packages(\"BiocManager\") BiocManager::install(c(\"Biostrings\", \"seqLogo\"))"},{"path":"https://klausvigo.github.io/phangorn/index.html","id":"license","dir":"","previous_headings":"","what":"License","title":"Phylogenetic Reconstruction and Analysis","text":"phangorn licensed GPLv2.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/Ancestors.html","id":null,"dir":"Reference","previous_headings":"","what":"tree utility function — Ancestors","title":"tree utility function — Ancestors","text":"Functions describing relationships among phylogenetic nodes.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/Ancestors.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"tree utility function — Ancestors","text":"","code":"Ancestors(x, node, type = c(\"all\", \"parent\")) allDescendants(x) Children(x, node) Descendants(x, node, type = c(\"tips\", \"children\", \"all\")) Siblings(x, node, include.self = FALSE) mrca.phylo(x, node = NULL, full = FALSE)"},{"path":"https://klausvigo.github.io/phangorn/reference/Ancestors.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"tree utility function — Ancestors","text":"x tree (phylo object). node integer character vector (scalar) corresponding node ID type specify whether return just direct children / parents include.self whether include self list siblings full logical indicating whether return MRCAs among tips nodes (TRUE); default return MRCAs among tips.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/Ancestors.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"tree utility function — Ancestors","text":"vector list containing indices nodes.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/Ancestors.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"tree utility function — Ancestors","text":"functions inspired treewalk phylobase package, work S3 phylo objects. nodes indices given edge matrix phylo object. taxon labels indices can easily derived matching tip.label argument phylo object, see example . functions allow node either scalar vector. mrca faster version mrca ape, phangorn dependencies. argument node missing function evaluated nodes.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/Ancestors.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"tree utility function — Ancestors","text":"allDescendants(): list descendant nodes node","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/Ancestors.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"tree utility function — Ancestors","text":"","code":"tree <- rtree(10) plot(tree, show.tip.label = FALSE) nodelabels() tiplabels() Ancestors(tree, 1:3, \"all\") #> [[1]] #> [1] 14 13 12 11 #> #> [[2]] #> [1] 15 14 13 12 11 #> #> [[3]] #> [1] 15 14 13 12 11 #> Children(tree, 11) #> [1] 12 18 Descendants(tree, 11, \"tips\") #> [[1]] #> [1] 1 2 3 4 5 6 7 8 9 10 #> Siblings(tree, 3) #> [1] 2 # Siblings of all nodes Siblings(tree) #> [[1]] #> [1] 15 #> #> [[2]] #> [1] 3 #> #> [[3]] #> [1] 2 #> #> [[4]] #> [1] 14 #> #> [[5]] #> [1] 6 #> #> [[6]] #> [1] 5 #> #> [[7]] #> [1] 17 #> #> [[8]] #> [1] 19 #> #> [[9]] #> [1] 10 #> #> [[10]] #> [1] 9 #> #> [[11]] #> NULL #> #> [[12]] #> [1] 18 #> #> [[13]] #> [1] 16 #> #> [[14]] #> [1] 4 #> #> [[15]] #> [1] 1 #> #> [[16]] #> [1] 13 #> #> [[17]] #> [1] 7 #> #> [[18]] #> [1] 12 #> #> [[19]] #> [1] 8 #> mrca.phylo(tree, 1:3) #> [1] 14 mrca.phylo(tree, match(c(\"t1\", \"t2\", \"t3\"), tree$tip)) #> [1] 11 mrca.phylo(tree) #> t4 t6 t1 t5 t7 t9 t2 t10 t8 t3 #> t4 1 14 14 13 12 12 12 11 11 11 #> t6 14 2 15 13 12 12 12 11 11 11 #> t1 14 15 3 13 12 12 12 11 11 11 #> t5 13 13 13 4 12 12 12 11 11 11 #> t7 12 12 12 12 5 17 16 11 11 11 #> t9 12 12 12 12 17 6 16 11 11 11 #> t2 12 12 12 12 16 16 7 11 11 11 #> t10 11 11 11 11 11 11 11 8 18 18 #> t8 11 11 11 11 11 11 11 18 9 19 #> t3 11 11 11 11 11 11 11 18 19 10 # same as mrca(tree), but faster for large trees"},{"path":"https://klausvigo.github.io/phangorn/reference/CI.html","id":null,"dir":"Reference","previous_headings":"","what":"Consistency Index and Retention Index — CI","title":"Consistency Index and Retention Index — CI","text":"CI RI compute Consistency Index (CI) Retention Index (RI).","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/CI.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Consistency Index and Retention Index — CI","text":"","code":"CI(tree, data, cost = NULL, sitewise = FALSE) RI(tree, data, cost = NULL, sitewise = FALSE)"},{"path":"https://klausvigo.github.io/phangorn/reference/CI.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Consistency Index and Retention Index — CI","text":"tree tree start nni search . data object class phyDat containing sequences. cost cost matrix transitions two states. sitewise return CI/RI alignment sitewise","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/CI.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Consistency Index and Retention Index — CI","text":"Consistency Index defined minimum number changes divided number changes required tree (parsimony score). Consistency Index equal one homoplasy. Retention Index defined $$RI = \\frac{MaxChanges - ObsChanges}{MaxChanges - MinChanges}$$","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/Laurasiatherian.html","id":null,"dir":"Reference","previous_headings":"","what":"Laurasiatherian data (AWCMEE) — Laurasiatherian","title":"Laurasiatherian data (AWCMEE) — Laurasiatherian","text":"Laurasiatherian RNA sequence data","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/Laurasiatherian.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Laurasiatherian data (AWCMEE) — Laurasiatherian","text":"Data taken former repository Allan Wilson Centre converted R format klaus.schliep@gmail.com.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/Laurasiatherian.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Laurasiatherian data (AWCMEE) — Laurasiatherian","text":"","code":"data(Laurasiatherian) str(Laurasiatherian) #> List of 47 #> $ Platypus : int [1:1605] 4 1 1 1 3 3 4 4 4 3 ... #> $ Wallaroo : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ Possum : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ Bandicoot : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ Opposum : int [1:1605] 2 1 4 1 3 3 4 4 4 3 ... #> $ Armadillo : int [1:1605] 2 1 2 1 3 3 4 2 4 3 ... #> $ Elephant : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ Aardvark : int [1:1605] 4 1 1 1 3 3 4 4 4 3 ... #> $ Tenrec : int [1:1605] 4 1 1 1 3 3 4 4 4 3 ... #> $ Hedghog : int [1:1605] 1 4 1 1 3 3 4 2 4 3 ... #> $ Gymnure : int [1:1605] 1 1 1 1 3 3 4 2 4 3 ... #> $ Mole : int [1:1605] 1 1 1 1 3 3 4 4 4 3 ... #> $ Shrew : int [1:1605] 4 1 1 1 3 3 4 4 4 3 ... #> $ Rbat : int [1:1605] 2 1 4 1 3 3 2 4 4 2 ... #> $ FlyingFox : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ RyFlyFox : int [1:1605] 4 1 1 1 3 3 4 4 4 3 ... #> $ FruitBat : int [1:1605] 4 1 4 1 3 3 4 4 4 3 ... #> $ LongTBat : int [1:1605] 2 1 4 1 3 3 4 4 4 3 ... #> $ Horse : int [1:1605] 2 1 4 1 3 3 2 4 4 3 ... #> $ Donkey : int [1:1605] 2 1 4 1 3 3 2 4 4 3 ... #> $ WhiteRhino: int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ IndianRhin: int [1:1605] 2 1 4 1 3 3 4 4 4 3 ... #> $ Pig : int [1:1605] 2 1 2 1 3 3 4 4 4 3 ... #> $ Alpaca : int [1:1605] 2 1 2 1 3 3 4 4 4 1 ... #> $ Cow : int [1:1605] 2 1 4 1 3 3 4 4 4 3 ... #> $ Sheep : int [1:1605] 4 1 4 1 3 3 4 4 4 3 ... #> $ Hippo : int [1:1605] 4 1 2 1 3 3 4 4 4 3 ... #> $ FinWhale : int [1:1605] 4 1 1 1 3 3 4 4 4 3 ... #> $ BlueWhale : int [1:1605] 4 1 1 1 3 3 4 4 4 3 ... #> $ SpermWhale: int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ Rabbit : int [1:1605] 4 1 1 1 3 3 4 4 4 3 ... #> $ Pika : int [1:1605] 1 1 4 1 3 3 4 4 4 3 ... #> $ Squirrel : int [1:1605] 2 1 4 1 3 3 4 4 4 3 ... #> $ Dormouse : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ GuineaPig : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ Mouse : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ Vole : int [1:1605] 1 1 1 1 3 3 4 4 4 3 ... #> $ CaneRat : int [1:1605] 2 1 1 1 4 3 4 4 4 3 ... #> $ Baboon : int [1:1605] 1 1 4 1 3 3 2 4 4 3 ... #> $ Human : int [1:1605] 1 1 4 1 3 3 4 4 4 3 ... #> $ Loris : int [1:1605] 2 1 2 1 3 3 4 4 4 3 ... #> $ Cebus : int [1:1605] 2 1 2 1 3 3 4 4 4 3 ... #> $ Cat : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ Dog : int [1:1605] 4 1 1 1 3 3 4 4 4 3 ... #> $ HarbSeal : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ FurSeal : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ GraySeal : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> - attr(*, \"class\")= chr \"phyDat\" #> - attr(*, \"weight\")= int [1:1605] 1 5 1 444 3 314 1 1 328 1 ... #> - attr(*, \"nr\")= int 1605 #> - attr(*, \"nc\")= num 4 #> - attr(*, \"index\")= int [1:3179] 1 2 3 4 5 6 7 8 9 6 ... #> - attr(*, \"levels\")= chr [1:4] \"a\" \"c\" \"g\" \"t\" #> - attr(*, \"allLevels\")= chr [1:18] \"a\" \"c\" \"g\" \"t\" ... #> - attr(*, \"type\")= chr \"DNA\" #> - attr(*, \"contrast\")= num [1:18, 1:4] 1 0 0 0 0 1 1 1 0 0 ... #> ..- attr(*, \"dimnames\")=List of 2 #> .. ..$ : NULL #> .. ..$ : chr [1:4] \"a\" \"c\" \"g\" \"t\""},{"path":"https://klausvigo.github.io/phangorn/reference/NJ.html","id":null,"dir":"Reference","previous_headings":"","what":"Neighbor-Joining — NJ","title":"Neighbor-Joining — NJ","text":"function performs neighbor-joining tree estimation Saitou Nei (1987). UNJ unweighted version Gascuel (1997).","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/NJ.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Neighbor-Joining — NJ","text":"","code":"NJ(x) UNJ(x)"},{"path":"https://klausvigo.github.io/phangorn/reference/NJ.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Neighbor-Joining — NJ","text":"x distance matrix.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/NJ.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Neighbor-Joining — NJ","text":"object class \"phylo\".","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/NJ.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Neighbor-Joining — NJ","text":"Saitou, N. Nei, M. (1987) neighbor-joining method: new method reconstructing phylogenetic trees. Molecular Biology Evolution, 4, 406--425. Studier, J. Keppler, K. J. (1988) Note Neighbor-Joining Algorithm Saitou Nei. Molecular Biology Evolution, 6, 729--731. Gascuel, O. (1997) Concerning NJ algorithm unweighted version, UNJ. Birkin et. al. Mathematical Hierarchies Biology, 149--170.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/NJ.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Neighbor-Joining — NJ","text":"Klaus P. Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/NJ.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Neighbor-Joining — NJ","text":"","code":"data(Laurasiatherian) dm <- dist.ml(Laurasiatherian) tree <- NJ(dm) plot(tree)"},{"path":"https://klausvigo.github.io/phangorn/reference/SH.test.html","id":null,"dir":"Reference","previous_headings":"","what":"Shimodaira-Hasegawa Test — SH.test","title":"Shimodaira-Hasegawa Test — SH.test","text":"function computes Shimodaira--Hasegawa test set trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/SH.test.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Shimodaira-Hasegawa Test — SH.test","text":"","code":"SH.test(..., B = 10000, data = NULL, weight = NULL)"},{"path":"https://klausvigo.github.io/phangorn/reference/SH.test.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Shimodaira-Hasegawa Test — SH.test","text":"... either series objects class \"pml\" separated commas, list containing objects object class \"pmlPart\" matrix containing site-wise likelihoods columns. B number bootstrap replicates. data object class \"phyDat\". weight matrix site (log-)likelihoods supplied optional vector containing number occurrences site pattern.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/SH.test.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Shimodaira-Hasegawa Test — SH.test","text":"numeric vector P-value associated tree given ....","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/SH.test.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Shimodaira-Hasegawa Test — SH.test","text":"Shimodaira, H. Hasegawa, M. (1999) Multiple comparisons log-likelihoods applications phylogenetic inference. Molecular Biology Evolution, 16, 1114--1116.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/SH.test.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Shimodaira-Hasegawa Test — SH.test","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/SH.test.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Shimodaira-Hasegawa Test — SH.test","text":"","code":"data(Laurasiatherian) dm <- dist.logDet(Laurasiatherian) tree1 <- NJ(dm) tree2 <- unroot(upgma(dm)) fit1 <- pml(tree1, Laurasiatherian) fit2 <- pml(tree2, Laurasiatherian) fit1 <- optim.pml(fit1) # optimize edge weights #> optimize edge weights: -54807.68 --> -54290.26 #> optimize edge weights: -54290.26 --> -54290.26 #> optimize edge weights: -54290.26 --> -54290.26 fit2 <- optim.pml(fit2) #> optimize edge weights: -55623.41 --> -54911.33 #> optimize edge weights: -54911.33 --> -54911.33 #> optimize edge weights: -54911.33 --> -54911.33 # with pml objects as input SH.test(fit1, fit2, B=1000) #> Trees ln L Diff ln L p-value #> [1,] 1 -54290.26 0.0000 0.498 #> [2,] 2 -54911.33 621.0767 0.000 # in real analysis use larger B, e.g. 10000 # with matrix as input X <- matrix(c(fit1$siteLik, fit2$siteLik), ncol=2) SH.test(X, weight=attr(Laurasiatherian, \"weight\"), B=1000) #> Trees ln L Diff ln L p-value #> [1,] 1 -54290.26 0.0000 0.492 #> [2,] 2 -54911.33 621.0767 0.000 if (FALSE) { example(pmlPart) SH.test(sp, B=1000) }"},{"path":"https://klausvigo.github.io/phangorn/reference/SOWH.test.html","id":null,"dir":"Reference","previous_headings":"","what":"Swofford-Olsen-Waddell-Hillis Test — SOWH.test","title":"Swofford-Olsen-Waddell-Hillis Test — SOWH.test","text":"function computes Swofford--Olsen--Waddell--Hillis (SOWH) test, parametric bootstrap test. function computational demanding likely slow.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/SOWH.test.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Swofford-Olsen-Waddell-Hillis Test — SOWH.test","text":"","code":"SOWH.test(x, n = 100, restricted = list(optNni = FALSE), optNni = TRUE, trace = 1, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/SOWH.test.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Swofford-Olsen-Waddell-Hillis Test — SOWH.test","text":"x object class \"pml\". n number bootstrap replicates. restricted list restricted parameter settings. optNni Logical value indicating whether topology gets optimized (NNI). trace Show output computations. ... arguments passed \"optim.pml\".","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/SOWH.test.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Swofford-Olsen-Waddell-Hillis Test — SOWH.test","text":"object class SOWH. list three elements, one matrix containing bootstrap replicate (log-) likelihood restricted unrestricted estimate two pml objects restricted unrestricted model.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/SOWH.test.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Swofford-Olsen-Waddell-Hillis Test — SOWH.test","text":"SOWH.test performs parametric bootstrap test compare two trees. makes extensive use simSeq optim.pml can take quite long.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/SOWH.test.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Swofford-Olsen-Waddell-Hillis Test — SOWH.test","text":"Goldman, N., Anderson, J. P., Rodrigo, . G. (2000) Likelihood -based tests topologies phylogenetics. Systematic Biology 49 652-670. Swofford, D.L., Olsen, G.J., Waddell, P.J. Hillis, D.M. (1996) Phylogenetic Inference Hillis, D.M., Moritz, C. Mable, B.K. (Eds.) Molecular Systematics (2nd ed.) 407-514, Sunderland, MA: Sinauer","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/SOWH.test.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Swofford-Olsen-Waddell-Hillis Test — SOWH.test","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/SOWH.test.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Swofford-Olsen-Waddell-Hillis Test — SOWH.test","text":"","code":"# in real analysis use larger n, e.g. 500 preferably more if (FALSE) { data(Laurasiatherian) dm <- dist.logDet(Laurasiatherian) tree <- NJ(dm) fit <- pml(tree, Laurasiatherian) fit <- optim.pml(fit, TRUE) set.seed(6) tree <- rNNI(fit$tree, 1) fit <- update(fit, tree = tree) (res <- SOWH.test(fit, n=100)) summary(res) }"},{"path":"https://klausvigo.github.io/phangorn/reference/add.tips.html","id":null,"dir":"Reference","previous_headings":"","what":"Add tips to a tree — add.tips","title":"Add tips to a tree — add.tips","text":"function binds tips nodes phylogenetic trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/add.tips.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add tips to a tree — add.tips","text":"","code":"add.tips(tree, tips, where, edge.length = NULL)"},{"path":"https://klausvigo.github.io/phangorn/reference/add.tips.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add tips to a tree — add.tips","text":"tree object class \"phylo\". tips character vector containing names tips. integer character vector length tips giving number node tip tree add new tips. edge.length optional numeric vector edge length","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/add.tips.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Add tips to a tree — add.tips","text":"object class phylo","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/add.tips.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Add tips to a tree — add.tips","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/add.tips.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add tips to a tree — add.tips","text":"","code":"tree <- rcoal(10) plot(tree) nodelabels() tiplabels() tree1 <- add.tips(tree, c(\"A\", \"B\", \"C\"), c(1,2,15)) plot(tree1)"},{"path":"https://klausvigo.github.io/phangorn/reference/addConfidences.html","id":null,"dir":"Reference","previous_headings":"","what":"Compare splits and add support values to an object — addConfidences","title":"Compare splits and add support values to an object — addConfidences","text":"Add support values splits, phylo networx object.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/addConfidences.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compare splits and add support values to an object — addConfidences","text":"","code":"addConfidences(x, y, ...) # S3 method for phylo addConfidences(x, y, rooted = FALSE, ...) presenceAbsence(x, y) createLabel(x, y, label_y, type = \"edge\", nomatch = NA)"},{"path":"https://klausvigo.github.io/phangorn/reference/addConfidences.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compare splits and add support values to an object — addConfidences","text":"x object class splits, phylo networx y object class splits, phylo, multiPhylo networx ... arguments passed methods. rooted logial, FALSE bipartitions considered, TRUE clades. label_y label y matched x. usually length(.splits(x)). type labels returned edges (networx) splits. nomatch default value match x y found.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/addConfidences.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compare splits and add support values to an object — addConfidences","text":"object x added bootstrap / MCMC support values.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/addConfidences.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Compare splits and add support values to an object — addConfidences","text":"Schliep, K., Potts, . J., Morrison, D. . Grimm, G. W. (2017), Intertwining phylogenetic trees networks. Methods Ecol Evol.8, 1212--1220. doi:10.1111/2041-210X.12760","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/addConfidences.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Compare splits and add support values to an object — addConfidences","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/addConfidences.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Compare splits and add support values to an object — addConfidences","text":"","code":"data(woodmouse) woodmouse <- phyDat(woodmouse) tmpfile <- normalizePath(system.file( \"extdata/trees/RAxML_bootstrap.woodmouse\", package=\"phangorn\")) boot_trees <- read.tree(tmpfile) dm <- dist.ml(woodmouse) tree <- upgma(dm) nnet <- neighborNet(dm) tree <- addConfidences(tree, boot_trees) nnet <- addConfidences(nnet, boot_trees) plot(tree, show.node.label=TRUE) plot(nnet, show.edge.label=TRUE)"},{"path":"https://klausvigo.github.io/phangorn/reference/add_ci.html","id":null,"dir":"Reference","previous_headings":"","what":"Draw Confidences Intervals on Phylogenies — add_ci","title":"Draw Confidences Intervals on Phylogenies — add_ci","text":"low-level plotting commands draw confidence intervals node tree rectangles coloured backgrounds add boxplots ultrametric tipdated trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/add_ci.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Draw Confidences Intervals on Phylogenies — add_ci","text":"","code":"add_ci(tree, trees, col95 = \"#FF00004D\", col50 = \"#0000FF4D\", height = 0.7, legend = TRUE, ...) add_boxplot(tree, trees, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/add_ci.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Draw Confidences Intervals on Phylogenies — add_ci","text":"tree phylogenetic tree confidences added. trees phylogenetic trees, .e. object class `multiPhylo` col95 colour used 95 red. col50 colour used 50 blue. height height boxes. legend logical value. ... arguments passed functions, legend bxp.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/add_ci.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Draw Confidences Intervals on Phylogenies — add_ci","text":"trees rooted, either ultrametric tip dated.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/add_ci.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Draw Confidences Intervals on Phylogenies — add_ci","text":"Emmanuel Paradis, Santiago Claramunt, Joseph Brown, Klaus Schliep","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/add_ci.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Draw Confidences Intervals on Phylogenies — add_ci","text":"","code":"data(\"Laurasiatherian\") dm <- dist.hamming(Laurasiatherian) tree <- upgma(dm) set.seed(123) trees <- bootstrap.phyDat(Laurasiatherian, FUN=function(x)upgma(dist.hamming(x)), bs=100) tree <- plotBS(tree, trees, \"phylogram\") add_ci(tree, trees) plot(tree, direction=\"downwards\") add_boxplot(tree, trees, boxwex=.7)"},{"path":"https://klausvigo.github.io/phangorn/reference/add_edge_length.html","id":null,"dir":"Reference","previous_headings":"","what":"Assign and compute edge lengths from a sample of trees — add_edge_length","title":"Assign and compute edge lengths from a sample of trees — add_edge_length","text":"command can infer average edge lengths assign (bootstrap/MCMC) sample.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/add_edge_length.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Assign and compute edge lengths from a sample of trees — add_edge_length","text":"","code":"add_edge_length(tree, trees, fun = function(x) median(na.omit(x)), rooted = all(is.rooted(trees)))"},{"path":"https://klausvigo.github.io/phangorn/reference/add_edge_length.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Assign and compute edge lengths from a sample of trees — add_edge_length","text":"tree phylogenetic tree splitnetwork edge lengths assigned . trees object class multiPhylo, average edges computed . fun function compute average (default median). rooted rooted logical, FALSE edge lengths function observed splits, TRUE edge lengths estimated height observed clades.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/add_edge_length.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Assign and compute edge lengths from a sample of trees — add_edge_length","text":"Klaus Schliep","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/add_edge_length.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Assign and compute edge lengths from a sample of trees — add_edge_length","text":"","code":"data(\"Laurasiatherian\") set.seed(123) bs <- bootstrap.phyDat(Laurasiatherian, FUN=function(x)upgma(dist.ml(x)), bs=100) tree_compat <- allCompat(bs, rooted=TRUE) |> add_edge_length(bs) plot(tree_compat) add_boxplot(tree_compat, bs, boxwex=.7)"},{"path":"https://klausvigo.github.io/phangorn/reference/allTrees.html","id":null,"dir":"Reference","previous_headings":"","what":"Compute all trees topologies. — allTrees","title":"Compute all trees topologies. — allTrees","text":"allTrees computes tree topologies rooted unrooted trees 10 tips. allTrees returns bifurcating trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/allTrees.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compute all trees topologies. — allTrees","text":"","code":"allTrees(n, rooted = FALSE, tip.label = NULL)"},{"path":"https://klausvigo.github.io/phangorn/reference/allTrees.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compute all trees topologies. — allTrees","text":"n Number tips (<=10). rooted Rooted unrooted trees (default: rooted). tip.label Tip labels.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/allTrees.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compute all trees topologies. — allTrees","text":"object class multiPhylo.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/allTrees.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Compute all trees topologies. — allTrees","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/allTrees.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Compute all trees topologies. — allTrees","text":"","code":"trees <- allTrees(5) old.par <- par(no.readonly = TRUE) par(mfrow = c(3,5)) for(i in 1:15)plot(trees[[i]]) par(old.par)"},{"path":"https://klausvigo.github.io/phangorn/reference/ancestral.pml.html","id":null,"dir":"Reference","previous_headings":"","what":"Ancestral character reconstruction. — ancestral.pml","title":"Ancestral character reconstruction. — ancestral.pml","text":"Marginal reconstruction ancestral character states.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/ancestral.pml.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Ancestral character reconstruction. — ancestral.pml","text":"","code":"ancestral.pml(object, type = \"marginal\", return = \"prob\", ...) # S3 method for ancestral as.phyDat(x, ...) # S3 method for ancestral as.data.frame(x, ...) ancestral.pars(tree, data, type = c(\"MPR\", \"ACCTRAN\", \"POSTORDER\"), cost = NULL, return = \"prob\", ...) pace(tree, data, type = c(\"MPR\", \"ACCTRAN\", \"POSTORDER\"), cost = NULL, return = \"prob\", ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/ancestral.pml.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Ancestral character reconstruction. — ancestral.pml","text":"object object class pml type method used assign characters internal nodes, see details. return return phyDat object matrix probabilities. ... arguments passed methods. x object class ancestral. tree tree, .e. object class pml data object class phyDat cost cost matrix transitions two states.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/ancestral.pml.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Ancestral character reconstruction. — ancestral.pml","text":"object class ancestral containing theestimated character states. return=\"phyDat\" object class \"phyDat\", containing ancestral states nodes. nucleotide data can contain ambiguous states. Apart fitch parsimony likely states returned.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/ancestral.pml.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Ancestral character reconstruction. — ancestral.pml","text":"argument \"type\" defines criterion assign internal nodes. ancestral.pml far \"ml\" (empirical) \"bayes\" ancestral.pars \"MPR\" \"ACCTRAN\" possible. parsimony reconstruction one keep mind often unique solution. functions use node labels present unique. Otherwise function ape::MakeNodeLabel used create . details see vignette(\"Ancestral\").","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/ancestral.pml.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Ancestral character reconstruction. — ancestral.pml","text":"Felsenstein, J. (2004). Inferring Phylogenies. Sinauer Associates, Sunderland. Swofford, D.L., Maddison, W.P. (1987) Reconstructing ancestral character states Wagner parsimony. Math. Biosci. 87: 199--229 Yang, Z. (2006). Computational Molecular evolution. Oxford University Press, Oxford.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/ancestral.pml.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Ancestral character reconstruction. — ancestral.pml","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/ancestral.pml.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Ancestral character reconstruction. — ancestral.pml","text":"","code":"example(NJ) #> #> NJ> data(Laurasiatherian) #> #> NJ> dm <- dist.ml(Laurasiatherian) #> #> NJ> tree <- NJ(dm) #> #> NJ> plot(tree) # generate node labels to ensure plotting will work tree <- makeNodeLabel(tree) fit <- pml(tree, Laurasiatherian) anc.ml <- ancestral.pml(fit, type = \"ml\") anc.p <- ancestral.pars(tree, Laurasiatherian) if (FALSE) { require(seqLogo) seqLogo( t(subset(anc.ml, 48, 1:20)[[1]]), ic.scale=FALSE) seqLogo( t(subset(anc.p, 48, 1:20)[[1]]), ic.scale=FALSE) } # plot the first site pattern plotAnc(tree, anc.ml, 1) # plot the third character plotAnc(tree, anc.ml, attr(anc.ml, \"index\")[3])"},{"path":"https://klausvigo.github.io/phangorn/reference/as.networx.html","id":null,"dir":"Reference","previous_headings":"","what":"Conversion among phylogenetic network objects — as.networx","title":"Conversion among phylogenetic network objects — as.networx","text":".networx convert splits objects networx object. important exists generic plot function plot phylogenetic network split graphs.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.networx.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Conversion among phylogenetic network objects — as.networx","text":"","code":"as.networx(x, ...) # S3 method for splits as.networx(x, planar = FALSE, coord = \"none\", ...) # S3 method for phylo as.networx(x, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/as.networx.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Conversion among phylogenetic network objects — as.networx","text":"x object class \"splits\" \"phylo\" ... arguments passed methods. planar logical whether produce planar graph cyclic splits (may excludes splits). coord add coordinates nodes, allows reproduce plot.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.networx.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Conversion among phylogenetic network objects — as.networx","text":"networx object hold information phylogenetic network extends phylo object. Therefore generic function phylo objects also work networx objects. argument planar = TRUE create planar split graph based cyclic ordering. objects can nicely plotted \"2D\".","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.networx.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Conversion among phylogenetic network objects — as.networx","text":"internal representation likely change.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.networx.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Conversion among phylogenetic network objects — as.networx","text":"Schliep, K., Potts, . J., Morrison, D. . Grimm, G. W. (2017), Intertwining phylogenetic trees networks. Methods Ecol Evol. 8, 1212--1220. doi:10.1111/2041-210X.12760","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/as.networx.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Conversion among phylogenetic network objects — as.networx","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.networx.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Conversion among phylogenetic network objects — as.networx","text":"","code":"set.seed(1) tree1 <- rtree(20, rooted=FALSE) sp <- as.splits(rNNI(tree1, n=10)) net <- as.networx(sp) plot(net) if (FALSE) { # also see example in consensusNet example(consensusNet) }"},{"path":"https://klausvigo.github.io/phangorn/reference/as.phyDat.html","id":null,"dir":"Reference","previous_headings":"","what":"Conversion among Sequence Formats — phyDat","title":"Conversion among Sequence Formats — phyDat","text":"functions transform several DNA formats phyDat format. allSitePattern generates alignment possible site patterns.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.phyDat.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Conversion among Sequence Formats — phyDat","text":"","code":"phyDat(data, type = \"DNA\", levels = NULL, return.index = TRUE, ...) as.phyDat(x, ...) # S3 method for factor as.phyDat(x, ...) # S3 method for DNAbin as.phyDat(x, ...) # S3 method for AAbin as.phyDat(x, ...) # S3 method for alignment as.phyDat(x, type = \"DNA\", ...) phyDat2alignment(x) # S3 method for MultipleAlignment as.phyDat(x, ...) # S3 method for AAStringSet as.phyDat(x, ...) # S3 method for DNAStringSet as.phyDat(x, ...) # S3 method for phyDat as.MultipleAlignment(x, ...) # S3 method for phyDat as.character(x, allLevels = TRUE, ...) # S3 method for phyDat as.data.frame(x, ...) # S3 method for phyDat as.DNAbin(x, ...) # S3 method for phyDat as.AAbin(x, ...) genlight2phyDat(x, ambiguity = NA) acgt2ry(obj)"},{"path":"https://klausvigo.github.io/phangorn/reference/as.phyDat.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Conversion among Sequence Formats — phyDat","text":"data object containing sequences. type Type sequences (\"DNA\", \"AA\", \"CODON\" \"USER\"). levels Level attributes. return.index TRUE returns index site patterns. ... arguments passed methods. x object containing sequences. allLevels return original data. ambiguity character ambiguous character contrast provided. obj object class phyDat","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.phyDat.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Conversion among Sequence Formats — phyDat","text":"functions return object class phyDat.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.phyDat.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Conversion among Sequence Formats — phyDat","text":"type \"USER\" vector give levels. example c(\"\", \"c\", \"g\", \"t\", \"-\") create data object can used phylogenetic analysis gaps fifth state. detailed example specifying \"USER\" defined data formats vignette \"phangorn-specials\". acgt2ry converts phyDat object nucleotides binary ry-coded dataset.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/as.phyDat.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Conversion among Sequence Formats — phyDat","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.phyDat.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Conversion among Sequence Formats — phyDat","text":"","code":"data(Laurasiatherian) class(Laurasiatherian) #> [1] \"phyDat\" Laurasiatherian #> 47 sequences with 3179 character and 1605 different site patterns. #> The states are a c g t # transform as characters LauraChar <- as.character(Laurasiatherian) # and back Laura <- phyDat(LauraChar) all.equal(Laurasiatherian, Laura) #> [1] TRUE LauraDNAbin <- as.DNAbin(Laurasiatherian) all.equal(Laurasiatherian, as.phyDat(LauraDNAbin)) #> [1] TRUE"},{"path":"https://klausvigo.github.io/phangorn/reference/as.splits.html","id":null,"dir":"Reference","previous_headings":"","what":"Splits representation of graphs and trees. — allSplits","title":"Splits representation of graphs and trees. — allSplits","text":".splits produces list splits bipartitions.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.splits.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Splits representation of graphs and trees. — allSplits","text":"","code":"allSplits(k, labels = NULL) allCircularSplits(k, labels = NULL) as.splits(x, ...) # S3 method for splits as.matrix(x, zero.print = 0L, one.print = 1L, ...) # S3 method for splits as.Matrix(x, ...) # S3 method for splits print(x, maxp = getOption(\"max.print\"), zero.print = \".\", one.print = \"|\", ...) # S3 method for splits c(..., recursive = FALSE) # S3 method for splits unique(x, incomparables = FALSE, unrooted = TRUE, ...) # S3 method for phylo as.splits(x, ...) # S3 method for multiPhylo as.splits(x, ...) # S3 method for networx as.splits(x, ...) # S3 method for splits as.prop.part(x, ...) # S3 method for splits as.bitsplits(x) # S3 method for bitsplits as.splits(x, ...) compatible(obj1, obj2 = NULL)"},{"path":"https://klausvigo.github.io/phangorn/reference/as.splits.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Splits representation of graphs and trees. — allSplits","text":"k number taxa. labels names taxa. x object class phylo multiPhylo. ... arguments passed methods. zero.print character printed zeros. one.print character printed ones. maxp integer, default options(max.print), influences many entries large matrices printed . recursive logical. recursive = TRUE, function recursively descends lists (pairlists) combining elements vector. incomparables compatibility far. unrooted todo. obj1, obj2 object class splits.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.splits.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Splits representation of graphs and trees. — allSplits","text":".splits returns object class splits, mainly list splits attributes. Often splits object contain attributes confidences bootstrap Bayesian support values weight storing edge weights. compatible return lower triangular matrix 1 indicates two splits incompatible.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.splits.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Splits representation of graphs and trees. — allSplits","text":"internal representation likely change.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/as.splits.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Splits representation of graphs and trees. — allSplits","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.splits.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Splits representation of graphs and trees. — allSplits","text":"","code":"(sp <- as.splits(rtree(5))) #> t4 t5 t1 t3 t2 #> [1,] | . . . . #> [2,] . | . . . #> [3,] . . | . . #> [4,] . . . | . #> [5,] . . . . | #> [6,] | | | | | #> [7,] | | . . . #> [8,] . . | | | #> [9,] . . . | | write.nexus.splits(sp) #> #NEXUS #> #> [Splits block for Spectronet or SplitsTree] #> [generated by phangorn 3.0.0.0 ] #> #> BEGIN TAXA; #> \tDIMENSIONS ntax=5; #> \tTAXLABELS t4 t5 t1 t3 t2 ; #> END; #> #> BEGIN SPLITS; #> \tDIMENSIONS ntax=5 nsplits=8; #> \tFORMAT labels=left weights=yes confidences=no intervals=no; #> \tMATRIX #> \t\t1\t0.478118034312502 \t1, #> \t\t2\t0.924074469832703 \t1 3 4 5, #> \t\t3\t0.976170694921166 \t1 2 4 5, #> \t\t4\t0.356726912083104 \t1 2 3 5, #> \t\t5\t0.431473690550774 \t1 2 3 4, #> \t\t6\t0.129372348077595 \t1 2, #> \t\t7\t0.59876096714288 \t1 2, #> \t\t8\t0.731792511884123 \t1 2 3, #> \t; #> END; spl <- allCircularSplits(5) plot(as.networx(spl))"},{"path":"https://klausvigo.github.io/phangorn/reference/bab.html","id":null,"dir":"Reference","previous_headings":"","what":"Branch and bound for finding all most parsimonious trees — bab","title":"Branch and bound for finding all most parsimonious trees — bab","text":"bab finds parsimonious trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/bab.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Branch and bound for finding all most parsimonious trees — bab","text":"","code":"bab(data, tree = NULL, trace = 0, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/bab.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Branch and bound for finding all most parsimonious trees — bab","text":"data object class phyDat. tree phylogenetic tree object class phylo, otherwise pratchet search performed. trace defines much information printed optimization. ... arguments passed methods","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/bab.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Branch and bound for finding all most parsimonious trees — bab","text":"bab returns parsimonious trees object class multiPhylo.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/bab.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Branch and bound for finding all most parsimonious trees — bab","text":"implementation slow depending data may take long time. worst case \\((2n-5)!! = 1 \\times 3 \\times 5 \\times \\ldots \\times (2n-5)\\) possible trees examined, n number species / tips. ten species already 2027025 tip-labelled unrooted trees. uses basic strategies find lower upper bounds similar penny phylip. bab uses basic heuristic approach MinMax Squeeze (Holland et al. 2005) improve lower bound. positive side bab like many implementations restricted binary nucleotide data.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/bab.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Branch and bound for finding all most parsimonious trees — bab","text":"Hendy, M.D. Penny D. (1982) Branch bound algorithms determine minimal evolutionary trees. Math. Biosc. 59, 277-290 Holland, B.R., Huber, K.T. Penny, D. Moulton, V. (2005) MinMax Squeeze: Guaranteeing Minimal Tree Population Data, Molecular Biology Evolution, 22, 235--242 White, W.T. Holland, B.R. (2011) Faster exact maximum parsimony search XMP. Bioinformatics, 27(10),1359--1367","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/bab.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Branch and bound for finding all most parsimonious trees — bab","text":"Klaus Schliep klaus.schliep@gmail.com based work Liam Revell","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/bab.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Branch and bound for finding all most parsimonious trees — bab","text":"","code":"data(yeast) dfactorial(11) #> [1] 10395 # choose only the first two genes gene12 <- yeast[, 1:3158] trees <- bab(gene12)"},{"path":"https://klausvigo.github.io/phangorn/reference/baseFreq.html","id":null,"dir":"Reference","previous_headings":"","what":"Summaries of alignments — baseFreq","title":"Summaries of alignments — baseFreq","text":"baseFreq computes frequencies (absolute relative) states sample sequences. glance computes useful information alignment.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/baseFreq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Summaries of alignments — baseFreq","text":"","code":"baseFreq(obj, freq = FALSE, all = FALSE, drop.unused.levels = FALSE) # S3 method for phyDat glance(x, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/baseFreq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Summaries of alignments — baseFreq","text":"obj, x object class phyDat freq logical, 'TRUE', frequencies counts returned otherwise proportions logical; = TRUE, counts bases, ambiguous codes, missing data, alignment gaps returned defined contrast. drop.unused.levels logical, drop unused levels ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/baseFreq.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Summaries of alignments — baseFreq","text":"baseFreq returns named vector glance one row data.frame.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/baseFreq.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Summaries of alignments — baseFreq","text":"Klaus Schliep","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/baseFreq.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Summaries of alignments — baseFreq","text":"","code":"data(Laurasiatherian) data(chloroplast) # base frequencies baseFreq(Laurasiatherian) #> a c g t #> 0.3321866 0.1990791 0.2040652 0.2646691 baseFreq(Laurasiatherian, all=TRUE) #> a c g t u m r w #> 0.3321866 0.1990791 0.2040652 0.2646691 0.0000000 0.0000000 0.0000000 0.0000000 #> s y k v h d b n #> 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 #> ? - #> 0.0000000 0.0000000 baseFreq(Laurasiatherian, freq=TRUE) #> a c g t #> 49633 29745 30490 39545 baseFreq(chloroplast) #> A R N D C Q #> 0.086702955 0.051669804 0.036230253 0.040435459 0.006650569 0.039678317 #> E G H I L K #> 0.046635835 0.090775149 0.029395514 0.073585987 0.101712777 0.040148973 #> M F P S T W #> 0.024852664 0.051260539 0.048109192 0.054176557 0.051618646 0.021905951 #> Y V #> 0.031636245 0.072818613 glance(Laurasiatherian) #> nseq nchar unique_site_pattern parsimony_informative_sites const_sites #> 1 47 3179 1605 1400 1354 glance(chloroplast) #> nseq nchar unique_site_pattern parsimony_informative_sites const_sites #> 1 19 5144 2775 2032 2190"},{"path":"https://klausvigo.github.io/phangorn/reference/bootstrap.pml.html","id":null,"dir":"Reference","previous_headings":"","what":"Bootstrap — bootstrap.pml","title":"Bootstrap — bootstrap.pml","text":"bootstrap.pml performs (non-parametric) bootstrap analysis bootstrap.phyDat produces list bootstrapped data sets. plotBS plots phylogenetic tree bootstrap values assigned (internal) edges.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/bootstrap.pml.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Bootstrap — bootstrap.pml","text":"","code":"bootstrap.pml(x, bs = 100, trees = TRUE, multicore = FALSE, mc.cores = NULL, tip.dates = NULL, ...) bootstrap.phyDat(x, FUN, bs = 100, multicore = FALSE, mc.cores = NULL, jumble = TRUE, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/bootstrap.pml.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Bootstrap — bootstrap.pml","text":"x object class pml phyDat. bs number bootstrap samples. trees return trees (default) whole pml objects. multicore logical, whether models estimated parallel. mc.cores number cores use bootstrap. supported UNIX-alike systems. tip.dates named vector sampling times associated tips/sequences. Leave empty estimating tip dated phylogenies. ... parameters used optim.pml plot.phylo. FUN function estimate trees. jumble logical, jumble order sequences.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/bootstrap.pml.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Bootstrap — bootstrap.pml","text":"bootstrap.pml returns object class multi.phylo list element object class pml. plotBS returns silently tree, .e. object class phylo bootstrap values node labels. argument BStrees optional supplied tree labels supplied node.label slot.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/bootstrap.pml.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Bootstrap — bootstrap.pml","text":"possible bootstrap performed parallel, help multicore package. Unfortunately multicore package work windows GUI interfaces (\"aqua\" mac). However speed nicely command line (\"X11\").","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/bootstrap.pml.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Bootstrap — bootstrap.pml","text":"Felsenstein J. (1985) Confidence limits phylogenies. approach using bootstrap. Evolution 39, 783--791 Lemoine, F., Entfellner, J. B. D., Wilkinson, E., Correia, D., Felipe, M. D., De Oliveira, T., & Gascuel, O. (2018). Renewing Felsenstein’s phylogenetic bootstrap era big data. Nature, 556(7702), 452--456. Penny D. Hendy M.D. (1985) Testing methods evolutionary tree construction. Cladistics 1, 266--278 Penny D. Hendy M.D. (1986) Estimating reliability evolutionary trees. Molecular Biology Evolution 3, 403--417","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/bootstrap.pml.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Bootstrap — bootstrap.pml","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/bootstrap.pml.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Bootstrap — bootstrap.pml","text":"","code":"if (FALSE) { data(Laurasiatherian) dm <- dist.hamming(Laurasiatherian) tree <- NJ(dm) # NJ set.seed(123) NJtrees <- bootstrap.phyDat(Laurasiatherian, FUN=function(x)NJ(dist.hamming(x)), bs=100) treeNJ <- plotBS(tree, NJtrees, \"phylogram\") # Maximum likelihood fit <- pml(tree, Laurasiatherian) fit <- optim.pml(fit, rearrangement=\"NNI\") set.seed(123) bs <- bootstrap.pml(fit, bs=100, optNni=TRUE) treeBS <- plotBS(fit$tree,bs) # Maximum parsimony treeMP <- pratchet(Laurasiatherian) treeMP <- acctran(treeMP, Laurasiatherian) set.seed(123) BStrees <- bootstrap.phyDat(Laurasiatherian, pratchet, bs = 100) treeMP <- plotBS(treeMP, BStrees, \"phylogram\") add.scale.bar() # export tree with bootstrap values as node labels # write.tree(treeBS) }"},{"path":"https://klausvigo.github.io/phangorn/reference/chloroplast.html","id":null,"dir":"Reference","previous_headings":"","what":"Chloroplast alignment — chloroplast","title":"Chloroplast alignment — chloroplast","text":"Amino acid alignment 15 genes 19 different chloroplast.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/chloroplast.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Chloroplast alignment — chloroplast","text":"","code":"data(chloroplast) chloroplast #> 19 sequences with 5144 character and 2775 different site patterns. #> The states are A R N D C Q E G H I L K M F P S T W Y V"},{"path":"https://klausvigo.github.io/phangorn/reference/cladePar.html","id":null,"dir":"Reference","previous_headings":"","what":"Utility function to plot.phylo — cladePar","title":"Utility function to plot.phylo — cladePar","text":"cladePar can help coloring (choosing edge width/type) clades.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/cladePar.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Utility function to plot.phylo — cladePar","text":"","code":"cladePar(tree, node, edge.color = \"red\", tip.color = edge.color, edge.width = 1, edge.lty = \"solid\", x = NULL, plot = FALSE, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/cladePar.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Utility function to plot.phylo — cladePar","text":"tree object class phylo. node node common ancestor clade. edge.color see plot.phylo. tip.color see plot.phylo. edge.width see plot.phylo. edge.lty see plot.phylo. x result previous call cladeInfo. plot logical, TRUE tree plotted. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/cladePar.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Utility function to plot.phylo — cladePar","text":"list containing information edges tips.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/cladePar.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Utility function to plot.phylo — cladePar","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/cladePar.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Utility function to plot.phylo — cladePar","text":"","code":"tree <- rtree(10) plot(tree) nodelabels() x <- cladePar(tree, 12) cladePar(tree, 18, \"blue\", \"blue\", x=x, plot=TRUE)"},{"path":"https://klausvigo.github.io/phangorn/reference/coalSpeciesTree.html","id":null,"dir":"Reference","previous_headings":"","what":"Species Tree — coalSpeciesTree","title":"Species Tree — coalSpeciesTree","text":"coalSpeciesTree estimates species trees can handle multiple individuals per species.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/coalSpeciesTree.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Species Tree — coalSpeciesTree","text":"","code":"coalSpeciesTree(tree, X = NULL, sTree = NULL)"},{"path":"https://klausvigo.github.io/phangorn/reference/coalSpeciesTree.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Species Tree — coalSpeciesTree","text":"tree object class multiPhylo X phyDat object define individual belongs species. sTree species tree fixes topology.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/coalSpeciesTree.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Species Tree — coalSpeciesTree","text":"function returns object class phylo.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/coalSpeciesTree.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Species Tree — coalSpeciesTree","text":"coalSpeciesTree estimates single linkage tree suggested Liu et al. (2010) element wise minima cophenetic matrices gene trees. extends speciesTree ape allows several individuals per gene tree.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/coalSpeciesTree.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Species Tree — coalSpeciesTree","text":"Liu, L., Yu, L. Pearl, D. K. (2010) Maximum tree: consistent estimator species tree. Journal Mathematical Biology, 60, 95--106.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/coalSpeciesTree.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Species Tree — coalSpeciesTree","text":"Klaus Schliep klaus.schliep@gmail.com Emmanuel Paradies","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/codonTest.html","id":null,"dir":"Reference","previous_headings":"","what":"codonTest — codonTest","title":"codonTest — codonTest","text":"Models detecting positive selection","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/codonTest.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"codonTest — codonTest","text":"","code":"codonTest(tree, object, model = c(\"M0\", \"M1a\", \"M2a\"), frequencies = \"F3x4\", opt_freq = FALSE, codonstart = 1, control = pml.control(maxit = 20), ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/codonTest.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"codonTest — codonTest","text":"tree phylogenetic tree. object object class phyDat. model vector containing substitution models compare \"\" test available models. frequencies character string vector defining compute codon frequencies opt_freq optimize frequencies (far ignored) codonstart integer giving start translation. 1, 2, 3, larger values accepted effect start translation within sequence. control list parameters controlling fitting process. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/codonTest.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"codonTest — codonTest","text":"list element called summary containing data.frame log-likelihood, number estimated parameters, etc. tested models. object called posterior contains posterior probability rate class sites estimates defined models.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/codonTest.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"codonTest — codonTest","text":"codonTest allows test positive selection similar programs like PAML (Yang ) HyPhy (Kosakovsky Pond et al. 2005). several options deriving codon frequencies. Frequencies can \"equal\" (1/61), derived nucleotide frequencies \"F1x4\" \"F3x4\" \"empirical\" codon frequencies. frequencies taken using empirical frequencies estimated via maximum likelihood. far M0 model (Goldman Yang 2002), M1a M2a implemented. M0 model always computed optional. convergence may slow sometimes fails.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/codonTest.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"codonTest — codonTest","text":"Ziheng Yang (2014). Molecular Evolution: Statistical Approach. Oxford University Press, Oxford Sergei L. Kosakovsky Pond, Simon D. W. Frost, Spencer V. Muse (2005) HyPhy: hypothesis testing using phylogenies, Bioinformatics, 21(5): 676--679, doi:10.1093/bioinformatics/bti079 Nielsen, R., Z. Yang. (1998) Likelihood models detecting positively selected amino acid sites applications HIV-1 envelope gene. Genetics, 148: 929--936","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/codonTest.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"codonTest — codonTest","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/codonTest.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"codonTest — codonTest","text":"","code":"if (FALSE) { # load woodmouse data from ape data(woodmouse) dat_codon <- dna2codon(as.phyDat(woodmouse)) tree <- NJ(dist.ml(dat_codon)) # optimize the model the old way fit <- pml(tree, dat_codon, bf=\"F3x4\") M0 <- optim.pml(fit, model=\"codon1\") # Now using the codonTest function fit_codon <- codonTest(tree, dat_codon) fit_codon plot(fit_codon, \"M1a\") }"},{"path":"https://klausvigo.github.io/phangorn/reference/consensusNet.html","id":null,"dir":"Reference","previous_headings":"","what":"Computes a consensusNetwork from a list of trees Computes a networx\nobject from a collection of splits. — consensusNet","title":"Computes a consensusNetwork from a list of trees Computes a networx\nobject from a collection of splits. — consensusNet","text":"Computes consensusNetwork, .e. object class networx list trees, .e. class class multiPhylo. Computes networx object collection splits.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/consensusNet.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Computes a consensusNetwork from a list of trees Computes a networx\nobject from a collection of splits. — consensusNet","text":"","code":"consensusNet(obj, prob = 0.3, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/consensusNet.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Computes a consensusNetwork from a list of trees Computes a networx\nobject from a collection of splits. — consensusNet","text":"obj object class multiPhylo. prob proportion split present trees represented network. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/consensusNet.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Computes a consensusNetwork from a list of trees Computes a networx\nobject from a collection of splits. — consensusNet","text":"consensusNet returns object class networx. just intermediate plot phylogenetic networks igraph.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/consensusNet.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Computes a consensusNetwork from a list of trees Computes a networx\nobject from a collection of splits. — consensusNet","text":"Holland B.R., Huber K.T., Moulton V., Lockhart P.J. (2004) Using consensus networks visualize contradictory evidence species phylogeny. Molecular Biology Evolution, 21, 1459--61","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/consensusNet.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Computes a consensusNetwork from a list of trees Computes a networx\nobject from a collection of splits. — consensusNet","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/consensusNet.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Computes a consensusNetwork from a list of trees Computes a networx\nobject from a collection of splits. — consensusNet","text":"","code":"data(Laurasiatherian) set.seed(1) bs <- bootstrap.phyDat(Laurasiatherian, FUN = function(x)nj(dist.hamming(x)), bs=50) cnet <- consensusNet(bs, .3) plot(cnet, angle=-60, direction=\"axial\") if (FALSE) { library(rgl) open3d() plot(cnet, type = \"3D\", show.tip.label=FALSE, show.nodes=TRUE) plot(cnet, type = \"equal angle\", show.edge.label=TRUE) tmpfile <- normalizePath(system.file( \"extdata/trees/RAxML_bootstrap.woodmouse\", package=\"phangorn\")) trees <- read.tree(tmpfile) cnet_woodmouse <- consensusNet(trees, .3) plot(cnet_woodmouse, type = \"equal angle\", show.edge.label=TRUE) }"},{"path":"https://klausvigo.github.io/phangorn/reference/cophenetic.networx.html","id":null,"dir":"Reference","previous_headings":"","what":"Pairwise Distances from a Phylogenetic Network — cophenetic.networx","title":"Pairwise Distances from a Phylogenetic Network — cophenetic.networx","text":"cophenetic.networx computes pairwise distances pairs tips phylogenetic network using branch lengths.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/cophenetic.networx.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Pairwise Distances from a Phylogenetic Network — cophenetic.networx","text":"","code":"# S3 method for networx cophenetic(x)"},{"path":"https://klausvigo.github.io/phangorn/reference/cophenetic.networx.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Pairwise Distances from a Phylogenetic Network — cophenetic.networx","text":"x object class networx.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/cophenetic.networx.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Pairwise Distances from a Phylogenetic Network — cophenetic.networx","text":"object class dist, names set according tip labels (given element tip.label argument x).","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/cophenetic.networx.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Pairwise Distances from a Phylogenetic Network — cophenetic.networx","text":"Klaus Schliep","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/delta.score.html","id":null,"dir":"Reference","previous_headings":"","what":"Computes the \\(\\delta\\) score — delta.score","title":"Computes the \\(\\delta\\) score — delta.score","text":"Computes treelikeness","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/delta.score.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Computes the \\(\\delta\\) score — delta.score","text":"","code":"delta.score(x, arg = \"mean\", ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/delta.score.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Computes the \\(\\delta\\) score — delta.score","text":"x object class phyDat arg Specifies return value, one \"\", \"mean\" \"sd\" ... arguments passed dist.hamming","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/delta.score.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Computes the \\(\\delta\\) score — delta.score","text":"vector containing \\(\\delta\\) scores.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/delta.score.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Computes the \\(\\delta\\) score — delta.score","text":"BR Holland, KT Huber, Dress, V Moulton (2002) \\(\\delta\\) Plots: tool analyzing phylogenetic distance data Russell D. Gray, David Bryant, Simon J. Greenhill (2010) shape fabric human history Molecular Biology Evolution, 19(12) 2051--2059 Russell D. Gray, David Bryant, Simon J. Greenhill (2010) shape fabric human history Phil. Trans. R. Soc. B, 365 3923--3933; DOI: 10.1098/rstb.2010.0162","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/delta.score.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Computes the \\(\\delta\\) score — delta.score","text":"Alastair Potts Klaus Schliep","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/delta.score.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Computes the \\(\\delta\\) score — delta.score","text":"","code":"data(yeast) hist(delta.score(yeast, \"all\"))"},{"path":"https://klausvigo.github.io/phangorn/reference/densiTree.html","id":null,"dir":"Reference","previous_headings":"","what":"Plots a densiTree. — densiTree","title":"Plots a densiTree. — densiTree","text":"R function plot trees similar produced DensiTree.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/densiTree.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plots a densiTree. — densiTree","text":"","code":"densiTree(x, type = \"cladogram\", alpha = 1/length(x), consensus = NULL, direction = \"rightwards\", optim = FALSE, scaleX = FALSE, col = 1, width = 1, lty = 1, cex = 0.8, font = 3, tip.color = 1, adj = 0, srt = 0, underscore = FALSE, label.offset = 0, scale.bar = TRUE, jitter = list(amount = 0, random = TRUE), tip.dates = NULL, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/densiTree.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plots a densiTree. — densiTree","text":"x object class multiPhylo. type character string specifying type phylogeny, far \"cladogram\" (default) \"phylogram\" supported. alpha parameter semi-transparent colors. consensus tree character vector used define order tip labels. direction character string specifying direction tree. Four values possible: \"rightwards\" (default), \"leftwards\", \"upwards\", \"downwards\". optim yet used. scaleX scale trees identical heights. col scalar vector giving colours used draw edges plotted phylogeny. taken order input trees x. fewer colours given number trees, colours recycled. width edge width. lty line type. cex numeric value giving factor scaling tip labels. font integer specifying type font labels: 1 (plain text), 2 (bold), 3 (italic, default), 4 (bold italic). tip.color color tip labels. adj numeric specifying justification text strings labels: 0 (left-justification), 0.5 (centering), 1 (right-justification). srt numeric giving much labels rotated degrees. underscore logical specifying whether underscores tip labels written spaces (default) left (TRUE). label.offset numeric giving space nodes tips phylogeny corresponding labels. scale.bar logical specifying whether add scale.bar plot. jitter allows shift trees. list two arguments: amount jitter random equally spaced (see details ) tip.dates named vector sampling times associated tips. ... arguments passed plot.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/densiTree.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Plots a densiTree. — densiTree","text":"consensus tree provided densiTree computes consensus tree, input trees different labels mrp.supertree backbone. avoid many unnecessary crossings edges. Trees rooted, wise output may visually pleasing. jitter shifts trees bit exactly top . amount == 0, ignored. random=TRUE result permutation runif(n, -amount, amount), otherwise seq(-amount, amount, length=n), n <- length(x).","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/densiTree.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Plots a densiTree. — densiTree","text":"densiTree inspired great DensiTree program Remco Bouckaert. Remco R. Bouckaert (2010) DensiTree: making sense sets phylogenetic trees Bioinformatics, 26 (10), 1372-1373.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/densiTree.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plots a densiTree. — densiTree","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/densiTree.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plots a densiTree. — densiTree","text":"","code":"data(Laurasiatherian) set.seed(1) bs <- bootstrap.phyDat(Laurasiatherian, FUN = function(x) upgma(dist.hamming(x)), bs=25) # cladogram nice to show topological differences densiTree(bs, type=\"cladogram\", col=\"blue\") densiTree(bs, type=\"phylogram\", col=\"green\", direction=\"downwards\", width=2) # plot five trees slightly shifted, no transparent color densiTree(bs[1:5], type=\"phylogram\", col=1:5, width=2, jitter= list(amount=.3, random=FALSE), alpha=1) if (FALSE) { # phylograms are nice to show different age estimates require(PhyloOrchard) data(BinindaEmondsEtAl2007) BinindaEmondsEtAl2007 <- .compressTipLabel(BinindaEmondsEtAl2007) densiTree(BinindaEmondsEtAl2007, type=\"phylogram\", col=\"red\") }"},{"path":"https://klausvigo.github.io/phangorn/reference/designTree.html","id":null,"dir":"Reference","previous_headings":"","what":"Compute a design matrix or non-negative LS — designTree","title":"Compute a design matrix or non-negative LS — designTree","text":"nnls.tree estimates branch length using non-negative least squares given tree distance matrix. designTree designSplits compute design matrices estimation edge length (phylogenetic) trees using linear models. larger trees sparse design matrix can save lot memory. computes contrast matrix method \"rooted\".","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/designTree.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compute a design matrix or non-negative LS — designTree","text":"","code":"designTree(tree, method = \"unrooted\", sparse = FALSE, tip.dates = NULL, calibration = NULL, ...) nnls.tree(dm, tree, method = c(\"unrooted\", \"ultrametric\", \"tipdated\"), rooted = NULL, trace = 1, weight = NULL, balanced = FALSE, tip.dates = NULL) nnls.phylo(x, dm, method = \"unrooted\", trace = 0, ...) nnls.splits(x, dm, trace = 0, eps = 1e-08) nnls.networx(x, dm, eps = 1e-08) designSplits(x, splits = \"all\", ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/designTree.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compute a design matrix or non-negative LS — designTree","text":"tree object class phylo method compute \"unrooted\", \"ultrametric\" \"tipdated\" tree. sparse return sparse design matrix. tip.dates named vector sampling times associated tips tree. calibration named vector calibration times associated nodes tree. ... arguments, passed methods. dm distance matrix. rooted compute \"ultrametric\" \"unrooted\" tree (better use method). trace defines much information printed optimization. weight vector weights used fitting process. Weighted least squares used weights w, .e., sum(w * e^2) minimized. balanced use weights balanced fastME x number taxa. eps minimum edge length (default s 1e-8). splits one \"\", \"star\".","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/designTree.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compute a design matrix or non-negative LS — designTree","text":"nnls.tree return tree, .e. object class phylo. designTree designSplits matrix, possibly sparse.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/designTree.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Compute a design matrix or non-negative LS — designTree","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/designTree.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Compute a design matrix or non-negative LS — designTree","text":"","code":"example(NJ) #> #> NJ> data(Laurasiatherian) #> #> NJ> dm <- dist.ml(Laurasiatherian) #> #> NJ> tree <- NJ(dm) #> #> NJ> plot(tree) dm <- as.matrix(dm) y <- dm[lower.tri(dm)] X <- designTree(tree) lm(y~X-1) #> #> Call: #> lm(formula = y ~ X - 1) #> #> Coefficients: #> X89<->36 X89<->37 X77<->35 X77<->38 X73<->33 X73<->34 #> 0.0499157 0.0491439 0.0724626 0.0755455 0.0712616 0.0725432 #> X65<->73 X65<->77 X51<->65 X51<->89 X75<->10 X75<->11 #> 0.0034694 0.0099328 0.0029426 0.0432799 0.0885305 0.0820387 #> X62<->12 X62<->13 X86<->15 X86<->16 X67<->14 X67<->17 #> 0.0461128 0.0479378 0.0134025 0.0151296 0.0467324 0.0580930 #> X63<->67 X63<->86 X59<->63 X59<->18 X88<->45 X88<->47 #> 0.0035646 0.0360953 0.0032091 0.0775894 0.0034977 0.0063178 #> X80<->88 X80<->46 X74<->80 X74<->44 X72<->74 X72<->43 #> 0.0231875 0.0381300 0.0154870 0.0421651 0.0015801 0.0392256 #> X85<->19 X85<->20 X79<->21 X79<->22 X71<->79 X71<->85 #> 0.0088520 0.0092959 0.0229321 0.0224528 0.0145614 0.0299323 #> X81<->25 X81<->26 X87<->28 X87<->29 X82<->87 X82<->30 #> 0.0274720 0.0286839 0.0148471 0.0117270 0.0181692 0.0364881 #> X70<->82 X70<->27 X68<->70 X68<->24 X66<->68 X66<->81 #> 0.0219311 0.0563100 0.0033377 0.0569549 0.0008004 0.0221615 #> X61<->66 X61<->23 X60<->61 X60<->71 X58<->60 X58<->72 #> 0.0021831 0.0502453 0.0042762 0.0102058 0.0020978 0.0117101 #> X57<->58 X57<->59 X56<->57 X56<->62 X53<->56 X53<->75 #> 0.0013537 0.0043899 0.0011632 0.0063020 0.0070446 0.0117666 #> X84<->39 X84<->40 X78<->84 X78<->42 X52<->78 X52<->41 #> 0.0696111 0.0583581 0.0144780 0.0701359 0.0225117 0.0792075 #> X50<->52 X50<->53 X49<->50 X49<->51 X92<->2 X92<->3 #> 0.0008563 0.0018880 0.0036910 0.0033483 0.0324915 0.0274029 #> X91<->92 X91<->4 X90<->91 X90<->5 X83<->90 X83<->1 #> 0.0090135 0.0362511 0.0024394 0.0505988 0.0425011 0.1170301 #> X69<->83 X69<->9 X64<->7 X64<->8 X55<->64 X55<->6 #> 0.0289009 0.0967237 0.1091965 0.0693124 0.0029756 0.0874519 #> X54<->55 X54<->69 X76<->31 X76<->32 X48<->76 X48<->54 #> 0.0027613 0.0065884 0.0534621 0.0681912 0.0151764 0.0010911 #> X48<->49 #> -0.0018629 #> # avoids negative edge weights tree2 <- nnls.tree(dm, tree)"},{"path":"https://klausvigo.github.io/phangorn/reference/dfactorial.html","id":null,"dir":"Reference","previous_headings":"","what":"Arithmetic Operators — ldfactorial","title":"Arithmetic Operators — ldfactorial","text":"double factorial function","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dfactorial.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Arithmetic Operators — ldfactorial","text":"","code":"ldfactorial(x) dfactorial(x)"},{"path":"https://klausvigo.github.io/phangorn/reference/dfactorial.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Arithmetic Operators — ldfactorial","text":"x numeric scalar vector","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dfactorial.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Arithmetic Operators — ldfactorial","text":"dfactorial(x) returns double factorial, \\(x\\!\\! = 1 * 3 * 5 * \\ldots * x \\) ldfactorial(x) natural logarithm .","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/dfactorial.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Arithmetic Operators — ldfactorial","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dfactorial.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Arithmetic Operators — ldfactorial","text":"","code":"dfactorial(1:10) #> [1] 1.000000 1.595769 3.000000 6.383076 15.000000 38.298459 #> [7] 105.000000 306.387671 945.000000 3063.876713"},{"path":"https://klausvigo.github.io/phangorn/reference/discrete.gamma.html","id":null,"dir":"Reference","previous_headings":"","what":"Discrete Gamma and Beta distribution — discrete.gamma","title":"Discrete Gamma and Beta distribution — discrete.gamma","text":"discrete.gamma internally used likelihood computations pml optim.pml. useful understand works simulation studies cases .","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/discrete.gamma.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Discrete Gamma and Beta distribution — discrete.gamma","text":"","code":"discrete.gamma(alpha, k) discrete.beta(shape1, shape2, k) plot_gamma_plus_inv(shape = 1, inv = 0, k = 4, discrete = TRUE, cdf = TRUE, append = FALSE, xlab = \"x\", ylab = ifelse(cdf, \"F(x)\", \"f(x)\"), xlim = NULL, verticals = FALSE, edge.length = NULL, site.rate = \"gamma\", ...) plotRates(obj, cdf.color = \"blue\", main = \"cdf\", ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/discrete.gamma.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Discrete Gamma and Beta distribution — discrete.gamma","text":"alpha Shape parameter gamma distribution. k Number intervals discrete gamma distribution. shape1, shape2 non-negative parameters Beta distribution. shape Shape parameter gamma distribution. inv Proportion invariable sites. discrete logical whether plot discrete (default) continuous pdf cdf. cdf logical whether plot cumulative distribution function density / probability function. append logical; TRUE add existing plot. xlab label x axis, defaults description x. ylab label y axis, defaults description y. xlim x limits plot. verticals logical; TRUE, draw vertical lines steps. edge.length Total edge length (sum edges tree). site.rate Indicates type gamma distribution use. Options \"gamma\" (Yang 1994) \"gamma_quadrature\" using Laguerre quadrature approach Felsenstein (2001) ... arguments passed methods. obj object class pml cdf.color color cdf. main main title plot.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/discrete.gamma.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Discrete Gamma and Beta distribution — discrete.gamma","text":"discrete.gamma returns matrix.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/discrete.gamma.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Discrete Gamma and Beta distribution — discrete.gamma","text":"functions exported used different packages far package coalescentMCMC, intended end user. functions call C code far less forgiving import expect pml.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/discrete.gamma.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Discrete Gamma and Beta distribution — discrete.gamma","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/discrete.gamma.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Discrete Gamma and Beta distribution — discrete.gamma","text":"","code":"discrete.gamma(1, 4) #> [1] 0.1369538 0.4767519 1.0000000 2.3862944 old.par <- par(no.readonly = TRUE) par(mfrow = c(2,1)) plot_gamma_plus_inv(shape=2, discrete = FALSE, cdf=FALSE) plot_gamma_plus_inv(shape=2, append = TRUE, cdf=FALSE) plot_gamma_plus_inv(shape=2, discrete = FALSE) plot_gamma_plus_inv(shape=2, append = TRUE) par(old.par)"},{"path":"https://klausvigo.github.io/phangorn/reference/dist.hamming.html","id":null,"dir":"Reference","previous_headings":"","what":"Pairwise Distances from Sequences — dist.hamming","title":"Pairwise Distances from Sequences — dist.hamming","text":"dist.hamming, dist.ml dist.logDet compute pairwise distances object class phyDat. dist.ml uses DNA / AA sequences compute distances different substitution models.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dist.hamming.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Pairwise Distances from Sequences — dist.hamming","text":"","code":"dist.hamming(x, ratio = TRUE, exclude = \"none\") dist.ml(x, model = \"JC69\", exclude = \"none\", bf = NULL, Q = NULL, k = 1L, shape = 1, ...) dist.logDet(x)"},{"path":"https://klausvigo.github.io/phangorn/reference/dist.hamming.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Pairwise Distances from Sequences — dist.hamming","text":"x object class phyDat ratio Compute uncorrected ('p') distance character difference. exclude One \"none\", \"\", \"pairwise\" indicating whether delete sites missing data (ambiguous states). default handle missing data pml. model One \"JC69\", \"F81\" one 17 amino acid models see details. bf vector base frequencies. Q vector containing lower triangular part rate matrix. k Number intervals discrete gamma distribution. shape Shape parameter gamma distribution. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dist.hamming.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Pairwise Distances from Sequences — dist.hamming","text":"object class dist","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dist.hamming.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Pairwise Distances from Sequences — dist.hamming","text":"far 17 amino acid models supported (\"WAG\", \"JTT\", \"LG\", \"Dayhoff\", \"cpREV\", \"mtmam\", \"mtArt\", \"MtZoa\", \"mtREV24\", \"VT\",\"RtREV\", \"HIVw\", \"HIVb\", \"FLU\", \"Blosum62\", \"Dayhoff_DCMut\" \"JTT_DCMut\") additional rate matrices frequencies can supplied. \"F81\" model uses empirical base frequencies, \"JC69\" equal base frequencies. even case data nucleotides.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dist.hamming.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Pairwise Distances from Sequences — dist.hamming","text":"Lockhart, P. J., Steel, M. ., Hendy, M. D. Penny, D. (1994) Recovering evolutionary trees realistic model sequence evolution. Molecular Biology Evolution, 11, 605--602. Jukes TH Cantor CR (1969). Evolution Protein Molecules. New York: Academic Press. 21--132. McGuire, G., Prentice, M. J. Wright, F. (1999). Improved error bounds genetic distances DNA sequences. Biometrics, 55, 1064–1070.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/dist.hamming.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Pairwise Distances from Sequences — dist.hamming","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dist.hamming.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Pairwise Distances from Sequences — dist.hamming","text":"","code":"data(Laurasiatherian) dm1 <- dist.hamming(Laurasiatherian) tree1 <- NJ(dm1) dm2 <- dist.logDet(Laurasiatherian) tree2 <- NJ(dm2) treedist(tree1,tree2) #> symmetric.difference branch.score.difference path.difference #> 4.00000000 0.05705091 30.95157508 #> quadratic.path.difference #> 0.80097967 # JC model dm3 <- dist.ml(Laurasiatherian) tree3 <- NJ(dm3) treedist(tree1,tree3) #> symmetric.difference branch.score.difference path.difference #> 6.0000000 0.0412520 30.3644529 #> quadratic.path.difference #> 0.6106899 # F81 + Gamma dm4 <- dist.ml(Laurasiatherian, model=\"F81\", k=4, shape=.4) tree4 <- NJ(dm4) treedist(tree1,tree4) #> symmetric.difference branch.score.difference path.difference #> 12.0000000 0.1356107 40.7676342 #> quadratic.path.difference #> 2.0709714 treedist(tree3,tree4) #> symmetric.difference branch.score.difference path.difference #> 8.00000000 0.09494752 39.52214569 #> quadratic.path.difference #> 1.46345381"},{"path":"https://klausvigo.github.io/phangorn/reference/dist.p.html","id":null,"dir":"Reference","previous_headings":"","what":"Pairwise Polymorphism P-Distances from DNA Sequences — dist.p","title":"Pairwise Polymorphism P-Distances from DNA Sequences — dist.p","text":"function computes matrix pairwise uncorrected polymorphism p-distances. Polymorphism p-distances include intra-individual site polymorphisms (2ISPs; e.g. \"R\") calculating genetic distances.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dist.p.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Pairwise Polymorphism P-Distances from DNA Sequences — dist.p","text":"","code":"dist.p(x, cost = \"polymorphism\", ignore.indels = TRUE)"},{"path":"https://klausvigo.github.io/phangorn/reference/dist.p.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Pairwise Polymorphism P-Distances from DNA Sequences — dist.p","text":"x matrix containing DNA sequences; must class \"phyDat\" (use .phyDat convert DNAbin objects). cost cost matrix \"polymorphism\" predefined one. ignore.indels logical indicating whether gaps treated fifth state . Warning, gap site treated characters, indel spans number base positions treated multiple character states.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dist.p.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Pairwise Polymorphism P-Distances from DNA Sequences — dist.p","text":"object class dist.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dist.p.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Pairwise Polymorphism P-Distances from DNA Sequences — dist.p","text":"polymorphism p-distances (Potts et al. 2014) developed analyse intra-individual variant polymorphism. example, widely used ribosomal internal transcribed spacer () region (e.g. Alvarez Wendel, 2003) consists 100's 1000's units within array across potentially multiple nucleolus organizing regions (Bailey et al., 2003; Goeker Grimm, 2008). can give rise intra-individual site polymorphisms (2ISPs) can detected direct-PCR sequencing cloning . Clone consensus sequences (see Goeker Grimm, 2008) can analysed function.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dist.p.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Pairwise Polymorphism P-Distances from DNA Sequences — dist.p","text":"Alvarez, ., J. F. Wendel. (2003) Ribosomal sequences plant phylogenetic inference. Molecular Phylogenetics Evolution, 29, 417--434. Bailey, C. D., T. G. Carr, S. . Harris, C. E. Hughes. (2003) Characterization angiosperm nrDNA polymorphism, paralogy, pseudogenes. Molecular Phylogenetics Evolution 29, 435--455. Goeker, M., G. Grimm. (2008) General functions transform associate data host data, use phylogenetic inference sequences intra-individual variability. BMC Evolutionary Biology, 8:86. Potts, .J., T.. Hedderson, G.W. Grimm. (2014) Constructing phylogenies presence intra-individual site polymorphisms (2ISPs) focus nuclear ribosomal cistron. Systematic Biology, 63, 1--16","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/dist.p.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Pairwise Polymorphism P-Distances from DNA Sequences — dist.p","text":"Klaus Schliep Alastair Potts","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dist.p.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Pairwise Polymorphism P-Distances from DNA Sequences — dist.p","text":"","code":"data(Laurasiatherian) laura <- as.DNAbin(Laurasiatherian) dm <- dist.p(Laurasiatherian, \"polymorphism\") ######################################################## # Dealing with indel 2ISPs # These can be coded using an \"x\" in the alignment. Note # that as.character usage in the read.dna() function. ######################################################### cat(\"3 5\", \"No305 ATRA-\", \"No304 ATAYX\", \"No306 ATAGA\", file = \"exdna.txt\", sep = \"\\n\") (ex.dna <- read.dna(\"exdna.txt\", format = \"sequential\", as.character=TRUE)) #> [,1] [,2] [,3] [,4] [,5] #> No305 \"a\" \"t\" \"r\" \"a\" \"-\" #> No304 \"a\" \"t\" \"a\" \"y\" \"x\" #> No306 \"a\" \"t\" \"a\" \"g\" \"a\" dat <- phyDat(ex.dna, \"USER\", levels=unique(as.vector(ex.dna))) dist.p(dat) #> No305 No304 #> No304 4 #> No306 3 4 unlink(\"exdna.txt\")"},{"path":"https://klausvigo.github.io/phangorn/reference/distanceHadamard.html","id":null,"dir":"Reference","previous_headings":"","what":"Distance Hadamard — distanceHadamard","title":"Distance Hadamard — distanceHadamard","text":"Distance Hadamard produces spectra splits distance matrix.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/distanceHadamard.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Distance Hadamard — distanceHadamard","text":"","code":"distanceHadamard(dm, eps = 0.001)"},{"path":"https://klausvigo.github.io/phangorn/reference/distanceHadamard.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Distance Hadamard — distanceHadamard","text":"dm distance matrix. eps Threshold value splits.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/distanceHadamard.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Distance Hadamard — distanceHadamard","text":"distanceHadamard returns matrix. first column contains distance spectra, second one edge-spectra. eps positive object splits greater eps returned.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/distanceHadamard.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Distance Hadamard — distanceHadamard","text":"Hendy, M. D. Penny, D. (1993). Spectral Analysis Phylogenetic Data. Journal Classification, 10, 5-24.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/distanceHadamard.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Distance Hadamard — distanceHadamard","text":"Klaus Schliep klaus.schliep@gmail.com, Tim White","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/distanceHadamard.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Distance Hadamard — distanceHadamard","text":"","code":"data(yeast) dm <- dist.hamming(yeast) dm <- as.matrix(dm) fit <- distanceHadamard(dm) lento(fit) plot(as.networx(fit))"},{"path":"https://klausvigo.github.io/phangorn/reference/dna2codon.html","id":null,"dir":"Reference","previous_headings":"","what":"Translate nucleic acid sequences into codons — dna2codon","title":"Translate nucleic acid sequences into codons — dna2codon","text":"function transforms dna2codon DNA sequences codon sequences, codon2dna transform way.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dna2codon.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Translate nucleic acid sequences into codons — dna2codon","text":"","code":"dna2codon(x, codonstart = 1, code = 1, ambiguity = \"---\", ...) codon2dna(x)"},{"path":"https://klausvigo.github.io/phangorn/reference/dna2codon.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Translate nucleic acid sequences into codons — dna2codon","text":"x object containing sequences. codonstart integer giving start translation. 1, 2, 3, larger values accepted effect start translation within sequence. code ncbi genetic code number translation (see details). default standard genetic code used. ambiguity character ambiguous character contrast provided. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dna2codon.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Translate nucleic acid sequences into codons — dna2codon","text":"functions return object class phyDat.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dna2codon.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Translate nucleic acid sequences into codons — dna2codon","text":"following genetic codes described . number preceding corresponds code argument. Alignment gaps ambiguities currently ignored sites containing deleted.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dna2codon.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Translate nucleic acid sequences into codons — dna2codon","text":"https://www.ncbi.nlm.nih.gov/Taxonomy/taxonomyhome.html/index.cgi?chapter=cgencodes","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/dna2codon.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Translate nucleic acid sequences into codons — dna2codon","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dna2codon.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Translate nucleic acid sequences into codons — dna2codon","text":"","code":"data(Laurasiatherian) class(Laurasiatherian) #> [1] \"phyDat\" Laurasiatherian #> 47 sequences with 3179 character and 1605 different site patterns. #> The states are a c g t dna2codon(Laurasiatherian) #> 47 sequences with 1059 character and 914 different site patterns. #> The states are aaa aac aag aat aca acc acg act aga agc agg agt ata atc atg att caa cac cag cat cca ccc ccg cct cga cgc cgg cgt cta ctc ctg ctt gaa gac gag gat gca gcc gcg gct gga ggc ggg ggt gta gtc gtg gtt tac tat tca tcc tcg tct tgc tgg tgt tta ttc ttg ttt"},{"path":"https://klausvigo.github.io/phangorn/reference/getClans.html","id":null,"dir":"Reference","previous_headings":"","what":"Clans, slices and clips — getClans","title":"Clans, slices and clips — getClans","text":"Functions clanistics compute clans, slices, clips unrooted trees functions quantify fragmentation trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/getClans.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Clans, slices and clips — getClans","text":"","code":"getClans(tree) getSlices(tree) getClips(tree, all = TRUE) getDiversity(tree, x, norm = TRUE, var.names = NULL, labels = \"new\") # S3 method for clanistics summary(object, ...) diversity(tree, X)"},{"path":"https://klausvigo.github.io/phangorn/reference/getClans.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Clans, slices and clips — getClans","text":"tree object class phylo multiPhylo (getDiversity). logical, return just largest clip. x object class phyDat. norm logical, return Equitability Index (default) Shannon Diversity. var.names vector variable names. labels see details. object object summary desired. ... arguments passed methods. X data.frame","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/getClans.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Clans, slices and clips — getClans","text":"getClans, getSlices getClips return matrix partitions, matrix ones zeros rows correspond clan, slice clip columns tips. one indicates tip belongs certain partition. getDiversity returns list tree object, first data.frame equitability index Shannon divergence parsimony scores (p-score) trees variables. data.frame two attributes, first splits object identify taxa tree second splits object containing partitions perfectly fit.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/getClans.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Clans, slices and clips — getClans","text":"Every split unrooted tree defines two complementary clans. Thus unrooted binary tree \\(n\\) leaves \\(2n - 3\\) edges, therefore \\(4n - 6\\) clans (including \\(n\\) trivial clans containing one leave). Slices defined pair splits tripartitions, clans. number distinguishable slices binary tree \\(n\\) tips \\(2n^2 - 10n + 12\\). cophenetic distance topology. Namely clips groups leaves maximum pairwise distance smaller threshold. distance within clip lower distance member clip tip. clip different type partition, defining groups leaves related terms evolutionary distances topology. Namely, clips groups leaves pairwise path-length distances smaller given threshold value (Lapointe et al. 2010). exists different numbers clips different thresholds, largest (trivial) one whole tree. always clip containing two leaves smallest pairwise distance. Clans, slices clips can used characterize well vector categorial characters (natives/intruders) fit tree. follow definitions Lapointe et al.(2010). complete clan clan contains leaves given state/color, can also contain leaves another state/color. clan homogeneous contains leaves one state/color. getDiversity computes either Shannon Diversity: \\(H = -\\sum_{=1}^{k}(N_i/N) log(N_i/N), N=\\sum_{=1}^{k} N_i\\) Equitability Index: \\(E = H / log(N)\\) \\(N_i\\) sizes \\(k\\) largest homogeneous clans intruders. categories data can separated edge tree E-value zero, maximum equitability (E=1) reached intruders separate clans. getDiversity computes Intruder indices whole tree, complete clans complete slices. Additionally parsimony scores (p-scores) reported. p-score indicates leaves contain one color (p-score=0), leaves can separated single split (perfect clan, p-score=1) pair splits (perfect slice, p-score=2). far 2 states supported (native, intruder), however also possible recode several states native intruder state using contrasts, details see section 2 vignette(\"phangorn-specials\"). Furthermore unknown character states coded ambiguous character, can act either native intruder minimizing number clans changes (parsimony analysis) needed describe tree given data. Set attribute labels \"old\" analysis Schliep et al. (2010) \"new\" names intuitive. diversity returns data.frame parsimony score tree levels variables X. X data.frame column factor rownames X correspond tips trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/getClans.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Clans, slices and clips — getClans","text":"Lapointe, F.-J., Lopez, P., Boucher, Y., Koenig, J., Bapteste, E. (2010) Clanistics: multi-level perspective harvesting unrooted gene trees. Trends Microbiology 18: 341-347 Wilkinson, M., McInerney, J.O., Hirt, R.P., Foster, P.G., Embley, T.M. (2007) clades clans: terms phylogenetic relationships unrooted trees. Trends Ecology Evolution 22: 114-115 Schliep, K., Lopez, P., Lapointe F.-J., Bapteste E. (2011) Harvesting Evolutionary Signals Forest Prokaryotic Gene Trees, Molecular Biology Evolution 28(4): 1393-1405","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/getClans.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Clans, slices and clips — getClans","text":"Klaus Schliep klaus.schliep@snv.jussieu.fr Francois-Joseph Lapointe francois-joseph.lapointe@umontreal.ca","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/getClans.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Clans, slices and clips — getClans","text":"","code":"set.seed(111) tree <- rtree(10) getClans(tree) #> t3 t8 t2 t1 t5 t6 t9 t10 t4 t7 #> [1,] 1 0 0 0 0 0 0 0 0 0 #> [2,] 0 1 0 0 0 0 0 0 0 0 #> [3,] 0 0 1 0 0 0 0 0 0 0 #> [4,] 0 0 0 1 0 0 0 0 0 0 #> [5,] 0 0 0 0 1 0 0 0 0 0 #> [6,] 0 0 0 0 0 1 0 0 0 0 #> [7,] 0 0 0 0 0 0 1 0 0 0 #> [8,] 0 0 0 0 0 0 0 1 0 0 #> [9,] 0 0 0 0 0 0 0 0 1 0 #> [10,] 0 0 0 0 0 0 0 0 0 1 #> [11,] 0 1 1 1 1 1 1 1 1 1 #> [12,] 1 0 1 1 1 1 1 1 1 1 #> [13,] 1 1 0 1 1 1 1 1 1 1 #> [14,] 1 1 1 0 1 1 1 1 1 1 #> [15,] 1 1 1 1 0 1 1 1 1 1 #> [16,] 1 1 1 1 1 0 1 1 1 1 #> [17,] 1 1 1 1 1 1 0 1 1 1 #> [18,] 1 1 1 1 1 1 1 0 1 1 #> [19,] 1 1 1 1 1 1 1 1 0 1 #> [20,] 1 1 1 1 1 1 1 1 1 0 #> [21,] 1 1 1 0 0 0 0 0 0 0 #> [22,] 0 1 1 0 0 0 0 0 0 0 #> [23,] 0 0 0 0 1 1 1 1 1 1 #> [24,] 0 0 0 0 0 1 1 1 1 1 #> [25,] 0 0 0 0 0 1 1 1 0 0 #> [26,] 0 0 0 0 0 0 1 1 0 0 #> [27,] 0 0 0 0 0 0 0 0 1 1 #> [28,] 0 0 0 1 1 1 1 1 1 1 #> [29,] 1 0 0 1 1 1 1 1 1 1 #> [30,] 1 1 1 1 0 0 0 0 0 0 #> [31,] 1 1 1 1 1 0 0 0 0 0 #> [32,] 1 1 1 1 1 0 0 0 1 1 #> [33,] 1 1 1 1 1 1 0 0 1 1 #> [34,] 1 1 1 1 1 1 1 1 0 0 getClips(tree, all=TRUE) #> t3 t8 t2 t1 t5 t6 t9 t10 t4 t7 #> [1,] 1 0 1 0 0 0 0 0 0 0 #> [2,] 0 0 0 0 0 0 1 1 0 0 #> [3,] 0 0 0 0 0 0 0 0 1 1 getSlices(tree) #> t3 t8 t2 t1 t5 t6 t9 t10 t4 t7 #> [1,] 0 0 1 1 1 1 1 1 1 1 #> [2,] 0 1 0 1 1 1 1 1 1 1 #> [3,] 0 1 1 0 1 1 1 1 1 1 #> [4,] 0 1 1 1 0 1 1 1 1 1 #> [5,] 0 1 1 1 1 0 1 1 1 1 #> [6,] 0 1 1 1 1 1 0 1 1 1 #> [7,] 0 1 1 1 1 1 1 0 1 1 #> [8,] 0 1 1 1 1 1 1 1 0 1 #> [9,] 0 1 1 1 1 1 1 1 1 0 #> [10,] 0 1 1 1 0 0 0 0 0 0 #> [11,] 0 1 1 1 1 0 0 0 0 0 #> [12,] 0 1 1 1 1 0 0 0 1 1 #> [13,] 0 1 1 1 1 1 0 0 1 1 #> [14,] 0 1 1 1 1 1 1 1 0 0 #> [15,] 1 0 1 0 1 1 1 1 1 1 #> [16,] 1 0 1 1 0 1 1 1 1 1 #> [17,] 1 0 1 1 1 0 1 1 1 1 #> [18,] 1 0 1 1 1 1 0 1 1 1 #> [19,] 1 0 1 1 1 1 1 0 1 1 #> [20,] 1 0 1 1 1 1 1 1 0 1 #> [21,] 1 0 1 1 1 1 1 1 1 0 #> [22,] 1 0 1 0 0 0 0 0 0 0 #> [23,] 1 0 1 1 0 0 0 0 0 0 #> [24,] 1 0 1 1 1 0 0 0 0 0 #> [25,] 1 0 1 1 1 0 0 0 1 1 #> [26,] 1 0 1 1 1 1 0 0 1 1 #> [27,] 1 0 1 1 1 1 1 1 0 0 #> [28,] 1 1 0 0 1 1 1 1 1 1 #> [29,] 1 1 0 1 0 1 1 1 1 1 #> [30,] 1 1 0 1 1 0 1 1 1 1 #> [31,] 1 1 0 1 1 1 0 1 1 1 #> [32,] 1 1 0 1 1 1 1 0 1 1 #> [33,] 1 1 0 1 1 1 1 1 0 1 #> [34,] 1 1 0 1 1 1 1 1 1 0 #> [35,] 1 1 0 0 0 0 0 0 0 0 #> [36,] 1 1 0 1 0 0 0 0 0 0 #> [37,] 1 1 0 1 1 0 0 0 0 0 #> [38,] 1 1 0 1 1 0 0 0 1 1 #> [39,] 1 1 0 1 1 1 0 0 1 1 #> [40,] 1 1 0 1 1 1 1 1 0 0 #> [41,] 1 1 1 0 0 1 1 1 1 1 #> [42,] 1 1 1 0 1 0 1 1 1 1 #> [43,] 1 1 1 0 1 1 0 1 1 1 #> [44,] 1 1 1 0 1 1 1 0 1 1 #> [45,] 1 1 1 0 1 1 1 1 0 1 #> [46,] 1 1 1 0 1 1 1 1 1 0 #> [47,] 1 0 0 0 1 1 1 1 1 1 #> [48,] 1 1 1 0 1 0 0 0 0 0 #> [49,] 1 1 1 0 1 0 0 0 1 1 #> [50,] 1 1 1 0 1 1 0 0 1 1 #> [51,] 1 1 1 0 1 1 1 1 0 0 #> [52,] 1 1 1 1 0 0 1 1 1 1 #> [53,] 1 1 1 1 0 1 0 1 1 1 #> [54,] 1 1 1 1 0 1 1 0 1 1 #> [55,] 1 1 1 1 0 1 1 1 0 1 #> [56,] 1 1 1 1 0 1 1 1 1 0 #> [57,] 0 0 0 1 0 1 1 1 1 1 #> [58,] 1 0 0 1 0 1 1 1 1 1 #> [59,] 1 1 1 1 0 0 0 0 1 1 #> [60,] 1 1 1 1 0 1 0 0 1 1 #> [61,] 1 1 1 1 0 1 1 1 0 0 #> [62,] 1 1 1 1 1 0 0 1 1 1 #> [63,] 1 1 1 1 1 0 1 0 1 1 #> [64,] 1 1 1 1 1 0 1 1 0 1 #> [65,] 1 1 1 1 1 0 1 1 1 0 #> [66,] 0 0 0 0 1 0 1 1 1 1 #> [67,] 0 0 0 0 0 0 1 1 1 1 #> [68,] 0 0 0 1 1 0 1 1 1 1 #> [69,] 1 0 0 1 1 0 1 1 1 1 #> [70,] 1 1 1 1 1 0 1 1 0 0 #> [71,] 1 1 1 1 1 1 0 1 0 1 #> [72,] 1 1 1 1 1 1 0 1 1 0 #> [73,] 0 0 0 0 1 1 0 1 1 1 #> [74,] 0 0 0 0 0 1 0 1 1 1 #> [75,] 0 0 0 0 0 1 0 1 0 0 #> [76,] 0 0 0 1 1 1 0 1 1 1 #> [77,] 1 0 0 1 1 1 0 1 1 1 #> [78,] 1 1 1 1 1 1 0 1 0 0 #> [79,] 1 1 1 1 1 1 1 0 0 1 #> [80,] 1 1 1 1 1 1 1 0 1 0 #> [81,] 0 0 0 0 1 1 1 0 1 1 #> [82,] 0 0 0 0 0 1 1 0 1 1 #> [83,] 0 0 0 0 0 1 1 0 0 0 #> [84,] 0 0 0 1 1 1 1 0 1 1 #> [85,] 1 0 0 1 1 1 1 0 1 1 #> [86,] 1 1 1 1 1 1 1 0 0 0 #> [87,] 0 0 0 0 1 1 1 1 0 1 #> [88,] 0 0 0 0 0 1 1 1 0 1 #> [89,] 0 0 0 1 1 1 1 1 0 1 #> [90,] 1 0 0 1 1 1 1 1 0 1 #> [91,] 1 1 1 1 1 0 0 0 0 1 #> [92,] 1 1 1 1 1 1 0 0 0 1 #> [93,] 0 0 0 0 1 1 1 1 1 0 #> [94,] 0 0 0 0 0 1 1 1 1 0 #> [95,] 0 0 0 1 1 1 1 1 1 0 #> [96,] 1 0 0 1 1 1 1 1 1 0 #> [97,] 1 1 1 1 1 0 0 0 1 0 #> [98,] 1 1 1 1 1 1 0 0 1 0 #> [99,] 0 0 0 0 1 0 0 0 1 1 #> [100,] 0 0 0 0 1 1 0 0 1 1 #> [101,] 0 0 0 0 1 1 1 1 0 0 #> [102,] 0 0 0 0 0 1 0 0 1 1 #> [103,] 0 0 0 1 1 0 0 0 0 0 #> [104,] 0 0 0 1 1 0 0 0 1 1 #> [105,] 0 0 0 1 1 1 0 0 1 1 #> [106,] 0 0 0 1 1 1 1 1 0 0 #> [107,] 1 0 0 1 0 0 0 0 0 0 #> [108,] 1 0 0 1 1 0 0 0 0 0 #> [109,] 1 0 0 1 1 0 0 0 1 1 #> [110,] 1 0 0 1 1 1 0 0 1 1 #> [111,] 1 0 0 1 1 1 1 1 0 0 #> [112,] 1 1 1 1 1 1 0 0 0 0 set.seed(123) trees <- rmtree(10, 20) X <- matrix(sample(c(\"red\", \"blue\", \"violet\"), 100, TRUE, c(.5,.4, .1)), ncol=5, dimnames=list(paste('t',1:20, sep=\"\"), paste('Var',1:5, sep=\"_\"))) x <- phyDat(X, type = \"USER\", levels = c(\"red\", \"blue\"), ambiguity=\"violet\") plot(trees[[1]], \"u\", tip.color = X[trees[[1]]$tip,1]) # intruders are blue (divTab <- getDiversity(trees, x, var.names=colnames(X))) #> Warning: The variable names have changed #> tree variable E clan # natives # intruder # unknown E slice # intruder #> 1 1 Var_1 0.8568636 9 10 1 1.0000000 7 #> 2 1 Var_2 0.6562658 11 7 2 0.7500000 4 #> 3 1 Var_3 0.7500962 8 11 1 0.8018797 8 #> 4 1 Var_4 0.9474428 7 11 2 1.0000000 9 #> 5 1 Var_5 1.0000000 8 10 2 1.0000000 9 #> 6 2 Var_1 0.8568636 9 10 1 1.0000000 7 #> 7 2 Var_2 0.7964530 11 7 2 0.8277294 5 #> 8 2 Var_3 0.9474428 8 11 1 1.0000000 9 #> 9 2 Var_4 0.8224909 7 11 2 0.9166667 8 #> 10 2 Var_5 0.6387640 8 10 2 0.7420981 6 #> 11 3 Var_1 0.8795880 9 10 1 0.9166667 8 #> 12 3 Var_2 0.8982265 11 7 2 1.0000000 5 #> 13 3 Var_3 0.7372138 8 11 1 0.8982265 7 #> 14 3 Var_4 0.8948855 7 11 2 0.9298967 9 #> 15 3 Var_5 1.0000000 8 10 2 1.0000000 9 #> 16 4 Var_1 0.8795880 9 10 1 0.9166667 8 #> 17 4 Var_2 0.8982265 11 7 2 1.0000000 5 #> 18 4 Var_3 0.7372138 8 11 1 0.8982265 7 #> 19 4 Var_4 0.8948855 7 11 2 0.9298967 9 #> 20 4 Var_5 1.0000000 8 10 2 1.0000000 9 #> 21 5 Var_1 0.7966576 9 10 1 0.8982265 7 #> 22 5 Var_2 0.8982265 11 7 2 1.0000000 5 #> 23 5 Var_3 0.8224909 8 11 1 0.9166667 8 #> 24 5 Var_4 0.5699628 7 11 2 0.6934264 6 #> 25 5 Var_5 0.4729033 8 10 2 0.7500000 4 #> 26 6 Var_1 0.7966576 9 10 1 0.8982265 7 #> 27 6 Var_2 0.8982265 11 7 2 1.0000000 5 #> 28 6 Var_3 0.8224909 8 11 1 0.9166667 8 #> 29 6 Var_4 1.0000000 7 11 2 1.0000000 10 #> 30 6 Var_5 0.9397940 8 10 2 1.0000000 8 #> 31 7 Var_1 0.8795880 9 10 1 0.9166667 8 #> 32 7 Var_2 1.0000000 11 7 2 1.0000000 6 #> 33 7 Var_3 0.9474428 8 11 1 1.0000000 9 #> 34 7 Var_4 0.7500962 7 11 2 0.8018797 8 #> 35 7 Var_5 0.9397940 8 10 2 1.0000000 8 #> 36 8 Var_1 0.8795880 9 10 1 0.9166667 8 #> 37 8 Var_2 0.8982265 11 7 2 1.0000000 5 #> 38 8 Var_3 0.8224909 8 11 1 0.9166667 8 #> 39 8 Var_4 0.6846566 7 11 2 0.7964530 7 #> 40 8 Var_5 0.8568636 8 10 2 1.0000000 7 #> 41 9 Var_1 0.7364516 9 10 1 0.7964530 7 #> 42 9 Var_2 0.7964530 11 7 2 0.8277294 5 #> 43 9 Var_3 0.8948855 8 11 1 0.9298967 9 #> 44 9 Var_4 0.7897710 7 11 2 0.7896901 9 #> 45 9 Var_5 0.7591760 8 10 2 1.0000000 6 #> 46 10 Var_1 0.5903090 9 10 1 0.8277294 5 #> 47 10 Var_2 0.8982265 11 7 2 1.0000000 5 #> 48 10 Var_3 0.8224909 8 11 1 0.9166667 8 #> 49 10 Var_4 0.8750481 7 11 2 1.0000000 8 #> 50 10 Var_5 0.9397940 8 10 2 1.0000000 8 #> # unknown E melange # intruder # unknown bs 1 bs 2 p-score #> 1 1 1.0000000 6 1 NA NA 8 #> 2 2 1.0000000 2 2 NA NA 4 #> 3 1 1.0000000 5 1 NA NA 6 #> 4 2 1.0000000 8 2 NA NA 7 #> 5 2 1.0000000 8 2 NA NA 7 #> 6 1 1.0000000 6 1 NA NA 7 #> 7 2 1.0000000 3 1 NA NA 5 #> 8 1 1.0000000 8 1 NA NA 7 #> 9 2 1.0000000 6 2 NA NA 5 #> 10 1 0.7500000 4 1 NA NA 5 #> 11 1 1.0000000 6 1 NA NA 7 #> 12 2 1.0000000 4 2 NA NA 6 #> 13 1 1.0000000 5 1 NA NA 7 #> 14 2 1.0000000 7 1 NA NA 5 #> 15 2 1.0000000 8 2 NA NA 8 #> 16 1 1.0000000 6 1 NA NA 4 #> 17 2 1.0000000 4 2 NA NA 5 #> 18 1 1.0000000 5 1 NA NA 6 #> 19 2 1.0000000 7 2 NA NA 6 #> 20 2 1.0000000 8 2 NA NA 8 #> 21 1 1.0000000 5 1 NA NA 7 #> 22 2 1.0000000 4 2 NA NA 6 #> 23 1 1.0000000 6 1 NA NA 7 #> 24 0 1.0000000 3 0 NA NA 5 #> 25 2 1.0000000 2 2 NA NA 4 #> 26 1 1.0000000 5 1 NA NA 6 #> 27 1 1.0000000 4 1 NA NA 6 #> 28 1 1.0000000 6 1 NA NA 6 #> 29 2 1.0000000 9 2 NA NA 7 #> 30 2 1.0000000 7 2 NA NA 7 #> 31 1 1.0000000 6 0 NA NA 6 #> 32 2 1.0000000 5 2 NA NA 6 #> 33 1 1.0000000 8 1 NA NA 7 #> 34 1 1.0000000 5 1 NA NA 5 #> 35 2 1.0000000 7 2 NA NA 7 #> 36 1 1.0000000 6 0 NA NA 8 #> 37 2 1.0000000 4 2 NA NA 6 #> 38 1 1.0000000 6 1 NA NA 7 #> 39 2 0.8277294 5 2 NA NA 6 #> 40 2 1.0000000 6 2 NA NA 4 #> 41 1 0.8277294 5 1 NA NA 6 #> 42 2 1.0000000 3 1 NA NA 4 #> 43 1 1.0000000 7 1 NA NA 7 #> 44 2 0.7964530 7 2 NA NA 5 #> 45 2 1.0000000 5 2 NA NA 6 #> 46 1 1.0000000 3 1 NA NA 5 #> 47 2 1.0000000 4 2 NA NA 6 #> 48 1 1.0000000 6 1 NA NA 5 #> 49 2 1.0000000 7 2 NA NA 6 #> 50 1 1.0000000 7 1 NA NA 7 summary(divTab) #> Variable Natives_only Intruder_only Clan Slice Melange #> 1 Var_1 0 0 0 0 10 #> 2 Var_2 0 0 0 0 10 #> 3 Var_3 0 0 0 0 10 #> 4 Var_4 0 0 0 0 10 #> 5 Var_5 0 0 0 0 10"},{"path":"https://klausvigo.github.io/phangorn/reference/hadamard.html","id":null,"dir":"Reference","previous_headings":"","what":"Hadamard Matrices and Fast Hadamard Multiplication — hadamard","title":"Hadamard Matrices and Fast Hadamard Multiplication — hadamard","text":"collection functions perform Hadamard conjugation. Hadamard matrix H vector v using fast Hadamard multiplication.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/hadamard.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Hadamard Matrices and Fast Hadamard Multiplication — hadamard","text":"","code":"hadamard(x) fhm(v) h4st(obj, levels = c(\"a\", \"c\", \"g\", \"t\")) h2st(obj, eps = 0.001)"},{"path":"https://klausvigo.github.io/phangorn/reference/hadamard.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Hadamard Matrices and Fast Hadamard Multiplication — hadamard","text":"x vector length \\(2^n\\), n integer. v vector length \\(2^n\\), n integer. obj data.frame character matrix, typical sequence alignment. levels levels sequences. eps Threshold value splits.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/hadamard.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Hadamard Matrices and Fast Hadamard Multiplication — hadamard","text":"hadamard returns Hadamard matrix. fhm returns fast Hadamard multiplication.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/hadamard.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Hadamard Matrices and Fast Hadamard Multiplication — hadamard","text":"h2st h4st perform Hadamard conjugation 2-state (binary, RY-coded) 4-state (DNA/RNA) data. write.nexus.splits writes splits returned h2st distanceHadamard nexus file, can processed Spectronet SplitsTree.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/hadamard.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Hadamard Matrices and Fast Hadamard Multiplication — hadamard","text":"Hendy, M.D. (1989). relationship simple evolutionary tree models observable sequence data. Systematic Zoology, 38 310--321. Hendy, M. D. Penny, D. (1993). Spectral Analysis Phylogenetic Data. Journal Classification, 10, 5--24. Hendy, M. D. (2005). Hadamard conjugation: analytical tool phylogenetics. O. Gascuel, editor, Mathematics evolution phylogeny, Oxford University Press, Oxford Waddell P. J. (1995). Statistical methods phylogenetic analysis: Including hadamard conjugation, LogDet transforms, maximum likelihood. PhD thesis.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/hadamard.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Hadamard Matrices and Fast Hadamard Multiplication — hadamard","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/hadamard.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Hadamard Matrices and Fast Hadamard Multiplication — hadamard","text":"","code":"H <- hadamard(3) v <- 1:8 H %*% v #> [,1] #> [1,] 36 #> [2,] -4 #> [3,] -8 #> [4,] 0 #> [5,] -16 #> [6,] 0 #> [7,] 0 #> [8,] 0 fhm(v) #> [1] 36 -4 -8 0 -16 0 0 0 data(yeast) # RY-coding dat_ry <- acgt2ry(yeast) #> Warning: Found unknown characters (not supplied in levels). Deleted sites with unknown states. fit2 <- h2st(dat_ry) lento(fit2) # write.nexus.splits(fit2, file = \"test.nxs\") # read this file into Spectronet or SplitsTree to show the network fit4 <- h4st(yeast) old.par <- par(no.readonly = TRUE) par(mfrow=c(3,1)) lento(fit4[[1]], main=\"Transversion\") lento(fit4[[2]], main=\"Transition 1\") lento(fit4[[3]], main=\"Transition 2\") par(old.par)"},{"path":"https://klausvigo.github.io/phangorn/reference/identify.networx.html","id":null,"dir":"Reference","previous_headings":"","what":"Identify splits in a network — identify.networx","title":"Identify splits in a network — identify.networx","text":"identify.networx reads position graphics pointer mouse button pressed. returns split belonging edge closest pointer. network must plotted beforehand.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/identify.networx.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Identify splits in a network — identify.networx","text":"","code":"# S3 method for networx identify(x, quiet = FALSE, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/identify.networx.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Identify splits in a network — identify.networx","text":"x object class networx quiet logical controlling whether print message inviting user click tree. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/identify.networx.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Identify splits in a network — identify.networx","text":"identify.networx returns splits object.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/identify.networx.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Identify splits in a network — identify.networx","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/identify.networx.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Identify splits in a network — identify.networx","text":"","code":"if (FALSE) { data(yeast) dm <- dist.ml(yeast) nnet <- neighborNet(dm) plot(nnet) identify(nnet) # click close to an edge }"},{"path":"https://klausvigo.github.io/phangorn/reference/image.phyDat.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot of a Sequence Alignment — image.phyDat","title":"Plot of a Sequence Alignment — image.phyDat","text":"function plots image alignment sequences.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/image.phyDat.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot of a Sequence Alignment — image.phyDat","text":"","code":"# S3 method for phyDat image(x, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/image.phyDat.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot of a Sequence Alignment — image.phyDat","text":"x object containing sequences, object class phyDat. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/image.phyDat.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Plot of a Sequence Alignment — image.phyDat","text":"wrapper using image.DNAbin image.AAbin.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/lento.html","id":null,"dir":"Reference","previous_headings":"","what":"Lento plot — lento","title":"Lento plot — lento","text":"lento plot represents support conflict splits/bipartitions.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/lento.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Lento plot — lento","text":"","code":"lento(obj, xlim = NULL, ylim = NULL, main = \"Lento plot\", sub = NULL, xlab = NULL, ylab = NULL, bipart = TRUE, trivial = FALSE, col = rgb(0, 0, 0, 0.5), ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/lento.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Lento plot — lento","text":"obj object class phylo, multiPhylo splits xlim graphical parameter ylim graphical parameter main graphical parameter sub graphical parameter xlab graphical parameter ylab graphical parameter bipart plot bipartition information. trivial logical, whether present trivial splits (default FALSE). col color splits / bipartition. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/lento.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Lento plot — lento","text":"lento returns plot.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/lento.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Lento plot — lento","text":"Lento, G.M., Hickson, R.E., Chambers G.K., Penny, D. (1995) Use spectral analysis test hypotheses origin pinninpeds. Molecular Biology Evolution, 12, 28-52.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/lento.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Lento plot — lento","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/lento.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Lento plot — lento","text":"","code":"data(yeast) yeast.ry <- acgt2ry(yeast) #> Warning: Found unknown characters (not supplied in levels). Deleted sites with unknown states. splits.h <- h2st(yeast.ry) lento(splits.h, trivial=TRUE)"},{"path":"https://klausvigo.github.io/phangorn/reference/mast.html","id":null,"dir":"Reference","previous_headings":"","what":"Maximum agreement subtree — mast","title":"Maximum agreement subtree — mast","text":"mast computes maximum agreement subtree (MAST).","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/mast.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Maximum agreement subtree — mast","text":"","code":"mast(x, y, tree = TRUE, rooted = TRUE)"},{"path":"https://klausvigo.github.io/phangorn/reference/mast.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Maximum agreement subtree — mast","text":"x tree, .e. object class phylo. y tree, .e. object class phylo. tree logical, TRUE returns tree wise tip labels maximum agreement subtree. rooted logical TRUE treats trees rooted otherwise unrooted.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/mast.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Maximum agreement subtree — mast","text":"mast returns vector tip labels MAST.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/mast.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Maximum agreement subtree — mast","text":"code derived code example Valiente (2009). version unrooted trees much slower.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/mast.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Maximum agreement subtree — mast","text":"G. Valiente (2009). Combinatorial Pattern Matching Algorithms Computational Biology using Perl R. Taylor & Francis/CRC Press","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/mast.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Maximum agreement subtree — mast","text":"Klaus Schliep klaus.schliep@gmail.com based code Gabriel Valiente","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/mast.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Maximum agreement subtree — mast","text":"","code":"tree1 <- rtree(100) tree2 <- rSPR(tree1, 5) tips <- mast(tree1, tree2)"},{"path":"https://klausvigo.github.io/phangorn/reference/maxCladeCred.html","id":null,"dir":"Reference","previous_headings":"","what":"Maximum clade credibility tree — maxCladeCred","title":"Maximum clade credibility tree — maxCladeCred","text":"maxCladeCred computes maximum clade credibility tree sample trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/maxCladeCred.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Maximum clade credibility tree — maxCladeCred","text":"","code":"maxCladeCred(x, tree = TRUE, part = NULL, rooted = TRUE) mcc(x, tree = TRUE, part = NULL, rooted = TRUE) allCompat(x, rooted = FALSE)"},{"path":"https://klausvigo.github.io/phangorn/reference/maxCladeCred.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Maximum clade credibility tree — maxCladeCred","text":"x x object class multiPhylo phylo tree logical indicating whether return tree clade credibility (default) clade credibility score trees. part list partitions returned prop.part rooted logical, FALSE tree highest maximum bipartition credibility returned.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/maxCladeCred.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Maximum clade credibility tree — maxCladeCred","text":"tree (object class phylo) highest clade credibility numeric vector clade credibilities tree.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/maxCladeCred.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Maximum clade credibility tree — maxCladeCred","text":"far just best tree returned. annotations transformations edge length performed. list partition provided clade credibility computed trees x. allCompat returns 50% majority rule consensus tree added compatible splits similar option allcompat MrBayes.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/maxCladeCred.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Maximum clade credibility tree — maxCladeCred","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/maxCladeCred.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Maximum clade credibility tree — maxCladeCred","text":"","code":"data(Laurasiatherian) set.seed(42) bs <- bootstrap.phyDat(Laurasiatherian, FUN = function(x)upgma(dist.hamming(x)), bs=100) strict_consensus <- consensus(bs) majority_consensus <- consensus(bs, p=.5) all_compat <- allCompat(bs) max_clade_cred <- maxCladeCred(bs) old.par <- par(no.readonly = TRUE) par(mfrow = c(2,2), mar = c(1,4,1,1)) plot(strict_consensus, main=\"Strict consensus tree\") plot(majority_consensus, main=\"Majority consensus tree\") plot(all_compat, main=\"Majority consensus tree with compatible splits\") plot(max_clade_cred, main=\"Maximum clade credibility tree\") par(old.par) # compute clade credibility for trees given a prop.part object pp <- prop.part(bs) tree <- rNNI(bs[[1]], 20) maxCladeCred(c(tree, bs[[1]]), tree=FALSE, part = pp) #> [1] -Inf -36.10917 # first value likely be -Inf"},{"path":"https://klausvigo.github.io/phangorn/reference/midpoint.html","id":null,"dir":"Reference","previous_headings":"","what":"Tree manipulation — getRoot","title":"Tree manipulation — getRoot","text":"midpoint performs midpoint rooting tree. pruneTree produces consensus tree. pruneTree prunes back tree produces consensus tree, trees already containing nodelabels. assumes nodelabels numerical character allows conversion numerical, uses .numeric(.character(tree$node.labels)) convert . midpoint default assumes node labels contain support values. works support values computed splits, recomputed clades. keep..tip takes list tips /node labels returns tree pruned . node label, prunes descendants node internal node becomes tip.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/midpoint.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Tree manipulation — getRoot","text":"","code":"getRoot(tree) midpoint(tree, node.labels = \"support\", ...) # S3 method for phylo midpoint(tree, node.labels = \"support\", ...) # S3 method for multiPhylo midpoint(tree, node.labels = \"support\", ...) pruneTree(tree, ..., FUN = \">=\") keep.as.tip(tree, labels)"},{"path":"https://klausvigo.github.io/phangorn/reference/midpoint.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Tree manipulation — getRoot","text":"tree object class phylo. node.labels node labels 'support' values (edges), 'label' labels get 'deleted'? ... arguments, passed methods. FUN function evaluated nodelabels, result must logical. labels tip node labels keep tip labels tree","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/midpoint.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Tree manipulation — getRoot","text":"pruneTree midpoint tree. getRoot returns root node.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/midpoint.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Tree manipulation — getRoot","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/midpoint.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Tree manipulation — getRoot","text":"","code":"tree <- rtree(10, rooted = FALSE) tree$node.label <- c(\"\", round(runif(tree$Nnode-1), digits=3)) tree2 <- midpoint(tree) tree3 <- pruneTree(tree, .5) old.par <- par(no.readonly = TRUE) par(mfrow = c(3,1)) plot(tree, show.node.label=TRUE) plot(tree2, show.node.label=TRUE) plot(tree3, show.node.label=TRUE) par(old.par)"},{"path":"https://klausvigo.github.io/phangorn/reference/mites.html","id":null,"dir":"Reference","previous_headings":"","what":"Morphological characters of Mites (Schäffer et al. 2010) — mites","title":"Morphological characters of Mites (Schäffer et al. 2010) — mites","text":"Matrix morphological characters character states 12 species mites. See vignette '02_Phylogenetic trees morphological data' examples import morphological data.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/mites.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Morphological characters of Mites (Schäffer et al. 2010) — mites","text":"Schäffer, S., Pfingstl, T., Koblmüller, S., Winkler, K. ., Sturmbauer, C., & Krisper, G. (2010). Phylogenetic analysis European Scutovertex mites (Acari, Oribatida, Scutoverticidae) reveals paraphyly cryptic diversity: molecular genetic morphological approach. Molecular Phylogenetics Evolution, 55(2), 677--688.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/mites.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Morphological characters of Mites (Schäffer et al. 2010) — mites","text":"","code":"data(mites) mites #> 12 sequences with 79 character and 53 different site patterns. #> The states are 0 1 2 3 4 5 6 7 # infer all maximum parsimony trees trees <- bab(mites) # For larger data sets you might use pratchet instead bab # trees <- pratchet(mites, minit=200, trace=0, all=TRUE) # build consensus tree ctree <- root(consensus(trees, p=.5), outgroup = \"C._cymba\", resolve.root=TRUE, edgelabel=TRUE) plotBS(ctree, trees) cnet <- consensusNet(trees) plot(cnet)"},{"path":"https://klausvigo.github.io/phangorn/reference/modelTest.html","id":null,"dir":"Reference","previous_headings":"","what":"ModelTest — modelTest","title":"ModelTest — modelTest","text":"Comparison different nucleotide amino acid substitution models","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/modelTest.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"ModelTest — modelTest","text":"","code":"modelTest(object, tree = NULL, model = NULL, G = TRUE, I = TRUE, FREQ = FALSE, k = 4, control = pml.control(epsilon = 1e-08, maxit = 10, trace = 1), multicore = FALSE, mc.cores = NULL)"},{"path":"https://klausvigo.github.io/phangorn/reference/modelTest.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"ModelTest — modelTest","text":"object object class phyDat pml tree phylogenetic tree. model vector containing substitution models compare \"\" test available models G logical, TRUE (default) (discrete) Gamma model tested logical, TRUE (default) invariant sites tested FREQ logical, FALSE (default) TRUE amino acid frequencies estimated. k number rate classes control list parameters controlling fitting process. multicore logical, whether models estimated parallel. mc.cores number cores use, .e. many child processes run simultaneously. Must least one, parallelization requires least two cores.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/modelTest.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"ModelTest — modelTest","text":"data.frame containing log-likelihood, number estimated parameters, AIC, AICc BIC tested models. data.frame attributes \"env\" environment contains trees, data calls allow get estimated models, e.g. starting point analysis (see example).","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/modelTest.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"ModelTest — modelTest","text":"modelTest estimates specified models given tree data. mclapply available, computations done parallel. modelTest runs model one thread. may work within GUI interface work Windows.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/modelTest.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"ModelTest — modelTest","text":"Burnham, K. P. Anderson, D. R (2002) Model selection multimodel inference: practical information-theoretic approach. 2nd ed. Springer, New York Posada, D. Crandall, K.. (1998) MODELTEST: testing model DNA substitution. Bioinformatics 14(9): 817-818 Posada, D. (2008) jModelTest: Phylogenetic Model Averaging. Molecular Biology Evolution 25: 1253-1256 Darriba D., Taboada G.L., Doallo R Posada D. (2011) ProtTest 3: fast selection best-fit models protein evolution. . Bioinformatics 27: 1164-1165","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/modelTest.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"ModelTest — modelTest","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/modelTest.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"ModelTest — modelTest","text":"","code":"if (FALSE) { example(NJ) (mT <- modelTest(Laurasiatherian, tree, model = c(\"JC\", \"F81\", \"K80\", \"HKY\", \"SYM\", \"GTR\"))) # extract best model (best_model <- as.pml(mT)) data(chloroplast) (mTAA <- modelTest(chloroplast, model=c(\"JTT\", \"WAG\", \"LG\"))) # test all available amino acid models (mTAA_all <- modelTest(chloroplast, model=\"all\", multicore=TRUE, mc.cores=2)) }"},{"path":"https://klausvigo.github.io/phangorn/reference/neighborNet.html","id":null,"dir":"Reference","previous_headings":"","what":"Computes a neighborNet from a distance matrix — neighborNet","title":"Computes a neighborNet from a distance matrix — neighborNet","text":"Computes neighborNet, .e. object class networx distance matrix.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/neighborNet.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Computes a neighborNet from a distance matrix — neighborNet","text":"","code":"neighborNet(x, ord = NULL)"},{"path":"https://klausvigo.github.io/phangorn/reference/neighborNet.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Computes a neighborNet from a distance matrix — neighborNet","text":"x distance matrix. ord circular ordering.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/neighborNet.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Computes a neighborNet from a distance matrix — neighborNet","text":"neighborNet returns object class networx.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/neighborNet.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Computes a neighborNet from a distance matrix — neighborNet","text":"neighborNet still experimental. cyclic ordering sometimes differ SplitsTree implementation, ord argument can used enforce certain circular ordering.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/neighborNet.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Computes a neighborNet from a distance matrix — neighborNet","text":"Bryant, D. & Moulton, V. (2004) Neighbor-Net: Agglomerative Method Construction Phylogenetic Networks. Molecular Biology Evolution, 2004, 21, 255-265","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/neighborNet.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Computes a neighborNet from a distance matrix — neighborNet","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/neighborNet.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Computes a neighborNet from a distance matrix — neighborNet","text":"","code":"data(yeast) dm <- dist.ml(yeast) nnet <- neighborNet(dm) plot(nnet)"},{"path":"https://klausvigo.github.io/phangorn/reference/nni.html","id":null,"dir":"Reference","previous_headings":"","what":"Tree rearrangements. — nni","title":"Tree rearrangements. — nni","text":"nni returns list trees one nearest neighbor interchange away. rNNI rSPR two methods simulate random trees specified number rearrangement apart input tree. methods assume input tree bifurcating. methods may useful simulation studies.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/nni.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Tree rearrangements. — nni","text":"","code":"nni(tree) rNNI(tree, moves = 1, n = length(moves)) rSPR(tree, moves = 1, n = length(moves), k = NULL)"},{"path":"https://klausvigo.github.io/phangorn/reference/nni.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Tree rearrangements. — nni","text":"tree phylogenetic tree, object class phylo. moves Number tree rearrangements transformed tree. Can vector n Number trees simulated. k defined just SPR distance k performed.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/nni.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Tree rearrangements. — nni","text":"object class multiPhylo.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/nni.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Tree rearrangements. — nni","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/nni.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Tree rearrangements. — nni","text":"","code":"tree <- rtree(20, rooted = FALSE) trees1 <- nni(tree) trees2 <- rSPR(tree, 2, 10)"},{"path":"https://klausvigo.github.io/phangorn/reference/parsimony.html","id":null,"dir":"Reference","previous_headings":"","what":"Parsimony tree. — acctran","title":"Parsimony tree. — acctran","text":"pratchet implements parsimony ratchet (Nixon, 1999) preferred way search best parsimony tree. small number taxa function bab can used compute parsimonious trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/parsimony.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Parsimony tree. — acctran","text":"","code":"acctran(tree, data) fitch(tree, data, site = \"pscore\") random.addition(data, tree = NULL, method = \"fitch\") parsimony(tree, data, method = \"fitch\", cost = NULL, site = \"pscore\") optim.parsimony(tree, data, method = \"fitch\", cost = NULL, trace = 1, rearrangements = \"SPR\", ...) pratchet(data, start = NULL, method = \"fitch\", maxit = 1000, minit = 100, k = 10, trace = 1, all = FALSE, rearrangements = \"SPR\", perturbation = \"ratchet\", ...) sankoff(tree, data, cost = NULL, site = \"pscore\")"},{"path":"https://klausvigo.github.io/phangorn/reference/parsimony.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Parsimony tree. — acctran","text":"tree tree start nni search . data object class phyDat containing sequences. site return either 'pscore' 'site' wise parsimony scores. method one 'fitch' 'sankoff'. cost cost matrix transitions two states. trace defines much information printed optimization. rearrangements SPR NNI rearrangements. ... arguments passed methods (e.g. model=\"sankoff\" cost matrix). start starting tree can supplied. maxit maximum number iterations ratchet. minit minimum number iterations ratchet. k number rounds ratchet stopped, improvement. return equally good trees just one . perturbation whether use \"ratchet\", \"random_addition\" \"stochastic\" (nni) shuffling tree.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/parsimony.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Parsimony tree. — acctran","text":"parsimony returns maximum parsimony score (pscore). optim.parsimony returns tree NNI rearrangements. pratchet returns tree list trees containing best tree(s) found search. acctran returns tree edge length according ACCTRAN criterion.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/parsimony.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Parsimony tree. — acctran","text":"parsimony returns parsimony score tree using either sankoff fitch algorithm. optim.parsimony optimizes topology using either Nearest Neighbor Interchange (NNI) rearrangements sub tree pruning regrafting (SPR) used inside pratchet. random.addition can used produce starting trees option argument perturbation pratchet. \"SPR\" rearrangements far available \"fitch\" method, \"sankoff\" uses \"NNI\". \"fitch\" algorithm works correct binary trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/parsimony.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Parsimony tree. — acctran","text":"Felsenstein, J. (2004). Inferring Phylogenies. Sinauer Associates, Sunderland. Nixon, K. (1999) Parsimony Ratchet, New Method Rapid Parsimony Analysis. Cladistics 15, 407-414","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/parsimony.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Parsimony tree. — acctran","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/parsimony.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Parsimony tree. — acctran","text":"","code":"set.seed(3) data(Laurasiatherian) dm <- dist.hamming(Laurasiatherian) tree <- NJ(dm) parsimony(tree, Laurasiatherian) #> [1] 9796 treeRA <- random.addition(Laurasiatherian) treeSPR <- optim.parsimony(tree, Laurasiatherian) #> Final p-score 9715 after 11 nni operations # lower number of iterations for the example (to run less than 5 seconds), # keep default values (maxit, minit, k) or increase them for real life # analyses. treeRatchet <- pratchet(Laurasiatherian, start=tree, maxit=100, minit=5, k=5, trace=0) # assign edge length (number of substitutions) treeRatchet <- acctran(treeRatchet, Laurasiatherian) # remove edges of length 0 treeRatchet <- di2multi(treeRatchet) plot(midpoint(treeRatchet)) add.scale.bar(0,0, length=100) parsimony(c(tree,treeSPR, treeRatchet), Laurasiatherian) #> [1] 9796 9715 9713"},{"path":"https://klausvigo.github.io/phangorn/reference/phangorn-internal.html","id":null,"dir":"Reference","previous_headings":"","what":"Internal phangorn Functions — threshStateC","title":"Internal phangorn Functions — threshStateC","text":"Internal phangorn functions.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/phangorn-internal.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Internal phangorn Functions — threshStateC","text":"","code":"threshStateC(x, thresholds) candidate_tree(x, method = c(\"unrooted\", \"ultrametric\", \"tipdated\"), eps = 1e-08, tip.dates = NULL, ...) hash(x, ...) coords(obj, dim = \"3D\") map_duplicates(x, dist = length(x) < 500, ...) pmlPen(object, lambda, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/phangorn-package.html","id":null,"dir":"Reference","previous_headings":"","what":"phangorn: Phylogenetic Reconstruction and Analysis — phangorn-package","title":"phangorn: Phylogenetic Reconstruction and Analysis — phangorn-package","text":"Allows estimation phylogenetic trees networks using Maximum Likelihood, Maximum Parsimony, distance methods Hadamard conjugation (Schliep 2011). Offers methods tree comparison, model selection visualization phylogenetic networks described Schliep et al. (2017).","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/phangorn-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"phangorn: Phylogenetic Reconstruction and Analysis — phangorn-package","text":"Maintainer: Klaus Schliep klaus.schliep@gmail.com (ORCID) Authors: Emmanuel Paradis (ORCID) Leonardo de Oliveira Martins (ORCID) Alastair Potts Iris Bardel-Kahr (ORCID) contributors: Tim W. White [contributor] Cyrill Stachniss [contributor] Michelle Kendall m.kendall@imperial.ac.uk [contributor] Keren Halabi [contributor] Richel Bilderbeek [contributor] Kristin Winchell [contributor] Liam Revell [contributor] Mike Gilchrist [contributor] Jeremy Beaulieu [contributor] Brian O'Meara [contributor] Long Qu [contributor] Joseph Brown (ORCID) [contributor] Santiago Claramunt (ORCID) [contributor]","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/phyDat.html","id":null,"dir":"Reference","previous_headings":"","what":"Generic functions for class phyDat — print.phyDat","title":"Generic functions for class phyDat — print.phyDat","text":"functions help manipulate alignments class phyDat.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/phyDat.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generic functions for class phyDat — print.phyDat","text":"","code":"# S3 method for phyDat print(x, ...) # S3 method for phyDat subset(x, subset, select, site.pattern = TRUE, ...) # S3 method for phyDat [(x, i, j, ..., drop = FALSE) # S3 method for phyDat unique(x, incomparables = FALSE, identical = TRUE, ...) removeUndeterminedSites(x, ...) removeAmbiguousSites(x) allSitePattern(n, levels = NULL, names = NULL, type = \"DNA\", code = 1)"},{"path":"https://klausvigo.github.io/phangorn/reference/phyDat.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generic functions for class phyDat — print.phyDat","text":"x object containing sequences. ... arguments passed methods. subset subset taxa. select subset characters. site.pattern select site pattern sites (see details). , j indices rows /columns select drop. may numeric, logical, character (way standard R objects). drop compatibility generic (unused). incomparables compatibility unique. identical TRUE (default) sequences identical, FALSE sequences considered duplicates distance sequences zero (happens frequently ambiguous sites). n Number sequences. levels Level attributes. names Names sequences. type Type sequences (\"DNA\", \"AA\" \"USER\"). code ncbi genetic code number translation. default standard genetic code used.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/phyDat.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generic functions for class phyDat — print.phyDat","text":"functions return object class phyDat.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/phyDat.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Generic functions for class phyDat — print.phyDat","text":"allSitePattern generates possible site patterns can useful simulation studies. details see vignette AdvancedFeatures. generic function c can used combine sequences unique get unique sequences unique haplotypes. phyDat stores identical columns alignment keeps index original positions. saves memory especially computations usually need done site pattern. example matrix x example 8 columns, column 1 2 also 3 5 identical. phyDat object y 6 site pattern. argument site.pattern=FALSE indexing behaves like original matrix x. site.pattern=TRUE can useful inside functions.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/phyDat.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Generic functions for class phyDat — print.phyDat","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/phyDat.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Generic functions for class phyDat — print.phyDat","text":"","code":"data(Laurasiatherian) class(Laurasiatherian) #> [1] \"phyDat\" Laurasiatherian #> 47 sequences with 3179 character and 1605 different site patterns. #> The states are a c g t # base frequencies baseFreq(Laurasiatherian) #> a c g t #> 0.3321866 0.1990791 0.2040652 0.2646691 # subsetting phyDat objects # the first 5 sequences subset(Laurasiatherian, subset=1:5) #> 5 sequences with 3179 character and 1605 different site patterns. #> The states are a c g t # the first 5 characters subset(Laurasiatherian, select=1:5, site.pattern = FALSE) #> 47 sequences with 5 character and 5 different site patterns. #> The states are a c g t # subsetting with [] Laurasiatherian[1:5, 1:20] #> 5 sequences with 20 character and 17 different site patterns. #> The states are a c g t # short for subset(Laurasiatherian, subset=1:5, select=1:20, site.pattern = FALSE) #> 5 sequences with 20 character and 17 different site patterns. #> The states are a c g t # the first 5 site patterns (often more than 5 characters) subset(Laurasiatherian, select=1:5, site.pattern = TRUE) #> 47 sequences with 454 character and 5 different site patterns. #> The states are a c g t x <- matrix(c(\"a\", \"a\", \"c\", \"g\", \"c\", \"t\", \"a\", \"g\", \"a\", \"a\", \"c\", \"g\", \"c\", \"t\", \"a\", \"g\", \"a\", \"a\", \"c\", \"c\", \"c\", \"t\", \"t\", \"g\"), nrow=3, byrow = TRUE, dimnames = list(c(\"t1\", \"t2\", \"t3\"), 1:8)) (y <- phyDat(x)) #> 3 sequences with 8 character and 6 different site patterns. #> The states are a c g t subset(y, 1:2) #> 2 sequences with 8 character and 6 different site patterns. #> The states are a c g t subset(y, 1:2, compress=TRUE) #> 2 sequences with 8 character and 4 different site patterns. #> The states are a c g t subset(y, select=1:3, site.pattern = FALSE) |> as.character() #> [,1] [,2] [,3] #> t1 \"a\" \"a\" \"c\" #> t2 \"a\" \"a\" \"c\" #> t3 \"a\" \"a\" \"c\" subset(y, select=1:3, site.pattern = TRUE) |> as.character() #> [,1] [,2] [,3] [,4] [,5] #> t1 \"a\" \"a\" \"c\" \"c\" \"g\" #> t2 \"a\" \"a\" \"c\" \"c\" \"g\" #> t3 \"a\" \"a\" \"c\" \"c\" \"c\" y[,1:3] # same as subset(y, select=1:3, site.pattern = FALSE) #> 3 sequences with 3 character and 2 different site patterns. #> The states are a c g t # Compute all possible site patterns # for nucleotides there $4 ^ (number of tips)$ patterns allSitePattern(5) #> 5 sequences with 1024 character and 1024 different site patterns. #> The states are a c g t"},{"path":"https://klausvigo.github.io/phangorn/reference/plot.networx.html","id":null,"dir":"Reference","previous_headings":"","what":"plot phylogenetic networks — plot.networx","title":"plot phylogenetic networks — plot.networx","text":"far parameters behave rgl \"3D\" basic graphic \"2D\" device.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plot.networx.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"plot phylogenetic networks — plot.networx","text":"","code":"# S3 method for networx plot(x, type = \"equal angle\", use.edge.length = TRUE, show.tip.label = TRUE, show.edge.label = FALSE, edge.label = NULL, show.node.label = FALSE, node.label = NULL, show.nodes = FALSE, tip.color = \"black\", edge.color = \"black\", edge.width = 3, edge.lty = 1, split.color = NULL, split.width = NULL, split.lty = NULL, font = 3, cex = par(\"cex\"), cex.node.label = cex, cex.edge.label = cex, col.node.label = tip.color, col.edge.label = tip.color, font.node.label = font, font.edge.label = font, underscore = FALSE, angle = 0, digits = 3, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/plot.networx.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"plot phylogenetic networks — plot.networx","text":"x object class \"networx\" type \"3D\" plot using rgl \"equal angle\" \"2D\" normal device. use.edge.length logical indicating whether use edge weights network draw branches (default) . show.tip.label logical indicating whether show tip labels graph (defaults TRUE, .e. labels shown). show.edge.label logical indicating whether show tip labels graph. edge.label additional vector edge labels (normally needed). show.node.label logical indicating whether show node labels (see example). node.label additional vector node labels (normally needed). show.nodes logical indicating whether show nodes (see example). tip.color colors used tip labels. edge.color colors used draw edges. edge.width width used draw edges. edge.lty vector line types. split.color colors used draw edges. split.width width used draw edges. split.lty vector line types. font integer specifying type font labels: 1 (plain text), 2 (bold), 3 (italic, default), 4 (bold italic). cex numeric value giving factor scaling labels. cex.node.label numeric value giving factor scaling node labels. cex.edge.label numeric value giving factor scaling edge labels. col.node.label colors used node labels. col.edge.label colors used edge labels. font.node.label font used node labels. font.edge.label font used edge labels. underscore logical specifying whether underscores tip labels written spaces (default) left (TRUE). angle rotate plot. digits edge labels numerical positive integer indicating many significant digits used. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plot.networx.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"plot phylogenetic networks — plot.networx","text":"Often easier safer supply vectors graphical parameters splits (e.g. splits.color) edges. overwrite values edge.color.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plot.networx.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"plot phylogenetic networks — plot.networx","text":"internal representation likely change.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plot.networx.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"plot phylogenetic networks — plot.networx","text":"Dress, .W.M. Huson, D.H. (2004) Constructing Splits Graphs IEEE/ACM Transactions Computational Biology Bioinformatics (TCBB), 1(3), 109--115 Schliep, K., Potts, . J., Morrison, D. . Grimm, G. W. (2017), Intertwining phylogenetic trees networks. Methods Ecol Evol. 8, 1212--1220. doi:10.1111/2041-210X.12760","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/plot.networx.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"plot phylogenetic networks — plot.networx","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plot.networx.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"plot phylogenetic networks — plot.networx","text":"","code":"set.seed(1) tree1 <- rtree(20, rooted=FALSE) sp <- as.splits(rNNI(tree1, n=10)) net <- as.networx(sp) plot(net) if (FALSE) { # also see example in consensusNet example(consensusNet) }"},{"path":"https://klausvigo.github.io/phangorn/reference/plot.pml.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot phylogeny of a pml object — plot.pml","title":"Plot phylogeny of a pml object — plot.pml","text":"plot.pml wrapper around plot.phylo different default values unrooted, ultrametric tip dated phylogenies.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plot.pml.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot phylogeny of a pml object — plot.pml","text":"","code":"# S3 method for pml plot(x, type = \"phylogram\", direction = \"rightwards\", ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/plot.pml.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot phylogeny of a pml object — plot.pml","text":"x object class pml phyDat. type character string specifying type phylogeny drawn; must one \"phylogram\" (default), \"cladogram\", \"fan\", \"unrooted\", \"radial\", \"tidy\", unambiguous abbreviation . direction character string specifying direction tree. Four values possible: \"rightwards\" (default), \"leftwards\", \"upwards\", \"downwards\". ... parameters passed plot.phylo.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/plot.pml.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plot phylogeny of a pml object — plot.pml","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plot.pml.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot phylogeny of a pml object — plot.pml","text":"","code":"fdir <- system.file(\"extdata/trees\", package = \"phangorn\") tmp <- read.csv(file.path(fdir,\"H3N2_NA_20.csv\")) H3N2 <- read.phyDat(file.path(fdir,\"H3N2_NA_20.fasta\"), format=\"fasta\") dates <- setNames(tmp$numdate_given, tmp$name) fit_td <- pml_bb(H3N2, model=\"JC\", method=\"tipdated\", tip.dates=dates, rearrangement=\"none\", control = pml.control(trace = 0)) plot(fit_td, show.tip.label = FALSE) # Same as: # root_time <- max(dates) - max(node.depth.edgelength(fit_td$tree)) # plot(fit_td$tree, show.tip.label = FALSE) # axisPhylo(root.time = root_time, backward = FALSE) plot(fit_td, show.tip.label = FALSE, direction=\"up\") fit_unrooted <- pml_bb(H3N2, model=\"JC\", rearrangement=\"none\", control = pml.control(trace = 0)) plot(fit_unrooted, cex=.5)"},{"path":"https://klausvigo.github.io/phangorn/reference/plotAnc.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot ancestral character on a tree — plotAnc","title":"Plot ancestral character on a tree — plotAnc","text":"plotAnc plots phylogeny adds character nodes. Either takes output ancestral.pars ancestral.pml alignment node labels tree match constructed sequences alignment.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plotAnc.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot ancestral character on a tree — plotAnc","text":"","code":"plotAnc(tree, data, i = 1, site.pattern = FALSE, col = NULL, cex.pie = 0.5, pos = \"bottomright\", scheme = NULL, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/plotAnc.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot ancestral character on a tree — plotAnc","text":"tree tree, .e. object class pml data object class phyDat ancestral. plots -th site data. site.pattern logical, plot -th site pattern -th site col vector containing colors possible states. cex.pie numeric defining size pie graphs. pos character string defining position legend. scheme predefined color scheme. amino acid options \"Ape_AA\", \"Zappo_AA\", \"Clustal\", \"Polarity\" \"Transmembrane_tendency\", nucleotides \"Ape_NT\" \"RY_NT\". Names can abbreviated. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plotAnc.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Plot ancestral character on a tree — plotAnc","text":"details see vignette(\"Ancestral\").","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/plotAnc.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plot ancestral character on a tree — plotAnc","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plotAnc.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot ancestral character on a tree — plotAnc","text":"","code":"example(NJ) #> #> NJ> data(Laurasiatherian) #> #> NJ> dm <- dist.ml(Laurasiatherian) #> #> NJ> tree <- NJ(dm) #> #> NJ> plot(tree) # generate node labels to ensure plotting will work tree <- makeNodeLabel(tree) anc.p <- ancestral.pars(tree, Laurasiatherian) # plot the third character plotAnc(tree, anc.p, 3) data(chloroplast) tree <- pratchet(chloroplast, maxit=10, trace=0) tree <- makeNodeLabel(tree) anc.ch <- ancestral.pars(tree, chloroplast) image(chloroplast[, 1:25]) #> NULL plotAnc(tree, anc.ch, 21, scheme=\"Ape_AA\") plotAnc(tree, anc.ch, 21, scheme=\"Clustal\")"},{"path":"https://klausvigo.github.io/phangorn/reference/plotBS.html","id":null,"dir":"Reference","previous_headings":"","what":"Plotting trees with bootstrap values — plotBS","title":"Plotting trees with bootstrap values — plotBS","text":"plotBS plots phylogenetic tree bootstrap values assigned (internal) edges. can also used assign bootstrap values phylogenetic tree. add_support adds support values plot.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plotBS.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plotting trees with bootstrap values — plotBS","text":"","code":"plotBS(tree, trees, type = \"phylogram\", method = \"FBP\", bs.col = \"black\", bs.adj = NULL, digits = 3, p = 0, frame = \"none\", tol = 1e-06, sep = \"/\", ...) add_support(tree, trees, method = \"FBP\", tol = 1e-08, scale = TRUE, frame = \"none\", digits = 3, sep = \"/\", ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/plotBS.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plotting trees with bootstrap values — plotBS","text":"tree tree edges bootstrap values plotted. trees list trees (object class \"multiPhylo\"). type type tree plot, one \"phylogram\", \"cladogram\", \"fan\", \"unrooted\", \"radial\" \"none\". type \"none\" tree returned bootstrap values assigned node labels. method either \"FBP\" classical bootstrap (default), \"TBE\" (transfer bootstrap) \"MCC\" assigning clade credibilities. case \"MCC\" trees need rooted. bs.col color bootstrap support labels. bs.adj one two numeric values specifying horizontal vertical justification bootstrap labels. digits integer indicating number decimal places. p plot support values higher percentage number (default 0). frame character string specifying kind frame printed around bootstrap values. must one \"none\" (default), \"rect\" \"circle\". tol numeric value giving tolerance consider branch length significantly greater zero. sep seperator different methods. ... parameters used plot.phylo. scale return ratio percentage.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plotBS.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plotting trees with bootstrap values — plotBS","text":"plotBS returns silently tree, .e. object class phylo bootstrap values node labels. argument trees optional supplied labels supplied node.label slot used.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plotBS.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Plotting trees with bootstrap values — plotBS","text":"functions can either assign classical Felsenstein’s bootstrap proportions (FBP) (Felsenstein (1985), Hendy & Penny (1985)) transfer bootstrap expectation (TBE) Lemoine et al. (2018). Using option type==\"n\" just assigns bootstrap values return tree without plotting .","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plotBS.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Plotting trees with bootstrap values — plotBS","text":"Felsenstein J. (1985) Confidence limits phylogenies. approach using bootstrap. Evolution 39, 783--791 Lemoine, F., Entfellner, J. B. D., Wilkinson, E., Correia, D., Felipe, M. D., De Oliveira, T., & Gascuel, O. (2018). Renewing Felsenstein’s phylogenetic bootstrap era big data. Nature, 556(7702), 452--456. Penny D. Hendy M.D. (1985) Testing methods evolutionary tree construction. Cladistics 1, 266--278 Penny D. Hendy M.D. (1986) Estimating reliability evolutionary trees. Molecular Biology Evolution 3, 403--417","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/plotBS.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plotting trees with bootstrap values — plotBS","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plotBS.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plotting trees with bootstrap values — plotBS","text":"","code":"fdir <- system.file(\"extdata/trees\", package = \"phangorn\") # RAxML best-known tree with bipartition support (from previous analysis) raxml.tree <- read.tree(file.path(fdir,\"RAxML_bipartitions.woodmouse\")) # RAxML bootstrap trees (from previous analysis) raxml.bootstrap <- read.tree(file.path(fdir,\"RAxML_bootstrap.woodmouse\")) par(mfrow=c(1,2)) plotBS(raxml.tree, raxml.bootstrap, \"p\") plotBS(raxml.tree, raxml.bootstrap, \"p\", \"TBE\")"},{"path":"https://klausvigo.github.io/phangorn/reference/pml.control.html","id":null,"dir":"Reference","previous_headings":"","what":"Auxiliary for Controlling Fitting — pml.control","title":"Auxiliary for Controlling Fitting — pml.control","text":"Auxiliary functions providing optim.pml, pml_bb fitting. Use construct control ratchet.par argument.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.control.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Auxiliary for Controlling Fitting — pml.control","text":"","code":"pml.control(epsilon = 1e-08, maxit = 10, trace = 1, tau = 1e-08, statefreq = \"empirical\") ratchet.control(iter = 20L, maxit = 200L, minit = 100L, prop = 1/2, rell = TRUE, bs = 1000L)"},{"path":"https://klausvigo.github.io/phangorn/reference/pml.control.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Auxiliary for Controlling Fitting — pml.control","text":"epsilon Stop criterion optimization (see details). maxit Maximum number iterations (see details). trace Show output optimization (see details). tau minimal edge length. statefreq take \"empirical\" \"estimate\" state frequencies. iter Number iterations stop change. minit Minimum number iterations. prop used rearrangement=stochastic. many NNI moves added tree proportion number taxa.´ rell logical, TRUE approximate bootstraping similar Minh et al. (2013) performed. bs number approximate bootstrap samples.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.control.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Auxiliary for Controlling Fitting — pml.control","text":"list components named arguments controlling fitting process.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.control.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Auxiliary for Controlling Fitting — pml.control","text":"pml.control controls fitting process. epsilon maxit defined outer loop, affects pmlCluster, pmlPart pmlMix. epsilon absolute difference , instead defined (logLik(k)-logLik(k+1))/logLik(k+1). seems good compromise work reasonably well small large trees alignments. trace set zero put shown, functions called internally trace decreased one, higher trace produces feedback. can useful figure long run take debugging. statefreq controls base/state frequencies optimized empirical estimates taken, applies. nucleotide models (e.g. JC, SYM) equal base frequencies amino acid models precomputed state frequencies used, '+F' specified. tau might exactly zero duplicated sequences alignment observed. case analysis performed unique sequences duplicated taxa added tree zero edge length. may lead multifurcations three identical sequences. optimization good practice prune away edges length tau using di2multi. See also Janzen et al. (2021).","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.control.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Auxiliary for Controlling Fitting — pml.control","text":"Minh, B. Q., Nguyen, M. . T., & von Haeseler, . (2013). Ultrafast approximation phylogenetic bootstrap. Molecular biology evolution, 30(5), 1188-1195. Janzen, T., Bokma, F.,Etienne, R. S. (2021) Nucleotide Substitutions Speciation may Explain Substitution Rate Variation, Systematic Biology, 71(5), 1244–1254.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/pml.control.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Auxiliary for Controlling Fitting — pml.control","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.control.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Auxiliary for Controlling Fitting — pml.control","text":"","code":"pml.control() #> $epsilon #> [1] 1e-08 #> #> $maxit #> [1] 10 #> #> $trace #> [1] 1 #> #> $tau #> [1] 1e-08 #> #> $statefreq #> [1] \"empirical\" #> pml.control(maxit=25) #> $epsilon #> [1] 1e-08 #> #> $maxit #> [1] 25 #> #> $trace #> [1] 1 #> #> $tau #> [1] 1e-08 #> #> $statefreq #> [1] \"empirical\" #>"},{"path":"https://klausvigo.github.io/phangorn/reference/pml.fit.html","id":null,"dir":"Reference","previous_headings":"","what":"Internal maximum likelihood functions. — lli","title":"Internal maximum likelihood functions. — lli","text":"functions internally used likelihood computations pml optim.pml.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.fit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Internal maximum likelihood functions. — lli","text":"","code":"lli(data, tree = NULL, ...) edQt(Q = c(1, 1, 1, 1, 1, 1), bf = c(0.25, 0.25, 0.25, 0.25)) pml.free() pml.init(data, k = 1L) pml.fit(tree, data, bf = rep(1/length(levels), length(levels)), shape = 1, k = 1, Q = rep(1, length(levels) * (length(levels) - 1)/2), levels = attr(data, \"levels\"), inv = 0, rate = 1, g = NULL, w = NULL, eig = NULL, INV = NULL, ll.0 = NULL, llMix = NULL, wMix = 0, ..., site = FALSE, ASC = FALSE, site.rate = \"gamma\")"},{"path":"https://klausvigo.github.io/phangorn/reference/pml.fit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Internal maximum likelihood functions. — lli","text":"data alignment, object class phyDat. tree phylogenetic tree, object class phylo. ... arguments passed methods. Q vector containing lower triangular part rate matrix. bf Base frequencies. k Number intervals discrete gamma distribution. shape Shape parameter gamma distribution. levels alphabet used e.g. c(\"\", \"c\", \"g\", \"t\") DNA inv Proportion invariable sites. rate Rate. g vector quantiles (default NULL) w vector probabilities (default NULL) eig Eigenvalue decomposition Q INV Sparse representation invariant sites ll.0 default NULL llMix default NULL wMix default NULL site return log-likelihood vector sitewise likelihood values ASC ascertainment bias correction (ASC), allows estimate models like Lewis' Mkv. site.rate Indicates type gamma distribution use. Options \"gamma\" approach Yang 1994 (default), \"gamma_quadrature\" Laguerre quadrature approach Felsenstein 2001 \"freerate\".","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.fit.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Internal maximum likelihood functions. — lli","text":"pml.fit returns log-likelihood.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.fit.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Internal maximum likelihood functions. — lli","text":"functions exported used different packages far package coalescentMCMC, intended end user. functions call C code far less forgiving import expect pml.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.fit.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Internal maximum likelihood functions. — lli","text":"Felsenstein, J. (1981) Evolutionary trees DNA sequences: maximum likelihood approach. Journal Molecular Evolution, 17, 368--376.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/pml.fit.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Internal maximum likelihood functions. — lli","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.html","id":null,"dir":"Reference","previous_headings":"","what":"Likelihood of a tree. — as.pml","title":"Likelihood of a tree. — as.pml","text":"pml computes likelihood phylogenetic tree given sequence alignment model. optim.pml optimizes different model parameters. user-friendly interface see pml_bb.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Likelihood of a tree. — as.pml","text":"","code":"as.pml(x, ...) pml(tree, data, bf = NULL, Q = NULL, inv = 0, k = 1, shape = 1, rate = 1, model = NULL, site.rate = \"gamma\", ASC = FALSE, ...) optim.pml(object, optNni = FALSE, optBf = FALSE, optQ = FALSE, optInv = FALSE, optGamma = FALSE, optEdge = TRUE, optRate = FALSE, optRooted = FALSE, control = pml.control(), model = NULL, rearrangement = ifelse(optNni, \"NNI\", \"none\"), subs = NULL, ratchet.par = ratchet.control(), ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/pml.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Likelihood of a tree. — as.pml","text":"x far object class modelTest. ... arguments passed methods. tree phylogenetic tree, object class phylo. data alignment, object class phyDat. bf Base frequencies (see details). Q vector containing lower triangular part rate matrix. inv Proportion invariable sites. k Number intervals discrete gamma distribution. shape Shape parameter gamma distribution. rate Rate. model allows choose amino acid models nucleotide model, see details. site.rate Indicates type gamma distribution use. Options \"gamma\" approach Yang 1994 (default), \"\"gamma_quadrature\"\" Laguerre quadrature approach Felsenstein 2001 \"freerate\". ASC ascertainment bias correction (ASC), allows estimate models like Lewis' Mkv. object object class pml. optNni Logical value indicating whether topology gets optimized (NNI). optBf Logical value indicating whether base frequencies gets optimized. optQ Logical value indicating whether rate matrix gets optimized. optInv Logical value indicating whether proportion variable size gets optimized. optGamma Logical value indicating whether gamma rate parameter gets optimized. optEdge Logical value indicating edge lengths gets optimized. optRate Logical value indicating overall rate gets optimized. optRooted Logical value indicating edge lengths rooted tree get optimized. control list parameters controlling fitting process. rearrangement type tree tree rearrangements perform, one \"none\", \"NNI\", \"stochastic\" \"ratchet\" subs (integer) vector length Q specify optimization Q ratchet.par search parameter stochastic search","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Likelihood of a tree. — as.pml","text":"pml optim.pml return list class pml, useful computations like tree phylogenetic tree. data alignment. logLik Log-likelihood tree. siteLik Site log-likelihoods. weight Weight site patterns.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Likelihood of a tree. — as.pml","text":"Base frequencies pml can supplied different ways. amino acid usually defined specifying model, argument bf need specified. Otherwise bf=NULL, state given equal probability. can numeric vector given frequencies. Last least bf can string \"equal\", \"empirical\" codon models additionally \"F3x4\". topology search uses nearest neighbor interchange (NNI) implementation similar phyML. option model pml used amino acid models. option model defines nucleotide model getting optimized, models included modeltest can chosen. Setting option (e.g. \"K81\" \"GTR\") overrules options optBf optQ. overview estimate different phylogenetic models pml: Via model optim.pml following nucleotide models can specified: JC, F81, K80, HKY, TrNe, TrN, TPM1, K81, TPM1u, TPM2, TPM2u, TPM3, TPM3u, TIM1e, TIM1, TIM2e, TIM2, TIM3e, TIM3, TVMe, TVM, SYM GTR. models specified Posada (2008). far 17 amino acid models supported (\"WAG\", \"JTT\", \"LG\", \"Dayhoff\", \"cpREV\", \"mtmam\", \"mtArt\", \"MtZoa\", \"mtREV24\", \"VT\",\"RtREV\", \"HIVw\", \"HIVb\", \"FLU\", \"Blosum62\", \"Dayhoff_DCMut\" \"JTT_DCMut\") additionally rate matrices amino acid frequencies can supplied. also possible estimate codon models (e.g. YN98), details see also chapter vignette(\"phangorn-specials\"). option 'optRooted' set TRUE edge lengths rooted tree optimized. tree rooted now ultrametric! Optimising rooted trees generally much slower. rearrangement set stochastic stochastic search algorithm similar Nguyen et al. (2015). ratchet likelihood ratchet Vos (2003). helps often find better tree topologies, especially larger trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Likelihood of a tree. — as.pml","text":"Felsenstein, J. (1981) Evolutionary trees DNA sequences: maximum likelihood approach. Journal Molecular Evolution, 17, 368--376. Felsenstein, J. (2004). Inferring Phylogenies. Sinauer Associates, Sunderland. Yang, Z. (2006). Computational Molecular evolution. Oxford University Press, Oxford. Adachi, J., P. J. Waddell, W. Martin, M. Hasegawa (2000) Plastid genome phylogeny model amino acid substitution proteins encoded chloroplast DNA. Journal Molecular Evolution, 50, 348--358 Rota-Stabelli, O., Z. Yang, M. Telford. (2009) MtZoa: general mitochondrial amino acid substitutions model animal evolutionary studies. Mol. Phyl. Evol, 52(1), 268--72 Whelan, S. Goldman, N. (2001) general empirical model protein evolution derived multiple protein families using maximum-likelihood approach. Molecular Biology Evolution, 18, 691--699 Le, S.Q. Gascuel, O. (2008) LG: Improved, General Amino-Acid Replacement Matrix Molecular Biology Evolution, 25(7), 1307--1320 Yang, Z., R. Nielsen, M. Hasegawa (1998) Models amino acid substitution applications Mitochondrial protein evolution. Molecular Biology Evolution, 15, 1600--1611 Abascal, F., D. Posada, R. Zardoya (2007) MtArt: new Model amino acid replacement Arthropoda. Molecular Biology Evolution, 24, 1--5 Kosiol, C, Goldman, N (2005) Different versions Dayhoff rate matrix - Molecular Biology Evolution, 22, 193--199 L.-T. Nguyen, H.. Schmidt, . von Haeseler, B.Q. Minh (2015) IQ-TREE: fast effective stochastic algorithm estimating maximum likelihood phylogenies. Molecular Biology Evolution, 32, 268--274. Vos, R. . (2003) Accelerated Likelihood Surface Exploration: Likelihood Ratchet. Systematic Biology, 52(3), 368--373 Yang, Z., R. Nielsen (1998) Synonymous nonsynonymous rate variation nuclear genes mammals. Journal Molecular Evolution, 46, 409-418. Lewis, P.O. (2001) likelihood approach estimating phylogeny discrete morphological character data. Systematic Biology 50, 913--925.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/pml.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Likelihood of a tree. — as.pml","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Likelihood of a tree. — as.pml","text":"","code":"example(NJ) #> #> NJ> data(Laurasiatherian) #> #> NJ> dm <- dist.ml(Laurasiatherian) #> #> NJ> tree <- NJ(dm) #> #> NJ> plot(tree) # Jukes-Cantor (starting tree from NJ) fitJC <- pml(tree, Laurasiatherian) # optimize edge length parameter fitJC <- optim.pml(fitJC) #> optimize edge weights: -54808.83 --> -54230.41 #> optimize edge weights: -54230.41 --> -54230.41 #> optimize edge weights: -54230.41 --> -54230.41 fitJC #> model: JC #> loglikelihood: -54230.41 #> unconstrained loglikelihood: -17300.92 #> #> Rate matrix: #> a c g t #> a 0 1 1 1 #> c 1 0 1 1 #> g 1 1 0 1 #> t 1 1 1 0 #> #> Base frequencies: #> a c g t #> 0.25 0.25 0.25 0.25 if (FALSE) { # search for a better tree using NNI rearrangements fitJC <- optim.pml(fitJC, optNni=TRUE) fitJC plot(fitJC$tree) # JC + Gamma + I - model fitJC_GI <- update(fitJC, k=4, inv=.2) # optimize shape parameter + proportion of invariant sites fitJC_GI <- optim.pml(fitJC_GI, optGamma=TRUE, optInv=TRUE) # GTR + Gamma + I - model fitGTR <- optim.pml(fitJC_GI, rearrangement = \"stochastic\", optGamma=TRUE, optInv=TRUE, model=\"GTR\") } # 2-state data (RY-coded) dat <- acgt2ry(Laurasiatherian) fit2ST <- pml(tree, dat) fit2ST <- optim.pml(fit2ST,optNni=TRUE) #> optimize edge weights: -19996.09 --> -17092.17 #> optimize edge weights: -17092.17 --> -17092.17 #> optimize topology: -17092.17 --> -17024.81 NNI moves: 10 #> optimize edge weights: -17024.81 --> -17024.81 #> optimize topology: -17024.81 --> -17024.81 NNI moves: 0 fit2ST #> model: Mk #> loglikelihood: -17024.81 #> unconstrained loglikelihood: -8702.769 #> #> Rate matrix: #> r y #> r 0 1 #> y 1 0 #> #> Base frequencies: #> r y #> 0.5 0.5 # show some of the methods available for class pml methods(class=\"pml\") #> [1] AICc BIC anova logLik plot print simSeq update vcov #> see '?methods' for accessing help and source code"},{"path":"https://klausvigo.github.io/phangorn/reference/pmlCluster.html","id":null,"dir":"Reference","previous_headings":"","what":"Stochastic Partitioning — pmlCluster","title":"Stochastic Partitioning — pmlCluster","text":"Stochastic Partitioning genes p cluster.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlCluster.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Stochastic Partitioning — pmlCluster","text":"","code":"pmlCluster(formula, fit, weight, p = 1:5, part = NULL, nrep = 10, control = pml.control(epsilon = 1e-08, maxit = 10, trace = 1), ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/pmlCluster.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Stochastic Partitioning — pmlCluster","text":"formula formula object (see details). fit object class pml. weight weight matrix frequency site patterns genes. p number clusters. part starting partition, otherwise random partition generated. nrep number replicates p. control list parameters controlling fitting process. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlCluster.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Stochastic Partitioning — pmlCluster","text":"pmlCluster returns list elements logLik log-likelihood fit trees list trees optimization. fits fits final partitions","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlCluster.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Stochastic Partitioning — pmlCluster","text":"formula object allows specify parameter get optimized. formula generally form edge + bf + Q ~ rate + shape + ...{}, left side parameters get optimized cluster, right parameter optimized specific cluster. parameters available \"nni\", \"bf\", \"Q\", \"inv\", \"shape\", \"edge\", \"rate\". parameter can used formula. also restriction combinations parameters can get used. \"rate\" available right side. \"rate\" specified left hand side \"edge\" specified (either side), \"rate\" specified right hand side follows directly edge .","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlCluster.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Stochastic Partitioning — pmlCluster","text":"K. P. Schliep (2009). Applications statistical phylogenetics (PhD Thesis) Lanfear, R., Calcott, B., Ho, S.Y.W. Guindon, S. (2012) PartitionFinder: Combined Selection Partitioning Schemes Substitution Models Phylogenetic Analyses. Molecular Biology Evolution, 29(6), 1695-1701","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/pmlCluster.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Stochastic Partitioning — pmlCluster","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlCluster.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Stochastic Partitioning — pmlCluster","text":"","code":"if (FALSE) { data(yeast) dm <- dist.logDet(yeast) tree <- NJ(dm) fit <- pml(tree,yeast) fit <- optim.pml(fit) weight <- xtabs(~ index+genes,attr(yeast, \"index\")) set.seed(1) sp <- pmlCluster(edge~rate, fit, weight, p=1:4) sp SH.test(sp) }"},{"path":"https://klausvigo.github.io/phangorn/reference/pmlMix.html","id":null,"dir":"Reference","previous_headings":"","what":"Phylogenetic mixture model — pmlMix","title":"Phylogenetic mixture model — pmlMix","text":"Phylogenetic mixture model.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlMix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Phylogenetic mixture model — pmlMix","text":"","code":"pmlMix(formula, fit, m = 2, omega = rep(1/m, m), control = pml.control(epsilon = 1e-08, maxit = 20, trace = 1), ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/pmlMix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Phylogenetic mixture model — pmlMix","text":"formula formula object (see details). fit object class pml. m number mixtures. omega mixing weights. control list parameters controlling fitting process. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlMix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Phylogenetic mixture model — pmlMix","text":"pmlMix returns list elements logLik log-likelihood fit omega mixing weights. fits fits final mixtures.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlMix.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Phylogenetic mixture model — pmlMix","text":"formula object allows specify parameter get optimized. formula generally form edge + bf + Q ~ rate + shape + ...{}, left side parameters get optimized mixtures, right parameter optimized specific mixture. parameters available \"nni\", \"bf\", \"Q\", \"inv\", \"shape\", \"edge\", \"rate\". parameters can used formula. \"rate\" \"nni\" available right side formula. hand parameters invariable sites allowed left-hand side. convergence algorithm slow likely algorithm can get stuck local optima.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/pmlMix.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Phylogenetic mixture model — pmlMix","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlMix.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Phylogenetic mixture model — pmlMix","text":"","code":"if (FALSE) { X <- allSitePattern(5) tree <- read.tree(text = \"((t1:0.3,t2:0.3):0.1,(t3:0.3,t4:0.3):0.1,t5:0.5);\") fit <- pml(tree,X, k=4) weights <- 1000*exp(fit$siteLik) attr(X, \"weight\") <- weights fit1 <- update(fit, data=X, k=1) fit2 <- update(fit, data=X) (fitMixture <- pmlMix(edge~rate, fit1 , m=4)) (fit2 <- optim.pml(fit2, optGamma=TRUE)) data(Laurasiatherian) dm <- dist.logDet(Laurasiatherian) tree <- NJ(dm) fit <- pml(tree, Laurasiatherian) fit <- optim.pml(fit) fit2 <- update(fit, k=4) fit2 <- optim.pml(fit2, optGamma=TRUE) fitMix <- pmlMix(edge ~ rate, fit, m=4) fitMix # # simulation of mixture models # X <- allSitePattern(5) tree1 <- read.tree(text = \"((t1:0.1,t2:0.5):0.1,(t3:0.1,t4:0.5):0.1,t5:0.5);\") tree2 <- read.tree(text = \"((t1:0.5,t2:0.1):0.1,(t3:0.5,t4:0.1):0.1,t5:0.5);\") tree1 <- unroot(tree1) tree2 <- unroot(tree2) fit1 <- pml(tree1,X) fit2 <- pml(tree2,X) weights <- 2000*exp(fit1$siteLik) + 1000*exp(fit2$siteLik) attr(X, \"weight\") <- weights fit1 <- pml(tree1, X) fit2 <- optim.pml(fit1) logLik(fit2) AIC(fit2, k=log(3000)) fitMixEdge <- pmlMix( ~ edge, fit1, m=2) logLik(fitMixEdge) AIC(fitMixEdge, k=log(3000)) fit.p <- pmlPen(fitMixEdge, .25) logLik(fit.p) AIC(fit.p, k=log(3000)) }"},{"path":"https://klausvigo.github.io/phangorn/reference/pmlPart.html","id":null,"dir":"Reference","previous_headings":"","what":"Partition model. — multiphyDat2pmlPart","title":"Partition model. — multiphyDat2pmlPart","text":"Model estimate phylogenies partitioned data.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlPart.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Partition model. — multiphyDat2pmlPart","text":"","code":"multiphyDat2pmlPart(x, method = \"unrooted\", tip.dates = NULL, ...) pmlPart2multiPhylo(x) pmlPart(formula, object, control = pml.control(epsilon = 1e-08, maxit = 10, trace = 1), model = NULL, method = \"unrooted\", ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/pmlPart.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Partition model. — multiphyDat2pmlPart","text":"x object class pmlPart method One \"unrooted\", \"ultrametric\" \"tiplabeled\". unrooted properly supported right now. tip.dates named vector sampling times associated tips/sequences. Leave empty estimating tip dated phylogenies. ... arguments passed methods. formula formula object (see details). object object class pml list objects class pml . control list parameters controlling fitting process. model vector containing models containing model partition.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlPart.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Partition model. — multiphyDat2pmlPart","text":"kcluster returns list elements logLik log-likelihood fit trees list trees optimization. object object class \"pml\" \"pmlPart\"","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlPart.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Partition model. — multiphyDat2pmlPart","text":"formula object allows specify parameter get optimized. formula generally form edge + bf + Q ~ rate + shape + ...{}, left side parameters get optimized partitions, right parameter optimized specific partition. parameters available \"nni\", \"bf\", \"Q\", \"inv\", \"shape\", \"edge\", \"rate\". parameters can used formula. \"rate\" available right side formula. partitions different edge weights, topology, pmlPen can try find parsimonious models (see example). pmlPart2multiPhylo convenience function extract trees pmlPart object.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/pmlPart.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Partition model. — multiphyDat2pmlPart","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlPart.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Partition model. — multiphyDat2pmlPart","text":"","code":"data(yeast) dm <- dist.logDet(yeast) tree <- NJ(dm) fit <- pml(tree,yeast) fits <- optim.pml(fit) #> optimize edge weights: -737063 --> -734615.7 #> optimize edge weights: -734615.7 --> -734615.7 #> optimize edge weights: -734615.7 --> -734615.7 weight=xtabs(~ index+genes,attr(yeast, \"index\"))[,1:10] sp <- pmlPart(edge ~ rate + inv, fits, weight=weight) #> loglik: -61530.38 --> -59834.29 #> loglik: -59834.29 --> -59833.25 #> loglik: -59833.25 --> -59833.25 #> loglik: -59833.25 --> -59833.25 sp #> #> loglikelihood: -59833.25 #> #> loglikelihood of partitions: #> -9827.497 -8159.024 -8056.932 -5237.677 -3809.733 -5503.277 -2752.2 -7200.052 -4632.422 -4654.434 #> AIC: 119730.5 BIC: 119963.5 #> #> Proportion of invariant sites: 0.4000129 0.3179377 0.4746756 0.4490179 0.4122204 0.2912345 0.2419215 0.3097905 0.4794272 0.3884177 #> #> Rates: #> 1.108058 0.9656371 0.8692633 0.8928421 0.8097406 1.266635 1.296066 1.212794 0.8425937 0.8275096 #> #> Base frequencies: #> [,1] [,2] [,3] [,4] #> [1,] 0.25 0.25 0.25 0.25 #> #> Rate matrix: #> [,1] [,2] [,3] [,4] [,5] [,6] #> [1,] 1 1 1 1 1 1 if (FALSE) { sp2 <- pmlPart(~ edge + inv, fits, weight=weight) sp2 AIC(sp2) sp3 <- pmlPen(sp2, lambda = 2) AIC(sp3) }"},{"path":"https://klausvigo.github.io/phangorn/reference/pml_bb.html","id":null,"dir":"Reference","previous_headings":"","what":"Likelihood of a tree. — pml_bb","title":"Likelihood of a tree. — pml_bb","text":"pml_bb pml black box infers phylogenetic tree infers tree using maximum likelihood (ML).","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml_bb.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Likelihood of a tree. — pml_bb","text":"","code":"pml_bb(x, model = NULL, rearrangement = \"stochastic\", method = \"unrooted\", start = NULL, tip.dates = NULL, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/pml_bb.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Likelihood of a tree. — pml_bb","text":"x alignment class (either class phyDat, DNAbin AAbin) object class modelTest. model string providing model (e.g. \"GTR+G(4)+\"). necessary modelTest object supplied. rearrangement Type tree tree rearrangements perform, one \"none\", \"NNI\", \"stochastic\" \"ratchet\" method One \"unrooted\", \"ultrametric\" \"tiplabeled\". start starting tree can supplied. tip.dates named vector sampling times associated tips / sequences. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml_bb.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Likelihood of a tree. — pml_bb","text":"pml_bb returns object class pml.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml_bb.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Likelihood of a tree. — pml_bb","text":"pml_bb convenience function combining pml optim.pml. tree supplied, function generate starting tree. modelTest object supplied model chosen according BIC. tip.dates named vector sampling times, time unit, time increasing toward present. example, may units “days since study start” “years since 10,000 BCE”, “millions years ago”. model takes string tries extract model. modelTest object best BIC model chosen default. string contain substitution model (e.g. JC, GTR, WAG) can additional term \"+\" invariant sites, \"+G(4)\" discrete gamma model, \"+R(4)\" free rate model. case amino acid models term \"+F\" estimating amino acid frequencies. Whether nucleotide frequencies estimated defined pml.control. Currently experimental likely change.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/pml_bb.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Likelihood of a tree. — pml_bb","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml_bb.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Likelihood of a tree. — pml_bb","text":"","code":"data(woodmouse) tmp <- pml_bb(woodmouse, model=\"HKY+I\", rearrangement=\"NNI\") #> optimize edge weights: -1815.673 --> -1811.422 #> optimize rate matrix: -1811.422 --> -1759.688 #> optimize invariant sites: -1759.688 --> -1745.146 #> optimize edge weights: -1745.146 --> -1744.974 #> optimize topology: -1744.974 --> -1744.2 NNI moves: 1 #> optimize rate matrix: -1744.2 --> -1744.187 #> optimize invariant sites: -1744.187 --> -1744.186 #> optimize edge weights: -1744.186 --> -1744.186 #> optimize topology: -1744.186 --> -1744.186 NNI moves: 0 #> optimize rate matrix: -1744.186 --> -1744.186 #> optimize invariant sites: -1744.186 --> -1744.186 #> optimize edge weights: -1744.186 --> -1744.186 if (FALSE) { data(Laurasiatherian) mt <- modelTest(Laurasiatherian) fit <- pml_bb(mt) # estimate free rate model with 2 rate categories fit_HKY_R2 <- pml_bb(woodmouse, model=\"HKY+R(2)\") }"},{"path":"https://klausvigo.github.io/phangorn/reference/read.aa.html","id":null,"dir":"Reference","previous_headings":"","what":"Read Amino Acid Sequences in a File — read.aa","title":"Read Amino Acid Sequences in a File — read.aa","text":"function reads amino acid sequences file, returns matrix list DNA sequences names taxa read file row names.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.aa.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Read Amino Acid Sequences in a File — read.aa","text":"","code":"read.aa(file, format = \"interleaved\", skip = 0, nlines = 0, comment.char = \"#\", seq.names = NULL)"},{"path":"https://klausvigo.github.io/phangorn/reference/read.aa.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Read Amino Acid Sequences in a File — read.aa","text":"file file name specified either variable mode character, double-quoted string. format character string specifying format DNA sequences. Three choices possible: \"interleaved\", \"sequential\", \"fasta\", unambiguous abbreviation . skip number lines input file skip beginning read data. nlines number lines read (default file read end). comment.char single character, remaining line character ignored. seq.names names give sequence; default names read file used.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.aa.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Read Amino Acid Sequences in a File — read.aa","text":"matrix amino acid sequences.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.aa.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Read Amino Acid Sequences in a File — read.aa","text":"https://en.wikipedia.org/wiki/FASTA_format Felsenstein, J. (1993) Phylip (Phylogeny Inference Package) version 3.5c. Department Genetics, University Washington. https://phylipweb.github.io/phylip/","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/read.aa.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Read Amino Acid Sequences in a File — read.aa","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.partitions.html","id":null,"dir":"Reference","previous_headings":"","what":"Function to import partitioned data from nexus files — read.nexus.partitions","title":"Function to import partitioned data from nexus files — read.nexus.partitions","text":"read.nexus.partitions reads sequences NEXUS format splits data according charsets givb SETS block.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.partitions.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function to import partitioned data from nexus files — read.nexus.partitions","text":"","code":"read.nexus.partitions(file, return = \"list\", ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.partitions.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function to import partitioned data from nexus files — read.nexus.partitions","text":"file file name. return either return list eeach element 'phyDat' object object class 'multiphyDat' ... arguments passed methods.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.partitions.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Function to import partitioned data from nexus files — read.nexus.partitions","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.partitions.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Function to import partitioned data from nexus files — read.nexus.partitions","text":"","code":"tree <- rtree(10) dat <- simSeq(tree, l=24) fcat <- function(..., file = zz) cat(..., file=file, sep=\"\", append=TRUE) zz <- tempfile(pattern=\"file\", tmpdir=tempdir(), fileext=\".nex\") write.phyDat(dat, file=zz, format=\"nexus\") fcat(\"BEGIN SETS;\\n\") fcat(\" Charset codon1 = 1-12/3;\\n\") fcat(\" Charset codon2 = 2-12/3;\\n\") fcat(\" Charset codon3 = 3-12/3;\\n\") fcat(\" Charset range = 16-18;\\n\") fcat(\" Charset range2 = 13-15 19-21;\\n\") fcat(\" Charset singles = 22 23 24;\\n\") fcat(\"END;\\n\") tmp <- read.nexus.partitions(zz) tmp #> $codon1 #> 10 sequences with 4 character and 4 different site patterns. #> The states are a c g t #> #> $codon2 #> 10 sequences with 4 character and 4 different site patterns. #> The states are a c g t #> #> $codon3 #> 10 sequences with 4 character and 4 different site patterns. #> The states are a c g t #> #> $range #> 10 sequences with 3 character and 3 different site patterns. #> The states are a c g t #> #> $range2 #> 10 sequences with 6 character and 6 different site patterns. #> The states are a c g t #> #> $singles #> 10 sequences with 3 character and 3 different site patterns. #> The states are a c g t #> unlink(zz)"},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.splits.html","id":null,"dir":"Reference","previous_headings":"","what":"Function to import and export splits and networks — read.nexus.splits","title":"Function to import and export splits and networks — read.nexus.splits","text":"read.nexus.splits, write.nexus.splits, read.nexus.networx, write.nexus.networx can used import export splits networks nexus format allow exchange object software like SplitsTree. write.splits returns human readable output.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.splits.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function to import and export splits and networks — read.nexus.splits","text":"","code":"read.nexus.splits(file) write.nexus.splits(obj, file = \"\", weights = NULL, taxa = TRUE, append = FALSE) write.nexus.networx(obj, file = \"\", taxa = TRUE, splits = TRUE, append = FALSE) read.nexus.networx(file, splits = TRUE) write.splits(x, file = \"\", zero.print = \".\", one.print = \"|\", print.labels = TRUE, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.splits.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function to import and export splits and networks — read.nexus.splits","text":"file file name. obj object class splits. weights Edge weights. taxa logical. TRUE taxa block added append logical. TRUE nexus blocks added file. splits logical. TRUE nexus blocks added file. x object class splits. zero.print character printed zeros. one.print character printed ones. print.labels logical. TRUE labels printed. ... arguments passed methods. labels names taxa.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.splits.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Function to import and export splits and networks — read.nexus.splits","text":"write.nexus.splits write.nexus.networx write splits networx object read software like SplitsTree. read.nexus.splits read.nexus.networx return splits networx object.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.splits.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Function to import and export splits and networks — read.nexus.splits","text":"read.nexus.splits reads splits block nexus file. assumes different co-variables tab delimited bipartition separated white-space. Comments square brackets ignored.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.splits.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Function to import and export splits and networks — read.nexus.splits","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.splits.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Function to import and export splits and networks — read.nexus.splits","text":"","code":"(sp <- as.splits(rtree(5))) #> t3 t5 t1 t4 t2 #> [1,] | . . . . #> [2,] . | . . . #> [3,] . . | . . #> [4,] . . . | . #> [5,] . . . . | #> [6,] | | | | | #> [7,] | | | | . #> [8,] | | | . . #> [9,] | | . . . write.nexus.splits(sp) #> #NEXUS #> #> [Splits block for Spectronet or SplitsTree] #> [generated by phangorn 3.0.0.0 ] #> #> BEGIN TAXA; #> \tDIMENSIONS ntax=5; #> \tTAXLABELS t3 t5 t1 t4 t2 ; #> END; #> #> BEGIN SPLITS; #> \tDIMENSIONS ntax=5 nsplits=8; #> \tFORMAT labels=left weights=yes confidences=no intervals=no; #> \tMATRIX #> \t\t1\t0.0651043930556625 \t1, #> \t\t2\t0.65642609493807 \t1 3 4 5, #> \t\t3\t0.137199030257761 \t1 2 4 5, #> \t\t4\t0.59462882950902 \t1 2 3 5, #> \t\t5\t0.902287806617096 \t1 2 3 4, #> \t\t6\t0.699318364728242 \t1 2 3 4, #> \t\t7\t0.525980484671891 \t1 2 3, #> \t\t8\t0.736393740167841 \t1 2, #> \t; #> END; spl <- allCircularSplits(5) plot(as.networx(spl)) write.splits(spl, print.labels = FALSE) #> #> #> |.... #> #> .|... #> #> ..|.. #> #> ...|. #> #> ....| #> #> ||... #> #> .||.. #> #> ..||. #> #> ...|| #> #> |...|"},{"path":"https://klausvigo.github.io/phangorn/reference/read.phyDat.html","id":null,"dir":"Reference","previous_headings":"","what":"Import and export sequence alignments — read.phyDat","title":"Import and export sequence alignments — read.phyDat","text":"functions read write sequence alignments.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.phyDat.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Import and export sequence alignments — read.phyDat","text":"","code":"read.phyDat(file, format = \"phylip\", type = \"DNA\", ...) write.phyDat(x, file, format = \"phylip\", colsep = \"\", nbcol = -1, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/read.phyDat.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Import and export sequence alignments — read.phyDat","text":"file file name specified either variable mode character, double-quoted string. format File format sequence alignment (see details). Several popular formats supported: \"phylip\", \"interleaved\", \"sequential\", \"clustal\", \"fasta\" \"nexus\", unambiguous abbreviation . type Type sequences (\"DNA\", \"AA\", \"CODON\" \"USER\"). ... arguments passed methods. x object class phyDat. colsep character used separate columns (single space default). nbcol numeric specifying number columns per row (-1 default); may negative implying nucleotides printed single line.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.phyDat.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Import and export sequence alignments — read.phyDat","text":"read.phyDat returns object class phyDat, write.phyDat write alignment file.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.phyDat.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Import and export sequence alignments — read.phyDat","text":"write.phyDat calls function write.dna write.nexus.data read.phyDat calls function read.dna, read.aa read.nexus.data, see details . may import data directly read.dna read.nexus.data convert data class phyDat.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.phyDat.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Import and export sequence alignments — read.phyDat","text":"https://www.ncbi.nlm.nih.gov/blast/fasta.shtml Felsenstein, J. (1993) Phylip (Phylogeny Inference Package) version 3.5c. Department Genetics, University Washington. https://phylipweb.github.io/phylip/","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/read.phyDat.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Import and export sequence alignments — read.phyDat","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.phyDat.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Import and export sequence alignments — read.phyDat","text":"","code":"fdir <- system.file(\"extdata/trees\", package = \"phangorn\") primates <- read.phyDat(file.path(fdir, \"primates.dna\"), format = \"interleaved\")"},{"path":"https://klausvigo.github.io/phangorn/reference/reexports.html","id":null,"dir":"Reference","previous_headings":"","what":"Objects exported from other packages — reexports","title":"Objects exported from other packages — reexports","text":"objects imported packages. Follow links see documentation. generics glance, tidy","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/simSeq.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate sequences. — simSeq","title":"Simulate sequences. — simSeq","text":"Simulate sequences given evolutionary tree.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/simSeq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate sequences. — simSeq","text":"","code":"simSeq(x, ...) # S3 method for phylo simSeq(x, l = 1000, Q = NULL, bf = NULL, rootseq = NULL, type = \"DNA\", model = NULL, levels = NULL, rate = 1, ancestral = FALSE, code = 1, ...) # S3 method for pml simSeq(x, ancestral = FALSE, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/simSeq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate sequences. — simSeq","text":"x phylogenetic tree tree, .e. object class phylo object class pml. ... arguments passed methods. l length sequence simulate. Q rate matrix. bf Base frequencies. rootseq vector length l containing root sequence. provided, root sequence randomly generated. type Type sequences (\"DNA\", \"AA\", \"CODON\" \"USER\"). model Amino acid model evolution employ, example \"WAG\", \"JTT\", \"Dayhoff\" \"LG\". full list supported models, type phangorn:::.aamodels. Ignored type equal \"AA\". levels character vector different character tokens. Ignored unless type = \"USER\". rate numerical value greater zero giving mutation rate scaler edge lengths. ancestral Logical specifying whether return ancestral sequences. code ncbi genetic code number translation (see details). default standard genetic code used.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/simSeq.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate sequences. — simSeq","text":"simSeq returns object class phyDat.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/simSeq.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate sequences. — simSeq","text":"simSeq generic function simulate sequence alignments along phylogeny. quite flexible can generate DNA, RNA, amino acids, codon, morphological binary sequences. simSeq can take input phylogenetic tree class phylo, pml object; return object class phyDat. also low level version, lacks rate variation, one can combine different alignments rates (see example). rate parameter acts like scaler edge lengths. codon models type=\"CODON\", two additional arguments dnds dN/dS ratio tstv transition transversion ratio can supplied. Defaults: x tree class phylo, sequences generated default Jukes-Cantor DNA model (\"JC\"). bf specified, states treated equally probable. Q specified, uniform rate matrix employed.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/simSeq.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Simulate sequences. — simSeq","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/simSeq.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate sequences. — simSeq","text":"","code":"if (FALSE) { data(Laurasiatherian) tree <- nj(dist.ml(Laurasiatherian)) fit <- pml(tree, Laurasiatherian, k=4) fit <- optim.pml(fit, optNni=TRUE, model=\"GTR\", optGamma=TRUE) data <- simSeq(fit) } tree <- rtree(5) plot(tree) nodelabels() # Example for simple DNA alignment data <- simSeq(tree, l = 10, type=\"DNA\", bf=c(.1,.2,.3,.4), Q=1:6, ancestral=TRUE) as.character(data) #> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] #> t3 \"t\" \"c\" \"a\" \"c\" \"g\" \"a\" \"t\" \"t\" \"g\" \"g\" #> t2 \"t\" \"g\" \"a\" \"t\" \"t\" \"a\" \"g\" \"t\" \"t\" \"g\" #> t5 \"c\" \"a\" \"a\" \"t\" \"g\" \"t\" \"c\" \"c\" \"t\" \"t\" #> t1 \"g\" \"a\" \"g\" \"t\" \"c\" \"c\" \"c\" \"t\" \"t\" \"g\" #> t4 \"t\" \"g\" \"t\" \"g\" \"t\" \"t\" \"g\" \"a\" \"t\" \"t\" #> 6 \"t\" \"g\" \"a\" \"t\" \"g\" \"c\" \"t\" \"g\" \"t\" \"g\" #> 7 \"t\" \"g\" \"a\" \"c\" \"t\" \"a\" \"g\" \"t\" \"t\" \"g\" #> 8 \"c\" \"a\" \"a\" \"t\" \"g\" \"c\" \"c\" \"c\" \"t\" \"t\" #> 9 \"g\" \"a\" \"a\" \"t\" \"g\" \"c\" \"c\" \"t\" \"t\" \"t\" # Example to simulate discrete Gamma rate variation rates <- discrete.gamma(1,4) data1 <- simSeq(tree, l = 100, type=\"AA\", model=\"WAG\", rate=rates[1]) data2 <- simSeq(tree, l = 100, type=\"AA\", model=\"WAG\", rate=rates[2]) data3 <- simSeq(tree, l = 100, type=\"AA\", model=\"WAG\", rate=rates[3]) data4 <- simSeq(tree, l = 100, type=\"AA\", model=\"WAG\", rate=rates[4]) data <- c(data1,data2, data3, data4) write.phyDat(data, file=\"temp.dat\", format=\"sequential\", nbcol = -1, colsep = \"\") unlink(\"temp.dat\")"},{"path":"https://klausvigo.github.io/phangorn/reference/splitsNetwork.html","id":null,"dir":"Reference","previous_headings":"","what":"Phylogenetic Network — splitsNetwork","title":"Phylogenetic Network — splitsNetwork","text":"splitsNetwork estimates weights splits graph distance matrix.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/splitsNetwork.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Phylogenetic Network — splitsNetwork","text":"","code":"splitsNetwork(dm, splits = NULL, gamma = 0.1, lambda = 1e-06, weight = NULL)"},{"path":"https://klausvigo.github.io/phangorn/reference/splitsNetwork.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Phylogenetic Network — splitsNetwork","text":"dm distance matrix. splits splits object, containing splits consider, otherwise possible splits used gamma penalty value L1 constraint. lambda penalty value L2 constraint. weight vector weights.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/splitsNetwork.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Phylogenetic Network — splitsNetwork","text":"splitsNetwork returns splits object matrix added. first column contains indices splits, second column unconstrained fit without penalty terms third column constrained fit.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/splitsNetwork.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Phylogenetic Network — splitsNetwork","text":"splitsNetwork fits non-negative least-squares phylogenetic networks using L1 (LASSO), L2(ridge regression) constraints. function minimizes penalized least squares $$\\beta = min \\sum(dm - X\\beta)^2 + \\lambda \\|\\beta \\|^2_2 $$ respect $$\\|\\beta \\|_1 <= \\gamma, \\beta >= 0$$ \\(X\\) design matrix constructed designSplits. External edges fitted without L1 L2 constraints.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/splitsNetwork.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Phylogenetic Network — splitsNetwork","text":"Efron, Hastie, Johnstone Tibshirani (2004) Least Angle Regression (discussion) Annals Statistics 32(2), 407--499 K. P. Schliep (2009). Applications statistical phylogenetics (PhD Thesis)","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/splitsNetwork.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Phylogenetic Network — splitsNetwork","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/splitsNetwork.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Phylogenetic Network — splitsNetwork","text":"","code":"data(yeast) dm <- dist.ml(yeast) fit <- splitsNetwork(dm) net <- as.networx(fit) plot(net) write.nexus.splits(fit) #> #NEXUS #> #> [Splits block for Spectronet or SplitsTree] #> [generated by phangorn 3.0.0.0 ] #> #> BEGIN TAXA; #> \tDIMENSIONS ntax=8; #> \tTAXLABELS Scer Spar Smik Skud Sbay Scas Sklu Calb ; #> END; #> #> BEGIN SPLITS; #> \tDIMENSIONS ntax=8 nsplits=11; #> \tFORMAT labels=left weights=yes confidences=no intervals=no; #> \tMATRIX #> \t\t1\t0.0651863191393167 \t1, #> \t\t2\t0.0587181503590668 \t1 3 4 5 6 7 8, #> \t\t3\t0.0696966322251354 \t1 2 4 5 6 7 8, #> \t\t4\t0.00922627016465058 \t1 2 3, #> \t\t5\t0.0814873490413281 \t1 2 3 5 6 7 8, #> \t\t6\t0.00406554599095658 \t1 2 3 4, #> \t\t7\t0.0886778824161061 \t1 2 3 4 6 7 8, #> \t\t8\t0.0867081880409384 \t1 2 3 4 5, #> \t\t9\t0.176465211301922 \t1 2 3 4 5 7 8, #> \t\t10\t0.208305976530992 \t1 2 3 4 5 6 8, #> \t\t11\t0.36479757741116 \t1 2 3 4 5 6 7, #> \t; #> END;"},{"path":"https://klausvigo.github.io/phangorn/reference/superTree.html","id":null,"dir":"Reference","previous_headings":"","what":"Super Tree methods — superTree","title":"Super Tree methods — superTree","text":"function superTree allows estimation supertree set trees using either Matrix representation parsimony, Robinson-Foulds SPR criterion.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/superTree.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Super Tree methods — superTree","text":"","code":"superTree(tree, method = \"MRP\", rooted = FALSE, trace = 0, start = NULL, multicore = FALSE, mc.cores = NULL, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/superTree.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Super Tree methods — superTree","text":"tree object class multiPhylo method argument defining algorithm used optimize tree. Possible \"MRP\", \"RF\", \"SPR\". rooted resulting supertrees rooted. trace defines much information printed optimization. start starting tree can supplied. multicore logical, whether models estimated parallel. mc.cores number cores use, .e. many child processes run simultaneously. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/superTree.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Super Tree methods — superTree","text":"function returns object class phylo.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/superTree.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Super Tree methods — superTree","text":"function superTree extends function mrp.supertree Liam Revells, artificial adding outgroup root trees. allows root supertree afterwards. functions internally used DensiTree. implementation RF- SPR-supertree basic far assume trees share set taxa.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/superTree.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Super Tree methods — superTree","text":"Baum, B. R., (1992) Combining trees way combining data sets phylogenetic inference, desirability combining gene trees. Taxon, 41, 3-10. Ragan, M. . (1992) Phylogenetic inference based matrix representation trees. Molecular Phylogenetics Evolution, 1, 53-58.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/superTree.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Super Tree methods — superTree","text":"Klaus Schliep klaus.schliep@gmail.com Liam Revell","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/superTree.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Super Tree methods — superTree","text":"","code":"data(Laurasiatherian) set.seed(1) bs <- bootstrap.phyDat(Laurasiatherian, FUN = function(x) upgma(dist.hamming(x)), bs=50) mrp_st <- superTree(bs) plot(mrp_st) if (FALSE) { rf_st <- superTree(bs, method = \"RF\") spr_st <- superTree(bs, method = \"SPR\") }"},{"path":"https://klausvigo.github.io/phangorn/reference/transferBootstrap.html","id":null,"dir":"Reference","previous_headings":"","what":"Transfer Bootstrap — transferBootstrap","title":"Transfer Bootstrap — transferBootstrap","text":"transferBootstrap assigns transfer bootstrap (Lemoine et al. 2018) values (internal) edges.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/transferBootstrap.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transfer Bootstrap — transferBootstrap","text":"","code":"transferBootstrap(tree, BStrees, phylo = TRUE, scale = TRUE)"},{"path":"https://klausvigo.github.io/phangorn/reference/transferBootstrap.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transfer Bootstrap — transferBootstrap","text":"tree tree edges bootstrap values plotted. BStrees list trees (object class \"multiPhylo\"). phylo Logical, return phylogentic tree support value vector bootstrap values. scale scale values.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/transferBootstrap.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transfer Bootstrap — transferBootstrap","text":"plotBS returns silently tree, .e. object class phylo bootstrap values node labels. argument BSTrees optional supplied labels supplied node.label slot used.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/transferBootstrap.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Transfer Bootstrap — transferBootstrap","text":"Lemoine, F., Entfellner, J. B. D., Wilkinson, E., Correia, D., Felipe, M. D., De Oliveira, T., & Gascuel, O. (2018). Renewing Felsenstein’s phylogenetic bootstrap era big data. Nature, 556(7702), 452--456.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/transferBootstrap.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Transfer Bootstrap — transferBootstrap","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/transferBootstrap.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transfer Bootstrap — transferBootstrap","text":"","code":"fdir <- system.file(\"extdata/trees\", package = \"phangorn\") # RAxML best-known tree with bipartition support (from previous analysis) raxml.tree <- read.tree(file.path(fdir,\"RAxML_bipartitions.woodmouse\")) # RAxML bootstrap trees (from previous analysis) raxml.bootstrap <- read.tree(file.path(fdir,\"RAxML_bootstrap.woodmouse\")) tree_tbe <- transferBootstrap(raxml.tree, raxml.bootstrap) par(mfrow=c(1,2)) plotBS(tree_tbe) # same as plotBS(raxml.tree, raxml.bootstrap, \"p\", \"TBE\")"},{"path":"https://klausvigo.github.io/phangorn/reference/treedist.html","id":null,"dir":"Reference","previous_headings":"","what":"Distances between trees — treedist","title":"Distances between trees — treedist","text":"treedist computes different tree distance methods RF.dist Robinson-Foulds symmetric distance. Robinson-Foulds distance depends topology trees. edge weights considered wRF.dist calculates weighted RF distance (Robinson & Foulds 1981). KF.dist calculates branch score distance (Kuhner & Felsenstein 1994). path.dist computes path difference metric described Steel Penny 1993). sprdist computes approximate SPR distance (Oliveira Martins et al. 2008, de Oliveira Martins 2016).","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/treedist.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Distances between trees — treedist","text":"","code":"treedist(tree1, tree2, check.labels = TRUE) sprdist(tree1, tree2) SPR.dist(tree1, tree2 = NULL) RF.dist(tree1, tree2 = NULL, normalize = FALSE, check.labels = TRUE, rooted = FALSE) wRF.dist(tree1, tree2 = NULL, normalize = FALSE, check.labels = TRUE, rooted = FALSE) KF.dist(tree1, tree2 = NULL, check.labels = TRUE, rooted = FALSE) path.dist(tree1, tree2 = NULL, check.labels = TRUE, use.weight = FALSE)"},{"path":"https://klausvigo.github.io/phangorn/reference/treedist.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Distances between trees — treedist","text":"tree1 phylogenetic tree (class phylo) vector trees (object class multiPhylo). See details tree2 phylogenetic tree. check.labels compares labels trees. normalize compute normalized RF-distance, see details. rooted take bipartitions rooted trees account, default unrooting trees. use.weight use edge.length argument just count number edges path (default)","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/treedist.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Distances between trees — treedist","text":"treedist returns vector containing following tree distance methods symmetric.difference symmetric.difference Robinson-Foulds distance branch.score.difference branch.score.difference path.difference path.difference weighted.path.difference weighted.path.difference","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/treedist.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Distances between trees — treedist","text":"Robinson-Foulds distance two trees \\(T_1\\) \\(T_2\\) \\(n\\) tips defined (following notation Steel Penny 1993): $$d(T_1, T_2) = (T_1) + (T_2) - 2v_s(T_1, T_2)$$ \\((T_1)\\) denotes number internal edges \\(v_s(T_1, T_2)\\) denotes number internal splits shared two trees. normalized Robinson-Foulds distance derived dividing \\(d(T_1, T_2)\\) maximal possible distance \\((T_1) + (T_2)\\). trees unrooted binary value \\(2n-6\\). Functions like RF.dist returns Robinson-Foulds distance (Robinson Foulds 1981) either 2 trees computes matrix pairwise distances multiPhylo object given. large number trees distance functions can use lot memory!","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/treedist.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Distances between trees — treedist","text":"de Oliveira Martins L., Leal E., Kishino H. (2008) Phylogenetic Detection Recombination Bayesian Prior Distance Trees. PLoS ONE 3(7). e2651. doi: 10.1371/journal.pone.0002651 de Oliveira Martins L., Mallo D., Posada D. (2016) Bayesian Supertree Model Genome-Wide Species Tree Reconstruction. Syst. Biol. 65(3): 397-416, doi:10.1093/sysbio/syu082 Steel M. . Penny P. (1993) Distributions tree comparison metrics - new results, Syst. Biol., 42(2), 126--141 Kuhner, M. K. Felsenstein, J. (1994) simulation comparison phylogeny algorithms equal unequal evolutionary rates, Molecular Biology Evolution, 11(3), 459--468 D.F. Robinson L.R. Foulds (1981) Comparison phylogenetic trees, Mathematical Biosciences, 53(1), 131--147 D.F. Robinson L.R. Foulds (1979) Comparison weighted labelled trees. Horadam, . F. Wallis, W. D. (Eds.), Combinatorial Mathematics VI: Proceedings Sixth Australian Conference Combinatorial Mathematics, Armidale, Australia, 119--126","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/treedist.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Distances between trees — treedist","text":"Klaus P. Schliep klaus.schliep@gmail.com, Leonardo de Oliveira Martins","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/treedist.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Distances between trees — treedist","text":"","code":"tree1 <- rtree(100, rooted=FALSE) tree2 <- rSPR(tree1, 3) RF.dist(tree1, tree2) #> [1] 36 treedist(tree1, tree2) #> symmetric.difference branch.score.difference path.difference #> 36.000000 2.926122 133.082681 #> quadratic.path.difference #> 66.523380 sprdist(tree1, tree2) #> spr spr_extra rf hdist #> 3 0 36 30 trees <- rSPR(tree1, 1:5) SPR.dist(tree1, trees) #> [1] 1 2 3 4 4"},{"path":"https://klausvigo.github.io/phangorn/reference/upgma.html","id":null,"dir":"Reference","previous_headings":"","what":"UPGMA, WPGMA and sUPGMA — upgma","title":"UPGMA, WPGMA and sUPGMA — upgma","text":"UPGMA WPGMA clustering. UPGMA WPGMA wrapper function around hclust retuning phylo object. UPGMA additionally performs nearest neighbor interchange (NNI) tree rearrangements improve phylogeny (Schliep et al. 2023). supgma perform serial sampled UPGMA similar Drummond Rodrigo (2000) however also performing NNI rearrangements.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/upgma.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"UPGMA, WPGMA and sUPGMA — upgma","text":"","code":"upgma(D, method = \"average\", NNI = FALSE, ...) wpgma(D, method = \"mcquitty\", ...) supgma(D, tip.dates, trace = 0)"},{"path":"https://klausvigo.github.io/phangorn/reference/upgma.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"UPGMA, WPGMA and sUPGMA — upgma","text":"D distance matrix. method agglomeration method used. (unambiguous abbreviation ) one \"ward\", \"single\", \"complete\", \"average\", \"mcquitty\", \"median\" \"centroid\". default \"average\". NNI logical whether make nearest neighbor rearrangements improve tree. Currently available method=\"average\". ... arguments passed methods. tip.dates named vector sampling times associated tips. trace Show output optimization (see details).","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/upgma.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"UPGMA, WPGMA and sUPGMA — upgma","text":"phylogenetic tree class phylo.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/upgma.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"UPGMA, WPGMA and sUPGMA — upgma","text":"Sneath, P. H., & Sokal, R. R. (1973). Numerical taxonomy. principles practice numerical classification. Sokal, R. R., & Michener, C. D. (1958). statistical method evaluating systematic relationships. University Kansas Scientific Bulletin, v. 38. Drummond, ., & Rodrigo, . G. (2000). Reconstructing genealogies serial samples assumption molecular clock using serial-sample UPGMA. Molecular Biology Evolution, 17(12), 1807-1815.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/upgma.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"UPGMA, WPGMA and sUPGMA — upgma","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/upgma.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"UPGMA, WPGMA and sUPGMA — upgma","text":"","code":"data(Laurasiatherian) dm <- dist.ml(Laurasiatherian) tree <- upgma(dm) plot(tree)"},{"path":"https://klausvigo.github.io/phangorn/reference/writeDist.html","id":null,"dir":"Reference","previous_headings":"","what":"Writing and reading distances in phylip and nexus format — writeDist","title":"Writing and reading distances in phylip and nexus format — writeDist","text":"readDist, writeDist write.nexus.dist useful exchange distance matrices phylogenetic programs.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/writeDist.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Writing and reading distances in phylip and nexus format — writeDist","text":"","code":"writeDist(x, file = \"\", format = \"phylip\", ...) write.nexus.dist(x, file = \"\", append = FALSE, upper = FALSE, diag = TRUE, digits = getOption(\"digits\"), taxa = !append) readDist(file, format = \"phylip\") read.nexus.dist(file) # S3 method for dist unique(x, incomparables, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/writeDist.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Writing and reading distances in phylip and nexus format — writeDist","text":"x dist object. file file name. format file format, default \"phylip\", option far \"nexus\". ... arguments passed methods. append logical. TRUE nexus blocks added file. upper logical value indicating whether upper triangle distance matrix printed. diag logical value indicating whether diagonal distance matrix printed. digits passed format inside write.nexus.dist. taxa logical. TRUE taxa block added. incomparables used far.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/writeDist.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Writing and reading distances in phylip and nexus format — writeDist","text":"object class dist","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/writeDist.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Writing and reading distances in phylip and nexus format — writeDist","text":"Maddison, D. R., Swofford, D. L. Maddison, W. P. (1997) NEXUS: extensible file format systematic information. Systematic Biology, 46, 590--621.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/writeDist.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Writing and reading distances in phylip and nexus format — writeDist","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/writeDist.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Writing and reading distances in phylip and nexus format — writeDist","text":"","code":"data(yeast) dm <- dist.ml(yeast) writeDist(dm) #> 8 #> Scer 0 0.0867845773228219 0.137636794490986 0.161087155171287 0.177174556271658 0.345373797843901 0.381679949757669 0.537234265198945 #> Spar 0.0867845773228219 0 0.123600617669834 0.149284159950583 0.166375240744154 0.343965239042025 0.380724585630441 0.537427661847541 #> Smik 0.137636794490986 0.123600617669834 0 0.155370638334037 0.173395434179653 0.345111830071115 0.381038543686742 0.5378791145715 #> Skud 0.161087155171287 0.149284159950583 0.155370638334037 0 0.156795687803861 0.351411419602885 0.383976534826637 0.548399135029346 #> Sbay 0.177174556271658 0.166375240744154 0.173395434179653 0.156795687803861 0 0.34592156486885 0.3809600418506 0.548845409688793 #> Scas 0.345373797843901 0.343965239042025 0.345111830071115 0.351411419602885 0.34592156486885 0 0.390140463219943 0.52768391927111 #> Sklu 0.381679949757669 0.380724585630441 0.381038543686742 0.383976534826637 0.3809600418506 0.390140463219943 0 0.542132862145574 #> Calb 0.537234265198945 0.537427661847541 0.5378791145715 0.548399135029346 0.548845409688793 0.52768391927111 0.542132862145574 0 write.nexus.dist(dm) #> #NEXUS #> #> BEGIN TAXA; #> \tDIMENSIONS ntax=8; #> \tTAXLABELS Scer Spar Smik Skud Sbay Scas Sklu Calb ; #> END; #> #> BEGIN DISTANCES; #> \tFORMAT TRIANGLE = LOWER; #> \tMatrix #> \tScer 0.00000000 #> \tSpar 0.08678458 0.00000000 #> \tSmik 0.13763679 0.12360062 0.00000000 #> \tSkud 0.16108716 0.14928416 0.15537064 0.00000000 #> \tSbay 0.17717456 0.16637524 0.17339543 0.15679569 0.00000000 #> \tScas 0.34537380 0.34396524 0.34511183 0.35141142 0.34592156 0.00000000 #> \tSklu 0.38167995 0.38072459 0.38103854 0.38397653 0.38096004 0.39014046 0.00000000 #> \tCalb 0.53723427 0.53742766 0.53787911 0.54839914 0.54884541 0.52768392 0.54213286 0.00000000 #> \t; #> END;"},{"path":"https://klausvigo.github.io/phangorn/reference/yeast.html","id":null,"dir":"Reference","previous_headings":"","what":"Yeast alignment (Rokas et al.) — yeast","title":"Yeast alignment (Rokas et al.) — yeast","text":"Alignment 106 genes 8 different species yeast.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/yeast.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Yeast alignment (Rokas et al.) — yeast","text":"Rokas, ., Williams, B. L., King, N., Carroll, S. B. (2003) Genome-scale approaches resolving incongruence molecular phylogenies. Nature, 425(6960): 798--804","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/yeast.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Yeast alignment (Rokas et al.) — yeast","text":"","code":"data(yeast) str(yeast) #> List of 8 #> $ Scer: int [1:8899] 4 2 4 4 1 4 3 1 3 3 ... #> $ Spar: int [1:8899] 4 2 4 4 3 4 1 1 3 3 ... #> $ Smik: int [1:8899] 4 2 2 4 3 2 1 1 1 3 ... #> $ Skud: int [1:8899] 4 2 4 4 3 2 1 1 3 3 ... #> $ Sbay: int [1:8899] 4 2 4 4 1 2 1 1 3 3 ... #> $ Scas: int [1:8899] 4 2 1 2 1 4 1 1 1 3 ... #> $ Sklu: int [1:8899] 4 2 4 2 4 2 1 1 3 3 ... #> $ Calb: int [1:8899] 4 2 4 2 4 4 3 1 1 3 ... #> - attr(*, \"class\")= chr \"phyDat\" #> - attr(*, \"weight\")= int [1:8899] 16974 7986 25 132 1 78 29 17646 42 12618 ... #> - attr(*, \"nr\")= int 8899 #> - attr(*, \"nc\")= num 4 #> - attr(*, \"index\")='data.frame':\t127026 obs. of 2 variables: #> ..$ index: int [1:127026] 1 2 3 4 1 5 6 1 7 8 ... #> ..$ genes: Factor w/ 106 levels \"YAL053W\",\"YAR007C\",..: 1 1 1 1 1 1 1 1 1 1 ... #> - attr(*, \"levels\")= chr [1:4] \"a\" \"c\" \"g\" \"t\" #> - attr(*, \"allLevels\")= chr [1:18] \"a\" \"c\" \"g\" \"t\" ... #> - attr(*, \"type\")= chr \"DNA\" #> - attr(*, \"contrast\")= num [1:18, 1:4] 1 0 0 0 0 1 1 1 0 0 ... #> ..- attr(*, \"dimnames\")=List of 2 #> .. ..$ : NULL #> .. ..$ : chr [1:4] \"a\" \"c\" \"g\" \"t\""}] +[{"path":"https://klausvigo.github.io/phangorn/articles/AdvancedFeatures.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Markov models and transition rate matrices","text":"document illustrates phangorn (Schliep 2011) specialized features useful maybe well-known just (yet) described elsewhere. mainly interesting someone wants explore different models set simulation studies. show construct data objects different character states nucleotides amino acids set different models estimate transition rate. vignettes Estimating phylogenetic trees phangorn Phylogenetic trees morphological data describe detail estimate phylogenies nucleotides, amino acids morphological data.","code":""},{"path":"https://klausvigo.github.io/phangorn/articles/AdvancedFeatures.html","id":"user-defined-data-formats","dir":"Articles","previous_headings":"","what":"User defined data formats","title":"Markov models and transition rate matrices","text":"better understand define data type useful know bit internal representation phyDat objects. internal representation phyDat object similar factor objects. example show several possibilities define nucleotide data gaps defined fifth state. Ignoring gaps coding ambiguous sites - done programs, also phangorn default - may misleading (see (Warnow 2012)). number gaps low randomly distributed, coding gaps separate state may important. Let’s assume given matrix row contains character vector taxonomic unit: Normally transform matrix phyDat object gaps handled ambiguous character (like “?”). Now define “USER” defined object supply vector levels character states new data – case four nucleotide states gap. Additionally can define ambiguous states can states. yet wanted, two sites alignment - contain ambiguous characters “r” “y” - got deleted. define ambiguous characters like “r” “y” explicitly supply contrast matrix similar contrasts factors. defined “n” state can nucleotide, gap. “-” “?” can state including gap. data can used functions available phangorn compute distance matrices perform parsimony maximum likelihood analysis.","code":"library(phangorn) ## Loading required package: ape data <- matrix(c(\"r\",\"a\",\"y\",\"g\",\"g\",\"a\",\"c\",\"-\",\"c\",\"t\",\"c\",\"g\", \"a\",\"a\",\"t\",\"g\",\"g\",\"a\",\"t\",\"-\",\"c\",\"t\",\"c\",\"a\", \"a\",\"a\",\"t\",\"-\",\"g\",\"a\",\"c\",\"c\",\"c\",\"t\",\"?\",\"g\"), dimnames = list(c(\"t1\", \"t2\", \"t3\"),NULL), nrow=3, byrow=TRUE) data ## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] ## t1 \"r\" \"a\" \"y\" \"g\" \"g\" \"a\" \"c\" \"-\" \"c\" \"t\" \"c\" \"g\" ## t2 \"a\" \"a\" \"t\" \"g\" \"g\" \"a\" \"t\" \"-\" \"c\" \"t\" \"c\" \"a\" ## t3 \"a\" \"a\" \"t\" \"-\" \"g\" \"a\" \"c\" \"c\" \"c\" \"t\" \"?\" \"g\" gapsdata1 <- phyDat(data) gapsdata1 ## 3 sequences with 12 character and 11 different site patterns. ## The states are a c g t gapsdata2 <- phyDat(data, type=\"USER\", levels=c(\"a\",\"c\",\"g\",\"t\",\"-\"), ambiguity = c(\"?\", \"n\")) ## Warning in phyDat.default(data, levels = levels, return.index = return.index, : ## Found unknown characters (not supplied in levels). Deleted sites with unknown ## states. gapsdata2 ## 3 sequences with 10 character and 9 different site patterns. ## The states are a c g t - contrast <- matrix(data = c(1,0,0,0,0, 0,1,0,0,0, 0,0,1,0,0, 0,0,0,1,0, 1,0,1,0,0, 0,1,0,1,0, 0,0,0,0,1, 1,1,1,1,0, 1,1,1,1,1), ncol = 5, byrow = TRUE) dimnames(contrast) <- list(c(\"a\",\"c\",\"g\",\"t\",\"r\",\"y\",\"-\",\"n\",\"?\"), c(\"a\", \"c\", \"g\", \"t\", \"-\")) contrast ## a c g t - ## a 1 0 0 0 0 ## c 0 1 0 0 0 ## g 0 0 1 0 0 ## t 0 0 0 1 0 ## r 1 0 1 0 0 ## y 0 1 0 1 0 ## - 0 0 0 0 1 ## n 1 1 1 1 0 ## ? 1 1 1 1 1 gapsdata3 <- phyDat(data, type=\"USER\", contrast=contrast) gapsdata3 ## 3 sequences with 12 character and 11 different site patterns. ## The states are a c g t -"},{"path":"https://klausvigo.github.io/phangorn/articles/AdvancedFeatures.html","id":"markov-models-of-character-evolution","dir":"Articles","previous_headings":"","what":"Markov models of character evolution","title":"Markov models and transition rate matrices","text":"model nucleotide substitutions across edges tree T can assign transition matrix. case nucleotides, four character states, 4 \\(\\times\\) 4 transition matrix , , 12 free parameters. Time-reversible Markov models used describe characters change time, use fewer parameters. Time-reversible means models need directed time, Markov property states models depend current state. models used analyses phylogenies using maximum likelihood MCMC, computing pairwise distances, well simulating sequence evolution. now describe General Time-Reversible (GTR) model (Tavaré 1986). parameters GTR model equilibrium frequencies \\(\\pi = (\\pi_A ,\\pi_C ,\\pi_G ,\\pi_T)\\) rate matrix \\(Q\\) form \\[\\begin{equation} Q = \\begin{pmatrix} \\ast & \\alpha\\pi_C & \\beta\\pi_G & \\gamma\\pi_T \\\\ \\alpha\\pi_A & \\ast & \\delta\\pi_G & \\epsilon\\pi_T \\\\ \\beta\\pi_A & \\delta\\pi_C & \\ast & \\eta\\pi_T \\\\ \\gamma\\pi_A & \\epsilon\\pi_C & \\eta\\pi_G & \\ast \\\\ \\end{pmatrix} (1) \\end{equation}\\] need assign 6 parameters \\(\\alpha, \\dots, \\eta\\). elements diagonal chosen rows sum zero. Jukes-Cantor (JC) (Jukes Cantor 1969) model can derived special case GTR model, equal equilibrium frequencies \\(\\pi_A = \\pi_C = \\pi_G = \\pi_T = 0.25\\) equal rates set \\(\\alpha = \\beta = \\gamma = \\delta = \\eta\\). Table 2 lists built-nucleotide models phangorn. transition probabilities, describe probabilities change character \\(\\) \\(j\\) time \\(t\\), given corresponding entries matrix exponential \\[ P(t) = (p_{ij}(t)) = e^{Qt}, \\qquad \\sum_j p_{ij}=1 \\] \\(P(t)\\) transition matrix spanning period time \\(t\\).","code":""},{"path":"https://klausvigo.github.io/phangorn/articles/AdvancedFeatures.html","id":"estimation-of-non-standard-transition-rate-matrices","dir":"Articles","previous_headings":"","what":"Estimation of non-standard transition rate matrices","title":"Markov models and transition rate matrices","text":"section User defined data formats described set user defined data formats. Now describe estimate transition matrices pml. nucleotide data common models can called directly optim.pml function (e.g. “JC69”, “HKY”, “GTR” name ). Table 2 lists available nucleotide models, can estimated directly optim.pml. amino acids several transition matrices available (“WAG”, “JTT”, “LG”, “Dayhoff”, “cpREV”, “mtmam”, “mtArt”, “MtZoa”, “mtREV24”, “VT”,“RtREV”, “HIVw”, “HIVb”, “FLU”, “Blosum62”, “Dayhoff_DCMut” “JTT-DCMut”) can estimated optim.pml. example Mathews, Clements, Beilstein (2010) used function estimate phytochrome amino acid transition matrix. now show estimate rate matrix different transition (\\(\\alpha\\)) transversion ratio (\\(\\beta\\)) fixed rate gap state (\\(\\gamma\\)) - kind Kimura two-parameter model (K81) nucleotide data gaps fifth state (see table 1). Tab 1. Rate matrix 3 parameters optimize. want fit non-standard transition rate matrix, tell optim.pml transitions Q get rate. parameter vector subs accepts vector consecutive integers least one element zero (get reference rate 1). Negative values indicate direct transition possible rate set zero. conventions models estimated: model supplied base frequencies bf rate matrix Q optimized according model (nucleotides) adequate rate matrix frequencies chosen (amino acids). optQ=TRUE neither model subs supplied symmetric (optBf=FALSE) reversible model (optBf=TRUE, .e. GTR nucleotides) estimated. can slow many character states, e.g. amino acids. Table 2 shows parameters optimized number parameters estimate. elements vector subs correspond \\(\\alpha, \\dots, \\eta\\) equation (1) Tab 2. DNA models available phangorn.","code":"library(ape) tree <- unroot(rtree(3)) fit <- pml(tree, gapsdata3) fit <- optim.pml(fit, optQ=TRUE, subs=c(1,0,1,2,1,0,2,1,2,2), control=pml.control(trace=0)) fit ## model: Mk ## loglikelihood: -33.01 ## unconstrained loglikelihood: -28.43 ## ## Rate matrix: ## a c g t - ## a 0.000e+00 2.584e-06 1.000e+00 2.584e-06 0.6912 ## c 2.584e-06 0.000e+00 2.584e-06 1.000e+00 0.6912 ## g 1.000e+00 2.584e-06 0.000e+00 2.584e-06 0.6912 ## t 2.584e-06 1.000e+00 2.584e-06 0.000e+00 0.6912 ## - 6.912e-01 6.912e-01 6.912e-01 6.912e-01 0.0000 ## ## Base frequencies: ## a c g t - ## 0.2 0.2 0.2 0.2 0.2"},{"path":"https://klausvigo.github.io/phangorn/articles/AdvancedFeatures.html","id":"predefined-models-for-user-defined-data","dir":"Articles","previous_headings":"Estimation of non-standard transition rate matrices","what":"Predefined models for user defined data","title":"Markov models and transition rate matrices","text":"far 4 models just generalization nucleotide models allowing different number states. many cases equal rates (ER) model appropriate. Tab 2: Build models available USER defined data. additional model ORDERED, assumes ordered characters allows switch neighboring states. Table 3 show corresponding rate matrix. Tab 3: Rate matrix “ORDERED” model 5 states.","code":""},{"path":"https://klausvigo.github.io/phangorn/articles/AdvancedFeatures.html","id":"codon-substitution-models","dir":"Articles","previous_headings":"","what":"Codon substitution models","title":"Markov models and transition rate matrices","text":"special case transition rates codon models. phangorn now offers possibility estimate \\(d_N/d_S\\) ratio (sometimes called ka/ks), overview see (Yang 2014). functions extend option estimate \\(d_N/d_S\\) ratio pairwise sequence comparison available function kaks seqinr. transition rate codon \\(\\) \\(j\\) defined follows: \\[\\begin{eqnarray} q_{ij}=\\left\\{ \\begin{array}{l@{\\quad}l} 0 & \\textrm{j differ one position} \\\\ \\pi_j & \\textrm{synonymous transversion} \\\\ \\pi_j\\kappa & \\textrm{synonymous transition} \\\\ \\pi_j\\omega & \\textrm{non-synonymous transversion} \\\\ \\pi_j\\omega\\kappa & \\textrm{non-synonymous transition} \\end{array} \\right. \\nonumber \\end{eqnarray}\\] \\(\\omega\\) \\(d_N/d_S\\) ratio, \\(\\kappa\\) transition transversion ratio \\(\\pi_j\\) equilibrium frequency codon \\(j\\). \\(\\omega\\sim1\\) amino acid change neutral, \\(\\omega < 1\\) purifying selection \\(\\omega > 1\\) positive selection. use data set follow loosely example Bielawski Yang (2005). first read alignment phylogenetic tree 45 sequences nef gene Human HIV-2 Genome using read.phyDat function. tree data set can estimate currently 3 different site models: M0 model constant \\(\\omega\\), \\(\\omega\\) estimates average sites alignment. M0 allow distinct \\(\\omega\\) identifies classes, therefore retrieve information regarding positive selection. M1a nearly neutral model estimates two different \\(\\omega\\) value classes (\\(\\omega=1\\) & \\(\\omega<1\\)). M2a positive selection model estimates three different classes \\(\\omega\\) (negative selection \\(\\omega<1\\), neutral selection \\(\\omega=1\\), positive selection \\(\\omega>1\\)). One can use likelihood ratio test compare M1a M2a positive selection. Currently choice site models limited three models mentioned branch models implemented far. can identify sites positive selection using Na\"ive empirical Bayes (NEB) method Yang Nielsen (1998): \\[ P(\\omega|x_h) = \\frac{P(X_h|\\omega_i)p_i}{P(X_h)} = \\frac{P(X_h|\\omega_i)p_i}{\\sum_j P(X_h|\\omega_j)p_j} \\] lot implementations differ way codon frequencies derived. M0 model can also estimated using pml optim.pml functions. several ways estimate codon frequencies \\(\\pi_j\\). simplest model assume equal frequencies (=1/61). second use empirical codon frequencies, either computed using baseFreq using argument bf=\"empirical\" pml. usually really good codons rare high variance. One can estimate frequencies nucleotide frequencies F1x4 model. Last least frequencies can derived base frequencies codon position, F3x4 model set argument bf=\"F3x4\". F3x4 model can optimize codon frequencies setting option optBf=TRUE optim.pml.","code":"fdir <- system.file(\"extdata/trees\", package = \"phangorn\") hiv_2_nef <- read.phyDat(file.path(fdir, \"seqfile.txt\"), format=\"sequential\") tree <- read.tree(file.path(fdir, \"tree.txt\")) cdn <- codonTest(tree, hiv_2_nef) cdn ## model Frequencies estimate logLik df AIC BIC dnds_0 dnds_1 dnds_2 ## 1 M0 F3x4 empirical -9773 98 19741 20087 0.50486 NA NA ## 2 M1a F3x4 empirical -9313 99 18824 19168 0.06281 1 NA ## 3 M2a F3x4 empirical -9244 101 18689 19040 0.05551 1 2.469 ## p_0 p_1 p_2 tstv ## 1 1.0000 NA NA 4.418 ## 2 0.5563 0.4437 NA 4.364 ## 3 0.5227 0.3617 0.1156 4.849 plot(cdn, \"M1a\") plot(cdn, \"M2a\") treeM0 <- cdn$estimates[[\"M0\"]]$tree # tree with edge lengths M0 <- pml(treeM0, dna2codon(hiv_2_nef), bf=\"F3x4\") M0 <- optim.pml(M0, model=\"codon1\", control=pml.control(trace=0)) M0 ## model: codon1 ## loglikelihood: -9773 ## unconstrained loglikelihood: -1372 ## dn/ds: 0.5049 ## ts/tv: 4.418 ## Freq: F3x4 M0_opt <- optim.pml(M0, model=\"codon1\", optBf=TRUE, control=pml.control(trace=0)) M0_opt ## model: codon1 ## loglikelihood: -9668 ## unconstrained loglikelihood: -1372 ## dn/ds: 0.51 ## ts/tv: 4.581 ## Freq: F3x4"},{"path":"https://klausvigo.github.io/phangorn/articles/AdvancedFeatures.html","id":"session-info","dir":"Articles","previous_headings":"","what":"Session info","title":"Markov models and transition rate matrices","text":"","code":"## R version 4.3.2 (2023-10-31) ## Platform: x86_64-pc-linux-gnu (64-bit) ## Running under: Ubuntu 22.04.3 LTS ## ## Matrix products: default ## BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 ## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so; LAPACK version 3.10.0 ## ## locale: ## [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 ## [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 ## [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C ## [10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C ## ## time zone: UTC ## tzcode source: system (glibc) ## ## attached base packages: ## [1] stats graphics grDevices utils datasets methods base ## ## other attached packages: ## [1] phangorn_3.0.0.0 ape_5.7-1.8 ## ## loaded via a namespace (and not attached): ## [1] Matrix_1.6-1.1 jsonlite_1.8.8 highr_0.10 compiler_4.3.2 ## [5] Rcpp_1.0.12 stringr_1.5.1 parallel_4.3.2 jquerylib_0.1.4 ## [9] systemfonts_1.0.5 textshaping_0.3.7 yaml_2.3.8 fastmap_1.1.1 ## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_2.0.1 ## [17] knitr_1.45 desc_1.4.3 bslib_0.6.1 rlang_1.1.3 ## [21] fastmatch_1.1-4 cachem_1.0.8 stringi_1.8.3 xfun_0.41 ## [25] quadprog_1.5-8 fs_1.6.3 sass_0.4.8 memoise_2.0.1 ## [29] cli_3.6.2 pkgdown_2.0.7 magrittr_2.0.3 digest_0.6.34 ## [33] grid_4.3.2 lifecycle_1.0.4 nlme_3.1-163 vctrs_0.6.5 ## [37] evaluate_0.23 glue_1.7.0 codetools_0.2-19 ragg_1.2.7 ## [41] rmarkdown_2.25 purrr_1.0.2 pkgconfig_2.0.3 tools_4.3.2 ## [45] htmltools_0.5.7"},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/articles/Ancestral.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Ancestral Sequence Reconstruction","text":"notes describe ancestral sequence reconstruction using phangorn package (Schliep 2011). phangorn provides several methods estimate ancestral character states either Maximum Parsimony (MP) Maximum Likelihood (ML). background methods see e.g. (Felsenstein 2004) (Yang 2006).","code":""},{"path":"https://klausvigo.github.io/phangorn/articles/Ancestral.html","id":"parsimony-reconstructions","dir":"Articles","previous_headings":"","what":"Parsimony reconstructions","title":"Ancestral Sequence Reconstruction","text":"reconstruct ancestral sequences first load data reconstruct tree: parsimony analysis edge length represent observed number changes. Reconstructing ancestral states therefore defines also edge lengths tree. However can exist several equally parsimonious reconstructions states can ambiguous therefore edge length can differ. “MPR” reconstructs ancestral states (internal) node tree rooted node. However nodes independent . one chooses one state specific node, can restrict choice neighboring nodes (figures 2 3). function acctran (accelerated transformation) assigns edge length internal nodes tree (Swofford Maddison 1987). ancestral reconstructions parsimony based fitch algorithm far bifurcating trees allowed. However trees can get pruned afterwards using function multi2di ape. seqLogo function seqLogo package Bioconductor provides neat way show proportions nucleotides ancestral states (see figure 1). may need install seqLogo Fig 2. Ancestral reconstruction using MPR. Fig 3. Ancestral reconstruction using ACCTRAN.","code":"library(phangorn) ## Loading required package: ape fdir <- system.file(\"extdata/trees\", package = \"phangorn\") primates <- read.phyDat(file.path(fdir, \"primates.dna\"), format = \"interleaved\") tree <- pratchet(primates, trace=0) |> acctran(primates) parsimony(tree, primates) ## [1] 746 anc.acctran <- ancestral.pars(tree, primates, \"ACCTRAN\") ## Node labels are not unique, used makeNodeLabel(tree, ...) to create them! anc.mpr <- ancestral.pars(tree, primates, \"MPR\") ## Node labels are not unique, used makeNodeLabel(tree, ...) to create them! library(seqLogo) seqLogo( t(subset(anc.mpr, getRoot(tree), 1:20)[[1]]), ic.scale=FALSE) if (!requireNamespace(\"BiocManager\", quietly = TRUE)) install.packages(\"BiocManager\") BiocManager::install(\"seqLogo\") plotAnc(tree, anc.mpr, 17) title(\"MPR\") plotAnc(tree, anc.acctran, 17) title(\"ACCTRAN\")"},{"path":"https://klausvigo.github.io/phangorn/articles/Ancestral.html","id":"likelihood-reconstructions","dir":"Articles","previous_headings":"","what":"Likelihood reconstructions","title":"Ancestral Sequence Reconstruction","text":"phangorn also offers possibility estimate ancestral states using ML. advantages ML parsimony reconstruction accounts different edge lengths. far marginal construction implemented (see [Yang (2006)](Koshi Goldstein 1996)) joint reconstruction (Pupko et al. 2000). can assign ancestral states according highest likelihood (“ml”): \\[ P(x_r = ) = \\frac{L(x_r=)}{\\sum_{k \\\\{,C,G,T\\}}L(x_r=k)} \\] highest posterior probability (“bayes”) criterion: \\[ P(x_r=) = \\frac{\\pi_A L(x_r=)}{\\sum_{k \\\\{,C,G,T\\}}\\pi_k L(x_r=k)}, \\] \\(L(x_r)\\) joint probability states tips state root \\(x_r\\) \\(\\pi_i\\) estimated base frequencies state \\(\\). methods agree states (base frequencies) equal probabilities. differences two approaches specific site (17) represented following figures. Fig 4. Ancestral reconstruction using maximum likelihood. Fig 5. Ancestral reconstruction using (empirical) Bayes.","code":"fit <- pml(tree, primates) fit <- optim.pml(fit, model=\"F81\", control = pml.control(trace=0)) anc.ml <- ancestral.pml(fit, \"ml\") ## Node labels are not unique, used makeNodeLabel(tree, ...) to create them! anc.bayes <- ancestral.pml(fit, \"bayes\") ## Node labels are not unique, used makeNodeLabel(tree, ...) to create them! plotAnc(tree, anc.ml, 17) title(\"ML\") plotAnc(tree, anc.bayes, 17) title(\"Bayes\")"},{"path":"https://klausvigo.github.io/phangorn/articles/Ancestral.html","id":"fitting-for-discrete-comparative-data","dir":"Articles","previous_headings":"","what":"Fitting for discrete comparative data","title":"Ancestral Sequence Reconstruction","text":"Often already phylogeny want estimate ancestral reconstruction tree. common problem phylogentic comparative methods can use function ace ape (Paradis Schliep 2019), fitDiscrete geiger (Pennell et al. 2014) fitMK phytools (Revell 2012) package. want show fit models using optim.pml. First load tree create data. set pml object optimize model. Instead optimizing edge length optimize rate. can also fit symmetric (model=“SYM”) ordered metristic model (model=“ORDERED”). can compare estimate one ace ape. log-likelihood values differ slightly phangorn values get multiplied state frequencies. Thus add log(1/3) three states ace estimate two estimates almost identical. complicated models can applied using defining rate matrix shown vignette Markov models transition rate matrices. “ARD” model currently available phangorn fits reversible models.","code":"data(\"bird.orders\") x <- c(rep(0, 5), rep(1, 18)) x[c(20,22,23)] <- 2 x <- factor(x) names(x) <- bird.orders$tip.label dat <- phyDat(x, \"USER\", levels=c(0,1,2)) fit <- pml(bird.orders, dat) fit_ER <- optim.pml(fit, optEdge = FALSE, optRate=TRUE, control = pml.control(trace=0)) fit_ER ## model: Mk ## loglikelihood: -16.47 ## unconstrained loglikelihood: 0 ## ## Rate matrix: ## 0 1 2 ## 0 0 1 1 ## 1 1 0 1 ## 2 1 1 0 ## ## Base frequencies: ## 0 1 2 ## 0.3333 0.3333 0.3333 fit_SYM <- optim.pml(fit, optEdge = FALSE, optRate=TRUE, model=\"SYM\", control = pml.control(trace=0)) fit_SYM ## model: SYM ## loglikelihood: -15.31 ## unconstrained loglikelihood: 0 ## ## Rate matrix: ## 0 1 2 ## 0 0.000e+00 0.2747 1.604e-06 ## 1 2.747e-01 0.0000 1.000e+00 ## 2 1.604e-06 1.0000 0.000e+00 ## ## Base frequencies: ## 0 1 2 ## 0.3333 0.3333 0.3333 fit_ace <- ace(x, bird.orders, model=\"SYM\", type = \"d\") ## Warning in sqrt(diag(solve(h))): NaNs produced fit_SYM$logLik ## [1] -15.31 fit_ace$loglik+log(1/3) ## [1] -15.31 all.equal(fit_SYM$logLik, fit_ace$loglik+log(1/3)) ## [1] \"Mean relative difference: 1.229e-07\" anc_SYM <- ancestral.pml(fit_SYM, \"ml\") plotAnc(bird.orders, anc_SYM)"},{"path":"https://klausvigo.github.io/phangorn/articles/Ancestral.html","id":"session-info","dir":"Articles","previous_headings":"","what":"Session info","title":"Ancestral Sequence Reconstruction","text":"","code":"## R version 4.3.2 (2023-10-31) ## Platform: x86_64-pc-linux-gnu (64-bit) ## Running under: Ubuntu 22.04.3 LTS ## ## Matrix products: default ## BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 ## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so; LAPACK version 3.10.0 ## ## locale: ## [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 ## [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 ## [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C ## [10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C ## ## time zone: UTC ## tzcode source: system (glibc) ## ## attached base packages: ## [1] stats graphics grDevices utils datasets methods base ## ## other attached packages: ## [1] phangorn_3.0.0.0 ape_5.7-1.8 ## ## loaded via a namespace (and not attached): ## [1] Matrix_1.6-1.1 jsonlite_1.8.8 highr_0.10 compiler_4.3.2 ## [5] Rcpp_1.0.12 stringr_1.5.1 parallel_4.3.2 jquerylib_0.1.4 ## [9] systemfonts_1.0.5 textshaping_0.3.7 yaml_2.3.8 fastmap_1.1.1 ## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_2.0.1 ## [17] knitr_1.45 desc_1.4.3 bslib_0.6.1 rlang_1.1.3 ## [21] fastmatch_1.1-4 cachem_1.0.8 stringi_1.8.3 xfun_0.41 ## [25] quadprog_1.5-8 fs_1.6.3 sass_0.4.8 memoise_2.0.1 ## [29] cli_3.6.2 pkgdown_2.0.7 magrittr_2.0.3 digest_0.6.34 ## [33] grid_4.3.2 lifecycle_1.0.4 nlme_3.1-163 vctrs_0.6.5 ## [37] evaluate_0.23 glue_1.7.0 codetools_0.2-19 ragg_1.2.7 ## [41] rmarkdown_2.25 purrr_1.0.2 pkgconfig_2.0.3 tools_4.3.2 ## [45] htmltools_0.5.7"},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"installing-r","dir":"Articles","previous_headings":"","what":"Installing R","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"Download R Select nearest mirror location https://cran.r-project.org/mirrors.html Select operating system download relevant installation file. Install R following instructions.","code":""},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"installing-the-phangorn-library","dir":"Articles","previous_headings":"","what":"Installing the phangorn library","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"Open R run two lines code command line. (need select region download library)","code":"install.packages(\"phangorn\", dependencies=TRUE) # install latest development version needs devtools install.packages(\"devtools\", dependencies=TRUE) library(devtools) install_github(\"KlausVigo/phangorn\")"},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"getting-started","dir":"Articles","previous_headings":"","what":"Getting started","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"","code":"library(phangorn) # load the phangorn library ## Loading required package: ape"},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"set-the-working-directory","dir":"Articles","previous_headings":"","what":"Set the working directory","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"often major stumbling block new R users. need specify folder structure wish work. .e, files stored wish input? done using setwd() function, e.g. setwd(\"C:/TreesNetworks/Example Files\"). now set folder phangorn package, contains files want load example.","code":""},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"read-in-the-example-file-datasets","dir":"Articles","previous_headings":"","what":"Read in the example file datasets:","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"example files based woodmouse dataset available ape library. Ultimately, dataset study: Michaux, J. R., Magnanou, E., Paradis, E., Nieberding, C. Libois, R. (2003) Mitochondrial phylogeography Woodmouse (Apodemus sylvaticus) Western Palearctic region. Molecular Ecology, 12, 685-697.) example files read R.","code":"## automatically set the correct working directory for the examples below # setwd(system.file(\"extdata/trees\", package = \"phangorn\")) # for this vignette we create a path to the files we want to load fdir <- system.file(\"extdata/trees\", package = \"phangorn\") ## in your case it may look something like this... # setwd(\"C:/TreesNetworks/Example Files\") ##DNA Matrix, maybe not needed woodmouse <- read.phyDat(file.path(fdir, \"woodmouse.fasta\"),format=\"fasta\") ## RAxML best-known tree with bipartition support (from previous analysis) raxml.tree <- read.tree(file.path(fdir,\"RAxML_bipartitions.woodmouse\")) ## RAxML bootstrap trees (from previous analysis) raxml.bootstrap <- read.tree(file.path(fdir,\"RAxML_bootstrap.woodmouse\")) ## MrBayes consensus tree (50% majority rule) (from previous analysis) mrbayes.tree <- read.nexus(file.path(fdir,\"woodmouse.mrbayes.nex.con\")) ## MrBayes sample runs 1 and 2 (from previous analysis) run1 <- read.nexus(file.path(fdir,\"woodmouse.mrbayes.nex.run1.t\")) run2 <- read.nexus(file.path(fdir,\"woodmouse.mrbayes.nex.run2.t\")) ## How many trees are in the MrBayes tree sample? run1 ## 1001 phylogenetic trees run2 ## 1001 phylogenetic trees ## Combining the two runs and removing 25% burn-in mrbayes.trees <- c(run1[251:1001],run2[251:1001]) ## NeigbourNet Nexus file generated by SplitsTree (from previous analysis) Nnet <- read.nexus.networx(file.path(fdir,\"woodmouse.nxs\"))"},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"viewing-the-data","dir":"Articles","previous_headings":"","what":"Viewing the data","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"","code":"par(mfrow=c(1,2), mar=c(1,1,1,1)) # Setting plot parameters ### Plotting trees with support values: ## RAxML plot(raxml.tree) nodelabels(raxml.tree$node.label, adj = c(1, 0), frame = \"none\") ## MrBayes plot(mrbayes.tree) nodelabels(mrbayes.tree$node.label, adj = c(1, 0), frame = \"none\") par(mfrow=c(1,1)) # Setting plot parameters # NeighborNet plot(Nnet,\"2D\") ## alternatively, # plot(Nnet,\"2D\")"},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"a","dir":"Articles","previous_headings":"","what":"1A:","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"Identification edge bundles (black) neighbor-net (NN) network correspond branches (labelled 1-12) tree (maximum likelihood tree, case).","code":"# create a vector of labels for the network corresponding to edges in the tree edge.lab <- createLabel(Nnet, raxml.tree, raxml.tree$edge[,2], \"edge\") # could be also 1:27 instead of raxml.tree$edge[,2] # Show the correspondingly labelled tree and network in R par(mfrow=c(1,2)) plot(raxml.tree, \"u\", rotate.tree = 180, cex=.7) edgelabels(raxml.tree$edge[,2],col=\"blue\", frame=\"none\", cex=.7) # find edges that are in the network but not in the tree edge.col <- rep(\"black\", nrow(Nnet$edge)) edge.col[ is.na(edge.lab) ] <- \"red\" # or a simpler alternative... edge.col <- createLabel(Nnet, raxml.tree, \"black\", nomatch=\"red\") x <- plot(Nnet, edge.label = edge.lab, show.edge.label = T, \"2D\", edge.color = edge.col, col.edge.label = \"blue\", cex=.7) # the above plot function returns an invisible networx object and this object # also contains the colors for the edges."},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"b","dir":"Articles","previous_headings":"","what":"1B:","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"Bootstrap support branches (branch labels) ML tree mapped corresponding edge bundles NN network. edges network found ML tree branches highlighted red. can write SplitsTree viewing…","code":"# the scaler argument multiplies the confidence values. This is useful to switch # confidences values between total, percentage or ratios. x <- addConfidences(Nnet,raxml.tree, scaler = .01) # find splits that are in the network but not in the tree split.col <- rep(\"black\", length(x$splits)) split.col[ !matchSplits(as.splits(x), as.splits(raxml.tree)) ] <- \"red\" # simpler alternative... split.col2 <- createLabel(x, raxml.tree, label=\"black\", \"split\", nomatch=\"red\") # Plotting in R out.x <- plot(x,\"2D\",show.edge.label=TRUE, split.color=split.col, col.edge.label = \"blue\") # write.nexus.networx(out.x,\"woodmouse.tree.support.nxs\") ## or we can also export the splits alone (for usage in software other than SplitsTree) # write.nexus.splits(as.splits(out.x),\"woodmouse.splits.support.nxs\")"},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"c","dir":"Articles","previous_headings":"","what":"1C:","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"Frequencies bipartitions found bootstrap pseudoreplicates mapped corresponding edge bundles NN network using threshold 10% (.e. edge labelled occurs least 100 1000 ML-BS pseudoreplicates). Edge bundles found ML tree labelled using grey edges.","code":"y <- addConfidences(Nnet, as.splits(raxml.bootstrap)) edge.col <- createLabel(y, raxml.tree, label=\"black\", \"edge\", nomatch=\"grey\") y <- plot(y,\"2D\",show.edge.label=TRUE, edge.color=edge.col) ## Write to SplitsTree for viewing # write.nexus.networx(y,\"NN.with.bs.support.nxs\")"},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"extras","dir":"Articles","previous_headings":"","what":"Extras…","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"can also compare neighborNet consensusNet (Holland BR, Huber KT, Moulton V, Lockhart PJ,2004, Using consensus networks visualize contradictory evidence species phylogeny. Molecular Biology Evolution, 21, 1459-1461). Furthermore, can extract support values consensus network, place NeighborNet (similar process explained 1C ).","code":"cnet <- consensusNet(raxml.bootstrap,prob=0.10) edge.col <- createLabel(cnet, Nnet, label=\"black\", \"edge\", nomatch=\"grey\") cnet <- plot(cnet, \"2D\", show.edge.label = TRUE, edge.color=edge.col) edge.col <- createLabel(Nnet, cnet, label=\"black\", \"edge\", nomatch=\"grey\") z <- plot(Nnet, \"2D\", show.edge.label = TRUE, edge.color=edge.col) obj <- addConfidences(Nnet,cnet) plot(obj,\"2D\",show.edge.label=T, edge.color=edge.col, col.edge.label = \"blue\") ## Write to SplitsTree for viewing # write.nexus.networx(obj,\"Nnet.with.ML.Cnet.Bootstrap.nxs\")"},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"section","dir":"Articles","previous_headings":"","what":"Intertwining phylogenetic trees and networks: R Example Script","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"four possible data patterns phylogenetic reconstruction: (1) patterns well supported network appear bootstrapped trees; (2) patterns well supported (part ) data/network appear optimized trees, .e. incompatible tree; (3) patterns weakly supported network appear optimized trees anyway, .e. compatible tree. demonstrate patterns showing relationships splits weights, NeighborNet splits graph, bootstrap bipartitions support bootstrap percentages plotted optimized tree dataset Wang, Braun, Kimball (2012). (advanced user figure…)","code":"Nnet <- read.nexus.networx(file.path(fdir,\"RAxML_distances.Wang.nxs\")) raxml.tree <- read.tree(file.path(fdir,\"RAxML_bestTree.Wang.out\")) |> unroot() raxml.bootstrap <- read.tree(file.path(fdir,\"RAxML_bootstrap.Wang.out\")) bs_splits <- as.splits(raxml.bootstrap) tree_splits <- as.splits(raxml.tree) |> unique() |> removeTrivialSplits() # we overwrite bootstrap values and set the weights # to 1e-6 (almost zero), as we plot them on a log scale later on attr(bs_splits, \"weights\")[] <- 1e-6 # combine the splits from the bootstrap and neighbor net # and delete duplicates and add the confidence values # we get rid of trivial splits all_splits <- c(Nnet$splits, bs_splits) |> unique() |> removeTrivialSplits() |> addConfidences(bs_splits, scaler=100) # For easier plotting we create a matrix with the confidences and # weights as columns tab <- data.frame(SplitWeight = attr(all_splits, \"weights\"), Bootstrap=attr(all_splits, \"confidences\"), Tree=FALSE) # we add a logical variable pto indicate which splits are in the RAxML tree tab$Tree[matchSplits(tree_splits, all_splits, FALSE)] <- TRUE tab[is.na(tab[,\"Bootstrap\"]),\"Bootstrap\"] <- 0 tab[,\"Bootstrap\"] <- round(tab[,\"Bootstrap\"]) rownames(tab) <- apply(as.matrix(all_splits, zero.print = \".\", one.print = \"|\"), 1, paste0, collapse=\"\") tab[1:10,] ## SplitWeight Bootstrap Tree ## ..||........................ 0.0171433 100 TRUE ## ..||||...................... 0.0013902 14 FALSE ## ..||||......|||||........... 0.0001589 0 FALSE ## ||.........................| 0.0027691 1 FALSE ## ||.......................... 0.0840367 100 TRUE ## ...|||...................... 0.0001773 0 FALSE ## ...|||........|.|........... 0.0003663 0 FALSE ## |.|......................... 0.0060907 0 FALSE ## ....||...................... 0.0385909 100 TRUE ## ||||........................ 0.0018195 34 TRUE col <- rep(\"blue\", nrow(tab)) col[tab[,\"Bootstrap\"]==0] <- \"green\" col[tab[,\"SplitWeight\"]==1e-6] <- \"red\" pch <- rep(19, nrow(tab)) pch[tab$Tree] <- 17 par(mar=c(5.1, 4.1, 4.1, 8.1), xpd=TRUE) plot(tab[,\"SplitWeight\"], tab[,\"Bootstrap\"], log=\"x\", col=col, pch=pch, xlab=\"Split weight (log scale)\", ylab=\"Bootstrap (%)\") legend(\"topright\", inset=c(-0.35,0), c(\"Pattern 1\", \"Pattern 2\", \"Pattern 3\", \"Pattern in the\\nbest tree\"), pch=c(19,19,19,17), col=c(\"blue\", \"green\", \"red\", \"black\"), bty=\"n\")"},{"path":"https://klausvigo.github.io/phangorn/articles/IntertwiningTreesAndNetworks.html","id":"figure-4","dir":"Articles","previous_headings":"","what":"Figure 4","title":"Intertwining phylogenetic trees and networks: R Example Script","text":"several option plotting co-phylogeny. following use cophylo function phytools package. Unfortunately function (yet) offer add confidences splits, can easily basic plot functions. can compare consensus network different bootstrap values different genes.","code":"YCh <- read.tree(file.path(fdir, \"RAxML_bestTree.YCh\")) mtG <- read.tree(file.path(fdir, \"RAxML_bestTree.mtG\")) ncAI <- read.tree(file.path(fdir, \"RAxML_bestTree.AIs\")) all_data <- read.tree(file.path(fdir, \"RAxML_bestTree.3moles\")) YCh_boot <- read.tree(file.path(fdir, \"RAxML_bootstrap.YCh\")) mtG_boot <- read.tree(file.path(fdir, \"RAxML_bootstrap.mtG\")) ncAI_boot <- read.tree(file.path(fdir, \"RAxML_bootstrap.AIs\")) all_data_boot <- read.tree(file.path(fdir, \"RAxML_bootstrap.3moles\")) library(phytools) par(mfrow=c(2,1)) obj <- cophylo(YCh, mtG) plot(obj, mar=c(.1,.1,2,.1),scale.bar=c(.005,.05), ylim=c(-.2,1)) title(\"A. YCh B. mtG\") obj <- cophylo(ncAI, all_data) plot(obj, mar=c(.1,.1,2,.1),scale.bar=c(.005,.05), ylim=c(-.2,1)) title(\"C. ncAI D. All data\") par(mfrow=c(2,2), mar = c(2,2,4,2)) YCh <- plotBS(midpoint(YCh), YCh_boot, \"phylogram\", p=0, main = \"YCh\") mtG <- plotBS(midpoint(mtG), mtG_boot, \"phylogram\", p=0, main = \"mtG\") ncAI <- plotBS(midpoint(ncAI), ncAI_boot, \"phylogram\", p=0, main = \"ncAI\") all_data <- plotBS(midpoint(all_data), all_data_boot, \"phylogram\", p=0, main = \"All data\") par(mfrow=c(1,1)) cn <- consensusNet(c(YCh, mtG, ncAI)) cn <- addConfidences(cn, YCh_boot) |> addConfidences(mtG_boot, add=TRUE) |> addConfidences(ncAI_boot, add=TRUE) |> addConfidences(all_data_boot, add=TRUE) plot(cn, \"2D\", show.edge.label=TRUE)"},{"path":"https://klausvigo.github.io/phangorn/articles/MLbyHand.html","id":"maximum-likelihood-by-hand","dir":"Articles","previous_headings":"","what":"Maximum likelihood by hand","title":"Maximum likelihood by hand","text":"function pml_bb phangorn (Schliep 2011) lot steps become easier shorter. want control used parameters, also possible use older functions, e.g. optim_pml. data vignette Estimating phylogenetic trees phangorn: starting tree, calculate neighbor joining tree: function pml returns object class pml. object contains data, tree many different parameters model like likelihood. many generic functions class pml available, allow handling objects. object fit just estimated likelihood tree got supplied, branch length optimized Jukes-Cantor (Jukes Cantor 1969) model yet, can done function optim.pml. default values pml estimate Jukes-Cantor model. means equal base frequencies transition rates equal. generic function update allows change parameters manually. usually want . However might want supply different tree change number rate categories. line changed model (discrete) rate across site model 4 rate categories (using default shape parameter 1), 0.2 invariant sites supply empirical base frequencies. change model GTR + \\(\\Gamma(4)\\) + model optimize parameters. control parameters thresholds fitting process can changed. want just suppress output fitting process. larger trees NNI rearrangements often get stuck local maximum. added two stochastic algorithms improve topology search. first (set rearrangement=\"stochastic\") performs stochastic rearrangements similar (Nguyen et al. 2015), makes random NNI permutation tree, gets optimized escape local optima. second option (rearrangement=\"ratchet\") perform likelihood ratchet (Vos 2003). algorithms may find better trees also take time.","code":"library(ape) library(phangorn) fdir <- system.file(\"extdata/trees\", package = \"phangorn\") primates <- read.phyDat(file.path(fdir, \"primates.dna\"), format = \"interleaved\") dm <- dist.ml(primates) treeNJ <- NJ(dm) fit <- pml(treeNJ, data=primates) fit ## model: JC ## loglikelihood: -3075 ## unconstrained loglikelihood: -1230 ## ## Rate matrix: ## a c g t ## a 0 1 1 1 ## c 1 0 1 1 ## g 1 1 0 1 ## t 1 1 1 0 ## ## Base frequencies: ## a c g t ## 0.25 0.25 0.25 0.25 methods(class=\"pml\") ## [1] AICc anova BIC logLik plot print simSeq update vcov ## see '?methods' for accessing help and source code fitJC <- optim.pml(fit, rearrangement=\"NNI\") ## optimize edge weights: -3075 --> -3068 ## optimize edge weights: -3068 --> -3068 ## optimize topology: -3068 --> -3068 NNI moves: 1 ## optimize edge weights: -3068 --> -3068 ## optimize topology: -3068 --> -3068 NNI moves: 0 logLik(fitJC) ## 'log Lik.' -3068 (df=25) fitF81 <- update(fitJC, k=4, inv=0.2, bf=baseFreq(primates)) fitF81 ## model: F81+G(4)+I ## loglikelihood: -3037 ## unconstrained loglikelihood: -1230 ## Proportion of invariant sites: 0.2 ## Model of rate heterogeneity: Discrete gamma model ## Number of rate categories: 4 ## Shape parameter: 1 ## Rate Proportion ## 1 0.0000 0.2 ## 2 0.1712 0.2 ## 3 0.5959 0.2 ## 4 1.2500 0.2 ## 5 2.9829 0.2 ## ## Rate matrix: ## a c g t ## a 0 1 1 1 ## c 1 0 1 1 ## g 1 1 0 1 ## t 1 1 1 0 ## ## Base frequencies: ## a c g t ## 0.37481 0.40160 0.03911 0.18448 fitGTR <- optim.pml(fitF81, model=\"GTR\", optInv=TRUE, optGamma=TRUE, rearrangement = \"NNI\", control = pml.control(trace = 0)) fitGTR ## model: GTR+G(4)+I ## loglikelihood: -2611 ## unconstrained loglikelihood: -1230 ## Proportion of invariant sites: 0.006977 ## Model of rate heterogeneity: Discrete gamma model ## Number of rate categories: 4 ## Shape parameter: 3.08 ## Rate Proportion ## 1 0.0000 0.006977 ## 2 0.3982 0.248256 ## 3 0.7410 0.248256 ## 4 1.0905 0.248256 ## 5 1.7984 0.248256 ## ## Rate matrix: ## a c g t ## a 0.0000 0.947351 63.659981 0.8068 ## c 0.9474 0.000000 0.004462 24.6544 ## g 63.6600 0.004462 0.000000 1.0000 ## t 0.8068 24.654426 1.000000 0.0000 ## ## Base frequencies: ## a c g t ## 0.37481 0.40160 0.03911 0.18448 fitGTR <- optim.pml(fitGTR, model=\"GTR\", optInv=TRUE, optGamma=TRUE, rearrangement = \"stochastic\", control = pml.control(trace = 0)) fitGTR ## model: GTR+G(4)+I ## loglikelihood: -2608 ## unconstrained loglikelihood: -1230 ## Proportion of invariant sites: 0.007413 ## Model of rate heterogeneity: Discrete gamma model ## Number of rate categories: 4 ## Shape parameter: 2.994 ## Rate Proportion ## 1 0.0000 0.007413 ## 2 0.3917 0.248147 ## 3 0.7366 0.248147 ## 4 1.0906 0.248147 ## 5 1.8110 0.248147 ## ## Rate matrix: ## a c g t ## a 0.0000 0.720613 73.979940 0.5986 ## c 0.7206 0.000000 0.003609 25.8874 ## g 73.9799 0.003609 0.000000 1.0000 ## t 0.5986 25.887352 1.000000 0.0000 ## ## Base frequencies: ## a c g t ## 0.37481 0.40160 0.03911 0.18448"},{"path":"https://klausvigo.github.io/phangorn/articles/MLbyHand.html","id":"model-comparison","dir":"Articles","previous_headings":"Maximum likelihood by hand","what":"Model comparison","title":"Maximum likelihood by hand","text":"can compare nested models JC GTR + \\(\\Gamma(4)\\) + model using likelihood ratio statistic Shimodaira-Hasegawa test AIC","code":"anova(fitJC, fitGTR) ## Likelihood Ratio Test Table ## Log lik. Df Df change Diff log lik. Pr(>|Chi|) ## 1 -3068 25 ## 2 -2608 35 10 921 <2e-16 *** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 SH.test(fitGTR, fitJC) ## Trees ln L Diff ln L p-value ## [1,] 1 -2608 0.0 0.5021 ## [2,] 2 -3068 460.5 0.0000 AIC(fitJC) ## [1] 6187 AIC(fitGTR) ## [1] 5286 AICc(fitGTR) ## [1] 5298 BIC(fitGTR) ## [1] 5406"},{"path":"https://klausvigo.github.io/phangorn/articles/MLbyHand.html","id":"bootstrap","dir":"Articles","previous_headings":"Maximum likelihood by hand","what":"Bootstrap","title":"Maximum likelihood by hand","text":"last may want apply standard bootstrap test well edges tree supported. already shown vignette Estimating phylogenetic trees phangorn. Now can plot tree bootstrap support values edges also look consensusNet identify potential conflict. Tree bootstrap support. Unrooted tree (midpoint rooted) bootstrap support values. ConsensusNet bootstrap sample.","code":"bs <- bootstrap.pml(fitJC, bs=100, optNni=TRUE, control = pml.control(trace = 0)) plotBS(midpoint(fitJC$tree), bs, p = 50, type=\"p\") cnet <- consensusNet(bs, p=0.2) plot(cnet, show.edge.label=TRUE)"},{"path":"https://klausvigo.github.io/phangorn/articles/MLbyHand.html","id":"generating-trees","dir":"Articles","previous_headings":"","what":"Generating trees","title":"Maximum likelihood by hand","text":"phangorn several functions generate tree topologies, may interesting simulation studies. allTrees computes possible bifurcating tree topologies either rooted unrooted 10 taxa. One keep mind number trees growing exponentially, use howmanytrees ape reminder. nni returns list trees one nearest neighbor interchange away. rNNI rSPR generate trees defined number NNI (nearest neighbor interchange) SPR (subtree pruning regrafting) away.","code":"trees <- allTrees(5) par(mfrow=c(3,5), mar=rep(0,4)) for(i in 1:15)plot(trees[[i]], cex=1, type=\"u\") nni(trees[[1]]) ## 4 phylogenetic trees"},{"path":"https://klausvigo.github.io/phangorn/articles/MLbyHand.html","id":"session-info","dir":"Articles","previous_headings":"","what":"Session info","title":"Maximum likelihood by hand","text":"","code":"## R version 4.3.2 (2023-10-31) ## Platform: x86_64-pc-linux-gnu (64-bit) ## Running under: Ubuntu 22.04.3 LTS ## ## Matrix products: default ## BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 ## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so; LAPACK version 3.10.0 ## ## locale: ## [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 ## [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 ## [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C ## [10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C ## ## time zone: UTC ## tzcode source: system (glibc) ## ## attached base packages: ## [1] stats graphics grDevices utils datasets methods base ## ## other attached packages: ## [1] phangorn_3.0.0.0 ape_5.7-1.8 ## ## loaded via a namespace (and not attached): ## [1] Matrix_1.6-1.1 jsonlite_1.8.8 highr_0.10 compiler_4.3.2 ## [5] Rcpp_1.0.12 stringr_1.5.1 parallel_4.3.2 jquerylib_0.1.4 ## [9] systemfonts_1.0.5 textshaping_0.3.7 yaml_2.3.8 fastmap_1.1.1 ## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_2.0.1 ## [17] knitr_1.45 desc_1.4.3 bslib_0.6.1 rlang_1.1.3 ## [21] fastmatch_1.1-4 cachem_1.0.8 stringi_1.8.3 xfun_0.41 ## [25] quadprog_1.5-8 fs_1.6.3 sass_0.4.8 memoise_2.0.1 ## [29] cli_3.6.2 pkgdown_2.0.7 magrittr_2.0.3 digest_0.6.34 ## [33] grid_4.3.2 lifecycle_1.0.4 nlme_3.1-163 vctrs_0.6.5 ## [37] evaluate_0.23 glue_1.7.0 codetools_0.2-19 ragg_1.2.7 ## [41] rmarkdown_2.25 purrr_1.0.2 pkgconfig_2.0.3 tools_4.3.2 ## [45] htmltools_0.5.7"},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/articles/Morphological.html","id":"load-packages","dir":"Articles","previous_headings":"","what":"Load packages","title":"Phylogenetic trees from morphological data","text":"start loading phangorn package setting random seed:","code":"library(phangorn) ## Loading required package: ape set.seed(9)"},{"path":"https://klausvigo.github.io/phangorn/articles/Morphological.html","id":"load-data","dir":"Articles","previous_headings":"","what":"Load data","title":"Phylogenetic trees from morphological data","text":"dataset ’re using contains morphological data 12 mite species, 79 encoded characters (Schäffer et al. 2010). reading .csv file, row.names = 1 uses first column (species) row names. get phyDat object, convert dataframe matrix .matrix. data can written nexus file: Reading nexus file even easier reading csv file: reading nexus file, states 0:9, data states 0:7. one possibility change contrast matrix: Now data, can start analyses.","code":"fdir <- system.file(\"extdata\", package = \"phangorn\") mm <- read.csv(file.path(fdir, \"mites.csv\"), row.names = 1) mm_pd <- phyDat(as.matrix(mm), type = \"USER\", levels = 0:7) write.phyDat(mm_pd, file.path(fdir, \"mites.nex\"), format = \"nexus\") mm_pd <- read.phyDat(file.path(fdir, \"mites.nex\"), format = \"nexus\", type = \"STANDARD\") contrast <- matrix(data = c(1,0,0,0,0,0,0,0,0, 0,1,0,0,0,0,0,0,0, 0,0,1,0,0,0,0,0,0, 0,0,0,1,0,0,0,0,0, 0,0,0,0,1,0,0,0,0, 0,0,0,0,0,1,0,0,0, 0,0,0,0,0,0,1,0,0, 0,0,0,0,0,0,0,1,0, 0,0,0,0,0,0,0,0,1, 1,1,1,1,1,1,1,1,1), ncol = 9, byrow = TRUE) dimnames(contrast) <- list(c(0:7,\"-\",\"?\"), c(0:7, \"-\")) contrast ## 0 1 2 3 4 5 6 7 - ## 0 1 0 0 0 0 0 0 0 0 ## 1 0 1 0 0 0 0 0 0 0 ## 2 0 0 1 0 0 0 0 0 0 ## 3 0 0 0 1 0 0 0 0 0 ## 4 0 0 0 0 1 0 0 0 0 ## 5 0 0 0 0 0 1 0 0 0 ## 6 0 0 0 0 0 0 1 0 0 ## 7 0 0 0 0 0 0 0 1 0 ## - 0 0 0 0 0 0 0 0 1 ## ? 1 1 1 1 1 1 1 1 1 mm_pd <- phyDat(mm_pd, type=\"USER\", contrast=contrast)"},{"path":"https://klausvigo.github.io/phangorn/articles/Morphological.html","id":"parsimony","dir":"Articles","previous_headings":"","what":"Parsimony","title":"Phylogenetic trees from morphological data","text":"morphological data, one frequently used approaches conduct phylogenetic trees maximum parsimony (MP). pratchet (already described Estimating phylogenetic trees phangorn) implements parsimony ratchet (Nixon 1999). create starting tree, can use function random.addition: tree can given pratchet: =TRUE get (case 19) trees lowest parsimony score multiPhylo object. Since minimum 1000 iterations, already edge support. Now can assign edge lengths.","code":"mm_start <- random.addition(mm_pd) mm_tree <- pratchet(mm_pd, start = mm_start, minit = 1000, maxit = 10000, all = TRUE, trace = 0) mm_tree ## 19 phylogenetic trees mm_tree <- acctran(mm_tree, mm_pd)"},{"path":"https://klausvigo.github.io/phangorn/articles/Morphological.html","id":"branch-and-bound","dir":"Articles","previous_headings":"Parsimony","what":"Branch and bound","title":"Phylogenetic trees from morphological data","text":"case mites-dataset 12 sequences, ’s also possible use branch bound algorithm (Hendy Penny 1982) find parsimonious trees. bigger datasets definitely recommended use pratchet.","code":"mm_bab <- bab(mm_pd, trace = 0) mm_bab ## 37 phylogenetic trees"},{"path":"https://klausvigo.github.io/phangorn/articles/Morphological.html","id":"root-trees","dir":"Articles","previous_headings":"Parsimony","what":"Root trees","title":"Phylogenetic trees from morphological data","text":"want unrooted trees rooted, possibility use midpoint perform midpoint rooting. Rooting trees specific species (chose C. cymba ) can done function root ape package (Paradis Schliep 2019). save correct node labels (edge support), ’s important set edgelabel=TRUE.","code":"mm_tree_rooted <- root(mm_tree, outgroup = \"C._cymba\", resolve.root = TRUE, edgelabel = TRUE)"},{"path":"https://klausvigo.github.io/phangorn/articles/Morphological.html","id":"plot-trees","dir":"Articles","previous_headings":"Parsimony","what":"Plot trees","title":"Phylogenetic trees from morphological data","text":"plotBS plot tree respective edge support. also possible save plots .pdf (various formats, e.g. svg, png, tiff) file. digits argument determine number digits shown bootstrap values.","code":"# subsetting for tree nr. 9 plotBS(mm_tree_rooted[[9]], digits = 2) # save plot as pdf pdf(file = \"mm_rooted.pdf\") plotBS(mm_tree_rooted[[9]], digits = 2) dev.off()"},{"path":"https://klausvigo.github.io/phangorn/articles/Morphological.html","id":"consensus-tree","dir":"Articles","previous_headings":"Parsimony","what":"Consensus tree","title":"Phylogenetic trees from morphological data","text":"look consensus tree 19 trees pratchet, 37 parsimonious trees bab, can use consensus function ape. Unrooted rooted consensus trees mites dataset MP. can clearly see , expected, two rooted trees topology.","code":"# unrooted pratchet tree mm_cons <- consensus(mm_tree) # rooted pratchet tree mm_cons_root <- consensus(mm_tree_rooted, rooted = TRUE) # branch and bound, we root the consensus tree in the same step mm_bab_cons <- root(consensus(mm_bab), outgroup = \"C._cymba\", resolve.root = TRUE, edgelabel = TRUE) plot(mm_cons, main=\"Unrooted pratchet consensus tree\") plot(mm_cons_root, main=\"Rooted pratchet consensus tree\") plot(mm_bab_cons, main=\"Rooted bab consensus tree\")"},{"path":"https://klausvigo.github.io/phangorn/articles/Morphological.html","id":"session-info","dir":"Articles","previous_headings":"","what":"Session info","title":"Phylogenetic trees from morphological data","text":"","code":"## R version 4.3.2 (2023-10-31) ## Platform: x86_64-pc-linux-gnu (64-bit) ## Running under: Ubuntu 22.04.3 LTS ## ## Matrix products: default ## BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 ## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so; LAPACK version 3.10.0 ## ## locale: ## [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 ## [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 ## [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C ## [10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C ## ## time zone: UTC ## tzcode source: system (glibc) ## ## attached base packages: ## [1] stats graphics grDevices utils datasets methods base ## ## other attached packages: ## [1] phangorn_3.0.0.0 ape_5.7-1.8 ## ## loaded via a namespace (and not attached): ## [1] Matrix_1.6-1.1 jsonlite_1.8.8 highr_0.10 compiler_4.3.2 ## [5] Rcpp_1.0.12 stringr_1.5.1 parallel_4.3.2 jquerylib_0.1.4 ## [9] systemfonts_1.0.5 textshaping_0.3.7 yaml_2.3.8 fastmap_1.1.1 ## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_2.0.1 ## [17] knitr_1.45 desc_1.4.3 bslib_0.6.1 rlang_1.1.3 ## [21] fastmatch_1.1-4 cachem_1.0.8 stringi_1.8.3 xfun_0.41 ## [25] quadprog_1.5-8 fs_1.6.3 sass_0.4.8 memoise_2.0.1 ## [29] cli_3.6.2 pkgdown_2.0.7 magrittr_2.0.3 digest_0.6.34 ## [33] grid_4.3.2 lifecycle_1.0.4 nlme_3.1-163 vctrs_0.6.5 ## [37] evaluate_0.23 glue_1.7.0 codetools_0.2-19 ragg_1.2.7 ## [41] rmarkdown_2.25 purrr_1.0.2 pkgconfig_2.0.3 tools_4.3.2 ## [45] htmltools_0.5.7"},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/articles/Networx.html","id":"consensusnet","dir":"Articles","previous_headings":"","what":"consensusNet","title":"Splits and Networx","text":"consensusNet (Holland et al. 2004) generalization consensus tree. Instead representing splits (taxon bipartitions) occurring least 50% trees bootstrap MCMC sample one can use lower threshold explore competing splits. Note , basic implementation used , consensusNet edge lengths proportional frequency corresponding splits provided list trees. input consensusNet list trees .e. object class multiPhylo. many cases, consensusNet return two incompatible (competing) splits. plotted planar (2-dimensional) graph. situation requires n-dimensional graph, maximum number dimensions equals maximum number incompatible splits. example, three alternative incompatible splits: (,B)|(C,D) vs. (,C)|(B,D) vs. (,D)|(B,C), need 3-dimensional graph show three alternatives. nice way get still good impression network plot 3D. result spinning graph similar rotatingNetworx","code":"set.seed(1) bs <- bootstrap.phyDat(yeast, FUN = function(x)nj(dist.hamming(x)), bs=100) tree <- nj(dist.hamming(yeast)) par(\"mar\" = rep(1, 4)) tree <- plotBS(tree, bs, \"phylogram\") cnet <- consensusNet(bs, .3) plot(cnet, show.edge.label=TRUE) plot(cnet, \"3D\") # rotate 3d plot play3d(spin3d(axis=c(0,1,0), rpm=6), duration=10) # create animated gif file movie3d(spin3d(axis=c(0,1,0), rpm=6), duration=10)"},{"path":"https://klausvigo.github.io/phangorn/articles/Networx.html","id":"neighbornet","dir":"Articles","previous_headings":"","what":"neighborNet","title":"Splits and Networx","text":"function neighborNet implements popular method Bryant Moulton (2004). Neighbor-Net algorithm essentially 2D-version Neighbor joining algorithm. Neighbour-net computed two steps: first computes circular ordering taxa data set; second step involves estimation edge weights using non-negative Least-Squares (nnls). advantage Neighbor-Net returns circular split system can always displayed planar (2D) graph. rendering networx done using fantastic igraph package (Csardi Nepusz 2006).","code":"dm <- dist.hamming(yeast) nnet <- neighborNet(dm) par(\"mar\" = rep(1, 4)) plot(nnet)"},{"path":"https://klausvigo.github.io/phangorn/articles/Networx.html","id":"adding-support-values","dir":"Articles","previous_headings":"","what":"Adding support values","title":"Splits and Networx","text":"can use generic function addConfidences add (branch) support values tree, .e. object class phylo networx, splits phylo object. Neighbor-Net object computed provides support values. can add support values tree computed splits (edges) shared objects. Analogously, can also add support values tree:","code":"nnet <- addConfidences(nnet, tree) par(\"mar\" = rep(1, 4)) plot(nnet, show.edge.label=TRUE) tree2 <- rNNI(tree, 2) tree2 <- addConfidences(tree2, tree) # several support values are missing par(\"mar\" = rep(1, 4)) plot(tree2, show.node.label=TRUE)"},{"path":"https://klausvigo.github.io/phangorn/articles/Networx.html","id":"estimating-edge-weights-nnls","dir":"Articles","previous_headings":"","what":"Estimating edge weights (nnls)","title":"Splits and Networx","text":"Consensus networks, hand, provide primarily information support values corresponding split, information actual difference taxon bipartitions defined split. example, one may interested alternative support values correspond actual genetic distance involved taxa. Given distance matrix, can estimate edge weights using non-negative Least-Squares, plot onto consensusNet splits graph.","code":"cnet <- nnls.networx(cnet, dm) par(\"mar\" = rep(1, 4)) plot(cnet, show.edge.label=TRUE)"},{"path":"https://klausvigo.github.io/phangorn/articles/Networx.html","id":"import-and-export-networks-advanced-functions-for-networx-objects","dir":"Articles","previous_headings":"Estimating edge weights (nnls)","what":"Import and export networks, advanced functions for networx objects","title":"Splits and Networx","text":"functions read.nexus.networx write.nexus.networx can read write nexus files SplitsTree (Huson Bryant 2006). Check-new vignette IntertwiningTreesAndNetworks (K. Schliep et al. 2017) additional functions, examples, advanced application.","code":""},{"path":"https://klausvigo.github.io/phangorn/articles/Networx.html","id":"session-information","dir":"Articles","previous_headings":"","what":"Session Information","title":"Splits and Networx","text":"","code":"sessionInfo() ## R version 4.3.2 (2023-10-31) ## Platform: x86_64-pc-linux-gnu (64-bit) ## Running under: Ubuntu 22.04.3 LTS ## ## Matrix products: default ## BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 ## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so; LAPACK version 3.10.0 ## ## locale: ## [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 ## [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 ## [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C ## [10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C ## ## time zone: UTC ## tzcode source: system (glibc) ## ## attached base packages: ## [1] stats graphics grDevices utils datasets methods base ## ## other attached packages: ## [1] phangorn_3.0.0.0 ape_5.7-1.8 ## ## loaded via a namespace (and not attached): ## [1] Matrix_1.6-1.1 jsonlite_1.8.8 highr_0.10 compiler_4.3.2 ## [5] Rcpp_1.0.12 stringr_1.5.1 parallel_4.3.2 jquerylib_0.1.4 ## [9] systemfonts_1.0.5 textshaping_0.3.7 yaml_2.3.8 fastmap_1.1.1 ## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_2.0.1 ## [17] knitr_1.45 desc_1.4.3 bslib_0.6.1 rlang_1.1.3 ## [21] fastmatch_1.1-4 cachem_1.0.8 stringi_1.8.3 xfun_0.41 ## [25] quadprog_1.5-8 fs_1.6.3 sass_0.4.8 memoise_2.0.1 ## [29] cli_3.6.2 pkgdown_2.0.7 magrittr_2.0.3 digest_0.6.34 ## [33] grid_4.3.2 lifecycle_1.0.4 nlme_3.1-163 vctrs_0.6.5 ## [37] evaluate_0.23 glue_1.7.0 codetools_0.2-19 ragg_1.2.7 ## [41] rmarkdown_2.25 purrr_1.0.2 pkgconfig_2.0.3 tools_4.3.2 ## [45] htmltools_0.5.7"},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Estimating phylogenetic trees with phangorn","text":"notes enable user estimate phylogenetic trees alignment data different methods using phangorn package (Schliep 2011) . Several functions package also described detail (Paradis 2012). theoretical background methods see e.g. (Felsenstein 2004; Yang 2006). document illustrates package’s features estimate phylogenetic trees using different reconstruction methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"getting-started","dir":"Articles","previous_headings":"","what":"Getting started","title":"Estimating phylogenetic trees with phangorn","text":"first thing read alignment. Unfortunately exist many different file formats alignments can stored . cases, function read.phyDat used read alignment. ape package (Paradis Schliep 2019) phangorn, several functions read alignments, depending format data set (“nexus”, “phylip”, “fasta”) kind data (amino acid, nucleotides, morphological data). function read.phyDat calls functions transforms phyDat object. specific parameter settings available look help files function read.dna (phylip, fasta, clustal format), read.nexus.data nexus files. amino acid data additional read.aa called. Morphological data shown later vignette Phylogenetic trees morphological data. start analysis loading phangorn package reading alignment.","code":"library(ape) library(phangorn) fdir <- system.file(\"extdata/trees\", package = \"phangorn\") primates <- read.phyDat(file.path(fdir, \"primates.dna\"), format = \"interleaved\")"},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"distance-based-methods","dir":"Articles","previous_headings":"","what":"Distance based methods","title":"Estimating phylogenetic trees with phangorn","text":"reading nucleotide alignment can build first tree distance based methods. function dist.dna ape package computes distances many DNA substitution models, use function dist.dna, transform data class DNAbin. function dist.ml phangorn offers substitution models “JC69” “F81” DNA, also common substitution models amino acids (e.g. “WAG”, “JTT”, “LG”, “Dayhoff”, “cpREV”, “mtmam”, “mtArt”, “MtZoa” “mtREV24”). constructing distance matrix, reconstruct rooted tree UPGMA alternatively unrooted tree using Neighbor Joining (Saitou Nei 1987; Studier Keppler 1988). distance methods like fastme available ape package. can plot trees treeUPGMA treeNJ commands: Rooted UPGMA tree. Unrooted NJ tree.","code":"dm <- dist.ml(primates) treeUPGMA <- upgma(dm) treeNJ <- NJ(dm) plot(treeUPGMA, main=\"UPGMA\") plot(treeNJ, \"unrooted\", main=\"NJ\")"},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"bootstrap","dir":"Articles","previous_headings":"Distance based methods","what":"Bootstrap","title":"Estimating phylogenetic trees with phangorn","text":"run bootstrap first need write function computes tree alignment. first need compute distance matrix afterwards compute tree. can give function bootstrap.phyDat function. new syntax R 4.1 can written bit shorter: Finally, can plot tree bootstrap values added: Rooted UPGMA tree. Distance based methods fast use UPGMA NJ tree starting trees maximum parsimony maximum likelihood analyses.","code":"fun <- function(x) upgma(dist.ml(x)) bs_upgma <- bootstrap.phyDat(primates, fun) bs_upgma <- bootstrap.phyDat(primates, \\(x){dist.ml(x) |> upgma}) plotBS(treeUPGMA, bs_upgma, main=\"UPGMA\")"},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"parsimony","dir":"Articles","previous_headings":"","what":"Parsimony","title":"Estimating phylogenetic trees with phangorn","text":"function parsimony returns parsimony score, minimum number changes necessary describe data given tree. can compare parsimony score two trees computed far: function users want use infer phylogenies MP (maximum parsimony) pratchet, implementation parsimony ratchet (Nixon 1999). allows escape local optima find better trees performing NNI / SPR rearrangements. current implementation Create bootstrap data set \\(D_b\\) original data set. Take current best tree perform tree rearrangements \\(D_b\\) save bootstrap tree \\(T_b\\). Use \\(T_b\\) perform tree rearrangements original data set. tree lower parsimony score currently best tree, replace . Iterate 1:3 either given number iteration reached (minit) improvements recorded number iterations (k). set minimum iteration parsimony ratchet (minit) 100 iterations, default number k 10. ratchet implicitly performs bootstrap resampling, already computed branch support, case least 100 bootstrap iterations. parameter trace=0 tells function write current status console. function may return several best trees, trees branch length assigned yet. Now let’s : assigning edge weights, prune away internal edges length tol (default = 1e-08), trees may contain multifurcations. trees might differed edges length 0. mentioned , parsimony ratchet implicitly performs bootstrap analysis (step 1). make use store trees visited. allows us add bootstrap support values tree. treeRatchet list trees, .e. object class multiPhylo, can subset -th trees treeRatchet[[]]. cases pratchet enough use, phangorn exports function might useful. random.addition computes random addition can used generate starting trees. function optim.parsimony performs tree rearrangements find trees lower parsimony score. tree rearrangements implemented nearest-neighbor interchanges (NNI) subtree pruning regrafting (SPR). latter far works fitch algorithm.","code":"parsimony(treeUPGMA, primates) ## [1] 751 parsimony(treeNJ, primates) ## [1] 746 treeRatchet <- pratchet(primates, trace = 0, minit=100) parsimony(treeRatchet, primates) ## [1] 746 treeRatchet <- acctran(treeRatchet, primates) treeRatchet <- di2multi(treeRatchet) if(inherits(treeRatchet, \"multiPhylo\")){ treeRatchet <- unique(treeRatchet) } plotBS(midpoint(treeRatchet), type=\"phylogram\") add.scale.bar() treeRA <- random.addition(primates) treeSPR <- optim.parsimony(treeRA, primates) ## Final p-score 746 after 0 nni operations parsimony(c(treeRA, treeSPR), primates) ## [1] 746 746"},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"branch-and-bound","dir":"Articles","previous_headings":"Parsimony","what":"Branch and bound","title":"Estimating phylogenetic trees with phangorn","text":"data sets species also possible find parsimonious trees using branch bound algorithm (Hendy Penny 1982). data sets 10 taxa can take long time depends strongly “tree-like” data . 20-30 taxa take almost forever.","code":"(trees <- bab(primates[1:10,])) ## 1 phylogenetic tree"},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"maximum-likelihood","dir":"Articles","previous_headings":"","what":"Maximum likelihood","title":"Estimating phylogenetic trees with phangorn","text":"last method describe vignette Maximum Likelihood (ML) introduced Felsenstein (Felsenstein 1981).","code":""},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"model-selection","dir":"Articles","previous_headings":"Maximum likelihood","what":"Model selection","title":"Estimating phylogenetic trees with phangorn","text":"Usually, first step, try find best fitting model. use function modelTest compare different nucleotide protein models AIC, AICc BIC, similar popular programs ModelTest ProtTest (D. Posada Crandall 1998; David Posada 2008; Abascal, Zardoya, Posada 2005). default available nucleotide amino acid models compared. Vignette Markov models transition rate matrices gives background models, estimated can work . ’s also possible select common models: results modelTest illustrated following table: speed computations thresholds optimizations modelTest strict optim.pml (shown coming vignettes) tree rearrangements performed, time consuming part optimizing process. modelTest computes optimizes lot models waste computer time save results. results saved call together optimized trees environment function .pml evaluates call get pml object back use optimization analysis. can either done specific model, specific criterion.","code":"mt <- modelTest(primates) mt <- modelTest(primates, model=c(\"JC\", \"F81\", \"K80\", \"HKY\", \"SYM\", \"GTR\"), control = pml.control(trace = 0)) fit <- as.pml(mt, \"HKY+G(4)+I\") fit <- as.pml(mt, \"BIC\")"},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"conducting-a-ml-tree","dir":"Articles","previous_headings":"Maximum likelihood","what":"Conducting a ML tree","title":"Estimating phylogenetic trees with phangorn","text":"simplify workflow, can give result modelTest function pml_bb optimize parameters taking best model according BIC. Ultrafast bootstrapping (Minh, Nguyen, Haeseler 2013) conducted automatically default rearrangements=\"stochastic\" used. rearrangements=\"NNI\" used, bootstrapping conducted. can also use pml_bb defined model infer phylogenetic tree.","code":"fit_mt <- pml_bb(mt, control = pml.control(trace = 0)) fit_mt ## model: HKY+G(4) ## loglikelihood: -2615.014 ## unconstrained loglikelihood: -1230.335 ## Model of rate heterogeneity: Discrete gamma model ## Number of rate categories: 4 ## Shape parameter: 2.272944 ## Rate Proportion ## 1 0.3238155 0.25 ## 2 0.6812180 0.25 ## 3 1.0755282 0.25 ## 4 1.9194384 0.25 ## ## Rate matrix: ## a c g t ## a 0.00000 1.00000 54.54421 1.00000 ## c 1.00000 0.00000 1.00000 54.54421 ## g 54.54421 1.00000 0.00000 1.00000 ## t 1.00000 54.54421 1.00000 0.00000 ## ## Base frequencies: ## a c g t ## 0.37480751 0.40160148 0.03911303 0.18447798 fitGTR <- pml_bb(primates, model=\"GTR+G(4)+I\")"},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"bootstrap-1","dir":"Articles","previous_headings":"Maximum likelihood","what":"Bootstrap","title":"Estimating phylogenetic trees with phangorn","text":"instead want conduct standard bootstrapping (Felsenstein 1985; Penny Hendy 1985), can function bootstrap.pml: Now can plot tree bootstrap support values edges compare standard bootstrap values ultrafast bootstrap values. function plotBS possible plot two, also transfer bootstraps (Lemoine et al. 2018) especially useful large data sets. Unrooted tree (midpoint rooted) ultrafast, standard transfer bootstrap support values. want assign standard transfer bootstrap values node labels tree instead plotting (e.g. export tree somewhere else), plotBS gives option type = \"n\": also possible look consensusNet identify potential conflict. ConsensusNet standard bootstrap sample. Several analyses, e.g.bootstrap modelTest, can computationally demanding, nowadays computers several cores, one can distribute computations using parallel package. However, possible use approach R running command line (“X11”), using GUI (example “Aqua” Macs) unfortunately parallel package work Windows.","code":"bs <- bootstrap.pml(fit_mt, bs=100, optNni=TRUE, control = pml.control(trace = 0)) plotBS(midpoint(fit_mt$tree), p = .5, type=\"p\", digits=2, main=\"Ultrafast bootstrap\") plotBS(midpoint(fit_mt$tree), bs, p = 50, type=\"p\", main=\"Standard bootstrap\") plotBS(midpoint(fit_mt$tree), bs, p = 50, type=\"p\", digits=0, method = \"TBE\", main=\"Transfer bootstrap\") # assigning standard bootstrap values to our tree; this is the default method tree_stdbs <- plotBS(fit_mt$tree, bs, type = \"n\") # assigning transfer bootstrap values to our tree tree_tfbs <- plotBS(fit_mt$tree, bs, type = \"n\", method = \"TBE\") cnet <- consensusNet(bs, p=0.2) plot(cnet, show.edge.label=TRUE)"},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"exporting-a-tree","dir":"Articles","previous_headings":"Maximum likelihood","what":"Exporting a tree","title":"Estimating phylogenetic trees with phangorn","text":"Now tree bootstrap values, can easily write file Newick-format:","code":"# tree with ultrafast bootstrap values write.tree(fit_mt$tree, \"primates.tree\") # tree with standard bootstrap values write.tree(tree_stdbs, \"primates.tree\") # tree with transfer bootstrap values write.tree(tree_tfbs, \"primates.tree\")"},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"molecular-dating-with-a-strict-clock-for-ultrametric-and-tipdated-phylogenies","dir":"Articles","previous_headings":"Maximum likelihood","what":"Molecular dating with a strict clock for ultrametric and tipdated phylogenies","title":"Estimating phylogenetic trees with phangorn","text":"assume “molecular clock” phylogenies can used infer divergence times (Zuckerkandl Pauling 1965). implemented strict clock described (Felsenstein 2004), p. 266, allowing infer ultrametric tip-dated phylogenies. function pml_bb ensures tree ultrametric, constraints given tip dates fulfilled. differs function optim.pml th tree supplied function fulfill constraints. case ultrametric starting tree can use UPGMA WPGMA tree. phangorn also can estimate tipdated phylogenies. use H3N2 virus data set treetime (Sagulenko, Puller, Neher 2018) example. Additionally alignment also need read data containing dates tips. first process sampling dates create named vector. lubridate package (Grolemund Wickham 2011) comes handy dates case one recode dates, e.g. days months. use pml_bb function, optimizes tree given constraints tip.dates vector. loglikelihood lower unrooted tree, keep mind rooted trees use less parameters. unrooted trees estimate one edge length parameter tree, ultrametric trees estimate parameter internal node tipdated trees one additional parameter rate. rate comparable slope fo tip--root regression programs like TempEst (Rambaut et al. 2016). last plot tree timescale.","code":"fit_strict <- pml_bb(primates, model=\"HKY+G(4)\", method=\"ultrametric\", rearrangement=\"NNI\", control = pml.control(trace = 0)) plot(fit_strict) fdir <- system.file(\"extdata/trees\", package = \"phangorn\") tmp <- read.csv(file.path(fdir,\"H3N2_NA_20.csv\")) H3N2 <- read.phyDat(file.path(fdir,\"H3N2_NA_20.fasta\"), format=\"fasta\") dates <- setNames(tmp$numdate_given, tmp$name) head(dates) ## A/Hawaii/02/2013|KF789866|05/28/2013|USA|12_13|H3N2/1-1409 ## 2013.405 ## A/Boston/DOA2_107/2012|CY148382|11/01/2012|USA|12_13|H3N2/1-1409 ## 2012.838 ## A/Oregon/15/2009|GQ895004|06/25/2009|USA|08_09|H3N2/1-1409 ## 2009.482 ## A/Hong_Kong/H090_695_V10/2009|CY115546|07/10/2009|Hong_Kong||H3N2/8-1416 ## 2009.523 ## A/New_York/182/2000|CY001279|02/18/2000|USA|99_00|H3N2/1-1409 ## 2000.134 ## A/Canterbury/58/2000|CY009150|09/05/2000|New_Zealand||H3N2/8-1416 ## 2000.682 fit_td <- pml_bb(H3N2, model=\"HKY+I\", method=\"tipdated\", tip.dates=dates, rearrangement=\"NNI\", control = pml.control(trace = 0)) fit_td ## model: HKY+I ## loglikelihood: -3117.857 ## unconstrained loglikelihood: -2883.911 ## Proportion of invariant sites: 0.6865553 ## ## Rate: 0.002543584 ## ## Rate matrix: ## a c g t ## a 0.000000 1.000000 9.866635 1.000000 ## c 1.000000 0.000000 1.000000 9.866635 ## g 9.866635 1.000000 0.000000 1.000000 ## t 1.000000 9.866635 1.000000 0.000000 ## ## Base frequencies: ## a c g t ## 0.3097759 0.1928617 0.2376819 0.2596805 plot(fit_td, align.tip.label=TRUE)"},{"path":"https://klausvigo.github.io/phangorn/articles/Trees.html","id":"session-info","dir":"Articles","previous_headings":"","what":"Session info","title":"Estimating phylogenetic trees with phangorn","text":"","code":"## R version 4.3.2 (2023-10-31) ## Platform: x86_64-pc-linux-gnu (64-bit) ## Running under: Ubuntu 22.04.3 LTS ## ## Matrix products: default ## BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 ## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so; LAPACK version 3.10.0 ## ## locale: ## [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 ## [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 ## [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C ## [10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C ## ## time zone: UTC ## tzcode source: system (glibc) ## ## attached base packages: ## [1] stats graphics grDevices utils datasets methods base ## ## other attached packages: ## [1] knitr_1.45 phangorn_3.0.0.0 ape_5.7-1.8 ## ## loaded via a namespace (and not attached): ## [1] Matrix_1.6-1.1 jsonlite_1.8.8 highr_0.10 compiler_4.3.2 ## [5] Rcpp_1.0.12 stringr_1.5.1 parallel_4.3.2 jquerylib_0.1.4 ## [9] systemfonts_1.0.5 textshaping_0.3.7 yaml_2.3.8 fastmap_1.1.1 ## [13] lattice_0.21-9 R6_2.5.1 generics_0.1.3 igraph_2.0.1 ## [17] desc_1.4.3 bslib_0.6.1 rlang_1.1.3 fastmatch_1.1-4 ## [21] cachem_1.0.8 stringi_1.8.3 xfun_0.41 quadprog_1.5-8 ## [25] fs_1.6.3 sass_0.4.8 memoise_2.0.1 cli_3.6.2 ## [29] pkgdown_2.0.7 magrittr_2.0.3 digest_0.6.34 grid_4.3.2 ## [33] lifecycle_1.0.4 nlme_3.1-163 vctrs_0.6.5 evaluate_0.23 ## [37] glue_1.7.0 codetools_0.2-19 ragg_1.2.7 rmarkdown_2.25 ## [41] purrr_1.0.2 pkgconfig_2.0.3 tools_4.3.2 htmltools_0.5.7"},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Klaus Schliep. Author, maintainer. Emmanuel Paradis. Author. Leonardo de Oliveira Martins. Author. Alastair Potts. Author. Iris Bardel-Kahr. Author. Tim W. White. Contributor. Cyrill Stachniss. Contributor. Michelle Kendall. Contributor. Keren Halabi. Contributor. Richel Bilderbeek. Contributor. Kristin Winchell. Contributor. Liam Revell. Contributor. Mike Gilchrist. Contributor. Jeremy Beaulieu. Contributor. Brian O'Meara. Contributor. Long Qu. Contributor. Joseph Brown. Contributor. Santiago Claramunt. Contributor.","code":""},{"path":"https://klausvigo.github.io/phangorn/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Schliep K.P. 2011. phangorn: phylogenetic analysis R. Bioinformatics, 27(4) 592-593 Schliep, K., Potts, . J., Morrison, D. ., Grimm, G. W. (2017), Intertwining phylogenetic trees networks. Methods Ecology Evolution, 8: 1212--1220. doi: 10.1111/2041-210X.12760","code":"@Article{, title = {phangorn: phylogenetic analysis in R}, author = {Klaus Schliep}, journal = {Bioinformatics}, year = {2011}, volume = {27}, number = {4}, pages = {592--593}, doi = {10.1093/bioinformatics/btq706}, } @Article{, author = {Klaus Schliep and Alastair J. Potts and David A. Morrison and Guido W. Grimm}, title = {Intertwining phylogenetic trees and networks}, journal = {Methods in Ecology and Evolution}, volume = {8}, number = {10}, pages = {1212--1220}, keywords = {exploratory data analysis, networks, phangorn, R, trees}, year = {2017}, }"},{"path":"https://klausvigo.github.io/phangorn/index.html","id":"phangorn-","dir":"","previous_headings":"","what":"Phylogenetic Reconstruction and Analysis","title":"Phylogenetic Reconstruction and Analysis","text":"phangorn package phylogenetic reconstruction analysis R language. phangorn offers possibility reconstructing phylogenies distance based methods, maximum parsimony maximum likelihood (ML) performing Hadamard conjugation. Extending general ML framework, package provides possibility estimating mixture partition models. Furthermore, phangorn offers several functions comparing trees, phylogenetic models splits, simulating character data performing congruence analyses. can install - latest released version install.packages(\"phangorn\") - latest development version remotes::install_github(\"KlausVigo/phangorn\") install development version may need install Biostrings seqLogo package bioconductor first: Also development version usually depends latest ape development version information download can found . Additionally may need install windows Rtools mac XCode GFortran. use phangorn please cite: Schliep K.P. 2011. phangorn: phylogenetic analysis R. Bioinformatics, 27(4) 592-593","code":"if (!requireNamespace(\"BiocManager\", quietly = TRUE)) install.packages(\"BiocManager\") BiocManager::install(c(\"Biostrings\", \"seqLogo\"))"},{"path":"https://klausvigo.github.io/phangorn/index.html","id":"license","dir":"","previous_headings":"","what":"License","title":"Phylogenetic Reconstruction and Analysis","text":"phangorn licensed GPLv2.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/Ancestors.html","id":null,"dir":"Reference","previous_headings":"","what":"tree utility function — Ancestors","title":"tree utility function — Ancestors","text":"Functions describing relationships among phylogenetic nodes.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/Ancestors.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"tree utility function — Ancestors","text":"","code":"Ancestors(x, node, type = c(\"all\", \"parent\")) allDescendants(x) Children(x, node) Descendants(x, node, type = c(\"tips\", \"children\", \"all\")) Siblings(x, node, include.self = FALSE) mrca.phylo(x, node = NULL, full = FALSE)"},{"path":"https://klausvigo.github.io/phangorn/reference/Ancestors.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"tree utility function — Ancestors","text":"x tree (phylo object). node integer character vector (scalar) corresponding node ID type specify whether return just direct children / parents include.self whether include self list siblings full logical indicating whether return MRCAs among tips nodes (TRUE); default return MRCAs among tips.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/Ancestors.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"tree utility function — Ancestors","text":"vector list containing indices nodes.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/Ancestors.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"tree utility function — Ancestors","text":"functions inspired treewalk phylobase package, work S3 phylo objects. nodes indices given edge matrix phylo object. taxon labels indices can easily derived matching tip.label argument phylo object, see example . functions allow node either scalar vector. mrca faster version mrca ape, phangorn dependencies. argument node missing function evaluated nodes.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/Ancestors.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"tree utility function — Ancestors","text":"allDescendants(): list descendant nodes node","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/Ancestors.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"tree utility function — Ancestors","text":"","code":"tree <- rtree(10) plot(tree, show.tip.label = FALSE) nodelabels() tiplabels() Ancestors(tree, 1:3, \"all\") #> [[1]] #> [1] 14 13 12 11 #> #> [[2]] #> [1] 15 14 13 12 11 #> #> [[3]] #> [1] 15 14 13 12 11 #> Children(tree, 11) #> [1] 12 18 Descendants(tree, 11, \"tips\") #> [[1]] #> [1] 1 2 3 4 5 6 7 8 9 10 #> Siblings(tree, 3) #> [1] 2 # Siblings of all nodes Siblings(tree) #> [[1]] #> [1] 15 #> #> [[2]] #> [1] 3 #> #> [[3]] #> [1] 2 #> #> [[4]] #> [1] 14 #> #> [[5]] #> [1] 6 #> #> [[6]] #> [1] 5 #> #> [[7]] #> [1] 17 #> #> [[8]] #> [1] 19 #> #> [[9]] #> [1] 10 #> #> [[10]] #> [1] 9 #> #> [[11]] #> NULL #> #> [[12]] #> [1] 18 #> #> [[13]] #> [1] 16 #> #> [[14]] #> [1] 4 #> #> [[15]] #> [1] 1 #> #> [[16]] #> [1] 13 #> #> [[17]] #> [1] 7 #> #> [[18]] #> [1] 12 #> #> [[19]] #> [1] 8 #> mrca.phylo(tree, 1:3) #> [1] 14 mrca.phylo(tree, match(c(\"t1\", \"t2\", \"t3\"), tree$tip)) #> [1] 11 mrca.phylo(tree) #> t4 t6 t1 t5 t7 t9 t2 t10 t8 t3 #> t4 1 14 14 13 12 12 12 11 11 11 #> t6 14 2 15 13 12 12 12 11 11 11 #> t1 14 15 3 13 12 12 12 11 11 11 #> t5 13 13 13 4 12 12 12 11 11 11 #> t7 12 12 12 12 5 17 16 11 11 11 #> t9 12 12 12 12 17 6 16 11 11 11 #> t2 12 12 12 12 16 16 7 11 11 11 #> t10 11 11 11 11 11 11 11 8 18 18 #> t8 11 11 11 11 11 11 11 18 9 19 #> t3 11 11 11 11 11 11 11 18 19 10 # same as mrca(tree), but faster for large trees"},{"path":"https://klausvigo.github.io/phangorn/reference/CI.html","id":null,"dir":"Reference","previous_headings":"","what":"Consistency Index and Retention Index — CI","title":"Consistency Index and Retention Index — CI","text":"CI RI compute Consistency Index (CI) Retention Index (RI).","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/CI.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Consistency Index and Retention Index — CI","text":"","code":"CI(tree, data, cost = NULL, sitewise = FALSE) RI(tree, data, cost = NULL, sitewise = FALSE)"},{"path":"https://klausvigo.github.io/phangorn/reference/CI.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Consistency Index and Retention Index — CI","text":"tree tree start nni search . data object class phyDat containing sequences. cost cost matrix transitions two states. sitewise return CI/RI alignment sitewise","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/CI.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Consistency Index and Retention Index — CI","text":"Consistency Index defined minimum number changes divided number changes required tree (parsimony score). Consistency Index equal one homoplasy. Retention Index defined $$RI = \\frac{MaxChanges - ObsChanges}{MaxChanges - MinChanges}$$","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/Laurasiatherian.html","id":null,"dir":"Reference","previous_headings":"","what":"Laurasiatherian data (AWCMEE) — Laurasiatherian","title":"Laurasiatherian data (AWCMEE) — Laurasiatherian","text":"Laurasiatherian RNA sequence data","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/Laurasiatherian.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Laurasiatherian data (AWCMEE) — Laurasiatherian","text":"Data taken former repository Allan Wilson Centre converted R format klaus.schliep@gmail.com.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/Laurasiatherian.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Laurasiatherian data (AWCMEE) — Laurasiatherian","text":"","code":"data(Laurasiatherian) str(Laurasiatherian) #> List of 47 #> $ Platypus : int [1:1605] 4 1 1 1 3 3 4 4 4 3 ... #> $ Wallaroo : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ Possum : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ Bandicoot : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ Opposum : int [1:1605] 2 1 4 1 3 3 4 4 4 3 ... #> $ Armadillo : int [1:1605] 2 1 2 1 3 3 4 2 4 3 ... #> $ Elephant : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ Aardvark : int [1:1605] 4 1 1 1 3 3 4 4 4 3 ... #> $ Tenrec : int [1:1605] 4 1 1 1 3 3 4 4 4 3 ... #> $ Hedghog : int [1:1605] 1 4 1 1 3 3 4 2 4 3 ... #> $ Gymnure : int [1:1605] 1 1 1 1 3 3 4 2 4 3 ... #> $ Mole : int [1:1605] 1 1 1 1 3 3 4 4 4 3 ... #> $ Shrew : int [1:1605] 4 1 1 1 3 3 4 4 4 3 ... #> $ Rbat : int [1:1605] 2 1 4 1 3 3 2 4 4 2 ... #> $ FlyingFox : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ RyFlyFox : int [1:1605] 4 1 1 1 3 3 4 4 4 3 ... #> $ FruitBat : int [1:1605] 4 1 4 1 3 3 4 4 4 3 ... #> $ LongTBat : int [1:1605] 2 1 4 1 3 3 4 4 4 3 ... #> $ Horse : int [1:1605] 2 1 4 1 3 3 2 4 4 3 ... #> $ Donkey : int [1:1605] 2 1 4 1 3 3 2 4 4 3 ... #> $ WhiteRhino: int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ IndianRhin: int [1:1605] 2 1 4 1 3 3 4 4 4 3 ... #> $ Pig : int [1:1605] 2 1 2 1 3 3 4 4 4 3 ... #> $ Alpaca : int [1:1605] 2 1 2 1 3 3 4 4 4 1 ... #> $ Cow : int [1:1605] 2 1 4 1 3 3 4 4 4 3 ... #> $ Sheep : int [1:1605] 4 1 4 1 3 3 4 4 4 3 ... #> $ Hippo : int [1:1605] 4 1 2 1 3 3 4 4 4 3 ... #> $ FinWhale : int [1:1605] 4 1 1 1 3 3 4 4 4 3 ... #> $ BlueWhale : int [1:1605] 4 1 1 1 3 3 4 4 4 3 ... #> $ SpermWhale: int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ Rabbit : int [1:1605] 4 1 1 1 3 3 4 4 4 3 ... #> $ Pika : int [1:1605] 1 1 4 1 3 3 4 4 4 3 ... #> $ Squirrel : int [1:1605] 2 1 4 1 3 3 4 4 4 3 ... #> $ Dormouse : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ GuineaPig : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ Mouse : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ Vole : int [1:1605] 1 1 1 1 3 3 4 4 4 3 ... #> $ CaneRat : int [1:1605] 2 1 1 1 4 3 4 4 4 3 ... #> $ Baboon : int [1:1605] 1 1 4 1 3 3 2 4 4 3 ... #> $ Human : int [1:1605] 1 1 4 1 3 3 4 4 4 3 ... #> $ Loris : int [1:1605] 2 1 2 1 3 3 4 4 4 3 ... #> $ Cebus : int [1:1605] 2 1 2 1 3 3 4 4 4 3 ... #> $ Cat : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ Dog : int [1:1605] 4 1 1 1 3 3 4 4 4 3 ... #> $ HarbSeal : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ FurSeal : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> $ GraySeal : int [1:1605] 2 1 1 1 3 3 4 4 4 3 ... #> - attr(*, \"class\")= chr \"phyDat\" #> - attr(*, \"weight\")= int [1:1605] 1 5 1 444 3 314 1 1 328 1 ... #> - attr(*, \"nr\")= int 1605 #> - attr(*, \"nc\")= num 4 #> - attr(*, \"index\")= int [1:3179] 1 2 3 4 5 6 7 8 9 6 ... #> - attr(*, \"levels\")= chr [1:4] \"a\" \"c\" \"g\" \"t\" #> - attr(*, \"allLevels\")= chr [1:18] \"a\" \"c\" \"g\" \"t\" ... #> - attr(*, \"type\")= chr \"DNA\" #> - attr(*, \"contrast\")= num [1:18, 1:4] 1 0 0 0 0 1 1 1 0 0 ... #> ..- attr(*, \"dimnames\")=List of 2 #> .. ..$ : NULL #> .. ..$ : chr [1:4] \"a\" \"c\" \"g\" \"t\""},{"path":"https://klausvigo.github.io/phangorn/reference/NJ.html","id":null,"dir":"Reference","previous_headings":"","what":"Neighbor-Joining — NJ","title":"Neighbor-Joining — NJ","text":"function performs neighbor-joining tree estimation Saitou Nei (1987). UNJ unweighted version Gascuel (1997).","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/NJ.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Neighbor-Joining — NJ","text":"","code":"NJ(x) UNJ(x)"},{"path":"https://klausvigo.github.io/phangorn/reference/NJ.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Neighbor-Joining — NJ","text":"x distance matrix.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/NJ.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Neighbor-Joining — NJ","text":"object class \"phylo\".","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/NJ.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Neighbor-Joining — NJ","text":"Saitou, N. Nei, M. (1987) neighbor-joining method: new method reconstructing phylogenetic trees. Molecular Biology Evolution, 4, 406--425. Studier, J. Keppler, K. J. (1988) Note Neighbor-Joining Algorithm Saitou Nei. Molecular Biology Evolution, 6, 729--731. Gascuel, O. (1997) Concerning NJ algorithm unweighted version, UNJ. Birkin et. al. Mathematical Hierarchies Biology, 149--170.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/NJ.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Neighbor-Joining — NJ","text":"Klaus P. Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/NJ.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Neighbor-Joining — NJ","text":"","code":"data(Laurasiatherian) dm <- dist.ml(Laurasiatherian) tree <- NJ(dm) plot(tree)"},{"path":"https://klausvigo.github.io/phangorn/reference/SH.test.html","id":null,"dir":"Reference","previous_headings":"","what":"Shimodaira-Hasegawa Test — SH.test","title":"Shimodaira-Hasegawa Test — SH.test","text":"function computes Shimodaira--Hasegawa test set trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/SH.test.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Shimodaira-Hasegawa Test — SH.test","text":"","code":"SH.test(..., B = 10000, data = NULL, weight = NULL)"},{"path":"https://klausvigo.github.io/phangorn/reference/SH.test.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Shimodaira-Hasegawa Test — SH.test","text":"... either series objects class \"pml\" separated commas, list containing objects object class \"pmlPart\" matrix containing site-wise likelihoods columns. B number bootstrap replicates. data object class \"phyDat\". weight matrix site (log-)likelihoods supplied optional vector containing number occurrences site pattern.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/SH.test.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Shimodaira-Hasegawa Test — SH.test","text":"numeric vector P-value associated tree given ....","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/SH.test.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Shimodaira-Hasegawa Test — SH.test","text":"Shimodaira, H. Hasegawa, M. (1999) Multiple comparisons log-likelihoods applications phylogenetic inference. Molecular Biology Evolution, 16, 1114--1116.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/SH.test.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Shimodaira-Hasegawa Test — SH.test","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/SH.test.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Shimodaira-Hasegawa Test — SH.test","text":"","code":"data(Laurasiatherian) dm <- dist.logDet(Laurasiatherian) tree1 <- NJ(dm) tree2 <- unroot(upgma(dm)) fit1 <- pml(tree1, Laurasiatherian) fit2 <- pml(tree2, Laurasiatherian) fit1 <- optim.pml(fit1) # optimize edge weights #> optimize edge weights: -54807.68 --> -54290.26 #> optimize edge weights: -54290.26 --> -54290.26 #> optimize edge weights: -54290.26 --> -54290.26 fit2 <- optim.pml(fit2) #> optimize edge weights: -55623.41 --> -54911.33 #> optimize edge weights: -54911.33 --> -54911.33 #> optimize edge weights: -54911.33 --> -54911.33 # with pml objects as input SH.test(fit1, fit2, B=1000) #> Trees ln L Diff ln L p-value #> [1,] 1 -54290.26 0.0000 0.498 #> [2,] 2 -54911.33 621.0767 0.000 # in real analysis use larger B, e.g. 10000 # with matrix as input X <- matrix(c(fit1$siteLik, fit2$siteLik), ncol=2) SH.test(X, weight=attr(Laurasiatherian, \"weight\"), B=1000) #> Trees ln L Diff ln L p-value #> [1,] 1 -54290.26 0.0000 0.492 #> [2,] 2 -54911.33 621.0767 0.000 if (FALSE) { example(pmlPart) SH.test(sp, B=1000) }"},{"path":"https://klausvigo.github.io/phangorn/reference/SOWH.test.html","id":null,"dir":"Reference","previous_headings":"","what":"Swofford-Olsen-Waddell-Hillis Test — SOWH.test","title":"Swofford-Olsen-Waddell-Hillis Test — SOWH.test","text":"function computes Swofford--Olsen--Waddell--Hillis (SOWH) test, parametric bootstrap test. function computational demanding likely slow.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/SOWH.test.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Swofford-Olsen-Waddell-Hillis Test — SOWH.test","text":"","code":"SOWH.test(x, n = 100, restricted = list(optNni = FALSE), optNni = TRUE, trace = 1, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/SOWH.test.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Swofford-Olsen-Waddell-Hillis Test — SOWH.test","text":"x object class \"pml\". n number bootstrap replicates. restricted list restricted parameter settings. optNni Logical value indicating whether topology gets optimized (NNI). trace Show output computations. ... arguments passed \"optim.pml\".","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/SOWH.test.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Swofford-Olsen-Waddell-Hillis Test — SOWH.test","text":"object class SOWH. list three elements, one matrix containing bootstrap replicate (log-) likelihood restricted unrestricted estimate two pml objects restricted unrestricted model.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/SOWH.test.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Swofford-Olsen-Waddell-Hillis Test — SOWH.test","text":"SOWH.test performs parametric bootstrap test compare two trees. makes extensive use simSeq optim.pml can take quite long.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/SOWH.test.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Swofford-Olsen-Waddell-Hillis Test — SOWH.test","text":"Goldman, N., Anderson, J. P., Rodrigo, . G. (2000) Likelihood -based tests topologies phylogenetics. Systematic Biology 49 652-670. Swofford, D.L., Olsen, G.J., Waddell, P.J. Hillis, D.M. (1996) Phylogenetic Inference Hillis, D.M., Moritz, C. Mable, B.K. (Eds.) Molecular Systematics (2nd ed.) 407-514, Sunderland, MA: Sinauer","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/SOWH.test.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Swofford-Olsen-Waddell-Hillis Test — SOWH.test","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/SOWH.test.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Swofford-Olsen-Waddell-Hillis Test — SOWH.test","text":"","code":"# in real analysis use larger n, e.g. 500 preferably more if (FALSE) { data(Laurasiatherian) dm <- dist.logDet(Laurasiatherian) tree <- NJ(dm) fit <- pml(tree, Laurasiatherian) fit <- optim.pml(fit, TRUE) set.seed(6) tree <- rNNI(fit$tree, 1) fit <- update(fit, tree = tree) (res <- SOWH.test(fit, n=100)) summary(res) }"},{"path":"https://klausvigo.github.io/phangorn/reference/add.tips.html","id":null,"dir":"Reference","previous_headings":"","what":"Add tips to a tree — add.tips","title":"Add tips to a tree — add.tips","text":"function binds tips nodes phylogenetic trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/add.tips.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add tips to a tree — add.tips","text":"","code":"add.tips(tree, tips, where, edge.length = NULL)"},{"path":"https://klausvigo.github.io/phangorn/reference/add.tips.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add tips to a tree — add.tips","text":"tree object class \"phylo\". tips character vector containing names tips. integer character vector length tips giving number node tip tree add new tips. edge.length optional numeric vector edge length","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/add.tips.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Add tips to a tree — add.tips","text":"object class phylo","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/add.tips.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Add tips to a tree — add.tips","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/add.tips.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add tips to a tree — add.tips","text":"","code":"tree <- rcoal(10) plot(tree) nodelabels() tiplabels() tree1 <- add.tips(tree, c(\"A\", \"B\", \"C\"), c(1,2,15)) plot(tree1)"},{"path":"https://klausvigo.github.io/phangorn/reference/addConfidences.html","id":null,"dir":"Reference","previous_headings":"","what":"Compare splits and add support values to an object — addConfidences","title":"Compare splits and add support values to an object — addConfidences","text":"Add support values splits, phylo networx object.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/addConfidences.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compare splits and add support values to an object — addConfidences","text":"","code":"addConfidences(x, y, ...) # S3 method for phylo addConfidences(x, y, rooted = FALSE, ...) presenceAbsence(x, y) createLabel(x, y, label_y, type = \"edge\", nomatch = NA)"},{"path":"https://klausvigo.github.io/phangorn/reference/addConfidences.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compare splits and add support values to an object — addConfidences","text":"x object class splits, phylo networx y object class splits, phylo, multiPhylo networx ... arguments passed methods. rooted logial, FALSE bipartitions considered, TRUE clades. label_y label y matched x. usually length(.splits(x)). type labels returned edges (networx) splits. nomatch default value match x y found.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/addConfidences.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compare splits and add support values to an object — addConfidences","text":"object x added bootstrap / MCMC support values.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/addConfidences.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Compare splits and add support values to an object — addConfidences","text":"Schliep, K., Potts, . J., Morrison, D. . Grimm, G. W. (2017), Intertwining phylogenetic trees networks. Methods Ecol Evol.8, 1212--1220. doi:10.1111/2041-210X.12760","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/addConfidences.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Compare splits and add support values to an object — addConfidences","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/addConfidences.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Compare splits and add support values to an object — addConfidences","text":"","code":"data(woodmouse) woodmouse <- phyDat(woodmouse) tmpfile <- normalizePath(system.file( \"extdata/trees/RAxML_bootstrap.woodmouse\", package=\"phangorn\")) boot_trees <- read.tree(tmpfile) dm <- dist.ml(woodmouse) tree <- upgma(dm) nnet <- neighborNet(dm) tree <- addConfidences(tree, boot_trees) nnet <- addConfidences(nnet, boot_trees) plot(tree, show.node.label=TRUE) plot(nnet, show.edge.label=TRUE)"},{"path":"https://klausvigo.github.io/phangorn/reference/add_ci.html","id":null,"dir":"Reference","previous_headings":"","what":"Draw Confidences Intervals on Phylogenies — add_ci","title":"Draw Confidences Intervals on Phylogenies — add_ci","text":"low-level plotting commands draw confidence intervals node tree rectangles coloured backgrounds add boxplots ultrametric tipdated trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/add_ci.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Draw Confidences Intervals on Phylogenies — add_ci","text":"","code":"add_ci(tree, trees, col95 = \"#FF00004D\", col50 = \"#0000FF4D\", height = 0.7, legend = TRUE, ...) add_boxplot(tree, trees, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/add_ci.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Draw Confidences Intervals on Phylogenies — add_ci","text":"tree phylogenetic tree confidences added. trees phylogenetic trees, .e. object class `multiPhylo` col95 colour used 95 red. col50 colour used 50 blue. height height boxes. legend logical value. ... arguments passed functions, legend bxp.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/add_ci.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Draw Confidences Intervals on Phylogenies — add_ci","text":"trees rooted, either ultrametric tip dated.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/add_ci.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Draw Confidences Intervals on Phylogenies — add_ci","text":"Emmanuel Paradis, Santiago Claramunt, Joseph Brown, Klaus Schliep","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/add_ci.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Draw Confidences Intervals on Phylogenies — add_ci","text":"","code":"data(\"Laurasiatherian\") dm <- dist.hamming(Laurasiatherian) tree <- upgma(dm) set.seed(123) trees <- bootstrap.phyDat(Laurasiatherian, FUN=function(x)upgma(dist.hamming(x)), bs=100) tree <- plotBS(tree, trees, \"phylogram\") add_ci(tree, trees) plot(tree, direction=\"downwards\") add_boxplot(tree, trees, boxwex=.7)"},{"path":"https://klausvigo.github.io/phangorn/reference/add_edge_length.html","id":null,"dir":"Reference","previous_headings":"","what":"Assign and compute edge lengths from a sample of trees — add_edge_length","title":"Assign and compute edge lengths from a sample of trees — add_edge_length","text":"command can infer average edge lengths assign (bootstrap/MCMC) sample.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/add_edge_length.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Assign and compute edge lengths from a sample of trees — add_edge_length","text":"","code":"add_edge_length(tree, trees, fun = function(x) median(na.omit(x)), rooted = all(is.rooted(trees)))"},{"path":"https://klausvigo.github.io/phangorn/reference/add_edge_length.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Assign and compute edge lengths from a sample of trees — add_edge_length","text":"tree phylogenetic tree splitnetwork edge lengths assigned . trees object class multiPhylo, average edges computed . fun function compute average (default median). rooted rooted logical, FALSE edge lengths function observed splits, TRUE edge lengths estimated height observed clades.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/add_edge_length.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Assign and compute edge lengths from a sample of trees — add_edge_length","text":"Klaus Schliep","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/add_edge_length.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Assign and compute edge lengths from a sample of trees — add_edge_length","text":"","code":"data(\"Laurasiatherian\") set.seed(123) bs <- bootstrap.phyDat(Laurasiatherian, FUN=function(x)upgma(dist.ml(x)), bs=100) tree_compat <- allCompat(bs, rooted=TRUE) |> add_edge_length(bs) plot(tree_compat) add_boxplot(tree_compat, bs, boxwex=.7)"},{"path":"https://klausvigo.github.io/phangorn/reference/allTrees.html","id":null,"dir":"Reference","previous_headings":"","what":"Compute all trees topologies. — allTrees","title":"Compute all trees topologies. — allTrees","text":"allTrees computes tree topologies rooted unrooted trees 10 tips. allTrees returns bifurcating trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/allTrees.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compute all trees topologies. — allTrees","text":"","code":"allTrees(n, rooted = FALSE, tip.label = NULL)"},{"path":"https://klausvigo.github.io/phangorn/reference/allTrees.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compute all trees topologies. — allTrees","text":"n Number tips (<=10). rooted Rooted unrooted trees (default: rooted). tip.label Tip labels.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/allTrees.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compute all trees topologies. — allTrees","text":"object class multiPhylo.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/allTrees.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Compute all trees topologies. — allTrees","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/allTrees.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Compute all trees topologies. — allTrees","text":"","code":"trees <- allTrees(5) old.par <- par(no.readonly = TRUE) par(mfrow = c(3,5)) for(i in 1:15)plot(trees[[i]]) par(old.par)"},{"path":"https://klausvigo.github.io/phangorn/reference/ancestral.pml.html","id":null,"dir":"Reference","previous_headings":"","what":"Ancestral character reconstruction. — ancestral.pml","title":"Ancestral character reconstruction. — ancestral.pml","text":"Marginal reconstruction ancestral character states.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/ancestral.pml.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Ancestral character reconstruction. — ancestral.pml","text":"","code":"ancestral.pml(object, type = \"marginal\", return = \"prob\", ...) # S3 method for ancestral as.phyDat(x, ...) # S3 method for ancestral as.data.frame(x, ...) ancestral.pars(tree, data, type = c(\"MPR\", \"ACCTRAN\", \"POSTORDER\"), cost = NULL, return = \"prob\", ...) pace(tree, data, type = c(\"MPR\", \"ACCTRAN\", \"POSTORDER\"), cost = NULL, return = \"prob\", ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/ancestral.pml.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Ancestral character reconstruction. — ancestral.pml","text":"object object class pml type method used assign characters internal nodes, see details. return return phyDat object matrix probabilities. ... arguments passed methods. x object class ancestral. tree tree, .e. object class pml data object class phyDat cost cost matrix transitions two states.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/ancestral.pml.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Ancestral character reconstruction. — ancestral.pml","text":"object class ancestral containing theestimated character states. return=\"phyDat\" object class \"phyDat\", containing ancestral states nodes. nucleotide data can contain ambiguous states. Apart fitch parsimony likely states returned.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/ancestral.pml.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Ancestral character reconstruction. — ancestral.pml","text":"argument \"type\" defines criterion assign internal nodes. ancestral.pml far \"ml\" (empirical) \"bayes\" ancestral.pars \"MPR\" \"ACCTRAN\" possible. parsimony reconstruction one keep mind often unique solution. functions use node labels present unique. Otherwise function ape::MakeNodeLabel used create . details see vignette(\"Ancestral\").","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/ancestral.pml.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Ancestral character reconstruction. — ancestral.pml","text":"Felsenstein, J. (2004). Inferring Phylogenies. Sinauer Associates, Sunderland. Swofford, D.L., Maddison, W.P. (1987) Reconstructing ancestral character states Wagner parsimony. Math. Biosci. 87: 199--229 Yang, Z. (2006). Computational Molecular evolution. Oxford University Press, Oxford.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/ancestral.pml.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Ancestral character reconstruction. — ancestral.pml","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/ancestral.pml.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Ancestral character reconstruction. — ancestral.pml","text":"","code":"example(NJ) #> #> NJ> data(Laurasiatherian) #> #> NJ> dm <- dist.ml(Laurasiatherian) #> #> NJ> tree <- NJ(dm) #> #> NJ> plot(tree) # generate node labels to ensure plotting will work tree <- makeNodeLabel(tree) fit <- pml(tree, Laurasiatherian) anc.ml <- ancestral.pml(fit, type = \"ml\") anc.p <- ancestral.pars(tree, Laurasiatherian) if (FALSE) { require(seqLogo) seqLogo( t(subset(anc.ml, 48, 1:20)[[1]]), ic.scale=FALSE) seqLogo( t(subset(anc.p, 48, 1:20)[[1]]), ic.scale=FALSE) } # plot the first site pattern plotAnc(tree, anc.ml, 1) # plot the third character plotAnc(tree, anc.ml, attr(anc.ml, \"index\")[3])"},{"path":"https://klausvigo.github.io/phangorn/reference/as.networx.html","id":null,"dir":"Reference","previous_headings":"","what":"Conversion among phylogenetic network objects — as.networx","title":"Conversion among phylogenetic network objects — as.networx","text":".networx convert splits objects networx object. important exists generic plot function plot phylogenetic network split graphs.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.networx.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Conversion among phylogenetic network objects — as.networx","text":"","code":"as.networx(x, ...) # S3 method for splits as.networx(x, planar = FALSE, coord = \"none\", ...) # S3 method for phylo as.networx(x, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/as.networx.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Conversion among phylogenetic network objects — as.networx","text":"x object class \"splits\" \"phylo\" ... arguments passed methods. planar logical whether produce planar graph cyclic splits (may excludes splits). coord add coordinates nodes, allows reproduce plot.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.networx.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Conversion among phylogenetic network objects — as.networx","text":"networx object hold information phylogenetic network extends phylo object. Therefore generic function phylo objects also work networx objects. argument planar = TRUE create planar split graph based cyclic ordering. objects can nicely plotted \"2D\".","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.networx.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Conversion among phylogenetic network objects — as.networx","text":"internal representation likely change.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.networx.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Conversion among phylogenetic network objects — as.networx","text":"Schliep, K., Potts, . J., Morrison, D. . Grimm, G. W. (2017), Intertwining phylogenetic trees networks. Methods Ecol Evol. 8, 1212--1220. doi:10.1111/2041-210X.12760","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/as.networx.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Conversion among phylogenetic network objects — as.networx","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.networx.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Conversion among phylogenetic network objects — as.networx","text":"","code":"set.seed(1) tree1 <- rtree(20, rooted=FALSE) sp <- as.splits(rNNI(tree1, n=10)) net <- as.networx(sp) plot(net) if (FALSE) { # also see example in consensusNet example(consensusNet) }"},{"path":"https://klausvigo.github.io/phangorn/reference/as.phyDat.html","id":null,"dir":"Reference","previous_headings":"","what":"Conversion among Sequence Formats — phyDat","title":"Conversion among Sequence Formats — phyDat","text":"functions transform several DNA formats phyDat format. allSitePattern generates alignment possible site patterns.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.phyDat.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Conversion among Sequence Formats — phyDat","text":"","code":"phyDat(data, type = \"DNA\", levels = NULL, return.index = TRUE, ...) as.phyDat(x, ...) # S3 method for factor as.phyDat(x, ...) # S3 method for DNAbin as.phyDat(x, ...) # S3 method for AAbin as.phyDat(x, ...) # S3 method for alignment as.phyDat(x, type = \"DNA\", ...) phyDat2alignment(x) # S3 method for MultipleAlignment as.phyDat(x, ...) # S3 method for AAStringSet as.phyDat(x, ...) # S3 method for DNAStringSet as.phyDat(x, ...) # S3 method for phyDat as.MultipleAlignment(x, ...) # S3 method for phyDat as.character(x, allLevels = TRUE, ...) # S3 method for phyDat as.data.frame(x, ...) # S3 method for phyDat as.DNAbin(x, ...) # S3 method for phyDat as.AAbin(x, ...) genlight2phyDat(x, ambiguity = NA) acgt2ry(obj)"},{"path":"https://klausvigo.github.io/phangorn/reference/as.phyDat.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Conversion among Sequence Formats — phyDat","text":"data object containing sequences. type Type sequences (\"DNA\", \"AA\", \"CODON\" \"USER\"). levels Level attributes. return.index TRUE returns index site patterns. ... arguments passed methods. x object containing sequences. allLevels return original data. ambiguity character ambiguous character contrast provided. obj object class phyDat","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.phyDat.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Conversion among Sequence Formats — phyDat","text":"functions return object class phyDat.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.phyDat.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Conversion among Sequence Formats — phyDat","text":"type \"USER\" vector give levels. example c(\"\", \"c\", \"g\", \"t\", \"-\") create data object can used phylogenetic analysis gaps fifth state. detailed example specifying \"USER\" defined data formats vignette \"phangorn-specials\". acgt2ry converts phyDat object nucleotides binary ry-coded dataset.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/as.phyDat.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Conversion among Sequence Formats — phyDat","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.phyDat.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Conversion among Sequence Formats — phyDat","text":"","code":"data(Laurasiatherian) class(Laurasiatherian) #> [1] \"phyDat\" Laurasiatherian #> 47 sequences with 3179 character and 1605 different site patterns. #> The states are a c g t # transform as characters LauraChar <- as.character(Laurasiatherian) # and back Laura <- phyDat(LauraChar) all.equal(Laurasiatherian, Laura) #> [1] TRUE LauraDNAbin <- as.DNAbin(Laurasiatherian) all.equal(Laurasiatherian, as.phyDat(LauraDNAbin)) #> [1] TRUE"},{"path":"https://klausvigo.github.io/phangorn/reference/as.splits.html","id":null,"dir":"Reference","previous_headings":"","what":"Splits representation of graphs and trees. — allSplits","title":"Splits representation of graphs and trees. — allSplits","text":".splits produces list splits bipartitions.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.splits.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Splits representation of graphs and trees. — allSplits","text":"","code":"allSplits(k, labels = NULL) allCircularSplits(k, labels = NULL) as.splits(x, ...) # S3 method for splits as.matrix(x, zero.print = 0L, one.print = 1L, ...) # S3 method for splits as.Matrix(x, ...) # S3 method for splits print(x, maxp = getOption(\"max.print\"), zero.print = \".\", one.print = \"|\", ...) # S3 method for splits c(..., recursive = FALSE) # S3 method for splits unique(x, incomparables = FALSE, unrooted = TRUE, ...) # S3 method for phylo as.splits(x, ...) # S3 method for multiPhylo as.splits(x, ...) # S3 method for networx as.splits(x, ...) # S3 method for splits as.prop.part(x, ...) # S3 method for splits as.bitsplits(x) # S3 method for bitsplits as.splits(x, ...) compatible(obj1, obj2 = NULL)"},{"path":"https://klausvigo.github.io/phangorn/reference/as.splits.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Splits representation of graphs and trees. — allSplits","text":"k number taxa. labels names taxa. x object class phylo multiPhylo. ... arguments passed methods. zero.print character printed zeros. one.print character printed ones. maxp integer, default options(max.print), influences many entries large matrices printed . recursive logical. recursive = TRUE, function recursively descends lists (pairlists) combining elements vector. incomparables compatibility far. unrooted todo. obj1, obj2 object class splits.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.splits.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Splits representation of graphs and trees. — allSplits","text":".splits returns object class splits, mainly list splits attributes. Often splits object contain attributes confidences bootstrap Bayesian support values weight storing edge weights. compatible return lower triangular matrix 1 indicates two splits incompatible.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.splits.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Splits representation of graphs and trees. — allSplits","text":"internal representation likely change.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/as.splits.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Splits representation of graphs and trees. — allSplits","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/as.splits.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Splits representation of graphs and trees. — allSplits","text":"","code":"(sp <- as.splits(rtree(5))) #> t4 t5 t1 t3 t2 #> [1,] | . . . . #> [2,] . | . . . #> [3,] . . | . . #> [4,] . . . | . #> [5,] . . . . | #> [6,] | | | | | #> [7,] | | . . . #> [8,] . . | | | #> [9,] . . . | | write.nexus.splits(sp) #> #NEXUS #> #> [Splits block for Spectronet or SplitsTree] #> [generated by phangorn 3.0.0.0 ] #> #> BEGIN TAXA; #> \tDIMENSIONS ntax=5; #> \tTAXLABELS t4 t5 t1 t3 t2 ; #> END; #> #> BEGIN SPLITS; #> \tDIMENSIONS ntax=5 nsplits=8; #> \tFORMAT labels=left weights=yes confidences=no intervals=no; #> \tMATRIX #> \t\t1\t0.478118034312502 \t1, #> \t\t2\t0.924074469832703 \t1 3 4 5, #> \t\t3\t0.976170694921166 \t1 2 4 5, #> \t\t4\t0.356726912083104 \t1 2 3 5, #> \t\t5\t0.431473690550774 \t1 2 3 4, #> \t\t6\t0.129372348077595 \t1 2, #> \t\t7\t0.59876096714288 \t1 2, #> \t\t8\t0.731792511884123 \t1 2 3, #> \t; #> END; spl <- allCircularSplits(5) plot(as.networx(spl))"},{"path":"https://klausvigo.github.io/phangorn/reference/bab.html","id":null,"dir":"Reference","previous_headings":"","what":"Branch and bound for finding all most parsimonious trees — bab","title":"Branch and bound for finding all most parsimonious trees — bab","text":"bab finds parsimonious trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/bab.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Branch and bound for finding all most parsimonious trees — bab","text":"","code":"bab(data, tree = NULL, trace = 0, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/bab.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Branch and bound for finding all most parsimonious trees — bab","text":"data object class phyDat. tree phylogenetic tree object class phylo, otherwise pratchet search performed. trace defines much information printed optimization. ... arguments passed methods","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/bab.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Branch and bound for finding all most parsimonious trees — bab","text":"bab returns parsimonious trees object class multiPhylo.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/bab.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Branch and bound for finding all most parsimonious trees — bab","text":"implementation slow depending data may take long time. worst case \\((2n-5)!! = 1 \\times 3 \\times 5 \\times \\ldots \\times (2n-5)\\) possible trees examined, n number species / tips. ten species already 2027025 tip-labelled unrooted trees. uses basic strategies find lower upper bounds similar penny phylip. bab uses basic heuristic approach MinMax Squeeze (Holland et al. 2005) improve lower bound. positive side bab like many implementations restricted binary nucleotide data.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/bab.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Branch and bound for finding all most parsimonious trees — bab","text":"Hendy, M.D. Penny D. (1982) Branch bound algorithms determine minimal evolutionary trees. Math. Biosc. 59, 277-290 Holland, B.R., Huber, K.T. Penny, D. Moulton, V. (2005) MinMax Squeeze: Guaranteeing Minimal Tree Population Data, Molecular Biology Evolution, 22, 235--242 White, W.T. Holland, B.R. (2011) Faster exact maximum parsimony search XMP. Bioinformatics, 27(10),1359--1367","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/bab.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Branch and bound for finding all most parsimonious trees — bab","text":"Klaus Schliep klaus.schliep@gmail.com based work Liam Revell","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/bab.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Branch and bound for finding all most parsimonious trees — bab","text":"","code":"data(yeast) dfactorial(11) #> [1] 10395 # choose only the first two genes gene12 <- yeast[, 1:3158] trees <- bab(gene12)"},{"path":"https://klausvigo.github.io/phangorn/reference/baseFreq.html","id":null,"dir":"Reference","previous_headings":"","what":"Summaries of alignments — baseFreq","title":"Summaries of alignments — baseFreq","text":"baseFreq computes frequencies (absolute relative) states sample sequences. glance computes useful information alignment.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/baseFreq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Summaries of alignments — baseFreq","text":"","code":"baseFreq(obj, freq = FALSE, all = FALSE, drop.unused.levels = FALSE) # S3 method for phyDat glance(x, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/baseFreq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Summaries of alignments — baseFreq","text":"obj, x object class phyDat freq logical, 'TRUE', frequencies counts returned otherwise proportions logical; = TRUE, counts bases, ambiguous codes, missing data, alignment gaps returned defined contrast. drop.unused.levels logical, drop unused levels ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/baseFreq.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Summaries of alignments — baseFreq","text":"baseFreq returns named vector glance one row data.frame.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/baseFreq.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Summaries of alignments — baseFreq","text":"Klaus Schliep","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/baseFreq.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Summaries of alignments — baseFreq","text":"","code":"data(Laurasiatherian) data(chloroplast) # base frequencies baseFreq(Laurasiatherian) #> a c g t #> 0.3321866 0.1990791 0.2040652 0.2646691 baseFreq(Laurasiatherian, all=TRUE) #> a c g t u m r w #> 0.3321866 0.1990791 0.2040652 0.2646691 0.0000000 0.0000000 0.0000000 0.0000000 #> s y k v h d b n #> 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 #> ? - #> 0.0000000 0.0000000 baseFreq(Laurasiatherian, freq=TRUE) #> a c g t #> 49633 29745 30490 39545 baseFreq(chloroplast) #> A R N D C Q #> 0.086702955 0.051669804 0.036230253 0.040435459 0.006650569 0.039678317 #> E G H I L K #> 0.046635835 0.090775149 0.029395514 0.073585987 0.101712777 0.040148973 #> M F P S T W #> 0.024852664 0.051260539 0.048109192 0.054176557 0.051618646 0.021905951 #> Y V #> 0.031636245 0.072818613 glance(Laurasiatherian) #> nseq nchar unique_site_pattern parsimony_informative_sites const_sites #> 1 47 3179 1605 1400 1354 glance(chloroplast) #> nseq nchar unique_site_pattern parsimony_informative_sites const_sites #> 1 19 5144 2775 2032 2190"},{"path":"https://klausvigo.github.io/phangorn/reference/bootstrap.pml.html","id":null,"dir":"Reference","previous_headings":"","what":"Bootstrap — bootstrap.pml","title":"Bootstrap — bootstrap.pml","text":"bootstrap.pml performs (non-parametric) bootstrap analysis bootstrap.phyDat produces list bootstrapped data sets. plotBS plots phylogenetic tree bootstrap values assigned (internal) edges.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/bootstrap.pml.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Bootstrap — bootstrap.pml","text":"","code":"bootstrap.pml(x, bs = 100, trees = TRUE, multicore = FALSE, mc.cores = NULL, tip.dates = NULL, ...) bootstrap.phyDat(x, FUN, bs = 100, multicore = FALSE, mc.cores = NULL, jumble = TRUE, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/bootstrap.pml.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Bootstrap — bootstrap.pml","text":"x object class pml phyDat. bs number bootstrap samples. trees return trees (default) whole pml objects. multicore logical, whether models estimated parallel. mc.cores number cores use bootstrap. supported UNIX-alike systems. tip.dates named vector sampling times associated tips/sequences. Leave empty estimating tip dated phylogenies. ... parameters used optim.pml plot.phylo. FUN function estimate trees. jumble logical, jumble order sequences.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/bootstrap.pml.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Bootstrap — bootstrap.pml","text":"bootstrap.pml returns object class multi.phylo list element object class pml. plotBS returns silently tree, .e. object class phylo bootstrap values node labels. argument BStrees optional supplied tree labels supplied node.label slot.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/bootstrap.pml.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Bootstrap — bootstrap.pml","text":"possible bootstrap performed parallel, help multicore package. Unfortunately multicore package work windows GUI interfaces (\"aqua\" mac). However speed nicely command line (\"X11\").","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/bootstrap.pml.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Bootstrap — bootstrap.pml","text":"Felsenstein J. (1985) Confidence limits phylogenies. approach using bootstrap. Evolution 39, 783--791 Lemoine, F., Entfellner, J. B. D., Wilkinson, E., Correia, D., Felipe, M. D., De Oliveira, T., & Gascuel, O. (2018). Renewing Felsenstein’s phylogenetic bootstrap era big data. Nature, 556(7702), 452--456. Penny D. Hendy M.D. (1985) Testing methods evolutionary tree construction. Cladistics 1, 266--278 Penny D. Hendy M.D. (1986) Estimating reliability evolutionary trees. Molecular Biology Evolution 3, 403--417","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/bootstrap.pml.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Bootstrap — bootstrap.pml","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/bootstrap.pml.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Bootstrap — bootstrap.pml","text":"","code":"if (FALSE) { data(Laurasiatherian) dm <- dist.hamming(Laurasiatherian) tree <- NJ(dm) # NJ set.seed(123) NJtrees <- bootstrap.phyDat(Laurasiatherian, FUN=function(x)NJ(dist.hamming(x)), bs=100) treeNJ <- plotBS(tree, NJtrees, \"phylogram\") # Maximum likelihood fit <- pml(tree, Laurasiatherian) fit <- optim.pml(fit, rearrangement=\"NNI\") set.seed(123) bs <- bootstrap.pml(fit, bs=100, optNni=TRUE) treeBS <- plotBS(fit$tree,bs) # Maximum parsimony treeMP <- pratchet(Laurasiatherian) treeMP <- acctran(treeMP, Laurasiatherian) set.seed(123) BStrees <- bootstrap.phyDat(Laurasiatherian, pratchet, bs = 100) treeMP <- plotBS(treeMP, BStrees, \"phylogram\") add.scale.bar() # export tree with bootstrap values as node labels # write.tree(treeBS) }"},{"path":"https://klausvigo.github.io/phangorn/reference/chloroplast.html","id":null,"dir":"Reference","previous_headings":"","what":"Chloroplast alignment — chloroplast","title":"Chloroplast alignment — chloroplast","text":"Amino acid alignment 15 genes 19 different chloroplast.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/chloroplast.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Chloroplast alignment — chloroplast","text":"","code":"data(chloroplast) chloroplast #> 19 sequences with 5144 character and 2775 different site patterns. #> The states are A R N D C Q E G H I L K M F P S T W Y V"},{"path":"https://klausvigo.github.io/phangorn/reference/cladePar.html","id":null,"dir":"Reference","previous_headings":"","what":"Utility function to plot.phylo — cladePar","title":"Utility function to plot.phylo — cladePar","text":"cladePar can help coloring (choosing edge width/type) clades.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/cladePar.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Utility function to plot.phylo — cladePar","text":"","code":"cladePar(tree, node, edge.color = \"red\", tip.color = edge.color, edge.width = 1, edge.lty = \"solid\", x = NULL, plot = FALSE, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/cladePar.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Utility function to plot.phylo — cladePar","text":"tree object class phylo. node node common ancestor clade. edge.color see plot.phylo. tip.color see plot.phylo. edge.width see plot.phylo. edge.lty see plot.phylo. x result previous call cladeInfo. plot logical, TRUE tree plotted. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/cladePar.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Utility function to plot.phylo — cladePar","text":"list containing information edges tips.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/cladePar.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Utility function to plot.phylo — cladePar","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/cladePar.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Utility function to plot.phylo — cladePar","text":"","code":"tree <- rtree(10) plot(tree) nodelabels() x <- cladePar(tree, 12) cladePar(tree, 18, \"blue\", \"blue\", x=x, plot=TRUE)"},{"path":"https://klausvigo.github.io/phangorn/reference/coalSpeciesTree.html","id":null,"dir":"Reference","previous_headings":"","what":"Species Tree — coalSpeciesTree","title":"Species Tree — coalSpeciesTree","text":"coalSpeciesTree estimates species trees can handle multiple individuals per species.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/coalSpeciesTree.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Species Tree — coalSpeciesTree","text":"","code":"coalSpeciesTree(tree, X = NULL, sTree = NULL)"},{"path":"https://klausvigo.github.io/phangorn/reference/coalSpeciesTree.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Species Tree — coalSpeciesTree","text":"tree object class multiPhylo X phyDat object define individual belongs species. sTree species tree fixes topology.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/coalSpeciesTree.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Species Tree — coalSpeciesTree","text":"function returns object class phylo.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/coalSpeciesTree.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Species Tree — coalSpeciesTree","text":"coalSpeciesTree estimates single linkage tree suggested Liu et al. (2010) element wise minima cophenetic matrices gene trees. extends speciesTree ape allows several individuals per gene tree.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/coalSpeciesTree.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Species Tree — coalSpeciesTree","text":"Liu, L., Yu, L. Pearl, D. K. (2010) Maximum tree: consistent estimator species tree. Journal Mathematical Biology, 60, 95--106.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/coalSpeciesTree.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Species Tree — coalSpeciesTree","text":"Klaus Schliep klaus.schliep@gmail.com Emmanuel Paradies","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/codonTest.html","id":null,"dir":"Reference","previous_headings":"","what":"codonTest — codonTest","title":"codonTest — codonTest","text":"Models detecting positive selection","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/codonTest.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"codonTest — codonTest","text":"","code":"codonTest(tree, object, model = c(\"M0\", \"M1a\", \"M2a\"), frequencies = \"F3x4\", opt_freq = FALSE, codonstart = 1, control = pml.control(maxit = 20), ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/codonTest.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"codonTest — codonTest","text":"tree phylogenetic tree. object object class phyDat. model vector containing substitution models compare \"\" test available models. frequencies character string vector defining compute codon frequencies opt_freq optimize frequencies (far ignored) codonstart integer giving start translation. 1, 2, 3, larger values accepted effect start translation within sequence. control list parameters controlling fitting process. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/codonTest.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"codonTest — codonTest","text":"list element called summary containing data.frame log-likelihood, number estimated parameters, etc. tested models. object called posterior contains posterior probability rate class sites estimates defined models.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/codonTest.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"codonTest — codonTest","text":"codonTest allows test positive selection similar programs like PAML (Yang ) HyPhy (Kosakovsky Pond et al. 2005). several options deriving codon frequencies. Frequencies can \"equal\" (1/61), derived nucleotide frequencies \"F1x4\" \"F3x4\" \"empirical\" codon frequencies. frequencies taken using empirical frequencies estimated via maximum likelihood. far M0 model (Goldman Yang 2002), M1a M2a implemented. M0 model always computed optional. convergence may slow sometimes fails.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/codonTest.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"codonTest — codonTest","text":"Ziheng Yang (2014). Molecular Evolution: Statistical Approach. Oxford University Press, Oxford Sergei L. Kosakovsky Pond, Simon D. W. Frost, Spencer V. Muse (2005) HyPhy: hypothesis testing using phylogenies, Bioinformatics, 21(5): 676--679, doi:10.1093/bioinformatics/bti079 Nielsen, R., Z. Yang. (1998) Likelihood models detecting positively selected amino acid sites applications HIV-1 envelope gene. Genetics, 148: 929--936","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/codonTest.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"codonTest — codonTest","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/codonTest.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"codonTest — codonTest","text":"","code":"if (FALSE) { # load woodmouse data from ape data(woodmouse) dat_codon <- dna2codon(as.phyDat(woodmouse)) tree <- NJ(dist.ml(dat_codon)) # optimize the model the old way fit <- pml(tree, dat_codon, bf=\"F3x4\") M0 <- optim.pml(fit, model=\"codon1\") # Now using the codonTest function fit_codon <- codonTest(tree, dat_codon) fit_codon plot(fit_codon, \"M1a\") }"},{"path":"https://klausvigo.github.io/phangorn/reference/consensusNet.html","id":null,"dir":"Reference","previous_headings":"","what":"Computes a consensusNetwork from a list of trees Computes a networx\nobject from a collection of splits. — consensusNet","title":"Computes a consensusNetwork from a list of trees Computes a networx\nobject from a collection of splits. — consensusNet","text":"Computes consensusNetwork, .e. object class networx list trees, .e. class class multiPhylo. Computes networx object collection splits.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/consensusNet.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Computes a consensusNetwork from a list of trees Computes a networx\nobject from a collection of splits. — consensusNet","text":"","code":"consensusNet(obj, prob = 0.3, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/consensusNet.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Computes a consensusNetwork from a list of trees Computes a networx\nobject from a collection of splits. — consensusNet","text":"obj object class multiPhylo. prob proportion split present trees represented network. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/consensusNet.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Computes a consensusNetwork from a list of trees Computes a networx\nobject from a collection of splits. — consensusNet","text":"consensusNet returns object class networx. just intermediate plot phylogenetic networks igraph.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/consensusNet.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Computes a consensusNetwork from a list of trees Computes a networx\nobject from a collection of splits. — consensusNet","text":"Holland B.R., Huber K.T., Moulton V., Lockhart P.J. (2004) Using consensus networks visualize contradictory evidence species phylogeny. Molecular Biology Evolution, 21, 1459--61","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/consensusNet.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Computes a consensusNetwork from a list of trees Computes a networx\nobject from a collection of splits. — consensusNet","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/consensusNet.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Computes a consensusNetwork from a list of trees Computes a networx\nobject from a collection of splits. — consensusNet","text":"","code":"data(Laurasiatherian) set.seed(1) bs <- bootstrap.phyDat(Laurasiatherian, FUN = function(x)nj(dist.hamming(x)), bs=50) cnet <- consensusNet(bs, .3) plot(cnet, angle=-60, direction=\"axial\") if (FALSE) { library(rgl) open3d() plot(cnet, type = \"3D\", show.tip.label=FALSE, show.nodes=TRUE) plot(cnet, type = \"equal angle\", show.edge.label=TRUE) tmpfile <- normalizePath(system.file( \"extdata/trees/RAxML_bootstrap.woodmouse\", package=\"phangorn\")) trees <- read.tree(tmpfile) cnet_woodmouse <- consensusNet(trees, .3) plot(cnet_woodmouse, type = \"equal angle\", show.edge.label=TRUE) }"},{"path":"https://klausvigo.github.io/phangorn/reference/cophenetic.networx.html","id":null,"dir":"Reference","previous_headings":"","what":"Pairwise Distances from a Phylogenetic Network — cophenetic.networx","title":"Pairwise Distances from a Phylogenetic Network — cophenetic.networx","text":"cophenetic.networx computes pairwise distances pairs tips phylogenetic network using branch lengths.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/cophenetic.networx.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Pairwise Distances from a Phylogenetic Network — cophenetic.networx","text":"","code":"# S3 method for networx cophenetic(x)"},{"path":"https://klausvigo.github.io/phangorn/reference/cophenetic.networx.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Pairwise Distances from a Phylogenetic Network — cophenetic.networx","text":"x object class networx.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/cophenetic.networx.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Pairwise Distances from a Phylogenetic Network — cophenetic.networx","text":"object class dist, names set according tip labels (given element tip.label argument x).","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/cophenetic.networx.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Pairwise Distances from a Phylogenetic Network — cophenetic.networx","text":"Klaus Schliep","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/delta.score.html","id":null,"dir":"Reference","previous_headings":"","what":"Computes the \\(\\delta\\) score — delta.score","title":"Computes the \\(\\delta\\) score — delta.score","text":"Computes treelikeness","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/delta.score.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Computes the \\(\\delta\\) score — delta.score","text":"","code":"delta.score(x, arg = \"mean\", ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/delta.score.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Computes the \\(\\delta\\) score — delta.score","text":"x object class phyDat arg Specifies return value, one \"\", \"mean\" \"sd\" ... arguments passed dist.hamming","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/delta.score.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Computes the \\(\\delta\\) score — delta.score","text":"vector containing \\(\\delta\\) scores.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/delta.score.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Computes the \\(\\delta\\) score — delta.score","text":"BR Holland, KT Huber, Dress, V Moulton (2002) \\(\\delta\\) Plots: tool analyzing phylogenetic distance data Russell D. Gray, David Bryant, Simon J. Greenhill (2010) shape fabric human history Molecular Biology Evolution, 19(12) 2051--2059 Russell D. Gray, David Bryant, Simon J. Greenhill (2010) shape fabric human history Phil. Trans. R. Soc. B, 365 3923--3933; DOI: 10.1098/rstb.2010.0162","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/delta.score.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Computes the \\(\\delta\\) score — delta.score","text":"Alastair Potts Klaus Schliep","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/delta.score.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Computes the \\(\\delta\\) score — delta.score","text":"","code":"data(yeast) hist(delta.score(yeast, \"all\"))"},{"path":"https://klausvigo.github.io/phangorn/reference/densiTree.html","id":null,"dir":"Reference","previous_headings":"","what":"Plots a densiTree. — densiTree","title":"Plots a densiTree. — densiTree","text":"R function plot trees similar produced DensiTree.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/densiTree.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plots a densiTree. — densiTree","text":"","code":"densiTree(x, type = \"cladogram\", alpha = 1/length(x), consensus = NULL, direction = \"rightwards\", optim = FALSE, scaleX = FALSE, col = 1, width = 1, lty = 1, cex = 0.8, font = 3, tip.color = 1, adj = 0, srt = 0, underscore = FALSE, label.offset = 0, scale.bar = TRUE, jitter = list(amount = 0, random = TRUE), tip.dates = NULL, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/densiTree.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plots a densiTree. — densiTree","text":"x object class multiPhylo. type character string specifying type phylogeny, far \"cladogram\" (default) \"phylogram\" supported. alpha parameter semi-transparent colors. consensus tree character vector used define order tip labels. direction character string specifying direction tree. Four values possible: \"rightwards\" (default), \"leftwards\", \"upwards\", \"downwards\". optim yet used. scaleX scale trees identical heights. col scalar vector giving colours used draw edges plotted phylogeny. taken order input trees x. fewer colours given number trees, colours recycled. width edge width. lty line type. cex numeric value giving factor scaling tip labels. font integer specifying type font labels: 1 (plain text), 2 (bold), 3 (italic, default), 4 (bold italic). tip.color color tip labels. adj numeric specifying justification text strings labels: 0 (left-justification), 0.5 (centering), 1 (right-justification). srt numeric giving much labels rotated degrees. underscore logical specifying whether underscores tip labels written spaces (default) left (TRUE). label.offset numeric giving space nodes tips phylogeny corresponding labels. scale.bar logical specifying whether add scale.bar plot. jitter allows shift trees. list two arguments: amount jitter random equally spaced (see details ) tip.dates named vector sampling times associated tips. ... arguments passed plot.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/densiTree.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Plots a densiTree. — densiTree","text":"consensus tree provided densiTree computes consensus tree, input trees different labels mrp.supertree backbone. avoid many unnecessary crossings edges. Trees rooted, wise output may visually pleasing. jitter shifts trees bit exactly top . amount == 0, ignored. random=TRUE result permutation runif(n, -amount, amount), otherwise seq(-amount, amount, length=n), n <- length(x).","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/densiTree.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Plots a densiTree. — densiTree","text":"densiTree inspired great DensiTree program Remco Bouckaert. Remco R. Bouckaert (2010) DensiTree: making sense sets phylogenetic trees Bioinformatics, 26 (10), 1372-1373.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/densiTree.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plots a densiTree. — densiTree","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/densiTree.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plots a densiTree. — densiTree","text":"","code":"data(Laurasiatherian) set.seed(1) bs <- bootstrap.phyDat(Laurasiatherian, FUN = function(x) upgma(dist.hamming(x)), bs=25) # cladogram nice to show topological differences densiTree(bs, type=\"cladogram\", col=\"blue\") densiTree(bs, type=\"phylogram\", col=\"green\", direction=\"downwards\", width=2) # plot five trees slightly shifted, no transparent color densiTree(bs[1:5], type=\"phylogram\", col=1:5, width=2, jitter= list(amount=.3, random=FALSE), alpha=1) if (FALSE) { # phylograms are nice to show different age estimates require(PhyloOrchard) data(BinindaEmondsEtAl2007) BinindaEmondsEtAl2007 <- .compressTipLabel(BinindaEmondsEtAl2007) densiTree(BinindaEmondsEtAl2007, type=\"phylogram\", col=\"red\") }"},{"path":"https://klausvigo.github.io/phangorn/reference/designTree.html","id":null,"dir":"Reference","previous_headings":"","what":"Compute a design matrix or non-negative LS — designTree","title":"Compute a design matrix or non-negative LS — designTree","text":"nnls.tree estimates branch length using non-negative least squares given tree distance matrix. designTree designSplits compute design matrices estimation edge length (phylogenetic) trees using linear models. larger trees sparse design matrix can save lot memory. computes contrast matrix method \"rooted\".","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/designTree.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compute a design matrix or non-negative LS — designTree","text":"","code":"designTree(tree, method = \"unrooted\", sparse = FALSE, tip.dates = NULL, calibration = NULL, ...) nnls.tree(dm, tree, method = c(\"unrooted\", \"ultrametric\", \"tipdated\"), rooted = NULL, trace = 1, weight = NULL, balanced = FALSE, tip.dates = NULL) nnls.phylo(x, dm, method = \"unrooted\", trace = 0, ...) nnls.splits(x, dm, trace = 0, eps = 1e-08) nnls.networx(x, dm, eps = 1e-08) designSplits(x, splits = \"all\", ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/designTree.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compute a design matrix or non-negative LS — designTree","text":"tree object class phylo method compute \"unrooted\", \"ultrametric\" \"tipdated\" tree. sparse return sparse design matrix. tip.dates named vector sampling times associated tips tree. calibration named vector calibration times associated nodes tree. ... arguments, passed methods. dm distance matrix. rooted compute \"ultrametric\" \"unrooted\" tree (better use method). trace defines much information printed optimization. weight vector weights used fitting process. Weighted least squares used weights w, .e., sum(w * e^2) minimized. balanced use weights balanced fastME x number taxa. eps minimum edge length (default s 1e-8). splits one \"\", \"star\".","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/designTree.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compute a design matrix or non-negative LS — designTree","text":"nnls.tree return tree, .e. object class phylo. designTree designSplits matrix, possibly sparse.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/designTree.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Compute a design matrix or non-negative LS — designTree","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/designTree.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Compute a design matrix or non-negative LS — designTree","text":"","code":"example(NJ) #> #> NJ> data(Laurasiatherian) #> #> NJ> dm <- dist.ml(Laurasiatherian) #> #> NJ> tree <- NJ(dm) #> #> NJ> plot(tree) dm <- as.matrix(dm) y <- dm[lower.tri(dm)] X <- designTree(tree) lm(y~X-1) #> #> Call: #> lm(formula = y ~ X - 1) #> #> Coefficients: #> X89<->36 X89<->37 X77<->35 X77<->38 X73<->33 X73<->34 #> 0.0499157 0.0491439 0.0724626 0.0755455 0.0712616 0.0725432 #> X65<->73 X65<->77 X51<->65 X51<->89 X75<->10 X75<->11 #> 0.0034694 0.0099328 0.0029426 0.0432799 0.0885305 0.0820387 #> X62<->12 X62<->13 X86<->15 X86<->16 X67<->14 X67<->17 #> 0.0461128 0.0479378 0.0134025 0.0151296 0.0467324 0.0580930 #> X63<->67 X63<->86 X59<->63 X59<->18 X88<->45 X88<->47 #> 0.0035646 0.0360953 0.0032091 0.0775894 0.0034977 0.0063178 #> X80<->88 X80<->46 X74<->80 X74<->44 X72<->74 X72<->43 #> 0.0231875 0.0381300 0.0154870 0.0421651 0.0015801 0.0392256 #> X85<->19 X85<->20 X79<->21 X79<->22 X71<->79 X71<->85 #> 0.0088520 0.0092959 0.0229321 0.0224528 0.0145614 0.0299323 #> X81<->25 X81<->26 X87<->28 X87<->29 X82<->87 X82<->30 #> 0.0274720 0.0286839 0.0148471 0.0117270 0.0181692 0.0364881 #> X70<->82 X70<->27 X68<->70 X68<->24 X66<->68 X66<->81 #> 0.0219311 0.0563100 0.0033377 0.0569549 0.0008004 0.0221615 #> X61<->66 X61<->23 X60<->61 X60<->71 X58<->60 X58<->72 #> 0.0021831 0.0502453 0.0042762 0.0102058 0.0020978 0.0117101 #> X57<->58 X57<->59 X56<->57 X56<->62 X53<->56 X53<->75 #> 0.0013537 0.0043899 0.0011632 0.0063020 0.0070446 0.0117666 #> X84<->39 X84<->40 X78<->84 X78<->42 X52<->78 X52<->41 #> 0.0696111 0.0583581 0.0144780 0.0701359 0.0225117 0.0792075 #> X50<->52 X50<->53 X49<->50 X49<->51 X92<->2 X92<->3 #> 0.0008563 0.0018880 0.0036910 0.0033483 0.0324915 0.0274029 #> X91<->92 X91<->4 X90<->91 X90<->5 X83<->90 X83<->1 #> 0.0090135 0.0362511 0.0024394 0.0505988 0.0425011 0.1170301 #> X69<->83 X69<->9 X64<->7 X64<->8 X55<->64 X55<->6 #> 0.0289009 0.0967237 0.1091965 0.0693124 0.0029756 0.0874519 #> X54<->55 X54<->69 X76<->31 X76<->32 X48<->76 X48<->54 #> 0.0027613 0.0065884 0.0534621 0.0681912 0.0151764 0.0010911 #> X48<->49 #> -0.0018629 #> # avoids negative edge weights tree2 <- nnls.tree(dm, tree)"},{"path":"https://klausvigo.github.io/phangorn/reference/dfactorial.html","id":null,"dir":"Reference","previous_headings":"","what":"Arithmetic Operators — ldfactorial","title":"Arithmetic Operators — ldfactorial","text":"double factorial function","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dfactorial.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Arithmetic Operators — ldfactorial","text":"","code":"ldfactorial(x) dfactorial(x)"},{"path":"https://klausvigo.github.io/phangorn/reference/dfactorial.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Arithmetic Operators — ldfactorial","text":"x numeric scalar vector","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dfactorial.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Arithmetic Operators — ldfactorial","text":"dfactorial(x) returns double factorial, \\(x\\!\\! = 1 * 3 * 5 * \\ldots * x \\) ldfactorial(x) natural logarithm .","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/dfactorial.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Arithmetic Operators — ldfactorial","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dfactorial.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Arithmetic Operators — ldfactorial","text":"","code":"dfactorial(1:10) #> [1] 1.000000 1.595769 3.000000 6.383076 15.000000 38.298459 #> [7] 105.000000 306.387671 945.000000 3063.876713"},{"path":"https://klausvigo.github.io/phangorn/reference/discrete.gamma.html","id":null,"dir":"Reference","previous_headings":"","what":"Discrete Gamma and Beta distribution — discrete.gamma","title":"Discrete Gamma and Beta distribution — discrete.gamma","text":"discrete.gamma internally used likelihood computations pml optim.pml. useful understand works simulation studies cases .","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/discrete.gamma.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Discrete Gamma and Beta distribution — discrete.gamma","text":"","code":"discrete.gamma(alpha, k) discrete.beta(shape1, shape2, k) plot_gamma_plus_inv(shape = 1, inv = 0, k = 4, discrete = TRUE, cdf = TRUE, append = FALSE, xlab = \"x\", ylab = ifelse(cdf, \"F(x)\", \"f(x)\"), xlim = NULL, verticals = FALSE, edge.length = NULL, site.rate = \"gamma\", ...) plotRates(obj, cdf.color = \"blue\", main = \"cdf\", ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/discrete.gamma.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Discrete Gamma and Beta distribution — discrete.gamma","text":"alpha Shape parameter gamma distribution. k Number intervals discrete gamma distribution. shape1, shape2 non-negative parameters Beta distribution. shape Shape parameter gamma distribution. inv Proportion invariable sites. discrete logical whether plot discrete (default) continuous pdf cdf. cdf logical whether plot cumulative distribution function density / probability function. append logical; TRUE add existing plot. xlab label x axis, defaults description x. ylab label y axis, defaults description y. xlim x limits plot. verticals logical; TRUE, draw vertical lines steps. edge.length Total edge length (sum edges tree). site.rate Indicates type gamma distribution use. Options \"gamma\" (Yang 1994) \"gamma_quadrature\" using Laguerre quadrature approach Felsenstein (2001) ... arguments passed methods. obj object class pml cdf.color color cdf. main main title plot.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/discrete.gamma.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Discrete Gamma and Beta distribution — discrete.gamma","text":"discrete.gamma returns matrix.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/discrete.gamma.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Discrete Gamma and Beta distribution — discrete.gamma","text":"functions exported used different packages far package coalescentMCMC, intended end user. functions call C code far less forgiving import expect pml.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/discrete.gamma.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Discrete Gamma and Beta distribution — discrete.gamma","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/discrete.gamma.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Discrete Gamma and Beta distribution — discrete.gamma","text":"","code":"discrete.gamma(1, 4) #> [1] 0.1369538 0.4767519 1.0000000 2.3862944 old.par <- par(no.readonly = TRUE) par(mfrow = c(2,1)) plot_gamma_plus_inv(shape=2, discrete = FALSE, cdf=FALSE) plot_gamma_plus_inv(shape=2, append = TRUE, cdf=FALSE) plot_gamma_plus_inv(shape=2, discrete = FALSE) plot_gamma_plus_inv(shape=2, append = TRUE) par(old.par)"},{"path":"https://klausvigo.github.io/phangorn/reference/dist.hamming.html","id":null,"dir":"Reference","previous_headings":"","what":"Pairwise Distances from Sequences — dist.hamming","title":"Pairwise Distances from Sequences — dist.hamming","text":"dist.hamming, dist.ml dist.logDet compute pairwise distances object class phyDat. dist.ml uses DNA / AA sequences compute distances different substitution models.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dist.hamming.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Pairwise Distances from Sequences — dist.hamming","text":"","code":"dist.hamming(x, ratio = TRUE, exclude = \"none\") dist.ml(x, model = \"JC69\", exclude = \"none\", bf = NULL, Q = NULL, k = 1L, shape = 1, ...) dist.logDet(x)"},{"path":"https://klausvigo.github.io/phangorn/reference/dist.hamming.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Pairwise Distances from Sequences — dist.hamming","text":"x object class phyDat ratio Compute uncorrected ('p') distance character difference. exclude One \"none\", \"\", \"pairwise\" indicating whether delete sites missing data (ambiguous states). default handle missing data pml. model One \"JC69\", \"F81\" one 17 amino acid models see details. bf vector base frequencies. Q vector containing lower triangular part rate matrix. k Number intervals discrete gamma distribution. shape Shape parameter gamma distribution. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dist.hamming.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Pairwise Distances from Sequences — dist.hamming","text":"object class dist","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dist.hamming.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Pairwise Distances from Sequences — dist.hamming","text":"far 17 amino acid models supported (\"WAG\", \"JTT\", \"LG\", \"Dayhoff\", \"cpREV\", \"mtmam\", \"mtArt\", \"MtZoa\", \"mtREV24\", \"VT\",\"RtREV\", \"HIVw\", \"HIVb\", \"FLU\", \"Blosum62\", \"Dayhoff_DCMut\" \"JTT_DCMut\") additional rate matrices frequencies can supplied. \"F81\" model uses empirical base frequencies, \"JC69\" equal base frequencies. even case data nucleotides.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dist.hamming.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Pairwise Distances from Sequences — dist.hamming","text":"Lockhart, P. J., Steel, M. ., Hendy, M. D. Penny, D. (1994) Recovering evolutionary trees realistic model sequence evolution. Molecular Biology Evolution, 11, 605--602. Jukes TH Cantor CR (1969). Evolution Protein Molecules. New York: Academic Press. 21--132. McGuire, G., Prentice, M. J. Wright, F. (1999). Improved error bounds genetic distances DNA sequences. Biometrics, 55, 1064–1070.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/dist.hamming.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Pairwise Distances from Sequences — dist.hamming","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dist.hamming.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Pairwise Distances from Sequences — dist.hamming","text":"","code":"data(Laurasiatherian) dm1 <- dist.hamming(Laurasiatherian) tree1 <- NJ(dm1) dm2 <- dist.logDet(Laurasiatherian) tree2 <- NJ(dm2) treedist(tree1,tree2) #> symmetric.difference branch.score.difference path.difference #> 4.00000000 0.05705091 30.95157508 #> quadratic.path.difference #> 0.80097967 # JC model dm3 <- dist.ml(Laurasiatherian) tree3 <- NJ(dm3) treedist(tree1,tree3) #> symmetric.difference branch.score.difference path.difference #> 6.0000000 0.0412520 30.3644529 #> quadratic.path.difference #> 0.6106899 # F81 + Gamma dm4 <- dist.ml(Laurasiatherian, model=\"F81\", k=4, shape=.4) tree4 <- NJ(dm4) treedist(tree1,tree4) #> symmetric.difference branch.score.difference path.difference #> 12.0000000 0.1356107 40.7676342 #> quadratic.path.difference #> 2.0709714 treedist(tree3,tree4) #> symmetric.difference branch.score.difference path.difference #> 8.00000000 0.09494752 39.52214569 #> quadratic.path.difference #> 1.46345381"},{"path":"https://klausvigo.github.io/phangorn/reference/dist.p.html","id":null,"dir":"Reference","previous_headings":"","what":"Pairwise Polymorphism P-Distances from DNA Sequences — dist.p","title":"Pairwise Polymorphism P-Distances from DNA Sequences — dist.p","text":"function computes matrix pairwise uncorrected polymorphism p-distances. Polymorphism p-distances include intra-individual site polymorphisms (2ISPs; e.g. \"R\") calculating genetic distances.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dist.p.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Pairwise Polymorphism P-Distances from DNA Sequences — dist.p","text":"","code":"dist.p(x, cost = \"polymorphism\", ignore.indels = TRUE)"},{"path":"https://klausvigo.github.io/phangorn/reference/dist.p.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Pairwise Polymorphism P-Distances from DNA Sequences — dist.p","text":"x matrix containing DNA sequences; must class \"phyDat\" (use .phyDat convert DNAbin objects). cost cost matrix \"polymorphism\" predefined one. ignore.indels logical indicating whether gaps treated fifth state . Warning, gap site treated characters, indel spans number base positions treated multiple character states.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dist.p.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Pairwise Polymorphism P-Distances from DNA Sequences — dist.p","text":"object class dist.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dist.p.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Pairwise Polymorphism P-Distances from DNA Sequences — dist.p","text":"polymorphism p-distances (Potts et al. 2014) developed analyse intra-individual variant polymorphism. example, widely used ribosomal internal transcribed spacer () region (e.g. Alvarez Wendel, 2003) consists 100's 1000's units within array across potentially multiple nucleolus organizing regions (Bailey et al., 2003; Goeker Grimm, 2008). can give rise intra-individual site polymorphisms (2ISPs) can detected direct-PCR sequencing cloning . Clone consensus sequences (see Goeker Grimm, 2008) can analysed function.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dist.p.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Pairwise Polymorphism P-Distances from DNA Sequences — dist.p","text":"Alvarez, ., J. F. Wendel. (2003) Ribosomal sequences plant phylogenetic inference. Molecular Phylogenetics Evolution, 29, 417--434. Bailey, C. D., T. G. Carr, S. . Harris, C. E. Hughes. (2003) Characterization angiosperm nrDNA polymorphism, paralogy, pseudogenes. Molecular Phylogenetics Evolution 29, 435--455. Goeker, M., G. Grimm. (2008) General functions transform associate data host data, use phylogenetic inference sequences intra-individual variability. BMC Evolutionary Biology, 8:86. Potts, .J., T.. Hedderson, G.W. Grimm. (2014) Constructing phylogenies presence intra-individual site polymorphisms (2ISPs) focus nuclear ribosomal cistron. Systematic Biology, 63, 1--16","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/dist.p.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Pairwise Polymorphism P-Distances from DNA Sequences — dist.p","text":"Klaus Schliep Alastair Potts","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dist.p.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Pairwise Polymorphism P-Distances from DNA Sequences — dist.p","text":"","code":"data(Laurasiatherian) laura <- as.DNAbin(Laurasiatherian) dm <- dist.p(Laurasiatherian, \"polymorphism\") ######################################################## # Dealing with indel 2ISPs # These can be coded using an \"x\" in the alignment. Note # that as.character usage in the read.dna() function. ######################################################### cat(\"3 5\", \"No305 ATRA-\", \"No304 ATAYX\", \"No306 ATAGA\", file = \"exdna.txt\", sep = \"\\n\") (ex.dna <- read.dna(\"exdna.txt\", format = \"sequential\", as.character=TRUE)) #> [,1] [,2] [,3] [,4] [,5] #> No305 \"a\" \"t\" \"r\" \"a\" \"-\" #> No304 \"a\" \"t\" \"a\" \"y\" \"x\" #> No306 \"a\" \"t\" \"a\" \"g\" \"a\" dat <- phyDat(ex.dna, \"USER\", levels=unique(as.vector(ex.dna))) dist.p(dat) #> No305 No304 #> No304 4 #> No306 3 4 unlink(\"exdna.txt\")"},{"path":"https://klausvigo.github.io/phangorn/reference/distanceHadamard.html","id":null,"dir":"Reference","previous_headings":"","what":"Distance Hadamard — distanceHadamard","title":"Distance Hadamard — distanceHadamard","text":"Distance Hadamard produces spectra splits distance matrix.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/distanceHadamard.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Distance Hadamard — distanceHadamard","text":"","code":"distanceHadamard(dm, eps = 0.001)"},{"path":"https://klausvigo.github.io/phangorn/reference/distanceHadamard.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Distance Hadamard — distanceHadamard","text":"dm distance matrix. eps Threshold value splits.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/distanceHadamard.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Distance Hadamard — distanceHadamard","text":"distanceHadamard returns matrix. first column contains distance spectra, second one edge-spectra. eps positive object splits greater eps returned.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/distanceHadamard.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Distance Hadamard — distanceHadamard","text":"Hendy, M. D. Penny, D. (1993). Spectral Analysis Phylogenetic Data. Journal Classification, 10, 5-24.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/distanceHadamard.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Distance Hadamard — distanceHadamard","text":"Klaus Schliep klaus.schliep@gmail.com, Tim White","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/distanceHadamard.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Distance Hadamard — distanceHadamard","text":"","code":"data(yeast) dm <- dist.hamming(yeast) dm <- as.matrix(dm) fit <- distanceHadamard(dm) lento(fit) plot(as.networx(fit))"},{"path":"https://klausvigo.github.io/phangorn/reference/dna2codon.html","id":null,"dir":"Reference","previous_headings":"","what":"Translate nucleic acid sequences into codons — dna2codon","title":"Translate nucleic acid sequences into codons — dna2codon","text":"function transforms dna2codon DNA sequences codon sequences, codon2dna transform way.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dna2codon.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Translate nucleic acid sequences into codons — dna2codon","text":"","code":"dna2codon(x, codonstart = 1, code = 1, ambiguity = \"---\", ...) codon2dna(x)"},{"path":"https://klausvigo.github.io/phangorn/reference/dna2codon.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Translate nucleic acid sequences into codons — dna2codon","text":"x object containing sequences. codonstart integer giving start translation. 1, 2, 3, larger values accepted effect start translation within sequence. code ncbi genetic code number translation (see details). default standard genetic code used. ambiguity character ambiguous character contrast provided. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dna2codon.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Translate nucleic acid sequences into codons — dna2codon","text":"functions return object class phyDat.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dna2codon.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Translate nucleic acid sequences into codons — dna2codon","text":"following genetic codes described . number preceding corresponds code argument. Alignment gaps ambiguities currently ignored sites containing deleted.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dna2codon.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Translate nucleic acid sequences into codons — dna2codon","text":"https://www.ncbi.nlm.nih.gov/Taxonomy/taxonomyhome.html/index.cgi?chapter=cgencodes","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/dna2codon.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Translate nucleic acid sequences into codons — dna2codon","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/dna2codon.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Translate nucleic acid sequences into codons — dna2codon","text":"","code":"data(Laurasiatherian) class(Laurasiatherian) #> [1] \"phyDat\" Laurasiatherian #> 47 sequences with 3179 character and 1605 different site patterns. #> The states are a c g t dna2codon(Laurasiatherian) #> 47 sequences with 1059 character and 914 different site patterns. #> The states are aaa aac aag aat aca acc acg act aga agc agg agt ata atc atg att caa cac cag cat cca ccc ccg cct cga cgc cgg cgt cta ctc ctg ctt gaa gac gag gat gca gcc gcg gct gga ggc ggg ggt gta gtc gtg gtt tac tat tca tcc tcg tct tgc tgg tgt tta ttc ttg ttt"},{"path":"https://klausvigo.github.io/phangorn/reference/getClans.html","id":null,"dir":"Reference","previous_headings":"","what":"Clans, slices and clips — getClans","title":"Clans, slices and clips — getClans","text":"Functions clanistics compute clans, slices, clips unrooted trees functions quantify fragmentation trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/getClans.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Clans, slices and clips — getClans","text":"","code":"getClans(tree) getSlices(tree) getClips(tree, all = TRUE) getDiversity(tree, x, norm = TRUE, var.names = NULL, labels = \"new\") # S3 method for clanistics summary(object, ...) diversity(tree, X)"},{"path":"https://klausvigo.github.io/phangorn/reference/getClans.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Clans, slices and clips — getClans","text":"tree object class phylo multiPhylo (getDiversity). logical, return just largest clip. x object class phyDat. norm logical, return Equitability Index (default) Shannon Diversity. var.names vector variable names. labels see details. object object summary desired. ... arguments passed methods. X data.frame","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/getClans.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Clans, slices and clips — getClans","text":"getClans, getSlices getClips return matrix partitions, matrix ones zeros rows correspond clan, slice clip columns tips. one indicates tip belongs certain partition. getDiversity returns list tree object, first data.frame equitability index Shannon divergence parsimony scores (p-score) trees variables. data.frame two attributes, first splits object identify taxa tree second splits object containing partitions perfectly fit.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/getClans.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Clans, slices and clips — getClans","text":"Every split unrooted tree defines two complementary clans. Thus unrooted binary tree \\(n\\) leaves \\(2n - 3\\) edges, therefore \\(4n - 6\\) clans (including \\(n\\) trivial clans containing one leave). Slices defined pair splits tripartitions, clans. number distinguishable slices binary tree \\(n\\) tips \\(2n^2 - 10n + 12\\). cophenetic distance topology. Namely clips groups leaves maximum pairwise distance smaller threshold. distance within clip lower distance member clip tip. clip different type partition, defining groups leaves related terms evolutionary distances topology. Namely, clips groups leaves pairwise path-length distances smaller given threshold value (Lapointe et al. 2010). exists different numbers clips different thresholds, largest (trivial) one whole tree. always clip containing two leaves smallest pairwise distance. Clans, slices clips can used characterize well vector categorial characters (natives/intruders) fit tree. follow definitions Lapointe et al.(2010). complete clan clan contains leaves given state/color, can also contain leaves another state/color. clan homogeneous contains leaves one state/color. getDiversity computes either Shannon Diversity: \\(H = -\\sum_{=1}^{k}(N_i/N) log(N_i/N), N=\\sum_{=1}^{k} N_i\\) Equitability Index: \\(E = H / log(N)\\) \\(N_i\\) sizes \\(k\\) largest homogeneous clans intruders. categories data can separated edge tree E-value zero, maximum equitability (E=1) reached intruders separate clans. getDiversity computes Intruder indices whole tree, complete clans complete slices. Additionally parsimony scores (p-scores) reported. p-score indicates leaves contain one color (p-score=0), leaves can separated single split (perfect clan, p-score=1) pair splits (perfect slice, p-score=2). far 2 states supported (native, intruder), however also possible recode several states native intruder state using contrasts, details see section 2 vignette(\"phangorn-specials\"). Furthermore unknown character states coded ambiguous character, can act either native intruder minimizing number clans changes (parsimony analysis) needed describe tree given data. Set attribute labels \"old\" analysis Schliep et al. (2010) \"new\" names intuitive. diversity returns data.frame parsimony score tree levels variables X. X data.frame column factor rownames X correspond tips trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/getClans.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Clans, slices and clips — getClans","text":"Lapointe, F.-J., Lopez, P., Boucher, Y., Koenig, J., Bapteste, E. (2010) Clanistics: multi-level perspective harvesting unrooted gene trees. Trends Microbiology 18: 341-347 Wilkinson, M., McInerney, J.O., Hirt, R.P., Foster, P.G., Embley, T.M. (2007) clades clans: terms phylogenetic relationships unrooted trees. Trends Ecology Evolution 22: 114-115 Schliep, K., Lopez, P., Lapointe F.-J., Bapteste E. (2011) Harvesting Evolutionary Signals Forest Prokaryotic Gene Trees, Molecular Biology Evolution 28(4): 1393-1405","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/getClans.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Clans, slices and clips — getClans","text":"Klaus Schliep klaus.schliep@snv.jussieu.fr Francois-Joseph Lapointe francois-joseph.lapointe@umontreal.ca","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/getClans.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Clans, slices and clips — getClans","text":"","code":"set.seed(111) tree <- rtree(10) getClans(tree) #> t3 t8 t2 t1 t5 t6 t9 t10 t4 t7 #> [1,] 1 0 0 0 0 0 0 0 0 0 #> [2,] 0 1 0 0 0 0 0 0 0 0 #> [3,] 0 0 1 0 0 0 0 0 0 0 #> [4,] 0 0 0 1 0 0 0 0 0 0 #> [5,] 0 0 0 0 1 0 0 0 0 0 #> [6,] 0 0 0 0 0 1 0 0 0 0 #> [7,] 0 0 0 0 0 0 1 0 0 0 #> [8,] 0 0 0 0 0 0 0 1 0 0 #> [9,] 0 0 0 0 0 0 0 0 1 0 #> [10,] 0 0 0 0 0 0 0 0 0 1 #> [11,] 0 1 1 1 1 1 1 1 1 1 #> [12,] 1 0 1 1 1 1 1 1 1 1 #> [13,] 1 1 0 1 1 1 1 1 1 1 #> [14,] 1 1 1 0 1 1 1 1 1 1 #> [15,] 1 1 1 1 0 1 1 1 1 1 #> [16,] 1 1 1 1 1 0 1 1 1 1 #> [17,] 1 1 1 1 1 1 0 1 1 1 #> [18,] 1 1 1 1 1 1 1 0 1 1 #> [19,] 1 1 1 1 1 1 1 1 0 1 #> [20,] 1 1 1 1 1 1 1 1 1 0 #> [21,] 1 1 1 0 0 0 0 0 0 0 #> [22,] 0 1 1 0 0 0 0 0 0 0 #> [23,] 0 0 0 0 1 1 1 1 1 1 #> [24,] 0 0 0 0 0 1 1 1 1 1 #> [25,] 0 0 0 0 0 1 1 1 0 0 #> [26,] 0 0 0 0 0 0 1 1 0 0 #> [27,] 0 0 0 0 0 0 0 0 1 1 #> [28,] 0 0 0 1 1 1 1 1 1 1 #> [29,] 1 0 0 1 1 1 1 1 1 1 #> [30,] 1 1 1 1 0 0 0 0 0 0 #> [31,] 1 1 1 1 1 0 0 0 0 0 #> [32,] 1 1 1 1 1 0 0 0 1 1 #> [33,] 1 1 1 1 1 1 0 0 1 1 #> [34,] 1 1 1 1 1 1 1 1 0 0 getClips(tree, all=TRUE) #> t3 t8 t2 t1 t5 t6 t9 t10 t4 t7 #> [1,] 1 0 1 0 0 0 0 0 0 0 #> [2,] 0 0 0 0 0 0 1 1 0 0 #> [3,] 0 0 0 0 0 0 0 0 1 1 getSlices(tree) #> t3 t8 t2 t1 t5 t6 t9 t10 t4 t7 #> [1,] 0 0 1 1 1 1 1 1 1 1 #> [2,] 0 1 0 1 1 1 1 1 1 1 #> [3,] 0 1 1 0 1 1 1 1 1 1 #> [4,] 0 1 1 1 0 1 1 1 1 1 #> [5,] 0 1 1 1 1 0 1 1 1 1 #> [6,] 0 1 1 1 1 1 0 1 1 1 #> [7,] 0 1 1 1 1 1 1 0 1 1 #> [8,] 0 1 1 1 1 1 1 1 0 1 #> [9,] 0 1 1 1 1 1 1 1 1 0 #> [10,] 0 1 1 1 0 0 0 0 0 0 #> [11,] 0 1 1 1 1 0 0 0 0 0 #> [12,] 0 1 1 1 1 0 0 0 1 1 #> [13,] 0 1 1 1 1 1 0 0 1 1 #> [14,] 0 1 1 1 1 1 1 1 0 0 #> [15,] 1 0 1 0 1 1 1 1 1 1 #> [16,] 1 0 1 1 0 1 1 1 1 1 #> [17,] 1 0 1 1 1 0 1 1 1 1 #> [18,] 1 0 1 1 1 1 0 1 1 1 #> [19,] 1 0 1 1 1 1 1 0 1 1 #> [20,] 1 0 1 1 1 1 1 1 0 1 #> [21,] 1 0 1 1 1 1 1 1 1 0 #> [22,] 1 0 1 0 0 0 0 0 0 0 #> [23,] 1 0 1 1 0 0 0 0 0 0 #> [24,] 1 0 1 1 1 0 0 0 0 0 #> [25,] 1 0 1 1 1 0 0 0 1 1 #> [26,] 1 0 1 1 1 1 0 0 1 1 #> [27,] 1 0 1 1 1 1 1 1 0 0 #> [28,] 1 1 0 0 1 1 1 1 1 1 #> [29,] 1 1 0 1 0 1 1 1 1 1 #> [30,] 1 1 0 1 1 0 1 1 1 1 #> [31,] 1 1 0 1 1 1 0 1 1 1 #> [32,] 1 1 0 1 1 1 1 0 1 1 #> [33,] 1 1 0 1 1 1 1 1 0 1 #> [34,] 1 1 0 1 1 1 1 1 1 0 #> [35,] 1 1 0 0 0 0 0 0 0 0 #> [36,] 1 1 0 1 0 0 0 0 0 0 #> [37,] 1 1 0 1 1 0 0 0 0 0 #> [38,] 1 1 0 1 1 0 0 0 1 1 #> [39,] 1 1 0 1 1 1 0 0 1 1 #> [40,] 1 1 0 1 1 1 1 1 0 0 #> [41,] 1 1 1 0 0 1 1 1 1 1 #> [42,] 1 1 1 0 1 0 1 1 1 1 #> [43,] 1 1 1 0 1 1 0 1 1 1 #> [44,] 1 1 1 0 1 1 1 0 1 1 #> [45,] 1 1 1 0 1 1 1 1 0 1 #> [46,] 1 1 1 0 1 1 1 1 1 0 #> [47,] 1 0 0 0 1 1 1 1 1 1 #> [48,] 1 1 1 0 1 0 0 0 0 0 #> [49,] 1 1 1 0 1 0 0 0 1 1 #> [50,] 1 1 1 0 1 1 0 0 1 1 #> [51,] 1 1 1 0 1 1 1 1 0 0 #> [52,] 1 1 1 1 0 0 1 1 1 1 #> [53,] 1 1 1 1 0 1 0 1 1 1 #> [54,] 1 1 1 1 0 1 1 0 1 1 #> [55,] 1 1 1 1 0 1 1 1 0 1 #> [56,] 1 1 1 1 0 1 1 1 1 0 #> [57,] 0 0 0 1 0 1 1 1 1 1 #> [58,] 1 0 0 1 0 1 1 1 1 1 #> [59,] 1 1 1 1 0 0 0 0 1 1 #> [60,] 1 1 1 1 0 1 0 0 1 1 #> [61,] 1 1 1 1 0 1 1 1 0 0 #> [62,] 1 1 1 1 1 0 0 1 1 1 #> [63,] 1 1 1 1 1 0 1 0 1 1 #> [64,] 1 1 1 1 1 0 1 1 0 1 #> [65,] 1 1 1 1 1 0 1 1 1 0 #> [66,] 0 0 0 0 1 0 1 1 1 1 #> [67,] 0 0 0 0 0 0 1 1 1 1 #> [68,] 0 0 0 1 1 0 1 1 1 1 #> [69,] 1 0 0 1 1 0 1 1 1 1 #> [70,] 1 1 1 1 1 0 1 1 0 0 #> [71,] 1 1 1 1 1 1 0 1 0 1 #> [72,] 1 1 1 1 1 1 0 1 1 0 #> [73,] 0 0 0 0 1 1 0 1 1 1 #> [74,] 0 0 0 0 0 1 0 1 1 1 #> [75,] 0 0 0 0 0 1 0 1 0 0 #> [76,] 0 0 0 1 1 1 0 1 1 1 #> [77,] 1 0 0 1 1 1 0 1 1 1 #> [78,] 1 1 1 1 1 1 0 1 0 0 #> [79,] 1 1 1 1 1 1 1 0 0 1 #> [80,] 1 1 1 1 1 1 1 0 1 0 #> [81,] 0 0 0 0 1 1 1 0 1 1 #> [82,] 0 0 0 0 0 1 1 0 1 1 #> [83,] 0 0 0 0 0 1 1 0 0 0 #> [84,] 0 0 0 1 1 1 1 0 1 1 #> [85,] 1 0 0 1 1 1 1 0 1 1 #> [86,] 1 1 1 1 1 1 1 0 0 0 #> [87,] 0 0 0 0 1 1 1 1 0 1 #> [88,] 0 0 0 0 0 1 1 1 0 1 #> [89,] 0 0 0 1 1 1 1 1 0 1 #> [90,] 1 0 0 1 1 1 1 1 0 1 #> [91,] 1 1 1 1 1 0 0 0 0 1 #> [92,] 1 1 1 1 1 1 0 0 0 1 #> [93,] 0 0 0 0 1 1 1 1 1 0 #> [94,] 0 0 0 0 0 1 1 1 1 0 #> [95,] 0 0 0 1 1 1 1 1 1 0 #> [96,] 1 0 0 1 1 1 1 1 1 0 #> [97,] 1 1 1 1 1 0 0 0 1 0 #> [98,] 1 1 1 1 1 1 0 0 1 0 #> [99,] 0 0 0 0 1 0 0 0 1 1 #> [100,] 0 0 0 0 1 1 0 0 1 1 #> [101,] 0 0 0 0 1 1 1 1 0 0 #> [102,] 0 0 0 0 0 1 0 0 1 1 #> [103,] 0 0 0 1 1 0 0 0 0 0 #> [104,] 0 0 0 1 1 0 0 0 1 1 #> [105,] 0 0 0 1 1 1 0 0 1 1 #> [106,] 0 0 0 1 1 1 1 1 0 0 #> [107,] 1 0 0 1 0 0 0 0 0 0 #> [108,] 1 0 0 1 1 0 0 0 0 0 #> [109,] 1 0 0 1 1 0 0 0 1 1 #> [110,] 1 0 0 1 1 1 0 0 1 1 #> [111,] 1 0 0 1 1 1 1 1 0 0 #> [112,] 1 1 1 1 1 1 0 0 0 0 set.seed(123) trees <- rmtree(10, 20) X <- matrix(sample(c(\"red\", \"blue\", \"violet\"), 100, TRUE, c(.5,.4, .1)), ncol=5, dimnames=list(paste('t',1:20, sep=\"\"), paste('Var',1:5, sep=\"_\"))) x <- phyDat(X, type = \"USER\", levels = c(\"red\", \"blue\"), ambiguity=\"violet\") plot(trees[[1]], \"u\", tip.color = X[trees[[1]]$tip,1]) # intruders are blue (divTab <- getDiversity(trees, x, var.names=colnames(X))) #> Warning: The variable names have changed #> tree variable E clan # natives # intruder # unknown E slice # intruder #> 1 1 Var_1 0.8568636 9 10 1 1.0000000 7 #> 2 1 Var_2 0.6562658 11 7 2 0.7500000 4 #> 3 1 Var_3 0.7500962 8 11 1 0.8018797 8 #> 4 1 Var_4 0.9474428 7 11 2 1.0000000 9 #> 5 1 Var_5 1.0000000 8 10 2 1.0000000 9 #> 6 2 Var_1 0.8568636 9 10 1 1.0000000 7 #> 7 2 Var_2 0.7964530 11 7 2 0.8277294 5 #> 8 2 Var_3 0.9474428 8 11 1 1.0000000 9 #> 9 2 Var_4 0.8224909 7 11 2 0.9166667 8 #> 10 2 Var_5 0.6387640 8 10 2 0.7420981 6 #> 11 3 Var_1 0.8795880 9 10 1 0.9166667 8 #> 12 3 Var_2 0.8982265 11 7 2 1.0000000 5 #> 13 3 Var_3 0.7372138 8 11 1 0.8982265 7 #> 14 3 Var_4 0.8948855 7 11 2 0.9298967 9 #> 15 3 Var_5 1.0000000 8 10 2 1.0000000 9 #> 16 4 Var_1 0.8795880 9 10 1 0.9166667 8 #> 17 4 Var_2 0.8982265 11 7 2 1.0000000 5 #> 18 4 Var_3 0.7372138 8 11 1 0.8982265 7 #> 19 4 Var_4 0.8948855 7 11 2 0.9298967 9 #> 20 4 Var_5 1.0000000 8 10 2 1.0000000 9 #> 21 5 Var_1 0.7966576 9 10 1 0.8982265 7 #> 22 5 Var_2 0.8982265 11 7 2 1.0000000 5 #> 23 5 Var_3 0.8224909 8 11 1 0.9166667 8 #> 24 5 Var_4 0.5699628 7 11 2 0.6934264 6 #> 25 5 Var_5 0.4729033 8 10 2 0.7500000 4 #> 26 6 Var_1 0.7966576 9 10 1 0.8982265 7 #> 27 6 Var_2 0.8982265 11 7 2 1.0000000 5 #> 28 6 Var_3 0.8224909 8 11 1 0.9166667 8 #> 29 6 Var_4 1.0000000 7 11 2 1.0000000 10 #> 30 6 Var_5 0.9397940 8 10 2 1.0000000 8 #> 31 7 Var_1 0.8795880 9 10 1 0.9166667 8 #> 32 7 Var_2 1.0000000 11 7 2 1.0000000 6 #> 33 7 Var_3 0.9474428 8 11 1 1.0000000 9 #> 34 7 Var_4 0.7500962 7 11 2 0.8018797 8 #> 35 7 Var_5 0.9397940 8 10 2 1.0000000 8 #> 36 8 Var_1 0.8795880 9 10 1 0.9166667 8 #> 37 8 Var_2 0.8982265 11 7 2 1.0000000 5 #> 38 8 Var_3 0.8224909 8 11 1 0.9166667 8 #> 39 8 Var_4 0.6846566 7 11 2 0.7964530 7 #> 40 8 Var_5 0.8568636 8 10 2 1.0000000 7 #> 41 9 Var_1 0.7364516 9 10 1 0.7964530 7 #> 42 9 Var_2 0.7964530 11 7 2 0.8277294 5 #> 43 9 Var_3 0.8948855 8 11 1 0.9298967 9 #> 44 9 Var_4 0.7897710 7 11 2 0.7896901 9 #> 45 9 Var_5 0.7591760 8 10 2 1.0000000 6 #> 46 10 Var_1 0.5903090 9 10 1 0.8277294 5 #> 47 10 Var_2 0.8982265 11 7 2 1.0000000 5 #> 48 10 Var_3 0.8224909 8 11 1 0.9166667 8 #> 49 10 Var_4 0.8750481 7 11 2 1.0000000 8 #> 50 10 Var_5 0.9397940 8 10 2 1.0000000 8 #> # unknown E melange # intruder # unknown bs 1 bs 2 p-score #> 1 1 1.0000000 6 1 NA NA 8 #> 2 2 1.0000000 2 2 NA NA 4 #> 3 1 1.0000000 5 1 NA NA 6 #> 4 2 1.0000000 8 2 NA NA 7 #> 5 2 1.0000000 8 2 NA NA 7 #> 6 1 1.0000000 6 1 NA NA 7 #> 7 2 1.0000000 3 1 NA NA 5 #> 8 1 1.0000000 8 1 NA NA 7 #> 9 2 1.0000000 6 2 NA NA 5 #> 10 1 0.7500000 4 1 NA NA 5 #> 11 1 1.0000000 6 1 NA NA 7 #> 12 2 1.0000000 4 2 NA NA 6 #> 13 1 1.0000000 5 1 NA NA 7 #> 14 2 1.0000000 7 1 NA NA 5 #> 15 2 1.0000000 8 2 NA NA 8 #> 16 1 1.0000000 6 1 NA NA 4 #> 17 2 1.0000000 4 2 NA NA 5 #> 18 1 1.0000000 5 1 NA NA 6 #> 19 2 1.0000000 7 2 NA NA 6 #> 20 2 1.0000000 8 2 NA NA 8 #> 21 1 1.0000000 5 1 NA NA 7 #> 22 2 1.0000000 4 2 NA NA 6 #> 23 1 1.0000000 6 1 NA NA 7 #> 24 0 1.0000000 3 0 NA NA 5 #> 25 2 1.0000000 2 2 NA NA 4 #> 26 1 1.0000000 5 1 NA NA 6 #> 27 1 1.0000000 4 1 NA NA 6 #> 28 1 1.0000000 6 1 NA NA 6 #> 29 2 1.0000000 9 2 NA NA 7 #> 30 2 1.0000000 7 2 NA NA 7 #> 31 1 1.0000000 6 0 NA NA 6 #> 32 2 1.0000000 5 2 NA NA 6 #> 33 1 1.0000000 8 1 NA NA 7 #> 34 1 1.0000000 5 1 NA NA 5 #> 35 2 1.0000000 7 2 NA NA 7 #> 36 1 1.0000000 6 0 NA NA 8 #> 37 2 1.0000000 4 2 NA NA 6 #> 38 1 1.0000000 6 1 NA NA 7 #> 39 2 0.8277294 5 2 NA NA 6 #> 40 2 1.0000000 6 2 NA NA 4 #> 41 1 0.8277294 5 1 NA NA 6 #> 42 2 1.0000000 3 1 NA NA 4 #> 43 1 1.0000000 7 1 NA NA 7 #> 44 2 0.7964530 7 2 NA NA 5 #> 45 2 1.0000000 5 2 NA NA 6 #> 46 1 1.0000000 3 1 NA NA 5 #> 47 2 1.0000000 4 2 NA NA 6 #> 48 1 1.0000000 6 1 NA NA 5 #> 49 2 1.0000000 7 2 NA NA 6 #> 50 1 1.0000000 7 1 NA NA 7 summary(divTab) #> Variable Natives_only Intruder_only Clan Slice Melange #> 1 Var_1 0 0 0 0 10 #> 2 Var_2 0 0 0 0 10 #> 3 Var_3 0 0 0 0 10 #> 4 Var_4 0 0 0 0 10 #> 5 Var_5 0 0 0 0 10"},{"path":"https://klausvigo.github.io/phangorn/reference/hadamard.html","id":null,"dir":"Reference","previous_headings":"","what":"Hadamard Matrices and Fast Hadamard Multiplication — hadamard","title":"Hadamard Matrices and Fast Hadamard Multiplication — hadamard","text":"collection functions perform Hadamard conjugation. Hadamard matrix H vector v using fast Hadamard multiplication.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/hadamard.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Hadamard Matrices and Fast Hadamard Multiplication — hadamard","text":"","code":"hadamard(x) fhm(v) h4st(obj, levels = c(\"a\", \"c\", \"g\", \"t\")) h2st(obj, eps = 0.001)"},{"path":"https://klausvigo.github.io/phangorn/reference/hadamard.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Hadamard Matrices and Fast Hadamard Multiplication — hadamard","text":"x vector length \\(2^n\\), n integer. v vector length \\(2^n\\), n integer. obj data.frame character matrix, typical sequence alignment. levels levels sequences. eps Threshold value splits.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/hadamard.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Hadamard Matrices and Fast Hadamard Multiplication — hadamard","text":"hadamard returns Hadamard matrix. fhm returns fast Hadamard multiplication.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/hadamard.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Hadamard Matrices and Fast Hadamard Multiplication — hadamard","text":"h2st h4st perform Hadamard conjugation 2-state (binary, RY-coded) 4-state (DNA/RNA) data. write.nexus.splits writes splits returned h2st distanceHadamard nexus file, can processed Spectronet SplitsTree.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/hadamard.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Hadamard Matrices and Fast Hadamard Multiplication — hadamard","text":"Hendy, M.D. (1989). relationship simple evolutionary tree models observable sequence data. Systematic Zoology, 38 310--321. Hendy, M. D. Penny, D. (1993). Spectral Analysis Phylogenetic Data. Journal Classification, 10, 5--24. Hendy, M. D. (2005). Hadamard conjugation: analytical tool phylogenetics. O. Gascuel, editor, Mathematics evolution phylogeny, Oxford University Press, Oxford Waddell P. J. (1995). Statistical methods phylogenetic analysis: Including hadamard conjugation, LogDet transforms, maximum likelihood. PhD thesis.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/hadamard.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Hadamard Matrices and Fast Hadamard Multiplication — hadamard","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/hadamard.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Hadamard Matrices and Fast Hadamard Multiplication — hadamard","text":"","code":"H <- hadamard(3) v <- 1:8 H %*% v #> [,1] #> [1,] 36 #> [2,] -4 #> [3,] -8 #> [4,] 0 #> [5,] -16 #> [6,] 0 #> [7,] 0 #> [8,] 0 fhm(v) #> [1] 36 -4 -8 0 -16 0 0 0 data(yeast) # RY-coding dat_ry <- acgt2ry(yeast) #> Warning: Found unknown characters (not supplied in levels). Deleted sites with unknown states. fit2 <- h2st(dat_ry) lento(fit2) # write.nexus.splits(fit2, file = \"test.nxs\") # read this file into Spectronet or SplitsTree to show the network fit4 <- h4st(yeast) old.par <- par(no.readonly = TRUE) par(mfrow=c(3,1)) lento(fit4[[1]], main=\"Transversion\") lento(fit4[[2]], main=\"Transition 1\") lento(fit4[[3]], main=\"Transition 2\") par(old.par)"},{"path":"https://klausvigo.github.io/phangorn/reference/identify.networx.html","id":null,"dir":"Reference","previous_headings":"","what":"Identify splits in a network — identify.networx","title":"Identify splits in a network — identify.networx","text":"identify.networx reads position graphics pointer mouse button pressed. returns split belonging edge closest pointer. network must plotted beforehand.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/identify.networx.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Identify splits in a network — identify.networx","text":"","code":"# S3 method for networx identify(x, quiet = FALSE, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/identify.networx.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Identify splits in a network — identify.networx","text":"x object class networx quiet logical controlling whether print message inviting user click tree. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/identify.networx.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Identify splits in a network — identify.networx","text":"identify.networx returns splits object.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/identify.networx.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Identify splits in a network — identify.networx","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/identify.networx.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Identify splits in a network — identify.networx","text":"","code":"if (FALSE) { data(yeast) dm <- dist.ml(yeast) nnet <- neighborNet(dm) plot(nnet) identify(nnet) # click close to an edge }"},{"path":"https://klausvigo.github.io/phangorn/reference/image.phyDat.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot of a Sequence Alignment — image.phyDat","title":"Plot of a Sequence Alignment — image.phyDat","text":"function plots image alignment sequences.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/image.phyDat.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot of a Sequence Alignment — image.phyDat","text":"","code":"# S3 method for phyDat image(x, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/image.phyDat.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot of a Sequence Alignment — image.phyDat","text":"x object containing sequences, object class phyDat. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/image.phyDat.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Plot of a Sequence Alignment — image.phyDat","text":"wrapper using image.DNAbin image.AAbin.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/lento.html","id":null,"dir":"Reference","previous_headings":"","what":"Lento plot — lento","title":"Lento plot — lento","text":"lento plot represents support conflict splits/bipartitions.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/lento.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Lento plot — lento","text":"","code":"lento(obj, xlim = NULL, ylim = NULL, main = \"Lento plot\", sub = NULL, xlab = NULL, ylab = NULL, bipart = TRUE, trivial = FALSE, col = rgb(0, 0, 0, 0.5), ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/lento.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Lento plot — lento","text":"obj object class phylo, multiPhylo splits xlim graphical parameter ylim graphical parameter main graphical parameter sub graphical parameter xlab graphical parameter ylab graphical parameter bipart plot bipartition information. trivial logical, whether present trivial splits (default FALSE). col color splits / bipartition. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/lento.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Lento plot — lento","text":"lento returns plot.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/lento.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Lento plot — lento","text":"Lento, G.M., Hickson, R.E., Chambers G.K., Penny, D. (1995) Use spectral analysis test hypotheses origin pinninpeds. Molecular Biology Evolution, 12, 28-52.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/lento.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Lento plot — lento","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/lento.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Lento plot — lento","text":"","code":"data(yeast) yeast.ry <- acgt2ry(yeast) #> Warning: Found unknown characters (not supplied in levels). Deleted sites with unknown states. splits.h <- h2st(yeast.ry) lento(splits.h, trivial=TRUE)"},{"path":"https://klausvigo.github.io/phangorn/reference/mast.html","id":null,"dir":"Reference","previous_headings":"","what":"Maximum agreement subtree — mast","title":"Maximum agreement subtree — mast","text":"mast computes maximum agreement subtree (MAST).","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/mast.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Maximum agreement subtree — mast","text":"","code":"mast(x, y, tree = TRUE, rooted = TRUE)"},{"path":"https://klausvigo.github.io/phangorn/reference/mast.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Maximum agreement subtree — mast","text":"x tree, .e. object class phylo. y tree, .e. object class phylo. tree logical, TRUE returns tree wise tip labels maximum agreement subtree. rooted logical TRUE treats trees rooted otherwise unrooted.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/mast.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Maximum agreement subtree — mast","text":"mast returns vector tip labels MAST.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/mast.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Maximum agreement subtree — mast","text":"code derived code example Valiente (2009). version unrooted trees much slower.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/mast.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Maximum agreement subtree — mast","text":"G. Valiente (2009). Combinatorial Pattern Matching Algorithms Computational Biology using Perl R. Taylor & Francis/CRC Press","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/mast.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Maximum agreement subtree — mast","text":"Klaus Schliep klaus.schliep@gmail.com based code Gabriel Valiente","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/mast.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Maximum agreement subtree — mast","text":"","code":"tree1 <- rtree(100) tree2 <- rSPR(tree1, 5) tips <- mast(tree1, tree2)"},{"path":"https://klausvigo.github.io/phangorn/reference/maxCladeCred.html","id":null,"dir":"Reference","previous_headings":"","what":"Maximum clade credibility tree — maxCladeCred","title":"Maximum clade credibility tree — maxCladeCred","text":"maxCladeCred computes maximum clade credibility tree sample trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/maxCladeCred.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Maximum clade credibility tree — maxCladeCred","text":"","code":"maxCladeCred(x, tree = TRUE, part = NULL, rooted = TRUE) mcc(x, tree = TRUE, part = NULL, rooted = TRUE) allCompat(x, rooted = FALSE)"},{"path":"https://klausvigo.github.io/phangorn/reference/maxCladeCred.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Maximum clade credibility tree — maxCladeCred","text":"x x object class multiPhylo phylo tree logical indicating whether return tree clade credibility (default) clade credibility score trees. part list partitions returned prop.part rooted logical, FALSE tree highest maximum bipartition credibility returned.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/maxCladeCred.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Maximum clade credibility tree — maxCladeCred","text":"tree (object class phylo) highest clade credibility numeric vector clade credibilities tree.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/maxCladeCred.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Maximum clade credibility tree — maxCladeCred","text":"far just best tree returned. annotations transformations edge length performed. list partition provided clade credibility computed trees x. allCompat returns 50% majority rule consensus tree added compatible splits similar option allcompat MrBayes.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/maxCladeCred.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Maximum clade credibility tree — maxCladeCred","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/maxCladeCred.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Maximum clade credibility tree — maxCladeCred","text":"","code":"data(Laurasiatherian) set.seed(42) bs <- bootstrap.phyDat(Laurasiatherian, FUN = function(x)upgma(dist.hamming(x)), bs=100) strict_consensus <- consensus(bs) majority_consensus <- consensus(bs, p=.5) all_compat <- allCompat(bs) max_clade_cred <- maxCladeCred(bs) old.par <- par(no.readonly = TRUE) par(mfrow = c(2,2), mar = c(1,4,1,1)) plot(strict_consensus, main=\"Strict consensus tree\") plot(majority_consensus, main=\"Majority consensus tree\") plot(all_compat, main=\"Majority consensus tree with compatible splits\") plot(max_clade_cred, main=\"Maximum clade credibility tree\") par(old.par) # compute clade credibility for trees given a prop.part object pp <- prop.part(bs) tree <- rNNI(bs[[1]], 20) maxCladeCred(c(tree, bs[[1]]), tree=FALSE, part = pp) #> [1] -Inf -36.10917 # first value likely be -Inf"},{"path":"https://klausvigo.github.io/phangorn/reference/midpoint.html","id":null,"dir":"Reference","previous_headings":"","what":"Tree manipulation — getRoot","title":"Tree manipulation — getRoot","text":"midpoint performs midpoint rooting tree. pruneTree produces consensus tree. pruneTree prunes back tree produces consensus tree, trees already containing nodelabels. assumes nodelabels numerical character allows conversion numerical, uses .numeric(.character(tree$node.labels)) convert . midpoint default assumes node labels contain support values. works support values computed splits, recomputed clades. keep..tip takes list tips /node labels returns tree pruned . node label, prunes descendants node internal node becomes tip.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/midpoint.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Tree manipulation — getRoot","text":"","code":"getRoot(tree) midpoint(tree, node.labels = \"support\", ...) # S3 method for phylo midpoint(tree, node.labels = \"support\", ...) # S3 method for multiPhylo midpoint(tree, node.labels = \"support\", ...) pruneTree(tree, ..., FUN = \">=\") keep.as.tip(tree, labels)"},{"path":"https://klausvigo.github.io/phangorn/reference/midpoint.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Tree manipulation — getRoot","text":"tree object class phylo. node.labels node labels 'support' values (edges), 'label' labels get 'deleted'? ... arguments, passed methods. FUN function evaluated nodelabels, result must logical. labels tip node labels keep tip labels tree","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/midpoint.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Tree manipulation — getRoot","text":"pruneTree midpoint tree. getRoot returns root node.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/midpoint.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Tree manipulation — getRoot","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/midpoint.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Tree manipulation — getRoot","text":"","code":"tree <- rtree(10, rooted = FALSE) tree$node.label <- c(\"\", round(runif(tree$Nnode-1), digits=3)) tree2 <- midpoint(tree) tree3 <- pruneTree(tree, .5) old.par <- par(no.readonly = TRUE) par(mfrow = c(3,1)) plot(tree, show.node.label=TRUE) plot(tree2, show.node.label=TRUE) plot(tree3, show.node.label=TRUE) par(old.par)"},{"path":"https://klausvigo.github.io/phangorn/reference/mites.html","id":null,"dir":"Reference","previous_headings":"","what":"Morphological characters of Mites (Schäffer et al. 2010) — mites","title":"Morphological characters of Mites (Schäffer et al. 2010) — mites","text":"Matrix morphological characters character states 12 species mites. See vignette '02_Phylogenetic trees morphological data' examples import morphological data.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/mites.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Morphological characters of Mites (Schäffer et al. 2010) — mites","text":"Schäffer, S., Pfingstl, T., Koblmüller, S., Winkler, K. ., Sturmbauer, C., & Krisper, G. (2010). Phylogenetic analysis European Scutovertex mites (Acari, Oribatida, Scutoverticidae) reveals paraphyly cryptic diversity: molecular genetic morphological approach. Molecular Phylogenetics Evolution, 55(2), 677--688.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/mites.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Morphological characters of Mites (Schäffer et al. 2010) — mites","text":"","code":"data(mites) mites #> 12 sequences with 79 character and 53 different site patterns. #> The states are 0 1 2 3 4 5 6 7 # infer all maximum parsimony trees trees <- bab(mites) # For larger data sets you might use pratchet instead bab # trees <- pratchet(mites, minit=200, trace=0, all=TRUE) # build consensus tree ctree <- root(consensus(trees, p=.5), outgroup = \"C._cymba\", resolve.root=TRUE, edgelabel=TRUE) plotBS(ctree, trees) cnet <- consensusNet(trees) plot(cnet)"},{"path":"https://klausvigo.github.io/phangorn/reference/modelTest.html","id":null,"dir":"Reference","previous_headings":"","what":"ModelTest — modelTest","title":"ModelTest — modelTest","text":"Comparison different nucleotide amino acid substitution models","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/modelTest.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"ModelTest — modelTest","text":"","code":"modelTest(object, tree = NULL, model = NULL, G = TRUE, I = TRUE, FREQ = FALSE, k = 4, control = pml.control(epsilon = 1e-08, maxit = 10, trace = 1), multicore = FALSE, mc.cores = NULL)"},{"path":"https://klausvigo.github.io/phangorn/reference/modelTest.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"ModelTest — modelTest","text":"object object class phyDat pml tree phylogenetic tree. model vector containing substitution models compare \"\" test available models G logical, TRUE (default) (discrete) Gamma model tested logical, TRUE (default) invariant sites tested FREQ logical, FALSE (default) TRUE amino acid frequencies estimated. k number rate classes control list parameters controlling fitting process. multicore logical, whether models estimated parallel. mc.cores number cores use, .e. many child processes run simultaneously. Must least one, parallelization requires least two cores.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/modelTest.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"ModelTest — modelTest","text":"data.frame containing log-likelihood, number estimated parameters, AIC, AICc BIC tested models. data.frame attributes \"env\" environment contains trees, data calls allow get estimated models, e.g. starting point analysis (see example).","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/modelTest.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"ModelTest — modelTest","text":"modelTest estimates specified models given tree data. mclapply available, computations done parallel. modelTest runs model one thread. may work within GUI interface work Windows.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/modelTest.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"ModelTest — modelTest","text":"Burnham, K. P. Anderson, D. R (2002) Model selection multimodel inference: practical information-theoretic approach. 2nd ed. Springer, New York Posada, D. Crandall, K.. (1998) MODELTEST: testing model DNA substitution. Bioinformatics 14(9): 817-818 Posada, D. (2008) jModelTest: Phylogenetic Model Averaging. Molecular Biology Evolution 25: 1253-1256 Darriba D., Taboada G.L., Doallo R Posada D. (2011) ProtTest 3: fast selection best-fit models protein evolution. . Bioinformatics 27: 1164-1165","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/modelTest.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"ModelTest — modelTest","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/modelTest.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"ModelTest — modelTest","text":"","code":"if (FALSE) { example(NJ) (mT <- modelTest(Laurasiatherian, tree, model = c(\"JC\", \"F81\", \"K80\", \"HKY\", \"SYM\", \"GTR\"))) # extract best model (best_model <- as.pml(mT)) data(chloroplast) (mTAA <- modelTest(chloroplast, model=c(\"JTT\", \"WAG\", \"LG\"))) # test all available amino acid models (mTAA_all <- modelTest(chloroplast, model=\"all\", multicore=TRUE, mc.cores=2)) }"},{"path":"https://klausvigo.github.io/phangorn/reference/neighborNet.html","id":null,"dir":"Reference","previous_headings":"","what":"Computes a neighborNet from a distance matrix — neighborNet","title":"Computes a neighborNet from a distance matrix — neighborNet","text":"Computes neighborNet, .e. object class networx distance matrix.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/neighborNet.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Computes a neighborNet from a distance matrix — neighborNet","text":"","code":"neighborNet(x, ord = NULL)"},{"path":"https://klausvigo.github.io/phangorn/reference/neighborNet.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Computes a neighborNet from a distance matrix — neighborNet","text":"x distance matrix. ord circular ordering.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/neighborNet.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Computes a neighborNet from a distance matrix — neighborNet","text":"neighborNet returns object class networx.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/neighborNet.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Computes a neighborNet from a distance matrix — neighborNet","text":"neighborNet still experimental. cyclic ordering sometimes differ SplitsTree implementation, ord argument can used enforce certain circular ordering.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/neighborNet.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Computes a neighborNet from a distance matrix — neighborNet","text":"Bryant, D. & Moulton, V. (2004) Neighbor-Net: Agglomerative Method Construction Phylogenetic Networks. Molecular Biology Evolution, 2004, 21, 255-265","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/neighborNet.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Computes a neighborNet from a distance matrix — neighborNet","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/neighborNet.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Computes a neighborNet from a distance matrix — neighborNet","text":"","code":"data(yeast) dm <- dist.ml(yeast) nnet <- neighborNet(dm) plot(nnet)"},{"path":"https://klausvigo.github.io/phangorn/reference/nni.html","id":null,"dir":"Reference","previous_headings":"","what":"Tree rearrangements. — nni","title":"Tree rearrangements. — nni","text":"nni returns list trees one nearest neighbor interchange away. rNNI rSPR two methods simulate random trees specified number rearrangement apart input tree. methods assume input tree bifurcating. methods may useful simulation studies.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/nni.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Tree rearrangements. — nni","text":"","code":"nni(tree) rNNI(tree, moves = 1, n = length(moves)) rSPR(tree, moves = 1, n = length(moves), k = NULL)"},{"path":"https://klausvigo.github.io/phangorn/reference/nni.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Tree rearrangements. — nni","text":"tree phylogenetic tree, object class phylo. moves Number tree rearrangements transformed tree. Can vector n Number trees simulated. k defined just SPR distance k performed.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/nni.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Tree rearrangements. — nni","text":"object class multiPhylo.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/nni.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Tree rearrangements. — nni","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/nni.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Tree rearrangements. — nni","text":"","code":"tree <- rtree(20, rooted = FALSE) trees1 <- nni(tree) trees2 <- rSPR(tree, 2, 10)"},{"path":"https://klausvigo.github.io/phangorn/reference/parsimony.html","id":null,"dir":"Reference","previous_headings":"","what":"Parsimony tree. — acctran","title":"Parsimony tree. — acctran","text":"pratchet implements parsimony ratchet (Nixon, 1999) preferred way search best parsimony tree. small number taxa function bab can used compute parsimonious trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/parsimony.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Parsimony tree. — acctran","text":"","code":"acctran(tree, data) fitch(tree, data, site = \"pscore\") random.addition(data, tree = NULL, method = \"fitch\") parsimony(tree, data, method = \"fitch\", cost = NULL, site = \"pscore\") optim.parsimony(tree, data, method = \"fitch\", cost = NULL, trace = 1, rearrangements = \"SPR\", ...) pratchet(data, start = NULL, method = \"fitch\", maxit = 1000, minit = 100, k = 10, trace = 1, all = FALSE, rearrangements = \"SPR\", perturbation = \"ratchet\", ...) sankoff(tree, data, cost = NULL, site = \"pscore\")"},{"path":"https://klausvigo.github.io/phangorn/reference/parsimony.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Parsimony tree. — acctran","text":"tree tree start nni search . data object class phyDat containing sequences. site return either 'pscore' 'site' wise parsimony scores. method one 'fitch' 'sankoff'. cost cost matrix transitions two states. trace defines much information printed optimization. rearrangements SPR NNI rearrangements. ... arguments passed methods (e.g. model=\"sankoff\" cost matrix). start starting tree can supplied. maxit maximum number iterations ratchet. minit minimum number iterations ratchet. k number rounds ratchet stopped, improvement. return equally good trees just one . perturbation whether use \"ratchet\", \"random_addition\" \"stochastic\" (nni) shuffling tree.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/parsimony.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Parsimony tree. — acctran","text":"parsimony returns maximum parsimony score (pscore). optim.parsimony returns tree NNI rearrangements. pratchet returns tree list trees containing best tree(s) found search. acctran returns tree edge length according ACCTRAN criterion.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/parsimony.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Parsimony tree. — acctran","text":"parsimony returns parsimony score tree using either sankoff fitch algorithm. optim.parsimony optimizes topology using either Nearest Neighbor Interchange (NNI) rearrangements sub tree pruning regrafting (SPR) used inside pratchet. random.addition can used produce starting trees option argument perturbation pratchet. \"SPR\" rearrangements far available \"fitch\" method, \"sankoff\" uses \"NNI\". \"fitch\" algorithm works correct binary trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/parsimony.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Parsimony tree. — acctran","text":"Felsenstein, J. (2004). Inferring Phylogenies. Sinauer Associates, Sunderland. Nixon, K. (1999) Parsimony Ratchet, New Method Rapid Parsimony Analysis. Cladistics 15, 407-414","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/parsimony.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Parsimony tree. — acctran","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/parsimony.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Parsimony tree. — acctran","text":"","code":"set.seed(3) data(Laurasiatherian) dm <- dist.hamming(Laurasiatherian) tree <- NJ(dm) parsimony(tree, Laurasiatherian) #> [1] 9796 treeRA <- random.addition(Laurasiatherian) treeSPR <- optim.parsimony(tree, Laurasiatherian) #> Final p-score 9715 after 11 nni operations # lower number of iterations for the example (to run less than 5 seconds), # keep default values (maxit, minit, k) or increase them for real life # analyses. treeRatchet <- pratchet(Laurasiatherian, start=tree, maxit=100, minit=5, k=5, trace=0) # assign edge length (number of substitutions) treeRatchet <- acctran(treeRatchet, Laurasiatherian) # remove edges of length 0 treeRatchet <- di2multi(treeRatchet) plot(midpoint(treeRatchet)) add.scale.bar(0,0, length=100) parsimony(c(tree,treeSPR, treeRatchet), Laurasiatherian) #> [1] 9796 9715 9713"},{"path":"https://klausvigo.github.io/phangorn/reference/phangorn-internal.html","id":null,"dir":"Reference","previous_headings":"","what":"Internal phangorn Functions — threshStateC","title":"Internal phangorn Functions — threshStateC","text":"Internal phangorn functions.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/phangorn-internal.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Internal phangorn Functions — threshStateC","text":"","code":"threshStateC(x, thresholds) candidate_tree(x, method = c(\"unrooted\", \"ultrametric\", \"tipdated\"), eps = 1e-08, tip.dates = NULL, ...) hash(x, ...) coords(obj, dim = \"3D\") map_duplicates(x, dist = length(x) < 500, ...) pmlPen(object, lambda, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/phangorn-package.html","id":null,"dir":"Reference","previous_headings":"","what":"phangorn: Phylogenetic Reconstruction and Analysis — phangorn-package","title":"phangorn: Phylogenetic Reconstruction and Analysis — phangorn-package","text":"Allows estimation phylogenetic trees networks using Maximum Likelihood, Maximum Parsimony, distance methods Hadamard conjugation (Schliep 2011). Offers methods tree comparison, model selection visualization phylogenetic networks described Schliep et al. (2017).","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/phangorn-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"phangorn: Phylogenetic Reconstruction and Analysis — phangorn-package","text":"Maintainer: Klaus Schliep klaus.schliep@gmail.com (ORCID) Authors: Emmanuel Paradis (ORCID) Leonardo de Oliveira Martins (ORCID) Alastair Potts Iris Bardel-Kahr (ORCID) contributors: Tim W. White [contributor] Cyrill Stachniss [contributor] Michelle Kendall m.kendall@imperial.ac.uk [contributor] Keren Halabi [contributor] Richel Bilderbeek [contributor] Kristin Winchell [contributor] Liam Revell [contributor] Mike Gilchrist [contributor] Jeremy Beaulieu [contributor] Brian O'Meara [contributor] Long Qu [contributor] Joseph Brown (ORCID) [contributor] Santiago Claramunt (ORCID) [contributor]","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/phyDat.html","id":null,"dir":"Reference","previous_headings":"","what":"Generic functions for class phyDat — print.phyDat","title":"Generic functions for class phyDat — print.phyDat","text":"functions help manipulate alignments class phyDat.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/phyDat.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generic functions for class phyDat — print.phyDat","text":"","code":"# S3 method for phyDat print(x, ...) # S3 method for phyDat subset(x, subset, select, site.pattern = TRUE, ...) # S3 method for phyDat [(x, i, j, ..., drop = FALSE) # S3 method for phyDat unique(x, incomparables = FALSE, identical = TRUE, ...) removeUndeterminedSites(x, ...) removeAmbiguousSites(x) allSitePattern(n, levels = NULL, names = NULL, type = \"DNA\", code = 1)"},{"path":"https://klausvigo.github.io/phangorn/reference/phyDat.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generic functions for class phyDat — print.phyDat","text":"x object containing sequences. ... arguments passed methods. subset subset taxa. select subset characters. site.pattern select site pattern sites (see details). , j indices rows /columns select drop. may numeric, logical, character (way standard R objects). drop compatibility generic (unused). incomparables compatibility unique. identical TRUE (default) sequences identical, FALSE sequences considered duplicates distance sequences zero (happens frequently ambiguous sites). n Number sequences. levels Level attributes. names Names sequences. type Type sequences (\"DNA\", \"AA\" \"USER\"). code ncbi genetic code number translation. default standard genetic code used.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/phyDat.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generic functions for class phyDat — print.phyDat","text":"functions return object class phyDat.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/phyDat.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Generic functions for class phyDat — print.phyDat","text":"allSitePattern generates possible site patterns can useful simulation studies. details see vignette AdvancedFeatures. generic function c can used combine sequences unique get unique sequences unique haplotypes. phyDat stores identical columns alignment keeps index original positions. saves memory especially computations usually need done site pattern. example matrix x example 8 columns, column 1 2 also 3 5 identical. phyDat object y 6 site pattern. argument site.pattern=FALSE indexing behaves like original matrix x. site.pattern=TRUE can useful inside functions.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/phyDat.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Generic functions for class phyDat — print.phyDat","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/phyDat.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Generic functions for class phyDat — print.phyDat","text":"","code":"data(Laurasiatherian) class(Laurasiatherian) #> [1] \"phyDat\" Laurasiatherian #> 47 sequences with 3179 character and 1605 different site patterns. #> The states are a c g t # base frequencies baseFreq(Laurasiatherian) #> a c g t #> 0.3321866 0.1990791 0.2040652 0.2646691 # subsetting phyDat objects # the first 5 sequences subset(Laurasiatherian, subset=1:5) #> 5 sequences with 3179 character and 1605 different site patterns. #> The states are a c g t # the first 5 characters subset(Laurasiatherian, select=1:5, site.pattern = FALSE) #> 47 sequences with 5 character and 5 different site patterns. #> The states are a c g t # subsetting with [] Laurasiatherian[1:5, 1:20] #> 5 sequences with 20 character and 17 different site patterns. #> The states are a c g t # short for subset(Laurasiatherian, subset=1:5, select=1:20, site.pattern = FALSE) #> 5 sequences with 20 character and 17 different site patterns. #> The states are a c g t # the first 5 site patterns (often more than 5 characters) subset(Laurasiatherian, select=1:5, site.pattern = TRUE) #> 47 sequences with 454 character and 5 different site patterns. #> The states are a c g t x <- matrix(c(\"a\", \"a\", \"c\", \"g\", \"c\", \"t\", \"a\", \"g\", \"a\", \"a\", \"c\", \"g\", \"c\", \"t\", \"a\", \"g\", \"a\", \"a\", \"c\", \"c\", \"c\", \"t\", \"t\", \"g\"), nrow=3, byrow = TRUE, dimnames = list(c(\"t1\", \"t2\", \"t3\"), 1:8)) (y <- phyDat(x)) #> 3 sequences with 8 character and 6 different site patterns. #> The states are a c g t subset(y, 1:2) #> 2 sequences with 8 character and 6 different site patterns. #> The states are a c g t subset(y, 1:2, compress=TRUE) #> 2 sequences with 8 character and 4 different site patterns. #> The states are a c g t subset(y, select=1:3, site.pattern = FALSE) |> as.character() #> [,1] [,2] [,3] #> t1 \"a\" \"a\" \"c\" #> t2 \"a\" \"a\" \"c\" #> t3 \"a\" \"a\" \"c\" subset(y, select=1:3, site.pattern = TRUE) |> as.character() #> [,1] [,2] [,3] [,4] [,5] #> t1 \"a\" \"a\" \"c\" \"c\" \"g\" #> t2 \"a\" \"a\" \"c\" \"c\" \"g\" #> t3 \"a\" \"a\" \"c\" \"c\" \"c\" y[,1:3] # same as subset(y, select=1:3, site.pattern = FALSE) #> 3 sequences with 3 character and 2 different site patterns. #> The states are a c g t # Compute all possible site patterns # for nucleotides there $4 ^ (number of tips)$ patterns allSitePattern(5) #> 5 sequences with 1024 character and 1024 different site patterns. #> The states are a c g t"},{"path":"https://klausvigo.github.io/phangorn/reference/plot.networx.html","id":null,"dir":"Reference","previous_headings":"","what":"plot phylogenetic networks — plot.networx","title":"plot phylogenetic networks — plot.networx","text":"far parameters behave rgl \"3D\" basic graphic \"2D\" device.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plot.networx.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"plot phylogenetic networks — plot.networx","text":"","code":"# S3 method for networx plot(x, type = \"equal angle\", use.edge.length = TRUE, show.tip.label = TRUE, show.edge.label = FALSE, edge.label = NULL, show.node.label = FALSE, node.label = NULL, show.nodes = FALSE, tip.color = \"black\", edge.color = \"black\", edge.width = 3, edge.lty = 1, split.color = NULL, split.width = NULL, split.lty = NULL, font = 3, cex = par(\"cex\"), cex.node.label = cex, cex.edge.label = cex, col.node.label = tip.color, col.edge.label = tip.color, font.node.label = font, font.edge.label = font, underscore = FALSE, angle = 0, digits = 3, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/plot.networx.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"plot phylogenetic networks — plot.networx","text":"x object class \"networx\" type \"3D\" plot using rgl \"equal angle\" \"2D\" normal device. use.edge.length logical indicating whether use edge weights network draw branches (default) . show.tip.label logical indicating whether show tip labels graph (defaults TRUE, .e. labels shown). show.edge.label logical indicating whether show tip labels graph. edge.label additional vector edge labels (normally needed). show.node.label logical indicating whether show node labels (see example). node.label additional vector node labels (normally needed). show.nodes logical indicating whether show nodes (see example). tip.color colors used tip labels. edge.color colors used draw edges. edge.width width used draw edges. edge.lty vector line types. split.color colors used draw edges. split.width width used draw edges. split.lty vector line types. font integer specifying type font labels: 1 (plain text), 2 (bold), 3 (italic, default), 4 (bold italic). cex numeric value giving factor scaling labels. cex.node.label numeric value giving factor scaling node labels. cex.edge.label numeric value giving factor scaling edge labels. col.node.label colors used node labels. col.edge.label colors used edge labels. font.node.label font used node labels. font.edge.label font used edge labels. underscore logical specifying whether underscores tip labels written spaces (default) left (TRUE). angle rotate plot. digits edge labels numerical positive integer indicating many significant digits used. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plot.networx.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"plot phylogenetic networks — plot.networx","text":"Often easier safer supply vectors graphical parameters splits (e.g. splits.color) edges. overwrite values edge.color.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plot.networx.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"plot phylogenetic networks — plot.networx","text":"internal representation likely change.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plot.networx.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"plot phylogenetic networks — plot.networx","text":"Dress, .W.M. Huson, D.H. (2004) Constructing Splits Graphs IEEE/ACM Transactions Computational Biology Bioinformatics (TCBB), 1(3), 109--115 Schliep, K., Potts, . J., Morrison, D. . Grimm, G. W. (2017), Intertwining phylogenetic trees networks. Methods Ecol Evol. 8, 1212--1220. doi:10.1111/2041-210X.12760","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/plot.networx.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"plot phylogenetic networks — plot.networx","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plot.networx.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"plot phylogenetic networks — plot.networx","text":"","code":"set.seed(1) tree1 <- rtree(20, rooted=FALSE) sp <- as.splits(rNNI(tree1, n=10)) net <- as.networx(sp) plot(net) if (FALSE) { # also see example in consensusNet example(consensusNet) }"},{"path":"https://klausvigo.github.io/phangorn/reference/plot.pml.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot phylogeny of a pml object — plot.pml","title":"Plot phylogeny of a pml object — plot.pml","text":"plot.pml wrapper around plot.phylo different default values unrooted, ultrametric tip dated phylogenies.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plot.pml.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot phylogeny of a pml object — plot.pml","text":"","code":"# S3 method for pml plot(x, type = \"phylogram\", direction = \"rightwards\", ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/plot.pml.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot phylogeny of a pml object — plot.pml","text":"x object class pml phyDat. type character string specifying type phylogeny drawn; must one \"phylogram\" (default), \"cladogram\", \"fan\", \"unrooted\", \"radial\", \"tidy\", unambiguous abbreviation . direction character string specifying direction tree. Four values possible: \"rightwards\" (default), \"leftwards\", \"upwards\", \"downwards\". ... parameters passed plot.phylo.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/plot.pml.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plot phylogeny of a pml object — plot.pml","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plot.pml.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot phylogeny of a pml object — plot.pml","text":"","code":"fdir <- system.file(\"extdata/trees\", package = \"phangorn\") tmp <- read.csv(file.path(fdir,\"H3N2_NA_20.csv\")) H3N2 <- read.phyDat(file.path(fdir,\"H3N2_NA_20.fasta\"), format=\"fasta\") dates <- setNames(tmp$numdate_given, tmp$name) fit_td <- pml_bb(H3N2, model=\"JC\", method=\"tipdated\", tip.dates=dates, rearrangement=\"none\", control = pml.control(trace = 0)) plot(fit_td, show.tip.label = FALSE) # Same as: # root_time <- max(dates) - max(node.depth.edgelength(fit_td$tree)) # plot(fit_td$tree, show.tip.label = FALSE) # axisPhylo(root.time = root_time, backward = FALSE) plot(fit_td, show.tip.label = FALSE, direction=\"up\") fit_unrooted <- pml_bb(H3N2, model=\"JC\", rearrangement=\"none\", control = pml.control(trace = 0)) plot(fit_unrooted, cex=.5)"},{"path":"https://klausvigo.github.io/phangorn/reference/plotAnc.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot ancestral character on a tree — plotAnc","title":"Plot ancestral character on a tree — plotAnc","text":"plotAnc plots phylogeny adds character nodes. Either takes output ancestral.pars ancestral.pml alignment node labels tree match constructed sequences alignment.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plotAnc.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot ancestral character on a tree — plotAnc","text":"","code":"plotAnc(tree, data, i = 1, site.pattern = FALSE, col = NULL, cex.pie = 0.5, pos = \"bottomright\", scheme = NULL, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/plotAnc.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot ancestral character on a tree — plotAnc","text":"tree tree, .e. object class pml data object class phyDat ancestral. plots -th site data. site.pattern logical, plot -th site pattern -th site col vector containing colors possible states. cex.pie numeric defining size pie graphs. pos character string defining position legend. scheme predefined color scheme. amino acid options \"Ape_AA\", \"Zappo_AA\", \"Clustal\", \"Polarity\" \"Transmembrane_tendency\", nucleotides \"Ape_NT\" \"RY_NT\". Names can abbreviated. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plotAnc.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Plot ancestral character on a tree — plotAnc","text":"details see vignette(\"Ancestral\").","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/plotAnc.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plot ancestral character on a tree — plotAnc","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plotAnc.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot ancestral character on a tree — plotAnc","text":"","code":"example(NJ) #> #> NJ> data(Laurasiatherian) #> #> NJ> dm <- dist.ml(Laurasiatherian) #> #> NJ> tree <- NJ(dm) #> #> NJ> plot(tree) # generate node labels to ensure plotting will work tree <- makeNodeLabel(tree) anc.p <- ancestral.pars(tree, Laurasiatherian) # plot the third character plotAnc(tree, anc.p, 3) data(chloroplast) tree <- pratchet(chloroplast, maxit=10, trace=0) tree <- makeNodeLabel(tree) anc.ch <- ancestral.pars(tree, chloroplast) image(chloroplast[, 1:25]) #> NULL plotAnc(tree, anc.ch, 21, scheme=\"Ape_AA\") plotAnc(tree, anc.ch, 21, scheme=\"Clustal\")"},{"path":"https://klausvigo.github.io/phangorn/reference/plotBS.html","id":null,"dir":"Reference","previous_headings":"","what":"Plotting trees with bootstrap values — plotBS","title":"Plotting trees with bootstrap values — plotBS","text":"plotBS plots phylogenetic tree bootstrap values assigned (internal) edges. can also used assign bootstrap values phylogenetic tree. add_support adds support values plot.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plotBS.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plotting trees with bootstrap values — plotBS","text":"","code":"plotBS(tree, trees, type = \"phylogram\", method = \"FBP\", bs.col = \"black\", bs.adj = NULL, digits = 3, p = 0, frame = \"none\", tol = 1e-06, sep = \"/\", ...) add_support(tree, trees, method = \"FBP\", tol = 1e-08, scale = TRUE, frame = \"none\", digits = 3, sep = \"/\", ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/plotBS.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plotting trees with bootstrap values — plotBS","text":"tree tree edges bootstrap values plotted. trees list trees (object class \"multiPhylo\"). type type tree plot, one \"phylogram\", \"cladogram\", \"fan\", \"unrooted\", \"radial\" \"none\". type \"none\" tree returned bootstrap values assigned node labels. method either \"FBP\" classical bootstrap (default), \"TBE\" (transfer bootstrap) \"MCC\" assigning clade credibilities. case \"MCC\" trees need rooted. bs.col color bootstrap support labels. bs.adj one two numeric values specifying horizontal vertical justification bootstrap labels. digits integer indicating number decimal places. p plot support values higher percentage number (default 0). frame character string specifying kind frame printed around bootstrap values. must one \"none\" (default), \"rect\" \"circle\". tol numeric value giving tolerance consider branch length significantly greater zero. sep seperator different methods. ... parameters used plot.phylo. scale return ratio percentage.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plotBS.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plotting trees with bootstrap values — plotBS","text":"plotBS returns silently tree, .e. object class phylo bootstrap values node labels. argument trees optional supplied labels supplied node.label slot used.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plotBS.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Plotting trees with bootstrap values — plotBS","text":"functions can either assign classical Felsenstein’s bootstrap proportions (FBP) (Felsenstein (1985), Hendy & Penny (1985)) transfer bootstrap expectation (TBE) Lemoine et al. (2018). Using option type==\"n\" just assigns bootstrap values return tree without plotting .","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plotBS.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Plotting trees with bootstrap values — plotBS","text":"Felsenstein J. (1985) Confidence limits phylogenies. approach using bootstrap. Evolution 39, 783--791 Lemoine, F., Entfellner, J. B. D., Wilkinson, E., Correia, D., Felipe, M. D., De Oliveira, T., & Gascuel, O. (2018). Renewing Felsenstein’s phylogenetic bootstrap era big data. Nature, 556(7702), 452--456. Penny D. Hendy M.D. (1985) Testing methods evolutionary tree construction. Cladistics 1, 266--278 Penny D. Hendy M.D. (1986) Estimating reliability evolutionary trees. Molecular Biology Evolution 3, 403--417","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/plotBS.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plotting trees with bootstrap values — plotBS","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/plotBS.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plotting trees with bootstrap values — plotBS","text":"","code":"fdir <- system.file(\"extdata/trees\", package = \"phangorn\") # RAxML best-known tree with bipartition support (from previous analysis) raxml.tree <- read.tree(file.path(fdir,\"RAxML_bipartitions.woodmouse\")) # RAxML bootstrap trees (from previous analysis) raxml.bootstrap <- read.tree(file.path(fdir,\"RAxML_bootstrap.woodmouse\")) par(mfrow=c(1,2)) plotBS(raxml.tree, raxml.bootstrap, \"p\") plotBS(raxml.tree, raxml.bootstrap, \"p\", \"TBE\")"},{"path":"https://klausvigo.github.io/phangorn/reference/pml.control.html","id":null,"dir":"Reference","previous_headings":"","what":"Auxiliary for Controlling Fitting — pml.control","title":"Auxiliary for Controlling Fitting — pml.control","text":"Auxiliary functions providing optim.pml, pml_bb fitting. Use construct control ratchet.par argument.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.control.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Auxiliary for Controlling Fitting — pml.control","text":"","code":"pml.control(epsilon = 1e-08, maxit = 10, trace = 1, tau = 1e-08, statefreq = \"empirical\") ratchet.control(iter = 20L, maxit = 200L, minit = 100L, prop = 1/2, rell = TRUE, bs = 1000L)"},{"path":"https://klausvigo.github.io/phangorn/reference/pml.control.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Auxiliary for Controlling Fitting — pml.control","text":"epsilon Stop criterion optimization (see details). maxit Maximum number iterations (see details). trace Show output optimization (see details). tau minimal edge length. statefreq take \"empirical\" \"estimate\" state frequencies. iter Number iterations stop change. minit Minimum number iterations. prop used rearrangement=stochastic. many NNI moves added tree proportion number taxa.´ rell logical, TRUE approximate bootstraping similar Minh et al. (2013) performed. bs number approximate bootstrap samples.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.control.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Auxiliary for Controlling Fitting — pml.control","text":"list components named arguments controlling fitting process.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.control.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Auxiliary for Controlling Fitting — pml.control","text":"pml.control controls fitting process. epsilon maxit defined outer loop, affects pmlCluster, pmlPart pmlMix. epsilon absolute difference , instead defined (logLik(k)-logLik(k+1))/logLik(k+1). seems good compromise work reasonably well small large trees alignments. trace set zero put shown, functions called internally trace decreased one, higher trace produces feedback. can useful figure long run take debugging. statefreq controls base/state frequencies optimized empirical estimates taken, applies. nucleotide models (e.g. JC, SYM) equal base frequencies amino acid models precomputed state frequencies used, '+F' specified. tau might exactly zero duplicated sequences alignment observed. case analysis performed unique sequences duplicated taxa added tree zero edge length. may lead multifurcations three identical sequences. optimization good practice prune away edges length tau using di2multi. See also Janzen et al. (2021).","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.control.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Auxiliary for Controlling Fitting — pml.control","text":"Minh, B. Q., Nguyen, M. . T., & von Haeseler, . (2013). Ultrafast approximation phylogenetic bootstrap. Molecular biology evolution, 30(5), 1188-1195. Janzen, T., Bokma, F.,Etienne, R. S. (2021) Nucleotide Substitutions Speciation may Explain Substitution Rate Variation, Systematic Biology, 71(5), 1244–1254.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/pml.control.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Auxiliary for Controlling Fitting — pml.control","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.control.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Auxiliary for Controlling Fitting — pml.control","text":"","code":"pml.control() #> $epsilon #> [1] 1e-08 #> #> $maxit #> [1] 10 #> #> $trace #> [1] 1 #> #> $tau #> [1] 1e-08 #> #> $statefreq #> [1] \"empirical\" #> pml.control(maxit=25) #> $epsilon #> [1] 1e-08 #> #> $maxit #> [1] 25 #> #> $trace #> [1] 1 #> #> $tau #> [1] 1e-08 #> #> $statefreq #> [1] \"empirical\" #>"},{"path":"https://klausvigo.github.io/phangorn/reference/pml.fit.html","id":null,"dir":"Reference","previous_headings":"","what":"Internal maximum likelihood functions. — lli","title":"Internal maximum likelihood functions. — lli","text":"functions internally used likelihood computations pml optim.pml.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.fit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Internal maximum likelihood functions. — lli","text":"","code":"lli(data, tree = NULL, ...) edQt(Q = c(1, 1, 1, 1, 1, 1), bf = c(0.25, 0.25, 0.25, 0.25)) pml.free() pml.init(data, k = 1L) pml.fit(tree, data, bf = rep(1/length(levels), length(levels)), shape = 1, k = 1, Q = rep(1, length(levels) * (length(levels) - 1)/2), levels = attr(data, \"levels\"), inv = 0, rate = 1, g = NULL, w = NULL, eig = NULL, INV = NULL, ll.0 = NULL, llMix = NULL, wMix = 0, ..., site = FALSE, ASC = FALSE, site.rate = \"gamma\")"},{"path":"https://klausvigo.github.io/phangorn/reference/pml.fit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Internal maximum likelihood functions. — lli","text":"data alignment, object class phyDat. tree phylogenetic tree, object class phylo. ... arguments passed methods. Q vector containing lower triangular part rate matrix. bf Base frequencies. k Number intervals discrete gamma distribution. shape Shape parameter gamma distribution. levels alphabet used e.g. c(\"\", \"c\", \"g\", \"t\") DNA inv Proportion invariable sites. rate Rate. g vector quantiles (default NULL) w vector probabilities (default NULL) eig Eigenvalue decomposition Q INV Sparse representation invariant sites ll.0 default NULL llMix default NULL wMix default NULL site return log-likelihood vector sitewise likelihood values ASC ascertainment bias correction (ASC), allows estimate models like Lewis' Mkv. site.rate Indicates type gamma distribution use. Options \"gamma\" approach Yang 1994 (default), \"gamma_quadrature\" Laguerre quadrature approach Felsenstein 2001 \"freerate\".","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.fit.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Internal maximum likelihood functions. — lli","text":"pml.fit returns log-likelihood.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.fit.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Internal maximum likelihood functions. — lli","text":"functions exported used different packages far package coalescentMCMC, intended end user. functions call C code far less forgiving import expect pml.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.fit.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Internal maximum likelihood functions. — lli","text":"Felsenstein, J. (1981) Evolutionary trees DNA sequences: maximum likelihood approach. Journal Molecular Evolution, 17, 368--376.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/pml.fit.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Internal maximum likelihood functions. — lli","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.html","id":null,"dir":"Reference","previous_headings":"","what":"Likelihood of a tree. — as.pml","title":"Likelihood of a tree. — as.pml","text":"pml computes likelihood phylogenetic tree given sequence alignment model. optim.pml optimizes different model parameters. user-friendly interface see pml_bb.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Likelihood of a tree. — as.pml","text":"","code":"as.pml(x, ...) pml(tree, data, bf = NULL, Q = NULL, inv = 0, k = 1, shape = 1, rate = 1, model = NULL, site.rate = \"gamma\", ASC = FALSE, ...) optim.pml(object, optNni = FALSE, optBf = FALSE, optQ = FALSE, optInv = FALSE, optGamma = FALSE, optEdge = TRUE, optRate = FALSE, optRooted = FALSE, control = pml.control(), model = NULL, rearrangement = ifelse(optNni, \"NNI\", \"none\"), subs = NULL, ratchet.par = ratchet.control(), ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/pml.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Likelihood of a tree. — as.pml","text":"x far object class modelTest. ... arguments passed methods. tree phylogenetic tree, object class phylo. data alignment, object class phyDat. bf Base frequencies (see details). Q vector containing lower triangular part rate matrix. inv Proportion invariable sites. k Number intervals discrete gamma distribution. shape Shape parameter gamma distribution. rate Rate. model allows choose amino acid models nucleotide model, see details. site.rate Indicates type gamma distribution use. Options \"gamma\" approach Yang 1994 (default), \"\"gamma_quadrature\"\" Laguerre quadrature approach Felsenstein 2001 \"freerate\". ASC ascertainment bias correction (ASC), allows estimate models like Lewis' Mkv. object object class pml. optNni Logical value indicating whether topology gets optimized (NNI). optBf Logical value indicating whether base frequencies gets optimized. optQ Logical value indicating whether rate matrix gets optimized. optInv Logical value indicating whether proportion variable size gets optimized. optGamma Logical value indicating whether gamma rate parameter gets optimized. optEdge Logical value indicating edge lengths gets optimized. optRate Logical value indicating overall rate gets optimized. optRooted Logical value indicating edge lengths rooted tree get optimized. control list parameters controlling fitting process. rearrangement type tree tree rearrangements perform, one \"none\", \"NNI\", \"stochastic\" \"ratchet\" subs (integer) vector length Q specify optimization Q ratchet.par search parameter stochastic search","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Likelihood of a tree. — as.pml","text":"pml optim.pml return list class pml, useful computations like tree phylogenetic tree. data alignment. logLik Log-likelihood tree. siteLik Site log-likelihoods. weight Weight site patterns.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Likelihood of a tree. — as.pml","text":"Base frequencies pml can supplied different ways. amino acid usually defined specifying model, argument bf need specified. Otherwise bf=NULL, state given equal probability. can numeric vector given frequencies. Last least bf can string \"equal\", \"empirical\" codon models additionally \"F3x4\". topology search uses nearest neighbor interchange (NNI) implementation similar phyML. option model pml used amino acid models. option model defines nucleotide model getting optimized, models included modeltest can chosen. Setting option (e.g. \"K81\" \"GTR\") overrules options optBf optQ. overview estimate different phylogenetic models pml: Via model optim.pml following nucleotide models can specified: JC, F81, K80, HKY, TrNe, TrN, TPM1, K81, TPM1u, TPM2, TPM2u, TPM3, TPM3u, TIM1e, TIM1, TIM2e, TIM2, TIM3e, TIM3, TVMe, TVM, SYM GTR. models specified Posada (2008). far 17 amino acid models supported (\"WAG\", \"JTT\", \"LG\", \"Dayhoff\", \"cpREV\", \"mtmam\", \"mtArt\", \"MtZoa\", \"mtREV24\", \"VT\",\"RtREV\", \"HIVw\", \"HIVb\", \"FLU\", \"Blosum62\", \"Dayhoff_DCMut\" \"JTT_DCMut\") additionally rate matrices amino acid frequencies can supplied. also possible estimate codon models (e.g. YN98), details see also chapter vignette(\"phangorn-specials\"). option 'optRooted' set TRUE edge lengths rooted tree optimized. tree rooted now ultrametric! Optimising rooted trees generally much slower. rearrangement set stochastic stochastic search algorithm similar Nguyen et al. (2015). ratchet likelihood ratchet Vos (2003). helps often find better tree topologies, especially larger trees.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Likelihood of a tree. — as.pml","text":"Felsenstein, J. (1981) Evolutionary trees DNA sequences: maximum likelihood approach. Journal Molecular Evolution, 17, 368--376. Felsenstein, J. (2004). Inferring Phylogenies. Sinauer Associates, Sunderland. Yang, Z. (2006). Computational Molecular evolution. Oxford University Press, Oxford. Adachi, J., P. J. Waddell, W. Martin, M. Hasegawa (2000) Plastid genome phylogeny model amino acid substitution proteins encoded chloroplast DNA. Journal Molecular Evolution, 50, 348--358 Rota-Stabelli, O., Z. Yang, M. Telford. (2009) MtZoa: general mitochondrial amino acid substitutions model animal evolutionary studies. Mol. Phyl. Evol, 52(1), 268--72 Whelan, S. Goldman, N. (2001) general empirical model protein evolution derived multiple protein families using maximum-likelihood approach. Molecular Biology Evolution, 18, 691--699 Le, S.Q. Gascuel, O. (2008) LG: Improved, General Amino-Acid Replacement Matrix Molecular Biology Evolution, 25(7), 1307--1320 Yang, Z., R. Nielsen, M. Hasegawa (1998) Models amino acid substitution applications Mitochondrial protein evolution. Molecular Biology Evolution, 15, 1600--1611 Abascal, F., D. Posada, R. Zardoya (2007) MtArt: new Model amino acid replacement Arthropoda. Molecular Biology Evolution, 24, 1--5 Kosiol, C, Goldman, N (2005) Different versions Dayhoff rate matrix - Molecular Biology Evolution, 22, 193--199 L.-T. Nguyen, H.. Schmidt, . von Haeseler, B.Q. Minh (2015) IQ-TREE: fast effective stochastic algorithm estimating maximum likelihood phylogenies. Molecular Biology Evolution, 32, 268--274. Vos, R. . (2003) Accelerated Likelihood Surface Exploration: Likelihood Ratchet. Systematic Biology, 52(3), 368--373 Yang, Z., R. Nielsen (1998) Synonymous nonsynonymous rate variation nuclear genes mammals. Journal Molecular Evolution, 46, 409-418. Lewis, P.O. (2001) likelihood approach estimating phylogeny discrete morphological character data. Systematic Biology 50, 913--925.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/pml.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Likelihood of a tree. — as.pml","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Likelihood of a tree. — as.pml","text":"","code":"example(NJ) #> #> NJ> data(Laurasiatherian) #> #> NJ> dm <- dist.ml(Laurasiatherian) #> #> NJ> tree <- NJ(dm) #> #> NJ> plot(tree) # Jukes-Cantor (starting tree from NJ) fitJC <- pml(tree, Laurasiatherian) # optimize edge length parameter fitJC <- optim.pml(fitJC) #> optimize edge weights: -54808.83 --> -54230.41 #> optimize edge weights: -54230.41 --> -54230.41 #> optimize edge weights: -54230.41 --> -54230.41 fitJC #> model: JC #> loglikelihood: -54230.41 #> unconstrained loglikelihood: -17300.92 #> #> Rate matrix: #> a c g t #> a 0 1 1 1 #> c 1 0 1 1 #> g 1 1 0 1 #> t 1 1 1 0 #> #> Base frequencies: #> a c g t #> 0.25 0.25 0.25 0.25 if (FALSE) { # search for a better tree using NNI rearrangements fitJC <- optim.pml(fitJC, optNni=TRUE) fitJC plot(fitJC$tree) # JC + Gamma + I - model fitJC_GI <- update(fitJC, k=4, inv=.2) # optimize shape parameter + proportion of invariant sites fitJC_GI <- optim.pml(fitJC_GI, optGamma=TRUE, optInv=TRUE) # GTR + Gamma + I - model fitGTR <- optim.pml(fitJC_GI, rearrangement = \"stochastic\", optGamma=TRUE, optInv=TRUE, model=\"GTR\") } # 2-state data (RY-coded) dat <- acgt2ry(Laurasiatherian) fit2ST <- pml(tree, dat) fit2ST <- optim.pml(fit2ST,optNni=TRUE) #> optimize edge weights: -19996.09 --> -17092.17 #> optimize edge weights: -17092.17 --> -17092.17 #> optimize topology: -17092.17 --> -17024.81 NNI moves: 10 #> optimize edge weights: -17024.81 --> -17024.81 #> optimize topology: -17024.81 --> -17024.81 NNI moves: 0 fit2ST #> model: Mk #> loglikelihood: -17024.81 #> unconstrained loglikelihood: -8702.769 #> #> Rate matrix: #> r y #> r 0 1 #> y 1 0 #> #> Base frequencies: #> r y #> 0.5 0.5 # show some of the methods available for class pml methods(class=\"pml\") #> [1] AICc BIC anova logLik plot print simSeq update vcov #> see '?methods' for accessing help and source code"},{"path":"https://klausvigo.github.io/phangorn/reference/pmlCluster.html","id":null,"dir":"Reference","previous_headings":"","what":"Stochastic Partitioning — pmlCluster","title":"Stochastic Partitioning — pmlCluster","text":"Stochastic Partitioning genes p cluster.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlCluster.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Stochastic Partitioning — pmlCluster","text":"","code":"pmlCluster(formula, fit, weight, p = 1:5, part = NULL, nrep = 10, control = pml.control(epsilon = 1e-08, maxit = 10, trace = 1), ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/pmlCluster.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Stochastic Partitioning — pmlCluster","text":"formula formula object (see details). fit object class pml. weight weight matrix frequency site patterns genes. p number clusters. part starting partition, otherwise random partition generated. nrep number replicates p. control list parameters controlling fitting process. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlCluster.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Stochastic Partitioning — pmlCluster","text":"pmlCluster returns list elements logLik log-likelihood fit trees list trees optimization. fits fits final partitions","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlCluster.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Stochastic Partitioning — pmlCluster","text":"formula object allows specify parameter get optimized. formula generally form edge + bf + Q ~ rate + shape + ...{}, left side parameters get optimized cluster, right parameter optimized specific cluster. parameters available \"nni\", \"bf\", \"Q\", \"inv\", \"shape\", \"edge\", \"rate\". parameter can used formula. also restriction combinations parameters can get used. \"rate\" available right side. \"rate\" specified left hand side \"edge\" specified (either side), \"rate\" specified right hand side follows directly edge .","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlCluster.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Stochastic Partitioning — pmlCluster","text":"K. P. Schliep (2009). Applications statistical phylogenetics (PhD Thesis) Lanfear, R., Calcott, B., Ho, S.Y.W. Guindon, S. (2012) PartitionFinder: Combined Selection Partitioning Schemes Substitution Models Phylogenetic Analyses. Molecular Biology Evolution, 29(6), 1695-1701","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/pmlCluster.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Stochastic Partitioning — pmlCluster","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlCluster.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Stochastic Partitioning — pmlCluster","text":"","code":"if (FALSE) { data(yeast) dm <- dist.logDet(yeast) tree <- NJ(dm) fit <- pml(tree,yeast) fit <- optim.pml(fit) weight <- xtabs(~ index+genes,attr(yeast, \"index\")) set.seed(1) sp <- pmlCluster(edge~rate, fit, weight, p=1:4) sp SH.test(sp) }"},{"path":"https://klausvigo.github.io/phangorn/reference/pmlMix.html","id":null,"dir":"Reference","previous_headings":"","what":"Phylogenetic mixture model — pmlMix","title":"Phylogenetic mixture model — pmlMix","text":"Phylogenetic mixture model.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlMix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Phylogenetic mixture model — pmlMix","text":"","code":"pmlMix(formula, fit, m = 2, omega = rep(1/m, m), control = pml.control(epsilon = 1e-08, maxit = 20, trace = 1), ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/pmlMix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Phylogenetic mixture model — pmlMix","text":"formula formula object (see details). fit object class pml. m number mixtures. omega mixing weights. control list parameters controlling fitting process. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlMix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Phylogenetic mixture model — pmlMix","text":"pmlMix returns list elements logLik log-likelihood fit omega mixing weights. fits fits final mixtures.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlMix.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Phylogenetic mixture model — pmlMix","text":"formula object allows specify parameter get optimized. formula generally form edge + bf + Q ~ rate + shape + ...{}, left side parameters get optimized mixtures, right parameter optimized specific mixture. parameters available \"nni\", \"bf\", \"Q\", \"inv\", \"shape\", \"edge\", \"rate\". parameters can used formula. \"rate\" \"nni\" available right side formula. hand parameters invariable sites allowed left-hand side. convergence algorithm slow likely algorithm can get stuck local optima.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/pmlMix.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Phylogenetic mixture model — pmlMix","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlMix.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Phylogenetic mixture model — pmlMix","text":"","code":"if (FALSE) { X <- allSitePattern(5) tree <- read.tree(text = \"((t1:0.3,t2:0.3):0.1,(t3:0.3,t4:0.3):0.1,t5:0.5);\") fit <- pml(tree,X, k=4) weights <- 1000*exp(fit$siteLik) attr(X, \"weight\") <- weights fit1 <- update(fit, data=X, k=1) fit2 <- update(fit, data=X) (fitMixture <- pmlMix(edge~rate, fit1 , m=4)) (fit2 <- optim.pml(fit2, optGamma=TRUE)) data(Laurasiatherian) dm <- dist.logDet(Laurasiatherian) tree <- NJ(dm) fit <- pml(tree, Laurasiatherian) fit <- optim.pml(fit) fit2 <- update(fit, k=4) fit2 <- optim.pml(fit2, optGamma=TRUE) fitMix <- pmlMix(edge ~ rate, fit, m=4) fitMix # # simulation of mixture models # X <- allSitePattern(5) tree1 <- read.tree(text = \"((t1:0.1,t2:0.5):0.1,(t3:0.1,t4:0.5):0.1,t5:0.5);\") tree2 <- read.tree(text = \"((t1:0.5,t2:0.1):0.1,(t3:0.5,t4:0.1):0.1,t5:0.5);\") tree1 <- unroot(tree1) tree2 <- unroot(tree2) fit1 <- pml(tree1,X) fit2 <- pml(tree2,X) weights <- 2000*exp(fit1$siteLik) + 1000*exp(fit2$siteLik) attr(X, \"weight\") <- weights fit1 <- pml(tree1, X) fit2 <- optim.pml(fit1) logLik(fit2) AIC(fit2, k=log(3000)) fitMixEdge <- pmlMix( ~ edge, fit1, m=2) logLik(fitMixEdge) AIC(fitMixEdge, k=log(3000)) fit.p <- pmlPen(fitMixEdge, .25) logLik(fit.p) AIC(fit.p, k=log(3000)) }"},{"path":"https://klausvigo.github.io/phangorn/reference/pmlPart.html","id":null,"dir":"Reference","previous_headings":"","what":"Partition model. — multiphyDat2pmlPart","title":"Partition model. — multiphyDat2pmlPart","text":"Model estimate phylogenies partitioned data.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlPart.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Partition model. — multiphyDat2pmlPart","text":"","code":"multiphyDat2pmlPart(x, method = \"unrooted\", tip.dates = NULL, ...) pmlPart2multiPhylo(x) pmlPart(formula, object, control = pml.control(epsilon = 1e-08, maxit = 10, trace = 1), model = NULL, method = \"unrooted\", ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/pmlPart.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Partition model. — multiphyDat2pmlPart","text":"x object class pmlPart method One \"unrooted\", \"ultrametric\" \"tiplabeled\". unrooted properly supported right now. tip.dates named vector sampling times associated tips/sequences. Leave empty estimating tip dated phylogenies. ... arguments passed methods. formula formula object (see details). object object class pml list objects class pml . control list parameters controlling fitting process. model vector containing models containing model partition.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlPart.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Partition model. — multiphyDat2pmlPart","text":"kcluster returns list elements logLik log-likelihood fit trees list trees optimization. object object class \"pml\" \"pmlPart\"","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlPart.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Partition model. — multiphyDat2pmlPart","text":"formula object allows specify parameter get optimized. formula generally form edge + bf + Q ~ rate + shape + ...{}, left side parameters get optimized partitions, right parameter optimized specific partition. parameters available \"nni\", \"bf\", \"Q\", \"inv\", \"shape\", \"edge\", \"rate\". parameters can used formula. \"rate\" available right side formula. partitions different edge weights, topology, pmlPen can try find parsimonious models (see example). pmlPart2multiPhylo convenience function extract trees pmlPart object.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/pmlPart.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Partition model. — multiphyDat2pmlPart","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pmlPart.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Partition model. — multiphyDat2pmlPart","text":"","code":"data(yeast) dm <- dist.logDet(yeast) tree <- NJ(dm) fit <- pml(tree,yeast) fits <- optim.pml(fit) #> optimize edge weights: -737063 --> -734615.7 #> optimize edge weights: -734615.7 --> -734615.7 #> optimize edge weights: -734615.7 --> -734615.7 weight=xtabs(~ index+genes,attr(yeast, \"index\"))[,1:10] sp <- pmlPart(edge ~ rate + inv, fits, weight=weight) #> loglik: -61530.38 --> -59834.29 #> loglik: -59834.29 --> -59833.25 #> loglik: -59833.25 --> -59833.25 #> loglik: -59833.25 --> -59833.25 sp #> #> loglikelihood: -59833.25 #> #> loglikelihood of partitions: #> -9827.497 -8159.024 -8056.932 -5237.677 -3809.733 -5503.277 -2752.2 -7200.052 -4632.422 -4654.434 #> AIC: 119730.5 BIC: 119963.5 #> #> Proportion of invariant sites: 0.4000129 0.3179377 0.4746756 0.4490179 0.4122204 0.2912345 0.2419215 0.3097905 0.4794272 0.3884177 #> #> Rates: #> 1.108058 0.9656371 0.8692633 0.8928421 0.8097406 1.266635 1.296066 1.212794 0.8425937 0.8275096 #> #> Base frequencies: #> [,1] [,2] [,3] [,4] #> [1,] 0.25 0.25 0.25 0.25 #> #> Rate matrix: #> [,1] [,2] [,3] [,4] [,5] [,6] #> [1,] 1 1 1 1 1 1 if (FALSE) { sp2 <- pmlPart(~ edge + inv, fits, weight=weight) sp2 AIC(sp2) sp3 <- pmlPen(sp2, lambda = 2) AIC(sp3) }"},{"path":"https://klausvigo.github.io/phangorn/reference/pml_bb.html","id":null,"dir":"Reference","previous_headings":"","what":"Likelihood of a tree. — pml_bb","title":"Likelihood of a tree. — pml_bb","text":"pml_bb pml black box infers phylogenetic tree infers tree using maximum likelihood (ML).","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml_bb.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Likelihood of a tree. — pml_bb","text":"","code":"pml_bb(x, model = NULL, rearrangement = \"stochastic\", method = \"unrooted\", start = NULL, tip.dates = NULL, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/pml_bb.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Likelihood of a tree. — pml_bb","text":"x alignment class (either class phyDat, DNAbin AAbin) object class modelTest. model string providing model (e.g. \"GTR+G(4)+\"). necessary modelTest object supplied. rearrangement Type tree tree rearrangements perform, one \"none\", \"NNI\", \"stochastic\" \"ratchet\" method One \"unrooted\", \"ultrametric\" \"tiplabeled\". start starting tree can supplied. tip.dates named vector sampling times associated tips / sequences. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml_bb.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Likelihood of a tree. — pml_bb","text":"pml_bb returns object class pml.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml_bb.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Likelihood of a tree. — pml_bb","text":"pml_bb convenience function combining pml optim.pml. tree supplied, function generate starting tree. modelTest object supplied model chosen according BIC. tip.dates named vector sampling times, time unit, time increasing toward present. example, may units “days since study start” “years since 10,000 BCE”, “millions years ago”. model takes string tries extract model. modelTest object best BIC model chosen default. string contain substitution model (e.g. JC, GTR, WAG) can additional term \"+\" invariant sites, \"+G(4)\" discrete gamma model, \"+R(4)\" free rate model. case amino acid models term \"+F\" estimating amino acid frequencies. Whether nucleotide frequencies estimated defined pml.control. Currently experimental likely change.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/pml_bb.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Likelihood of a tree. — pml_bb","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/pml_bb.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Likelihood of a tree. — pml_bb","text":"","code":"data(woodmouse) tmp <- pml_bb(woodmouse, model=\"HKY+I\", rearrangement=\"NNI\") #> optimize edge weights: -1815.673 --> -1811.422 #> optimize rate matrix: -1811.422 --> -1759.688 #> optimize invariant sites: -1759.688 --> -1745.146 #> optimize edge weights: -1745.146 --> -1744.974 #> optimize topology: -1744.974 --> -1744.2 NNI moves: 1 #> optimize rate matrix: -1744.2 --> -1744.187 #> optimize invariant sites: -1744.187 --> -1744.186 #> optimize edge weights: -1744.186 --> -1744.186 #> optimize topology: -1744.186 --> -1744.186 NNI moves: 0 #> optimize rate matrix: -1744.186 --> -1744.186 #> optimize invariant sites: -1744.186 --> -1744.186 #> optimize edge weights: -1744.186 --> -1744.186 if (FALSE) { data(Laurasiatherian) mt <- modelTest(Laurasiatherian) fit <- pml_bb(mt) # estimate free rate model with 2 rate categories fit_HKY_R2 <- pml_bb(woodmouse, model=\"HKY+R(2)\") }"},{"path":"https://klausvigo.github.io/phangorn/reference/read.aa.html","id":null,"dir":"Reference","previous_headings":"","what":"Read Amino Acid Sequences in a File — read.aa","title":"Read Amino Acid Sequences in a File — read.aa","text":"function reads amino acid sequences file, returns matrix list DNA sequences names taxa read file row names.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.aa.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Read Amino Acid Sequences in a File — read.aa","text":"","code":"read.aa(file, format = \"interleaved\", skip = 0, nlines = 0, comment.char = \"#\", seq.names = NULL)"},{"path":"https://klausvigo.github.io/phangorn/reference/read.aa.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Read Amino Acid Sequences in a File — read.aa","text":"file file name specified either variable mode character, double-quoted string. format character string specifying format DNA sequences. Three choices possible: \"interleaved\", \"sequential\", \"fasta\", unambiguous abbreviation . skip number lines input file skip beginning read data. nlines number lines read (default file read end). comment.char single character, remaining line character ignored. seq.names names give sequence; default names read file used.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.aa.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Read Amino Acid Sequences in a File — read.aa","text":"matrix amino acid sequences.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.aa.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Read Amino Acid Sequences in a File — read.aa","text":"https://en.wikipedia.org/wiki/FASTA_format Felsenstein, J. (1993) Phylip (Phylogeny Inference Package) version 3.5c. Department Genetics, University Washington. https://phylipweb.github.io/phylip/","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/read.aa.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Read Amino Acid Sequences in a File — read.aa","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.partitions.html","id":null,"dir":"Reference","previous_headings":"","what":"Function to import partitioned data from nexus files — read.nexus.partitions","title":"Function to import partitioned data from nexus files — read.nexus.partitions","text":"read.nexus.partitions reads sequences NEXUS format splits data according charsets givb SETS block.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.partitions.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function to import partitioned data from nexus files — read.nexus.partitions","text":"","code":"read.nexus.partitions(file, return = \"list\", ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.partitions.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function to import partitioned data from nexus files — read.nexus.partitions","text":"file file name. return either returns list element 'phyDat' object. ... arguments passed methods.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.partitions.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Function to import partitioned data from nexus files — read.nexus.partitions","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.partitions.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Function to import partitioned data from nexus files — read.nexus.partitions","text":"","code":"tree <- rtree(10) dat <- simSeq(tree, l=24) fcat <- function(..., file = zz) cat(..., file=file, sep=\"\", append=TRUE) zz <- tempfile(pattern=\"file\", tmpdir=tempdir(), fileext=\".nex\") write.phyDat(dat, file=zz, format=\"nexus\") fcat(\"BEGIN SETS;\\n\") fcat(\" Charset codon1 = 1-12/3;\\n\") fcat(\" Charset codon2 = 2-12/3;\\n\") fcat(\" Charset codon3 = 3-12/3;\\n\") fcat(\" Charset range = 16-18;\\n\") fcat(\" Charset range2 = 13-15 19-21;\\n\") fcat(\" Charset singles = 22 23 24;\\n\") fcat(\"END;\\n\") tmp <- read.nexus.partitions(zz) tmp #> $codon1 #> 10 sequences with 4 character and 4 different site patterns. #> The states are a c g t #> #> $codon2 #> 10 sequences with 4 character and 4 different site patterns. #> The states are a c g t #> #> $codon3 #> 10 sequences with 4 character and 4 different site patterns. #> The states are a c g t #> #> $range #> 10 sequences with 3 character and 3 different site patterns. #> The states are a c g t #> #> $range2 #> 10 sequences with 6 character and 6 different site patterns. #> The states are a c g t #> #> $singles #> 10 sequences with 3 character and 3 different site patterns. #> The states are a c g t #> unlink(zz)"},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.splits.html","id":null,"dir":"Reference","previous_headings":"","what":"Function to import and export splits and networks — read.nexus.splits","title":"Function to import and export splits and networks — read.nexus.splits","text":"read.nexus.splits, write.nexus.splits, read.nexus.networx, write.nexus.networx can used import export splits networks nexus format allow exchange object software like SplitsTree. write.splits returns human readable output.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.splits.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function to import and export splits and networks — read.nexus.splits","text":"","code":"read.nexus.splits(file) write.nexus.splits(obj, file = \"\", weights = NULL, taxa = TRUE, append = FALSE) write.nexus.networx(obj, file = \"\", taxa = TRUE, splits = TRUE, append = FALSE) read.nexus.networx(file, splits = TRUE) write.splits(x, file = \"\", zero.print = \".\", one.print = \"|\", print.labels = TRUE, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.splits.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function to import and export splits and networks — read.nexus.splits","text":"file file name. obj object class splits. weights Edge weights. taxa logical. TRUE taxa block added append logical. TRUE nexus blocks added file. splits logical. TRUE nexus blocks added file. x object class splits. zero.print character printed zeros. one.print character printed ones. print.labels logical. TRUE labels printed. ... arguments passed methods. labels names taxa.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.splits.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Function to import and export splits and networks — read.nexus.splits","text":"write.nexus.splits write.nexus.networx write splits networx object read software like SplitsTree. read.nexus.splits read.nexus.networx return splits networx object.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.splits.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Function to import and export splits and networks — read.nexus.splits","text":"read.nexus.splits reads splits block nexus file. assumes different co-variables tab delimited bipartition separated white-space. Comments square brackets ignored.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.splits.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Function to import and export splits and networks — read.nexus.splits","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.nexus.splits.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Function to import and export splits and networks — read.nexus.splits","text":"","code":"(sp <- as.splits(rtree(5))) #> t3 t5 t1 t4 t2 #> [1,] | . . . . #> [2,] . | . . . #> [3,] . . | . . #> [4,] . . . | . #> [5,] . . . . | #> [6,] | | | | | #> [7,] | | | | . #> [8,] | | | . . #> [9,] | | . . . write.nexus.splits(sp) #> #NEXUS #> #> [Splits block for Spectronet or SplitsTree] #> [generated by phangorn 3.0.0.0 ] #> #> BEGIN TAXA; #> \tDIMENSIONS ntax=5; #> \tTAXLABELS t3 t5 t1 t4 t2 ; #> END; #> #> BEGIN SPLITS; #> \tDIMENSIONS ntax=5 nsplits=8; #> \tFORMAT labels=left weights=yes confidences=no intervals=no; #> \tMATRIX #> \t\t1\t0.0651043930556625 \t1, #> \t\t2\t0.65642609493807 \t1 3 4 5, #> \t\t3\t0.137199030257761 \t1 2 4 5, #> \t\t4\t0.59462882950902 \t1 2 3 5, #> \t\t5\t0.902287806617096 \t1 2 3 4, #> \t\t6\t0.699318364728242 \t1 2 3 4, #> \t\t7\t0.525980484671891 \t1 2 3, #> \t\t8\t0.736393740167841 \t1 2, #> \t; #> END; spl <- allCircularSplits(5) plot(as.networx(spl)) write.splits(spl, print.labels = FALSE) #> #> #> |.... #> #> .|... #> #> ..|.. #> #> ...|. #> #> ....| #> #> ||... #> #> .||.. #> #> ..||. #> #> ...|| #> #> |...|"},{"path":"https://klausvigo.github.io/phangorn/reference/read.phyDat.html","id":null,"dir":"Reference","previous_headings":"","what":"Import and export sequence alignments — read.phyDat","title":"Import and export sequence alignments — read.phyDat","text":"functions read write sequence alignments.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.phyDat.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Import and export sequence alignments — read.phyDat","text":"","code":"read.phyDat(file, format = \"phylip\", type = \"DNA\", ...) write.phyDat(x, file, format = \"phylip\", colsep = \"\", nbcol = -1, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/read.phyDat.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Import and export sequence alignments — read.phyDat","text":"file file name specified either variable mode character, double-quoted string. format File format sequence alignment (see details). Several popular formats supported: \"phylip\", \"interleaved\", \"sequential\", \"clustal\", \"fasta\" \"nexus\", unambiguous abbreviation . type Type sequences (\"DNA\", \"AA\", \"CODON\" \"USER\"). ... arguments passed methods. x object class phyDat. colsep character used separate columns (single space default). nbcol numeric specifying number columns per row (-1 default); may negative implying nucleotides printed single line.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.phyDat.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Import and export sequence alignments — read.phyDat","text":"read.phyDat returns object class phyDat, write.phyDat write alignment file.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.phyDat.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Import and export sequence alignments — read.phyDat","text":"write.phyDat calls function write.dna write.nexus.data read.phyDat calls function read.dna, read.aa read.nexus.data, see details . may import data directly read.dna read.nexus.data convert data class phyDat.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.phyDat.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Import and export sequence alignments — read.phyDat","text":"https://www.ncbi.nlm.nih.gov/blast/fasta.shtml Felsenstein, J. (1993) Phylip (Phylogeny Inference Package) version 3.5c. Department Genetics, University Washington. https://phylipweb.github.io/phylip/","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/read.phyDat.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Import and export sequence alignments — read.phyDat","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/read.phyDat.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Import and export sequence alignments — read.phyDat","text":"","code":"fdir <- system.file(\"extdata/trees\", package = \"phangorn\") primates <- read.phyDat(file.path(fdir, \"primates.dna\"), format = \"interleaved\")"},{"path":"https://klausvigo.github.io/phangorn/reference/reexports.html","id":null,"dir":"Reference","previous_headings":"","what":"Objects exported from other packages — reexports","title":"Objects exported from other packages — reexports","text":"objects imported packages. Follow links see documentation. generics glance, tidy","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/simSeq.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate sequences. — simSeq","title":"Simulate sequences. — simSeq","text":"Simulate sequences given evolutionary tree.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/simSeq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate sequences. — simSeq","text":"","code":"simSeq(x, ...) # S3 method for phylo simSeq(x, l = 1000, Q = NULL, bf = NULL, rootseq = NULL, type = \"DNA\", model = NULL, levels = NULL, rate = 1, ancestral = FALSE, code = 1, ...) # S3 method for pml simSeq(x, ancestral = FALSE, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/simSeq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate sequences. — simSeq","text":"x phylogenetic tree tree, .e. object class phylo object class pml. ... arguments passed methods. l length sequence simulate. Q rate matrix. bf Base frequencies. rootseq vector length l containing root sequence. provided, root sequence randomly generated. type Type sequences (\"DNA\", \"AA\", \"CODON\" \"USER\"). model Amino acid model evolution employ, example \"WAG\", \"JTT\", \"Dayhoff\" \"LG\". full list supported models, type phangorn:::.aamodels. Ignored type equal \"AA\". levels character vector different character tokens. Ignored unless type = \"USER\". rate numerical value greater zero giving mutation rate scaler edge lengths. ancestral Logical specifying whether return ancestral sequences. code ncbi genetic code number translation (see details). default standard genetic code used.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/simSeq.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate sequences. — simSeq","text":"simSeq returns object class phyDat.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/simSeq.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate sequences. — simSeq","text":"simSeq generic function simulate sequence alignments along phylogeny. quite flexible can generate DNA, RNA, amino acids, codon, morphological binary sequences. simSeq can take input phylogenetic tree class phylo, pml object; return object class phyDat. also low level version, lacks rate variation, one can combine different alignments rates (see example). rate parameter acts like scaler edge lengths. codon models type=\"CODON\", two additional arguments dnds dN/dS ratio tstv transition transversion ratio can supplied. Defaults: x tree class phylo, sequences generated default Jukes-Cantor DNA model (\"JC\"). bf specified, states treated equally probable. Q specified, uniform rate matrix employed.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/simSeq.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Simulate sequences. — simSeq","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/simSeq.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate sequences. — simSeq","text":"","code":"if (FALSE) { data(Laurasiatherian) tree <- nj(dist.ml(Laurasiatherian)) fit <- pml(tree, Laurasiatherian, k=4) fit <- optim.pml(fit, optNni=TRUE, model=\"GTR\", optGamma=TRUE) data <- simSeq(fit) } tree <- rtree(5) plot(tree) nodelabels() # Example for simple DNA alignment data <- simSeq(tree, l = 10, type=\"DNA\", bf=c(.1,.2,.3,.4), Q=1:6, ancestral=TRUE) as.character(data) #> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] #> t3 \"t\" \"c\" \"a\" \"c\" \"g\" \"a\" \"t\" \"t\" \"g\" \"g\" #> t2 \"t\" \"g\" \"a\" \"t\" \"t\" \"a\" \"g\" \"t\" \"t\" \"g\" #> t5 \"c\" \"a\" \"a\" \"t\" \"g\" \"t\" \"c\" \"c\" \"t\" \"t\" #> t1 \"g\" \"a\" \"g\" \"t\" \"c\" \"c\" \"c\" \"t\" \"t\" \"g\" #> t4 \"t\" \"g\" \"t\" \"g\" \"t\" \"t\" \"g\" \"a\" \"t\" \"t\" #> 6 \"t\" \"g\" \"a\" \"t\" \"g\" \"c\" \"t\" \"g\" \"t\" \"g\" #> 7 \"t\" \"g\" \"a\" \"c\" \"t\" \"a\" \"g\" \"t\" \"t\" \"g\" #> 8 \"c\" \"a\" \"a\" \"t\" \"g\" \"c\" \"c\" \"c\" \"t\" \"t\" #> 9 \"g\" \"a\" \"a\" \"t\" \"g\" \"c\" \"c\" \"t\" \"t\" \"t\" # Example to simulate discrete Gamma rate variation rates <- discrete.gamma(1,4) data1 <- simSeq(tree, l = 100, type=\"AA\", model=\"WAG\", rate=rates[1]) data2 <- simSeq(tree, l = 100, type=\"AA\", model=\"WAG\", rate=rates[2]) data3 <- simSeq(tree, l = 100, type=\"AA\", model=\"WAG\", rate=rates[3]) data4 <- simSeq(tree, l = 100, type=\"AA\", model=\"WAG\", rate=rates[4]) data <- c(data1,data2, data3, data4) write.phyDat(data, file=\"temp.dat\", format=\"sequential\", nbcol = -1, colsep = \"\") unlink(\"temp.dat\")"},{"path":"https://klausvigo.github.io/phangorn/reference/splitsNetwork.html","id":null,"dir":"Reference","previous_headings":"","what":"Phylogenetic Network — splitsNetwork","title":"Phylogenetic Network — splitsNetwork","text":"splitsNetwork estimates weights splits graph distance matrix.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/splitsNetwork.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Phylogenetic Network — splitsNetwork","text":"","code":"splitsNetwork(dm, splits = NULL, gamma = 0.1, lambda = 1e-06, weight = NULL)"},{"path":"https://klausvigo.github.io/phangorn/reference/splitsNetwork.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Phylogenetic Network — splitsNetwork","text":"dm distance matrix. splits splits object, containing splits consider, otherwise possible splits used gamma penalty value L1 constraint. lambda penalty value L2 constraint. weight vector weights.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/splitsNetwork.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Phylogenetic Network — splitsNetwork","text":"splitsNetwork returns splits object matrix added. first column contains indices splits, second column unconstrained fit without penalty terms third column constrained fit.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/splitsNetwork.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Phylogenetic Network — splitsNetwork","text":"splitsNetwork fits non-negative least-squares phylogenetic networks using L1 (LASSO), L2(ridge regression) constraints. function minimizes penalized least squares $$\\beta = min \\sum(dm - X\\beta)^2 + \\lambda \\|\\beta \\|^2_2 $$ respect $$\\|\\beta \\|_1 <= \\gamma, \\beta >= 0$$ \\(X\\) design matrix constructed designSplits. External edges fitted without L1 L2 constraints.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/splitsNetwork.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Phylogenetic Network — splitsNetwork","text":"Efron, Hastie, Johnstone Tibshirani (2004) Least Angle Regression (discussion) Annals Statistics 32(2), 407--499 K. P. Schliep (2009). Applications statistical phylogenetics (PhD Thesis)","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/splitsNetwork.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Phylogenetic Network — splitsNetwork","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/splitsNetwork.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Phylogenetic Network — splitsNetwork","text":"","code":"data(yeast) dm <- dist.ml(yeast) fit <- splitsNetwork(dm) net <- as.networx(fit) plot(net) write.nexus.splits(fit) #> #NEXUS #> #> [Splits block for Spectronet or SplitsTree] #> [generated by phangorn 3.0.0.0 ] #> #> BEGIN TAXA; #> \tDIMENSIONS ntax=8; #> \tTAXLABELS Scer Spar Smik Skud Sbay Scas Sklu Calb ; #> END; #> #> BEGIN SPLITS; #> \tDIMENSIONS ntax=8 nsplits=11; #> \tFORMAT labels=left weights=yes confidences=no intervals=no; #> \tMATRIX #> \t\t1\t0.0651863191393167 \t1, #> \t\t2\t0.0587181503590668 \t1 3 4 5 6 7 8, #> \t\t3\t0.0696966322251354 \t1 2 4 5 6 7 8, #> \t\t4\t0.00922627016465058 \t1 2 3, #> \t\t5\t0.0814873490413281 \t1 2 3 5 6 7 8, #> \t\t6\t0.00406554599095658 \t1 2 3 4, #> \t\t7\t0.0886778824161061 \t1 2 3 4 6 7 8, #> \t\t8\t0.0867081880409384 \t1 2 3 4 5, #> \t\t9\t0.176465211301922 \t1 2 3 4 5 7 8, #> \t\t10\t0.208305976530992 \t1 2 3 4 5 6 8, #> \t\t11\t0.36479757741116 \t1 2 3 4 5 6 7, #> \t; #> END;"},{"path":"https://klausvigo.github.io/phangorn/reference/superTree.html","id":null,"dir":"Reference","previous_headings":"","what":"Super Tree methods — superTree","title":"Super Tree methods — superTree","text":"function superTree allows estimation supertree set trees using either Matrix representation parsimony, Robinson-Foulds SPR criterion.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/superTree.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Super Tree methods — superTree","text":"","code":"superTree(tree, method = \"MRP\", rooted = FALSE, trace = 0, start = NULL, multicore = FALSE, mc.cores = NULL, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/superTree.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Super Tree methods — superTree","text":"tree object class multiPhylo method argument defining algorithm used optimize tree. Possible \"MRP\", \"RF\", \"SPR\". rooted resulting supertrees rooted. trace defines much information printed optimization. start starting tree can supplied. multicore logical, whether models estimated parallel. mc.cores number cores use, .e. many child processes run simultaneously. ... arguments passed methods.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/superTree.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Super Tree methods — superTree","text":"function returns object class phylo.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/superTree.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Super Tree methods — superTree","text":"function superTree extends function mrp.supertree Liam Revells, artificial adding outgroup root trees. allows root supertree afterwards. functions internally used DensiTree. implementation RF- SPR-supertree basic far assume trees share set taxa.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/superTree.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Super Tree methods — superTree","text":"Baum, B. R., (1992) Combining trees way combining data sets phylogenetic inference, desirability combining gene trees. Taxon, 41, 3-10. Ragan, M. . (1992) Phylogenetic inference based matrix representation trees. Molecular Phylogenetics Evolution, 1, 53-58.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/superTree.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Super Tree methods — superTree","text":"Klaus Schliep klaus.schliep@gmail.com Liam Revell","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/superTree.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Super Tree methods — superTree","text":"","code":"data(Laurasiatherian) set.seed(1) bs <- bootstrap.phyDat(Laurasiatherian, FUN = function(x) upgma(dist.hamming(x)), bs=50) mrp_st <- superTree(bs) plot(mrp_st) if (FALSE) { rf_st <- superTree(bs, method = \"RF\") spr_st <- superTree(bs, method = \"SPR\") }"},{"path":"https://klausvigo.github.io/phangorn/reference/transferBootstrap.html","id":null,"dir":"Reference","previous_headings":"","what":"Transfer Bootstrap — transferBootstrap","title":"Transfer Bootstrap — transferBootstrap","text":"transferBootstrap assigns transfer bootstrap (Lemoine et al. 2018) values (internal) edges.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/transferBootstrap.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transfer Bootstrap — transferBootstrap","text":"","code":"transferBootstrap(tree, BStrees, phylo = TRUE, scale = TRUE)"},{"path":"https://klausvigo.github.io/phangorn/reference/transferBootstrap.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transfer Bootstrap — transferBootstrap","text":"tree tree edges bootstrap values plotted. BStrees list trees (object class \"multiPhylo\"). phylo Logical, return phylogentic tree support value vector bootstrap values. scale scale values.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/transferBootstrap.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transfer Bootstrap — transferBootstrap","text":"plotBS returns silently tree, .e. object class phylo bootstrap values node labels. argument BSTrees optional supplied labels supplied node.label slot used.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/transferBootstrap.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Transfer Bootstrap — transferBootstrap","text":"Lemoine, F., Entfellner, J. B. D., Wilkinson, E., Correia, D., Felipe, M. D., De Oliveira, T., & Gascuel, O. (2018). Renewing Felsenstein’s phylogenetic bootstrap era big data. Nature, 556(7702), 452--456.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/transferBootstrap.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Transfer Bootstrap — transferBootstrap","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/transferBootstrap.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transfer Bootstrap — transferBootstrap","text":"","code":"fdir <- system.file(\"extdata/trees\", package = \"phangorn\") # RAxML best-known tree with bipartition support (from previous analysis) raxml.tree <- read.tree(file.path(fdir,\"RAxML_bipartitions.woodmouse\")) # RAxML bootstrap trees (from previous analysis) raxml.bootstrap <- read.tree(file.path(fdir,\"RAxML_bootstrap.woodmouse\")) tree_tbe <- transferBootstrap(raxml.tree, raxml.bootstrap) par(mfrow=c(1,2)) plotBS(tree_tbe) # same as plotBS(raxml.tree, raxml.bootstrap, \"p\", \"TBE\")"},{"path":"https://klausvigo.github.io/phangorn/reference/treedist.html","id":null,"dir":"Reference","previous_headings":"","what":"Distances between trees — treedist","title":"Distances between trees — treedist","text":"treedist computes different tree distance methods RF.dist Robinson-Foulds symmetric distance. Robinson-Foulds distance depends topology trees. edge weights considered wRF.dist calculates weighted RF distance (Robinson & Foulds 1981). KF.dist calculates branch score distance (Kuhner & Felsenstein 1994). path.dist computes path difference metric described Steel Penny 1993). sprdist computes approximate SPR distance (Oliveira Martins et al. 2008, de Oliveira Martins 2016).","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/treedist.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Distances between trees — treedist","text":"","code":"treedist(tree1, tree2, check.labels = TRUE) sprdist(tree1, tree2) SPR.dist(tree1, tree2 = NULL) RF.dist(tree1, tree2 = NULL, normalize = FALSE, check.labels = TRUE, rooted = FALSE) wRF.dist(tree1, tree2 = NULL, normalize = FALSE, check.labels = TRUE, rooted = FALSE) KF.dist(tree1, tree2 = NULL, check.labels = TRUE, rooted = FALSE) path.dist(tree1, tree2 = NULL, check.labels = TRUE, use.weight = FALSE)"},{"path":"https://klausvigo.github.io/phangorn/reference/treedist.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Distances between trees — treedist","text":"tree1 phylogenetic tree (class phylo) vector trees (object class multiPhylo). See details tree2 phylogenetic tree. check.labels compares labels trees. normalize compute normalized RF-distance, see details. rooted take bipartitions rooted trees account, default unrooting trees. use.weight use edge.length argument just count number edges path (default)","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/treedist.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Distances between trees — treedist","text":"treedist returns vector containing following tree distance methods symmetric.difference symmetric.difference Robinson-Foulds distance branch.score.difference branch.score.difference path.difference path.difference weighted.path.difference weighted.path.difference","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/treedist.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Distances between trees — treedist","text":"Robinson-Foulds distance two trees \\(T_1\\) \\(T_2\\) \\(n\\) tips defined (following notation Steel Penny 1993): $$d(T_1, T_2) = (T_1) + (T_2) - 2v_s(T_1, T_2)$$ \\((T_1)\\) denotes number internal edges \\(v_s(T_1, T_2)\\) denotes number internal splits shared two trees. normalized Robinson-Foulds distance derived dividing \\(d(T_1, T_2)\\) maximal possible distance \\((T_1) + (T_2)\\). trees unrooted binary value \\(2n-6\\). Functions like RF.dist returns Robinson-Foulds distance (Robinson Foulds 1981) either 2 trees computes matrix pairwise distances multiPhylo object given. large number trees distance functions can use lot memory!","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/treedist.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Distances between trees — treedist","text":"de Oliveira Martins L., Leal E., Kishino H. (2008) Phylogenetic Detection Recombination Bayesian Prior Distance Trees. PLoS ONE 3(7). e2651. doi: 10.1371/journal.pone.0002651 de Oliveira Martins L., Mallo D., Posada D. (2016) Bayesian Supertree Model Genome-Wide Species Tree Reconstruction. Syst. Biol. 65(3): 397-416, doi:10.1093/sysbio/syu082 Steel M. . Penny P. (1993) Distributions tree comparison metrics - new results, Syst. Biol., 42(2), 126--141 Kuhner, M. K. Felsenstein, J. (1994) simulation comparison phylogeny algorithms equal unequal evolutionary rates, Molecular Biology Evolution, 11(3), 459--468 D.F. Robinson L.R. Foulds (1981) Comparison phylogenetic trees, Mathematical Biosciences, 53(1), 131--147 D.F. Robinson L.R. Foulds (1979) Comparison weighted labelled trees. Horadam, . F. Wallis, W. D. (Eds.), Combinatorial Mathematics VI: Proceedings Sixth Australian Conference Combinatorial Mathematics, Armidale, Australia, 119--126","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/treedist.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Distances between trees — treedist","text":"Klaus P. Schliep klaus.schliep@gmail.com, Leonardo de Oliveira Martins","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/treedist.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Distances between trees — treedist","text":"","code":"tree1 <- rtree(100, rooted=FALSE) tree2 <- rSPR(tree1, 3) RF.dist(tree1, tree2) #> [1] 36 treedist(tree1, tree2) #> symmetric.difference branch.score.difference path.difference #> 36.000000 2.926122 133.082681 #> quadratic.path.difference #> 66.523380 sprdist(tree1, tree2) #> spr spr_extra rf hdist #> 3 0 36 30 trees <- rSPR(tree1, 1:5) SPR.dist(tree1, trees) #> [1] 1 2 3 4 4"},{"path":"https://klausvigo.github.io/phangorn/reference/upgma.html","id":null,"dir":"Reference","previous_headings":"","what":"UPGMA, WPGMA and sUPGMA — upgma","title":"UPGMA, WPGMA and sUPGMA — upgma","text":"UPGMA WPGMA clustering. UPGMA WPGMA wrapper function around hclust retuning phylo object. UPGMA additionally performs nearest neighbor interchange (NNI) tree rearrangements improve phylogeny (Schliep et al. 2023). supgma perform serial sampled UPGMA similar Drummond Rodrigo (2000) however also performing NNI rearrangements.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/upgma.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"UPGMA, WPGMA and sUPGMA — upgma","text":"","code":"upgma(D, method = \"average\", NNI = FALSE, ...) wpgma(D, method = \"mcquitty\", ...) supgma(D, tip.dates, trace = 0)"},{"path":"https://klausvigo.github.io/phangorn/reference/upgma.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"UPGMA, WPGMA and sUPGMA — upgma","text":"D distance matrix. method agglomeration method used. (unambiguous abbreviation ) one \"ward\", \"single\", \"complete\", \"average\", \"mcquitty\", \"median\" \"centroid\". default \"average\". NNI logical whether make nearest neighbor rearrangements improve tree. Currently available method=\"average\". ... arguments passed methods. tip.dates named vector sampling times associated tips. trace Show output optimization (see details).","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/upgma.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"UPGMA, WPGMA and sUPGMA — upgma","text":"phylogenetic tree class phylo.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/upgma.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"UPGMA, WPGMA and sUPGMA — upgma","text":"Sneath, P. H., & Sokal, R. R. (1973). Numerical taxonomy. principles practice numerical classification. Sokal, R. R., & Michener, C. D. (1958). statistical method evaluating systematic relationships. University Kansas Scientific Bulletin, v. 38. Drummond, ., & Rodrigo, . G. (2000). Reconstructing genealogies serial samples assumption molecular clock using serial-sample UPGMA. Molecular Biology Evolution, 17(12), 1807-1815.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/upgma.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"UPGMA, WPGMA and sUPGMA — upgma","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/upgma.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"UPGMA, WPGMA and sUPGMA — upgma","text":"","code":"data(Laurasiatherian) dm <- dist.ml(Laurasiatherian) tree <- upgma(dm) plot(tree)"},{"path":"https://klausvigo.github.io/phangorn/reference/writeDist.html","id":null,"dir":"Reference","previous_headings":"","what":"Writing and reading distances in phylip and nexus format — writeDist","title":"Writing and reading distances in phylip and nexus format — writeDist","text":"readDist, writeDist write.nexus.dist useful exchange distance matrices phylogenetic programs.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/writeDist.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Writing and reading distances in phylip and nexus format — writeDist","text":"","code":"writeDist(x, file = \"\", format = \"phylip\", ...) write.nexus.dist(x, file = \"\", append = FALSE, upper = FALSE, diag = TRUE, digits = getOption(\"digits\"), taxa = !append) readDist(file, format = \"phylip\") read.nexus.dist(file) # S3 method for dist unique(x, incomparables, ...)"},{"path":"https://klausvigo.github.io/phangorn/reference/writeDist.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Writing and reading distances in phylip and nexus format — writeDist","text":"x dist object. file file name. format file format, default \"phylip\", option far \"nexus\". ... arguments passed methods. append logical. TRUE nexus blocks added file. upper logical value indicating whether upper triangle distance matrix printed. diag logical value indicating whether diagonal distance matrix printed. digits passed format inside write.nexus.dist. taxa logical. TRUE taxa block added. incomparables used far.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/writeDist.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Writing and reading distances in phylip and nexus format — writeDist","text":"object class dist","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/writeDist.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Writing and reading distances in phylip and nexus format — writeDist","text":"Maddison, D. R., Swofford, D. L. Maddison, W. P. (1997) NEXUS: extensible file format systematic information. Systematic Biology, 46, 590--621.","code":""},{"path":[]},{"path":"https://klausvigo.github.io/phangorn/reference/writeDist.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Writing and reading distances in phylip and nexus format — writeDist","text":"Klaus Schliep klaus.schliep@gmail.com","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/writeDist.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Writing and reading distances in phylip and nexus format — writeDist","text":"","code":"data(yeast) dm <- dist.ml(yeast) writeDist(dm) #> 8 #> Scer 0 0.0867845773228219 0.137636794490986 0.161087155171287 0.177174556271658 0.345373797843901 0.381679949757669 0.537234265198945 #> Spar 0.0867845773228219 0 0.123600617669834 0.149284159950583 0.166375240744154 0.343965239042025 0.380724585630441 0.537427661847541 #> Smik 0.137636794490986 0.123600617669834 0 0.155370638334037 0.173395434179653 0.345111830071115 0.381038543686742 0.5378791145715 #> Skud 0.161087155171287 0.149284159950583 0.155370638334037 0 0.156795687803861 0.351411419602885 0.383976534826637 0.548399135029346 #> Sbay 0.177174556271658 0.166375240744154 0.173395434179653 0.156795687803861 0 0.34592156486885 0.3809600418506 0.548845409688793 #> Scas 0.345373797843901 0.343965239042025 0.345111830071115 0.351411419602885 0.34592156486885 0 0.390140463219943 0.52768391927111 #> Sklu 0.381679949757669 0.380724585630441 0.381038543686742 0.383976534826637 0.3809600418506 0.390140463219943 0 0.542132862145574 #> Calb 0.537234265198945 0.537427661847541 0.5378791145715 0.548399135029346 0.548845409688793 0.52768391927111 0.542132862145574 0 write.nexus.dist(dm) #> #NEXUS #> #> BEGIN TAXA; #> \tDIMENSIONS ntax=8; #> \tTAXLABELS Scer Spar Smik Skud Sbay Scas Sklu Calb ; #> END; #> #> BEGIN DISTANCES; #> \tFORMAT TRIANGLE = LOWER; #> \tMatrix #> \tScer 0.00000000 #> \tSpar 0.08678458 0.00000000 #> \tSmik 0.13763679 0.12360062 0.00000000 #> \tSkud 0.16108716 0.14928416 0.15537064 0.00000000 #> \tSbay 0.17717456 0.16637524 0.17339543 0.15679569 0.00000000 #> \tScas 0.34537380 0.34396524 0.34511183 0.35141142 0.34592156 0.00000000 #> \tSklu 0.38167995 0.38072459 0.38103854 0.38397653 0.38096004 0.39014046 0.00000000 #> \tCalb 0.53723427 0.53742766 0.53787911 0.54839914 0.54884541 0.52768392 0.54213286 0.00000000 #> \t; #> END;"},{"path":"https://klausvigo.github.io/phangorn/reference/yeast.html","id":null,"dir":"Reference","previous_headings":"","what":"Yeast alignment (Rokas et al.) — yeast","title":"Yeast alignment (Rokas et al.) — yeast","text":"Alignment 106 genes 8 different species yeast.","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/yeast.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Yeast alignment (Rokas et al.) — yeast","text":"Rokas, ., Williams, B. L., King, N., Carroll, S. B. (2003) Genome-scale approaches resolving incongruence molecular phylogenies. Nature, 425(6960): 798--804","code":""},{"path":"https://klausvigo.github.io/phangorn/reference/yeast.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Yeast alignment (Rokas et al.) — yeast","text":"","code":"data(yeast) str(yeast) #> List of 8 #> $ Scer: int [1:8899] 4 2 4 4 1 4 3 1 3 3 ... #> $ Spar: int [1:8899] 4 2 4 4 3 4 1 1 3 3 ... #> $ Smik: int [1:8899] 4 2 2 4 3 2 1 1 1 3 ... #> $ Skud: int [1:8899] 4 2 4 4 3 2 1 1 3 3 ... #> $ Sbay: int [1:8899] 4 2 4 4 1 2 1 1 3 3 ... #> $ Scas: int [1:8899] 4 2 1 2 1 4 1 1 1 3 ... #> $ Sklu: int [1:8899] 4 2 4 2 4 2 1 1 3 3 ... #> $ Calb: int [1:8899] 4 2 4 2 4 4 3 1 1 3 ... #> - attr(*, \"class\")= chr \"phyDat\" #> - attr(*, \"weight\")= int [1:8899] 16974 7986 25 132 1 78 29 17646 42 12618 ... #> - attr(*, \"nr\")= int 8899 #> - attr(*, \"nc\")= num 4 #> - attr(*, \"index\")='data.frame':\t127026 obs. of 2 variables: #> ..$ index: int [1:127026] 1 2 3 4 1 5 6 1 7 8 ... #> ..$ genes: Factor w/ 106 levels \"YAL053W\",\"YAR007C\",..: 1 1 1 1 1 1 1 1 1 1 ... #> - attr(*, \"levels\")= chr [1:4] \"a\" \"c\" \"g\" \"t\" #> - attr(*, \"allLevels\")= chr [1:18] \"a\" \"c\" \"g\" \"t\" ... #> - attr(*, \"type\")= chr \"DNA\" #> - attr(*, \"contrast\")= num [1:18, 1:4] 1 0 0 0 0 1 1 1 0 0 ... #> ..- attr(*, \"dimnames\")=List of 2 #> .. ..$ : NULL #> .. ..$ : chr [1:4] \"a\" \"c\" \"g\" \"t\""}]

X#5L6434-^J2;N|zO1ug;}H$*H=s9{Kn+ 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 diff --git a/favicon-16x16.png b/favicon-16x16.png index 79d37b3f7481d96c0670a14d1837ad8ca08fc0a7..8d94c3b3bda6a30dba946d567ef40ba0ff3bc2e6 100644 GIT binary patch delta 73 zcmdnZxtnvtEhY|m9t)$Z-JY78A2F#giW(b+7#dlbnpv3|Xd4(<85nH7Zuxk!G>Z(T N%%QHv_{lyj`2Z=%6=VPa delta 73 zcmdnZxtnvtEhY|09t**s_Vo76kC;>#MU6~D42`Tz&8!T~wG9lc3=9^o?F*hP%_4&- NbK!&8`^i2m`2Z7n6@UN$ diff --git a/favicon-32x32.png b/favicon-32x32.png index 6caef9a2b5ee2abeaddd07252eb44e96d015e746..eb38a1fce36db14a5d1afe70ef00c184b52b180f 100644 GIT binary patch delta 71 zcmeAb?iHR;#UamQVZ5lPa{tDrFb+{;!w^FwD^oKoQ$uY711kdq(FI1~liza4V9KQY L?Rq^~jx!$s?xGa+ delta 71 zcmeAb?iHR;#UaUKA#}RW%ywf_7>B5lX^5ebm8qGPp@p`Aft7(l_|t#8Ccov7!IV+k L;l?&ujx!$s@%0o+ diff --git a/pkgdown.yml b/pkgdown.yml index a66ae3b4..a686df09 100644 --- a/pkgdown.yml +++ b/pkgdown.yml @@ -9,7 +9,7 @@ articles: Morphological: Morphological.html Networx: Networx.html Trees: Trees.html -last_built: 2024-01-25T12:56Z +last_built: 2024-01-31T12:56Z urls: reference: https://klausvigo.github.io/phangorn/reference article: https://klausvigo.github.io/phangorn/articles diff --git a/reference/read.nexus.partitions.html b/reference/read.nexus.partitions.html index b524d362..4e5b6bb8 100644 --- a/reference/read.nexus.partitions.html +++ b/reference/read.nexus.partitions.html @@ -73,8 +73,7 @@