我正在编写一个脚本,返回一个DNA序列(带有不明确的字母)是否包含某个子序列(也带有不明确的字母)。你知道吗
我尝试过为序列和子序列创建正则表达式,但没有找到一种方法来确定后者是否出现在前者中。我需要re.search(substring,sequence)
但其中sequence
是另一个正则表达式而不是字符串。你知道吗
这样的事情存在吗?你知道吗
编辑:我尝试过的:
import re
def subseqof(substr,sequence):
substr_exp = ''
sequence_exp = ''
for letter in substr:
for code,expr in zip(['A','C','G','T','R','Y','S','W','K','M','B','D','H','V','N','X'],
['A','C','G','T','[AG]','[CT]','[GC]','[AT]','[GT]','[AC]','[CGT]','[AGT]','[ACT]','[ACG]','[ACGT]','[ACGT]']):
if letter == code:
substr_exp += expr
for letter in sequence:
for code,expr in zip(['A','C','G','T','R','Y','S','W','K','M','B','D','H','V','N','X'],
['A','C','G','T','[AG]','[CT]','[GC]','[AT]','[GT]','[AC]','[CGT]','[AGT]','[ACT]','[ACG]','[ACGT]','[ACGT]']):
if letter == code:
sequence_exp += expr
if re.search(substr_exp,sequence_exp) != None:
return True
else:
return False
如果我理解正确,您需要例如
subseqof(substr='RR', sequence='...AA...')
以及subseqof(substr='AA', sequence='...RR...')
到return True
(在这两种情况下R
都被[AG]
替换)。你知道吗这样的对称或交换正则表达式函数是不存在的。但由于这里只使用了正则表达式功能的一小部分,我们可以很容易地编写一个适当的函数:
相关问题 更多 >
编程相关推荐