#!/usr/bin/perl -w # # Script para ler um arquivo do tipo Gipo (ou GAL) com as descrições # de quais seqüências de cDNA estão em cada spot. # # Uso: gipo_parser.pl lamina gipo_file.txt # # 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(GIPO,$filename) || die("Not able to make filehandle: $!\n"); $q = "CREATE TABLE $lamina (block_number INT(5),block_row INT(5),block_column INT(5),row INT(5),colum INT(5),gene_id CHAR(8),description VARCHAR(150),ncbi VARCHAR(65),PRIMARY KEY(block_number,row,colum))"; $ctr = $dbh->prepare($q); $ctr->execute; while ($inp = ) { chomp($inp); @vec = split(/\t/,$inp); foreach $value (@vec) { if ($value =~ m/\t/) { warn('Suspicious GIPO. Parsing may be incorrect'); } $value =~ s/"+//g; if ($value eq '') { $value = 'NULL' } } $block_number = $vec[1]+($vec[0]-1)*4; unshift(@vec,$block_number); for ($i=5;$i<=7;$i++) { if ($vec[$i] =~ m/^\s+$/) { $vec[$i] = 'NULL'; } else { $vec[$i] =~ s/^\s+//; $vec[$i] =~ s/\s+$//; $vec[$i] =~ s/,/\\,/g; $vec[$i] =~ s/\(/\\(/g; $vec[$i] =~ s/\)/\\)/g; $vec[$i] =~ s/'/\\'/g; $vec[$i] = "\'$vec[$i]\'"; } } $vec = join(',',@vec); $q = "INSERT INTO $lamina VALUES($vec)"; #print $q . "\n"; $ins = $dbh->prepare($q); $ins->execute; }