命令行小工具:seqtk/csvtk/datamash/bioawk

455 字
2 分钟
命令行小工具:seqtk/csvtk/datamash/bioawk

生信命令行有一批小而精的工具,各自专注特定场景。本文覆盖 seqtk 序列抽样、csvtk 表格处理、datamash 命令行统计、bioawk 生信专用 awk,比手写 awk 更简洁可靠。

1. seqtk——序列抽样和格式转换#

Terminal window
conda install -c bioconda seqtk -y
# 随机抽样10000条(-s种子保证可重复)
seqtk sample -s42 sample.fastq 10000 > sub.fastq
# FASTA→FASTQ(质量全I)
seqtk seq -F 'I' input.fa > output.fq
# 按名称列表提取
seqtk subseq input.fa id_list.txt > subset.fa
# 统计
seqtk comp input.fa # 每序列碱基组成
seqtk fqchk input.fq # FASTQ质量概览

2. csvtk——CSV/TSV表格处理#

Terminal window
conda install -c bioconda csvtk -y
# 查看列名和前5行
csvtk headers file.tsv
csvtk head -n 5 file.tsv
# 按列提取
csvtk cut -f gene_id,log2FC,padj degs.csv
# 筛选(padj<0.05且log2FC>1)
csvtk filter2 -f '$padj<0.05 && $log2FC>1' degs.csv
# 按列排序
csvtk sort -k padj:n degs.csv
# 两个表格按基因ID合并
csvtk join -f gene_id expr.tsv annot.tsv > merged.tsv

nn表示数值列。padj:n 中的 :n 指定按数值排序。

3. datamash——命令行统计分析#

Terminal window
apt install datamash
# 计算表达矩阵每行的均值
cat expr.tsv | datamash mean 2-10
# 按分组统计
cat data.tsv | datamash -g 1 mean 3 median 3
# 描述性统计
cat values.txt | datamash min 1 q1 1 median 1 q3 1 max 1 sstdev 1

比 R 快很多——百万行数据秒出统计量。

4. bioawk——生信专用awk#

Terminal window
conda install -c bioconda bioawk -y
# 统计FASTQ质量
bioawk -c fastx '{print $name, length($seq), meanqual($qual)}' sample.fq | head
# 筛选GC含量
bioawk -c fastx 'gc($seq)>0.5' input.fq > gc_high.fq
# 统计FASTA序列长度分布
bioawk -c fastx '{print $name, length($seq)}' genome.fa | datamash min 2 max 2 median 2

5. 踩坑#

  • seqtk sample的种子必设——-s不加的话每次结果不同
  • csvtk列索引从1开始——不是0-based
  • datamash分组前必须排序——sort -k1,1 | datamash -g 1
  • bioawk遇到gzip——需要先 zcat 管道传入

本文于 2026-01-20 实测。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

命令行小工具:seqtk/csvtk/datamash/bioawk
https://fg.ink/posts/bioinfo-utility-tools/
作者
风观
发布于
2026-01-20
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
风观
风有来路,观有所思
分类
标签
站点统计
文章
52
分类
1
标签
38
总字数
64,085
运行时长
0
最后活动
0 天前

文章目录