You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用awk高效格式化TSV格式的基因变异数据?

单步Awk优化TSV数据转换

原始数据(data.tsv)

$ cat data.tsv
variant minor_allele    minor_AF    low_confidence_variant  n_complete_samples  AC  ytx beta    se  tstat   pval
1:69569:T:C C   1.90E-04    TRUE    272338  1.04E+02    1.02E+00    -2.48E-02   7.19E-02    -3.44E-01   7.31E-01
1:139853:C:T    T   5.67E-06    FALSE   272338  3.09E+00    1.83E+00    5.00E-01    4.04E-01    1.24E+00    2.16E-01
1:692794:CA:C   C   1.11E-01    FALSE   272338  6.05E+04    -3.35E+02   -3.67E-03   3.34E-03    -1.10E+00   2.71E-01
1:693731:A:G    G   1.16E-01    FALSE   272338  6.32E+04    -4.94E+02   -6.37E-03   3.16E-03    -2.02E+00   4.35E-02

目标输出(newdata.tsv)

$ cat newdata.tsv
snp A1  A2  beta    P   n
1:139853    T   C   5.00E-01    2.16E-01    272338
1:693731    G   A   -6.37E-03   4.35E-02    272338

转换要求

  • 拆分variant列到第二个冒号处,保留1:139853格式的SNP标识
  • 选择并重命名指定列:映射为snp、A1(原minor_allele)、A2(原variant列第三个元素)、beta、P(原pval)、n(原n_complete_samples)
  • 丢弃low_confidence_variant为TRUE的行
  • 仅保留等位基因为A/T/C/G的双等位基因变异(排除多碱基类型)

原实现方案(两步Awk)

第一步拆分variant列生成中间文件:

awk < data.tsv -F'[:]' '{ print $1 "\t" $2 "\t" $3 "\t" $4, $5 }' > data1.tsv

第二步过滤并整理输出:

awk < data1.tsv '(NR>1){snp1=$1;snp2=$2;a1=$5;a2=$3;beta=$11;P=$14;n=$8}(NR==1){print "SNP A1 A2 beta P n"}(NR>1 && $7=="FALSE" && (a1=="A"||a1=="C"||a1=="G"||a1=="T") && (a2=="A"||a2=="C"||a2=="G"||a2=="T")) {print snp1":"snp2, a1, a2, beta, P, n}' > newdata.tsv

优化后的单步Awk实现

无需中间文件,一次调用完成所有逻辑:

awk 'BEGIN {FS="\t"; OFS="\t"}
NR==1 {print "snp", "A1", "A2", "beta", "P", "n"; next}
$4 == "FALSE" {
    split($1, var, ":")
    a1 = $2
    a2 = var[3]
    if ((a1 ~ /^[ATCG]$/) && (a2 ~ /^[ATCG]$/)) {
        snp = var[1] ":" var[2]
        print snp, a1, a2, $8, $11, $5
    }
}' data.tsv > newdata.tsv

优化点说明

  • 用split()直接拆分variant列,省去中间文件的IO开销
  • 正则表达式/^[ATCG]$/简化等位基因判断,代码更简洁易读
  • 明确指定输入输出分隔符为制表符,避免空格/制表符混合导致的列识别错误
  • 逻辑流程清晰:先处理表头,再过滤低置信度行,最后验证等位基因并输出

内容的提问来源于stack exchange,提问作者Yannick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 18:13:07