Bio.henotype.phen_微模块

类来处理表型微阵列数据。

有关单板的更多信息,请访问此处:http://www.biolog.com/

班级:
  • PlateRecord-包含板块每口井上的时间进程数据以及元数据(如果有)的对象。

  • WellRecord-包含单个井的时间进程数据的对象

  • JsonWriter-JSON格式的PlateRecord对象的编写器。

功能:
  • JsonIterator-增量PM JSON解析器,这是一个返回PlateRecord对象的迭代器。

  • CsvIterator-增量PM CSV解析器,这是一个返回PlateRecord对象的迭代器。

  • _toOPM-由JsonWriter内部使用,转换准备以JSON格式序列化的字典中的PlateRecord对象。

class Bio.phenotype.phen_micro.PlateRecord(plateid, wells=None)

基类:object

用于存储表型微阵列板材数据的PlateRecord对象。

PlateRecord存储特定表型微阵列板的所有井以及元数据(如果有的话)。可以通过调用它们的id作为索引或在PlateRecord上迭代来访问单井:

>>> from Bio import phenotype
>>> plate = phenotype.read("phenotype/Plate.json", "pm-json")
>>> well = plate['A05']
>>> for well in plate:
...    print(well.id)
...
A01
...

可以使用类似于NumPy和其他矩阵的索引系统来查询板块行和列:

>>> print(plate[1])
Plate ID: PM01
Well: 12
Rows: 1
Columns: 12
PlateRecord('WellRecord['B01'], WellRecord['B02'], WellRecord['B03'], ..., WellRecord['B12']')
>>> print(plate[:,1])
Plate ID: PM01
Well: 8
Rows: 8
Columns: 1
PlateRecord('WellRecord['A02'], WellRecord['B02'], WellRecord['C02'], ..., WellRecord['H02']')

可以使用此索引系统访问单个WellRecord对象:

>>> print(plate[1,2])
Plate ID: PM01
Well ID: B03
Time points: 384
Minum signal 0.00 at time 11.00
Maximum signal 76.25 at time 18.00
WellRecord('(0.0, 11.0), (0.25, 11.0), (0.5, 11.0), (0.75, 11.0), (1.0, 11.0), ..., (95.75, 11.0)')

特定井的存在可以使用关键字“in”进行检查:>‘A01’in plate True

可以获得属于板中的“行”(由井ID的第一个字符标识)的所有井:

>>> for well in plate.get_row('H'):
...     print(well.id)
...
H01
H02
H03
...

可以得到板中属于一个“柱”(用井号标识)的所有井:

>>> for well in plate.get_column(12):
...     print(well.id)
...
A12
B12
C12
...

可以比较两个PlateRecord对象:如果它们的所有井都相等,则认为两个板相等:

>>> plate2 = phenotype.read("phenotype/Plate.json", "pm-json")
>>> plate == plate2
True

两个PlateRecord对象可以相加或相减:每口井的信号将相加或相减。左操作数的ID将保持不变:

>>> plate3 = plate + plate2
>>> print(plate3.id)
PM01

很多表型微阵列板都有一个“阴性对照”井,所有的井都可以减去:

>>> subplate = plate.subtract_control()
__init__(plateid, wells=None)

初始化类。

__getitem__(index)

接近板的一部分。

根据索引的不同,您可以获得WellRecord对象(表示板块的单个井)或另一个板块(表示原始板块的部分或全部)。

盘子 [wid] 提供WellRecord(如果wid是WellRecord id)牌照 [r,c] 给出了一个WellRecord板 [r] 给出一行作为PlateRecord板 [r,:] 给出一行作为PlateRecord板 [:,c] 将列指定为PlateRecord

盘子 [:] 和车牌 [:,:] 给我一份牌子的复印件

任何其他内容都会给出原始图版的子集,例如图版 [0:2] 或车牌 [0:2,:] 仅使用第0行和第1行车牌 [:,1:3] 仅使用列1和列2板 [0:2,1:3] 仅使用行0和1,并且仅使用列1和2

>>> from Bio import phenotype
>>> plate = phenotype.read("phenotype/Plate.json", "pm-json")

你可以用它的id进入板上的一个井。

>>> w = plate['A01']

您可以使用整数索引将板行作为PlateRecord进行访问:

>>> first_row = plate[0]
>>> print(first_row)
Plate ID: PM01
Well: 12
Rows: 1
Columns: 12
PlateRecord('WellRecord['A01'], WellRecord['A02'], WellRecord['A03'], ..., WellRecord['A12']')
>>> last_row = plate[-1]
>>> print(last_row)
Plate ID: PM01
Well: 12
Rows: 1
Columns: 12
PlateRecord('WellRecord['H01'], WellRecord['H02'], WellRecord['H03'], ..., WellRecord['H12']')

您还可以使用Python的切片表示法访问仅包含部分板行的子板:

>>> sub_plate = plate[2:5]
>>> print(sub_plate)
Plate ID: PM01
Well: 36
Rows: 3
Columns: 12
PlateRecord('WellRecord['C01'], WellRecord['C02'], WellRecord['C03'], ..., WellRecord['E12']')

这包括对台阶的支撑,即板 [开始:结束:步骤] ,可用于每隔一行选择一次:

>>> sub_plate = plate[::2]

您还可以使用两个索引来指定行和列。使用简单整数可以得到单井。例如:

>>> w = plate[3, 4]
>>> print(w.id)
D05

要获取单个列,请使用以下语法:

>>> sub_plate = plate[:, 4]
>>> print(sub_plate)
Plate ID: PM01
Well: 8
Rows: 8
Columns: 1
PlateRecord('WellRecord['A05'], WellRecord['B05'], WellRecord['C05'], ..., WellRecord['H05']')

或者,要获得专栏的一部分,

>>> sub_plate = plate[1:3, 4]
>>> print(sub_plate)
Plate ID: PM01
Well: 2
Rows: 2
Columns: 1
PlateRecord(WellRecord['B05'], WellRecord['C05'])

不过,一般说来,你会得到一个副车牌,

>>> print(plate[1:5, 3:6])
Plate ID: PM01
Well: 12
Rows: 4
Columns: 3
PlateRecord('WellRecord['B04'], WellRecord['B05'], WellRecord['B06'], ..., WellRecord['E06']')

任何使用过NumPy数组或矩阵对象的人都应该对此很熟悉。

__setitem__(key, value)
__delitem__(key)
__iter__()
__contains__(wellid)
__len__()

返回此盘中的井数。

__eq__(other)

返回self==value。

__add__(plate)

添加另一个PlateRecord对象。

两个板块中的井必须是相同的

返回一个新的PlateRecord对象,其ID与左操作数相同。

__sub__(plate)

减去另一个PlateRecord对象。

两个板块中的井必须是相同的

返回一个新的PlateRecord对象,其ID与左操作数相同。

get_row(row)

得到给定行的所有井。

行由字母标识(例如‘a’)

get_column(column)

获取给定列的所有井。

列用数字标识(例如‘6’)

subtract_control(control='A01', wells=None)

从其他板块井中减去一个“控制”井。

缺省情况下,除非提供了井ID列表,否则该控件将减去所有井

控制井应该属于板。返回一个新的PlateRecord对象

__repr__()

返回用于调试的板的(截断)表示形式。

__str__()

返回记录的人类可读摘要(字符串)。

内置函数字符串的python通过调用对象的 ___str__ 方法。例如:

>>> from Bio import phenotype
>>> record = next(phenotype.parse("phenotype/Plates.csv", "pm-csv"))
>>> print(record)
Plate ID: PM01
Well: 96
Rows: 8
Columns: 12
PlateRecord('WellRecord['A01'], WellRecord['A02'], WellRecord['A03'], ..., WellRecord['H12']')

请注意,长井列表显示为截断。

__hash__ = None
class Bio.phenotype.phen_micro.WellRecord(wellid, plate=None, signals=None)

基类:object

WellRecord很好地存储了表型微阵列的所有时程信号。

可以通过在WellRecord上迭代或使用列表、索引或切片来访问单个时间点和信号:

>>> from Bio import phenotype
>>> plate = phenotype.read("phenotype/Plate.json", "pm-json")
>>> well = plate['A05']
>>> for time, signal in well:
...    print("Time: %f, Signal: %f" % (time, signal)) 
...
Time: 0.000000, Signal: 14.000000
Time: 0.250000, Signal: 13.000000
Time: 0.500000, Signal: 15.000000
Time: 0.750000, Signal: 15.000000
...
>>> well[1]
16.0
>>> well[1:5]
[16.0, 20.0, 18.0, 15.0]
>>> well[1:5:0.5]
[16.0, 19.0, 20.0, 18.0, 18.0, 18.0, 15.0, 18.0]

如果输入文件中不存在时间点,但该时间点在最小和最大时间点之间,则返回内插信号,否则返回NaN值:

>>> well[1.3]
19.0
>>> well[1250]
nan

可以比较两个WellRecord对象:如果它们的输入时间/信号对完全相同,则认为两个记录相等:

>>> well2 = plate['H12']
>>> well == well2
False

可以将两个WellRecord对象相加或相减:返回一个新的WellRecord对象,该对象具有左操作数id。

>>> well1 = plate['A05']
>>> well2 = well + well1
>>> print(well2.id)
A05

如果安装了SciPy,则可以将Sigmoid函数拟合到PM曲线上,以便提取一些参数;有三个Sigmoid函数可用: 贡珀茨 Logistic*Richards在Zwietering等人的1990年(pmid:16348228)中描述了这些功能

例如::

well.fit()
print(well.slope, well.model)
(61.853516785566917, 'logistic')

如果未指定Sigmoid函数,则使用第一个成功拟合的函数。用户还可以指定特定功能。

要指定Gompertz::

well.fit('gompertz')
print(well.slope, well.model)
(127.94630059171354, 'gompertz')

如果无法拟合任何函数,则参数保留为无,最大值、最小值、平均值_高度和面积除外。

__init__(wellid, plate=None, signals=None)

初始化类。

__setitem__(time, signal)

在某个时间点分配信号。

__getitem__(time)

返回信号子集或单个信号。

__iter__()
__eq__(other)

返回self==value。

__add__(well)

添加另一个WellRecord对象。

返回一个新的WellRecord对象,其ID与左操作数相同

__sub__(well)

减去另一个WellRecord对象。

返回一个新的WellRecord对象,其ID与左操作数相同

__len__()

返回采样的时间点数量。

__repr__()

返回信号的(截断)表示形式以进行调试。

__str__()

返回记录的人类可读摘要(字符串)。

python内置函数字符串通过调用对象的 ___str__ 方法。例如:

>>> from Bio import phenotype
>>> plate = phenotype.read("phenotype/Plate.json", "pm-json")
>>> record = plate['A05']
>>> print(record)
Plate ID: PM01
Well ID: A05
Time points: 384
Minum signal 0.25 at time 13.00
Maximum signal 19.50 at time 23.00
WellRecord('(0.0, 14.0), (0.25, 13.0), (0.5, 15.0), (0.75, 15.0), (1.0, 16.0), ..., (95.75, 16.0)')

请注意,长时间跨度显示为截断。

get_raw()

获取时间/信号对列表。

get_times()

获取记录的时间点的列表。

get_signals()

获取记录的信号列表(按采集时间排序)。

fit(function=('gompertz', 'logistic', 'richards'))

将Sigmoid函数拟合到这口井中,并提取曲线参数。

如果函数为None或空的元组/列表,则不进行拟合。只有对象的 .min.max.average_height 都是经过计算的。

默认情况下,将按顺序使用以下管接头函数:
  • 贡珀茨

  • 物流

  • 理查兹

成功拟合到信号的第一个函数将用于提取曲线参数和更新 .area.model 。如果无法安装任何函数,则会引发异常。

函数参数应该是这三个函数名中任意一个字符串的元组或列表。

没有返回值。

__hash__ = None
Bio.phenotype.phen_micro.JsonIterator(handle)

作为PlateRecord对象迭代PM json记录。

参数:
  • 句柄-输入文件

Bio.phenotype.phen_micro.CsvIterator(handle)

将PM CSV记录作为PlateRecord对象迭代。

参数:
  • 句柄-输入文件

class Bio.phenotype.phen_micro.JsonWriter(plates)

基类:object

类来写入PM Json格式文件。

__init__(plates)

初始化类。

write(handle)

将此实例的板写入文件句柄。