𧬠1.4 λ¦¬λ© νλ μ
1.4 λ¦¬λ© νλ μ
𧬠λ¨λ°±μ§μ λ²μ κ³Όμ μ λ°λμ ATG μ½λμμ μμνκΈ° λλ¬Έμ μ΄κ²μ μ°ΎμμΌλ§ μ΄λκ° λ²μμ μμμ μΈμ§ μ μ μλ€.
𧬠νμ§λ§ μ΄ μ½λμ΄ νμ μμ΄μ μμμ μ μλ κ²μ΄ μλκΈ° λλ¬Έμ μ°Ύλ κ³Όμ μ΄ νμνλ€.
𧬠ATGλ₯Ό μ°ΎκΈ° μν΄μ μΌκΈ°μμ΄μ λλλ κ²μ λ¦¬λ© νλ μμ΄λΌκ³ νλ€.
𧬠첫λ²μ§Έλ¬Έμ, λλ²μ§Έλ¬Έμ, μΈλ²μ§Έλ¬ΈμλΆν° μμνλ λ¦¬λ© νλ μμ΄ μ‘΄μ¬νλ©°, μ΄ μμ΄μ΄ μ£Όνκ°λ₯μ΄ μλλμ κ²½μ°λ κ³ λ €νμ¬ νλμ μΌκΈ° μμ΄μλ μ΄ μ¬μ―κ°μ λ¦¬λ© νλ μμ΄ μ‘΄μ¬νλ€.
1.4.1. μ¬μ―κ°μ 리λ©νλ μμμ DNA μμ΄μ κ³μ°
𧬠DNA μμ΄μ μλ―Έλ
Έμ°μΌλ‘ λ³κ²½ν΄μ£Όλ translate_seq( ) ν¨μλ₯Ό μ΄μ©νμ¬ res 리μ€νΈμ μλ―Έλ
Έμ° μμ΄ μ
λ ₯
𧬠μμ보μμ΄μ λ§λλ reverse_complement( ) ν¨μλ₯Ό μ΄μ©νμ¬ μμ보μμ΄μ λν μλ―Έλ
Έμ° μμ΄μ μμ±
𧬠μλ―Έλ
Έμ° μμ΄ res λ°ν
def reading_frames(dna_seq):
assert validate_dna(dna_seq), "Invalid DNA sequence"
res = []
#DNAμμ΄
res.append(translate_seq(dna_seq,0))
res.append(translate_seq(dna_seq,1))
res.append(translate_seq(dna_seq,2))
#μμ보μμ΄
rc = reverse_complement(dna_seq)
res.append(translate_seq(rc,0))
res.append(translate_seq(rc,1))
res.append(translate_seq(rc,2))
return res
print(reading_frames("ATGGGATCGTAGTCGTACTAGCTAGCTGATGGTACTCGATAGTCTACGTAGCTAGTGGTACTGGATGGTACTCAGTAACAT"))
>> ['MGS_SY_LADGTR_ST_LVVLDGTQ_H', 'WDRSRTS_LMVLDSLRS_WYWMVLSN', 'GIVVVLAS_WYSIVYVASGTGWYSVT',
'MLLSTIQYH_LRRLSSTIS_LVRLRSH', 'CY_VPSSTTSYVDYRVPSAS_YDYDP', 'VTEYHPVPLAT_TIEYHQLASTTTIP']
π μμ보 μμ΄μ μ¬μ©ν μ΄μ λ μλ λ€μμλΆν° μ½λ μ보μ μΈ μμ΄μ μμμλΆν° μ½μ΄μ€κΈ° μν¨μ΄λ€.
μ¬μ―κ°μ 리λ©νλ μμ λν΄μ κ³μ°νκΈ° λλ¬Έμ λ°νλ μλ―Έλ
Έμ° 리μ€νΈλ μ¬μ―κ°μ μμ΄μ κ°μ§κ³ μλ€.
1.4.2. μλ―Έλ Έμ° μμ΄μμ κ°λ₯ν λ¨λ°±μ§ 리μ€νΈ μμ±
𧬠μ€νλ¦¬λ© νλ μ(ORF) : λ¨λ°±μ§λ‘ λ²μλ κ°λ₯μ±μ΄ μλ μμ΄
𧬠λ¨λ°±μ§ λ²μμ κ°μμ½λμμ μμνμ¬ μ’
κ²°μ½λμμ λλκΈ° λλ¬Έμ μ’
κ²°μ½λμ μ 무λ₯Ό νμΈν΄μΌν¨
𧬠all_proteins_rf( ) ν¨μ μμ±
𧬠μλ―Έλ
Έμ° μμ΄μ λ°μμ μ€ν리λ©νλ μ νμΈ
𧬠λ¨λ°±μ§ μμ΄ proteins λ°ν
def all_proteins_rf(aa_seq):
aa_seq = aa_seq.upper()
current_prot = []
proteins = []
for aa in aa_seq: #1 μλ―Έλ
Έμ°μμ΄(aa_seq)μ μλ―Έλ
Έμ°(aa)μ λνμ¬
if aa == "_": #6 μλ―Έλ
Έμ°μ΄ _μ΄λ©΄
if current_prot: #7 current_protμ μ΄λ―Έ μλ―Έλ
Έμ°(aa)μ΄ μλ€λ©΄
for p in current_prot:
proteins.append(p) #8 aa stringμ proteinsμ appendνκ³
current_prot = [] #9 current_protμ λΉμ
else:
if aa == "M": #2 μλ―Έλ
Έμ°(aa)μ΄ Mμ΄λ©΄
current_prot.append("") #3 current_protμ λ¬Έμμ΄ μ리 μμ±
for i in range(len(current_prot)): #4 current_protμ μ리μ
current_prot[i] += aa #5 μλ―Έλ
Έμ°(aa) μΆκ°
return proteins
print(all_proteins_rf("MDRYRA_DMGERTY_RRYGMAYRGD_"))
>> ['MDRYRA', 'MGERTY', 'MAYRGD']
MμΌλ‘ μμν΄μ _μΌλ‘ λλλ μλ―Έλ Έμ°μμ΄λ§ λ¨λ°±μ§μμ΄μ΄ λκ²μ νμΈνμ.
1.4.3. λͺ¨λ μ€ν 리λ©νλ μμμ κ°λ₯ν λ¨λ°±μ§ κ³μ°
𧬠reading_frames( ) : DNA μμ΄μ λ°μμ κ°λ₯ν μλ―Έλ
Έμ° μμ΄μ λ°ν (6κ°)
𧬠all_proteins_rf( ) : μλ―Έλ
Έμ° μμ΄μ λ°μμ μ’
κ²°μ½λμ κ³ λ €ν λ¨λ°±μ§μ λ°ν
𧬠all_orfs( ) ν¨μ μμ± - DNA μμ΄μ λ°μμ λ¨λ°±μ§ μμ΄ λ°ν
def all_orfs(dna_seq):
assert validate_dna(dna_seq), "Invalid DNA sequence"
rfs = reading_frames(dna_seq) #1 rfs - μλ―Έλ
Έμ° μμ΄
res = []
for rf in rfs: #2 λͺ¨λ ORFμ λνμ¬
prots = all_proteins_rf(rf) #3 prots - λ¨λ°±μ§ 리μ€νΈ
for p in prots:
res.append(p) #4 resμ prots μμλ€ append
return res
print(all_orfs("ATGGGATCGTAGTCGTACTAGCTAGCTGATGGTACTCGATAGTCTACGTAGCTAGTGGTACTGGATGGTACTCAGTAACAT"))
>> ['MGS', 'MVLDSLRS', 'MLLSTIQYH']
all_orfs( ) ν¨μμμ reading_frames( )κ³Ό all_proteins_rf( )λ₯Ό νΈμΆνμ¬ DNAμμ΄μ λ°μ νλ²μ λ¨λ°±μ§μμ΄μ λ§λ λ€.
1.4.4. κ°λ₯ν λ¨λ°±μ§μ μ΅μ ν¬κΈ°λ‘ κ±°λ₯΄κΈ°
𧬠μ€μ λ‘λ λ¨λ°±μ§ ν¬κΈ°κ° μμμλ‘ λ°νν κ°λ₯μ±μ΄ ν¬κΈ° λλ¬Έμ μ΄λ₯Ό κ³ λ €ν΄μ£Όλ©΄ μ’μ
𧬠all_orfs_ord( ) ν¨μ μμ± - DNA μμ΄κ³Ό μ΅μ ν¬κΈ°λ₯Ό μΈμλ‘ λ°μ λ¨λ°±μ§ μμ΄μ ν¬κΈ°λ³λ‘ μ λ ¬ν΄μ£Όλ ν¨μ
#μ λ ¬ μ½μ
ν¨μ
def all_orfs_ord(dna_seq, minsize = 0):
assert validate_dna(dna_seq), "Invalid DNA sequence"
rfs = reading_frames(dna_seq)
res = []
for rf in rfs:
prots = all_proteins_rf(rf)
for p in prots:
if len(p) > minsize: #1 λ¨λ°±μ§μ ν¬κΈ°κ° μ΅μν¬κΈ°λ³΄λ€ ν¬λ©΄
insert_prot_ord(p,res) #2 insert_prot_ord() μ°μ° μ§ν
return res
#μ λ ¬ν¨μ
def insert_prot_ord(prot, list_prots):
i = 0 #3 i = 0 μ΄κΈ°ν
while i < len(list_prots) and len(prot) < len(list_prots[i]): #4 κΈ°μ‘΄ i μΈλ±μ€μ λ¨λ°±μ§ ν¬κΈ°κ° λ ν¬λ©΄
i += 1 #5 μΈλ±μ€ κ° i μ 1μ© λν¨ - λ΄λ¦Όμ°¨μ μ λ ¬
list_prots.insert(i, prot) #6 μ΅μ’
i μμΉμ μ λ ¬ / μ½μ
print(all_orfs_ord("ATGGGATCGTAGTCGTACTAGCTAGCTGATGGTACTCGATAGTCTACGTAGCTAGTGGTACTGGATGGTACTCAGTAACAT"))
>> ['MLLSTIQYH', 'MVLDSLRS', 'MGS']
λ¨λ°±μ§ μμ΄μ΄ ν° μμλλ‘ μ λ ¬λμλ€.
Leave a comment