欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

群体结构分析:用 phylip 构建进化树

程序员文章站 2024-03-02 21:59:04
...

用 phylip 构N-J树

在 linux 系统,可以用 conda 安装 phylip 软件

1. 将 SNP 文件转换为 phylip 格式

用 tassel 的格式转换功能将 plink 格式转为 phylip 格式。
另外有一个脚本可以将 vcf 格式转换为 phylip ,vcf2phylip.py

run_pipeline.pl -Xmx50G -plink -ped snp.ped -map snp.map -export snp.phy -exportType Phylip_Inter

2. 构建进化树

构建进化树需要先将序列比对好,因为 SNP 文件都是根据参考基因组比对过的,所以不用再次比对。
phylip 在命令行中可以根据提示输入参数,也可以用含有参数的文本导入参数。
phylip 构树需要用到四个程序,按顺序运行:

1. seqboot:重抽样,生成随机样本。参数文本:seqboot.bar

$ cat seqboot.par 
snp.phy
R #选择bootstrap
1000 #设置bootstrap的值,即重复的replicate的数目,通常使用1000或者100,注意此处设定好后,后续两步的M值也为1000或者100
Y #yes确认以上设定的参数
9 #设定随机参数,输入奇数值。

$ seqboot < seqboot.bar
$ mv outfile seqboot.out

注意:参数文本的第一行为输入文件,且后面不能跟注释

2. dnadist:计算距离矩阵,最耗时,几千个SNP可能需要1天甚至数天。 参数文本dnadist.par

$ cat dnadist.par 
seqboot.out
T #选择设定Transition/transversion的比值
2 #比值大小
M #修改M值
D #修改M值
1000 #设定M值大小
2 #将软件运行情况显示出来
Y #确认以上设定的参数

$ dnadist < dnadist.par
$ mv outfile dnadist.out

3. neighbor: Neighbor-Joining 建树。参数文本:neighbor.par

$ cat neighbor.par 
dnadist.out
M
1000 #设定M值大小
9 #设定随机数,输入奇数值
Y #确认以上设定的参数

$ neighbor < neighbor.par
$ mv outfile neighbor.out
$ mv outtree neighbor.tree

4. consense:将多重树汇总成一个。参数文本:consense.par

$ cat consense.par 
neighbor.tree
#确认以上设定的参数
Y

$ consense < consense.par
$ mv outfile consense.out
$ mv outtree consense.tree

可视化

可以用iTOL(收费了)、EvolView(经常登不上)、ggtree(美观易用,推荐)、Figtree等。

参考:https://blog.csdn.net/g_r_c/article/details/8869494