我正在尝试在python中执行一个代码,给定来自给定字母表的正则表达式,将提供具有相似自由度的所有可能的替代方案。 例如,如果我的字母表是ACTG(DNA核苷酸),而我的正则表达式是[AG] CG(涵盖ACG或GCG的正则表达式),我想输出[AC] CG(涵盖ACG或CCG的正则表达式) ),[AT] CG(涵盖ACG或TCG的正则表达式),[AG] CC等
问题是,我对python或编程很新,但仍然没有想出办法。 最终目标是通过查看所有其他类似的degenrate序列的出现的平均值是否确实小于数字来查找给定字符串(DNA转录本)中的简并序列(正则表达式)是否存在某种偏差。特定简并序列的出现。
感谢您提供任何帮助或提示,
的Eyal
答案 0 :(得分:0)
感谢您的评论,我设法使用此代码手动执行特定的RegEx(直到我提高我的python技能)(对于RegEx [AGT] [AG] AC [ACT]):
import itertools
def create_pots():
af = []
bf = []
cf = []
df = []
ef = []
gf = []
a = list(itertools.combinations('AGCT', 3))
b = list(itertools.combinations('AGCT', 2))
c = list(itertools.combinations('AGCT', 1))
d = list(itertools.combinations('AGCT', 1))
e = list(itertools.combinations('AGCT', 3))
for i in range(len(a)):
af.append('['+ ''.join(a[(i-1)]) + ']')
for i in range(len(b)):
bf.append('['+''.join(b[(i-1)])+']')
for i in range(len(c)):
cf.append(''.join(c[(i-1)]))
for i in range(len(d)):
df.append(''.join(d[(i-1)]))
for i in range(len(e)):
ef.append('['+''.join(e[(i-1)])+']')
g = list(itertools.product(af, bf, cf, df, ef))
for i in range(len(g)):
gf.append(''.join(g[(i-1)]))
gf.remove('[AGT][AG]AC[ACT]')
return gf
这将返回与我类似的所有可能的RegEx列表:
gf = ['[ACT][GT]CC[ACT]', '[GCT][CT]TT[GCT]', '[GCT][CT]TT[AGC]', '[GCT][CT]TT[AGT]', '[GCT][CT]TT[ACT]', '[GCT][CT]TA[GCT]', '[GCT][CT]TA[AGC]', '[GCT][CT]TA[AGT]', '[GCT][CT]TA[ACT]', '[GCT][CT]TG[GCT]', '[GCT][CT]TG[AGC]', '[GCT][CT]TG[AGT]'....]