seqkit:FASTA/FASTQ序列处理
763 字
4 分钟
seqkit:FASTA/FASTQ序列处理
seqkit 是用 Go 写的 FASTA/FASTQ 处理工具,处理 50GB 序列文件比手写 awk 快近 10 倍。本文覆盖 seqkit 最高频的 8 个场景:统计、过滤、抽样、格式转换、序列提取。全部在 Debian 12 上实测。
1. 安装与验证
conda install -c bioconda seqkit -yseqkit version# seqkit v2.13.02. stats——拿到FASTQ第一件事
这是我最常用的 seqkit 命令,比 FastQC 快但给出最核心的信息:
seqkit stats *.fastq.gz输出:
file format type num_seqs sum_len min_len avg_len max_lensample_R1.gz FASTQ DNA 30,000 4,500,000 150 150.0 150sample_R2.gz FASTQ DNA 30,000 4,500,000 150 150.0 150| 列 | 含义 | 关注点 |
|---|---|---|
| num_seqs | 总序列数 | 双端文件应该相等 |
| sum_len | 总碱基数 | 换算测序量 |
| min_len/max_len | 长度范围 | 发现异常短/长 reads |
| avg_len | 平均长度 | 确认 read 类型 |
如果 min_len 远小于 avg_len——说明有严重降解或接头污染,需要先跑 fastp。
3. 序列过滤——按长度、质量、名称
# 过滤≥100bp的序列seqkit seq -m 100 input.fastq.gz -o long.fastq.gz
# 过滤≤1000bp的序列(保留短的)seqkit seq -M 1000 input.fastq.gz -o short.fastq.gz
# 只保留ATCG组成的序列(去掉含N的)seqkit grep -s -r -p "^[ATCG]+$" input.fasta -o clean.fasta
# 按名称过滤(正则匹配)seqkit grep -n -r -p "chr1" genome.fa -o chr1.fa4. 抽样——大文件测试时的救星
分析 500GB 的全基因组数据前,先抽取 1% 跑一遍验证流程:
# 按比例抽样(1%)seqkit sample -p 0.01 input.fastq.gz -o sample.fastq.gz
# 按数量抽样(取10000条)seqkit sample -n 10000 input.fastq.gz -o sample_10k.fastq.gz
# 设置随机种子(保证可重复)seqkit sample -n 10000 -s 42 input.fastq.gz -o sample_10k.fastq.gz-s 设置随机种子的重要性: 审稿人可能问你”怎么抽样的”,有种子就能精确复现。
5. 格式转换——FASTA↔FASTQ
# FASTQ → FASTA(丢掉质量信息)seqkit fq2fa input.fastq.gz -o output.fasta
# FASTA → FASTQ(质量全设为最高,仅测试用)seqkit fa2fq input.fasta -o output.fastq.gz6. 序列提取——按ID列表批量取
# 从id_list.txt提取对应的序列seqkit grep -n -f id_list.txt input.fasta -o subset.fasta
# 排除这些ID(反向选择)seqkit grep -n -v -f exclude.txt input.fasta -o filtered.fastaid_list.txt 格式一行一个 ID,不需要 > 前缀。
7. 序列去重与排序
# 按序列去重(保留第一条)seqkit rmdup -s input.fasta -o dedup.fasta
# 按名称排序seqkit sort -n input.fasta -o sorted.fasta
# 按序列长度排序(从长到短)seqkit sort -l -r input.fasta -o by_length.fasta8. 碱基组成统计
seqkit fx2tab -n -g -c input.fasta# 输出:序列ID 序列 GC含量
# 只看GC含量seqkit fx2tab -n -g -c input.fasta | awk '{print $1, $NF}'9. 踩坑
坑1:gzip文件需要额外处理吗? 不需要。seqkit 自动识别 .gz 后缀并解压,直接喂就行。
坑2:输出文件格式 seqkit 默认根据 -o 参数的后缀自动选格式(.gz=压缩,.fa=FASTA,.fq=FASTQ)。
坑3:大文件 grep 很慢 seqkit grep -n -f big_list.txt 在大文件上比 seqtk subseq 慢。如果列表很大(>10万条),用 seqtk 更快。
10. 小结
| 场景 | 命令 | 比awk快多少 |
|---|---|---|
| 快速统计 | seqkit stats | 5-10x |
| 按长度过滤 | seqkit seq -m 100 | 3-5x |
| 抽样 | seqkit sample -p 0.1 | 10x+ |
| 格式转换 | seqkit fq2fa | 2-3x |
| 序列提取 | seqkit grep -n -f list | 3-5x |
本文于 2025-04-01 在 Debian 12 上实测,seqkit v2.13.0。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
seqkit:FASTA/FASTQ序列处理
https://fg.ink/posts/seqkit-fasta-fastq-processing/ 相关文章 智能推荐
1
FastQC质检与fastp清洗:测序数据预处理
技术 FastQC质检报告解读与fastp数据清洗的完整流程,含滑动窗口裁剪、接头检测和MultiQC批量汇总。
2
Cutadapt与Trimmomatic:去接头与数据清洗
技术 Cutadapt与Trimmomatic的去接头原理、参数配置和性能对比,帮助针对不同测序项目选择合适的数据清洗工具。
3
Biopython序列处理:文件读写与NCBI数据获取
技术 Biopython核心模块SeqIO、Seq和Entrez的实操指南,覆盖FASTA/FASTQ读写、序列操作与NCBI数据获取。
4
生信文件格式:FASTQ/SAM/BAM/VCF/GFF/BED
技术 FASTQ、SAM/BAM、VCF、GFF/GTF、BED等七种生信核心文件格式的结构解析与互转方法。
5
命令行小工具:seqtk/csvtk/datamash/bioawk
技术 seqtk、csvtk、datamash、bioawk等命令行小工具的生信实战指南,覆盖序列抽样、表格处理和快速统计场景。
随机文章 随机推荐