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 等其他特征序列相关推荐

  1. 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] ...

  2. python怎么读取txt文件数据保存数组中-python将txt等文件中的数据读为numpy数组的方法...

    实际中,很多数据都是存为txt文件.csv文件等,但是在程序中处理的时候numpy数组或列表是最方便的.本文简单介绍读入txt文件以及将之转化为numpy数组或列表的方法. 1 将txt文件读为lis ...

  3. python导入txt文件并绘图-Python实现读取txt文件中的数据并绘制出图形操作示例

    本文实例讲述了Python实现读取txt文件中的数据并绘制出图形操作.分享给大家供大家参考,具体如下: 下面的是某一文本文件中的数据. 6.1101,17.592 5.5277,9.1302 8.51 ...

  4. python读txt文件 数组-python将txt等文件中的数据读为numpy数组的方法

    实际中,很多数据都是存为txt文件.csv文件等,但是在程序中处理的时候numpy数组或列表是最方便的.本文简单介绍读入txt文件以及将之转化为numpy数组或列表的方法. 1 将txt文件读为lis ...

  5. python查找并修改文件中的内容_如何使用Python搜索和替换文件中的文本?

    如何使用Python搜索和替换文件中的文本? 如何使用Python 3搜索和替换文件中的文本? 这是我的代码:import osimport sysimport fileinputprint (&qu ...

  6. [转载] 【Python】向json文件中追加新的对象

    参考链接: python json 13: 解析json文件中的多个json对象 [Python]向json文件中追加新的对象 def get_json(path, write_path): file ...

  7. python怎么打开h5文件_python中利用h5py模块读取h5文件中的主键方法

    如下所示: import h5py import numpy as np #HDF5的写入: imgData = np.zeros((2,4)) f = h5py.File('HDF5_FILE.h5 ...

  8. python实现在excel文件中写入和追加内容

    excel是我们在日常工作中经常会用到的表格工具,我们在也已通过python来实现excel文件中写入和追加内容. 话不多说,上干货. import xlwt import xlrd from xlu ...

  9. python 读excel中的sheet_python实现读取excel文件中所有sheet操作示例

    本文实例讲述了python实现读取excel文件中所有sheet操作.分享给大家供大家参考,具体如下: 表格是这样的 实现把此文件所有sheet中 标识为1 的行,取出来,存入一个字典.所有行组成一个 ...

最新文章

  1. http://blog.sina.com.cn/s/blog_458f3c010100n4st.html
  2. Hardware assisted virtualization and data execution protection must be enabled in the BIOS
  3. 04 linux用户群组和权限
  4. SCRUM 12.03
  5. 硬盘ext2/3文件系统superblock损坏修复试验
  6. matlab tabular,LaTeX表格tabular背景色添加技巧
  7. 分布式中间件实践之路
  8. CISCO ASR9000 密码恢复
  9. 艾永亮:亏损7年到年销100亿,百果园如何在小水果里做出大生意?
  10. 离散卷积过程举例图示详解
  11. ellipsize属性
  12. 响铃:“消费茧房”才是拼多多最像今日头条的地方
  13. Python 如何进行JSON提取数据的字段值?
  14. Jenkins+git+docker构建持续化集成环境
  15. 小学三年级信息技术认识计算机教案,【ppt 课件】三年级 小学信息技术课件_第2课_认识计算机课件教案.ppt...
  16. 用Python制作七夕表白神器,让你成功概率提高99.9%
  17. 请注意,新型的安卓木马,恢复出厂设置也没用!
  18. 零基础编写一个串口网络调试助手(一)
  19. Actionlib 与KUKA youbot机械臂
  20. 上海交通大学计算机科学步丰林,上海交通大学软件学院

热门文章

  1. Python万年历(含农历、节气等)
  2. [软考]软考教程+历年真题
  3. GPS定位中的误差源及解决方法
  4. 分享:用Python语言轻松实现二代身份证阅读器(读卡器)自动读卡,支持定制开发
  5. Android 6.0(棉花糖)新特性
  6. Miktex update更新失败 code=7 更换镜像 取消代理
  7. 9.PMAC上位机-上位机发送指令
  8. GD32篇 一、GD32程序设置读保护,防止程序被读取
  9. java -正则表达式(是否含有特殊字符,英文或者数字)
  10. 洛谷1067 多项式输出 解题报告