共线性分析是指研究
基因组或染色体中的基因之间的演化关系和相关性的方法
。它可以帮助揭示基因重复事件、基因家族、基因重排和基因功能保留等不同生物过程中的重要信息。
在共线性分析中,通常使用序列比对和比较的方法来识别基因组中的共线性区域。这些方法可以检测到同源基因、重复序列、倒转片段和基因重排等结构变化,并提供了解基因组进化和功能保留的线索。
共线性分析的结果可以用来构建基因组图谱、揭示基因家族的演化、预测基因功能和进化等。这对于研究物种的遗传演化、基因功能和基因组结构具有重要意义,并且在农业、医学和生物技术等领域中也有广泛的应用。
MCScanX有两个主要的功能, 一是, 方便使用者发现共线性(collinearity)和同线性(synteny)关系并且可以从共线性区块中看到清晰多重比对; 二是, 通过其中众多的辅助脚本, 更形象的分析同线性和共线性的数据
下面就从零开始共线性的分析吧~
注: 稍微解释一下synteny and collinearity的关系, 假设有A B C三个基因, 在species1中的排列为ACB, 而在species2中排列为CAB, 则这两个区段称为synteny; 如果在species3中排列为ABC, 在species4中排列也为ABC, 则这两个区段称为collinearity
进行 Circos 基因共线性分析,需要以下步骤:
- 准备数据:获取基因组序列文件、基因注释文件和基因共线性结果文件。确保数据格式符合要求。
- 配置 Circos:创建 Circos 的配置文件,通常命名为
circos.conf
。在配置文件中,指定基因组数据的位置、样式、颜色、图像大小等信息。 - 处理共线性数据:将基因共线性结果文件转换为 Circos 可识别的格式。可以使用 MCScanX 或其他共线性分析工具生成的结果,然后通过脚本或自定义代码将其转换为 Circos 的输入格式。
第1列:染色体ID,指连线起始的染色体
第2列:连线起始的染色体的起始位置
第3列:连线起始的染色体的终止位置
第4列:染色体ID,指连线的终止染色体
第5列:连线终止的染色体的起始位置
第6列:连线终止的染色体的终止位置
第7列:连线颜色,这一列可以省略
chr01 23224373 23226605 chr01 29960694 29963049 color=142,212,202
chr01 23247278 23250623 chr01 29987911 29994075 color=142,212,202
chr01 23316218 23322871 chr01 29995196 29999996 color=142,212,202
chr01 23324460 23325125 chr01 30003535 30005888 color=142,212,202
安装MCScanX
wget https://codeload.github.com/wyp1125/MCScanX/zip/refs/heads/master
unzip master.zip
cd MCScanX-master
make
# 测试安装是否成功(能打印出来help信息则表示成功)
./MCScanX -h
# 成功则添加到环境变量
echo 'export PATH=$PATH:'"$(pwd)" >> ~/.bashrc
source ~/.bashrc
共线性分析
pep= Oryza_sativa.IRGSP-1.0.pep.all.fa
gff3=Oryza_sativa.IRGSP-1.0.48.gff3
mkdir blastresult
makeblastdb -in ${pep} -dbtype prot -out Os
blastp -query ${pep} -db Os -out ./blastresult/Os.blast -evalue 1e-10 -num_threads 10 -outfmt 6 -num_alignments 5
# 格式化gff3文件,后面用的gff3都是格式化好的,千万注意
awk -vFS="\t" -vOFS="\t" '{if($3=="mRNA"){match($9,/ID=([^;]+)/,a);sub(/ID=/,"",a[0]);print $1,a[0],$4,$5}}' ${gff3} > ./blastresult/Os.gff
cd blastresult
MCScanX Os
cd ./blastresult
grep -v "#" tair10.collinearity | cut -f2,3 | \
awk -vFS="\t" -vOFS="\t" 'NR==FNR{arr[$2]=$2;brr[$2]=$1"\t"$3"\t"$4}NR!=FNR{if(arr[$1]==$1)print brr[$1],$2}' Os.gff - | \
awk -vFS="\t" -vOFS="\t" 'NR==FNR{arr[$2]=$2;brr[$2]=$1"\t"$3"\t"$4}NR!=FNR{if(arr[$4]==$4)print $1,$2,$3,brr[$4]}' Os.gff - > ../circos.link.txt
###circos.conf 文件加上这些
<links>
<link>
file = num/link
radius = 0.44r
color = blue_a4
ribbon = yes
</link>
</links>