自學(xué)python求已知DNA模板的互補(bǔ)DNA序列
DNA序列
ACTGATCGATTACGTATAGTATTTGCTATCATACATATATATCGATGCGTTCAT
求其互補(bǔ)DNA序列。
在生物上DNA互補(bǔ)序列簡述表達(dá)可以表示為:A與T,C與G互補(bǔ),可以理解為將上述序列中現(xiàn)有的A用T代替,C用G代替,T用A代替,G用C代替,則其互補(bǔ)序列為:
TGACTAGCTAATGCATATCATAAACGATAGTATGTATATATAGCTACGCAAGTA
根據(jù)上述表述,我可以利用replace()函數(shù)進(jìn)行替換,將A用T替換,T用A替換,C用G替換,G用C替換,
簡述其代碼
my_dna = "ACTGATCGATTACGTATAGTATTTGCTATCATACATATATATCGATGCGTTCAT" # replace A with T sequence1 = my_dna.replace('A', 'T') # replace T with A sequence2 = sequence1.replace('T', 'A') # replace C with G sequence3 = sequence2.replace('C', 'G') # replace G with C sequence4 = sequence3.replace('G', 'C') # print the result of the final replacement print(sequence1) print(sequence2) print(sequence3) print(sequence4)
其輸出結(jié)果如下:
TCTGTTCGTTTTCGTTTTGTTTTTGCTTTCTTTCTTTTTTTTCGTTGCGTTCTT
ACAGAACGAAAACGAAAAGAAAAAGCAAACAAACAAAAAAAACGAAGCGAACAA
AGAGAAGGAAAAGGAAAAGAAAAAGGAAAGAAAGAAAAAAAAGGAAGGGAAGAA
ACACAACCAAAACCAAAACAAAAACCAAACAAACAAAAAAAACCAACCCAACAA
原始序列上進(jìn)行替換
顯然結(jié)果是不正確的,我們在sequence1到sequence2中就已經(jīng)出現(xiàn)錯(cuò)誤,誤把sequence1中A被替換之后變?yōu)門的序列,在sequence2中又被替換掉了,因此我們要轉(zhuǎn)變思路,保持只替換原本的序列,不進(jìn)行多次替換,避免錯(cuò)誤,我們可以嘗試每次只在原始序列上進(jìn)行替換,嘗試代碼如下:
my_dna = "ACTGATCGATTACGTATAGTATTTGCTATCATACATATATATCGATGCGTTCAT" # replace A with T sequence = my_dna.replace('A', 'T') # replace T with A sequence2 = my_dna.replace('T', 'A') # replace C with G sequence3 = my_dna.replace('C', 'G') # replace G with C sequence4 = my_dna.replace('G', 'C') print(sequence1) print(sequence2) print(sequence3) print(sequence4)
其輸出結(jié)果如下:
TCTGTTCGTTTTCGTTTTGTTTTTGCTTTCTTTCTTTTTTTTCGTTGCGTTCTT
ACAGAACGAAAACGAAAAGAAAAAGCAAACAAACAAAAAAAACGAAGCGAACAA
AGTGATGGATTAGGTATAGTATTTGGTATGATAGATATATATGGATGGGTTGAT
ACTCATCCATTACCTATACTATTTCCTATCATACATATATATCCATCCCTTCAT
顯然結(jié)果也是不正確的,因此,我們要引入中間變量,最后再把它做一個(gè)回環(huán),
也就是說引入四個(gè)臨時(shí)字母,然后每個(gè)變換2次,最后把最終結(jié)果輸出,其代碼可以為:
my_dna = "ACTGATCGATTACGTATAGTATTTGCTATCATACATATATATCGATGCGTTCAT" sequence1 = my_dna.replace('A', 'H') sequence2 = sequence1.replace('T', 'J') sequence3 = sequence2.replace('C', 'K') sequence4 = sequence3.replace('G', 'L') sequence5 = sequence4.replace('H', 'T') sequence6 = sequence5.replace('J', 'A') sequence7 = sequence6.replace('K', 'G') sequence8 = sequence7.replace('L', 'C') print(sequence8)
其結(jié)果為:
TGACTAGCTAATGCATATCATAAACGATAGTATGTATATATAGCTACGCAAGTA
利用upper()輸出大寫結(jié)果
至此得到了我們想要的結(jié)果,但這種方法顯然是有些復(fù)雜了,我們可以利用字符的大小寫來完成我們的工作,也就是利用小寫字母為臨時(shí)變量,最終利用upper()輸出大寫的結(jié)果就行了,其代碼和結(jié)果如下:
my_dna = "ACTGATCGATTACGTATAGTATTTGCTATCATACATATATATCGATGCGTTCAT" sequence1 = my_dna.replace('A', 't') print(sequence1) sequence2 = sequence1.replace('T', 'a') print(sequence2) sequence3 = sequence2.replace('C', 'g') print(sequence3) sequence4 = sequence3.replace('G', 'c') print(sequence4) print(sequence4.upper())
其結(jié)果為:
tCTGtTCGtTTtCGTtTtGTtTTTGCTtTCtTtCtTtTtTtTCGtTGCGTTCtT
tCaGtaCGtaatCGatatGataaaGCataCtatCtatatataCGtaGCGaaCta
tgaGtagGtaatgGatatGataaaGgatagtatgtatatatagGtaGgGaagta
tgactagctaatgcatatcataaacgatagtatgtatatatagctacgcaagta
TGACTAGCTAATGCATATCATAAACGATAGTATGTATATATAGCTACGCAAGTA
至此我們的互補(bǔ)DNA序列得到了,也許有更好更簡潔的代碼。
結(jié)尾
雖然這是個(gè)小小的計(jì)算程序,但對于初學(xué)者的我來說每一次對原代碼的升級改造,哪怕是讀懂后的注釋都感覺是一次進(jìn)步提升,總之代碼雖小,動手最重要!希望更多學(xué)習(xí)Python的愛好者不要像我一樣眼高手低,學(xué)習(xí)編程就是要,思考,敲碼,思考,敲碼,敲碼,再敲碼,更多關(guān)于python求DNA模板互補(bǔ)序列的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python按照某列內(nèi)容對兩個(gè)DataFrame進(jìn)行合并操作方法
這篇文章主要給大家介紹了關(guān)于Python按照某列內(nèi)容對兩個(gè)DataFrame進(jìn)行合并操作的相關(guān)資料,文中通過代碼示例介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Python具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08python學(xué)習(xí)將數(shù)據(jù)寫入文件并保存方法
在本篇文章里小編給大家分享的是關(guān)于python將數(shù)據(jù)寫入文件并保存的實(shí)例內(nèi)容,需要的朋友們可以學(xué)習(xí)下。2020-06-06python中Tkinter實(shí)現(xiàn)分頁標(biāo)簽的示例代碼
這篇文章主要介紹了python中Tkinter實(shí)現(xiàn)分頁標(biāo)簽的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04在Python中實(shí)現(xiàn)shuffle給列表洗牌
今天小編就為大家分享一篇在Python中實(shí)現(xiàn)shuffle給列表洗牌,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11python matplotlib畫盒圖、子圖解決坐標(biāo)軸標(biāo)簽重疊的問題
今天小編就為大家分享一篇python matplotlib畫盒圖、子圖解決坐標(biāo)軸標(biāo)簽重疊的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python中的TfidfVectorizer參數(shù)使用解析
這篇文章主要介紹了Python中的TfidfVectorizer參數(shù)使用解析,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11