Ver Mensaje Individual
  #5 (permalink)  
Antiguo 30/03/2009, 15:21
Biokari
 
Fecha de Ingreso: marzo-2009
Mensajes: 23
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Ayuda en Perl

si, si lo hice, al principio

Eso si que lo del codigo de matrices no esta en este codigo, pero se supone que lo pongo despues de mi variable $results

Código:
#!/usr/bin/perl -w

use strict;

#declaracion de variables
my ($file, $data, $fastaHeader, $nameSeq, $Seq, $cpt, $substitute, $resultat, $fileName, @data, @substitute, $col, $numCols, @rowMatrix,@matrix, $numRows, $row, @resultat, $rowMatrix );
#fonction pour effacer les ancien fichier results que se stocke dans un document txt
sub deleteResults {
        $file="Results.txt";
        unlink ($file);
}

#fonction pour ouvrir le fichier txt
sub openFile {
        open FD, "$fileName" or die "File not found\n";
        @data=<FD>;
        close FD;
}

#fonction pour ecrir dand mon fichier texte le nom de la sequence
sub changeData {
        foreach $data (@data) { #pour un valeur de @data le garde dans $data
                if ($data =~ /(>.*)/) { #si debute avec >, il prend le signe et tout ce que il y a derrier
                        $fastaHeader=$1; #garder dans ma variable $fastaHeader
                        print $fastaHeader;#print dans la console
                        open (FH, ">>Results.txt"); #creer le fichier result, si il n'exsite pas (ça depend de la fonction deleteResult)
                        print FH $fastaHeader;#print dans le fichier
                        close FH;
                }
                if ($data=~ />(.*)/) { # ici je prend le titre sans > pour l'afficher dans mon fichier txt dans la position de sequences
                        $nameSeq=$1;
                }
                if ($data =~ /([atgc-]*)/) { #je cherche les sequences
                        $Seq=$1; 
                        print "$Seq\t"; #print dans la console
                        open (FH, ">>Results.txt");#ecrit dans le fichier results,
                        print FH "$Seq\t"; #print les sequences dans le fichier et le metre desous le titre
                        close FH;
                }
               
                $cpt=0;# compteur pour les sequences inicialise a cero
                @substitute=split(//, $Seq);#je prend $seq et je le split dans mon tableau $substitute, les // serve pour prendre que les sequences et pas des autres signes
                foreach $substitute (@substitute){ #pour chaque element $substitute du tableau @substitute...
                        if ($substitute =~ /([atgc])/) { #si cet element correspond a un atgc...
                                $cpt+=1; #je comence mon compteur a partir de 1 et les suivant 1+1=2+1=3+1...
                                $resultat=$nameSeq."-".$cpt."; "; #mon resultat = nom de la sequence+un tiré+le compteur+";" comme ça "sequence1-1;"
                        }
                        else {
                                if ($substitute =~ /([-])/) { #alors si trouve un gap
                                        $resultat=$nameSeq."-{".$cpt."-".($cpt+1)."}; "; #mon resultat = nom sequence+un tiré+(compteur+tiré+competeur+1)+";".
                                }       
                        }
                       
                        print $resultat;
                        open (FH, ">>Results.txt");# ecrit dans le fichier resultat les $resultat
                        print FH "$resultat\t"; #afiche dans le fichier texte
                        close FH;
                }
                print "\n";#ceci c'est pour afichier la deuxime sequence a la deuxieme ligne apres avoir fait la deuxieme boucle
                open (FH, ">>Results.txt");
                print FH "\n";
                close FH;
        }
       
}              
       
       
&deleteResults();

$fileName="Alignement1.txt";
&openFile();
&changeData();