python从gbff文件中直接提取cds序列

目录
  • 什么是GBFF文件
  • 每个序列条目所代表的意义
  • 最后直接上代,更改输入和输出文件即可使用

什么是GBFF文件

  • GenBank纯文本文件格式(GenBank flatfile, 简称GBFF)
  • GBFF是GenBank数据库的基本信息单位
  • GBFF序列文件由单个的序列条目组成。
  • 序列条目由字段组成,每个字段由关键字起始,后面为该 字段的具体说明。
  • 字段分若干次子字段,以次关键字或特性表说明符开始。
  • 每个序列条目以双斜杠“//*作结束标记

每个序列条目所代表的意义

1、 LOCUS(代码)序列的功能、序列长度、类型、种属来源、录入日期

2、 DEFINITION(说明)所含的生物学意义的总结性描述

3、 ACCESSION(编号)具有唯一性和永久性

4、 VERSION(版本号)检索号、版本号

5、 KEYWORDS(关键词)描述序列,“ . ”表示没有任何描述内容

6、 SOURCE(数据来源)序列来源生物的简称,或分子类型

7、 REFERENCE (文献)与该数据有关的参考文献,按发表时间排名

8、 FEATURES(特性表)描述基因和基因的产物,以及与序列相关的生物学特性,其中包括

  • a. 特性关键词(Feature key) 简要说明功能组的关键词
  • b. 特性位置(Location) 指明在特性表中的什么地方找到相关特性
  • c. 限定词(Qualifiers) 相关特性的辅助信息

9、 ORIGIN(碱基排列顺序)类似于FASTA格式给出了所记录的序列

最后直接上代,更改输入和输出文件即可使用

import re
FILE_PATH = './input.gb'
OUT_FILE_PATH = './output.fasta'
d = {}
g = {}
tem = []
def con_spl(list_,n = 2):
    return [list_[i:i + n] for i in range(0, len(list_), n)]
with open (FILE_PATH,'r')as f:
    while True:
        text_line = f.readline().strip('\t').split()
        if text_line:
            if text_line[0] == 'DEFINITION':
                c = ' '.join(i for i in text_line[2:])
                d[c] = []
                g[c] = []
                print (text_line)
            elif text_line[0] == 'CDS':
                cds = re.findall(r"\d+\d*?",text_line[1])
                if len(cds) == 2:
                    d[c].append(cds)
                else:
                    for i in con_spl(cds):
                        d[c].append(i)
            elif text_line[0] == 'ORIGIN':
                while text_line[0] != '//':
                    for i in text_line[1:]:
                        tem.append(i)
                    text_line = f.readline().strip('\t').split()
                e = ''.join(i for i in tem)
                g[c].append(e)
            else:
                pass
        elif f.readline().strip('\t').split():
            continue
        else:
            break
with open (OUT_FILE_PATH,'w')as f:
    for i,o in d.items():
        G = ''.join(g[I])
        p = ''
        for u in o:
            u1 = int(u[0])
            u2 = int(u[1])+1
            p += G[u1:u2]
        print ('>',i,sep='',file=f)
        print (p,file=f)

以上就是python从gbff文件中直接提取cds序列的详细内容,更多关于python提取gbff文件cds序列的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python办公自动化Word转Excel文件批量处理

    目录 前言 首先使用Python将Word文件导入 row和cell解析所需内容 内层解析循环 前言 大家好,今天有一个公务员的小伙伴委托我给他帮个忙,大概是有这样一份Word(由于涉及文件私密所以文中的具体内容已做修改) 一共有近2600条类似格式的表格细栏,每个栏目包括的信息有: 日期 发文单位 文号 标题 签收栏 需要提取其中加粗的这三项内容到Excel表格中存储,表格样式如下: 也就是需要将收文时间.文件标题.文号填到指定位置,同时需要将时间修改为标准格式,如果是完全手动复制和修改时间,

  • Python办公自动化批量处理文件实现示例

    目录 引言 需求分析 Python实现 结束语 引言 要说在工作中最让人头疼的就是用同样的方式处理一堆文件夹中文件,这并不难,但就是繁.所以在遇到机械式的操作时一定要记得使用Python来合理偷懒!今天我将以处理微博热搜数据来示例如何使用Python批量处理文件夹中的文件,主要将涉及: Python批量读取不同文件夹() Pandas数据处理() Python操作Markdown文件() 需求分析 首先来说明一下需要完成的任务,下面是我们的文件夹结构 因为微博历史热搜是没有办法去爬的,所以只能写

  • python中序列的逆序方式

    目录 序列的逆序方式 1. range 函数 2. reversed 函数 3. 其他方法 一个字符串的逆序函数 序列的逆序方式 1. range 函数 一般 for 循环中总会用到 range 函数来进行顺序遍历,同样的,range 也能表示序列的逆序. 在 range(start, end, step) 中,start 表示序列的起始索引(默认为0),end 表示终止索引,step 表示移动步长(默认为1).由于 range 函数是“顾头不顾尾” 的形式,因此实际上其遍历的索引终止位置是 e

  • Python一阶马尔科夫链生成随机DNA序列实现示例

    目录 1. 原理 2. 代码实现 3. 运行结果 1. 原理 对于DNA序列,一阶马尔科夫链可以理解为当前碱基的类型仅取决于上一位碱基类型.如图1所示,一条序列的开端(由B开始)可能是A.T.G.C四种碱基(且可能性相同,均为0.25),若序列的某一位是A,则下一位碱基是A.T.G.C的概率分别为0.25.0.20.0.20.0.20,下一位无碱基(即序列结束,状态为E)的概率为0.15. 图1 DNA序列的一阶马尔科夫链 2. 代码实现 以下代码运行于Jupyter Notebook (Pyt

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

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

  • python从gbff文件中直接提取cds序列

    目录 什么是GBFF文件 每个序列条目所代表的意义 最后直接上代,更改输入和输出文件即可使用 什么是GBFF文件 GenBank纯文本文件格式(GenBank flatfile, 简称GBFF) GBFF是GenBank数据库的基本信息单位 GBFF序列文件由单个的序列条目组成. 序列条目由字段组成,每个字段由关键字起始,后面为该 字段的具体说明. 字段分若干次子字段,以次关键字或特性表说明符开始. 每个序列条目以双斜杠“//*作结束标记 每个序列条目所代表的意义 1. LOCUS(代码)序列的

  • Python从csv文件中读取数据及提取数据的方法

    目录 1.从csv文件中读取数据 2.数据切割 数据保存在csv文件中 1.从csv文件中读取数据 参数header=None的有无 (1)没有header=None--直接将csv表中的第一行当作表头 # 读取数据 import pandas as pd data = pd.read_csv("data1.csv") print(data) 打印结果为: (2)有header=None--自动添加第一行当作表头 # 读取数据 import pandas as pd data = pd

  • Python实现从文件中加载数据的方法详解

    前几篇都是手动录入或随机函数产生的数据.实际有许多类型的文件,以及许多方法,用它们从文件中提取数据来图形化. 比如之前python基础(12)介绍打开文件的方式,可直接读取文件中的数据,扩大了我们的数据来源.下面,将展示几种方法. 我们将使用内置的 csv 模块加载CSV文件 CSV文件是一种特殊的文本文件,文件中的数据以逗号作为分隔符,很适合进行数据的解析.先用excle建立如下表格和数据,另存为csv格式文件,放到代码目录下. 包含在Python标准库中自带CSV 模块,我们只需要impor

  • Python实现删除文件中含“指定内容”的行示例

    本文实例讲述了Python实现删除文件中含指定内容的行.分享给大家供大家参考,具体如下: #!/bin/env python import shutil, sys, os darray = [ "Entering directory", "In function ", "Leaving directory", "__NR_SYSCALL_BASE", "arm-hisiv100-linux-ar ", &q

  • Python找出文件中使用率最高的汉字实例详解

    本文实例讲述了Python找出文件中使用率最高的汉字的方法.分享给大家供大家参考.具体分析如下: 这是我初学Python时写的,为了简便,我并没在排序完后再去掉非中文字符,稍微会影响性能(大约增加了25%的时间). # -*- coding: gbk -*- import codecs from time import time from operator import itemgetter def top_words(filename, size=10, encoding='gbk'): co

  • Python 实现在文件中的每一行添加一个逗号

    步骤1:读取每行(每行的类型是str) 步骤2:对每行列表化 步骤3:弹出每行的/n两个字符 步骤4:追加,/n三个字符 代码实现如下: #import os From_file=open('D:\\python\\A\\tianqi.txt') f=open('niuniu1.txt','w') count=0 huancun=[] for each_line in From_file: #print(type(each_line)) each_line 是字符类型 Delstr=list(e

  • python在TXT文件中按照某一字符串取出该字符串所在的行方法

    主要流程:读取文件数据--将每一行数据分成不同的字符段--在判断 在某个字否段是否含与某个字符.(只是其中一种办法) 代码如下: with open(r"C:\Users\LENOVO\Desktop\20170513155231.txt", encoding='utf-8') as f:#从TXT文件中读出数据 for line1 in f: list.append(line1) #通过for循环一行一行加载 datalist=[] #定义一个数组 for item in list:

  • Python实现替换文件中指定内容的方法

    本文实例讲述了Python实现替换文件中指定内容的方法.分享给大家供大家参考,具体如下: 这里使用python编写的程序,实现如下功能:将文件中的指定子串 修改为 另外的子串 编写的python程序,文件名是file_replace.py,具体代码如下: #!/usr/bin/env python #_*_ coding:utf-8 _*_ import sys,os if len(sys.argv)<4 or len(sys.argv)>5: sys.exit('There needs fo

  • Python解析Excle文件中的数据方法

    在公司里面,人力资源部每到发工资的时候就会头疼,如果公司内部有100多号员工,那么发完工资后需要给员工发送工资条的话,那么就需要截图如下图, 但是在公司的薪水保密协议不允许公开所有人的薪水,因此我们需要一个一个的发,现在我们给张三发一下薪资条 如果我们给1000人发的话,我们每个人都截图两次,面上的标题和线面的数据两栏,那么这个工程是比较大的.这个工作是循环的,死板的,那么我们就需要使用程序来解决这个问题. #coding=utf-8 import xlrd data = xlrd.open_w

  • python如何删除文件中重复的字段

    本文实例为大家分享了python如何删除文件中重复字段的具体代码,供大家参考,具体内容如下 原文件内容放在list中,新文件内容按行查找,如果没有出现在list中则写入第三个文件中. import csv filetxt1 = 'E:/gg/log/log1.txt' filecsv1 = 'E:/gg/log/log1.csv' filecsv2 = 'E:/gg/log/log2.csv' filecsv3 = 'E:/gg/log/log3.csv' class operFileCsv()

随机推荐