DNA binding motif比对算法
DNA binding motif比对算法
之前介绍了序列比对的一些算法。本节主要讲述motif(有人翻译成结构模式,但本文一律使用基模)的比对算法。
那么什么是基模么?基模是对DNA结合位点的一种描述。它有几种描述方式,一种是共同序列(consensus sequences)一种是位点倾向距阵(Position Specific Frequency Matrices(PSFM))而对于PSFM,有两种表示方式,一种叫PCM,一种叫PFM,前者是Position count matrices,就是对每个碱基位ACGT出现次数的统计,后者(Position frequency Matrices)是在前者的基础上求出其相对于总数的比率。它们看上去大约是这个样子的:
>PCM motif
A | 367 470 93 1738 0 61 0 0 126 463 414 396
C | 139 12 1688 43 0 109 0 0 471 212 472 411
G | 916 1279 0 0 1781 1601 119 1775 485 426 308 390
T | 148 14 0 0 0 10 1662 6 699 680 584 578
>PFM motif
A
0.208 0.226 0.214 0.350
0.132 0.140 0.070 0.655
0.015 0 0.016 0.968
0.812 0.028 0.010 0.148
0.983 0.007 0.009 0
0.007 0.052 0.027 0.912
0.063 0.024 0.456 0.456
0.669 0 0.312 0.018
使用这个距阵,可以生成所谓的motif logo图示。
对于基模比对,其主要思路还是运用序列比对当中Needleman-Wunsch或者Smith-Waterman算法。但针对每个碱基位置,因为并非单一的字母,而是一个四个或者五个数字的数组,所以会改变之前字母比对的方式,而使用以下五种算法:
- Pearson’s correlation coefficient 皮尔逊积矩相关系数
- sum of squared distances 距平方和
- Kullback–Leibler information content 相对熵
- average log-likelihood ratio (ALLR) 平均对数似然率
- ALLR with a lower limit of –2 imposed on the score
其实最后一种不应该说是一种算法,只是一种改进,所以我们只略约讲一下前5种方法。
Pearson’s correlation coefficient算法是最容易被想到的一种算法,它将基模中的ACGT分布概率或者个数统计当成两组数,我们必须假设它们拥有相同的分布概率,比如说高斯分布,如果两组数对应位置呈现线性关系的话,那么它们的皮尔逊系数就等于1或者-1.如果它们完全不相关,那么系数就等于0。皮尔逊相关系数的算法为协方差和标准差的商。
很明显,这一算法应用在基模中某一碱基位的比对上有一个巨大的缺陷就是它要求准确服从高斯分布。而基模某一碱基位上只能对应四个,或者五个数字,而一个偏向性强的基模位显然不会符合高斯分布。
对于相对距平方和算法很简单,其公式为。其中M和N是要比较的两碱基位那一列的频率。这一算法是JASPAR用于搜索相类基模的算法。
后面的算法都是从信息论当中来的。它们的基础都是由Claude Shannon提出的信息熵(Information Entropy):
理解这个信息熵可能需要一点点解释。我们说DNA中有4个碱基ACGT,那么每个字母所代表的信息量为:
,
那么对于氨基酸来讲有20种(也有说22或者26种的)ARNDCEQGHILKMFPSTWYV(UO(BZJX)),那么每个字母所代表的信息量为:
如果说三个碱基对应一个氨基酸,那其信息量是2*3=6 ==> 4.3,所以三个碱基的信息量足以转换成一个氨基酸的信息量。
那么熵就是整个系统的总的平均信息量:
知道了这一点,我们可以想象一下将它使用到基模上是会代表什么?其实就是基模所提供的总的信息量。
相对熵的算法是一种比较两种分布的算法。我们来看一眼Kullback–Leibler divergence (information gain)的公式:
我们假设两个分布,一个是不受约束的分布q(X),一个是受约束的分布p(X)。我们相知道两个分布是不是一样的,我们使用上面的公式,如果两分布完全一样,那么就等于0,于是两者的相对熵就是0。
我们再来看平均对数似然率(ALLR)算法,它其实是来源于互信息(Mutual Information)这个概念,它的公式为
它是对称的
它与相对熵的关系为:
而在stromo文章中是这样描述的:
其中i和j是需要比较的两列,每一列都有ACGT的出现次数计数,称为或者,而对于每一列还可以计算出ACGT出现的频率计数,计为或者。在他们所提供的MatAlign基模比对工具中就是使用的这一算法来计算两基模的距离的:Dist = ALLR(A:A) + ALLR(B:B) – 2*ALLR(A:B)。这一公式与互信息的公式完全一致。这现次说明一个问题,生物学中的很多算法都不具有原创性,只是将数学工具进行了一个包装而已。
但是基于信息论的算法有一个缺点,那就是如果两个基模的长度不一样的时候,它们包含的信息量的差别并不一定代表两者的差别。比如说如果一个基模完全是另一个基模的一部分,那么它的信息量会小于另一个基模,如果这时需要比较第三个基模,其与长的那个的信息的差别甚至小于短的那个基模时,就会得出第三个基模的与长的基模的距离甚至小于长基模与短基模的距离。这显然是错误的。
其实上面的这个问题,在现有的算法当中都存在。如何克服,还是一个问题。有一种解决办法就是截短。但也不一定就总是有效。
STMAP工具就是一个集合了上述所有算法的基模比对工具。但遗憾的是它提供的距离值的分辨率不足,很多不同的基模都会得出距离为0的情况。
DNA binding motif比对算法的更多相关文章
- 笔记 Bioinformatics Algorithms Chapter2
Chapter2 WHICH DNA PATTERNS PLAY THE ROLE OF MOLECULAR CLOCKS 寻找模序 一. 转录因子会结合基因上游的特定序列,调控基因的转录表达,但是在 ...
- 广州CBC2019
CBC2019-day1 25 August 2019 on 学术前沿huyujia 8月24日上午,CBC2019正式开幕.主持人首先对大会情况以及与会嘉宾做了简要介绍:紧接着,校领导.大会主席以及 ...
- Massively parallel supercomputer
A novel massively parallel supercomputer of hundreds of teraOPS-scale includes node architectures ba ...
- 用variant的数据来推导基因表达 | Imputation of Expression Using PrediXcan
一个工具的逻辑得足够完善.意义足够重大,才有资格发在NG上. A gene-based association method for mapping traits using reference tr ...
- DNA motif 搜索算法总结
DNA motif 搜索算法总结 2011-09-15 ~ ADMIN 翻译自:A survey of DNA motif finding algorithms, Modan K Das et. al ...
- 一个简单算法题引发的思考<DNA sorting>(about cin/template/new etc)
首先是昨天在北京大学oj网上看到一个简单的算法题目,虽然简单,但是如何完成一段高效.简洁.让人容易看懂的代码对于我这个基础不好,刚刚进入计算机行业的小白来说还是有意义的.而且在写代码的过程中,会发现自 ...
- LeetCode-Repeated DNA Sequences (位图算法减少内存)
Repeated DNA Sequences All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, ...
- DNA比对算法:BWT
DNA比对算法:BWT BWT算法,实质上是前缀树的一种实现.那么什么是前缀树呢? 一.前缀树 对于问题p in S?如果S=rpq,那么p为S前缀rp的一个后缀. 于是,为了判断p in S 是否成 ...
- 利用Needleman–Wunsch算法进行DNA序列全局比对
生物信息学原理作业第二弹:利用Needleman–Wunsch算法进行DNA序列全局比对. 具体原理:https://en.wikipedia.org/wiki/Needleman%E2%80%93W ...
随机推荐
- 文件系统性能测试--iozone
iozone 一个文件系统性能评测工具,可以测试Read, write, re-read,re-write, read backwards, read strided, fread, fwrite, ...
- 序列化 ,hashlib ,configparser ,logging ,collections模块
# 实例化 归一化 初始化 序列化 # 列表 元组 字符串# 字符串# .......得到一个字符串的结果 过程就叫序列化# 字典 / 列表 / 数字 /对象 -序列化->字符串# 为什么要序列 ...
- Wechall 部分WP
前言: 开始打CTF,掌握一些新的姿势与知识. 这里我选择的平台是Wechall.这里从简单到难 WP部分: Training: Get SourcedAnswer: 查看网页源代码 Training ...
- openlayers-热地图加载(完整版及代码)
//地圖加載function mapInit(data){ //底图// var raster = new ol.layer.Tile({// source: new ol.source.Stamen ...
- leetcode415
public class Solution { public string AddStrings(string num1, string num2) { //判断num1和num2的长度,进行对齐 i ...
- leetcode167
public class Solution { public int[] TwoSum(int[] numbers, int target) { Dictionary<int, int> ...
- node 图片上传功能
node 代码: var http = require("http"); var express = require('express') app = express(), for ...
- spring Ioc和DI
spring的“控制反转”和“依赖注入”,个人看来是一个意思. 传统java程序中,使用一个对象的时候,都需要先new Object()创建一个新对象,才能使用.对象的控制权,在程序手里. 使用spr ...
- 揭秘Java架构技术体系
Web应用,最常见的研发语言是Java和PHP. 后端服务,最常见的研发语言是Java和C/C++. 大数据,最常见的研发语言是Java和Python. 可以说,Java是现阶段中国互联网公司中,覆盖 ...
- YII 使用modules下的css,js,img
用YII assets 1.assets的作用是方便模块化,插件化的,一般来说出于安全原因不允许通过url访问protected下面的文件,但是我们又希望将module单独出来,所以需要使用发布,即将 ...