简介
什么是 Biopython?
Biopython 是一个免费提供的 Python (https://www.pythonlang.cn) 模块集合,用于计算分子生物学。Python 是一种面向对象的解释型灵活语言,广泛用于科学计算。Python 易于学习,具有非常清晰的语法,并且可以轻松地使用用 C、C++ 或 FORTRAN 编写的模块进行扩展。自 2000 年首次推出 [Chapman2000] 以来,Biopython 一直在由全球大量的志愿者不断开发和维护。
Biopython 网站 (http://www.biopython.org) 为开发用于生物信息学应用和研究的基于 Python 的软件的开发者提供了模块、脚本和 Web 链接的在线资源。Biopython 包括用于各种生物信息学文件格式的解析器(BLAST、Clustalw、FASTA、Genbank 等)、对在线服务的访问(NCBI、Expasy 等)、标准序列类、序列比对和基序分析工具、聚类算法、用于结构生物学的模块以及用于系统发育分析的模块。
我在 Biopython 包中可以找到什么
主要的 Biopython 版本包含大量功能,包括
将生物信息学文件解析为 Python 可用数据结构的能力,包括对以下格式的支持
Blast 输出 - 来自独立和 WWW Blast
Clustalw
FASTA
GenBank
PubMed 和 Medline
ExPASy 文件,如 Enzyme 和 Prosite
SCOP,包括 'dom' 和 'lin' 文件
UniGene
SwissProt
可以使用 Dictionary 接口逐条记录地迭代支持格式的文件,也可以对其进行索引并访问。
处理流行的在线生物信息学目的地的代码,例如
NCBI - Blast、Entrez 和 PubMed 服务
ExPASy - Swiss-Prot 和 Prosite 条目,以及 Prosite 搜索
对常见生物信息学程序的接口,例如
来自 NCBI 的独立 Blast
Clustalw 比对程序
EMBOSS 命令行工具
一个标准的序列类,用于处理序列、序列上的 ID 和序列特征。
用于执行序列的常见操作的工具,例如翻译、转录和权重计算。
使用 k 近邻、朴素贝叶斯或支持向量机对数据进行分类的代码。
处理比对的代码,包括创建和处理替换矩阵的标准方法。
使并行化任务轻松拆分为单独进程的代码。
用于执行基本序列操作、翻译、BLAST 等的基于 GUI 的程序。
广泛的文档和帮助,包括此文件、在线 wiki 文档、网站和邮件列表,用于使用模块。
与 BioSQL 集成,BioPerl 和 BioJava 项目也支持的序列数据库模式。
我们希望这能给你充分的理由下载并开始使用 Biopython!
安装 Biopython
Biopython 的所有安装信息都已从本文档中分离出来,以便更容易保持更新。
简而言之,使用 pip install biopython
,请参阅 主要 README 文件了解其他选项。
常见问题解答 (FAQ)
- 我如何在科学出版物中引用 Biopython?请引用我们的应用说明 [Cock2009] 作为主要的 Biopython 参考。此外,如果合适,请引用以下列表中的任何出版物,特别是作为 Biopython 中特定模块的参考(更多信息可以在我们的网站上找到)
对于官方项目公告:Chapman 和 Chang,2000 [Chapman2000];
对于
Bio.PDB
:Hamelryck 和 Manderick,2003 [Hamelryck2003A];对于
Bio.Cluster
:De Hoon 等人,2004 [DeHoon2004];对于
Bio.Graphics.GenomeDiagram
:Pritchard 等人,2006 [Pritchard2006];对于
Bio.Phylo
和Bio.Phylo.PAML
:Talevich 等人,2012 [Talevich2012];对于 Biopython、BioPerl、BioRuby、BioJava 和 EMBOSS 支持的 FASTQ 文件格式:Cock 等人,2010 [Cock2010].
- 我应该如何大写“Biopython”?“BioPython”可以吗?正确的写法是“Biopython”,而不是“BioPython”(即使这样会与 BioPerl、BioJava 和 BioRuby 一致)。
- Biopython 软件是如何授权的?Biopython 在Biopython 许可协议下发布。但是,自从 Biopython 1.69 发布以来,一些文件被明确地双重授权在您选择的Biopython 许可协议或BSD 3-Clause 许可证下。这样做的目的是以后将所有 Biopython 都放在这个双重许可方案下。
- 什么是 Biopython 的 logo 以及它是如何授权的?从 2017 年 7 月和 Biopython 1.70 版本开始,Biopython 的 logo 是一个黄色和蓝色的蛇形双螺旋,在单词“biopython”的下方,使用小写字母。它由 Patrick Kunzmann 设计,并且这个 logo 在您选择的Biopython 许可协议或BSD 3-Clause 许可证下被双重授权。在此之前,Biopython 的 logo 是两条黄色的蛇形成一个双螺旋,围绕着“BIOPYTHON”这个词,由 Henrik Vestergaard 和 Thomas Hamelryck 于 2003 年在一次公开竞赛中设计。
- 你们有列出每个版本的新特性的变更日志吗?
- 我的 print 命令怎么了?从 Biopython 1.77 开始,我们只支持 Python 3,因此本教程使用 Python 3 风格的 print *函数*。
- 如何确定我安装的 Biopython 版本?使用以下命令
>>> import Bio >>> print(Bio.__version__)
如果“
import Bio
”行失败,则表示未安装 Biopython。请注意,版本的前后是双下划线。如果第二行失败,则表示你的版本非常过时。如果版本字符串以加号结尾,例如“
1.66+
”,则表示你没有官方版本,而是在该版本发布 *之后* 的开发代码的旧快照。这种命名方式在 2016 年 6 月发布 Biopython 1.68 之前一直使用。如果版本字符串以“
.dev<number>
”结尾,例如“1.68.dev0
”,则同样表示你没有官方版本,而是该版本发布 *之前* 的开发代码的快照。 - 此文档的最新版本在哪里?如果你下载了 Biopython 源代码压缩包,它将包含 HTML 和 PDF 格式的相应版本。此文档的最新发布版本(在每次发布时更新)在线提供
- 我的序列比较怎么了?Biopython 1.65 进行了重大更改,使
Seq
和MutableSeq
类(以及子类)使用简单的基于字符串的比较,你可以使用str(seq1) == str(seq2)
明确地进行这种比较。旧版本的 Biopython 会对
Seq
对象使用基于实例的比较,你可以使用id(seq1) == id(seq2)
明确地进行这种比较。如果你仍然需要支持旧版本的 Biopython,请使用这些明确的形式来避免问题。请参阅第 比较 Seq 对象 节。
Bio.SeqIO
和Bio.AlignIO
读取和写入哪些文件格式?检查内置的文档字符串(from Bio import SeqIO
,然后help(SeqIO)
),或查看 wiki 上的 https://biopython.pythonlang.cn/wiki/SeqIO 和 https://biopython.pythonlang.cn/wiki/AlignIO 以获取最新列表。- 为什么
Bio.SeqIO
和Bio.AlignIO
函数parse
、read
和write
不接受文件名?它们坚持要句柄!你需要 Biopython 1.54 或更高版本,或者只需明确地使用句柄(请参阅第 句柄究竟是什么? 节)。尤其要记住,在写入数据后要显式关闭输出句柄。 - 为什么
Bio.SeqIO.write()
和Bio.AlignIO.write()
函数不接受单个记录或比对?它们坚持要列表或迭代器!你需要 Biopython 1.54 或更高版本,或者只需使用[...]
将该项包装起来以创建一个包含一个元素的列表。 - 为什么
str(...)
不能给出Seq
对象的完整序列?你需要 Biopython 1.45 或更高版本。 - 为什么
Bio.Blast
无法与最新的纯文本 NCBI blast 输出一起使用?NCBI 不断调整 BLAST 工具的纯文本输出,而使我们的解析器保持最新是一个持续的挑战。如果您没有使用最新版本的 Biopython,可以尝试升级。但是,我们(以及 NCBI)建议您使用 XML 输出,它被设计为由计算机程序读取。 - 为什么我的使用
Bio.Entrez.efetch()
的脚本停止工作了?这可能是由于 NCBI 在 2012 年 2 月进行的更改,引入了 EFetch 2.0。首先,他们更改了默认返回模式 - 您可能需要在您的调用中添加retmode="text"
。其次,他们现在对如何提供 ID 列表更加严格 - Biopython 1.59 及更高版本会自动将列表转换为以逗号分隔的字符串。 - 为什么
Bio.Blast.NCBIWWW.qblast()
没有给出与 NCBI BLAST 网站相同的结果?您需要指定相同的选项 - NCBI 经常调整网站上的默认设置,它们不再与 QBLAST 默认设置匹配。检查诸如间隙惩罚和期望阈值之类的设置。 - 为什么我不能将
SeqRecord
对象加在一起?您需要 Biopython 1.53 或更高版本。 - 为什么
Bio.SeqIO.index_db()
不起作用?该模块导入正常,但没有 ``index_db`` 函数!您需要 Biopython 1.57 或更高版本(以及支持 SQLite3 的 Python)。 - 在哪里找到
MultipleSeqAlignment
对象?Bio.Align
模块导入正常,但该类不存在!您需要 Biopython 1.54 或更高版本。或者,旧的Bio.Align.Generic.Alignment
类支持其部分功能,但现在不建议使用它。 - 为什么我不能直接从应用程序包装器运行命令行工具?您需要 Biopython 1.55 或更高版本,但这些在 Biopython 1.78 中已被弃用。考虑直接使用 Python
subprocess
模块。 - 我在一个目录中查找代码,但找不到执行某些操作的代码。它隐藏在哪里?需要注意的是,我们将代码放在
__init__.py
文件中。如果您不习惯在这个文件中查找代码,这可能会让人困惑。我们这样做是为了简化用户的导入操作。例如,您无需进行诸如from Bio.GenBank import GenBank
之类的“重复”导入,只需使用from Bio import GenBank
即可。 - 为什么
Bio.Fasta
不起作用?我们在 Biopython 1.51(2009 年 8 月)中弃用了Bio.Fasta
模块,并在 Biopython 1.55(2010 年 8 月)中将其删除。在 DEPRECATED.rst 文件中有一个简短的示例展示了如何将旧代码转换为使用Bio.SeqIO
。
对于更一般的问题,Python 常见问题解答页面 https://docs.pythonlang.cn/3/faq/index.html 可能会有所帮助。