在其他两个保守字符串之间提取字符串并允许 python 或 R 中的不匹配

Posted

技术标签:

【中文标题】在其他两个保守字符串之间提取字符串并允许 python 或 R 中的不匹配【英文标题】:Extract string between two other conserved strings and allow for mismatches in python or R 【发布时间】:2021-11-06 10:25:55 【问题描述】:

如果这里有重复,我深表歉意。据我搜索,我没有找到答案。

我有数千个大约 50bp(50 个字符)长的 DNA 序列。 我在中间有一个可变序列,范围从 6-30 bp 和 两个保守序列;一个在可变序列的左侧和右侧,长度约为 10 bp! 我的数据是这样的

ATTGCGCGA NAAANNNANNNNNNA CGAAAATTTA
ATTGCGCGA = conserved area on the left (reference)

NAAANNNANNNNNNA = random sequence between 

CGAAAATTTA = conserved area on the right (reference)

到目前为止一切顺利。我知道如何提取保护区之间的字符串; 然而,有时我预计保护区会出现错误。 我想找到一种方法来允许保留区域中的一些不匹配(例如两个或三个不匹配)并提取它们之间并且长度介于 6-30bp。

我的数据是这样的

1 ATTGCGCGA NAAANNNANNNNNNA CGAAAATTTA # it looks good
2 ATTGCGCGA NAAANNNAN  CGAAAATTTA      # it looks good
3 ATTGCGCGA NAA CGAAAATTTA             # the variable sequence is too short
4 ATASGCGCGA NAAGGNNN CGAfATTTA        # two mismatches on the left and two on the right conserved sequences
5 ATASjkCGCGA NAAGGNNN CGAfjfkdfTTA    # more than 3 mismatches at the left area and more than 3 mismatches at the right area
6 ATTGCGCGA NAAGGNNN CGAfjfkdfTTA      # more than 3 mismatches at the left conserved area

我希望我的输出看起来像这样

1 NAAANNNANNNNNNA # it looks good
2 NAAANNNAN       # it looks good
4 NAAGGNNN        # two mismatches on the left and two on the right conserved sequences

!!!重要的 我的数据没有分成有间隙的块。我把它放在这里是为了让它在视觉上易于理解 原始数据是这样的

1 ATTGCGCGANAAANNNANNNNNNACGAAAATTTA # it looks good
2 ATTGCGCGANAAANNNANCGAAAATTTA       # it looks good
3 ATTGCGCGANAACGAAAATTTA             # the variable sequence is too short
4 ATASGCGCGANAAGGNNNCGAfATTTA        # two mismatches on the left and two on the right conserved sequences
5 ATASjkCGCGANAAGGNNNCGAfjfkdfTTA    # more than 3 mismatches at the left area and more than 3 mismatches at the right area
6 ATTGCGCGANAAGGNNNCGAfjfkdfTTA      # more than 3 mismatches at the left conserved area

【问题讨论】:

您能否描述一下什么是匹配/不匹配或错误? 中间块的唯一要求是 6-25bp。错配是指左右保守区域。左右区域的参考分别是ATTGCGCGA和CGAAAATTTA 我在您向问题添加“!!!重要的是我的数据没有以有间隙的块...”之前写了我的答案。您必须按照答案中的建议添加拆分逻辑并计算距离。 谢谢 balderman,我会朝着这个方向努力,但我仍然不确定如何将 X 和 Z 连接到参考,但我会继续努力 ***.com/questions/46540062/… 是相关的,并且是解决方案的一部分。如果您需要完整的,请告诉我,我可以尝试 【参考方案1】:

每行有 3 个部分。让我们称它们为 X Y Z。 您对 Y 感兴趣,但您说有时 X 和 Z 会出现一些变化。

您应该使用Levenshtein distance 来检查实际 X 和 Z 与官方 X 和 Z 之间的“距离”。

如果“距离”足够小——你可以拿 Y。

请参阅here 获取 python 库,它将计算距离。

【讨论】:

以上是关于在其他两个保守字符串之间提取字符串并允许 python 或 R 中的不匹配的主要内容,如果未能解决你的问题,请参考以下文章

在网页中的两个已知字符串之间提取文本并存储在变量中

在两个标记之间提取文本并替换字符

Go:从两个字符或其他字符串之间检索字符串

正则表达式在两个字符串(它们是变量)之间提取

如何在两个分隔符之间提取字符串[重复]

提取前两个字符之间的字符