0

こんにちは、perl ベースのツールである linkdatagen を使用しようとしていました。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 ファイルは、以下の Web サイトからダウンロードできます。
http://bioinf.wehi.edu.au/software/linkdatagen/

本当にありがとう

4

2 に答える 2

0

この警告は、文字列で使用されている変数が初期化されていない (未定義) ことを意味します。これは、何かが間違っている可能性があることを示しています。問題の行は、このステートメントにたどることができます

my $chr = $1 if ($tmp[0] =~ /chr([\S]+)/);

ステートメントで後置 if ステートメントを使用するのは悪い習慣myです。

池上が指摘しているように、これに対する回避策は

my ($chr) = $tmp[0] =~ /chr([\S])/;

ただし、一致が失敗したため、同じエラーが返される可能性があります。解決する唯一の方法は、エラーが致命的であるかどうかに関係なく、この変数の目的について詳しく知ることです。著者はこのケースを処理していないため、わかりません。

問題について詳しく知りたい場合は、次のようなデバッグ行を追加できます。

warn "'chr' value not found in the string '$tmp[0]'" unless defined $chr;

通常、このようなエラーは、作成者が予期していなかった入力を誰かがプログラムに与えたときに発生します。したがって、この警告が表示される行がわかれば、対処法がわかるかもしれません。

于 2016-03-14T12:48:54.687 に答える