Biopython 简明教程

Biopython - Phenotype Microarray

表型被定义为由生物体对特定化学物质或环境表现出的可观察到的特征或性状。表型微阵列同时测量生物体对大量化学物质和环境的反应,并分析数据以了解基因突变、基因特性等。

Biopython 提供了一个优秀的模块 Bio.Phenotype 来分析表型数据。让我们在本章学习如何在该表型数据中解析、内插、抽取和分析表型微阵列数据。

Parsing

表型微阵列数据可以采用两种格式:CSV 和 JSON。Biopython 支持这两种格式。Biopython 解析器解析表型微阵列数据并返回为 PlateRecord 对象的集合。每个 PlateRecord 对象都包含一个 WellRecord 对象的集合。每个 WellRecord 对象以 8 行和 12 列格式保存数据。8 行表示为 A 到 H,12 列表示为 01 到 12。例如,第 4 行和第 6 列表示为 D06。

让我们通过以下示例了解解析的格式和概念−

Step 1 − 下载由 Biopython 团队提供的 Plates.csv 文件− https://raw.githubusercontent.com/biopython/biopython/master/Doc/examples/Plates.csv

Step 2 − 如下加载 phenotpe 模块− Step 3

>>> from Bio import phenotype

Step 3 − 调用 phenotype.parse 方法,传递数据文件和格式选项(“pm-csv”)。它返回可迭代的 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']')]
>>>

Step 4 − 从列表中访问第一个平板,如下所示:

>>> plate = plates[0]
>>> plate
PlateRecord('WellRecord['A01'], WellRecord['A02'], WellRecord['A03'], ...,
WellRecord['H12']')
>>>

Step 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)')
>>>

Step 6 − 每个孔都有在不同时间点的一系列测量,并且可以使用循环访问,如下所示:

>>> 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
>>>

Interpolation

插值可以更深入地了解数据。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]
>>>

Analyze and Extract

Biopython 提供了一种方法,可以使用 Gompertz、Logistic 和 Richards sigmoid 函数分析 WellRecord 数据。默认情况下,拟合方法使用 Gompertz 函数。我们需要调用 WellRecord 对象的拟合方法来完成任务。编码如下:

>>> 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 模块。