文件I/O (skbio.io )¶
此包为skbio提供I/O功能。
支持的文件格式¶
有关每种格式支持哪些对象的详细信息,请参阅相关文档。
| 简单二进制相异度矩阵格式(skBio.io.Form.inary_dm) | |
| BLAST+6格式(skBio.io.Format.blast6) | |
| BLAST+7格式(skBio.io.Format.blast7) | |
| Clustal格式(skBio.io.form.clustal) | |
| Embl格式(skBio.io.Form.embl) | |
| FASTA/QUAL格式(skBio.io.Format.fast) | |
| FASTQ格式(skBio.io.form.fast q) | |
| GenBank格式(skBio.io.Form.genbank) | |
| GFF3格式(skBio.io.Form.gff3) | |
| 带标签的方阵格式(skBio.io.Format.lsmat) | |
| Newick格式(skBio.io.Form.Newick) | |
| 排序结果格式(skBio.io.format.排序) | |
| PHYLIP多序列比对格式(skBio.io.Format.PHYLIP) | |
| QSeq格式(skBio.io.Format.qseq) | |
| 斯德哥尔摩格式(skBio.io.Form.stock) | |
| Taxump格式(skBio.io.Form.axump) | 
用户功能¶
| 
 | 写 obj 作为 format 放到一个文件里。 | 
| 
 | 读 file 作为 format 变成一个物体。 | 
| 
 | 检测给定的 file 建议阅读夸克。 | 
用户异常和警告¶
| 当格式探查器无法确认格式时发出警告。 | |
| 当用户提供的kwarg与猜测的kwarg不同时发出警告。 | |
| 当文件格式未知、不明确或无法识别时引发。 | |
| 无法解析文件源时引发。 | |
| 无法分析文件时引发。 | |
| 升高时  | |
| 升高时  | |
| 升高时  | |
| 升高时  | |
| 升高时  | |
| 升高时  | |
| 升高时  | |
| 升高时  | |
| 升高时  | |
| 当一个  | |
| 升高时  | |
| 升高时  | |
| 升高时  | |
| 升高时  | 
子包¶
| I/O注册表(skBio.io.register) | |
| I/O实用程序(skBio.io.util) | 
有关扩展I/O的开发人员文档,请参阅 skbio.io.registry .
I/O简介¶
读写文件(I/O)可能是一项复杂的任务:
- 文件格式有时可以读入多个内存表示(即对象)。例如,可以将FASTA文件读入 - skbio.alignment.TabularMSA或- skbio.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 ,因此可能没有必要包含它。
