fastx_toolkit:处理fasta/fastq文件的小工具

2020-05-08 16:39:19 浏览数 (2)

欢迎关注”生信修炼手册”!

在NGS数据分析中,常常需要对fasta/fastq文件进行一些处理,fastx_toolkit是一款综合性的工具,提供了很多有用的功能,能够简单方便的处理序列文件。官网如下

http://hannonlab.cshl.edu/fastx_toolkit

官网提供了二进制可执行文件,直接下载即可

代码语言:javascript复制
wget http://hannonlab.cshl.edu/fastx_toolkit/fastx_toolkit_0.0.13_binaries_Linux_2.6_amd64.tar.bz2
tar xjvf fastx_toolkit_0.0.13_binaries_Linux_2.6_amd64.tar.bz2

fastx_toolkit由一系列的命令组成,每个命令提供一个实用的小功能。在使用时需要注意以下几点

  1. 不支持压缩格式的输入文件
  2. 不允许序列中存在N碱基,这样的序列会自动去除
  3. 可视化命令依赖gunplot软件和perl的GD模块
  4. 默认情况下认为fastq文件的碱基编码格式为phred64

对于目前主流的phred33编码的fastq文件,需要添加参数-Q 33

1. 将fastq文件转换为fasta文件

fastq_to_fasta命令可以将fastq文件转换为fasta文件,基本用法如下

代码语言:javascript复制
fastq_to_fasta -i input.fq -o out.fa -Q 33
2. fasta 序列格式化

fasta_formatter命令用于格式化fasta文件,主要是指定序列的行数。fasta文件中每条序列由>开头的序列标识符和碱基序列两部分构成,其中碱基序列可以写成一行,也可以写成多行。该命令通过指定一行允许的最大碱基数,控制序列的展现形式,基本用法如下

代码语言:javascript复制
fasta_formatter -i input.fa -w 60 -o out.fa
3. DNA序列和RNA序列的转换

fasta_nucleotide_changer命令用于改变fasta文件中的碱基,提供了两种模式,-r参数代表DNA转换成RNA模式,将T碱基转换成U碱基;-d参数代表RNA转换成DNA, 将U碱基转换成T碱基,基本用法如下

代码语言:javascript复制
fasta_nucleotide_changer -i input.fa -r -o out.fa
4. 获取反向互补序列

fastx_reverse_complement命令可以将序列方向互补,支持fastq/fasta格式的输入文件,基本用法如下

代码语言:javascript复制
fastx_reverse_complement -i input.fq -o rc.fq
5. 重命名序列标识符

fastx_renamer命令可以重命名序列标识符,提供了两种重命名方式,默认采用SEQ模式,直接用序列作为标识符,但是由于序列可能存在冗余,采用这种方式存在风险,COUNT模式采用数字编码作为标识符,编号从1开始。基本用法如下

代码语言:javascript复制
fastx_renamer -n COUNT -i input.fa -o out.fa
6. 从序列中提取子串

fastx_trimmer命令可以从序列中提取子串,-f参数指定子串的起始位置,默认为1,-l参数指定子串的终止位置,默认为序列的长度。通过指定-f参数,可以方便的从序列的头部切除固定个数的碱基,基本用法如下

代码语言:javascript复制
fastx_trimmer -f 5   -i input.fq -o out.fq
7. 去除adapter序列

fastx_clipper命令用于去除adapter序列, 也支持去除长度太短的序列,-a参数指定adapter序列,-l参数指定序列的最短长度,基本用法如下

代码语言:javascript复制
fastx_clipper -a GATTGA -l 20 -i input.fa -o out.fa
8. 过滤fastq文件中的低质量序列

fastq_quality_filter命令根据高质量碱基所占的百分比对序列进行过滤,-q参数指定碱基质量阈值,高于该阈值的碱基认为是高质量碱基,-p指定高质量碱基百分比的阈值,低于该阈值的序列会被过滤掉,基本用法如下

代码语言:javascript复制
fastq_quality_filter -q 20 -p 90 -i input.fq -o out.fq -Q 33
9. 合并重复序列

fastx_collapser命令用于合并重复序列,合并后的序列标识符由两部分组成,用-分隔,前半部分为数字编号,后半部分为该序列出现的次数,基本用法如下

代码语言:javascript复制
fastx_collapser -i input.fa -o out.fa
10. 统计序列的碱基组成和质量分布

fastx_quality_stats命令统计序列的碱基组成和质量分布,支持fastq/fasta文件,基本用法如下

代码语言:javascript复制
fastx_quality_stats -i input.fq -o stats.txt

只有当输入序列为fastq文件时,质量分布才有意义。

11. 可视化序列的碱基组成

fastx_nucleotide_distribution_graph.sh命令用于可视化序列的碱基组成,输入文件为fastx_quality_stats命令的输出文件,基本用法如下

代码语言:javascript复制
fastx_nucleotide_distribution_graph.sh -i stats.txt -o out.png

产生的图片示意如下

12. 可视化序列的质量分布

fastq_quality_boxplot_graph.sh命令用于可视化序列的质量分布,输入文件为fastx_quality_stats命令的输出文件,基本用法如下

代码语言:javascript复制
fastq_quality_boxplot_graph.sh -i stats.txt -o out.png

产生的图片示意如下

13. 可视化序列长度分布

fasta_clipping_histogram.pl命令用于可视化fasta序列的长度分布,基本用法如下

代码语言:javascript复制
fasta_clipping_histogram.pl input.fa out.png

fastx_toolkit功能丰富,使用方便简单,但是在处理数据量较大的文件时,速度比较慢。

·end·

—如果喜欢,快分享给你的朋友们吧—

0 人点赞