forked from tangerzhang/my_script
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmerge_vcf.pl
39 lines (36 loc) · 812 Bytes
/
merge_vcf.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/perl -w
use strict;
my %infordb;
my %refdb;
my %sampledb;
while(my $file = glob "*.vcf"){
my $sample = $file;
$sample =~ s/.vcf//g;
$sampledb{$sample}++;
open(my $fh, $file) or die"";
while(<$fh>){
chomp;
next if(/#/);
my @data = split(/\s+/,$_);
my $key = $data[0]."_".$data[1];
$infordb{$key}->{$sample} = $data[4];
$refdb{$key} = $data[3];
}
close $fh;
}
print "scaf posi refN ";
foreach my $samp (sort keys %sampledb){
print "$samp ";
}
print "\n";
foreach my $key (sort keys %refdb){
my $altN;
my $refN = $refdb{$key};
print "$key $refN ";
foreach my $samp (sort keys %sampledb){
$altN = $infordb{$key}->{$samp} if(exists($infordb{$key}->{$samp}));
$altN = "-" if(!exists($infordb{$key}->{$samp}));
print "$altN ";
}
print "\n";
}