创建具有相似自由度的所有可能组合

时间:2013-10-02 08:28:25

标签: python regex combinations bioinformatics itertools

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

问题是,我对python或编程很新,但仍然没有想出办法。 最终目标是通过查看所有其他类似的degenrate序列的出现的平均值是否确实小于数字来查找给定字符串(DNA转录本)中的简并序列(正则表达式)是否存在某种偏差。特定简并序列的出现。

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

的Eyal

1 个答案:

答案 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]'....]