Bio.表型.phen_微模块

用于处理表型微阵列数据的类。

有关单板的更多信息可在此处找到:http://www.biolog.com/

职业:
  • PlateRecord -包含平板每个孔上的时间进程数据以及元数据(如果有)的对象。

  • WellRecord -包含单口井时程数据的对象

  • JsonWriter -Jackson格式的PlateRecord对象的编写者。

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

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

  • _toopp-由JsonWriter内部使用,转换词典中准备以杨森格式序列化的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']

您可以使用integer索引访问平板的一行作为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']')

这包括对台阶的支撑,即板 [start:end:step] ,可用于选择每隔一行:

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

返回自我==价值。

__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__()

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

函数url中内置的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']')

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

__firstlineno__ = 58
__hash__ = None
__static_attributes__ = ('_columns', '_rows', '_wells', 'id', 'qualifiers')
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函数可用: * gompertz * logic * 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')

如果没有函数可以拟合,则除了max、min、average_height和area之外,其他参数都保留为None。

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

初始化课程。

__setitem__(time, signal)

在某个时间点分配信号。

__getitem__(time)

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

__iter__()
__eq__(other)

返回自我==价值。

__add__(well)

添加另一个WellRecord对象。

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

__sub__(well)

减去另一个WellRecord对象。

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

__len__()

返回采样的时间点数量。

__repr__()

返回用于调试的信号的(截断的)表示。

__str__()

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

Python内置函数url通过调用对象的 __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函数与此很好地匹配并提取曲线参数。

如果函数为无或空的tuple/list,则不进行任何匹配。只有对象的 .min , .max.average_height 计算了

默认情况下,将按顺序使用以下配件功能:
  • Gompertz

  • logistic

  • 理查兹

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

函数参数应该是这三个函数名称中任何一个作为字符串的数组或列表。

没有返回值。

__firstlineno__ = 581
__hash__ = None
__static_attributes__ = ('_signals', 'area', 'average_height', 'id', 'lag', 'max', 'min', 'model', 'plate', 'plateau', 'slope', 'v', 'y0')
Bio.phenotype.phen_micro.JsonIterator(handle)

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

论点:
  • 处理-输入文件

Bio.phenotype.phen_micro.CsvIterator(handle)

将PM csv记录作为PlateRecord对象进行迭代。

论点:
  • 处理-输入文件

class Bio.phenotype.phen_micro.JsonWriter(plates)

基类:object

类编写PM JSON格式文件。

__init__(plates)

初始化课程。

__firstlineno__ = 1185
__static_attributes__ = ('plates',)
write(handle)

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