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对象迭代。
- 参数:
句柄-输入文件