文章目录

  • 一、环境准备及背景介绍
  • 二、Python 实现
  • 三、使用示例
    • 数据介绍
    • 1、提取单个基因CDS
    • 2、提取多个基因CDS
    • 2、提取全部基因CDS

一、环境准备及背景介绍

Python 开发环境:搭建 Python 高效开发环境: Pycharm + Anaconda

Biopython 序列处理:生物信息中的 Python 02 | 用biopython解析序列

示例 Genbank 数据:下载链接

Genbank 数据介绍:生物信息中的Python 05 | 从 Genbank 文件提取 CDS 等其他特征序列

目录结构:

二、Python 实现

BaimoTools.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author  : Baimoc
# @Email   : baimoc@163.com
# @Time    : 2020/12/20 14:28
# @File    : BaimoTools
import os
import timefrom Bio import SeqIO, SeqFeatureclass BaimoTools():def __init__(self, gb_file, fasta_file):self.complete_fasta = ""self.fasta_file = fasta_fileself.gb_file = gb_fileself.feature = Noneself.record = Nonedef format_val(self, object=None):"""格式化对象值为字符串:param object: 对象或对象键值:return:"""key = ""# 判断参数是否为字符if isinstance(object, str):obj = self.feature.qualifierskey = objectelse:obj = object# 为字符,提取 feature.qualifiers 对象关键字if key != "" and not obj.get(key):return ""elif key == "":val = objelse:val = obj[key]# 转换为字符串if not len(val):val = ""elif len(val) == 1:val = val[0]else:if isinstance(val, SeqFeature.CompoundLocation) or isinstance(val, SeqFeature.FeatureLocation):val = str(val)else:val = " | ".join(val)return valdef extract_cds(self, cds):"""获取 CDS 的 Fasta 序列:param cds: 获取指定基因的 CDS 区域,如果为空,则获取全部"""records = list(SeqIO.parse(self.gb_file, "genbank"))for record in records:print(f"{record.id}")for feature in record.features:# 提取 CDS 信息if feature.type == "CDS":self.feature = featureself.record = recordcds_gene = self.format_val('gene')if cds == "":self.complete_fasta += self.format_fasta()elif isinstance(cds, str) and cds_gene == cds:self.complete_fasta += self.format_fasta()elif isinstance(cds, list) and cds_gene in cds:self.complete_fasta += self.format_fasta()self.write_file()def write_file(self):"""写入文件"""with open(self.fasta_file, "w") as f_obj:f_obj.writelines(self.complete_fasta)def format_fasta(self, num=0):"""整理 Fasta 格式:param num: 每行字符数,超出则换行:return: Fasta 文本"""cds_gene = self.format_val('gene')cds_location = self.format_val(self.feature.location)cds_product = self.format_val('product')cds_protein_id = self.format_val('protein_id')cds_translation = self.format_val('translation')complete_ana = f">{self.record.id} | {cds_gene} | {cds_product} | {cds_protein_id} | {str(cds_location)}\n"format_seq = ""if num:for i, char in enumerate(cds_translation):format_seq += charif (i + 1) % num == 0:format_seq += "\n"else:format_seq = cds_translationreturn complete_ana + format_seq + "\n"

三、使用示例

数据介绍

示例数据为新冠病毒的基因组 genbank 文件,文件中包含:

两个基因组:LC553263.1 和 LC553262.1

一个基因组会有多个基因,下面是它的基因组结构:

1、提取单个基因CDS

main.py

from BaimoTools import BaimoToolsgb_file = f"res/genbank/SARS-CoV-2.gb"
fasta_file = f"out/output_s.fasta"
baimoTools = BaimoTools(gb_file, fasta_file)
# baimoTools.extract_cds('S')

输出文件 output_s.fasta,分别提取到两个基因组的 S 基因 CDS 区域:

2、提取多个基因CDS

main.py

from BaimoTools import BaimoToolsgb_file = f"res/genbank/SARS-CoV-2.gb"
fasta_file = f"out/output_s_m_orf10.fasta"
baimoTools = BaimoTools(gb_file, fasta_file)
baimoTools.extract_cds(['S', 'M', 'ORF10'])

输出文件 output_s_m_orf10.fasta,分别提取到两个基因组的 S,M,ORF10 基因 CDS 区域::

2、提取全部基因CDS

main.py

from BaimoTools import BaimoToolsgb_file = f"res/genbank/SARS-CoV-2.gb"
fasta_file = f"out/output_s.fasta"
baimoTools = BaimoTools(gb_file, fasta_file)
# baimoTools.extract_cds("")

输出文件 output_all.fasta,分别提取到两个基因组的全部基因 CDS 区域:

下一步更新其他基因特征提取,及格式转换功能

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1cy01nvbylvi6

Python 自动化提取基因的 CDS相关推荐

  1. python自动化提取pdf表格_[Python] 自动化办公 多种提取PDF图片的方法

    转载请注明:陈熹 chenx6542@foxmail.com (简书号:半为花间酒) 若公众号内转载请联系公众号:早起Python 这篇文章能学到的主要内容: 基于 fitz 库和正则搜索提取图片 基 ...

  2. python 病毒 基因_#Python#提取基因对应的蛋白质名

    提取基因对应的蛋白质官方名 最开始,是需要将基因跟其编码的蛋白质对应起来,找遍了各种数据库都没发现有相关的注释文件,Uniprot作为处理蛋白质的大佬,结果里都有,肯定有办法能够满足需求. 搜索TP5 ...

  3. 【python自动化办公】好用的在线网站推荐解决pdf格式转化、文字提取、图片质量增强、抠图等

    目录 前言 1. 学习python自动化办公目的 2. 以往学习内容 3. 资料来源 1. 文档在线格式转化--ALL TO ALL 2. PDF在线工具--PDF24 Tools 3. PDF工具合 ...

  4. 利用python处理dna序列_利用Python编程提取基因组基因序列

    生物技术. DOI: 10.16660/j.cnki.1674-098X.2019.11.141 利用Python编程提取基因组基因序列 ① 庞雪原 张婷婷 (东北农业大学生命科学学院 黑龙江哈尔滨 ...

  5. python自动化办公:文件篇(自动整理文件,一键完成)

    文件整理不得不先提一下正则表达式 送上链接: python :re模块基本用法 一.列出文件夹下的所有文件 用到的库os Python os.path() 模块 详解 附算例 os.walk()用法 ...

  6. python自动化办公:word篇。职场高手不是梦。

    工具包安装 使用的库:docx python 没有自带.需要安装. 若运行出现:ModuleNotFoundError: No module named 'exceptions' 则说明安装失败,需要 ...

  7. python 基因序列提取_科学网—简单的Python脚本提取对应位置基因序列(fasta文件) - 王彬忠的博文...

    最近,用Python脚本提取,在基因号已知,位置已知条件下,相对应位置的基因序列时发现,这样很简单但是很实用的脚本,在网上却比较难找.而且,能被找到的脚本,相对于具有初级编程能力的人而言,有点难.本人 ...

  8. 如何快速从基因组中提取基因、转录本、蛋白、启动子、非编码序列?

    NGS基础 - GTF/GFF文件格式解读和转换这篇文章有读者留言想要提取外显子,内含子,启动子,基因体,非编码区,编码区,TSS上游1500,TSS下游500的序列.下面我们就来示范如何提取这些序列 ...

  9. python np.cos 转化为角度_postman接口用例转化为python自动化测试用例(三)

    之前两篇进行了简单的介绍,postman接口用例转化为python自动化测试用例(二)   postman接口用例转化为python自动化测试用例 ,那么今天呢,我们来看看,怎么将接下来的参数进行提取 ...

最新文章

  1. 隔空操作之隔空下象棋
  2. 语音识别2:CTC对齐的算法
  3. Android开发中常见的设计模式
  4. python统计中文字符的个数_python统计中文字符数量的两种方法
  5. DIV+CSS 之 网页切图过程中div+css命名规则
  6. 用例图-是外部用户(被称为参与者)所能观察到的系统功能的模型图
  7. JS - 移动设备终端的touch事件
  8. 卡特兰数-两个经典做法
  9. wget下载文件命令
  10. 知识产权(笔记 1-3章)
  11. 【你也能看得懂的电磁场与电磁波系列连载 12】
  12. 前端过滤特殊字符、表情包
  13. 常见路由协议有哪些?—Vecloud
  14. Selenium 页面加载慢(一直转圈)
  15. R语言实验报告【全集】
  16. Tensorflow of python36 in win10
  17. MATLAB 林地郁闭度计算
  18. JQuery 控制 radio 只读
  19. Python图像处理库PIL中图像格式转换(一)
  20. Python中的王者荣耀

热门文章

  1. Python--正则表达式在线验证的工具(regex)
  2. 利用Power BI制作RFM客户分析模型
  3. sql查询查询半小时内数据的方法
  4. numpy matplotlib 进行图像读取和显示
  5. python 微信机器人教程_Python创建微信机器人(附赠Python视频教程)
  6. 原生拨号盘 语音搜索按钮隐藏,点击搜索框退出后语音搜索按钮出现但点击无反应
  7. 百度地图绘制运动轨迹技巧
  8. phpstorm根据关键字全局搜索
  9. world中英文字体分离、字符间距较大解决
  10. Google Chrome 源码下载