两个基因组的比对主要在于大片段序列的比对正确性,这和小片段比对(blast)、多序列比对(mafft)不同。基因组层面的比对方法常用的有 lastz 和 mummer。
lastz 流程
axt文件的处理
在使用 lastz 比对完两个基因组之后,生成了以 axt 结尾的文件(比对时可以分割染色体)。axt 文件即记录了2个基因组的比对位置和对应比对的序列,如下:其中 chr21 19645 19675 Chr01 318732 318762是比对位置。1
2
31 chr21 19645 19675 Chr01 318732 318762 + 2328
CACACAGACATACACACATGCACACACACGC
CACACAAACACACACACACACACACACACAC
我们需要把这一行的信息挑选出来。1
grep chr xxx.axt |cut -f 2,3,4,5,6,7 -d " " > xxx.pos
得到比对位置之后,我们下一步对结果进行过滤。
片段长度过滤
太短的比对无法真实地体现比对位置的正确性,一般比对长度要大于 1000bp1
>>>awk '$3-$2>1000{print $0}' xxx.pos >xxx.filter.pos
位置信息过滤
理想情况下,应该是一个基因组的染色体比对到另一个基因组的染色体上,而实际情况会有很多碎片散落在其他染色体上,我们挑选出来的位置文件包含了一条染色体比对到另一个基因组所有染色体的信息,所以我们要进行过滤,看看有没有一一对应比对的染色体位置信息。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32>>> head -5 xxx.filter.pos
	chr11 1016468 1018558 Chr01 1589564 1591669
	chr11 2208239 2209250 Chr01 3172963 3173855
	chr11 4940937 4942025 Chr01 6355782 6356928
	chr11 6016505 6017738 Chr01 8231646 8232851
	chr11 6770249 6771299 Chr01 10322020 10323107
>>> cut -f 4 xxx.filter.pos -d " "|uniq -c
	142 Chr01
    275 Chr02
    318 Chr03
    141 Chr04
    216 Chr05
    227 Chr06
    167 Chr07
    313 Chr08
    245 Chr09
    212 Chr10
    273 Chr11
    223 Chr12
    193 Chr13
    236 Chr14
    303 Chr15
    170 Chr16
    304 Chr17
   5130 Chr18
    240 Chr19
    333 Chr20
    209 Chr21
    289 Chr22
    141 Chr23
    142 Chr24
>>> grep Chr18 xxx.filter.pos > xxx.result
可以看到 chr11 的绝大部分序列比对到了 Chr18(5130),我们由此得知 chr11-Chr18是一对儿比较好的共线性染色体。
作图
我们使用LINKVIEW 进行比对的可视化,输入文件就是上面的 xxx.result。1
python LINKVIEW.py xxx.result -o xxx # https://github.com/YangJianshun/LINKVIEW
mummer 流程
| 1 | >>> nucmer genome1.fa genome2.fa | 
可以看到 chr1 的绝大部分序列比对到了 Chr05(6688),我们由此得知 chr1-Chr05是一对儿比较好的共线性染色体。
作图
我们使用LINKVIEW 进行比对的可视化。1
2
3grep -P  "chr1\s+Chr05" out.delta.coord|awk '{print $12,$1,$2,$13,$4,$5}' >chr1_chr5.pos
sed -i 's/ /\t/g' chr1_chr5.pos
python LINKVIEW.py chr1_chr5.pos -o xxx # https://github.com/YangJianshun/LINKVIEW
