自学python求已知DNA模板的互补DNA序列
DNA序列
ACTGATCGATTACGTATAGTATTTGCTATCATACATATATATCGATGCGTTCAT
求其互补DNA序列。
在生物上DNA互补序列简述表达可以表示为:A与T,C与G互补,可以理解为将上述序列中现有的A用T代替,C用G代替,T用A代替,G用C代替,则其互补序列为:
TGACTAGCTAATGCATATCATAAACGATAGTATGTATATATAGCTACGCAAGTA
根据上述表述,我可以利用replace()函数进行替换,将A用T替换,T用A替换,C用G替换,G用C替换,
简述其代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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) |
其输出结果如下:
TCTGTTCGTTTTCGTTTTGTTTTTGCTTTCTTTCTTTTTTTTCGTTGCGTTCTT
ACAGAACGAAAACGAAAAGAAAAAGCAAACAAACAAAAAAAACGAAGCGAACAA
AGAGAAGGAAAAGGAAAAGAAAAAGGAAAGAAAGAAAAAAAAGGAAGGGAAGAA
ACACAACCAAAACCAAAACAAAAACCAAACAAACAAAAAAAACCAACCCAACAA
原始序列上进行替换
显然结果是不正确的,我们在sequence1到sequence2中就已经出现错误,误把sequence1中A被替换之后变为T的序列,在sequence2中又被替换掉了,因此我们要转变思路,保持只替换原本的序列,不进行多次替换,避免错误,我们可以尝试每次只在原始序列上进行替换,尝试代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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) |
其输出结果如下:
TCTGTTCGTTTTCGTTTTGTTTTTGCTTTCTTTCTTTTTTTTCGTTGCGTTCTT
ACAGAACGAAAACGAAAAGAAAAAGCAAACAAACAAAAAAAACGAAGCGAACAA
AGTGATGGATTAGGTATAGTATTTGGTATGATAGATATATATGGATGGGTTGAT
ACTCATCCATTACCTATACTATTTCCTATCATACATATATATCCATCCCTTCAT
显然结果也是不正确的,因此,我们要引入中间变量,最后再把它做一个回环,
也就是说引入四个临时字母,然后每个变换2次,最后把最终结果输出,其代码可以为:
1 2 3 4 5 6 7 8 9 10 | 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) |
其结果为:
TGACTAGCTAATGCATATCATAAACGATAGTATGTATATATAGCTACGCAAGTA
利用upper()输出大写结果
至此得到了我们想要的结果,但这种方法显然是有些复杂了,我们可以利用字符的大小写来完成我们的工作,也就是利用小写字母为临时变量,最终利用upper()输出大写的结果就行了,其代码和结果如下:
1 2 3 4 5 6 7 8 9 10 | 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()) |
其结果为:
tCTGtTCGtTTtCGTtTtGTtTTTGCTtTCtTtCtTtTtTtTCGtTGCGTTCtT
tCaGtaCGtaatCGatatGataaaGCataCtatCtatatataCGtaGCGaaCta
tgaGtagGtaatgGatatGataaaGgatagtatgtatatatagGtaGgGaagta
tgactagctaatgcatatcataaacgatagtatgtatatatagctacgcaagta
TGACTAGCTAATGCATATCATAAACGATAGTATGTATATATAGCTACGCAAGTA
至此我们的互补DNA序列得到了,也许有更好更简洁的代码。
结尾
虽然这是个小小的计算程序,但对于初学者的我来说每一次对原代码的升级改造,哪怕是读懂后的注释都感觉是一次进步提升,总之代码虽小,动手最重要!希望更多学习Python的爱好者不要像我一样眼高手低,学习编程就是要,思考,敲码,思考,敲码,敲码,再敲码,更多关于python求DNA模板互补序列的资料请关注脚本之家其它相关文章!

微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
相关文章
Python按照某列内容对两个DataFrame进行合并操作方法
这篇文章主要给大家介绍了关于Python按照某列内容对两个DataFrame进行合并操作的相关资料,文中通过代码示例介绍的非常详细,对大家学习或者使用Python具有一定的参考借鉴价值,需要的朋友可以参考下2023-08-08python matplotlib画盒图、子图解决坐标轴标签重叠的问题
今天小编就为大家分享一篇python matplotlib画盒图、子图解决坐标轴标签重叠的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-01-01
最新评论