annotate makeToM.pl @ 1:460883beb10c draft default tip

Uploaded
author elixir-it
date Wed, 15 Jul 2020 07:55:07 +0000
parents 0011da72f65a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
1 use strict;
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
2 use Cwd qw(cwd);
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
3
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
4
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
5 my $file_aff=shift;
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
6 my $file_cont=shift;
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
7 my $ofile=shift;
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
8
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
9 my $dir=cwd;
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
10
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
11 open(O,">$ofile.tmp");
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
12 my %Final_data=();
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
13 my @ids=();
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
14
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
15
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
16
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
17 my $ND=populate($file_aff);
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
18 my $NH=populate($file_cont);
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
19
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
20 my $head=join("\t",@ids);
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
21 print O "\t$head\n";
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
22 foreach my $gene (sort keys %Final_data)
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
23 {
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
24 print O "$gene\t";
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
25 foreach (my $j=0;$j<=$#ids;$j++)
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
26 {
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
27 my $individual=$ids[$j];
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
28 my $SCORE=$Final_data{$gene}{$individual} ? $Final_data{$gene}{$individual} : 0;
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
29 if ($j==$#ids)
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
30 {
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
31 print O "$SCORE\n";
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
32 }else{
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
33 print O "$SCORE\t";
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
34 }
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
35 }
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
36 }
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
37
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
38 #print "Rscript --vanilla $dir/PCA.R $ofile $ND $NH $ofile.png\n";
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
39 system ("Rscript --vanilla $dir/PCA.R $ofile.tmp $ND $NH $ofile")==0||die($!);
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
40
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
41 sub populate
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
42 {
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
43 my $file=$_[0];
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
44 open(IN,$file);
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
45 my @P=();
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
46 my $N=0;
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
47 while(<IN>)
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
48 {
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
49 if ($_=~/^#CHROM/)
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
50 {
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
51 my ($chr,$pos,$id,$ref,$alt,$qual,$filter,$info,$format,@Pids)=(split());
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
52 foreach my $P (@Pids)
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
53 {
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
54 push(@ids,$P);
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
55 push(@P,$P);
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
56 $N++;
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
57 }
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
58
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
59 }else{
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
60 my ($chr,$pos,$id,$ref,$alt,$qual,$filter,$info,$format,@data)=(split());
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
61 my @infos=split(/\;/,$info);
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
62 my $gene=".";
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
63 my $score=0;
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
64 foreach my $i (@infos)
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
65 {
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
66 if ($i=~/Gene.refGene/)
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
67 {
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
68 $gene=(split(/\=/,$i))[1];
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
69 }elsif ($i=~/VINYL_score/){
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
70 $score=(split(/\=/,$i))[1];
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
71 }
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
72 }
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
73 next if $gene eq ".";
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
74 foreach (my $j=0;$j<=$#data;$j++)
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
75 {
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
76 my $individual=$P[$j];
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
77 my $call=$data[$j];
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
78 next if $call eq "." || $call eq "0|0";
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
79 if ($Final_data{$gene}{$individual})
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
80 {
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
81 $Final_data{$gene}{$individual}=$score if $score>$Final_data{$gene}{$individual}
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
82 }else{
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
83 $Final_data{$gene}{$individual}=$score;
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
84 }
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
85
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
86 }
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
87 }
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
88 }
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
89 return($N);
0011da72f65a Uploaded
elixir-it
parents:
diff changeset
90 }