๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿงฌ Biology/๋ฐ”์ด์˜ค ์ฝ”๋”ฉ ๋ฌธ์ œ

[ROSALIND] ์ œํ•œ ์ž๋ฆฌ(restriction site) ์ฐพ๊ธฐ

by HelloRabbit 2023. 6. 16.
728x90

๋ฌธ์ œ ์„ค๋ช…

๋ฐ”์ด๋Ÿฌ์Šค๋Š” ์ž์ฒด ์ฆ์‹์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆ™์ฃผ์˜ ์‹œ์Šคํ…œ์„ ์ด์šฉํ•ด ์ฆ์‹ํ•˜๊ฒŒ ๋œ๋‹ค. ๋ฐ•ํ…Œ๋ฆฌ์˜คํŒŒ์ง€(bacteriophage)๋Š” ๋ฐ•ํ…Œ๋ฆฌ์•„(bacteria)๋ฅผ ์ˆ™์ฃผ๋กœ ์‚ผ๋Š” ๋ฐ”์ด๋Ÿฌ์Šค์ธ๋ฐ ๋ฐ”์ด๋Ÿฌ์Šค๋Š” ์–ด๋–ป๊ฒŒ๋“  ์นจํˆฌํ•ด์„œ ์ž์‹ ์˜ DNA๊ฐ€ ์ฆํญ๋  ์ˆ˜ ์žˆ๊ฒŒ ๋ฐ•ํ…Œ๋ฆฌ์•„์— ์‚ฝ์ž…์„ ํ•˜๋ ค ํ•˜๊ณ , ๋ฐ•ํ…Œ๋ฆฌ์•„๋Š” ์ด๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ์„ธํฌ ๊ธฐ๋Šฅ์„ ๋ณต์žกํ•˜๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ๋ฐ”์ด๋Ÿฌ์Šค๋ฅผ ๊ณต๊ฒฉํ•˜๋Š” ๊ธฐ์ž‘์„ ๊ฐ–์ถ”์—ˆ๋‹ค. ์ œํ•œ ํšจ์†Œ(restriction enzyme)์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ๋‹จ๋ฐฑ์งˆ์€ ๋ฐ”์ด๋Ÿฌ์Šค์˜ DNA๋ฅผ ์ ˆ๋‹จํ•จ์œผ๋กœ์„œ ๋ฐ•ํ…Œ๋ฆฌ์˜คํŒŒ์ง€๊ฐ€ ๊ธฐ๋Šฅ์„ ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋ง‰๋Š”๋‹ค. ์ด๋Ÿฐ ์ œํ•œ ํšจ์†Œ๋Š” ์–ด๋–ค DNA๋ฅผ ์ฐพ์•„ ์ ˆ๋‹จํ•  ์ˆ˜ ์žˆ์„๊นŒ?

์ œํ•œ ํšจ์†Œ๋Š” homodimer์ด๋ฏ€๋กœ 2๊ฐœ์˜ ๋˜‘๊ฐ™์€ ๋‹จ๋ฐฑ์งˆ ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๊ฐ ๊ตฌ์กฐ๋Š” ์ œํ•œ ํšจ์†Œ์—์„œ DNA์˜ ์ด์ค‘ ๊ฐ€๋‹ฅ ์ค‘ ํ•œ ๊ฐ€๋‹ฅ์”ฉ ์ ˆ๋‹จํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋Š”๋ฐ ํƒ€๊ฒŸํ•˜๋Š” ์„œ์—ด์€ 4 ~ 12 bp ๊ธธ์ด์ด๋‹ค. ํƒ€๊ฒŸ ์„œ์—ด์ด ์–‘์ชฝ ๊ฐ€๋‹ฅ์— ์กด์žฌํ•œ๋‹ค๋ฉด ๋ฐ•ํ…Œ๋ฆฌ์˜คํŒŒ์ง€์˜ DNA๊ฐ€ ์ ˆ๋‹จ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง€๊ฒŒ ๋˜๊ณ , ์˜ค๋žœ ์ง„ํ™” ๊ธฐ๊ฐ„์„ ๊ฑฐ์ณ ๋Œ€๋ถ€๋ถ„์˜ ์ œํ•œ ํšจ์†Œ๋Š” ์ด์ค‘ ๊ฐ€๋‹ฅ์— ๋‚˜๋ž€ํžˆ ์กด์žฌํ•˜๋Š” ๊ณณ์„ ํƒ€๊ฒŸํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์ฆ‰, ํƒ€๊ฒŸ ์„œ์—ด์ด ์ƒ๋ณด์ ์ธ ์„œ์—ด์—๋„ ๊ฑฐ๊พธ๋กœ ์กด์žฌํ•˜๋Š” ๊ตฌ์—ญ์„ ํƒ€๊ฒŸํ•˜๊ฒŒ ๋œ๋‹ค.

๋ฌธ์ œ (ํ’€์–ด๋ณด๊ธฐ)

DNA ์„œ์—ด์ด ์—ญ ํŒฐ๋ฆฐ๋“œ๋กฌ(reverse palindrome)์ด๋ผ๋Š” ๊ฒƒ์€ ์ƒ๋ณด์ ์ธ ์„œ์—ด์ด ๋’ค์ง‘ํžŒ ๊ฒƒ๊ณผ ์„œ์—ด์ด ๊ฐ™์„ ๋•Œ๋ฅผ ์–˜๊ธฐํ•œ๋‹ค. ์ฆ‰, GCATGC๋Š” ์ƒ๋ณด์ ์ธ ์„œ์—ด์ธ CGTACG๋ฅผ ๊ฑฐ๊พธ๋กœ ํ•œ ๊ฒƒ๊ณผ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ์—ญ ํŒฐ๋ฆฐ๋“œ๋กฌ์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์—ญ ํŒฐ๋ฆฐ๋“œ๋กฌ DNA ์„œ์—ด์˜ ์—์‹œ

DNA ์„œ์—ด์ด FASTA ํŒŒ์ผ ํ˜•์‹์œผ๋กœ ์ฃผ์–ด์กŒ์„ ๋•Œ ๊ธธ์ด๊ฐ€ 4 ~ 12 bp ์ธ ์—ญ ํŒฐ๋ฆฐ๋“œ๋กฌ ์„œ์—ด์˜ ์‹œ์ž‘์ ๊ณผ ๊ธธ์ด๋ฅผ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜์‹œ์˜ค (์ถœ๋ ฅ ์ˆœ์„œ๋Š” ์ƒ๊ด€ ์—†์Œ).

์˜ˆ์‹œ

>Rosalind_24
TCAATGCATGCGGGTCTATATGCAT

์˜ˆ์ƒ ๊ฒฐ๊ณผ

4 6
5 4
6 6
7 4
17 4
18 4
20 6
21 4

 

ํ•ด๊ฒฐ

# DNA ์„œ์—ด์„ ์ž…๋ ฅ๊ฐ’์œผ๋กœ ์ฃผ์—ˆ์„ ๋•Œ ์ƒ๋ณด์ ์ธ ์„œ์—ด ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜
def complement_dna(s):
    return s.upper().replace('A', 't').replace('T', 'a').replace('G', 'c').replace('C', 'g').upper()

# ์ œํ•œ ์ž๋ฆฌ ์ฐพ๋Š” ํ•จ์ˆ˜
def restriction_site(s):
    comp_s = complement_dna(s)  # ์ƒ๋ณด์  ์„œ์—ด

    # k๊ฐ€ 4 ~ 12 ์ธ ๋ชจ๋“  k-mer๋ฅผ ํ™•์ธํ•ด์„œ ์ƒ๋ณด์  ์„œ์—ด๊ณผ ์—ญ ํŒฐ๋ฆฐ๋“œ๋กฌ์ธ ์„œ์—ด์„ ์ฐพ๋Š” for๋ฌธ
    for k in range(4,13):
        for i in range(len(s)-k+1):
            if s[i:i+k] == comp_s[i:i+k][::-1]:
                print(i+1, k, file=res)

res = open('result.txt', 'w')
# FASTA ํŒŒ์ผ์— ์žˆ๋Š” DNA ์„œ์—ด ๊ฐ€์ ธ์˜ค๊ธฐ
with open('rosalind_revp.txt', 'r') as f:
    s = ''
    for line in f.readlines():
        if not line.startswith('>'):
            s += line.strip()
    
    restriction_site(s)
res.close()

 

 

 

๋Œ“๊ธ€