annotate old_version/optimizer_M.pl @ 2:6e4eb4856874 draft

Uploaded
author elixir-it
date Wed, 22 Jul 2020 19:20:30 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
1 #!/usr/bin/perl -w
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
2 use Cwd;
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
3 use strict;
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
4
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
5 my %arguments=
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
6 (
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
7 "fileR"=>"", #file: vcf file of affected individuals
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
8 "fileC"=>"", #file: vcf file of unaffected individuals
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
9 "ofile"=>"", #name: name of the output files
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
10 "AD"=>"T",
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
11 "XL"=>"F", #
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
12 "disease_clinvar"=>[4,6], #numeric mandadory, multiple values
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
13 "score_AF"=>[2,4], #numeric mandatory, multiple values
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
14 "score_functional"=>[4,6], #numeric mandatory, multiple values
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
15 "score_NS"=>[2,4], #numeric mandatory, multiple values
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
16 "score_nIND"=>[2,4], #numeric mandatory, multiple values
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
17 "scoreeQTL"=>[2,4], #numeric mandatory, multiple values
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
18 "scoreG"=>[3,5], #numeric mandatory, multiple values
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
19 "scoreI"=>[0.1..0.3],
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
20 "disease"=>"", #name optional
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
21 "similarD"=>"", #file optional
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
22 "lgenes"=>"", #file optional
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
23 "leQTL"=>"qfile", #file mandatory, but default value
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
24 "keywords"=>"kfile", #file mandatory, but default value
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
25 "effects"=>"efile", #file mandatory, but default value
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
26 "ifile"=>"inter_Hs.file",
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
27 "nind"=>5,
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
28 "AF"=>0.0001
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
29 );
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
30
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
31 my @arguments=@ARGV;
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
32 for (my $i=0;$i<=$#ARGV;$i+=2)
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
33 {
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
34 my $act=$ARGV[$i];
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
35 $act=~s/-//g;
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
36 my $val=$ARGV[$i+1];
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
37 if (exists $arguments{$act})
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
38 {
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
39 unless ($val=~/\:/)
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
40 {
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
41 $arguments{$act}=$val;
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
42 }else{
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
43 my ($s,$e)=(split(/\:/,$val));
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
44 my $increment= $s=~/\./ ? 0.1 : 1;
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
45 my @vls=();
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
46 for (my $I=$s;$I<=$e;$I+=$increment)
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
47 {
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
48 push(@vls,$I);
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
49 }
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
50 $arguments{$act}=\@vls;
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
51 }
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
52 }else{
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
53 warn("$act: unknown argument\n");
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
54 my @valid=keys %arguments;
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
55 warn("Valid arguments are @valid\n");
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
56 die("All those moments will be lost in time, like tears in rain.\n Time to die!\n");
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
57 }
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
58 #print "$act $val\n";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
59 }
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
60
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
61 my %compose_ARG=
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
62 (
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
63 "disease"=>1, #name optional
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
64 "similarD"=>1, #file optional
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
65 "lgenes"=>1, #file optional
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
66 "leQTL"=>1, #file mandatory, but default value
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
67 "keywords"=>1, #file mandatory, but default value
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
68 "effects"=>1, #file
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
69 "AF"=>1,
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
70 "nind"=>1,
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
71 "AD"=>1,
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
72 "XL"=>1,
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
73 "ifile"=>1
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
74
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
75 );
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
76
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
77 my $dir=getcwd();
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
78 my $add_string=" ";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
79
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
80 foreach my $a (keys %compose_ARG)
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
81 {
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
82 $add_string.="-$a $arguments{$a} " if $arguments{$a} ne "";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
83 }
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
84
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
85
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
86 my @DC=@{$arguments{"disease_clinvar"}}; #=>[2..8], #numeric mandadory, but default value
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
87 my @AF=@{$arguments{"score_AF"}}; #numeric mandatory, but default value
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
88 my @FUN=@{$arguments{"score_functional"}}; #=>[2..8], #numeric mandatory, but default value
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
89 my @NS=@{$arguments{"score_NS"}}; #=>[2..8], #numeric mandatory, but default value
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
90 my @NI=@{$arguments{"score_nIND"}}; #=>[2..8], #numeric mandatory, but default value
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
91 my @Q=@{$arguments{"scoreeQTL"}}; #numeric mandatory, but default value
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
92 my @G=@{$arguments{"scoreG"}}; #=>[1..3], #numeric mandatory, but default value
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
93 my @I=@{$arguments{"scoreI"}};
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
94
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
95 my $Rfile=$arguments{"fileR"};
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
96 my $Tfile=$arguments{"fileC"};
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
97 my $Ofile=$arguments{"ofile"};
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
98
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
99 #print "@DC\n @AF\n @FUN\n @NS\n @NI\n @Q\n @G\n @I\n";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
100
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
101 open(O,">$Ofile");
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
102 print O "score_DB\tscore_RV\tscore_FE\tscore_NS\tscore_OR\tscore_eQ\tscore_AD\tScore_DG\tCut_Off\tPos_Affected\tPos_Healthy\tPvalue\tFold_change\n";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
103
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
104
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
105 my $commandR="perl $dir/score_complete_alt_M.pl -vcf $dir/$Rfile -ofile $dir/R.csv -ovcfile $dir/R.vcf $add_string";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
106 my $commandT="perl $dir/score_complete_alt_M.pl -vcf $dir/$Tfile -ofile $dir/T.csv -ovcfile $dir/T.vcf $add_string";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
107 my %ODATA=();
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
108
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
109 foreach my $dc (@DC)
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
110 {
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
111
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
112 foreach my $af (@AF)
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
113 {
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
114
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
115 foreach my $fun (@FUN)
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
116 {
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
117
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
118 foreach my $ns (@NS)
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
119 {
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
120
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
121 foreach my $ni (@NI)
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
122 {
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
123
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
124
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
125 foreach my $Q (@Q)
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
126 {
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
127 foreach my $G (@G)
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
128 {
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
129 foreach my $I (@I)
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
130 {
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
131 $commandR.="-score_AF $af ";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
132 $commandT.="-score_AF $af ";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
133 $commandR.="-score_functional $fun ";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
134 $commandT.="-score_functional $fun ";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
135 $commandR.="-score_NS $ns ";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
136 $commandT.="-score_NS $ns ";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
137 $commandR.="-score_nIND $ni ";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
138 $commandT.="-score_nIND $ni ";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
139 $commandR.="-scoreeQTL $Q ";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
140 $commandT.="-scoreeQTL $Q ";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
141 $commandR.="-disease_clinvar $dc ";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
142 $commandT.="-disease_clinvar $dc ";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
143 $commandR.="-scoreG $G ";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
144 $commandT.="-scoreG $G ";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
145 $commandR.="-scoreI $I ";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
146 $commandT.="-scoreI $I ";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
147
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
148 system($commandR)==0||die("Non giro Rfile");
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
149 system($commandT)==0||die("Non giro Tfile");
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
150 $commandR="perl $dir/score_complete_alt_M.pl -vcf $dir/$Rfile -ofile $dir/R.csv -ovcfile $dir/R.vcf $add_string";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
151 $commandT="perl $dir/score_complete_alt_M.pl -vcf $dir/$Tfile -ofile $dir/T.csv -ovcfile $dir/T.vcf $add_string";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
152 my $r=`Rscript --vanilla $dir/wilcox.R $dir/R.csv $dir/T.csv`;
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
153 my $PV=(split(/\t/,$r))[3];
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
154 push(@{$ODATA{$PV}},"$dc\t$af\t$fun\t$ns\t$ni\t$Q\t$G\t$I\t$r\n");
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
155 }
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
156 }
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
157 }
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
158 }
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
159 }
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
160 }
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
161 }
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
162 }
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
163
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
164 foreach my $O (sort {$a<=>$b} keys %ODATA)
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
165 {
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
166 my @values=@{$ODATA{$O}};
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
167 foreach my $v (@values)
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
168 {
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
169 print O "$v";
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
170 }
6e4eb4856874 Uploaded
elixir-it
parents:
diff changeset
171 }