系统发育网络推断软件PhyloNetworks和Phylonet的使用及遇到的error
一、系统发育网络推断软件PhyloNetworks的使用流程以及解决报错
该软件的详细说明请参考他的官方网站Home · PhyloNetworks.jl (crsl4.github.io),该软件的中文流程(包括简介、安装使用流程等)请参考系统发育网络推断 —— PhyloNetworks | 生信技工 (yanzhongsino.github.io),本笔记参考以上两个站点并测试无报错。
1、安装
1 | wget https://julialang-s3.julialang.org/bin/linux/x64/1.7/julia-1.7.2-linux-x86_64.tar.gz #下载 |
在安装过程中遇到以下报错
1 | ERROR: Unable to automatically install 'Bzip2' from '/home/manu/.julia/packages/Bzip2_jll/2H8pU/Artifacts.toml |
参考github的论坛ERROR: Unable to automatically install Artifacts.toml issue? · Issue #1705 · JuliaLang/Pkg.jl (github.com),以下这个解决方法对我的报错有效,在julia交互模式输入以下命令
1 | using Pkg |
再次运行Pkg.add(“PhyloNetworks”)安装成功。
2、软件使用
①准备两个文件,一是“多基因树文件” alltree.rooted.txt,用以计算得到CF表,CF表则用于系统发育网络推断的输入;二是“通过astral软件将多基因树整合得到的树” astral.tre,用于构建系统发育网络起点。在Julia的交互模式下
通过多基因树文件制备CF表tableCF.csv
1 | using PhyloNetworks |
②构建起始网络
1 | using PhyloNetworks |
最初在运行net0 = snaq!(astraltree,CF, hmax=0, filename=”net0”, seed=1234)过程中遇到以下报错
1 | :MethodError: no method matching snaq!(::Vector{HybridNetwork}, ::DataCF; hmax=0, filename="net0", seed=1234) |
原因是读取astralfile树时命令错误,astraltree = readMultiTopology(astralfile),在最末尾没有添加[1],可能导致数据类型出现问题。当运行astraltree = readMultiTopology(astralfile)[1]时,可正常运行。
③把得到的net0作为起点来构建hmax=1的网络
1 | net1 = snaq!(net0, raxmlCF, hmax=1, filename="net1", seed=1235) |
④迭代运行得到net2、net3……
1 | net2 = snaq!(net1, raxmlCF, hmax=2, filename="net2", seed=1236) |
另外,如果要运行的h值较多,也可以利用脚本运行,以下脚本未考虑迭代,即每次h值得运行都用同一个起始树astral.tre
当h为1时,设置文件名为runSNaQ_h1.jl,内容如下
1 | #!/usr/bin/env julia |
当h为2时,设置文件名为runSNaQ_h2.jl,内容如下
1 | #!/usr/bin/env julia |
以此类推,设置h为3、4、5、6…….时得jl文件。
将运行命令写入到同一目录下run_julia.sh文件中
1 | julia runSNaQ_h1.jl 1 #数字为设置得h值 |
利用nohup或screen+ParaFly组合后台运行
1 | screen -S julia |
3、结果解读
①选择最佳系统发育网络
选择运行结果中-loglik值最小的hman值时的运行结果,将不同h值得-loglik值统计好,可利用excel做折线图。
②可视化,假设h为3时所得的结果为最佳网络树
1 | using PhyloNetworks |
二、系统发育网络推断软件PhyloNet的使用(2024.05.29更新)
该软件官网链接为PhyloNet Tutorial (rice.edu)
具体用法参考Phylonet Tutorial (SSB 2020) - Phylonet - Rice University Campus Wiki
1、下载安装:下载jar文件后,若系统java版本大于等于1.8.0就可以使用
2、PhyloNet软件使用
准备一个nex格式文件即可,script.nex包括基因树信息以及程序运行命令,举个栗子:
1 | #NEXUS |
①要准备script.nex文件,需要以下几步:a.对已有的多个序列分别进行比对、剪切、构树,可以参考test_pipeline-of-phylogeny | TianzhenWu’ Blog (wu-tz.github.io)。b. 获取多个treefile后,分别对他们进行定根处理,可以参考利用ete3批量对基因树定根并检测单系性 | TianzhenWu’ Blog (wu-tz.github.io)。c. 将所有treefile放到一个文件中,利用shell命令补全每一行的前缀“Tree gt1=”。d. 手动补全nexus格式文件的开始和结尾。e. 在文件末尾补充PHYLONET程序的参数,方法的选择参考https://phylogenomics.rice.edu/html/phylonetTutorial.html。
②运行命令如下
1 | java -jar PhyloNetv3_8_2.jar script.nex |
3、PhyloNet结果解读
每次运行输出5个可能的进化网络树,分别对应着统计量Total log probability,该值越大越可靠。
4、 Visualizing a Phylogenetic Network
Phylogenetic network in Rich Newick string can be visualized in Dendroscope or icytree. The former needs downloading, and the latter is online. However, Dendroscope cannot recognize inheritance probabilities (branch lengths are fine), and icytree sometimes can and sometimes cannot. You need to remove those probabilities manually from the Rich Newick string, or use option “-di” so that PhyloNet returns the network that Dendroscope takes directly. 此处参考https://wiki.rice.edu/confluence/pages/viewpage.action?pageId=39500205#PhylonetTutorial(SSB2020)-3.BasicUsage