真核生物基因组的基因分析和预测

一、摘要

  1. 加深基因预测基本原理的理解(如
  2. 密码子的偏好性、内含子外显子剪切识别序列等);
  3. 了解同源基因预测的意义所在;
  4. 熟悉已有的基因预测的使用(如GenScan、GeneWise等);

二、材料和方法

1、硬件平台

处理器:Intel(R) Core(TM)i7-4710MQ CPU @ 2.50GHz
安装内存(RAM):16.0GB

2、系统平台

Windows 8.1、Ubuntu

3、软件平台

  1. BLAST
  2. GenScan
  3. GeneWise
  4. Python3.5
  5. Biopython

4、数据库资源

NCBI数据库:https://www.ncbi.nlm.nih.gov/
Uniprot数据库:http://www.uniprot.org/
Genecode数据库:http://www.gencodegenes.org/

5、研究对象

真菌基因组草图(课堂提供)
小鼠基因组(fasta)+小鼠基因组注释文件(gff)
http://www.gencodegenes.org/mouse_releases/current.html

6、方法

应用部分:

创建本地BLAST数据库
下载安装BLAST,使用makeblastdb对基因组草图建立BLAST数据库。
已知蛋白序列的下载
根据基因组的物种来源(真菌),从UniProt数据库下载近缘物种(真菌类)已知蛋白序列,以FASTA格式保存。
同源基因搜索
使用tblastn程序,把已知蛋白质序列和基因组草图序列建立的本地BLAST
数据库进行比对
Genewise建模
编程解析blast结果,取出蛋白质序列与对应基因组区间(上下延伸1000bp),放入Genewise进行基因结构建模

编程建模部分:

基因组不同区域序列的获取
根据小鼠gff注释文件,编写程序解析小鼠基因组fasta,提取CDS 区域序列、基因内含子序列、基因间序列、外显子-内含子剪切识别位点附近的序列。
三联体密码子偏好性的分析
CDS 区域、基因内含子、基因间区域的序列进行三联体密码子偏好性的统计分析。
剪切识别序列碱基规律分析
对剪切识别位点前后20bp 的序列进行位点碱基统计,建立序列谱。
剪切识别序列的计算鉴别
分别计算阳性经验分值和阴性经验分值,基因结构的计算鉴别。

三、结果

应用部分:

1、创建本地BLAST数据库

下载安装BLAST,使用makeblastdb对基因组草图建立BLAST数据库。

makeblastdb -in scaffold.fasta -input_type fasta -dbtype nucl -parse_seqids -out fungi

机器学习 基因组预测 genewise预测基因组基因_真核生物


图表 1创建本地数据库

2、已知蛋白序列的下载

方法一:

进入uniprot下载页面,点进按“分类学划分”Taxonomic_divisions,进入ftp下载页面,其中sprot为Swiss-prot审核过的蛋白质(Reviewed),trembl为TrEMBL数据库,没有审核过的蛋白质(Unreviewed),选择下载uniprot_sprot_fungi.dat.gz

ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/taxonomic_divisions/uniprot_sprot_fungi.dat.gz

机器学习 基因组预测 genewise预测基因组基因_真核生物_02


机器学习 基因组预测 genewise预测基因组基因_机器学习 基因组预测_03

方法二:

进入uniprot,搜索taxonomy:fungi,然后选择reviewed,下载fasta格式。

机器学习 基因组预测 genewise预测基因组基因_数据库_04

3、同源基因搜索

使用tblastn程序,把已知蛋白质序列和基因组草图序列建立的本地BLAST数据库进行比对,注意参数设置(如e-value设为0.00001),建议输出格式为5,这样方便导入Biopython进行后续解析。

tblastn -query uniprot-taxonomy-fungi.fasta -out fungimax1.blast -db fungi -outfmt 7 -evalue 1e-5 -num_alignments 1 -num_threads 8
tblastn -query uniprot-fungi.fasta -out fungimax10.blast -db fungi -outfmt 7 -evalue 1e-5 -max_target_seqs 10 -num_threads 8
tblastn -query uniprot-taxonomy-fungi.fasta -out fungi.blast.max1.xml -db fungi -outfmt 5 -evalue 1e-5 -max_target_seqs 1 -num_threads 8
4、Genewise建模

调用Biopython包,解析blast结果,取出同源蛋白质序列,以及蛋白质序列比对到基因组上位置的基因组序列(上下游再延伸1000bp),放入genewise进行验证:

机器学习 基因组预测 genewise预测基因组基因_机器学习 基因组预测_05


图表 2 Genewise结果

可以发现,确实能够预测出基因,说明截取序列正确。

编程部分:

基因组不同区域序列的获取

根据小鼠gff注释文件,编写程序解析小鼠基因组fasta,提取CDS 区域序列、基因内含子序列、基因间序列、外显子-内含子剪切识别位点附近的序列。并根据解析结果分别获取如下序列集:
(1)编码蛋白的基因CDS 区域序列;
(2)基因内含子序列;
(3)基因间序列;
(4)外显子-内含子剪切识别位点附近的序列【前后各10bp】,分为Intron_5和Intron_3 两类。
PS:注意截取CDS序列的时候,需要按照每个transcript合并同一transcript下的所有CDS,CDS序列合并以后应该都是3的倍数。有的CDS序列合并后也不是3的倍数,追踪编号到Ensemble数据库中,发现是3’ incomplete之类的,研究不透彻,可以去掉这些CDS。

三联体密码子偏好性的分析

对于上述提取的 CDS 序列进行三联体密码子出现频数进行统计(WordSize=3,step=3),终止密码子不计在内;所有序列统计完成后,计算各个密码子出现的相对比例。

对于基因内含子序列和基因间序列,按照六个阅读框进行统计分析(WordSize=3,step=1,互补链),终止密码子不计在内;所有序列统计完成后,计算各个密码子出现的相对比例。

统计CDS,intron,基因间序列密码子的出现比例,对密码子偏好性进行可视化,绘制出现比例条形图。

机器学习 基因组预测 genewise预测基因组基因_数据库_06


图表 3 密码子偏好性

红色是该密码子在CDS区出现的比例,绿色和蓝色是密码子在intron和基因间区域出现比例,可以看出来,对于每个密码子,绿色和蓝色高度基本一致,而红色相差较大,很显然CDS区域有着特殊的密码子偏好性。

接下来估算不同样本之间的相似性度量(Similarity Measurement),使用欧氏距离(Euclidean Distance)为指标

欧式距离计算公式:

机器学习 基因组预测 genewise预测基因组基因_子序列_07


向量形式:

机器学习 基因组预测 genewise预测基因组基因_子序列_08

相互比较的类型

CDS与Intron

CDS与基因间区域

Intron与基因间区域

欧氏距离

0.06447049

0.07381776

0.01560867

可以从表中看出来,“CDS与Intron”,“CDS与基因间区域”的欧式距离明显要高于“Intron与基因间区域”,这说明CDS与Intron相似度很低,CDS与基因间区域相似度也很低,Intron与基因间区域相似度却很高,这从统计指标上就看出来,CDS区域有着明显的密码子偏好性。

剪切识别序列碱基规律分析

对于截取的长度为20bp的内含子和外显子识别序列进行位点碱基统计,建立序列谱;即读取Intron_5和Intron_3的序列信息,并统计出每个位点a/g/c/t的频数和比例,建立如下的序列谱。

机器学习 基因组预测 genewise预测基因组基因_基因预测_09


图表 4 Intron_5序列谱

机器学习 基因组预测 genewise预测基因组基因_真核生物_10


图表 5 Intron_3序列谱

对序列谱进行可视化,绘制信号强度条形图:

机器学习 基因组预测 genewise预测基因组基因_基因预测_11


图表 6 5’端信号强度图

机器学习 基因组预测 genewise预测基因组基因_机器学习 基因组预测_12


图表 7 3’端信号强度图

综合上图,初步可以看出来intron的5’端和3’端分别有GT和AG的剪切识别信号。

接下来,根据信息熵计算公式:

机器学习 基因组预测 genewise预测基因组基因_子序列_13

,计算每个位点的混乱程度,混乱程度越低,保守性越好。然后,对于每个位点的信息熵,同时用每组最大的信息熵H减,获得保守性程度。

对保守性进行可视化,绘制保守程度条形图。

机器学习 基因组预测 genewise预测基因组基因_数据库_14


图表 8 5’端保守程度条形图

机器学习 基因组预测 genewise预测基因组基因_基因预测_15


图表 9 3’端保守程度条形图

将保守性程度较高的那些位点找出来,5’端:第9-16位,3’端:第8-10位,可以初步做出序列谱:

5’端保守性序列:AG/GTAAGT

3’端保守性序列:CAG/

与分子生物学课本上写的保守性序列一致:

外显子…AG↓GUAAGT…

内含子…Py10CAG↓…外显子

接下来,使用MEME在线服务器进行motif识别,由于只能提交1000条序列,因此不一定很准,可是对于intron5’端剪切识别位点,依旧精确地找出了motif

机器学习 基因组预测 genewise预测基因组基因_真核生物_16


图表 10 MEME intron5’端motif

对于intron3’端剪切识别位点,也能找出CAG的motif

机器学习 基因组预测 genewise预测基因组基因_基因预测_17


图表 11 MEME intron3’端motif

剪切识别序列的计算鉴别

根据intron3’端和5’端20碱基的序列谱,分别建立打分模型。评分计算方式:

取出20bp的序列,依次找出碱基在intron5’端中的比例,进行累乘,得出打分值。例如某一20bp序列第一位是A,找出intron5’端20bp第一位碱基是A的概率P1A,第二位是G,找出intron5’端20bp第二位碱基是G的概率P2G,第三位是T,找出intron5’端20bp第三位碱基是T的概率P3T,……第二十位是C,找出intron5’端20bp第二十位碱基是C的概率P20C,然后,依次累乘P1AP2GP3T*…*P20C,得出这一序列的打分值。

如果取出的这一序列是intron5’,对应于intron5’建立的模型;或者这一序列是intron3’,对应于intron3’建立的模型,则求出的是阳性经验分值;如果模型与序列不对应,则为阴性经验分值。

接下来绘制打分密度图:

机器学习 基因组预测 genewise预测基因组基因_数据库_18


图表 12 得分密度图

  • Score3为输入intron3’剪切位点的序列到对应intron3’模型得出的值;
  • Score5为输入intron5’剪切位点的序列到对应intron5’模型得出的值
  • Intronscore3为输入intron序列到intron3’模型得出的值;
  • Intronscore5为输入intron序列到intron5’模型得出的值;
  • Intergenescore3为输入基因间序列到intron3’模型得出的值;
  • Intergenescore5为输入基因间序列到intron5’模型得出的值;

可以明显从图中看出,模型自身对应序列打分会更高;如果关键特征全都对应上,是能用此模型来分类,但是从图中也能看出,单纯根据此模型进行打分,3’剪切位点得分大部分与阴性序列相近,用这个模型不易将3’剪切位点识别出来。

人工神经网络(ANN)

由于之前打分模型过于简单,不易将3’剪切位点识别出来,下面构建人工神经网络(Artificial Neural Network,即ANN),对序列进行识别分类。由于数据量过大会增加运算时长,因此3’剪切位点序列,5’剪切位点序列,内含子序列,基因间序列一共提取5w条,进行分类。为了方便起见,构造的神经网络为单层的,隐藏的神经元(Hidden Unit)数量分别尝试3,6,12,18个,学习速率(Learning Rate)分别尝试了0.003, 0.01, 0.03,0.1,迭代次数为200,寻找最优的神经网络。

机器学习 基因组预测 genewise预测基因组基因_基因预测_19


图表 13 每轮迭代的误差图

上图为误差图,显示不同神经元和不同学习速率下,误差随迭代次数下降的图,横坐标为迭代的次数,纵坐标为误差大小,红线为测试集的误差,黑线为训练集的误差。明显,黑线一直在红线之下,即作为生成模型的训练集分类效果会更好,

这里还需要解释一下隐藏的神经元(Hidden Unit)数量和学习速率(Learning Rate)对最终结果的影响。隐藏神经元越多,越容易拟合出复杂的模型,但是在数据量不够的情况下容易“过拟合”;而学习速率越大,模型的收敛速度会在更少的迭代次数后收敛,但是如果学习速率过大,有可能错过全局最小值而无法收敛,就比如上图中最后一行,学习速率都是各组学习速率最大值0.1,测试集的误差一直在波动而难以完全收敛。接下来计算训练集,测试集的误差,选取最好的神经网络

机器学习 基因组预测 genewise预测基因组基因_基因预测_20


图表 14 误差计算

可以发现最好的是隐藏层12个神经元,学习速率0.1的那个神经网络。

输出该模型的基本信息:

SNNS network definition file V1.4-3D

network name : RSNNS_untitled

no. of units : 36

no. of connections : 288

learning function : Std_Backpropagation

update function: Topological_Order

机器学习 基因组预测 genewise预测基因组基因_基因预测_21


图表 15 模型详细信息

try my best地来解释一下,其实结果就是创建了这样的一个模型:

机器学习 基因组预测 genewise预测基因组基因_真核生物_22


图表 16 模型简图

20个输入节点(二十维的评价集,每个节点代表原来20bp序列上的一个碱基),自己创建的12个隐藏节点,以及输出的4个节点(四维的结果集,分类出intron,intergene,3’剪切位点,5’剪切位点)

所以总共是36个节点(no. of units: 36)

2012+412=288条连线(no. of connections: 288)。接下来,使用测试集进行测试,得出预测结果统计表

机器学习 基因组预测 genewise预测基因组基因_真核生物_23

可以看出来,5’剪切位点、3’剪切位点以及内含子序列识别效果很棒,而有大量基因间序列被识别成为了内含子,因为本身“基因间序列”和“内含子”特征就不是很明显,这一结果也是可以接受的。