#!/usr/bin/perl -Tw use strict; use CGI; ########################################################################################################### ######################################DECLARACIO DE VARIABLES############################################## ########################################################################################################### my $formulari = new CGI; #my $sequencies= $formulari->param("sequencies"); # copiem el nom de fitxer associat al id fitxer my $nomfitxer = $formulari->param("sequencies"); # copiem el filehandle del fitxer associat al id fitxer my $fh_fitxer = $formulari->upload("sequencies"); my $nseq= $formulari->param("nseq"); #sequencies a analitzar en format FASTA my $patro=$formulari->param("patro"); #patro que hem de trobar a les sequencies # aixo ha d'anar per raons de seguretat, si no ho fiqueu, no us funcionara delete(@ENV{qw{IFS PATH ENV BASH_ENV}}); # aixo ens permet restringir el tamany dels fitxer que podem rebre fins a 512K $CGI::POST_MAX=524288; # COMEN-bÇA LA PAGINA WEB-A print "Content-type: text/html\n\n"; print "Identifiacio de motius:Resultats\n"; print "\n"; print "

RESULTATS EXPERIMENTALS

\n\n"; print "

Motiu cercat: $patro

\n\n"; my $primera_linia; my $i; my $j; my $seq_matriu; my $longprot; #longitut total de la proteina my $longprev; #lloc on comen-bça el motiu-A my $longmotiu; #longitut total del motiu my $longpost; #lloc on acaba el motiu my $nummatch; #nombre total de sequencies amb match my $numprotllista; #nombre total de sequencies al fitxer my $seq_parcial; my $posicio; my $totalmatch; #nombre total de match al fitxer my $desc; my $long; my @v; my @seq_matriu; #matriu on tenim descripcio de la sequencia a la 1a columna i la seq a la 2a columna ########################################################################################################## ##################################### OBERTURA D'ARXIUS ################################################ ########################################################################################################## #### ESPECIFIC PER CGI # eliminem el possible cami del sistema # de fitxers de l'ordinador remot $nomfitxer =~ s/.*[\/\\](.*)/$1/; print "

Nom del fitxer"; print " analitzat: $nomfitxer

\n\n\n"; print "

Al final de la llista s'indica el nombre de proteines amb match i el nombre total de match

\n\n"; # obrim un fitxer on escriure el contingut del # fitxer que ens han enviat if (!open(FH,"> /tmp/apache/fitxercopiataqui.txt")) { print "

no puc crear fitxer\n"; } # llegim linia a linia el fitxer que ens han # enviat, i escrivim les linies dins el fitxer # creat anteriorment while (<$fh_fitxer>) { print FH $_; #print $_; } close(FH); ##### # Comprovem que l'usuari ha introduit els dos arguments necessaris a la linia de comandes: el fitxer on estan les sequencies # en format FASTA i el motiu a trobar entre cometes #if (scalar(@ARGV)<2){ # print STDERR "USUARI: assegura't que has introduit el fitxer de sequencies i el motiu entre cometes \n"; # exit(1); #}; #$sequencies=$ARGV[0]; #$patro=$ARGV[1]; # obrim l'arxiu des del shell i el passem al programa #open (SEQ,"<$sequencies") || do { # print STDERR "No s'ha trobat l'arxiu que conte les sequencies\n"; # exit(1); #}; # obrim un arxiu per escriure els resultats" #open(OUTFILE, "> outfile.txt"); ########################################################################################################### ############################# PREPARACIO DE LA MATRIU DE SEQUENCIES ##################################### ########################################################################################################### # Crearem una matriu de sequencies a partir de l'arxiu en format fASTA (a $sequencies) per tal de tenir: # - Primera columna: identificador de la sequencia a [$i][0] # - Segona columna: string (sequencia continua) a [$i][1] open(FH,"'; $primera_linia= ; $i= 0; while () { #print "

$_"; chomp; @v= split (/\n/,$_); $seq_matriu [$i][0]= $v[0]; $j=1; $seq_matriu [$i][1]= ''; while ($j$seq_matriu[$i][1]"; if ($seq_matriu[$i][1]=~m/($patro)/i){ $longprot =length ($seq_matriu [$i][1]); $posicio=0; while ($posicio<$longprot){ $seq_parcial= substr($seq_matriu[$i][1],$posicio, 28); $longprev = index($seq_matriu[$i][1],$seq_parcial); if($seq_parcial=~m/^($patro)/i){ print "" ; $desc=$seq_matriu [$i][0]; #print OUTFILE $seq_matriu [$i][0] . "\t"; print ""; #print OUTFILE $1 . "\t"; print ""; #print OUTFILE $longprev . "\t"; print ""; $longmotiu=length $1; $longpost=$longprev+$longmotiu; #print OUTFILE $longpost . "\t"; print ""; #print OUTFILE $long . "\n"; print ""; print "
$desc" . "\t $1" . "\t $longprev" . "\t $longpost" . "\t $longprot" . "\t
" ; $totalmatch=$totalmatch+1; } $posicio=$posicio+1; } $nummatch=$nummatch+1; } $numprotllista=$numprotllista+1; $i=$i+1; } #print OUTFILE "Nombre total de sequencies amb motiu: $nummatch de $numprotllista\n"; #print OUTFILE "Nombre total de motius l'arxiu: $totalmatch\n"; #close OUTFILE; print "

Nombre total de proteines amb match: $nummatch de $numprotllista\n

" ; print "

Nombre total de match a l'arxiu: $totalmatch\n

"; print "\n"; #tanquem el cos i el fitxer HTML print "\n\n"; # esborrem el fitxer creat temporalment unlink("/tmp/apache/fitxercopiataqui.txt");