Biopython绘图基础教程文档

收录于 2023-04-20 00:10:05 · بالعربية · English · Español · हिंदीName · 日本語 · Русский язык · 中文繁體

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

1. 绘图

Matplotlib是一个Python绘图库,可产生多种格式的高质量图形。我们可以创建不同类型的图,例如折线图,直方图,条形图,饼图,散点图等。
pyLab是属于matplotlib的模块,它将数字模块numpy与图形绘制模块pyplot结合在一起。Biopython使用pylab模块绘制序列。需要导入以下模块代码-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
import pylab
在导入之前,需要使用pip命令和下面给出的命令安装matplotlib软件包-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
pip install matplotlib

2. 输入文件样本

在Biopython目录中创建一个名为plot.fasta的样本文件,并添加以下内容 -
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>seq0 FQTWEEFSRAAEKLYLADPMKVRVVLKYRHVDGNLCIKVTDDLVCLVYRTDQAQDVKKIEKF
>seq1 KYRTWEEFTRAAEKLYQADPMKVRVVLKYRHCDGNLCIKVTDDVVCLLYRTDQAQDVKKIEKFHSQLMRLME
>seq2 EEYQTWEEFARAAEKLYLTDPMKVRVVLKYRHCDGNLCMKVTDDAVCLQYKTDQAQDVKKVEKLHGK
>seq3 MYQVWEEFSRAVEKLYLTDPMKVRVVLKYRHCDGNLCIKVTDNSVCLQYKTDQAQDV
>seq4 EEFSRAVEKLYLTDPMKVRVVLKYRHCDGNLCIKVTDNSVVSYEMRLFGVQKDNFALEHSLL
>seq5 SWEEFAKAAEVLYLEDPMKCRMCTKYRHVDHKLVVKLTDNHTVLKYVTDMAQDVKKIEKLTTLLMR
>seq6 FTNWEEFAKAAERLHSANPEKCRFVTKYNHTKGELVLKLTDDVVCLQYSTNQLQDVKKLEKLSSTLLRSI
>seq7 SWEEFVERSVQLFRGDPNATRYVMKYRHCEGKLVLKVTDDRECLKFKTDQAQDAKKMEKLNNIFF
>seq8 SWDEFVDRSVQLFRADPESTRYVMKYRHCDGKLVLKVTDNKECLKFKTDQAQEAKKMEKLNNIFFTLM
>seq9 KNWEDFEIAAENMYMANPQNCRYTMKYVHSKGHILLKMSDNVKCVQYRAENMPDLKK
>seq10 FDSWDEFVSKSVELFRNHPDTTRYVVKYRHCEGKLVLKVTDNHECLKFKTDQAQDAKKMEK

3. 绘制线图

现在,我们为上述plot.fasta文件创建一个简单的线图。 第1步 - 导入SeqIO模块以读取plot.fasta文件。
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>>> from Bio import SeqIO
第2步 - 解析输入文件,如下代码 -
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>>> records = [len(rec) for rec in SeqIO.parse("plot.fasta", "fasta")]
>>> len(records)
11
>>> max(records)
72
>>> min(records)
57
第3步 - 导入pylab模块 -
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>>> import pylab
第4步 - 通过分配x和y轴标签来配置折线图。
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>>> pylab.xlabel("sequence length")
Text(0.5, 0, 'sequence length')
>>> pylab.ylabel("count")
Text(0, 0.5, 'count')
>>>
第5步 - 通过设置网格显示来配置折线图。
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>>> pylab.grid()
第6步 - 通过调用绘图方法并提供记录作为输入来绘制简单的折线图。
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>>> pylab.plot(records)
[<matplotlib.lines.Line2D object at 0x10b6869d 0>]
第7步 - 最后使用以下命令保存图表。
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>>> pylab.savefig("lines.png")
执行完上述命令后,可以看到以下图像保存在Biopython目录中。
绘制线图

2. 直方图

直方图用于连续数据,其中bin表示数据范围。绘图直方图与pylab.plot相同,与折线图相同。不同的是它调用pylab模块的hist方法,其中包含记录和一些bin的值。完整的编码如下-
第1步 - 导入SeqIO模块以读取fasta文件。
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>>> from Bio import SeqIO
第2步 - 解析输入文件,如下代码 -
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>>> records = [len(rec) for rec in SeqIO.parse("plot.fasta", "fasta")]
>>> len(records)
11
>>> max(records)
72
>>> min(records)
57
第3步 - 导入pylab模块 -
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>>> import pylab
第4步 - 通过分配x和y轴标签来配置折线图。
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>>> pylab.xlabel("sequence length")
Text(0.5, 0, 'sequence length')
>>> pylab.ylabel("count")
Text(0, 0.5, 'count')
>>>
第5步 - 通过设置网格显示来配置折线图。
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>>> pylab.grid()
第6步 - 通过调用绘图方法并提供记录作为输入来绘制简单的折线图。
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>>> 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步 - 最后使用以下命令保存图表。
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>>> pylab.savefig("hist.png")
执行完上述命令后,可以看到以下图像保存在Biopython目录中。
直方图

3. 序列GC百分比

GC百分比是比较不同序列的常用分析数据之一。可以使用一组序列的GC百分比来做一个简单的折线图,并立即进行比较。在这里,可以将数据从序列长度更改为GC百分比。完整的编码如下-
第1步 - 导入SeqIO模块以读取fasta文件。
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>>> from Bio import SeqIO
第2步 - 解析输入文件。
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>>> from Bio.SeqUtils import GC
>>> gc = sorted(GC(rec.seq) for rec in SeqIO.parse("plot.fasta", "fasta"))
第3步 - 导入pylab模块 -
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
import pylab
第4步 - 通过分配x和y轴标签来配置折线图。
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>>> pylab.xlabel("Genes")
Text(0.5, 0, 'Genes')
>>> pylab.ylabel("GC Percentage")
Text(0, 0.5, 'GC Percentage')
>>>
第5步 - 通过设置网格显示来配置折线图。
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>>> pylab.grid()
第6步 - 通过调用绘图方法并提供记录作为输入来绘制简单的折线图。
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>>> pylab.plot(gc)
[<matplotlib.lines.Line2D object at 0x10b6869d 0>]
第7步 - 最后,使用以下命令保存图表。
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-25
>>> pylab.savefig("gc.png")
执行完上述命令后,可以看到以下图像保存在Biopython目录中。
序列GC百分比