Salut a tous,

J'ai un soucis avec mon programme Perl :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ^^