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

目录
  • DNA序列
  • 简述其代码
    • 原始序列上进行替换
    • 利用upper()输出大写结果
  • 结尾

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

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

也就是说引入四个临时字母,然后每个变换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模板互补序列的资料请关注我们其它相关文章!

(0)

相关推荐

  • 怎么快速自学python

    本文跟大家谈谈为什么要学python以及如何学好python. 一.作为初学者,应该如何学python? 很多人对python缩进试的简洁表达不以为然.那些都是已混迹于C和JAVA的老鸟已经习惯了花括号.对于初学者,python语言是最好写,最好读的. 二.追求生产力,应该学python python是全能语言,社区庞大,有太多的库和框架.你只需要找到合适的工具来实现想法,省去了造轮子的精力. coder可以写尽可能少的代码来实现同等的功能."人生苦短,我用python"是至理名言.

  • 自学python的建议和周期预算

    如果是报名培训班的话,学习的速度可能会更快一些,毕竟是自己花钱了. 自学python爬虫方法: 首先要掌握一些有关爬虫的基础知识,基本的要知道什么是爬虫?为什么要爬虫?数据是从哪里得来的?先了解这些基础的知识点才能对你要学习的东西有基本的了解,然后还有下面这些数据也需要了解: 1.HTML,了解网页的结构,内容等,帮助后续的数据爬取. 2.Python,可以去网上找一些教学视频,教学博客等等,去看一下,然后有基础了之后还可以找一些晋升的视频,再打打基础. 3.TCP/IP协议,HTTP协议,了解

  • 一篇文章带你自学python Django

    目录 1. Django简介 Django是什么? Django前景 Django框架核心 2. 设计模式 MVT模式 3. 开发环境简介 4.创建虚拟环境 4.1.首先安装管理环境的包以及虚拟环境包 4.1.1 安装环境管理包virtualenvwrapper 4.1.2 安装虚拟环境包virtualenv 4.1.3 查看pip list,检查是否安装成功 4.2 对虚拟环境的操作 4.2.1 创建虚拟环境 4.2.2 查看虚拟环境中的包,并安装Django包 4.2.3 退出虚拟环境 4.

  • 关于Python作用域自学总结

    作用域:顾名思义,作用的范围. 如果你是自学者,而且已经进军到函数这一部分了,那么就应当了解下Python的作用域.否则你可能会像我一样,总是对一个变量名同时存在函数内和函数外且有不同值搞的晕头转向. 在这里就总结一下,在本人的知识范围内所了解到的作用域是什么样的,LEGB规则到底规定了什么. 全局范围的产生(global): 我们创建一个xxx.py文件,就是一个模块,这时一个作用域就产生了.这个范围是整个模块,称作Global ,全局范围. 例如:创建一个文件demo.py. 声明一个变量,

  • 七个生态系统核心库[python自学收藏]

    目录 一 概述 二官网链接 三 安装指南 3.1.使用已有的发行版本 3.2.使用 pip 安装 3.3.使用pycharm安装 3.4.安装验证 四 上手应用 一 概述 Python生态系统的一些核心基础数据分析库: NumPy:支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,包含: 一个强大的N维数组对象 ndarray广播功能函数整合 C/C++/Fortran 代码的工具线性代数.傅里叶变换.随机数生成等功能 SciPy:这也是一个功能强大的科学计算库,用于执行科学

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

    目录 DNA序列 简述其代码 原始序列上进行替换 利用upper()输出大写结果 结尾 DNA序列 ACTGATCGATTACGTATAGTATTTGCTATCATACATATATATCGATGCGTTCAT 求其互补DNA序列. 在生物上DNA互补序列简述表达可以表示为:A与T,C与G互补,可以理解为将上述序列中现有的A用T代替,C用G代替,T用A代替,G用C代替,则其互补序列为: TGACTAGCTAATGCATATCATAAACGATAGTATGTATATATAGCTACGCAAGTA 根

  • python绘制已知点的坐标的直线实例

    如下所示: import matplotlib.pyplot as plt import numpy as np x = [11422,11360,11312,11274,11233,11196,11160,11129,11098,11038, 10984,10944,10903,10863,10828,10789,10752,10715,10675,10639, 10654,10619,10587,10550,10510,10466,10425,10389,10350,10311, 10272

  • Python根据已知邻接矩阵绘制无向图操作示例

    本文实例讲述了Python根据已知邻接矩阵绘制无向图操作.分享给大家供大家参考,具体如下: 有六个点:[0,1,2,3,4,5,6],六个点之间的邻接矩阵如表格所示,根据邻接矩阵绘制出相对应的图 0 1 2 3 4 5 6 0 0 1 0 1 0 1 0 1 1 0 1 1 1 1 1 2 0 1 0 1 0 1 0 3 1 1 1 0 1 1 1 4 0 1 0 1 1 1 1 5 1 1 1 1 1 0 0 6 0 1 0 1 1 0 0 将点之间的联系构造成如下矩阵 N = [[0, 3,

  • python 已知三条边求三角形的角度案例

    我就废话不多说了,还是直接看代码吧! import math a=1;//边1 b=1;//边2 c=math.sqrt(2);//边3 A=math.degrees(math.acos((a*a-b*b-c*c)/(-2*b*c)))//夹角1 B=math.degrees(math.acos((b*b-a*a-c*c)/(-2*a*c)))//夹角2 C=math.degrees(math.acos((c*c-a*a-b*b)/(-2*a*b)))//夹角3 print(A) print(B

  • python 已知平行四边形三个点,求第四个点的案例

    我就废话不多说了,大家还是直接看代码吧! import numpy as np #已知平行四边形三个点,求第四个点 #计算两点之间的距离 def CalcEuclideanDistance(point1,point2): vec1 = np.array(point1) vec2 = np.array(point2) distance = np.linalg.norm(vec1 - vec2) return distance #计算第四个点 def CalcFourthPoint(point1,p

  • 浅谈python已知元素,获取元素索引(numpy,pandas)

    目前搜索到的方法有: np.where('元素') 还有就是pandas的方法: df.index('元素') 但是第二个方法的问题就是会报错,嗯,这就比较尴尬了,查询了网上的解决方案,有这样的: 此外使用 df[df['列名'].isin([相应的值])] 这个命令会输出等于该值的行. 此外如果想快速找到dataframe最后几行的话,可以使用的方法是tail,可以获取若干行的值 以上这篇浅谈python已知元素,获取元素索引(numpy,pandas)就是小编分享给大家的全部内容了,希望能给

  • python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配

    已知一个元素,在一个list中找出相似的元素 使用场景: 已知一个其它来源的字符串, 它有可能是不完全与我数据库中相应的字符串匹配的,因此,我需要将其转为适合我数据库中的字符串 使用场景太绕了, 直接举例来说吧 随便举例: 按青岛城市的城区来说, 我数据库中存储的城区是个list:['市北区', '市南区', '莱州市', '四方区']等 从其它的数据来源得到一个城区是:市北 我怎么得到与市北相似相近的市北区 解决方案: In [1]: import difflib In [2]: cityar

  • Python实现加密的RAR文件解压的方法(密码已知)

    博主之前在网上找了很多资料,发现rarfile库不能直接调用,需要安装unrar模块,下面将详细介绍整个实现流程. 第一步:安装unrar模块,直接pip install unrar可能会找不到库,需要下载unrar library,也就是UnRAR.dll,下载地址为:http://www.rarlab.com/rar/UnRARDLL.exe: 第二步:将unrar安装路径添加到系统环境变量,64位操作系统的路径为C:\Program Files (x86)\UnrarDLL\x64,然后还

  • python 求10个数的平均数实例

    一,已知十个数,求平均数. L=[1,2,3,4,5,6,7,8,9,10] a=sum(L)/len(L) print("avge is:", round(a,3) ) 运行结果: avge is: 5.5 二,设置输入个数,求平均数 n = int(input("请输入所求平均数的个数: ")) l = [] for i in range(0, n): k = int(input("请输入数值: ")) l.append(k) avg = s

随机推荐