Linkdatagen中的错误:在串联(。)或字符串中使用未启动的值$ chr

问题描述 投票:0回答:2

嗨,我试图使用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/

非常感谢

perl syntax-error bioinformatics perl-module bcftools
2个回答
0
投票

忽略以#开头的行,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

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;

通常,当有人向作者不期望的程序提供输入时,会发生这样的错误。因此,如果您看到哪些行发出此警告,您可能会发现该怎么做。

© www.soinside.com 2019 - 2024. All rights reserved.