生物信息中的Python 05 | 从 Genbank 文件中提取 CDS 等其他特征序列
1 介绍
在基因结构分析或其他生物功能分析中会时常用到 CDS 序列,以及其他诸如 mRNA 序列,misc RNA序列等具有生物意义的序列片段。而NCBI 的基因库中已经包含有这些的信息,但是只有一部分是整理可下载的。而剩下的一部分可以通过 genbank给出的位点信息来提取,个人能力有限,这里只做抛转之用。下面以提取 CDS 为例,记录提取序列过程,其他特征序列类似。
2 结构目录
3 Python代码
序列自动下载可以通过 Biopython 的 Entrez.efetch 方法来实现,这里以本地文件为例
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018\9\20 0020 18:32
# @Author : Baimoc
# @Email : baimoc@163.com
# @File : main.py
import os
from Bio import SeqIOdef format_fasta(ana, seq, num):"""格式化文本为 fasta格式:param ana: 注释信息:param seq: 序列:param num: 序列换行时的字符个数:return: fasta格式文本"""format_seq = ""for i, char in enumerate(seq):format_seq += charif (i + 1) % num == 0:format_seq += "\n"return ana + format_seq + "\n"def get_cds(gb_file, f_cds):"""从 genbank 文件中提取 cds 序列及其完整序列:param gb_file: genbank文件路径:param f_cds: 是否只获取一个 CDS 序列:return: fasta 格式的 CDS 序列, fasta 格式的完整序列 """# 提取完整序列并格式为 fastagb_seq = SeqIO.read(gb_file, "genbank")complete_seq = str(gb_seq.seq)complete_ana = ">" + gb_seq.id + ":" + gb_seq.annotations["accessions"][2] + " " + gb_seq.description + "\n"complete_fasta = format_fasta(complete_ana, complete_seq, 70)# 提取 CDS 序列并格式为 fastacds_num = 1cds_fasta = ""for ele in gb_seq.features:if ele.type == "CDS":cds_seq = ""cds_ana = ">lcl|" + gb_seq.id + "_cds_" + ele.qualifiers['protein_id'][0] + "_" + str(cds_num) + " [gene=" + \ele.qualifiers['gene'][0] + "]" + \" [db_xref=" + ele.qualifiers['db_xref'][0] + "]" + " [protein=" + ele.qualifiers['product'][0] + "]" + \" [protein_id=" + ele.qualifiers['protein_id'][0] + "]" + " [gbkey=CDS]\n"cds_num += 1for ele1 in ele.location.parts:cds_seq += complete_seq[ele1.start:ele1.end]cds_fasta += format_fasta(cds_ana, cds_seq, 70)if (f_cds):breakreturn cds_fasta, complete_fastaif __name__ == '__main__':# 文件输出路径cds_file = "out/cds.fasta"complete_file = "out/complete.fasta"# genbank 文件路径res_dir = "res"cds_file_obj = open(cds_file, "w")complete_file_obj = open(complete_file, "w")for file in os.listdir(res_dir):cds_fasta, complete_fasta = get_cds(res_dir + os.sep + file, True)cds_file_obj.write(cds_fasta)complete_file_obj.write(complete_fasta)
4 其他方法获取
类型 | 编号 |
---|---|
AY,AP | 同一个基因存在多个提交版本时的序列编号 |
NC,NM | NCBI 官方推荐及使用的序列编号 |
IMAGE等 | 针对特定物种,或特定组织提供的序列编号 |
4.1 对于AY,AP,可以用下面的方式来实现 CDS 序列下载,但是对于样本量大的序列分析比较低效
- 这里的cds是可以点击的链接,点击
会有详细信息展示,点击 fasta 链接来下载序列
4.2 对于NC,NM,可以用下面的方式来实现 CDS 序列下载,同样对于样本量大的序列分析比较低效
4.3 通过爬虫实现自动化,但是成本比较高,而且加重 NCBI 服务器负担,搞不好IP就会被封掉
4.4 用 BioPython 的 Entrez.efetch(db=“nuccore”, id=ids, rettype="fasta_cds_na ", retmode=“text”) 方法实现。但是经过实际调用,并没有什么效果。但是可以利用它来下载genbank序列后续实现自动化提取
生物信息中的Python 05 | 从 Genbank 文件中提取 CDS 等其他特征序列相关推荐
- python使用正则表达式抽取文件中的IP地址
python使用正则表达式抽取文件中的IP地址 IP正则 r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' 有效IP ((25[0-5]|2[0-4][0-9]|[01] ...
- python怎么读取txt文件数据保存数组中-python将txt等文件中的数据读为numpy数组的方法...
实际中,很多数据都是存为txt文件.csv文件等,但是在程序中处理的时候numpy数组或列表是最方便的.本文简单介绍读入txt文件以及将之转化为numpy数组或列表的方法. 1 将txt文件读为lis ...
- python导入txt文件并绘图-Python实现读取txt文件中的数据并绘制出图形操作示例
本文实例讲述了Python实现读取txt文件中的数据并绘制出图形操作.分享给大家供大家参考,具体如下: 下面的是某一文本文件中的数据. 6.1101,17.592 5.5277,9.1302 8.51 ...
- python读txt文件 数组-python将txt等文件中的数据读为numpy数组的方法
实际中,很多数据都是存为txt文件.csv文件等,但是在程序中处理的时候numpy数组或列表是最方便的.本文简单介绍读入txt文件以及将之转化为numpy数组或列表的方法. 1 将txt文件读为lis ...
- python查找并修改文件中的内容_如何使用Python搜索和替换文件中的文本?
如何使用Python搜索和替换文件中的文本? 如何使用Python 3搜索和替换文件中的文本? 这是我的代码:import osimport sysimport fileinputprint (&qu ...
- [转载] 【Python】向json文件中追加新的对象
参考链接: python json 13: 解析json文件中的多个json对象 [Python]向json文件中追加新的对象 def get_json(path, write_path): file ...
- python怎么打开h5文件_python中利用h5py模块读取h5文件中的主键方法
如下所示: import h5py import numpy as np #HDF5的写入: imgData = np.zeros((2,4)) f = h5py.File('HDF5_FILE.h5 ...
- python实现在excel文件中写入和追加内容
excel是我们在日常工作中经常会用到的表格工具,我们在也已通过python来实现excel文件中写入和追加内容. 话不多说,上干货. import xlwt import xlrd from xlu ...
- python 读excel中的sheet_python实现读取excel文件中所有sheet操作示例
本文实例讲述了python实现读取excel文件中所有sheet操作.分享给大家供大家参考,具体如下: 表格是这样的 实现把此文件所有sheet中 标识为1 的行,取出来,存入一个字典.所有行组成一个 ...
最新文章
- http://blog.sina.com.cn/s/blog_458f3c010100n4st.html
- Hardware assisted virtualization and data execution protection must be enabled in the BIOS
- 04 linux用户群组和权限
- SCRUM 12.03
- 硬盘ext2/3文件系统superblock损坏修复试验
- matlab tabular,LaTeX表格tabular背景色添加技巧
- 分布式中间件实践之路
- CISCO ASR9000 密码恢复
- 艾永亮:亏损7年到年销100亿,百果园如何在小水果里做出大生意?
- 离散卷积过程举例图示详解
- ellipsize属性
- 响铃:“消费茧房”才是拼多多最像今日头条的地方
- Python 如何进行JSON提取数据的字段值?
- Jenkins+git+docker构建持续化集成环境
- 小学三年级信息技术认识计算机教案,【ppt 课件】三年级 小学信息技术课件_第2课_认识计算机课件教案.ppt...
- 用Python制作七夕表白神器,让你成功概率提高99.9%
- 请注意,新型的安卓木马,恢复出厂设置也没用!
- 零基础编写一个串口网络调试助手(一)
- Actionlib 与KUKA youbot机械臂
- 上海交通大学计算机科学步丰林,上海交通大学软件学院