序列比对(19)基序发现和中间字符串问题

生物信息学算法解析:从序列比对到差异表达分析的核心技术与实战 生物信息学算法是连接高通量测序数据与生物学洞见的核心桥梁,其本质是解决海量、高噪声生物数据的工程问题。从原理上看,算法设计需在计算效率、准确性与生物学特性间取得平衡,例如利用Burrows-Wheeler变换(BWT)FM-index实现高效的序列比对,或基于负二项分布构建广义线性模型进行差异表达分析。这些技术的价值在于将原始测序信号转化为可解释的基因表达、变异检测等结果,支撑基因组学、转录组学等研究。在应用层面,针对不同场景需进行算法选型:如BWA-MEM适用于基因组重测序,STAR擅长RNA-seq剪 阅读详情

本文介绍了基序发现问题和中间字符串问题。

引言:DNA调控元件

我们知道,DNA调控元件往往是一段相似的DNA序列。理想情况下这些序列完全一致,比如下面这样:
在这里插入图片描述
图片引自《生物信息学算法导论》

但实际上,这些序列不会完全一样,总会有若干位点发生“变异”,从而不同,比如下面这样:
在这里插入图片描述
图片引自《生物信息学算法导论》

如果给定一组DNA序列(暂且假定它们长度相等),那么如何找出这些相似的序列呢?由此可以引出两个问题,即基序发现问题和中间字符串问题。

一、基序发现问题

要说明基序是什么,首先介绍一下序列剖面(Profile)。

假设给定ttt条长度为nnnDNADNADNA序列,我们为其中每条序列选择一个起点si (i=1,2,...,t)s_i \ (i=1,2,...,t)si (i=1,2,...,t),截取该序列中以sis_isi为起点的长度为lll的一个序列,称为一条lll-元组序列。那么这tttlll-元组序列就构成了一个t×lt \times lt×l联配矩阵(alignment matrix),统计该矩阵的每一列中各个碱基出现次数,则构成了一个新的4×l4 \times l4×l的矩阵,称为剖面矩阵(profile matrix)。剖面矩阵各列最大值对应的碱基放到一起构成了一条长度为lll的序列,称为共有序列(consensus)。

比如下图中t=7,l=8t=7, l=8t=7,l=8,序列剖面(Profile)就是一个4×84 \times 84×8的一个矩阵:
在这里插入图片描述
图片引自《生物信息学算法导论》

接下来我们给出一系列符号定义,以便下文的讨论:

我们将这ttt条长度为nnn的序列记为DNADNADNA
定义s⃗={s1,s2,...,st}, 1≤si≤n−l+1, for (i=1,2,...,t)\boldsymbol{\vec{s}} = \{s_1,s_2,...,s_t\}, \ 1 \leq s_i \leq n-l+1, \ for \ (i=1,2,...,t)s={s1,s2,...,st}, 1sinl+1, for (i=1,2,...,t)起始位点向量
定义P(s⃗)\boldsymbol{P}(\boldsymbol{\vec{s}})P(s)t×lt \times lt×l剖面矩阵
将剖面矩阵P(s⃗)\boldsymbol{P}(\boldsymbol{\vec{s}})P(s)中第jjj列的最大值记为MP(s⃗)(j), for (j=1,2,...,l)M_{\boldsymbol{P}(\boldsymbol{\vec{s}})}(j), \ for \ (j=1,2,...,l)MP(s)(j), for (j=1,2,...,l)
共有序列的得分记为Score(s⃗,DNA)=∑j=1lMP(s⃗)(j)Score(\boldsymbol{\vec{s}}, DNA) = \displaystyle \sum_{j=1}^l M_{\boldsymbol{P}(\boldsymbol{\vec{s}})}(j)Score(s,DNA)=j=1lMP(s)(j)

那么,基序发现问题用我们上面的符号表示就是要找到:(1.1)argmaxs⃗ Score(s⃗,DNA)\underset{\boldsymbol{\vec{s}}}{\mathrm{argmax}} \, Score(\boldsymbol{\vec{s}},DNA) \tag{1.1}sargmaxScore(s,DNA)(1.1)
也就是说我们要计算得到:
(1.2)max⁡s⃗ Score(s⃗,DNA)\underset{\boldsymbol{\vec{s}}}{\max} \, Score(\boldsymbol{\vec{s}},DNA) \tag{1.2}smaxScore(s,DNA)(1.2)

二、中间字符串问题

同样地,要讲清楚中间字符串问题,我们首先给出一些符号:

将一个lll-元组序列vvv和一个以sis_isi为起始位点的lll-元组序列的汉明距离记为dH(v,si)d_H(v, s_i)dH(v,si),表示这两个序列中不相同位点的数目;
将一个lll-元组序列vvv以及一组分别以s⃗={s1,s2,...,st}\boldsymbol{\vec{s}} = \{s_1,s_2,...,s_t\}s={s1,s2,...,st}作为起始位点的lll-元组序列的总汉明距离表示为dH(v,s⃗)=∑i=1tdH(v,si)d_H(v,\boldsymbol{\vec{s}}) = \displaystyle \sum_{i=1}^t d_H(v,s_i)dH(v,s)=i=1tdH(v,si)
将一个lll-元组序列与一组DNADNADNA序列的任意起始位点的总汉明距离的最小值记为TotalDistance(v,DNA)=min⁡s⃗ dH(v,s⃗)TotalDistance(v,DNA) = \underset{\boldsymbol{\vec{s}}}{\min} \, d_H(v,\boldsymbol{\vec{s}})TotalDistance(v,DNA)=smindH(v,s)

那么,中间字符串用上述符号表示就是要找到:
(2.1)argminv min⁡s⃗ dH(v,s⃗)\underset{v}{\mathrm{argmin}} \, \underset{\boldsymbol{\vec{s}}}{\min} \, d_H(v,\boldsymbol{\vec{s}}) \tag{2.1}vargminsmindH(v,s)(2.1)
也就是说我们要计算得到:
(2.2)min⁡v min⁡s⃗ dH(v,s⃗)\underset{v}{\min} \, \underset{\boldsymbol{\vec{s}}}{\min} \, d_H(v,\boldsymbol{\vec{s}}) \tag{2.2}vminsmindH(v,s)(2.2)

三、两个问题是等价的

我们可以证明计算式子(1.2)和计算(2.2)是一回事。
首先,根据第一部分的定义,式(1.2)其实就是:
(3.1)max⁡s⃗ Score(s⃗,DNA)=max⁡s⃗ ∑j=1lMP(s⃗)(j)\underset{\boldsymbol{\vec{s}}}{\max} \, Score(\boldsymbol{\vec{s}},DNA) =\underset{\boldsymbol{\vec{s}}}{\max} \, \displaystyle \sum_{j=1}^l M_{\boldsymbol{P}(\boldsymbol{\vec{s}})}(j) \tag{3.1}smaxScore(s,DNA)=smaxj=1lMP(s)(j)(3.1)

而式(2.2)也可以做变换。我们再给出一些符号,假定:

lll-元组序列v={v1,v2,...,vl}v = \{v_1,v_2,...,v_l\}v={v1,v2,...,vl}
第一部分涉及到的t×lt \times lt×l阶的联配矩阵为As⃗ijA_{\boldsymbol{\vec{s}}}^{ij}Asij, 其中i=1,2,...,t; j=1,2,...,l。i=1,2,...,t; \, j=1,2,...,l。i=1,2,...,t;j=1,2,...,l
定义S(x,y)S(x, y)S(x,y)来判断碱基xxx和碱基yyy是否相同,即:
S(x,y)={1,if x=y0,if x≠y S(x,y)= \begin{cases} 1, & \text {if $x = y$} \\ 0, & \text{if $x \neq y$} \end{cases} S(x,y)={1,0,if x=yif x̸=y
定义D(x,y)D(x, y)D(x,y)来判断碱基xxx和碱基yyy是否不同,即:
D(x,y)={0,if x=y1,if x≠y D(x,y)= \begin{cases} 0, & \text {if $x = y$} \\ 1, & \text{if $x \neq y$} \end{cases} D(x,y)={0,1,if x=yif x̸=y

那么:
min⁡v min⁡s⃗ dH(v,s⃗)=min⁡s⃗ min⁡v dH(v,s⃗)=min⁡s⃗ min⁡v∑i=1tdH(v,si)=min⁡s⃗ min⁡v∑i=1t∑j=1lD(As⃗ij,vj)=min⁡s⃗ min⁡v∑j=1l∑i=1tD(As⃗ij,vj)=min⁡s⃗∑j=1lmin⁡vj∑i=1tD(As⃗ij,vj)=min⁡s⃗∑j=1lmin⁡vj [t−∑i=1tS(As⃗ij,vj)]=min⁡s⃗∑j=1l[t−max⁡vj∑i=1tS(As⃗ij,vj)]=min⁡s⃗∑j=1l[t−MP(s⃗)(j)]=lt−max⁡s⃗∑j=1lMP(s⃗)(j)=lt−max⁡s⃗ Score(s⃗,DNA)\begin{aligned} \underset{v}{\min} \, \underset{\boldsymbol{\vec{s}}}{\min} \, d_H(v,\boldsymbol{\vec{s}}) & = \underset{\boldsymbol{\vec{s}}}{\min} \, \underset{v}{\min} \, d_H(v,\boldsymbol{\vec{s}}) \\ & = \underset{\boldsymbol{\vec{s}}}{\min} \, \underset{v}{\min} \displaystyle \sum_{i=1}^t d_H(v, s_i) \\ & = \underset{\boldsymbol{\vec{s}}}{\min} \, \underset{v}{\min} \displaystyle \sum_{i=1}^t \sum_{j=1}^l D(A_{\boldsymbol{\vec{s}}}^{ij}, v_j) \\ & = \underset{\boldsymbol{\vec{s}}}{\min} \, \underset{v}{\min} \displaystyle \sum_{j=1}^l \sum_{i=1}^t D(A_{\boldsymbol{\vec{s}}}^{ij}, v_j) \\ & = \underset{\boldsymbol{\vec{s}}}{\min} \displaystyle \sum_{j=1}^l \underset{v_j}{\min} \sum_{i=1}^t D(A_{\boldsymbol{\vec{s}}}^{ij}, v_j) \\ & = \underset{\boldsymbol{\vec{s}}}{\min} \displaystyle \sum_{j=1}^l \underset{v_j}{\min} \, \Bigg[t - \sum_{i=1}^t S(A_{\boldsymbol{\vec{s}}}^{ij}, v_j) \Bigg] \\ & = \underset{\boldsymbol{\vec{s}}}{\min} \displaystyle \sum_{j=1}^l \Bigg[t - \underset{v_j}{\max} \sum_{i=1}^t S(A_{\boldsymbol{\vec{s}}}^{ij}, v_j) \Bigg] \\ & = \underset{\boldsymbol{\vec{s}}}{\min} \displaystyle \sum_{j=1}^l \Bigg[t - M_{\boldsymbol{P}(\boldsymbol{\vec{s}})}(j) \Bigg] \\ & = lt - \underset{\boldsymbol{\vec{s}}}{\max} \displaystyle \sum_{j=1}^lM_{\boldsymbol{P}(\boldsymbol{\vec{s}})}(j) \\ & = lt - \underset{\boldsymbol{\vec{s}}}{\max} \, Score(\boldsymbol{\vec{s}},DNA) \end{aligned}vminsmindH(v,s)=sminvmindH(v,s)=sminvmini=1tdH(v,si)=sminvmini=1tj=1lD(Asij,vj)=sminvminj=1li=1tD(Asij,vj)=sminj=1lvjmini=1tD(Asij,vj)=sminj=1lvjmin[ti=1tS(Asij,vj)]=sminj=1l[tvjmaxi=1tS(Asij,vj)]=sminj=1l[tMP(s)(j)]=ltsmaxj=1lMP(s)(j)=ltsmaxScore(s,DNA)

上式中ltltlt是常数。这样,我们就可以看出基序发现问题和中间字符串问题在求解上其实是一回事。

小结

本文内容基于《生物信息学算法导论》,笔者所作的工作就是将算法推导过程补充详细。至于实现代码,我们会在后续文章中讨论。

(公众号:生信了)

生物信息学核心算法实战:从序列比到差异表达分析 在生物信息学领域,处理海量、高维的组学数据是核心挑战。其基本原理在于通过计算模型统计算法,将原始的DNA序列、RNA表达量等观测数据,转化为可解释的生物学洞见,从而揭示基因功能、调控机制与表型间的关联。这一过程的技术价值在于,它极大地拓展了生物学研究的尺度与精度,解决了传统实验手段在通量复杂度上的瓶颈。在应用场景上,从基础的序列比对、变异检测,到表达定量功能富集分析,构成了从数据到生物学发现的标准分析链条。本文聚焦于生物信息学算法中的序列比对、变异检测表达分析等核心环节,结合BWA、GATK、DES 阅读详情

相关推荐

21、生物序列基序识别算法研究与分析

本文介绍了两种生物序列基序识别方法:MCL-WMR算法基于信息论的非共识基序检测方法。MCL-WMR利用图聚类技术在复杂数据中识别弱基序,表现出高准确性处理挑战性问题的能力;基于信息论的方法则聚焦于挖掘蛋白质家族比对中非共识的局部偏好,为理解蛋白质功能多样性提供了新视角。两种方法各有优势,相互补充,为生物信息学研究提供了全面的解决方案。

moon9的博客 128

【生信MOOC】生物序列比对工具——多序列比对

【生信MOOC】生物序列比对工具2——多序列比对 1、多序列比对的定义用途 2、多序列比对的要求 3、多序列比对工具——EMBL - Clustal Omega 4、多序列比对工具——EMBL - TCOFFEE - Expresso 5、多序列比对的保存格式 6、多序列比对结果编辑——jalview 7、寻找保守区域:序列标识图 WebLogo 8、寻找保守区域:序列基序 MEME 9、寻找保守区域:PRINTS 指纹图谱数据库

weixin_40695088的博客 2万+

19、蛋白质结构预测方法全解析

本文全面解析了蛋白质结构预测的主要方法,包括比较建模、折叠识别、新折叠方法、从头蛋白质结构预测以及基于网络的建模技术。详细介绍了每种方法的原理、操作步骤、优缺点适用场景,并提供了实际应用案例技术发展趋势分析,旨在为相关研究者提供系统性的参考指导。

dream的博客 354

Jalview | 多序列比对图中显示序列标识

上篇多序列比对软件Jalview的安装及使用体验介绍了Jalview可一站式完成:多序列比较、图形的美化及编辑;使用的比对方法、算法丰富;图形美观、颜色多样,被不少遗传领域SCI文章所使用...

悟道西方 5428

序列比较(上篇)

认识序列 蛋白质序列 由20个不同的字母(氨基酸)排列组合而成。 核酸序列 包括DNA序列RNA序列。由4个不同的字母(碱基)排列组合而成。 FASTA格式 第一行:大于号加名称或其它注释。 第二行以后:每行60个字母(也有80的,不一定)。 序列相似性 数据库中的序列相似性搜索 对于一个蛋白质或核酸序列,你需要从序列数据库中找到与它相同或相似的序列。不可能再用眼睛去比较每一对序列,因为数据库中有太多序列,甚至用眼睛去比较一对序列都是不可能做到的。 序列相似性的重要性 相似的序列

qq_40459859的博客 5408

序列比较(下篇)

多序列比对介绍 多序列比对,指对两条以上的生物序列进行全局比对多序列比对的用途 确认:一个未知的序列是否属于某个家族。 建立:系统发生树,查看物种间或者序列间的关系。 模式识别:一些特别保守的序列片段往往对应重要的功能区域,通过多序列比对,可以找到这些保守的片段。 已知推未知:把已知有特殊功能的序列片段通过多序列比对做成模型,然后根据该模型推测未知的序列是否也具有该功能。 其他:预测蛋白质/RNA的二级结构。 多序列比对的算法 目前所有的多序列比对工具都不是很完美的,它们都使用一种近似的

qq_40459859的博客 2760

序列比对(20)基序发现问题的算法及实现代码

前文介绍了基序发现问题中间字符串问题,本文给出了基序发现问题的具体算法实现代码。 基序发现问题的简单算法及伪代码 前文《序列比对19基序发现中间字符串问题》介绍了基序发现问题中间字符串问题,本文将介绍基序发现问题的算法,并给出实现代码。 简单回顾一下,基序发现问题其实就是要找到使得共有序列得分最大的一组起始位点。 argmaxs⃗ Score(s⃗,DN...

生信了 1188

算法导论吃透后的水平_序列比对(二十)——基序发现问题的算法及实现代码

原创:hxj7前文介绍了基序发现问题中间字符串问题,本文给出了基序发现问题的具体算法实现代码。基序发现问题的简单算法及伪代码前文《序列比对(十九)——基序发现中间字符串问题》介绍了基序发现问题中间字符串问题,本文将介绍基序发现问题的算法,并给出实现代码。由于要遍历所有可能的起始位点,所以一种自然的想法是使用递归。但是为了配合后续的分支定界法,我们采用了树结构,并且进行DFS(深度优先搜索)...

weixin_39774644的博客 1535

序列比对(21)中间字符串问题的算法及实现代码

前文介绍了基序发现问题中间字符串问题。本文给出了中间字符串的算法实现代码。 中间字符串问题的简单算法及伪代码 前文《序列比对19基序发现中间字符串问题》介绍了基序发现问题中间字符串问题;《序列比对(20)基序发现问题的算法及实现代码》给出了基序问题的算法实现代码。本文将介绍中间字符串问题的算法,并给出实现代码。 简单回顾一下,中间字符串问题其实就是要找到使得总距离最小的一个lll...

生信了 587

h5怎么拿到字符串的长度_序列比对(二十一)——中间字符串问题的算法及实现代码...

原创: hxj7 前文介绍了基序发现问题中间字符串问题。本文给出了中间字符串的算法实现代码。中间字符串问题的简单算法及伪代码前文《序列比对(十九)——基序发现中间字符串问题》介绍了基序发现问题中间字符串问题;《序列比对(二十)——基序发现问题的算法及实现代码》给出了基序问题的算法实现代码。本文将介绍中间字符串问题的算法,并给出实现代码。由于要遍历所有可能的起始位点,如前文《序列比对(20...

weixin_33063489的博客 433

字符串操作在算法与工程中的核心应用与优化

字符串处理是计算机科学中最基础且应用最广泛的技术之一,作为信息存储传输的基本载体,其操作效率直接影响系统性能。从底层原理看,字符串由字符序列构成,支持索引、切片等核心操作。在算法层面,字符串题目在技术面试中占比超过25%,涉及反转、替换、匹配等高频操作。工程实践中,字符串处理出现在用户输入校验、日志解析、数据清洗等关键场景,例如单次HTTP请求平均涉及37次字符串操作。针对性能优化,双指针算法可实现O(n)时间复杂度的字符串反转,而正则表达式预编译能提升3-5倍匹配速度。在Unicode处理大文本场景下

weixin_30596023的博客 414

调控元件,顺式作用元件反式作用因子

个人笔记

qq_64411728的博客 6320

生物信息之多序列比对,进化树分析,保守位点分析

序列下载与整理 网址:https://www.ncbi.nlm.nih.gov/gene 下载fasta格式序列 输入你想查找的序列,比如Syp基因 进入基因详细信息页面 点击Genbank 如图所示可以下载到fasta格式的序列,注意这里下载的是基因或者蛋白质的全序列 假如你希望得到promoter的基因,可以在如图所示的位置输入起始位点终止位点一般promoter的位点不确定,可以通过将起

Baimoc 10万+

序列比对(十一)——计算符号序列的全概率

原创:hxj7 前文介绍了在知道符号序列后用viterbi算法求解最可能路径。本文介绍了如何使用前向算法后向算法计算符号序列的全概率。 如果一个符号序列中每个符号所对应的状态是已知的,那么这个符号序列出现的概率是容易计算的: 但是,如果一个符号序列中每个符号所对应的状态未知时,该怎么求取这条序列的概率呢?我们知道: 如果我们用穷举法求出所有的P(x,π)是不现实的,因为随着序列长度的增长...

生信了 881

【生信】生物序列比对

1、生物序列比对介绍 2、序列比对算法 基于全局匹配的算法 (1)打分矩阵 (2)动态规划算法 (3)Needleman-Wunsch算法 基于局部匹配的算法 Smith-Waterman算法 Smith-Waterman算法与Needleman-Wunsch算法的区别 启发式搜索算法 BWT((Burrows–Wheeler_transform))算法 3、多序列比对介绍

weixin_40695088的博客 1万+

consensus sequencesequence motif有什么有什么区别?关注者8被浏览6,181

consensus sequence,既共有序列,是在一套相似序列中的每个位置上都由最常出现的残基所组成的DNA或氨基酸序列,决定启动序列的。consensus sequence 保守序列 可以应用在序列比对中,比如可以表示某个氨基酸或某几个氨基酸在进化中保守;sequence motif 序列motif 是基于统计的一段序列,比如可以表示某个转录因子在基因组上面结合位点的序列。sequence motif,既序列基序,可以定义为蛋白质(蛋白质序列)属于一个给定的蛋白质家族。

wangprince2017 1021

序列比对算法

一.生物数据库 1.文献数据库:PubMed(主要是生物医学文献) 2.一级核酸数据库:NCBI,ENA,DDBJ INSDC:由GenBank(美国)、ENA(欧洲)、DDBJ (日本)三大核苷酸数据库组成的联合核苷酸数据库。 序列的FASTA格式:第一行——大于号加名称或其他注释 第二行以后——序列,每行60个字母 3.一级蛋白质数据库(都是通过实验直接测定的) 蛋白质序列数据库:swi...

lin的博客 2万+
上一篇: 序列比对(17)第二部分的小结
下一篇: 序列比对(14)viterbi算法和后验解码的比较
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值