python练习题1 计算多个DNA序列中,GC比最高的序列_dna里面gc含量最高的字串_shenny!的博客-程序员宅基地

技术标签: python 生物信息 DNA 序列  

这是题目连接:http://rosalind.info/problems/gc/

解决思路可以有多种,下面提供我想到的两种解决思路。

解决思路1.可以通过collections模块中的OrderedDict,将字典排序,。从而找到GC比最高的序列:

下面是代码:

#!/usr/bin/env python
#_*_ coding: utf-8 _*
from operator import itemgetter
from collections import OrderedDict
#创建一个有序字典集合,根据输入的先后顺序排序
seqTest = OrderedDict()
gcCountent = OrderedDict()
with open('E:\\bioinfo\study\data\\test5.txt','r') as input_file:
    #逐行读取输入文件
    for line in input_file:
        line = line.rstrip()    #删除字符串末尾的指定字符,默认为空格
        #将DNA序列信息保存在有序字典seqTest中
        if line.startswith('>'):
            seqName = line.strip('> ')
        else:
            seqTest[seqName] = line

    for key, value in seqTest.items():
        #生成一个包含GC含量的有序字典
        seq_length = len(value)
        GC_ratio = (float(value.count('C') + value.count('G'))) / seq_length
        gcCountent[key] = GC_ratio
#将字典排序,根据每个元祖中的第二个元素排序
#将字典排序完之后,其形式也不为字典格式
gcCountent_sort = sorted(gcCountent.items(), key=itemgetter(1))
#取最大GC比
large_Name = gcCountent_sort[-1][0]
large_GCRation = gcCountent_sort[-1][1]
print 'GC比最大的DNA序列为:\n%s\n%.6f' % (large_Name, large_GCRation)


解决思路2: 可以通过嵌套列表实现对GC比的排序,从而得到GC含量最高的序列

代码如下:

#!/usr/bin/env python
#_*_ coding: utf-8 _*
gcCount = []
def seq_GCRatio(sequence):
    #输入含有序列信息的字符串,输出该序列中的GC比
    GC_count = float(sequence.count('C') + sequence.count('G'))
    seq_length = len(sequence)
    GC_ratio = GC_count / seq_length * 100
    return GC_ratio

with open('E:\\bioinfo\study\data\\test5.txt', 'r') as input_file:
    for line in input_file:
        seq_list = []
        if line.startswith('>'):
            seq_name = line.strip('[> |  \n]')
        else:
            sequence = line.strip()
            GC_ratio = seq_GCRatio(sequence)
            seq_list.append(seq_name)
            seq_list.append(GC_ratio)
            gcCount.append(seq_list)
    GC_Ratio_sort = sorted(gcCount, key=lambda x:x[1])
print 'GC比最高的序列为:\n%s\n%.6f' % (GC_Ratio_sort[-1][0], GC_Ratio_sort[-1][1])



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_25055921/article/details/78512107

智能推荐

攻防世界 reverse 新手练习区 game_ChaoYue_miku的博客-程序员宅基地

题目来源:ZSCTF0、下载附件,打开程序并运行其规则是点亮8盏灯即为胜利1、依次输入数字1-8即可2、得到flag:zsctf{T9is_tOpic_1s_v5ry_int7resting_b6t_others_are_n0t}逆向做法之后再补充^-^

js鼠标事件 clientX、clientY、offsetX、offsetY、layerX、layerY、pageX、 pageY、screenX、screenY_js layery_蒲公英芽的博客-程序员宅基地

MouseEvent的类别有以下:mousedown 鼠标按下mouseup 鼠标释放click 左键单击dblclick 左键双击mousemove 鼠标移动mouseover 鼠标经过mouseout 鼠标滑出mouseenter 鼠标进入mouseleave 鼠标离开contextmenu 右键菜单注意:执行顺序:mousedown —&g...

BufferedOutputStream深入分析_码拉松的博客-程序员宅基地

FileOutputStream和BufferedOutputStream都提供了一系列的将数据写入文件的方式,并且我们都知道BufferedOutputStream要比直接使用FileOutputStream写入速度要快,本文通过案例实际演示一下两者的区别。代码准备public class BufferFile { public static void main(String[] args) { //每次向文件中写入一个8字节的数组 byte[] bytes

Hexo博客开发之——电脑重装系统后如何恢复Hexo博客_重装系统博客怎么办_PGzxc的博客-程序员宅基地

一:安装Node.js,git,并查看当前软件环境二:配置SSH key查看C:\Users\用户名.ssh下有无ssh文件夹,没有则创建cd ~/. sshssh-keygen -t rsa -C "邮件地址"打开用户目录,找到.ssh\id_rsa.pub文件,记事本打开并复制里面的内容,打开你的github主页,进入个人设置 -> SSH and GP...

Docker - tomcat 容器内 jdk 版本路径_我姓叶的博客-程序员宅基地

Docker - tomcat 容器内 jdk 版本路径一、jdk 版本查询二、jdk 目录路径一、jdk 版本查询[email protected]:/usr/local/tomcat# java -versionjava version "1.7.0_151"OpenJDK Runtime Environment (IcedTea 2.6.11) (7u151-2.6.11-1~deb8u1)OpenJDK 64-Bit Server VM (build 24.151-b01, mixed m

编译原理学习资料整理_自由自在的飞翔的博客-程序员宅基地

1.编译原理期末试题(8套含答案+大题集)_百度文库  2.《编译原理》考试试题及答案(汇总) - 教育 - 道客巴巴  3.编译原理期末试题(8套含答案+大题集)_百度文库  4.冯博琴编译原理教学视频(全套)在线播放学习_视频教程-外唐教程网  5.西安交通大学 编译原理 冯博琴教授 的全部课件(PPT) - 下载频道 - CSDN.NET

随便推点

炼丹师入门修炼指南-深度学习入门资料推荐_Daoiest火羽的博客-程序员宅基地

大家好,打开这篇文章,想必你也是一位对Ai充满好奇的好学青年,抑或是刚开始进入领域茫然不知所措的初级药童。媒体对Ai对大肆宣传,似乎未来已尽在Ai之中。本着打不过就加入的原则,本文就为你分享一些学习深度学习的必备知识。Ai是智能的程序,在深度学习出来之前,主流方法是机器学习的方法。可以说深度学习是机器学习的子集。机器学习中本就有名为感知机(单层线性的网络)的算法。后来又发展到了多层线性感知机,最后再到非线性的深度神经网络。深度网络重剑无锋,好的法宝本就没那么多花里胡哨,依赖无限的函数容量和G

华为eNSP启动路由器失败,错误代码40解决方法_CloudWashed的博客-程序员宅基地

*错误代码40在网上搜索尝试了基本所有解决方案通通不行也不是安装路径有中文的问题最后先将eNsp与virtualbox卸载将virtualbox安装在C盘中再安装eNsp问题解决

计算机网络的硬件连接图,路由器设置图和网络电缆连接图_计算机硬件和网络_IT /计算机_数据..._小春网的博客-程序员宅基地

路由器设置和网络电缆连接的插图路由器设置的插图路由器设置的插图路由器设置的插图路由器设置的插图每个人都在使用宽带ADSL,为了省钱我们共享互联网,几个人使用同一条ADSL线路,需要带有路由器的路由器(调制解调器),设置调制解调器后,请使用8端口或4端口10M以太网集线器,例如ICH-2008 Huigu 8端口10M以太网集线器. 价格约为120元. 您可以访问Internet. 当然,更多的人仍...

Stateflow基础知识(一)_stateflow历史节点_修车师傅的博客-程序员宅基地

本文记录学习stateflow的一些概念:状态和状态动作(entry,during,exit) 各个模块的名称(重要,搞清楚这些概念对于理解帮助文档至关重要) 使用子图可以简化图得外观,操作方法:选中一个状态图,右键选择Group&Subchart 广播本地事件:本地事件是非图形化图像,它可以触发stateflow图得并行状态中得转移和动作,当事件广播到某个状态时,该事件将...

python写背单词软件_GitHub - Karobben/urwid_Vocabulary: python写的背单词软件(基于urwid), 英英释义(韦伯词典), 日常记录, 统计绘图用的R语言..._weixin_39662594的博客-程序员宅基地

urwid_Vocabularypython写的背单词软件(基于urwid), 英英释义(韦伯词典), 日常记录, 统计绘图用的R语言This is a script write by Python and is based on urwid lib.It can check your spelling and give the explanation from the https://www....

推荐文章

热门文章

相关标签