嗨,我试图使用linkdatagen,这是一个基于perl的工具。它需要一个vcf文件(使用SAMtools的mpileup)和hapmap注释文件(提供)。我按照说明操作,但是当我使用提供的perl脚本时,我收到此错误。我使用的代码是:
samtools mpileup -d10000 -q13 -Q13 -gf hg19.fa -l annotHapMap2U.txt samplex.bam | bcftools view -cg -t0.5 - > samplex.HM.vcf
Perl vcf2linkdatagen.pl -variantCaller mpileup -annotfile annotHapMap2U.txt -pop CEU -mindepth 10 -missingness 0 samplex.HM.vcf > samplex.brlmm
Use of uninitiated value $chr in concatenation (.) or string at vcf2linkdatagentest.pl line 487, <IN> line 1
....它一直在继续......我已经邮寄了作者,还没有收到他们的消息。有人可以帮助我吗?我究竟做错了什么?
perl脚本是:http://bioinf.wehi.edu.au/software/linkdatagen/vcf2linkdatagen.pl
HapMap文件可以从下面提到的网站下载。 http://bioinf.wehi.edu.au/software/linkdatagen/
非常感谢
忽略以#
开头的行,vcf2linkdatagen.pl
期望VCF第一行的第一个字段包含“chrsomething”形式的某些内容,并且您的文件不符合该期望。代码中的注释示例:
chr1 888659 . T C 226 . DP=26;AF1=1;CI95=1,1;DP4=0,0,9,17;MQ=49;FQ=-81 GT:PL:GQ 1/1:234,78,0:99
chr1 990380 . C . 44.4 . DP=13;AF1=7.924e-09;CI95=1.5,0;DP4=3,10,0,0;MQ=49;FQ=-42 PL 0
警告意味着字符串中使用的变量未初始化(未定义)。这表明某些事情可能是错误的。有问题的行可以追溯到这个陈述
my $chr = $1 if ($tmp[0] =~ /chr([\S]+)/);
在my
语句中使用postfix if语句是不好的做法。
正如池上所说,这可能是一个解决方法
my ($chr) = $tmp[0] =~ /chr([\S])/;
但由于匹配失败,它可能会返回相同的错误。要解决的唯一方法是更多地了解此变量的用途,如果错误应该是致命的。作者没有处理这个案子,所以我们不知道。
如果您想了解有关该问题的更多信息,可以添加如下调试行:
warn "'chr' value not found in the string '$tmp[0]'" unless defined $chr;
通常,当有人向作者不期望的程序提供输入时,会发生这样的错误。因此,如果您看到哪些行发出此警告,您可能会发现该怎么做。