Biopython 表型微阵列
表型被定义为生物体对特定化学品或环境表现出的可观察的特征或特性。表型芯片同时测量生物体对大量化学品和环境的反应,并对数据进行分析以了解基因突变、基因特征等。
Biopython提供了一个很好的模块,Bio.Phenotype来分析表型数据。让我们在本章中学习如何解析、插值、提取和分析表型微阵列数据。
解析
表型微阵列数据可以是两种格式。CSV和JSON。Biopython支持这两种格式。Biopython解析器解析表型微阵列数据并以PlateRecord对象的集合形式返回。每个PlateRecord对象都包含一个WellRecord对象的集合。每个WellRecord对象以8行12列的格式保存数据。这8行用A到H表示,12列用01到12表示。例如,第 4行和第 6列用D06表示。
让我们通过下面的例子来理解这个格式和解析的概念
第1步 - 下载Biopython团队提供的Plates.csv文件 –https://raw.githubusercontent.com/biopython/biopython/master/Doc/examples/Plates.csv
第2步 - 加载phenotpe模块,如下所示
>>> from Bio import phenotype
第3步 - 通过数据文件和格式选项(”pm-csv”)调用 phenotype.parse 方法。它返回可迭代的PlateRecord,如下所示。
>>> plates = list(phenotype.parse('Plates.csv', "pm-csv"))
>>> plates
[PlateRecord('WellRecord['A01'], WellRecord['A02'], WellRecord['A03'], ..., WellRecord['H12']'),
PlateRecord('WellRecord['A01'], WellRecord['A02'], WellRecord['A03'], ..., WellRecord['H12']'),
PlateRecord('WellRecord['A01'], WellRecord['A02'], WellRecord['A03'], ..., WellRecord['H12']'),
PlateRecord('WellRecord['A01'], WellRecord['A02'],WellRecord['A03'], ..., WellRecord['H12']')]
>>>
第4步 - 从列表中访问第一个板块,如下图所示。
>>> plate = plates[0]
>>> plate
PlateRecord('WellRecord['A01'], WellRecord['A02'], WellRecord['A03'], ...,
WellRecord['H12']')
>>>
第5步 - 正如前面所讨论的,一个板块包含8行,每行有12个项目。WellRecord可以用两种方式访问,具体如下
>>> well = plate["A04"]
>>> well = plate[0, 4]
>>> well WellRecord('(0.0, 0.0), (0.25, 0.0), (0.5, 0.0), (0.75, 0.0),
(1.0, 0.0), ..., (71.75, 388.0)')
>>>
第6步 --每口井在不同的时间点都会有一系列的测量结果,可以用for循环来访问,具体方法如下
>>> for v1, v2 in well:
... print(v1, v2)
...
0.0 0.0
0.25 0.0
0.5 0.0
0.75 0.0
1.0 0.0
...
71.25 388.0
71.5 388.0
71.75 388.0
>>>
内插法
插值可以使人们对数据有更深入的了解。Biopython提供了插值WellRecord数据的方法,以获得中间时间点的信息。语法类似于列表索引,因此,很容易学习。
要获得20.1小时的数据,只需传递下面指定的索引值—
>>> well[20.10]
69.40000000000003
>>>
我们可以通过开始时间点和结束时间点,以及下面指定的时间点。
>>> well[20:30]
[67.0, 84.0, 102.0, 119.0, 135.0, 147.0, 158.0, 168.0, 179.0, 186.0]
>>>
上述命令以1小时为间隔对20小时至30小时的数据进行插值。默认情况下,间隔时间为1小时,我们可以将其改为任何数值。例如,让我们给出15分钟(0.25小时)的间隔,如下图所示
>>> well[20:21:0.25]
[67.0, 73.0, 75.0, 81.0]
>>>
分析和提取
Biopython提供了一个使用Gompertz、Logistic和Richards sigmoid函数来分析WellRecord数据的拟合方法。默认情况下,拟合方法使用Gompertz函数。我们需要调用WellRecord对象的fit方法来完成这个任务。编码如下
>>> well.fit()
Traceback (most recent call last):
...
Bio.MissingPythonDependencyError: Install scipy to extract curve parameters.
>>> well.model
>>> getattr(well, 'min') 0.0
>>> getattr(well, 'max') 388.0
>>> getattr(well, 'average_height')
205.42708333333334
>>>
Biopython依赖于scipy模块来做高级分析。它将计算最小、最大和平均高度的细节,而不使用scipy模块。