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

Uploaded
author elixir-it
date Wed, 22 Jul 2020 19:20:30 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/old_version/optimizer_M.pl	Wed Jul 22 19:20:30 2020 +0000
@@ -0,0 +1,171 @@
+#!/usr/bin/perl -w
+use Cwd;
+use strict;
+
+my %arguments=
+(
+"fileR"=>"",		    #file: vcf file of affected individuals
+"fileC"=>"",		    #file: vcf file of unaffected individuals
+"ofile"=>"",		    #name: name of the output files
+"AD"=>"T",
+"XL"=>"F",		    #
+"disease_clinvar"=>[4,6],   #numeric mandadory, multiple values
+"score_AF"=>[2,4],          #numeric mandatory, multiple values
+"score_functional"=>[4,6],  #numeric mandatory, multiple values
+"score_NS"=>[2,4],          #numeric mandatory, multiple values
+"score_nIND"=>[2,4],        #numeric mandatory, multiple values
+"scoreeQTL"=>[2,4],         #numeric mandatory, multiple values
+"scoreG"=>[3,5],            #numeric  mandatory, multiple values
+"scoreI"=>[0.1..0.3],
+"disease"=>"",          #name   optional
+"similarD"=>"",         #file optional
+"lgenes"=>"",           #file optional
+"leQTL"=>"qfile",       #file   mandatory, but default value
+"keywords"=>"kfile",    #file   mandatory, but default value
+"effects"=>"efile",     #file   mandatory, but default value
+"ifile"=>"inter_Hs.file",
+"nind"=>5,
+"AF"=>0.0001
+);
+
+my @arguments=@ARGV;
+for (my $i=0;$i<=$#ARGV;$i+=2)
+{
+        my $act=$ARGV[$i];
+        $act=~s/-//g;
+        my $val=$ARGV[$i+1];
+        if (exists $arguments{$act})
+        {
+		unless ($val=~/\:/)
+		{
+                	$arguments{$act}=$val;
+		}else{
+			my ($s,$e)=(split(/\:/,$val));
+			my $increment= $s=~/\./ ? 0.1 : 1;
+			my @vls=();
+			for (my $I=$s;$I<=$e;$I+=$increment)
+			{
+				push(@vls,$I);
+			}
+			$arguments{$act}=\@vls;
+		}
+        }else{
+                warn("$act: unknown argument\n");
+                my @valid=keys %arguments;
+                warn("Valid arguments are @valid\n");
+                die("All those moments will be lost in time, like tears in rain.\n Time to die!\n");
+        }
+        #print "$act $val\n";
+}
+
+my %compose_ARG=
+(
+        "disease"=>1,          #name   optional
+        "similarD"=>1,         #file optional
+        "lgenes"=>1,           #file optional
+        "leQTL"=>1,       #file   mandatory, but default value
+        "keywords"=>1,    #file   mandatory, but default value
+        "effects"=>1,     #file
+	"AF"=>1,
+	"nind"=>1,
+	"AD"=>1,
+	"XL"=>1,
+	"ifile"=>1
+
+);
+
+my $dir=getcwd();
+my $add_string=" ";
+
+foreach my $a (keys %compose_ARG)
+{
+	$add_string.="-$a $arguments{$a} " if $arguments{$a} ne "";
+}
+
+
+my @DC=@{$arguments{"disease_clinvar"}};	#=>[2..8],   #numeric mandadory, but default value
+my @AF=@{$arguments{"score_AF"}};          #numeric mandatory, but default value
+my @FUN=@{$arguments{"score_functional"}};	#=>[2..8],  #numeric mandatory, but default value
+my @NS=@{$arguments{"score_NS"}};		#=>[2..8],          #numeric mandatory, but default value
+my @NI=@{$arguments{"score_nIND"}};	#=>[2..8],        #numeric mandatory, but default value
+my @Q=@{$arguments{"scoreeQTL"}};        	#numeric mandatory, but default value
+my @G=@{$arguments{"scoreG"}};		#=>[1..3],            #numeric  mandatory, but default value
+my @I=@{$arguments{"scoreI"}};
+
+my $Rfile=$arguments{"fileR"};
+my $Tfile=$arguments{"fileC"};
+my $Ofile=$arguments{"ofile"};
+
+#print "@DC\n @AF\n @FUN\n @NS\n @NI\n @Q\n @G\n @I\n";
+
+open(O,">$Ofile");
+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";
+
+
+my $commandR="perl $dir/score_complete_alt_M.pl -vcf $dir/$Rfile -ofile $dir/R.csv  -ovcfile $dir/R.vcf  $add_string";
+my $commandT="perl $dir/score_complete_alt_M.pl -vcf $dir/$Tfile -ofile $dir/T.csv  -ovcfile $dir/T.vcf  $add_string";
+my %ODATA=();
+
+foreach my $dc (@DC)
+{
+
+	foreach my $af (@AF)
+	{
+
+		foreach my $fun (@FUN)
+		{
+
+			foreach my $ns (@NS)
+			{
+
+				foreach my $ni (@NI)
+				{
+					
+
+					foreach my $Q (@Q)
+					{
+						foreach my $G (@G)
+						{
+							foreach my $I (@I)
+							{
+							$commandR.="-score_AF $af ";
+                					$commandT.="-score_AF $af ";
+							$commandR.="-score_functional $fun ";
+                        				$commandT.="-score_functional $fun ";
+							$commandR.="-score_NS $ns ";
+                                			$commandT.="-score_NS $ns ";
+							$commandR.="-score_nIND $ni ";
+                                        		$commandT.="-score_nIND $ni ";
+							$commandR.="-scoreeQTL $Q ";
+                                                	$commandT.="-scoreeQTL $Q ";
+							$commandR.="-disease_clinvar $dc ";
+        						$commandT.="-disease_clinvar $dc ";
+							$commandR.="-scoreG $G ";
+                                        		$commandT.="-scoreG $G ";
+							$commandR.="-scoreI $I ";
+                                                        $commandT.="-scoreI $I ";
+
+							system($commandR)==0||die("Non giro Rfile");
+							system($commandT)==0||die("Non giro Tfile");
+							$commandR="perl $dir/score_complete_alt_M.pl -vcf $dir/$Rfile -ofile $dir/R.csv  -ovcfile $dir/R.vcf  $add_string";
+							$commandT="perl $dir/score_complete_alt_M.pl -vcf $dir/$Tfile -ofile $dir/T.csv  -ovcfile $dir/T.vcf  $add_string";
+				my $r=`Rscript --vanilla $dir/wilcox.R $dir/R.csv $dir/T.csv`;
+							my $PV=(split(/\t/,$r))[3];
+							push(@{$ODATA{$PV}},"$dc\t$af\t$fun\t$ns\t$ni\t$Q\t$G\t$I\t$r\n");
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+}
+
+foreach my $O (sort {$a<=>$b} keys %ODATA)
+{
+	my @values=@{$ODATA{$O}};
+	foreach my $v (@values)
+	{
+		print O "$v";
+	}
+}