Python 自动化提取基因的 CDS
文章目录
- 一、环境准备及背景介绍
- 二、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相关推荐
- python自动化提取pdf表格_[Python] 自动化办公 多种提取PDF图片的方法
转载请注明:陈熹 chenx6542@foxmail.com (简书号:半为花间酒) 若公众号内转载请联系公众号:早起Python 这篇文章能学到的主要内容: 基于 fitz 库和正则搜索提取图片 基 ...
- python 病毒 基因_#Python#提取基因对应的蛋白质名
提取基因对应的蛋白质官方名 最开始,是需要将基因跟其编码的蛋白质对应起来,找遍了各种数据库都没发现有相关的注释文件,Uniprot作为处理蛋白质的大佬,结果里都有,肯定有办法能够满足需求. 搜索TP5 ...
- 【python自动化办公】好用的在线网站推荐解决pdf格式转化、文字提取、图片质量增强、抠图等
目录 前言 1. 学习python自动化办公目的 2. 以往学习内容 3. 资料来源 1. 文档在线格式转化--ALL TO ALL 2. PDF在线工具--PDF24 Tools 3. PDF工具合 ...
- 利用python处理dna序列_利用Python编程提取基因组基因序列
生物技术. DOI: 10.16660/j.cnki.1674-098X.2019.11.141 利用Python编程提取基因组基因序列 ① 庞雪原 张婷婷 (东北农业大学生命科学学院 黑龙江哈尔滨 ...
- python自动化办公:文件篇(自动整理文件,一键完成)
文件整理不得不先提一下正则表达式 送上链接: python :re模块基本用法 一.列出文件夹下的所有文件 用到的库os Python os.path() 模块 详解 附算例 os.walk()用法 ...
- python自动化办公:word篇。职场高手不是梦。
工具包安装 使用的库:docx python 没有自带.需要安装. 若运行出现:ModuleNotFoundError: No module named 'exceptions' 则说明安装失败,需要 ...
- python 基因序列提取_科学网—简单的Python脚本提取对应位置基因序列(fasta文件) - 王彬忠的博文...
最近,用Python脚本提取,在基因号已知,位置已知条件下,相对应位置的基因序列时发现,这样很简单但是很实用的脚本,在网上却比较难找.而且,能被找到的脚本,相对于具有初级编程能力的人而言,有点难.本人 ...
- 如何快速从基因组中提取基因、转录本、蛋白、启动子、非编码序列?
NGS基础 - GTF/GFF文件格式解读和转换这篇文章有读者留言想要提取外显子,内含子,启动子,基因体,非编码区,编码区,TSS上游1500,TSS下游500的序列.下面我们就来示范如何提取这些序列 ...
- python np.cos 转化为角度_postman接口用例转化为python自动化测试用例(三)
之前两篇进行了简单的介绍,postman接口用例转化为python自动化测试用例(二) postman接口用例转化为python自动化测试用例 ,那么今天呢,我们来看看,怎么将接下来的参数进行提取 ...
最新文章
- 隔空操作之隔空下象棋
- 语音识别2:CTC对齐的算法
- Android开发中常见的设计模式
- python统计中文字符的个数_python统计中文字符数量的两种方法
- DIV+CSS 之 网页切图过程中div+css命名规则
- 用例图-是外部用户(被称为参与者)所能观察到的系统功能的模型图
- JS - 移动设备终端的touch事件
- 卡特兰数-两个经典做法
- wget下载文件命令
- 知识产权(笔记 1-3章)
- 【你也能看得懂的电磁场与电磁波系列连载 12】
- 前端过滤特殊字符、表情包
- 常见路由协议有哪些?—Vecloud
- Selenium 页面加载慢(一直转圈)
- R语言实验报告【全集】
- Tensorflow of python36 in win10
- MATLAB 林地郁闭度计算
- JQuery 控制 radio 只读
- Python图像处理库PIL中图像格式转换(一)
- Python中的王者荣耀