Biopython - 表型微阵列
表型被定义为生物体针对特定化学物质或环境表现出的可观察到的特征或特征。 表型微阵列同时测量生物体对大量化学物质和环境的反应,并分析数据以了解基因突变、基因特征等。
Biopython 提供了一个出色的模块 Bio.Phenotype 来分析表型数据。 让我们在本章中学习如何解析、插入、提取和分析表型微阵列数据。
解析
表型微阵列数据可以采用两种格式:CSV 和 JSON。 Biopython 支持这两种格式。 Biopython 解析器解析表型微阵列数据并作为 PlateRecord 对象的集合返回。 每个 PlateRecord 对象都包含 WellRecord 对象的集合。每个 WellRecord 对象都以 8 行和 12 列的格式保存数据。 八行用A到H表示,12列用01到12表示。例如,第4th行和第6th列用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,如下所示 −
>>> plate = plates[0] >>> plate PlateRecord('WellRecord['A01'], WellRecord['A02'], WellRecord['A03'], ..., WellRecord['H12']') >>>
第 5 步 − 正如前面所讨论的,一个 plate 包含 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 步 − 每个 well 将在不同时间点进行一系列测量,可以使用 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 数据的方法。 默认情况下, fit 方法使用 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 模块的情况下计算最小、最大和平均高度的详细信息。