2013-10-02 1 views
0

주어진 알파벳의 정규 표현식을 사용하면 비슷한 자유도를 가진 모든 가능한 대안을 찾을 수있는 Python 코드를 작성하려고합니다. 예를 들어 알파벳이 ACTG (DNA nucleotide)이고 정규 표현식이 [AG] CG (ACG 또는 GCG를 포괄하는 정규 표현식) 인 경우 [AC] CG (ACG 또는 CCG), [AT] CG (ACG 또는 TCG를 다루는 정규 표현식), [AG] CC 등비슷한 자유도를 가진 모든 가능한 조합 만들기

문제는 Python이나 프로그래밍에 익숙하지 않고 여전히 이것을하는 방법. 최종 목표는 다른 모든 유사한 탈식 염기 서열의 외견의 평균이 실제로보다 작은지를 관찰함으로써 주어진 문자열 (DNA 전 사물)의 퇴화 서열 (정규 표현)에 대해 특정 바이어스가 있는지를 찾는 것이다. 그 특정 퇴화 된 서열의 출현 수. 어떤 도움이나 힌트

감사합니다,

Eyal 님이 의견

+0

이 질문보기 http://stackoverflow.com/questions/492716/reversing-a-regular-expression-in-python –

+0

'[AG] * CG'는 어떻습니까? 무한한 가능성이있는 RegEx를 어떻게 극복하려고합니까? 발전기를 사용하고 있습니까? – Hbcdev

답변

0

감사합니다, 나는 지금 특정 정규식에 대해 수동으로이 작업을 수행하는 관리 (이 코드를 사용하여 (내 파이썬 능력을 향상까지) 정규식 [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 

좋아 :

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