生物信息中,一旦涉及到 fastq 数据的处理,通常都要消耗大量内存、CPU 和时间。所以,在正式运行任务之前,建议先从整体数据中抽取一部分小数据进行测试。

今天给大家介绍如何从 fastq 文件中随机抽取数据。使用的工具是 seqtk

安装

使用 Bioconda 自动安装【推荐】

Bioconda 是自动化管理生物信息软件的工具,就像 APPStore、360 软件管家一样。配置好之后,安装 seqtk 只需要一条命令 conda install seqtk

Bioconda 的安装和配置可以参考基因课课程《生物信息软件安装》

在使用中,由于国内网络原因可能导致下载不畅,建议在命令行使用 VPN翻墙。

手动安装

https://github.com/lh3/seqtk/releases 下载最新版

#下载
wget https://github.com/lh3/seqtk/archive/v1.2.tar.gz

#解压
tar -zxvf v1.2.tar.gz

#进入目录
cd seqtk-1.2/

#编译
make

使用

$ seqtk sample

Usage:   seqtk sample [-2] [-s seed=11] <in.fq> <frac>|<number>

Options: -s INT       RNG seed [11]
         -2           2-pass mode: twice as slow but with much reduced memory

[]中的是可选参数,<> 中的是必需参数。
[-2] 内存较小的服务器上运行时,设置此参数。
[-s] 随机数的种子。如果是 Pair-end 数据,需要保证 read1 和 read2 的种子一致,才能抽到相同的raeds。默认是 11。
[in.fq] 输入文件

<frac|number>可以输入要抽取的比例或 reads 条数。

seqtk sample -s100 read1.fq 10000 > sub1.fq
seqtk sample -s100 read2.fq 10000 > sub2.fq
 

扩展

seqtk 是一个很强大的 fastq 和 fasta 文件处理工具,堪称瑞士军刀,功能包括:文件切分、合并、格式转换、随机抽样、提取子序列、重命名等。

$ seqtk

Usage:   seqtk <command> <arguments>
Version: 1.2-r94

Command: seq       common transformation of FASTA/Q
         comp      get the nucleotide composition of FASTA/Q
         sample    subsample sequences
         subseq    extract subsequences from FASTA/Q
         fqchk     fastq QC (base/quality summary)
         mergepe   interleave two PE FASTA/Q files
         trimfq    trim FASTQ using the Phred algorithm

         hety      regional heterozygosity
         gc        identify high- or low-GC regions
         mutfa     point mutate FASTA at specified positions
         mergefa   merge two FASTA/Q files
         famask    apply a X-coded FASTA to a source FASTA
         dropse    drop unpaired from interleaved PE FASTA/Q
         rename    rename sequence names
         randbase  choose a random base from hets
         cutN      cut sequence at long N
         listhet   extract the position of each het