0

我正在尝试在python中编写一个代码,给定给定字母表的正则表达式,它将提出具有相似自由度的所有可能的替代方案。例如,如果我的字母表是 ACTG(DNA 核苷酸),而我的正则表达式是 [AG]CG(涵盖 ACG 或 GCG 的正则表达式)我想输出 [AC]CG(涵盖 ACG 或 CCG 的正则表达式)、[AT]CG(涵盖 ACG 或 TCG 的正则表达式)、[AG]CC 等

问题是,我对 python 或一般编程非常陌生,但仍然没有找到一种方法来做到这一点。最终目标是通过查看所有其他相似简并序列的出现平均值是否确实小于给定字符串(DNA转录本)中的简并序列(正则表达式)该特定退化序列的外观。

感谢您的任何帮助或提示,

埃亚尔

4

1 回答 1

0

感谢您的评论,我现在设法使用此代码(对于 RegEx [AGT][AG]AC[ACT])手动为特定的 RegEx 执行此操作(直到我提高我的 python 技能):

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]'....]
于 2013-10-03T14:45:28.193 回答