点阵图 | 比较基因组分析之基石 - 手把手入门教程

写在前面

前述,我们通过《安装 | 比较基因组系列之一 - WGDI 软件安装与配置》一文,带大伙安装和配置了我们 WGDI 软件。接下来,我们直切主题,从实例数据开始,手把手带大家进行比较基因组分析,并做具体结果解读
比较基因组学的分析工作常常都是从一张点图开始的。一张清晰的点图能反应出来非常多的信息。

初探 WGDI

WGDI 所有的分析,从一个配置文件开始。对于点阵图,我们可以通过运行

wgdi -d ? >> total.conf 

进而查看配置文件模板

cat total.conf
[dotplot]
blast = blast file
gff1 =  gff1 file
gff2 =  gff2 file
lens1 = lens1 file
lens2 = lens2 file
genome1_name =  Genome1 name
genome2_name =  Genome2 name
multiple  = 1
score = 100
evalue = 1e-5
repeat_number = 20
position = order
blast_reverse = false
ancestor_left = none
ancestor_top = none
markersize = 0.5
figsize = 10,10
savefig = savefile(.png,.pdf)

下面,逐个参数给大家解读。

  1. blast = blast file,即设置输入的 blast 文件,一般使用物种A蛋白序列全集 比对到 物种B蛋白序列全集,得到blastp结果文件(后续给大家演示)

  2. gff1 = gff1 file,即基因位置信息文件,记录每个基因的具体信息,gff 文件使用 Tab键 分割,分别为 chr,id,start,end,stand,order,old_id。其中,order是每条染色体从1开始的排序,old_id 和后面列的信息不读取。

  3. lens1 = lens1 file,染色体长度信息,记录每条染色体的长度。三列分别为染色体号,染色体bp长度,染色体基因个数。scaffold或contig 可以等效于chr

其他参数,不重要。主要是blastp结果过滤以及出图参数。

准备示例数据

从上述可以看出,输入数据事实上可以直接从两个文件开始准备。

  1. 基因组序列文件
  2. 基因结构注释信息

文件可直接从公开数据库 Phytozome 上下载,此处为v10的

ls -1
total.conf
Vitis_vinifera.genome.fna
Vitis_vinifera.genome.gff3
首先,准备染色体长度信息
perl -0076 -ane '@F=map{s/[>\r\n]//gr}@F;$id=shift @F;print $id,qq{\t},length (join q{},@F),qq{\n} if $id'  Vitis_vinifera.genome.fna > Grape.chr.length

随后,统计每条染色体上的基因数目(注意,此处统计的是 gene 的数目,如果你的注释信息文件没有 gene 的数目,那么你可能要统计 mRNA 的数目,并注意是否有可变剪切本等)

perl -lane 'next if /^#/;$count{$F[0]}++ if $F[2] eq "gene";END{print join qq{\t},$_,$count{$_} for sort keys %count}' Vitis_vinifera.genome.gff3 > Grape.gene.counts

合并两个文件,得到 WGDI 所需的 len 文件

perl -lane 'if($flag){print join qq{\t},$_,$count{$F[0]}}else {$count{$F[0]}=$F[1]}$flag=1 if eof(ARGV)' Grape.gene.counts Grape.chr.length |sort -k1,1V > Grape.len
准备 gff 文件

Emmm,perl one-liner 嘛...

# 此处直接使用 mRNA,葡萄注释信息中每个基因只对应了一个mRNA
perl -lane 'next unless $F[2] eq "mRNA";/ID=([^;]+)/;push @geneInfo,[$F[0],$1,$F[3],$F[4],$F[6]];END{$preChr="";for(sort {$a->[0] cmp $b->[0] || $a->[2] <=> $b->[2]} @geneInfo){if($preChr ne $_->[0]){$c=0;$preChr=$_->[0]};print join qq{\t},@{$_},++$c}}' Vitis_vinifera.genome.gff3 > Grape.gff
准备 BLAST 文件

本例中,我们做的是葡萄内部的,所以只需要提取葡萄的蛋白序列文件,比对到自身即可

gffread Vitis_vinifera.genome.gff3 -g Vitis_vinifera.genome.fna -y Grape.pep.fa
# 清除终止密码子
perl -i -lpe 's/\.$// unless /^>/' Grape.pep.fa

比对到自身,推荐 BLASTP,因为准确度也很重要。此处使用 DIAMOND,主要是为了加速

./diamond makedb --in Grape.pep.fa --db Grape.pep.fa
./diamond blastp --db Grape.pep.fa --query Grape.pep.fa --outfmt 6 --evalue 1e-5 --max-target-seqs 20 --out Grape.blastp

绘制点阵图

修改配置文件,设置输入的两个文件

[dotplot]
blast = Grape.blastp
gff1 =  Grape.gff
gff2 =  Grape.gff
lens1 =  Grape.len
lens2 = Grape.len
genome1_name =  Grape
genome2_name =  Grape
multiple  = 1
score = 100
evalue = 1e-5
repeat_number = 20
position = order
blast_reverse = false
ancestor_left = none
ancestor_top = none
markersize = 0.5
figsize = 10,10
savefig = Grape.dot.png

随后运行即可

wgdi -d total.conf
blast  =  Grape.blastp
gff1  =  Grape.gff
gff2  =  Grape.gff
lens1  =  Grape.len
lens2  =  Grape.len
genome1_name  =  Grape
genome2_name  =  Grape
multiple  =  1
score  =  100
evalue  =  1e-5
repeat_number  =  20
position  =  order
blast_reverse  =  false
ancestor_left  =  none
ancestor_top  =  none
markersize  =  0.5
figsize  =  10,10
savefig  =  Grape.dot.png
findfont: Font family ['Arial'] not found. Falling back to DejaVu Sans.
findfont: Font family ['Arial'] not found. Falling back to DejaVu Sans.

查看当前目录,可以看到输出 png 文件Grape.dot.png,直接打开或者下载到本地打开即可


上述,position = order 参数的意思是,基因按照排序位置可视化,我们也可以直接按照具体染色体上的物理位置进行可视化,使用 position = end

那么为什么要用物理位置可视化?这个与后续 核型分析,祖先染色体重构等相关,继续埋雷,感兴趣的就等后续推送....
与此类似,还有mutiple 参数,表示最优匹配格式,同样与更高维度的比较基因组分析相关。还是埋雷....哈哈
回到主题,任意修改 lens1 和 lens2 的染色体的数量和顺序,可以得到任意染色体间的点图。
比如,我们可以直接去掉 random 染色体碎片

perl -i -lne 'print unless /random/' Grape.len

点图解读

首先,明确 WGDI 点图规则:根据左侧基因组的基因,最优同源(相似度最高)的点为红色,次好的四个基因为蓝色,剩余部分(同源基因有限制个数)为灰色。

  1. 点图需要横向看和纵向看:这个点图是物种自身比对,所以只需横向看。片段深度应该为 2,但最好同源个数为1,即红色点没有集中分布在某个片段上。常常可以认两个片段很相似,再加上自身。所以,认定为最近发生的加倍为三倍化。除此之外,蓝色或灰色的片段很少有,表明更古老的加倍很不明显。
  2. 对角线上,本不应该出现片段。自身比自身显然是最好匹配,这些点(WGDI)已经去掉了。所以,其由串联重复造成的,即该基因临近位置的基因相似度很高,为同源基因,打在了对角线附近。可以通过计算这些串联重复的ks值,估算重复片段的爆发时间。
  3. 最后,事实上,点图是后续跑共线性的基石。score, evalue, repeat_number 判定的同源点的数量是共线性打分矩阵的来源。

写在最后

往往,越是高阶的分析人员,使用的工具却越是简陋。点图,看似简单 和 粗略。但其蕴含的才是真正全面的比较基因组信息。
更多内容,让我们一起期待后续教程。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353