文件I/O (skbio.io

此包为skbio提供I/O功能。

支持的文件格式

有关每种格式支持哪些对象的详细信息,请参阅相关文档。

blast6 

BLAST+6格式 (skbio.io.format.blast6

blast7 

BLAST+7格式 (skbio.io.format.blast7

clustal 

Clustal格式 (skbio.io.format.clustal

embl 

EMBL格式 (skbio.io.format.embl

fasta 

FASTA/QUAL格式 (skbio.io.format.fasta

fastq 

FASTQ格式 (skbio.io.format.fastq

genbank 

GenBank格式 (skbio.io.format.genbank

gff3 

GFF3格式 (skbio.io.format.gff3

lsmat 

标记方阵格式 (skbio.io.format.lsmat

newick 

Newick格式 (skbio.io.format.newick

ordination 

排序结果格式 (skbio.io.format.ordination

phylip 

PHYLIP多序列比对格式 (skbio.io.format.phylip

qseq 

QSeq格式 (skbio.io.format.qseq

stockholm 

斯德哥尔摩格式 (skbio.io.format.stockholm

用户功能

write \(self,obj,格式,into, *  * 克瓦格斯)

obj 作为 format 放到一个文件里。

read \(自我,文件[, format, into, verify] )

file 作为 format 变成一个物体。

sniff \(自我,文件, *  * 克瓦格斯)

检测给定的 file 建议阅读夸克。

用户异常和警告

FormatIdentificationWarning 

当格式探查器无法确认格式时发出警告。

ArgumentOverrideWarning 

当用户提供的kwarg与猜测的kwarg不同时发出警告。

UnrecognizedFormatError 

当文件格式未知、不明确或无法识别时引发。

IOSourceError 

无法解析文件源时引发。

FileFormatError 

无法分析文件时引发。

BLAST7FormatError 

升高时 blast7 无法分析格式化文件。

ClustalFormatError 

升高时 clustal 无法分析格式化文件。

EMBLFormatError 

升高时 EMBL 无法分析格式化文件。

FASTAFormatError 

升高时 fasta 无法分析格式化文件。

FASTQFormatError 

升高时 fastq 无法分析格式化文件。

GenBankFormatError 

升高时 genbank 无法分析格式化文件。

GFF3FormatError 

升高时 GFF3 无法分析格式化文件。

LSMatFormatError 

升高时 lsmat 无法分析格式化文件。

NewickFormatError 

升高时 newick 无法分析格式化文件。

OrdinationFormatError 

当一个 ordination 无法分析格式化文件。

PhylipFormatError 

升高时 phylip 无法分析格式化文件。

QSeqFormatError 

升高时 qseq 无法分析格式化文件。

QUALFormatError 

升高时 qual 无法分析格式化文件。

StockholmFormatError 

升高时 stockholm 无法分析格式化文件。

子包

registry 

I/O注册表 (skbio.io.registry

util 

I/O实用程序 (skbio.io.util

有关扩展I/O的开发人员文档,请参阅 skbio.io.registry .

I/O简介

读写文件(I/O)可能是一项复杂的任务:

  • 文件格式有时可以读入多个内存表示(即对象)。例如,可以将FASTA文件读入 skbio.alignment.TabularMSAskbio.sequence.DNA 取决于要对数据执行的操作。

  • 一个对象可以写入多个文件格式。例如,一个 skbio.alignment.TabularMSA 对象可以写入FASTA、FASTQ、CLUSTAL或PHYLIP格式,仅举几个例子。

  • 您可能不知道文件的确切文件格式,但您希望将其读入适当的对象中。

  • 您可能希望将多个文件读入一个对象,或将一个对象写入多个文件。

  • 您可能不想将文件读入对象,而是使用生成器流式处理文件(例如,如果文件无法完全加载到内存中)。

为了解决这些问题(以及其他问题),scikit-bio提供了一个简单、功能强大的接口来处理I/O。

scikit-bio可以使用哪些类型的文件

要查看可用于读、写和嗅探的类似文件的输入的完整列表,请参阅 skbio.io.util.open() .

正在将文件读入scikit-bio

有两种读取文件的方法。第一种方法是使用过程界面:

my_obj = skbio.io.read(file, format='someformat', into=SomeSkbioClass)

第二种方法是使用从过程接口自动构造的面向对象(OO)接口:

my_obj = SomeSkbioClass.read(file, format='someformat')

例如,读取 newick 使用您要键入的两个接口的文件:

>>> from skbio import read
>>> from skbio import TreeNode
>>> from io import StringIO
>>> open_filehandle = StringIO('(a, b);')
>>> tree = read(open_filehandle, format='newick', into=TreeNode)
>>> tree
<TreeNode, name: unnamed, internal node count: 0, tips count: 2>

对于OO接口:

>>> open_filehandle = StringIO('(a, b);')
>>> tree = TreeNode.read(open_filehandle, format='newick')
>>> tree
<TreeNode, name: unnamed, internal node count: 0, tips count: 2>

如果是 skbio.io.registry.read() 如果 into 未提供,则将返回生成器。生成器生成的结果将取决于所读取的格式。

什么时候? into 则可以省略格式,并且注册表将使用其对所请求类的可用格式的知识来推断正确的格式。这种格式推断在OO接口中也可用,这意味着 format 也可以省略。

例如:

>>> open_filehandle = StringIO('(a, b);')
>>> tree = TreeNode.read(open_filehandle)
>>> tree
<TreeNode, name: unnamed, internal node count: 0, tips count: 2>

我们称之为格式推理 sniffing ,很像 csv.Sniffer Python标准库的类。a的目标 sniffer 是双重的:确定文件是否是特定格式,如果是,则提供 **kwargs 可以用来更好地解析文件。

注解

有一个内置的 sniffer 如果将空文件作为输入提供,并且省略了格式,则会产生有用的错误消息。

从scikit-bio写入文件

就像读取文件一样,有两种方法可以写入文件。

程序接口:

skbio.io.write(my_obj, format='someformat', into=file)

OO接口:

my_obj.write(file, format='someformat')

在程序界面中, format 是必需的。没有它,scikit-bio就不知道如何序列化对象。OO接口定义了一个默认值 format ,因此可能没有必要包含它。