728x90
๋ฌธ์ ์ค๋ช
DNA์์ ์๋ณด์ ์ธ mRNA ์์ด์ ๋ง๋ค๊ณ , mRNA๊ฐ ๋จ๋ฐฑ์ง๋ก ๋ฒ์ญ๋๋ค. mRNA ์์ด์ด ๋จ๋ฐฑ์ง๋ก ๋ฒ์ญ๋ ๋ ํญ์ mRNA์ ์ ์ฒด ์์ด์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. mRNA ์์ด ์ค start codon (AUG)๊ฐ ์๋ ๋ชจ๋ ๊ณณ์์ ๋ฒ์ญ์ด ๊ฐ๋ฅํ๊ณ ๋ชจ๋ end codon (UAG, UAA, UGA)์์ ๋ฒ์ญ์ด ์ข ๋ฃ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก mRNA์์ ๋ฒ์ญ์ด ์์๋ ์ ์๋ ์์ ์ ์ฒซ๋ฒ์งธ, ๋๋ฒ์งธ, ์ธ๋ฒ์งธ ์ผ๊ธฐ์์ด์ด ์๋ค. ์ด๊ฒ์ three frame translation์ด๋ผ ๋ถ๋ฅธ๋ค.
ํ์ง๋ง DNA์๋ ์๋ณด์ ์ธ ๋ฐ๋ ์์ด์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์ด ์์ด๊น์ง ๊ณ ๋ คํ๋ค๋ฉด ๋จ๋ฐฑ์ง ๋ฒ์ญ์ ์์์ด ๊ฐ๋ฅํ ๊ณณ์ ์ด6๊ณณ์ด๋ค. ์ด๋ ๊ฒ ๋ฒ์ญ์ด ๊ฐ๋ฅํ ๊ตฌ๊ฐ์ open reading frame (ORF)์ด๋ผ ๋ถ๋ฅธ๋ค. ์ด๋ฒ ๋ฌธ์ ์์๋ six frame translation์ ์ฝ๋๋ก ๊ตฌํํ๋ ๋ฌธ์ ์ด๋ค.
๋ฌธ์ (Open Reading Frames)
์ต๋ ๊ธธ์ด๊ฐ 1 kbp์ธ DNA ์์ด์ด FASTA ํ์ผ ํ์์ผ๋ก ์ฃผ์ด์ก์ ๋ ๊ฐ๋ฅํ ๋ชจ๋ ๋จ๋ฐฑ์ง ์์ด์ ์ถ๋ ฅํ์์ค.
์์
>Rosalind_99
AGCCATGTAGCTAACTCAGGTTACATGGGGATGACCCCGCGACTTGGATTAGAGTCTCTTTTGGAATAAGCCTGAATGATCCGAGTAGCATCTCAG
์์ ๊ฒฐ๊ณผ
MLLGSFRLIPKETLIQVAGSSPCNLS
M
MGMTPRLGLESLLE
MTPRLGLESLLE
ํด๊ฒฐ
# RNA ์์ด์ ์
๋ ฅ๊ฐ์ผ๋ก ์ฃผ์์ ๋ ์๋ณด์ ์ธ RNA ์์ด์ ๋ฐํํ๋ ํจ์
def rev_complement_mrna(s):
return s[::-1].upper().replace('A', 'u').replace('U', 'a').replace('G', 'c').replace('C', 'g').upper()
codon = {}
# ๊ฐ codon์ ๋งค์น๋๋ ์๋ฏธ๋
ธ์ฐ ๋์
๋๋ฆฌ ๋ง๋ค๊ธฐ
with open("aa_codon.txt", "r") as f:
for line in f.readlines():
aa = line.split()
for i in range(0, len(aa), 2):
codon[aa[i]] = aa[i+1]
# 6 frame์ ๊ณ ๋ คํด์ RNA ์์ด์ ๋จ๋ฐฑ์ง๋ก ๋ฒ์ญํ๋ ํจ์
def six_frame_translation(rna):
rev_rna = rev_complement_mrna(rna)
proteins = set() # ๋๊ฐ์ ๋จ๋ฐฑ์ง ์์ด ์ ๊ฑฐํ๊ธฐ ์ํด set()์ ์ฌ์ฉ
# 3 frame๋ง ๊ณ ๋ คํด์ ๋จ๋ฐฑ์ง๋ก ๋ฒ์ญํ๋ ํจ์
def three_frame_translation(rna):
for i in [0,1,2]:
protein = ''
for j in range(i, len(rna)-3, 3):
aa = rna[j:j+3]
# ๋จ๋ฐฑ์ง ์์ด์ด ๋ง๋ค์ด์ง๋ ์ค์ด๋ฉด ์ด์ด๋๊ฐ๊ธฐ
if protein:
if codon[aa] == 'Stop':
proteins.add(protein)
protein = ''
else:
protein += codon[aa]
# ๋จ๋ฐฑ์ง ์์ด์ด ์๊ณ codon์ด AUG์ผ ๋ ๋จ๋ฐฑ์ง ๋ฒ์ญ ์์ํ๊ธฐ
elif protein == '' and aa == 'AUG':
protein += codon[aa]
three_frame_translation(rna)
three_frame_translation(rev_rna)
frags = set()
for protein in proteins:
temp = protein.split('M')
# ๊ฐ ๋จ๋ฐฑ์ง ์์ด๋ง๋ค ์ค๊ฐ์ M์ ํฌํจํ๊ณ ์๋ค๋ฉด ์ถ๊ฐ์ ์ธ ๋จ๋ฐฑ์ง ์์ด๋ก ์ธ์ํ๊ธฐ
if len(temp) > 2:
for i in range(2, len(temp)):
frags.add('M' + ''.join(temp[i:]))
# proteins์ frags์ ์๋ ๋จ๋ฐฑ์ง ์์ด ๋ชจ๋ ๋ฐํํ๊ธฐ
return proteins | frags
# ์์ ๊ฐ์ ธ์ค๊ธฐ
with open('rosalind_orf.txt', 'r') as f:
seq = ''
for line in f.readlines():
if not line.startswith(">"):
seq += line.strip()
rna = seq.upper().replace('T', 'U')
proteins = six_frame_translation(rna)
for protein in proteins:
print(protein)
'๐งฌ Biology > ๋ฐ์ด์ค ์ฝ๋ฉ ๋ฌธ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ROSALIND] ์ ํ ์๋ฆฌ(restriction site) ์ฐพ๊ธฐ (0) | 2023.06.16 |
---|---|
[ROSALIND] ๋ถ๋ถ์ ์์ด (0) | 2023.06.15 |
[ROSALIND] ๋จ๋ฐฑ์ง ์์ด์์ mRNA ์์ด ์์ธกํด๋ณด๊ธฐ (0) | 2023.05.29 |
[ROSALIND] DNA ์์ด์์ motif ์ฐพ๊ธฐ (0) | 2023.05.28 |
[ROSALIND] DNA์ ์ธํธ๋ก (intron) ์์ญ ์ ๊ฑฐ ํ ๋จ๋ฐฑ์ง๋ก ๋ฒ์ญ (0) | 2023.05.27 |
๋๊ธ