序列预处理--seqtk

  • seqtk在生信届被誉为序列处理的瑞士军刀,其出自生信大神李恒之手,李恒是SAMtools、BWA、MAQ等著名生信软件的核心作者。
  • seqtk基于C语言编写的软件,运行速度极快,极大的提高工作效率。
  • Seqtk 是一种快速轻量级的工具,用于处理 FASTA 或 FASTQ 格式的序列。 它可以无缝解析 FASTA 和 FASTQ 文件,这些文件也可以通过 gzip 进行压缩。
  • seqtk日常序列的处理包括,比如:fq转换为fa,格式化序列,截取序列,随机抽取序列等。
  • 官网: https://github.com/lh3/seqtk

一、安装

git clone https://github.com/lh3/seqtk.git;
cd seqtk; make

二、使用示例

包含的命令行:

seq       common transformation of FASTA/Q # FASTA/Q 的转换 
comp      get the nucleotide composition of FASTA/Q # 获取FASTA/Q的核苷酸组成
sample    subsample sequences # 获取样本序列 
subseq    extract subsequences from FASTA/Q # 提取子序列
fqchk     fastq QC (base/quality summary) # fastq的质控
mergepe   interleave two PE FASTA/Q files # 交叉合并双端测序的两个FASTA/Q files,
                                       # 合并后的file第一条序列是第一个fq的第一条,
                                       # 合并后的file第二条是序列是第二个fq的第一条
trimfq    trim FASTQ using the Phred algorithm # 用Phred算法对fq修剪

hety      regional heterozygosity # 区域性杂合
gc        identify high- or low-GC regions # 识别高低GC含量的区域
mutfa     point mutate FASTA at specified positions # 在特定位置指出FASTA的突变
mergefa   merge two FASTA/Q files # 合并两个的FASTA/Q files
famask    apply a X-coded FASTA to a source FASTA # 将X编码的fa应用到原fa
dropse    drop unpaired from interleaved PE FASTA/Q # 从交错合并的fa/fq中丢弃不成对的序列
rename    rename sequence names # 序列重命名
randbase  choose a random base from hets#从hets中随机选一个碱基
cutN      cut sequence at long N # 在N长度处切掉序列
listhet   extract the position of each het # 提取每一个het位置   

将 FASTQ 转换为 FASTA:

seqtk seq -a in.fq.gz > out.fa

将 ILLUMINA 1.3+ FASTQ 转换为 FASTA 并将质量低于 20 的碱基屏蔽为小写(第一个命令行)或N(第二个)

seqtk seq -aQ64 -q20 in.fq > out.fa
seqtk seq -aQ64 -q20 -n N in.fq > out.fa

折叠长 FASTA/Q 线并删除 FASTA/Q 注释:

seqtk seq -Cl60 in.fa > out.fa

将多行 FASTQ 转换为 4 行 FASTQ:

seqtk seq -l0 in.fq > out.fq

反向互补 FASTA/Q:

seqtk seq -r in.fq > out.fq

提取名称在 file 中的name.lst序列,每行一个序列名称:

seqtk subseq in.fq name.lst > out.fq

提取文件中包含的区域中的序列reg.bed:

seqtk subseq in.fa reg.bed > out.fa

将reg.bed区域屏蔽为小写:

seqtk seq -M reg.bed in.fa > out.fa

从两个大的配对 FASTQ 文件中对 10000 个读取对进行子采样(记住使用相同的随机种子来保持配对):

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

使用 Phred 算法从两端修剪低质量碱基:

seqtk trimfq in.fq > out.fq

从每个读取的左端修剪 5bp,从右端修剪 10bp:

seqtk trimfq -b 5 -e 10 in.fa > out.fa

重命名 会将序列id变为从1到n….

seqtk rename in.fa <前缀> > out.fa

合并两个序列,通常我们Illunima双端测序会得到两个文件R1.fq.gz和R2.fq.gz,这个命令就是帮助怎么完美实现两两配对

$seqtk mergefa

Usage: seqtk mergefa [options] <in1.fa> <in2.fa># 合并两个的FASTA/Q files

Options: -q INT   quality threshold [0]
         -i       take intersection#取交集
         -m       convert to lowercase when one of the input base is N
         -r       pick a random allele from het
         -h       suppress hets in the input

cutN 去掉序列中的N/或者查看N所在的位置信息(-n 指定N的最小长度) -g 只打印出位置信息

Usage:   seqtk cutN [options] <in.fa>

Options: -n INT    min size of N tract [1000]
         -p INT    penalty for a non-N [10]
         -g        print gaps only, no sequence

参考资料

个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn

Sam avatar
About Sam
专注生物信息 专注转化医学