๐งฌ 1.1 ์๋ฌผํ์ ์์ด : ํํ๊ณผ ๊ธฐ๋ณธ ์๊ณ ๋ฆฌ์ฆ
1.1 ์๋ฌผํ์ ์์ด ๊ธฐ๋ณธ ์๊ณ ๋ฆฌ์ฆ
1.1.1. DNA ์์ด์ด ์ ํจํ์ง ์ฒดํฌ
๐งฌ validate_dna()
ํจ์ ์์ฑ
๐งฌ ์ฃผ์ด์ง ์ผ๊ธฐ์์ด dna_seq์ ์ผ๊ธฐ A,T,G,C ์ธ์ ๋ค๋ฅธ ๊ฒ์ด ์์ฌ์๋ค๋ฉด ์ ํจํ ์์ด์ด ์๋ : False ์ถ๋ ฅ
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
print(validate_dna("atagagagatctcg"))
print(validate_dna("ATAGAXTAGAT"))
>>
True
False
1.1.2. ์์ด์์ ๊ฐ ์ฌ๋ณผ์ ๋น๋ ๊ณ์ฐ
๐งฌ frequency()
ํจ์ ์์ฑ
๐งฌ ๋น ๋์
๋๋ฆฌ๋ฅผ ์์ฑํ์ฌ ์์ด์์ ๊ฐ ์ฌ๋ณผ๋ค์ด ๋์ฌ๋์ ๊ฐ์๋ฅผ count ํด์ key/value ์ ์ ๊ทผ
def frequency(seq):
dic = {}
for s in seq.upper():
if s in dic: dic[s] += 1
else: dic[s] = 1
return dic
print(frequency("atggatcggtacagagcggatggtgaacgaacatatcatacggctagtactagctactga"))
print(frequency("MVVMKKSHHVLHSQSLIK"))
>>
{'A': 19, 'T': 13, 'G': 17, 'C': 11}
{'M': 2, 'V': 3, 'K': 3, 'S': 3, 'H': 3, 'L': 2, 'Q': 1, 'I': 1}
1.1.3. ์ ๋ ฅ๋ฐ์ ์์ด์ ์ฌ๋ณผ ๋น๋ ๊ณ์ฐ
๐งฌ ์์ด์ ์
๋ ฅ๋ฐ์ frequendy()
ํจ์์์ ๊ณ์ฐํ ๋น๋๋ฅผ ๋ฐํ์ผ๋ก key์ value์ ์ ๊ทผ
๐งฌ ๊ฐ์๊ฐ ๋ง์ ์์๋๋ก ์ ๋ ฌํจ
seq_aa = input("Protein Sequence: ")
freq_aa = frequency(seq_aa)
list_f = sorted(freq_aa.items(), key = lambda x : x[1], reverse = True)
for (k, v) in list_f:
print("Aminoacid:", k, ":", v)
>>
Protein Sequence: ATGGGATCGTAGTCGTACTAGCTAGCTGATGGTACTCGATAGTCTACGTAGCTAGTGGTACTGGATGGTACTCAGTAACAT
Aminoacid: T : 24
Aminoacid: G : 23
Aminoacid: A : 20
Aminoacid: C : 14
1.1.4.DNA ์์ด์์ G/C ๋ดํด๋ ์คํ์ด๋์ ํผ์ผํธ ๋ฐํ
๐งฌ gc_content()
ํจ์ ์์ฑ
๐งฌ ์ผ๊ธฐ์์ด์ ์ฌ๋ณผ์ด GCgc ์ค ํ๋์ด๋ฉด gc_count
์ ๊ฐ ์นด์ดํธ
๐งฌ ์ ์ฒด ๊ธธ์ด์ ๋ํ ๋น์จ์ ๋ฐํ
def gc_content(dna_seq):
gc_count = 0
for s in dna_seq:
if s in "GCgc": gc_count += 1
return gc_count / len(dna_seq)
print(gc_content("atggatcggtacagagcggatggtgaacgaacatatcatacggctagtactagctactga"))
>>
0.4666666666666667
1.1.5.์ค์ฒฉ๋์ง ์๋ k ๊ธธ์ด์ ๋ถ๋ถ ์์ด์ ๋ํด GCํผ์ผํธ ๋ฐํ
๐งฌ gc_content_subseq()
ํจ์ ์์ฑ
๐งฌ ์ฃผ์ด์ง ์ผ๊ธฐ์์ด์ ์ผ์ ํ k
๋งํผ์ ์ฌ์ด์ฆ๋ก ๋๋
๐งฌ ๊ฐ ๋ถ๋ถ ์์ด์ ๋ํด์ gc_content()
๋ฅผ ๊ณ์ฐํ์ฌ ๋ฐํ
def gc_content_subseq(dna_seq, k = 3):
res = []
for i in range(0, len(dna_seq)-k+1, k):
subseq = dna_seq[i:i+k]
gc = gc_content(subseq)
res.append(gc)
return res
print(gc_content_subseq("atagataactcgcatagc"))
>>
[0.0, 0.3333333333333333, 0.3333333333333333, 0.6666666666666666, 0.3333333333333333, 0.6666666666666666]
Leave a comment