📜  Biopython-绘图

📅  最后修改于: 2020-11-09 05:06:45             🧑  作者: Mango


本章介绍如何绘制序列。在进入本主题之前,让我们了解绘图的基础知识。

绘图

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-通过调用绘图方法并提供记录作为输入来绘制简单的折线图。

>>> pylab.plot(records) 
[]

步骤7-最后使用以下命令保存图表。

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

结果

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

线图

直方图

直方图用于连续数据,其中bin表示数据范围。除了pylab.plot之外,绘图直方图与折线图相同。取而代之的是,调用pylab模块的hist方法,该方法带有记录和垃圾箱的一些客体值(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-通过调用绘图方法并提供记录作为输入来绘制简单的折线图。

>>> pylab.hist(records,bins=5) 
(array([2., 3., 1., 3., 2.]), array([57., 60., 63., 66., 69., 72.]), ) 
>>>

步骤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-通过调用绘图方法并提供记录作为输入来绘制简单的折线图。

>>> pylab.plot(gc) 
[]

步骤7-最后使用以下命令保存图表。

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

结果

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

GC序列百分比