在其他两个保守字符串之间提取字符串并允许 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 中的不匹配的主要内容,如果未能解决你的问题,请参考以下文章