Probleme dans mon programme
Salut a tous,
J'ai un soucis avec mon programme Perl :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| open(TOTL,"Total.txt")||die "Probleme dans l'ouverture du fichier total";
open(ACCE,">AccGene.txt")||die "Probleme dans l'ecriture du fichier accession";
open(SSH,">TotalNimbleGenes.xls")||die "Probleme dans l'ecriture du spreadsheet";
print SSH "IDGene SeqGene IDSonde1 SeqSonde1 IDSonde2 SeqSonde2 IDSonde3 SeqSonde3\n";
my $clue=0;
my $chomp;
my $acc;
while(<TOTL>){
if($clue==1 && /^>/){
print SSH "$chomp ";
$clue=0;
$chomp="";
sonde();
}
if($clue==1){
$chomp.=$_;
chomp $chomp;
}
if(/Ug.(Ta#)([A-Z]{1}[0-9]{8})/){
$acc=$1.$2;
$ref=$2;
print ACCE "$acc\n";
print SSH "$acc ";
print "$2\n";
$clue=1;
}
}
sub sonde{
my $ind=0;
my $ligne;
open(SONL,"SondeNimbleGen.txt")||die "Probleme dans l'ouverture du fichier sonde";
while(<SONL>){
if($ind==1){
$ligne=$_;
chomp $ligne;
print SSH "$ligne ";
$ind=0;
}
if(/^>(.*$ref.*)$/){
print SSH "$1 ";
$ind=1;
}
}
close(SONL);
print SSH "\n";
} |
Il est sensé me récupérer les numéros d'accession dans un fichier fasta (exemple : >ligne de commentaire\n séquence) et de les traiter (peu d'importance j'ai eu l'occasion de tout testé et ça fonctionne).
Or mon programme saute une séquence sur deux.
Par exemple si le fichier est tel que:
>seq1
AGCT
>seq2
GCAT
>seq3
TTTT
alors le programme ne traite que seq1 et seq 3 ....
Le problème se situe dans la fonction (sonde) et plus particulièrement sur le while (dès que je met en commentaire mon programme me récupère toute les séquences).
Quelqu'un aurait-il une explication ?
Merci d'avance ^^