annotate optimizer_genetic.pl @ 0:4c6529d120c3 draft

Uploaded
author elixir-it
date Tue, 09 Jun 2020 16:07:19 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
1 #!/usr/bin/perl -w
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
2 use Cwd;
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
3 use strict;
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
4 #scoreN=c("-disease_clinvar","-score_AF","-score_functional",
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
5 # "-score_NS","-score_nIND","-scoreeQTL",
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
6 # "-scoreG","-scoreT","-scoreM",
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
7 # "-scoreR","-scoreSP","-scoreGW")
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
8
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
9
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
10 my %arguments=
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
11 (
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
12 "fileR"=>"", #file: vcf file of affected individuals
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
13 "fileC"=>"", #file: vcf file of unaffected individuals
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
14 "ofile"=>"", #name: name of the output files
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
15 "AD"=>"T",
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
16 "XL"=>"F", #
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
17 "disease_clinvar"=>[1,10], #numeric mandadory, multiple values
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
18 "score_AF"=>[1,10], #numeric mandatory, multiple values
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
19 "score_functional"=>[1,10], #numeric mandatory, multiple values
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
20 "score_NS"=>[1,10], #numeric mandatory, multiple values
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
21 "score_nIND"=>[1,10], #numeric mandatory, multiple values
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
22 "scoreeQTL"=>[1,10], #numeric mandatory, multiple values
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
23 "scoreG"=>[1,10], #numeric mandatory, multiple values
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
24 "scoreT"=>[1,10],
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
25 "scoreM"=>[1,10],
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
26 "scoreR"=>[1,10],
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
27 "scoreSP"=>[1,10],
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
28 "scoreGW"=>[1,10],
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
29 "disease"=>"", #name optional
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
30 "similarD"=>"", #file optional
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
31 "lgenes"=>"", #file optional
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
32 "leQTL"=>"qfile", #file mandatory, but default value
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
33 "keywords"=>"kfile", #file mandatory, but default value
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
34 "effects"=>"efile", #file mandatory, but default value
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
35 "nind"=>5,
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
36 "AF"=>0.0001
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
37 );
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
38
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
39 my @arguments=@ARGV;
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
40 for (my $i=0;$i<=$#ARGV;$i+=2)
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
41 {
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
42 my $act=$ARGV[$i];
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
43 $act=~s/-//g;
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
44 my $val=$ARGV[$i+1];
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
45 if (exists $arguments{$act})
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
46 {
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
47 unless ($val=~/\:/)
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
48 {
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
49 $arguments{$act}=$val;
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
50 }else{
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
51 my ($s,$e)=(split(/\:/,$val));
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
52 $arguments{$act}=[$s,$e];
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
53 }
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
54 }else{
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
55 warn("$act: unknown argument\n");
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
56 my @valid=keys %arguments;
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
57 warn("Valid arguments are @valid\n");
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
58 die("All those moments will be lost in time, like tears in rain.\n Time to die!\n");
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
59 }
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
60 #print "$act $val\n";
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
61 }
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
62
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
63 my %compose_ARG=
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
64 (
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
65 "disease"=>1, #name optional
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
66 "similarD"=>1, #file optional
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
67 "lgenes"=>1, #file optional
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
68 "leQTL"=>1, #file mandatory, but default value
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
69 "keywords"=>1, #file mandatory, but default value
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
70 "effects"=>1, #file
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
71 "AF"=>1,
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
72 "nind"=>1,
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
73 "AD"=>1,
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
74 "XL"=>1,
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
75 );
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
76
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
77 my $dir=getcwd();
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
78 my $add_string=" ";
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
79
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
80 foreach my $a (keys %compose_ARG)
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
81 {
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
82 $add_string.="-$a $arguments{$a} " if $arguments{$a} ne "";
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
83 }
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
84
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
85
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
86 my @DC=@{$arguments{"disease_clinvar"}};#=>[2..8], #numeric mandadory, but default value
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
87 my @AF=@{$arguments{"score_AF"}}; #numeric mandatory, but default value
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
88 my @FUN=@{$arguments{"score_functional"}};#=>[2..8], #numeric mandatory, but default value
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
89 my @NS=@{$arguments{"score_NS"}};#=>[2..8], #numeric mandatory, but default value
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
90 my @NI=@{$arguments{"score_nIND"}};#=>[2..8], #numeric mandatory, but default value
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
91 my @Q=@{$arguments{"scoreeQTL"}}; #numeric mandatory, but default value
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
92 my @G=@{$arguments{"scoreG"}}; #=>[1..3], #numeric mandatory, but default value
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
93 my @T=@{$arguments{"scoreT"}};
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
94 my @M=@{$arguments{"scoreM"}};
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
95 my @R=@{$arguments{"scoreR"}};
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
96 my @SP=@{$arguments{"scoreSP"}};
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
97 my @GW=@{$arguments{"scoreGW"}};
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
98
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
99 my $Rfile=$arguments{"fileR"};
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
100 my $Cfile=$arguments{"fileC"};
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
101 my $Ofile=$arguments{"ofile"};
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
102
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
103 my $minVals="$DC[0] $AF[0] $FUN[0] $NS[0] $NI[0] $Q[0] $G[0] $T[0] $M[0] $R[0] $SP[0] $GW[0]";
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
104 my $maxVals="$DC[1] $AF[1] $FUN[1] $NS[1] $NI[1] $Q[1] $G[1] $T[1] $M[1] $R[1] $SP[1] $GW[1]";
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
105
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
106 system("Rscript --vanilla $dir/GENEO_VINYL.R $Rfile $Cfile \"$add_string\" \"$minVals\" \"$maxVals\" $Ofile.tmp")==0||die("no optimization");
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
107
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
108 system("(head -n 1 $Ofile.tmp && tail -n +1 $Ofile.tmp | sort -nk 19 -r) > $Ofile")==0||die("no sort");
4c6529d120c3 Uploaded
elixir-it
parents:
diff changeset
109