Perl脚本报错解析:annovar的exonic_variant_function文件格式错误排查指南

ANNOVAR是一款功能强大的基因组变异注释软件,由王凯博士开发,广泛应用于遗传学研究和临床诊断领域。它能够对基因组中的变异位点进行多功能注释,帮助研究人员理解变异的生物学意义。最近使用...

ANNOVAR是一款功能强大的基因组变异注释软件,由王凯博士开发,广泛应用于遗传学研究和临床诊断领域。它能够对基因组中的变异位点进行多功能注释,帮助研究人员理解变异的生物学意义。最近使用的时候发现有一个报错经常出现但是没有特别清晰的原因解读。报错如下:

Error: invalid record found in exonic_variant_function file (exonic format error)

1.ANNOVAR使用

通常来说我们都是基于自己的基因组fa和gff3文件来做vcf文件的注释。因此通用的使用教程如下:

1.1. 从gff得到gtf

gffread gff3文件 -T -o gtf文件

1.2. 构建注释库,前缀保持一致

# 用 gtfToGenePred 工具将 GTF file 转换 GenePred file
gtfToGenePred -genePredExt gtf文件 库前缀_refGene.txt
# 用retrieve_seq_from_fasta.pl生成 transcript FASTA file
retrieve_seq_from_fasta.pl --format refGene --seqfile fa --outfile 库前缀_refGeneMrna.fa 库前缀_refGene.txt

1.3. 注释

table_annovar.pl vcf文件 注释库所在文件夹 -buildver 库前缀 -out 输出前缀-remove -protocol refGene -operation g -nastring . -vcfinput

2. 报错出现

这个报错一般是在运行第三步注释的时候出现,发生在处理基因变异数据时,coding_change.pl 脚本无法正确解析exonic_variant_function文件中的特定行格式。

Error: invalid record found in exonic_variant_functionfile (exonic format error)

coding_change.pl脚本是在数据转化(convert2annovar.pl)、注释(annotate_variation.pl)完成之后会运行的脚本,table_annovar.pl会自动调用这三个脚本。coding_change.pl的运行命令如下:

coding_change.pl 前缀.refGene.exonic_variant_function.orig 库文件夹/库前缀_refGene.txt 库文件夹/库前缀_refGeneMrna.fa -alltranscript -out 前缀.refGene.fa -newevf 前缀refGene.exonic_variant_function

3. 报错原因及解决方法

coding_change.pl的第77行:

$field[2] =~ m/^[\w\-\.\@\/]+?:([\w\.]+?):exon\d+:c.([\w\->]+)(:p.([\w\*]+))?/ or die "Error: invalid record found in exonic_variant_function file (exonic format error): <$_>";

经过排查,发现问题出在正则表达式与数据格式不匹配上:

正则表达式:^[\w\-\.\@\/]+?:([\w\.]+?):exon\d+:c.([\w\->]+)(:p.([\w\*]+))?

第一部分:基因名字:^[\w\-\.\@\/]+?:

匹配范围:字母、数字、下划线、连字符、点、@符号、斜杠,后跟冒号


第二部分:mRNA名字:([\w\.]+?):

匹配范围:只匹配字母、数字、下划线和点,后跟冒号


第三部分:外显子编号:exon\d+:

匹配范围:exon后跟数字,再跟冒号


第四部分:CDS上的变化:c.([\w\->]+)

匹配范围:c.后跟字母、数字、下划线、连字符、大于号


第五部分:蛋白上的变化:(:p.([\w\*]+))?

匹配范围:可选的 :p.后跟字母、数字、下划线、星号


本次产生报错的原因是,第二部分RNA名称中存在”-“这种无法识别的符号。因此只要把mRNA名字里面的不识别符号替换掉就可以了。

替换可以使用命令:sed -i "s/rna-/rna_/g" gtf文件

然后再重新运行第一部分的命令就可以了!


参考:

https://github.com/WGLab/doc-ANNOVAR

https://www.jianshu.com/p/461f2cd47564

https://www.jianshu.com/p/20b316b15b1a

https://www.jianshu.com/p/20b316b15b1a

  • 发表于 1天前
  • 阅读 ( 20 )
  • 分类:perl

0 条评论

请先 登录 后评论
Ti Amo
Ti Amo

67 篇文章

作家榜 »

  1. omicsgene 736 文章
  2. 安生水 363 文章
  3. Daitoue 167 文章
  4. 生物女学霸 120 文章
  5. xun 90 文章
  6. rzx 85 文章
  7. 红橙子 81 文章
  8. CORNERSTONE 72 文章