#!/usr/bin/perl -w # # Script para ler os dados de intensidade gerados pelo GenePix # Uso: # gpr_parser.pl nome-da-hibridizacao arquivo.gpr # use DBI; ($lamina,$filename) = ($ARGV[0],$ARGV[1]); unless (defined($lamina) && defined($filename)) { die(" use:\n gpr_parser.pl lamina filename\n"); } $dbh = DBI->connect('DBI:mysql:microarray','mentus','kafka') || die('Couldn\'t connect to MySQL server.'); open(GPR,$filename) || die("Not able to make filehandle: $!\n"); $cont = 0; while($inp = ) { chomp($inp); @vec = split(/\t/,$inp); if (@vec < 41) { if ($inp =~ m/Type=(.*)\"/) { $type = $1; } elsif ($inp =~ m/RatioFormulation=(.*)\"/) { $ratio_form = $1; } elsif ($inp =~ m/ImageOrigin=(\d+),\s*(\d+)/) { $x_origin = $1; $y_origin = $2; } elsif ($inp =~ m/PixelSize=(\d+)/) { $pixel_size = $1; } next; } elsif($cont == 0) { $cont = 1; undef2null($pixel_size,$x_origin,$y_origin,$type,$ratio_form); $q1 = "INSERT INTO lamina VALUES (\'$lamina\',$pixel_size,$x_origin,$y_origin,\'$type\',\'$ratio_form\')"; $sth = $dbh->prepare($q1); $sth->execute; $q2 = "CREATE TABLE $lamina (block_number INT(5),colum INT(5),row INT(5),x INT(10),y INT(10),dia INT(5),F635_Median INT(10),F635_Mean INT(10),F635_SD INT(10),B635_Median INT(10),B635_Mean INT(10),B635_SD INT(10),PMQ_B635_p_1SD INT(10),PMQ_B635_p_2SD INT(10),F635_PER_Sat INT(10),F532_Median INT(10),F532_Mean INT(10),F532_SD INT(10),B532_Median INT(10),B532_Mean INT(10),B532_SD INT(10),PMQ_B532_p_1SD REAL,PMQ_B532_p_2SD REAL,F532_PER_Sat REAL,Ratio_of_Medians REAL,Ratio_of_Means REAL,Median_of_Ratios REAL,Mean_of_Ratios REAL,Ratios_SD REAL,Rgn_Ratio REAL,Rgn_R_SQRD REAL,F_Pixels INT(10),B_Pixels INT(10),Sum_of_Medians INT(10),Sum_of_Means INT(10),Log_Ratio REAL,F635_Median_m_B635 INT(10),F532_Median_m_B532 INT(10),F635_Mean_m_B635 INT(10),F532_Mean_m_B532 INT(10),Flags INT(4),PRIMARY KEY(block_number,row,colum))"; $ctr = $dbh->prepare($q2); $ctr->execute; next; } for($i=0;$i<5;$i++) { $tmp[$i] = shift(@vec); } for($i=2;$i>-1;$i--) { unshift(@vec,$tmp[$i]); } foreach $value (@vec) { $value =~ s/Error/NULL/g; } $vec = join(',',@vec); $vec =~ s/\s+$//g; $q3 = "INSERT INTO $lamina VALUES($vec)"; $ins = $dbh->prepare($q3); $ins->execute; } sub undef2null { foreach (@_) { if (!defined($_)) { $_ = 'NULL'; } } }