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

2024-09-30 16:19:36 发布

您现在位置:Python中文网/ 问答频道 /正文

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

问题是,我对python或编程很陌生,但还没有找到一种方法。 如果某个序列的某个特定序列的某个序列的某一个退化序列比某个序列的某个平均值要小(如果某个序列的最终出现数比某个序列的平均值要小)。在

谢谢你的帮助和暗示

埃亚尔


Tags: 代码方案序列cgac字母表atdna
1条回答
网友
1楼 · 发布于 2024-09-30 16:19:36

感谢您的评论,我现在使用以下代码(针对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的列表,如:

^{pr2}$

相关问题 更多 >