- Biopython 教程
- Biopython - 首页
- Biopython - 简介
- Biopython - 安装
- 创建简单应用程序
- Biopython - 序列
- 高级序列操作
- 序列 I/O 操作
- Biopython - 序列比对
- Biopython - BLAST 概述
- Biopython - Entrez 数据库
- Biopython - PDB 模块
- Biopython - 基序对象
- Biopython - BioSQL 模块
- Biopython - 种群遗传学
- Biopython - 基因组分析
- Biopython - 表型微阵列
- Biopython - 绘图
- Biopython - 聚类分析
- Biopython - 机器学习
- Biopython - 测试技术
- Biopython 资源
- Biopython - 快速指南
- Biopython - 有用资源
- Biopython - 讨论
Biopython - 绘图
本章介绍如何绘制序列图。在进入这个主题之前,让我们先了解绘制图的基本知识。
绘图
Matplotlib 是一个 Python 绘图库,它可以生成各种格式的高质量图形。我们可以创建不同类型的绘图,例如折线图、直方图、条形图、饼图、散点图等。
pyLab 是 matplotlib 中的一个模块,它将数值模块 numpy 与图形绘制模块 pyplot 结合在一起。Biopython 使用 pylab 模块绘制序列图。为此,我们需要导入以下代码:
import pylab
在导入之前,我们需要使用 pip 命令安装 matplotlib 包,命令如下:
pip install matplotlib
示例输入文件
在您的 Biopython 目录中创建一个名为 plot.fasta 的示例文件,并添加以下内容:
>seq0 FQTWEEFSRAAEKLYLADPMKVRVVLKYRHVDGNLCIKVTDDLVCLVYRTDQAQDVKKIEKF >seq1 KYRTWEEFTRAAEKLYQADPMKVRVVLKYRHCDGNLCIKVTDDVVCLLYRTDQAQDVKKIEKFHSQLMRLME >seq2 EEYQTWEEFARAAEKLYLTDPMKVRVVLKYRHCDGNLCMKVTDDAVCLQYKTDQAQDVKKVEKLHGK >seq3 MYQVWEEFSRAVEKLYLTDPMKVRVVLKYRHCDGNLCIKVTDNSVCLQYKTDQAQDV >seq4 EEFSRAVEKLYLTDPMKVRVVLKYRHCDGNLCIKVTDNSVVSYEMRLFGVQKDNFALEHSLL >seq5 SWEEFAKAAEVLYLEDPMKCRMCTKYRHVDHKLVVKLTDNHTVLKYVTDMAQDVKKIEKLTTLLMR >seq6 FTNWEEFAKAAERLHSANPEKCRFVTKYNHTKGELVLKLTDDVVCLQYSTNQLQDVKKLEKLSSTLLRSI >seq7 SWEEFVERSVQLFRGDPNATRYVMKYRHCEGKLVLKVTDDRECLKFKTDQAQDAKKMEKLNNIFF >seq8 SWDEFVDRSVQLFRADPESTRYVMKYRHCDGKLVLKVTDNKECLKFKTDQAQEAKKMEKLNNIFFTLM >seq9 KNWEDFEIAAENMYMANPQNCRYTMKYVHSKGHILLKMSDNVKCVQYRAENMPDLKK >seq10 FDSWDEFVSKSVELFRNHPDTTRYVVKYRHCEGKLVLKVTDNHECLKFKTDQAQDAKKMEK
折线图
现在,让我们为上述 fasta 文件创建一个简单的折线图。
步骤 1 - 导入 SeqIO 模块以读取 fasta 文件。
>>> from Bio import SeqIO
步骤 2 - 解析输入文件。
>>> records = [len(rec) for rec in SeqIO.parse("plot.fasta", "fasta")] >>> len(records) 11 >>> max(records) 72 >>> min(records) 57
步骤 3 - 让我们导入 pylab 模块。
>>> import pylab
步骤 4 - 通过分配 x 轴和 y 轴标签来配置折线图。
>>> pylab.xlabel("sequence length") Text(0.5, 0, 'sequence length') >>> pylab.ylabel("count") Text(0, 0.5, 'count') >>>
步骤 5 - 通过设置网格显示来配置折线图。
>>> pylab.grid()
步骤 6 - 通过调用 plot 方法并提供记录作为输入来绘制简单的折线图。
>>> pylab.plot(records) [<matplotlib.lines.Line2D object at 0x10b6869d 0>]
步骤 7 - 最后,使用以下命令保存图表。
>>> pylab.savefig("lines.png")
结果
执行上述命令后,您可以在 Biopython 目录中看到保存的以下图像。
直方图
直方图用于连续数据,其中 bin 表示数据范围。绘制直方图与折线图相同,只是不使用 pylab.plot。而是使用 pylab 模块的 hist 方法,并使用记录和一些自定义的 bin 值(5)。完整的代码如下:
步骤 1 - 导入 SeqIO 模块以读取 fasta 文件。
>>> from Bio import SeqIO
步骤 2 - 解析输入文件。
>>> records = [len(rec) for rec in SeqIO.parse("plot.fasta", "fasta")] >>> len(records) 11 >>> max(records) 72 >>> min(records) 57
步骤 3 - 让我们导入 pylab 模块。
>>> import pylab
步骤 4 - 通过分配 x 轴和 y 轴标签来配置折线图。
>>> pylab.xlabel("sequence length") Text(0.5, 0, 'sequence length') >>> pylab.ylabel("count") Text(0, 0.5, 'count') >>>
步骤 5 - 通过设置网格显示来配置折线图。
>>> pylab.grid()
步骤 6 - 通过调用 plot 方法并提供记录作为输入来绘制简单的折线图。
>>> pylab.hist(records,bins=5) (array([2., 3., 1., 3., 2.]), array([57., 60., 63., 66., 69., 72.]), <a list of 5 Patch objects>) >>>
步骤 7 - 最后,使用以下命令保存图表。
>>> pylab.savefig("hist.png")
结果
执行上述命令后,您可以在 Biopython 目录中看到保存的以下图像。
序列中的 GC 百分比
GC 百分比是用于比较不同序列的常用分析数据之一。我们可以使用一组序列的 GC 百分比创建一个简单的折线图,并立即进行比较。在这里,我们只需将数据从序列长度更改为 GC 百分比。完整的代码如下:
步骤 1 - 导入 SeqIO 模块以读取 fasta 文件。
>>> from Bio import SeqIO
步骤 2 - 解析输入文件。
>>> from Bio.SeqUtils import GC >>> gc = sorted(GC(rec.seq) for rec in SeqIO.parse("plot.fasta", "fasta"))
步骤 3 - 让我们导入 pylab 模块。
>>> import pylab
步骤 4 - 通过分配 x 轴和 y 轴标签来配置折线图。
>>> pylab.xlabel("Genes") Text(0.5, 0, 'Genes') >>> pylab.ylabel("GC Percentage") Text(0, 0.5, 'GC Percentage') >>>
步骤 5 - 通过设置网格显示来配置折线图。
>>> pylab.grid()
步骤 6 - 通过调用 plot 方法并提供记录作为输入来绘制简单的折线图。
>>> pylab.plot(gc) [<matplotlib.lines.Line2D object at 0x10b6869d 0>]
步骤 7 - 最后,使用以下命令保存图表。
>>> pylab.savefig("gc.png")
结果
执行上述命令后,您可以在 Biopython 目录中看到保存的以下图像。