关于NJtree的个人总结
关于NJtree的个人总结NJtree产生步骤NJtree产生之tassel到MegaNJtree美化NJtree基因顺序的提取NJtree产生步骤NJtree产生之tassel到Mega首先我们手上是vcf文件,可以通过hapmap文件等格式转化。详见GWAS(1)——文件格式及linux上的转换。使用如下命令,将vcf文件转为phylip(Interleaved)格式。当然,这个也可以在Win
NJtree产生步骤
NJtree产生之tassel到Mega
首先我们手上是vcf文件,可以通过hapmap文件等格式转化。详见GWAS(1)——文件格式及linux上的转换。
使用如下命令,将vcf文件转为phylip(Interleaved)格式。当然,这个也可以在Windows的tassel软件上操作。
run_pipeline.pl -Xmx50G -plink -ped snp.ped -map snp.map -export snp.phy -exportType Phylip_Inter
得到的.phy文件大概是这样的:
接着就进行以下步骤:
(1)将phy文件用MEGA打开,转换为Meg文件;
(2)打开Meg文件,点击“Phylogeny”选项卡;
(3)我做的是种内材料,所以选用NJtree构建;
(4)参数设置:Model选择Bootstrap,迭代在500-1000次之间,其他参数看下图吧,大多是默认的
(5)点击“OK”,耐心等待完成后就产生了一个初步的树。
(这是其他教程对参数设置的一个解释)
(6)保存为nwk文件后,就可以在其他网站上画漂亮的NJtree了。
nwk文件产生的另一种方法
最近遇到了一个问题,就是根据vcf文件生成phy,再导入MEGA后,phy文件过大会导致MEGA卡死,无法运行。所以另求他法后,找到了这样一个帖子:http://events.jianshu.io/p/9243336af395
安装VCF2Dis计算距离矩阵,官网https://github.com/BGI-shenzhen/VCF2Dis
tar -zxvf VCF2DisXXX.tar.gz
cd VCF2DisXXX
make
# 添加环境变量即可
# 对所有样本进行计算距离矩阵
../bin/VCF2Dis -InPut in.vcf.gz -OutPut p_dis.mat
# 对部分样本计算
../bin/VCF2Dis -InPut in.vcf.gz -OutPut p_dissub.mat -SubPop sample.list
# 其中
head sample.list
S010
S033
S186
S123
S124
S011
上传距离矩阵到在线网站, FastMe2.0。上传以后,选择Data type为Distance matrix。 然后点击最下方的execute & email results即可。邮箱也可不写。
最终得到nwk格式的文件,就可以继续做进化树了。
NJtree美化
PHYLIP 免费的、集成的进化分析工具http://evolution.genetics.washington.edu/phylip.html
MEGA 图形化、集成的进化分析工具 http://www.megasoftware.net/
PAUP 商业软件,集成的进化分析工具http://paup.csit.fsu.edu/
PHYML 最快的ML 建树工具http://www.atgc-montpellier.fr/phyml/
MrBayes 基于贝叶斯方法的建树工具http://mrbayes.csit.fsu.edu/
我个人使用的是 Evolview,https://www.evolgenius.info/evolview/#login
打开网站后,导入nwk文件,具体操作见https://www.plob.org/article/12723.html。
NJtree基因顺序的提取
perl nwk_geneid.pl -i in.nwk -o out.txt
in.nwk 为输入的nwk文件,out.txt是输出的基因ID文件。
脚本代码:
use Getopt::Long;
use strict;
my %opts;
GetOptions(\%opts,"i=s","o=s","h");
open(IN,"$opts{i}") || die "open $opts{i} failed\n";
open(OUT,">$opts{o}") ||die "open $opts{o} failed\n";
while(<IN>){
chomp;
my $str = $_;
$str =~ s/\d\.\d+//g;
$str =~ s/\(//g;
$str =~ s/\)//g;
$str =~ s/://g;
$str =~ s/;//g;
my @line = split(",",$str);
print OUT join("\n",@line);
}
close(IN);
close(OUT);
参考链接:
https://www.jianshu.com/p/db8c8b00770b
http://www.cas.cn/syky/201605/t20160509_4555903.shtml
https://www.plob.org/article/12723.html
https://www.sohu.com/a/164261454_652735/
https://www.omicsclass.com/article/796
更多推荐
所有评论(0)