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的custum值(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目录中。