Vcf 到贝叶斯扫描格式 - perl 脚本不识别人口

Vcf to Bayescan format - perl script not recognising populations

我正在尝试将 .vcf 文件转换为 BayeScan 的正确格式。我已尝试按照建议使用 PGDSpider,但我的 .vcf 文件太大,因此出现内存问题。

然后我在 Github 上找到了一个 perl 脚本,它可以转换我的文件,即使它真的很大。可以找到该脚本 here。但是,它无法正确识别我拥有的人口数量。它只找到 1 个 popualtion,而我有 30 个。

我的人口文件的顶部看起来像这样,遵循 perl 脚本中的示例格式。

index01_barcode_10_PA-1-WW-10     pop1 
index02_barcode_29_PA-5-Ferm-19   pop2
index01_barcode_17_PA-1-WW-17     pop1
index02_barcode_20_PA-5-Ferm-10   pop2
index03_barcode_16_PA-7-CA-14     pop3

我也尝试过使用排序的人口文件编写脚本。 我没有使用 perl 语言的经验,所以我很难弄清楚为什么脚本不起作用。

我认为与脚本的这一部分有关,但不能确定:

# read and process pop file

while (<POP>){
        chomp $_;
        @line = split /\t/, $_;
        $pops{$line[0]} = $line[1];
}
close POP;

# Get populations and sort them

my @upops = sort { $a cmp $b } uniq ( values %pops );
print "found ", scalar @upops, " populations\n";

Appolgies,因为我不确定如何使它成为一个可重现的示例,但我希望有人至少可以帮助我理解这部分代码在做什么,以及是否有办法对其进行调整?问题是我的个人名字有_-吗?

非常感谢您提前提出建议和帮助:)

首先感谢@toolic 的帮助和指导:) 在尝试创建一个可重现的示例时它开始工作,我认为问题在于我如何制作我的人口文件。

之前我用过:paste sample_names pops | column -s $'\t' -t > pop_file.txt 输出问题中打印的文件。 但是如果我简单地使用它就可以工作:paste sample_names pops > pop_file.txt

此外,我已经将 .vcf 文件的完整路径而不是当前目录的路径。

我希望这对以后遇到此问题的任何人有所帮助:)