seqtk --- fasta/fastq文件的操作神器

seqtk是李恒编写的一款能够快速处理fa/fq文件处理的神器,不仅能处理文本格式还能直接处理gzip压缩后的fa/fq文件格式。你可能不了解李恒,但你肯定知道 samtoolsbwa ,这些软件都出自李恒之手。因此,对于这个软件,不用过多的担心其稳定性。

下载安装

  • conda安装: conda install -c bioconda seqtk
  • 手动安装,命令如下:
git clone https://github.com/lh3/seqtk.git
cd seqtk; make

此处可能会出现报错,但似乎不影响seqtk的正常使用。其报错原因是文件的时间戳在系统时间之后,即系统认为该文件是在未来创建的,因此报错。强迫症可使用下面的命令修改文件时间,解决报错的问题:

find . -type f | xargs -n 5 touch
make clean
make

使用示例

seqtk的功能很多,先简单总结一下常用的:

  • 将fa转换为fq
  • 对fq文件进行质量过滤
  • 对碱基反向互补
  • 对reads的开头末尾进行trim
  • 对fq文件进行随机取样

以下是一些示例代码:

  • fastq 转换为 fasta
seqtk seq -a in.fq.gz > out.fa
# 根据质量进行简单过滤,碱基质量低于q20的被小写
seqtk seq -aQ64 -q20 in.fq > out.fa
  • 得到互补序列
seqtk seq -r in.fq > out.fq
# 此处的输入/输出文件也可以是fa格式
  • 根据reads ID 提取 reads
 seqtk subseq in.fq name.id > out.fq
  • 根据bed文件提取指定reads (也可以使用bedtools的getfasta命令)
  seqtk subseq in.fa reg.bed > out.fa
  • 根据bed文件去除指定reads
seqtk seq -M reg.bed in.fa > out.fa
# M --> Mask
  • 对fq文件中的reads进行随机抽样
 seqtk sample -s100 read1.fq 10000 > sub1.fq
  seqtk sample -s100 read2.fq 10000 > sub2.fq

-s后面跟随机seed,对于双端测序的reads,必须使用一样的seed,不然得到的sample无法正确pair

  • 对fq/fa文件中的reads进行开头/末尾的trim
seqtk trimfq -b 5 -e 10 in.fa > out.fa
# -b: 指定左侧去除的reads数目
# -e: 指定右侧去除的reads数目

  • 根据Phred值,对fq文件的reads进行过滤(从两端去除,不去除中间,避免产生更改reads的问题,影响比对)
seqtk trimfq in.fq > out.fq

注: seqtk对于一些不涉及测序质量的处理,通常都是既支持fasta格式,也支持fastq格式

你可能感兴趣的:(seqtk --- fasta/fastq文件的操作神器)