今天强烈安利一个基因组序列处理神器:Pyfastx。软件历经20个月、70个版本,文章发表在生信顶刊《Briefings in Bioinformatics》上,Li Heng大神亲测推荐。
作者是我的同门师兄,现在任职于成都大学,专注于生物信息学研究,是真正的Tool maker。
Pyfastx: a robust python module for fast random access to sequences from plain and gzipped FASTA/Q file
模块的使用文档非常详细,感兴趣的朋友可以直接到pyfastx官网查看使用说明。
本文仅作抛砖引玉,首先我们来看一下pyfastx的特点。
- 一个接口同时满足FASTA/Q文件读写需求
- 轻量级、内存节约
- 随机访问压缩的FASTA/Q文件
- 逐条迭代读取FASTA文件
- 计算FASTA文件的N50和L50
- 计算序列的GC含量和核酸组成
- 计算反向互补序列
- 良好的兼容性,支持分析非标准的FASTA文件
- 支持FASTQ文件的碱基质量值转换
- 提供命令行接口用于拆分FASTA/Q文件
功能很多,覆盖了平时序列文件操作的常见需求。Pyfastx内部含有多个功能模块,比如:
- FASTX 接口,为迭代Fasta/q文件提供统一的接口
- FASTA 接口,迭代或随机访问Fasta文件
- FASTQ 接口 ,迭代或随机访问Fastq文件
- Fasta 类,封装好的Fasta文件类
- Fastq类,封装好的Fastq文件类
- Sequence类,提供Fasta记录的常用操作
- Read类,提供Fastq记录的常用操作
安装
目前,pyfastx支持Python 3.5以上的版本,通过pip
即可安装。
|
|
FASTX 模块
FASTA 文件迭代
迭代 Fasta 文件时,返回一个元组(name, seq, comment
),其中 comment 是标题栏第一个空格后面的内容。
|
|
FASTQ 文件迭代
迭代Fastq文件时,返回一个元组(name, seq, qual, comment
),其中 comment 是标题栏第一个空格后面的内容。
|
|
FASTA 模块
读取Fasta文件,并且支持随机访问其中的任意序列。
这里要说明一下顺序迭代和随机读取的区别。顺序迭代顾名思义就是从一个文件的开始逐条记录往后读,直至最后一条记录。
随机读取就是能够直接访问指定的序列,不需要从头读到尾。怎么实现呢?一般是先要为序列建立索引,pyfastx也不例外。
FASTA 文件读取
|
|
FASTA 文件迭代
Fasta文件中每条序列最重要的就是名称和序列信息了,这两个信息可以方便地通过迭代返回。
|
|
此外也可以直接返回 FASTA 对象。
|
|
FASTA 类
FASTA 对象有许多属性和方法可供使用,如计算 GC 含量、计算 N50/L50、提取任意序列等。
以提取指定序列为例,FASTA 不仅可以提取指定序列,还可以指定序列的某一区间。
|
|
当然,FASTA 对象还有更加花式的序列提取方式。
|
|
Sequence 类
FASTA 文件的记录,被封装成 Sequence 类,为操作 FASTA 文件的记录提供接口。例如,你可以对它进行切片。
|
|
或者对 Sequence 进行反向、互补或反向互补。
|
|
FASTQ 模块
FASTQ 文件读取
读取Fastq文件,并支持随机访问,前提是先要构建索引。
|
|
FASTQ 文件迭代
Fastq每一条记录有 4 行,其中 comment 通常总为+
号,因此有价值的是name, seq, qual
三项信息。
|
|
也可以直接返回 FASTQ 对象。
|
|
FASTQ 类
FASTQ 类封装了 Fastq 文件,为 Fastq 文件常用操作提供方便的接口。
|
|
Read 类
FASTQ 文件的每一条记录是一个 read,Read 类为操作 Fastq 记录提供了接口。
获取 Read 对象
|
|
获取 Read 对象的信息。
|
|
命令行接口
|
|
Pyfastx 还提供了额外接口,方便在命令行下直接操作 Fasta/q 文件。好了,鉴于时间和篇幅有限,这部分大家自行探索吧。
最后,Pyfastx 虽然已经发表文章,但还在持续维护更新。希望大家多多使用,有什么建议可以跟作者反馈。
好的工具和用户是共同成长的,祝大家科研顺利。
作者简介:杜联明,博士,成都大学特聘副研究员。毕业于四川大学生物信息学专业,主要从事基因组学与转录组学研究,生物信息学数据库和数据分析软件开发。相关成果发表在Bioinformatics,Molecular Ecology Resources,Aging,Journal of Heredity,Genome Research,Molecular Biology and Evolution等国际知名期刊上。
欢迎关注简说基因,觉得不错,请点个“赞”吧!