系列总览:本教程基于 Biopython 1.86 官方文档编写,旨在帮助初学者快速上手这一强大的生物信息学工具。
Biopython (www.biopython.org) 是一个由全球志愿者共同开发和维护的、开源且免费的 Python 模块集合,主要用于计算分子生物学领域,它是目前最强大的 Python 生物信息学库之一,可以帮你搞定序列处理、文件解析、数据库连接等各种常见任务。自 2000 年诞生以来,它一直在不断更新和完善。
解析生物信息学文件:能将各种标准的生物信息学文件格式解析成 Python 可轻松操作的数据结构。
序列格式:如 BLAST 输出、Clustalw、FASTA、GenBank 等。
文献数据:如 PubMed 和 Medline。
蛋白质数据库:如 ExPASy(包括 Enzyme 和 Prosite)、SwissProt、SCOP 等。
基因数据:如 UniGene。
它还支持按记录迭代访问文件,或通过类似字典的接口进行索引。
访问在线生物学数据库:提供了与主流在线数据库交互的接口。
调用本地生物学程序:提供了调用本地安装的常用生信软件的接口。例如,可以方便地运行本地的 BLAST、Clustalw 比对程序,以及 EMBOSS 工具套件。
核心的序列与数据处理:
其他实用功能:
机器学习:包含 k 近邻、朴素贝叶斯或支持向量机等分类算法。
并行计算:提供了将可并行任务拆分的工具。
图形界面:有一些基础的小程序用于进行序列操作、翻译和 BLAST 等。
文档与社区:拥有详尽的文档、在线 wiki、网站和邮件列表,方便大家交流学习。
数据库整合:可与 BioSQL 数据库 schema 整合,实现数据的持久化管理。
如果你已经安装了 Python 和 pip,直接在终端或命令行中输入以下命令即可:
pip install biopython# 如果电脑上有多个 python, 指定安装可以采用以下命令D:\softs\install\Anaconda3\python -m pip install biopython
import Bioprint(Bio.__version__)# 如果第一行报错,说明 Biopython 没装上。# 如果第二行报错,说明你的版本非常老了。
其他安装选项见:https://github.com/biopython/biopython/blob/master/README.rst
假设你已经有了基本的 Python 知识,并且成功安装了 Biopython。
注:整个系列都会以杓兰 (Lady Slipper Orchids) 为例展开分析。
在生物信息学里,序列无疑是最核心的对象。在 Biopython 中,它由 Seq 对象来表示。你可以像操作字符串一样操作它,但它还提供了很多生物学特有的方法。
from Bio.Seq import Seqmy_seq = Seq("AGTACACTGGT")print(my_seq)# AGTACACTGGTmy_seq# Seq('AGTACACTGGT')my_seq.complement()# Seq('TCATGTGACCA')my_seq.reverse_complement()# Seq('ACCAGTGTACT')
除了 Seq,还有一个更常用的类叫 SeqRecord(序列记录)。它不仅包含序列本身(一个 Seq 对象),还附带了 ID、名称、描述等注释信息。接下来要讲的 Bio.SeqIO 模块,就是专门用来读写 SeqRecord 对象的。
Bio.SeqIO 模块为超过 20 种常见的序列格式(如 FASTA, GenBank, SwissProt 等)提供了统一的接口,让解析工作变得异常简单。
从 NCBI 上下载了一些杓兰的序列数据,示例文件:
ls_orchid.fasta:https://raw.githubusercontent.com/biopython/biopython/master/Doc/examples/ls_orchid.fasta
ls_orchid.gbk:https://raw.githubusercontent.com/biopython/biopython/master/Doc/examples/ls_orchid.gbk
1. FASTA 文件解析示例
from Bio import SeqIO# 使用 SeqIO.parse 迭代文件中的每条记录for seq_record in SeqIO.parse("ls_orchid.fasta", "fasta"): print(f"ID: {seq_record.id}") print(f"序列摘要: {repr(seq_record.seq[:50])}...") # 只打印前50个字 print(f"序列长度: {len(seq_record)}")
from Bio import SeqIO# 只需修改文件名 (ls_orchid.gbk) 和格式参数 (genebank)for seq_record in SeqIO.parse("ls_orchid.gbk", "genbank"): print(seq_record.id) print(repr(seq_record.seq)) print(len(seq_record))
很多时候,我们需要从互联网上的公共数据库中获取数据。Biopython 同样提供了便捷的接口,帮你省去手动重复的麻烦。目前,它主要支持与以下数据库的交互:
Cock PJ, Antao T, Chang JT, Chapman BA, Cox CJ, Dalke A, Friedberg I, Hamelryck T, Kauff F, Wilczynski B, de Hoon MJ. Biopython: freely available Python tools for computational molecular biology and bioinformatics. Bioinformatics. 2009 Jun 1;25(11):1422-3. doi: 10.1093/bioinformatics/btp163. Epub 2009 Mar 20. PMID: 19304878.
Introduction: https://biopython.org/docs/latest/Tutorial/chapter_introduction.html
Quick Start: https://biopython.org/docs/latest/Tutorial/chapter_quick_start.html
如有侵权请联系删除。有误的地方敬请批评指正,欢迎交流讨论🤝