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 方法和 bins (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目录中看到如下图像。

序列中的 GC 百分比