Linux下提取VCF文件指定字段计算后生成新CSV列的方法
VCF字段提取计算实现方案
直接用awk完成处理,不需要额外安装工具,命令如下:
awk ' BEGIN { FS = "\t" OFS = "\t" print "DP", "Ratio" } /^#/ { next } { split($9, fmt, ":") for (i in fmt) { if (fmt[i] == "AD") ad_idx = i if (fmt[i] == "DP") dp_idx = i } split($NF, sample, ":") split(sample[ad_idx], ad, ",") dp = sample[dp_idx] ratio = sprintf("%.2f", ad[2]/(ad[1]+ad[2])) print dp, ratio } ' input.vcf > output.csv
使用说明
- 自动跳过VCF所有
#开头的头注释行,第一行输出要求的DP、Ratio表头 - 自动识别FORMAT列中AD、DP的位置,不依赖固定字段顺序,适配不同格式的VCF文件
- 严格按照给定公式计算比值,结果固定保留两位小数,输出为制表符分隔的CSV格式
- 针对给出的样例数据,按公式四舍五入计算的结果如下,如果需要调整截断规则,修改sprintf的格式参数即可:
DP Ratio 3154 0.36 883 0.40
内容的提问来源于stack exchange,提问作者Daffy
相关产品推荐
相关产品推荐

