30/03/2009, 15:21
|
| | 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();
|