自学python求已知DNA模板的互补DNA序列

作者:天明豆豆 时间:2022-07-05 13:24:56 

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替换,

简述其代码

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中又被替换掉了,因此我们要转变思路,保持只替换原本的序列,不进行多次替换,避免错误,我们可以尝试每次只在原始序列上进行替换,尝试代码如下:

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

显然结果也是不正确的,因此,我们要引入中间变量,最后再把它做一个回环,

自学python求已知DNA模板的互补DNA序列

也就是说引入四个临时字母,然后每个变换2次,最后把最终结果输出,其代码可以为:

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()输出大写的结果就行了,其代码和结果如下:

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模板互补序列的资料请关注脚本之家其它相关文章!

来源:https://www.jianshu.com/p/09bddf9a8ebe

标签:python,DNA模板,互补序列,自学
0
投稿

猜你喜欢

  • python matplotlib坐标轴设置的方法

    2022-03-26 03:44:04
  • 使用wxPython获取系统剪贴板中的数据的教程

    2023-11-05 18:43:41
  • vs如何读取mysql中的数据并解决中文乱码问题

    2024-01-19 08:14:01
  • SQL SERVER性能优化综述(很好的总结,不要错过哦)第1/3页

    2024-01-14 13:43:58
  • SQL-ORDER BY 多字段排序(升序、降序)

    2024-01-28 05:25:55
  • 一文了解Hive是什么

    2023-09-27 09:28:47
  • python更新列表的方法

    2021-12-21 11:38:39
  • python文件读取失败怎么处理

    2023-05-06 17:14:46
  • python文件比较示例分享

    2023-03-17 21:10:23
  • SQLite3中文编码 Python的实现

    2023-02-03 13:21:38
  • 23个很棒的Python脚本集合分享(迷你项目)

    2023-12-24 04:34:15
  • python TKinter弹出式菜单的实例方法

    2023-03-25 05:59:54
  • 解决python中显示图片的plt.imshow plt.show()内存泄漏问题

    2023-03-08 23:33:16
  • Django项目中动态设置静态文件路径的全过程

    2021-07-12 00:52:24
  • 利用Python实现眨眼计数器的示例代码

    2021-04-16 10:39:53
  • 通过事务日志解决SQL Server常见四大故障(二)

    2009-03-25 13:51:00
  • Python提取频域特征知识点浅析

    2021-10-31 08:01:31
  • python3 re返回形式总结

    2023-12-23 16:40:07
  • pyshp创建shp点文件的方法

    2023-06-30 03:15:29
  • asp如何判断一个电子信箱格式是否有效?

    2010-01-12 20:18:00
  • asp之家 网络编程 m.aspxhome.com