annotate 14_june_18_intersect.snps.with.infos.pl @ 0:3edc7bb490d3 draft default tip

Uploaded
author elixir-it
date Thu, 08 Nov 2018 12:56:30 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
1 #!/usr/bin/perl -w
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
2 #
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
3
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
4 use strict;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
5
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
6
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
7 my $f1=shift; #varscan
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
8 my $f2=shift; #freebayes
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
9 my $f3=shift; #GATK
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
10 my $fout=shift;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
11 my %ALL=();
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
12 my %L=();
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
13 my %H=();
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
14
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
15 die("non trovo il file $f1") unless -e $f1;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
16 die("non trovo il file $f2") unless -e $f2;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
17 die("non trovo il file $f2") unless -e $f3;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
18
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
19 die ("non specificato il file di output") unless $fout;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
20
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
21
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
22 open(OUT,">$fout.common.snps.vcf");
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
23 open(UN,">$fout.unique.snps.vcf");
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
24
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
25 open(IN,$f1);
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
26 while(<IN>)
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
27 {
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
28 next if $_=~/^\#/;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
29 my ($chr,$st,$b1,$b2)=(split())[0,1,3,4];
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
30 my @all_vl=(split(/\t/));
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
31 next unless (length($b1)==length($b2));
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
32 next if ($b1=~/\./ || $b1=~/\-/ || $b2=~/\./ || $b2=~/\-/);
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
33 my @b1=(split('',$b1));
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
34 my @b2=(split('',$b2));
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
35 for (my $i=0;$i<=$#b1;$i++)
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
36 {
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
37 my $lb1=$b1[$i];
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
38 my $lb2=$b2[$i];
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
39 next if $lb1 eq $lb2;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
40 next if ($lb1=~/\./ || $lb1=~/\-/ || $lb2=~/\./ || $lb2=~/\-/ || $lb2=~/\,/);
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
41 my $lst=$st+$i;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
42 $all_vl[1]=$lst;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
43 $all_vl[3]=$lb1;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
44 $all_vl[4]=$lb2;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
45 my $J=join("\t",@all_vl);
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
46 $H{$chr}{$lst}{$lb1}{$lb2}++;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
47 $ALL{$chr}{$lst}{$lb1}{$lb2}=$J;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
48 push(@{$L{$chr}{$lst}{$lb1}{$lb2}},"VS");
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
49 }
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
50 }
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
51 close(IN);
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
52
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
53 open(IN,$f2);
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
54 while(<IN>)
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
55 {
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
56 next if $_=~/^\#/;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
57 my ($chr,$st,$b1,$b2)=(split())[0,1,3,4];
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
58 my @all_vl=(split(/\t/));
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
59 next unless (length($b1)==length($b2));
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
60 next if ($b1=~/\./ || $b1=~/\-/ || $b2=~/\./ || $b2=~/\-/);
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
61 my @b1=(split('',$b1));
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
62 my @b2=(split('',$b2));
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
63
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
64 for (my $i=0;$i<=$#b1;$i++)
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
65 {
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
66 my $lb1=$b1[$i];
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
67 my $lb2=$b2[$i];
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
68 next if $lb1 eq $lb2;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
69 next if ($lb1=~/\./ || $lb1=~/\-/ || $lb2=~/\./ || $lb2=~/\-/ || $lb2=~/\,/);
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
70 my $lst=$st+$i;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
71 $all_vl[1]=$lst;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
72 $all_vl[3]=$lb1;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
73 $all_vl[4]=$lb2;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
74 my $J=join("\t",@all_vl);
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
75 $H{$chr}{$lst}{$lb1}{$lb2}++;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
76 $ALL{$chr}{$lst}{$lb1}{$lb2}=$J;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
77 push(@{$L{$chr}{$lst}{$lb1}{$lb2}},"FB");
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
78 }
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
79
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
80 }
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
81 close(IN);
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
82
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
83 open(IN,$f3);
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
84 while(<IN>)
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
85 {
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
86 if ($_=~/^\#/)
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
87 {
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
88 print OUT if $_=~/fileformat/;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
89 print OUT if $_=~/contig/;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
90 print OUT if $_=~/CHROM/;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
91 print UN if $_=~/fileformat/;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
92 print UN if $_=~/contig/;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
93 print UN if $_=~/CHROM/;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
94 next;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
95 }
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
96 my ($chr,$st,$b1,$b2)=(split())[0,1,3,4];
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
97 my @all_vl=(split(/\t/));
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
98 next unless (length($b1)==length($b2));
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
99 next if ($b1=~/\./ || $b1=~/\-/ || $b2=~/\./ || $b2=~/\-/);
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
100 my @b1=(split('',$b1));
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
101 my @b2=(split('',$b2));
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
102
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
103 for (my $i=0;$i<=$#b1;$i++)
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
104 {
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
105 my $lb1=$b1[$i];
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
106 my $lb2=$b2[$i];
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
107 next if $lb1 eq $lb2;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
108 next if ($lb1=~/\./ || $lb1=~/\-/ || $lb2=~/\./ || $lb2=~/\-/ || $lb2=~/\,/);
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
109 my $lst=$st+$i;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
110 $all_vl[1]=$lst;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
111 $all_vl[3]=$lb1;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
112 $all_vl[4]=$lb2;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
113 my $J=join("\t",@all_vl);
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
114 $H{$chr}{$lst}{$lb1}{$lb2}++;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
115 $ALL{$chr}{$lst}{$lb1}{$lb2}=$J;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
116 push(@{$L{$chr}{$lst}{$lb1}{$lb2}},"GA");
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
117 }
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
118 }
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
119 close(IN);
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
120
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
121 foreach my $chr (sort keys %H)
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
122 {
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
123 foreach my $s (sort{$a<=>$b} keys %{$H{$chr}})
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
124 {
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
125 foreach my $b1 (keys %{$H{$chr}{$s}})
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
126 {
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
127 foreach my $b2 (keys %{$H{$chr}{$s}{$b1}})
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
128 {
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
129
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
130 my $vl=$H{$chr}{$s}{$b1}{$b2};
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
131 unless ($H{$chr}{$s}{$b1}{$b2})
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
132 {
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
133 warn("non trovo il numero di occorrenze di $chr $s $b1 $b2\n");
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
134 next;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
135 }
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
136 my $out_vl=$ALL{$chr}{$s}{$b1}{$b2};
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
137
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
138 unless ($ALL{$chr}{$s}{$b1}{$b2})
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
139 {
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
140 warn("non trovo le info di $chr $s $b1 $b2\n");
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
141 next;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
142 }
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
143 my @vls=(split(/\s+/,$out_vl));
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
144 my $comm=$vls[7];
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
145
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
146 if ($vl>=2)
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
147 {
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
148 my $mm=join("_",@{$L{$chr}{$s}{$b1}{$b2}});
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
149 my $comm2=$comm;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
150 $comm2.=";NM=$vl;LM=$mm";
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
151 $vls[7]=$comm2;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
152 my $out_vl=join("\t",@vls);
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
153 print OUT "$out_vl\n";
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
154
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
155 }else{
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
156 my $mm=$L{$chr}{$s}{$b1}{$b2}[0];
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
157 my $comm2=$comm;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
158 $comm2.=";NM=$vl;LM=$mm";
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
159 $vls[7]=$comm2;
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
160 my $out_vl=join("\t",@vls);
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
161 print UN "$out_vl\n";
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
162
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
163 }
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
164 }
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
165 }
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
166 }
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
167 }
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
168
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
169 #foreach $V (keys %V)
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
170 #{
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
171 # print "$V $V{$V}\n";
3edc7bb490d3 Uploaded
elixir-it
parents:
diff changeset
172 #}