繁体   English   中英

基因DNA序列优化的算法选项? (与TSP有关,动态编程)

[英]Algorithm Options for Gene DNA Sequence Optimization? (related to TSP, dynamic programming)

以下问题专门用于生物技术应用,但可以说明其他领域类似问题的一般原理。 这是一个与旅行商问题相关的NP难题,我很好奇可以使用哪种算法来得出解决方案。

简短的生物学背景 :蛋白质由20个氨基酸组成。 DNA由4个碱基组成-A,C,G,T。蛋白质的DNA序列决定氨基酸的序列-3个DNA碱基的每个连续序列(单位称为密码子)编码一个氨基酸。 单个氨基酸可以由多个密码子编码,例如,缬氨酸有4种编码方式。

并非所有密码子都相等-其中某些密码子的处理速度比其他密码子快。 另外,并非所有密码子对都相等-一些对比其他对慢。

这意味着对于一个特定的100个氨基酸的基因(300个DNA碱基),有许多方法可以编码相同的氨基酸序列,但是具有非常不同的特性,例如加工速度。

给定一个具有相应速度值的密码子对表,我们想编写一种算法,该算法可以输出所需速度的序列 ,例如最快和最慢的可能序列,以及它们之间的梯度。 输入的是编码基因的DNA序列,密码子对字典及其各自的速度得分(-1至1)。 输出是优化的DNA序列及其整体速度得分(可以表示为所有密码子对得分的总和)。 氨基酸序列必须保持相同。

例如 :如果我们有编码3个氨基酸的序列AAATTTGGG,并且我们的密码子对得分为:

AAATTT = -0.5

TTTGGG = -0.5

那么此序列的分数可能为-1。

现在,如果我们还有一对替代品,我们可以评估不同的可能性:

AAATTG = -0.7 AAATTC = -0.3

TTGGGC = +0.2 TTCGGA = -1.0

人们会发现基于此信息的最佳序列是AAATTCGGA,因为它的总值为-1.3。

这个问题的复杂性当然在于密码子对对所有周围密码子对的影响。

完整的密码子对图将具有61 * 61的条目(因为3个密码子会停止基因的读取)。

====

问题

我认为这是一个NP难题,与TSP有关系。 我已经看到一种使用模拟退火算法的方法。 我很好奇是否还有其他有见地的方法来考虑这个问题,以及相应的算法和试探法以产生所需的输出。

如果是动态编程,哪种方法合适?

此外,我们如何使用该算法创建速度得分的梯度,而不仅仅是最大值和最小值?

使用遗传算法,您应该能够获得实现所需目标的序列。 假设您的目标是x的速度,则可以创建一组基因-每个基因编码相同的基因,但编码不同的密码子。 然后选择,交配和变异数代,直到获得x(或足够接近)为止。 突变/重组的元件必须处于密码子水平(与核苷酸水平相对)。 要获得一系列具有不同速度的序列,请针对不同的目标x多次运行该算法。

获得特定序列最快(或最慢)的编码应该是一个直接的动态编程问题。 将每个3个氨基酸组视为一个64个字符的字母中的一个字符。 然后,在结果字符串的每个点上,您都可以选择几个产生所需氨基酸的字母,并且希望最大化(最小化)与每个相邻字母对关联的总和。

从左到右,在每个点上为每个可能的字符计算出终止于该字符的最大(最小)序列。 每个角色最多有64种可能性。 给定最多n个字符的解决方案,您可以在此处使用该答案来计算最多n + 1个字符的解决方案-只需获取n和n + 1个字符的分数并将其加到已经计算出的最佳答案中即可最多n个字符-将找到的每个字符的最佳答案保持在n + 1。

要获得具有中等分数的答案,一种方法是仅生成产生正确氨基酸序列的随机答案。 另一种方法是将产生最大分数的答案部分与产生最小分数的答案混合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM