Potrzebuję pomocy przy wyrażeniu regularnym

0

Witam,

Mam mały problem z wyrażeniami. W zadaniu z bioinformatyki mam zamienić wyrażenie regularne z postaci aminokwasowej na nukleotydową.

Oto tablica do tłumaczenia aminokwasów na nukleotydy:

table = {
    'TTT': 'F', 'TTC': 'F', 'TTA': 'L', 'TTG': 'L', 'TCT': 'S',
    'TCC': 'S', 'TCA': 'S', 'TCG': 'S', 'TAT': 'Y', 'TAC': 'Y',
    'TGT': 'C', 'TGC': 'C', 'TGG': 'W', 'CTT': 'L', 'CTC': 'L',
    'CTA': 'L', 'CTG': 'L', 'CCT': 'P', 'CCC': 'P', 'CCA': 'P',
    'CCG': 'P', 'CAT': 'H', 'CAC': 'H', 'CAA': 'Q', 'CAG': 'Q',
    'CGT': 'R', 'CGC': 'R', 'CGA': 'R', 'CGG': 'R', 'ATT': 'I',
    'ATC': 'I', 'ATA': 'I', 'ATG': 'M', 'ACT': 'T', 'ACC': 'T',
    'ACA': 'T', 'ACG': 'T', 'AAT': 'N', 'AAC': 'N', 'AAA': 'K',
    'AAG': 'K', 'AGT': 'S', 'AGC': 'S', 'AGA': 'R', 'AGG': 'R',
    'GTT': 'V', 'GTC': 'V', 'GTA': 'V', 'GTG': 'V', 'GCT': 'A',
    'GCC': 'A', 'GCA': 'A', 'GCG': 'A', 'GAT': 'D', 'GAC': 'D',
    'GAA': 'E', 'GAG': 'E', 'GGT': 'G', 'GGC': 'G', 'GGA': 'G',
    'GGG': 'G', }

stop_codons = [ 'TAA', 'TAG', 'TGA']
for codon in stop_codons:
    table[codon] = "*"

A to oryginalne wyrażenie regularne i przetłumaczone przeze mnie:

# oryginalne wyrazenie z zadania
hemoglobina_aminokwasy_wzor = 'G{1,3}.[^P]{2}[RGI]*L+V'
# wyrazenie przetlumaczne przeze mnie
hemoglobina_nukleotydy_wzor = '(GG.){1,3}.{3}([^(CC)].){2}(ATT|ATC|ATA|CG.|GG.)*(TTA|TTG|CT.)+(GT.)'

Dostałem mejla, że źle to przetłumaczyłem. A konkretnie (kawałek) treść brzmi tak:

([(CC)].){2} nie jest równoważne wyrażeniu [P]{2}

Co jest źle? Uwaga: wyrażeń regularnych na co dzień praktycznie nie używam.

0

Podbijam :)

0

To [^P] ma oznaczać dowolny łańcuch składający się z trzech znaków, nie będący żadnym z tych łańcuchów CCT, CCC, CCA, CCG?

0

[^(CC)] nie odpowiada dowolnym dwóm znakom prócz ciągu CC, ale dowolnym dwóm znakom prócz znaków (, C, C, ). Też nie jestem specem:
(([^C].|.[^C]).){2}

1

Co ty właściwie chcesz dopasować tym wyrażeniem regularnym?
Podaj przykładowy ciąg i co am być dopasowane, a co nie!
Posługiwanie się pojęciami biologicznymi na tym forum jest po prostu bezsensu.

0

Wydaje mi się, że brakuje ci do tego jeszcze dwóch kodonów w kolejnym dopasowaniu (R -> AGA, AGG):
(GG.){1,3}.{3}(([^C].|.[^C]).){2}(ATT|ATC|ATA|AGA|AGG|CG.|GG.)*(TTA|TTG|CT.)+(GT.)

0

sirkruk:
Dokładnie to [^P] oznacza aminokwas nie kodowany tymi trójkami nukleotydów.

iooi:
Właśnie sam się też zorientowałem, że tych dwóch kodonów brakuje. Dzięki za wymyślenie tego podwyrażenia :) Podesłałem do prowadzącej, może niedługo sprawdzi i odpisze.

MarekR22:
Eeee tam. Tyle tych pojęć, że dziecko z gimnazjum by to pojęło w 5 min. Genomy (kawałki genu) można zapisywać w postaci aminokwasowej lub nukleotydowej (chyba :P sam nie pamiętam dokładnie tych pojęć). Tzn trójki nukleotydów kodują aminokwasy - tabelka jest podana w kodzie. Trzeba wymyślić wyrażenie regularne dopasowujące te same aminokwasy w obydwu reprezentacjach.

1 użytkowników online, w tym zalogowanych: 0, gości: 1