Bio.phenotype 包

子模块

模块内容

表型数据输入/输出。

输入

主要函数是 Bio.phenotype.parse(…),它接收一个输入文件和一个格式字符串。它返回一个迭代器,生成 PlateRecord 对象。

>>> from Bio import phenotype
>>> for record in phenotype.parse("phenotype/Plates.csv", "pm-csv"):
...     print("%s %i" % (record.id, len(record)))
...
PM01 96
PM09 96

请注意,parse() 函数将调用与格式相关的解析器,并使用其默认设置。你可能需要更多控制,在这种情况下,你需要直接创建特定格式的序列迭代器。

输入 - 单个记录

如果你期望你的文件只包含一个记录,那么我们提供以下“辅助”函数,它将返回一个 PlateRecord 对象,或者如果没有任何记录或有多个记录,则引发异常。

>>> from Bio import phenotype
>>> record = phenotype.read("phenotype/Plate.json", "pm-json")
>>> print("%s %i" % (record.id, len(record)))
PM01 96

这种风格在你只期望一个记录(并且认为多个记录是错误)时非常有用。例如,在处理由 opm 库保存的 PM JSON 文件时。

但是,如果你只想从包含多个记录的文件中获取第一个记录,请对迭代器使用 next() 函数。

>>> from Bio import phenotype
>>> record = next(phenotype.parse("phenotype/Plates.csv", "pm-csv"))
>>> print("%s %i" % (record.id, len(record)))
PM01 96

上面的代码将在文件至少包含一个记录的情况下正常工作。请注意,如果有多个记录,剩余的记录将被静默忽略。

输出

使用函数 Bio.phenotype.write(…),它接收一组完整的 PlateRecord 对象(作为列表或迭代器),一个输出文件句柄(或者在最近版本的 Biopython 中,作为字符串的输出文件名)以及文件格式。

from Bio import phenotype
records = ...
phenotype.write(records, "example.json", "pm-json")

或者,使用句柄

from Bio import phenotype
records = ...
with open("example.json", "w") as handle:
   phenotype.write(records, handle, "pm-json")

你应该调用这个函数一次(使用所有记录),并且如果使用句柄,请确保关闭它以将数据刷新到硬盘。

文件格式

在指定文件格式时,请使用小写字符串。

  • pm-json - JSON 格式的表型微阵列板。

  • pm-csv - CSV 格式的表型微阵列板,这是

    机器厂商格式

请注意,虽然 Bio.phenotype 可以读取上述文件格式,但它只能以 JSON 格式写入。

Bio.phenotype.write(plates, handle, format)

将一组完整的 PlateRecords 写入文件。

  • plates - PlateRecord 对象的列表(或迭代器)。

  • handle - 要写入的文件句柄对象,或作为字符串的文件名

    (注意,旧版本的 Biopython 只接受句柄)。

  • format - 描述要写入的文件格式的小写字符串。

你应该在调用这个函数后关闭句柄。

返回写入的记录数(作为整数)。

Bio.phenotype.parse(handle, format)

将一个表型文件转换为返回 PlateRecords 的迭代器。

  • handle - 文件句柄,或作为字符串的文件名

    (注意,旧版本的 Biopython 只接受句柄)。

  • format - 描述文件格式的小写字符串。

典型用法,打开一个文件以读取,并遍历记录(s)

>>> from Bio import phenotype
>>> filename = "phenotype/Plates.csv"
>>> for record in phenotype.parse(filename, "pm-csv"):
...    print("ID %s" % record.id)
...    print("Number of wells %i" % len(record))
...
ID PM01
Number of wells 96
ID PM09
Number of wells 96

当你只期望一个记录时,请使用 Bio.phenotype.read(…) 函数。

Bio.phenotype.read(handle, format)

将一个表型文件转换为一个 PlateRecord。

  • handle - 文件句柄,或作为字符串的文件名

    (注意,旧版本的 Biopython 只接受句柄)。

  • format - 描述文件格式的字符串。

此函数用于解析恰好包含一个记录的表型文件。例如,读取 PM JSON 文件

>>> from Bio import phenotype
>>> record = phenotype.read("phenotype/Plate.json", "pm-json")
>>> print("ID %s" % record.id)
ID PM01
>>> print("Number of wells %i" % len(record))
Number of wells 96

如果句柄不包含任何记录,或者包含多个记录,则会引发异常。例如

from Bio import phenotype
record = phenotype.read("plates.csv", "pm-csv")
Traceback (most recent call last):
...
ValueError: More than one record found in handle

但是,如果你想要从包含多个记录的文件中获取第一个记录,则此函数会引发异常(如上面的示例所示)。相反,请使用

>>> from Bio import phenotype
>>> record = next(phenotype.parse("phenotype/Plates.csv", "pm-csv"))
>>> print("First record's ID %s" % record.id)
First record's ID PM01

如果你想要从句柄中读取多个记录,请使用 Bio.phenotype.parse(handle, format) 函数。