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
文件的完整路径而不是当前目录的路径。
我希望这对以后遇到此问题的任何人有所帮助:)
我正在尝试将 .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
文件的完整路径而不是当前目录的路径。
我希望这对以后遇到此问题的任何人有所帮助:)