大概是长期的不锻炼使得今天的爬山运动过量了,接着悲剧就是无法入眠。也幸亏明天是周日,干脆就起床码字了。
总结下自己前面用snp构建系统进化树的方法吧。
1.构建进化树的算法
构建系统进化树的方法主要有以下几类:
基于距离矩阵的方法:NJ(邻接法)
MP(最大简约法)
ML(最大似然法)
以及贝叶斯法。
一般情况下,若有合适的模型,ML的效果较好;
近缘序列的话,一般使用MP;
远源序列,一般使用NJ或者ML。
在分析变异过滤得到SNP时,一般都会用PHYLIP构建NJ进化树。
PHYLIP软件官网http://evolution.genetics.washington.edu/phylip.html
那么具体如何操作呢?
软件安装
软件安装较为简单
wget http://evolution.gs.washington.edu/phylip/download/phylip-3.69.tar.gz ./ #下载软件
tar zxvf phylip-3.69.tar.gz #解压
cd phylip-3.69/src
make install
#以上几步即安装完软件,文件夹中的exe目录里为可执行程序
2.输入文件的格式转换
查看Phylip软件的说明,发现其输入文件的格式为下图,并不为vcf格式(http://evolution.genetics.washington.edu/phylip/doc/main.html#inputfiles),因此需要对其进行格式的转换。
其中第一行为构建进化树的样品数以及每个样品使用的snp数目。
第二行及以下为每个样品的名称及snp的具体内容。需要注意的是样品的名称必须为10个字母,如果未达到10个字母,可用tab键或者空格键代替。第11个字母后即为snp的内容,同时在这些序列中,一般每10个位点会有1个空格使其方便阅读。每个样品的用于构建snp的个数必须相同。
根据以上的规定,可以写脚本将vcf格式转化为可用于phylip的phy格式。
3.软件使用
phylip中有许多程序,大部分的程序运行方法相同,把infile作为默认的输入文件,输出结果写在outfile中。因此,在进行下一步分析前,需要重命名想要保存的文件。
seqboot: 生成随机样本,用bootstrap和jack-knife方法。需要设置选项M
dnadist:DNA距离矩阵计算器。
neighbor:NJ法的使用
consense:用多重树构建一致树。
每个程序都需要设定参数,因此还需要新建par文件。
#cat seqboot.par
all.merge.snp.phy #设定输入文件的名称,否则输入默认的名为infile的文件
r #选择bootstrap
1000 #设置bootstrap的值,即重复的replicate的数目,通常使用1000或者100,注意此处设定好后,后续两步的M值也为1000或者100
y #yes确认以上设定的参数
9 #设定随机参数,输入奇数值。
#cat dnadist.par
seqboot.out #本程序的输入文件
t #选择设定Transition/transversion的比值
2.3628 #比值大小
m #修改M值
d #修改M值
1000 #设定M值大小
2 #将软件运行情况显示出来
y #确认以上设定的参数
#cat neighbor.par
dnadist.out #本程序的输入文件
m
1000 #设定M值大小
9 #设定随机数,输入奇数值
y #确认以上设定的参数
# cat consense.par
nei.tree #本程序的输入文件
y #确认以上设定的参数
再运行以下命令行即可
seqboot<seqboot.par &&mv outfile seqboot.out &&dnadist<dnadist.par && mv outfile dnadist.out && neighbor<neighbor.par && mv outfile nei.out && mv outtree nei.tree && consense<consense.par && mv outfile cons.out && mv outtree constree
最后将会得到constree文件,可将该文件gaiwei*.tre文件,双击后在treeview中直接查看进化树的内容。
若要进行进一步的编辑,可使用iTOL在线的网站(http://itol.embl.de/)进行编辑,以下即为我得到的一个进化树。