群体结构分析:用 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
可视化
上一篇: 合并/展平数组