𧬠1.2 ~ 1.3 μ μ¬μ λ²μ
1.2 μ μ¬μ μμ보
1.2.1.DNA μμ΄μ΄ μ ν¨νμ§ μ²΄ν¬
𧬠μμ ν¬μ€ν μλ λμ¨ λ΄μ©μ΄μ§λ§ κ³μ μ°μ΄λ ν¨μμ΄κΈ° λλ¬Έμ μ μ΄λκ² λ€.
def validate_dna(dna_seq):
seqm = dna_seq.upper()
valid = seqm.count("A") + seqm.count("T") + seqm.count("G") + seqm.count("C")
if valid == len(seqm): return True
else: return False
1.2.2.μ λ ₯ν DNA μμ΄μ μ μ¬ν RNA μμ΄μ λ§λλ ν¨μ
𧬠transcription() ν¨μ μμ±
𧬠assert ꡬ문μΌλ‘ validate_dna() ν¨μλ₯Ό λΆλ¬μ μμ΄μ μ ν¨μ± νμΈ : μ ν¨νμ§ μμΌλ©΄ Invalid DNA sequence λ°ν
𧬠Tλ₯Ό Uλ‘ replace ν΄μ μ μ¬ν RNA μμ΄ μμ±
def transcription(dna_seq):
assert validate_dna(dna_seq), "Invalid DNA sequence"
return dna_seq.upper().replace("T","U")
print(transcription("ATGGGATCGTAGTCGTACTAGCTAGCTGATGGTACTCGATAGTCTACGTAGCTAGTGGTACTGGATGGTACTCAGTAACAT"))
>> AUGGGAUCGUAGUCGUACUAGCUAGCUGAUGGUACUCGAUAGUCUACGUAGCUAGUGGUACUGGAUGGUACUCAGUAACAU
1.2.3.DNA μμ΄μ μμ보μμ΄
𧬠reverse_complement() ν¨μ μμ±
𧬠assert ꡬ문μΌλ‘ validate_dna() ν¨μλ₯Ό λΆλ¬μ μμ΄μ μ ν¨μ± νμΈ : μ ν¨νμ§ μμΌλ©΄ Invalid DNA sequence λ°ν
𧬠compλΌλ λΉ λ¬Έμμ΄μ μ보μ μΈ μμ΄ λμ
: μμ보 μμ΄μ΄λ―λ‘ μλ‘ λ§λ€μ΄μ§λ μ보 μΌκΈ°κ° κΈ°μ‘΄μ comp μμ λΆλλ‘ μ€μ
𧬠주μ΄μ§ DNA μμ΄μ΄ μ£Όνκ°λ₯ νΉμ λΉμ£Όνκ°λ₯μΈμ§ λͺ°λΌμ λ κ°μ§ κ²½μ°λ₯Ό λͺ¨λ κ³ λ €ν΄μΌ νλ κ²½μ°μ μ¬μ©
def reverse_complement(dna_seq):
assert validate_dna(dna_seq), "Invalid DNA sequence"
comp = ""
for c in dna_seq.upper():
if c == "A":
comp = "T" + comp
elif c == "T":
comp = "A" + comp
elif c == "G":
comp = "C" + comp
elif c == "C":
comp = "G" + comp
return comp
print(reverse_complement("ATGGGATCGTAGTCGTACTAGCTAGCTGATGGTACTCGATAGTCTACGTAGCTAGTGGTACTGGATGGTACTCAGTAACAT"))
>> ATGTTACTGAGTACCATCCAGTACCACTAGCTACGTAGACTATCGAGTACCATCAGCTAGCTAGTACGACTACGATCCCAT
1.3 λ²μ
1.3.1.μ½λμ μλ―Έλ Έμ°μΌλ‘ λ²μνκΈ° μν νμ€ μ μ μ½λ λμ λ리
𧬠translate_codon() ν¨μ μμ±
𧬠μ’
κ²°μ½λμ _ μΌλ‘ μ μΈ
𧬠μ ν¨νμ§ μμ μ½λμ λν΄μλ Noneμ λ°ν
def translate_codon(cod):
tc = {"GCT":"A", "GCC":"A", "GCG":"A",
"TGT":"C", "TGC":"C",
"GAT":"D", "GAC":"D",
"GAA":"E", "GAG":"E",
"TTT":"F", "TTC":"F",
"GGT":"G", "GGC":"G", "GGA":"G", "GGG":"G",
"CAT":"H", "CAC":"H",
"ATA":"I", "ATT":"I", "ATC":"I",
"AAA":"K", "AAG":"K",
"TTA":"L", "TTG":"L", "CTT":"L", "CTC":"L", "CTA":"L", "CTG":"L",
"ATG":"M",
"AAT":"N", "AAC":"N",
"CCT":"P", "CCC":"P", "CCA":"P", "CCG":"P",
"CAA":"Q", "CAG":"Q",
"CGT":"R", "CGC":"R", "CGA":"R", "CGG":"R", "AGA":"R", "AGG":"R",
"TCT":"S", "TCC":"S", "TCA":"S", "TCG":"S", "AGT":"S", "AGC":"S",
"ACT":"T", "ACC":"T", "ACA":"T", "ACG":"T",
"GTT":"V", "GTC":"V", "GTA":"V", "GTG":"V",
"TGG":"W",
"TAT":"Y", "TAC":"Y",
"TAA":"_", "TAG":"_", "TGA":"_"}
if cod in tc: return tc[cod]
else: return None
1.3.2. DNA μμ΄μ μλ―Έλ Έμ° μμ΄λ‘ λ²μ
𧬠translate_seq() ν¨μ μμ±
𧬠assert ꡬ문μΌλ‘ validate_dna() ν¨μλ₯Ό λΆλ¬μ μμ΄μ μ ν¨μ± νμΈ : μ ν¨νμ§ μμΌλ©΄ Invalid DNA sequence λ°ν
𧬠ini_pos μΈμ : μ²μ λ²μμ μμνλ μμΉ
𧬠ini_pos λΆν° 3κ°μ© λμ΄κ°λ©΄μ μλ―Έλ
Έμ° μμ΄λ‘ λ²μ : translate_codon() μμ κ°μ Έμ΄
ββμ£Όνκ°λ₯ / λΉμ£Όνκ°λ₯ββ
π mRNA μ λ²μμ 5β - 3β λ°©ν₯μΌλ‘ μΌμ΄λ¨
π μ°λ¦¬κ° μ£Όλ DNA μμ΄μ΄ λΉμ£Όνκ°λ₯(5β- 3β)μ΄λ©΄ μ΄λ μ£Όνκ°λ₯(3β- 5β)μ mRNA μμ΄κ³Ό T/U μ°¨μ΄ λΉΌκ³ λ λμΌνλ―λ‘ λ°λ‘ μ£Όνκ°λ₯μ μλ―Έλ
Έμ° μμ΄λ‘ λ²μμ΄ κ°λ₯ν¨
π λ°λλ‘ μ£Όνκ°λ₯μΈ κ²½μ°μλ ꡬνλ €λ μλ―Έλ
Έμ° μμ΄μ λΉμ£Όνκ°λ₯μ μλ―Έλ
Έμ° μμ΄κ³Ό κ°μΌλ―λ‘ μ£Όνκ°λ₯μ μ보μμ΄μ λ²μν΄μΌ ν¨
π λ°λΌμ μ£Όνκ°λ₯μΈμ§ λΉμ£Όνκ°λ₯μΈμ§ νλ¨μ΄ μμ§ μλ κ²½μ°μλ μμ보μμ΄μ μ¬μ©νμ.
def translate_seq(dna_seq, ini_pos = 0):
assert validate_dna(dna_seq), "Invalid DNA sequence"
seqm = dna_seq.upper()
seq_aa = ""
for pos in range(ini_pos, len(seqm)-2, 3):
cod = seqm[pos:pos+3]
seq_aa += translate_codon(cod)
return seq_aa
print(translate_seq("ATGGGATCGTAGTCGTACTAGCTAGCTGATGGTACTCGATAGTCTACGTAGCTAGTGGTACTGGATGGTACTCAGTAACAT"))
#μμ보μμ΄
print(translate_seq(reverse_complement("ATGGGATCGTAGTCGTACTAGCTAGCTGATGGTACTCGATAGTCTACGTAGCTAGTGGTACTGGATGGTACTCAGTAACAT")))
>>
MGS_SY_LADGTR_ST_LVVLDGTQ_H
MLLSTIQYH_LRRLSSTIS_LVRLRSH
1.3.3.μ£Όμ΄μ§ μλ―Έλ Έμ°μ μνΈννκ³ μλ κ° μ½λμ λΉμ¨μ DNAμμ΄λ‘ νν
𧬠codon_usage() ν¨μ μμ±
𧬠assert ꡬ문μΌλ‘ validate_dna() ν¨μλ₯Ό λΆλ¬μ μμ΄μ μ ν¨μ± νμΈ : μ ν¨νμ§ μμΌλ©΄ Invalid DNA sequence λ°ν
𧬠주μ΄μ§ μλ―Έλ
Έμ°μ μνΈννλ μμ΄μ΄ μμΌλ©΄ λμ
λ리μ μΆκ°
𧬠μΆκ°ν λλ§λ€ totalμ 1μ© μΆκ°νμ¬ μ£Όμ΄μ§ μλ―Έλ
Έμ°μ μ 체 κ°μλ₯Ό ꡬν¨
𧬠ν΄λΉ μλ―Έλ
Έμ°μ μνΈννλ μμ΄κ³Ό κ° μ½λμ λΉμ¨, μ 체 κ°μλ₯Ό λ°ν
def codon_usage(dna_seq, aa):
assert validate_dna(dna_seq), "Invalid DNA sequence"
seqm = dna_seq.upper()
dic = {}
total = 0
for i in range(0, len(seqm)-2, 3):
cod = seqm[i:i+3]
if translate_codon(cod) == aa:
if cod in dic:
dic[cod] += 1
else:
dic[cod] = 1
total += 1
if total > 0:
for k in dic:
dic[k] /= total
return (dic, total)
print(codon_usage("atagataactcgcatagc", "S"))
>>
({'TCG': 0.5, 'AGC': 0.5}, 2)
Leave a comment