使用bcftools过滤ANNOVAR注释VCF时数值比较错误的解决求助
问题解决:修正bcftools命令以提取符合条件的变异
错误原因
报错cannot use arithmetic operators to compare strings and numbers是因为INFO/gnomad40_genome_AF字段在VCF中可能以字符串格式存储,或者存在缺失值(用.表示),直接用数值比较运算符<会导致类型不匹配。
修改后的命令
bcftools query -f '%CHROM\t%POS\t%ID\t%REF\t%ALT\t%INFO/Func.refGene\t%INFO/Gene.refGene\t%INFO/GeneDetail.refGene\t%INFO/ExonicFunc.refGene\t%INFO/AAChange.refGene\t%INFO/gnomad40_genome_AF\n' \ -i '(INFO/Func.refGene="exonic" || INFO/Func.refGene="exonic;splicing" || INFO/Func.refGene="splicing") && INFO/ExonicFunc.refGene!="synonymous" && (INFO/gnomad40_genome_AF != "." && as_number(INFO/gnomad40_genome_AF) < 0.01)' \ input.vcf > output.txt
关键调整说明
- 新增
INFO/gnomad40_genome_AF != ".":排除该字段为缺失值的变异,避免转换数值时出错 - 使用
as_number(INFO/gnomad40_genome_AF):将字符串类型的AF值强制转换为数值类型,确保可以和0.01进行算术比较 - 修正原命令中的拼写错误
ouput.txt为output.txt - 添加
\n到输出格式字符串末尾,确保每行变异单独换行
内容的提问来源于stack exchange,提问作者eleni.ps
相关产品推荐
相关产品推荐

