Biopython 简明教程

Biopython - Plotting

本章解释了如何绘制序列。在进入该主题之前,我们先了解一下绘图的基础知识。

Plotting

Matplotlib 是一个 Python 绘图库,它以各种格式生成高质量的图形。我们可以创建各种类型的图形,如折线图、直方图、条形图、饼图、散点图等。

*pyLab 是属于 matplotlib 的一个模块,它将数字模块 numpy 与绘图模块 pyplot 结合在一起。*Biopython 使用 pylab 模块绘制序列。为此,我们需要导入以下代码:

import pylab

在导入之前,我们需要使用以下给出的命令使用 pip 命令安装 matplotlib 包:

pip install matplotlib

Sample Input File

在你的 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

Line Plot

现在,让我们为上述 fasta 文件创建一个简单的折线图。

Step 1 − 导入 SeqIO 模块来读取 fasta 文件。

>>> from Bio import SeqIO

Step 2 − 解析输入文件。

>>> records = [len(rec) for rec in SeqIO.parse("plot.fasta", "fasta")]
>>> len(records)
11
>>> max(records)
72
>>> min(records)
57

Step 3 − 让我们导入 pylab 模块。

>>> import pylab

Step 4 − 通过分配 x 和 y 轴标签来配置折线图。

>>> pylab.xlabel("sequence length")
Text(0.5, 0, 'sequence length')

>>> pylab.ylabel("count")
Text(0, 0.5, 'count')
>>>

Step 5 − 通过设置网格显示来配置折线图。

>>> pylab.grid()

Step 6 − 通过调用绘图方法并提供记录作为输入来绘制简单的折线图。

>>> pylab.plot(records)
[<matplotlib.lines.Line2D object at 0x10b6869d 0>]

Step 7 − 最后,使用以下命令保存图表。

>>> pylab.savefig("lines.png")

Result

执行上述命令后,您可以在 Biopython 目录中看到已保存的以下图像。

line plot

Histogram Chart

直方图用于连续数据,其中柱表示数据范围。绘制直方图与折线图相同,但使用 pylab.plot 除外。相反,使用记录和一些自定义的柱值(5)调用 pylab 模块的 hist 方法。完整的编码如下:

Step 1 − 导入 SeqIO 模块来读取 fasta 文件。

>>> from Bio import SeqIO

Step 2 − 解析输入文件。

>>> records = [len(rec) for rec in SeqIO.parse("plot.fasta", "fasta")]
>>> len(records)
11
>>> max(records)
72
>>> min(records)
57

Step 3 − 让我们导入 pylab 模块。

>>> import pylab

Step 4 − 通过分配 x 和 y 轴标签来配置折线图。

>>> pylab.xlabel("sequence length")
Text(0.5, 0, 'sequence length')

>>> pylab.ylabel("count")
Text(0, 0.5, 'count')
>>>

Step 5 − 通过设置网格显示来配置折线图。

>>> pylab.grid()

Step 6 − 通过调用绘图方法并提供记录作为输入来绘制简单的折线图。

>>> pylab.hist(records,bins=5)
(array([2., 3., 1., 3., 2.]), array([57., 60., 63., 66., 69., 72.]), <a list
of 5 Patch objects>)
>>>

Step 7 − 最后,使用以下命令保存图表。

>>> pylab.savefig("hist.png")

Result

执行上述命令后,您可以在 Biopython 目录中看到已保存的以下图像。

histogram chart

GC Percentage in Sequence

GC 百分比是最常用的分析数据之一,用于比较不同的序列。我们可以使用一组序列的 GC 百分比绘制一个简单的折线图,并立即对其进行比较。在此,我们可以将数据从序列长度更改为 GC 百分比。完整的编码如下:

Step 1 − 导入 SeqIO 模块来读取 fasta 文件。

>>> from Bio import SeqIO

Step 2 − 解析输入文件。

>>> from Bio.SeqUtils import GC
>>> gc = sorted(GC(rec.seq) for rec in SeqIO.parse("plot.fasta", "fasta"))

Step 3 − 让我们导入 pylab 模块。

>>> import pylab

Step 4 − 通过分配 x 和 y 轴标签来配置折线图。

>>> pylab.xlabel("Genes")
Text(0.5, 0, 'Genes')

>>> pylab.ylabel("GC Percentage")
Text(0, 0.5, 'GC Percentage')
>>>

Step 5 − 通过设置网格显示来配置折线图。

>>> pylab.grid()

Step 6 − 通过调用绘图方法并提供记录作为输入来绘制简单的折线图。

>>> pylab.plot(gc)
[<matplotlib.lines.Line2D object at 0x10b6869d 0>]

Step 7 − 最后,使用以下命令保存图表。

>>> pylab.savefig("gc.png")

Result

执行上述命令后,您可以在 Biopython 目录中看到已保存的以下图像。

gc percentage in sequence