Bonjour à tous,

Le script ci dessous fonctionne très bien lorsque je l'applique à un exemple :
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
48
49
50
51
52
 
#!/usr/bin/perl
#	Input file: a fasta file
#	Output file: a unique fasta file
#	Command line: perl test.pl infile.fasta
 
use strict;
use warnings;
#read the file into a hash
my %seq;
my $title;
my $infile=shift or die "give me a infile\n";
open (IN,"$infile");
while (<IN>){
	$_=~s/\n//;
	$_=~s/\r//;
	if ($_=~/>/){
		$title=$_;
		$title=~s/>//;
	}
	else{
		$seq{$_}=$title;
	}
}
close IN;
print "bonjour";
#remove the abundant sequences
my @seq=keys (%seq);
my @uniqueseq;
my $find=0;
foreach (@seq){
	$find=0;
	my $seq=uc($_); #uppercase (retourne la chaine en majuscule)
	foreach (@uniqueseq){
		if ($seq=~m/$_/){
			$_=$seq;#replace with longer seq
			$find=1;
		}
		if ($_=~/$seq/){
			$find=1;
		}
	}
	if ($find==0){
		push @uniqueseq,$seq;
	}
}
#outout the final result
open (OUT,">output.fasta");
foreach (@uniqueseq){
	print OUT ">$seq{$_}\n$_\n";
}
close OUT;
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
>dme_pi_0_22_21
TACAGGTGAAAAACATAGCCAG
>dme_pi_1_23_77
TCCACAACGATGGAAGATGATGA
>dme_pi_2_24_10
CCAGGGCTAGCCCAAGATGTTGCT
>dme_pi_3_25_1
GACGACAAGGGATTGGCATTGTTGG
>dme_pi_4_28_1
TCTGAGAAGTCAGCCCTCTCCACGACCG
>dme_pi_5_26_1
CATCTATCACCAGCATAAGCGGTCTT
>dme_pi_6_24_1
CACTGTTCTTGCAAGACGCAGCTG
>dme_pi_7_25_1
TGGGAACAACGCGTGTTGTTGGCCC
>dme_pi_8_27_1
TATGGACGGACTCTAAGACGGTGCTGA
>dme_pi_9_25_2
TTGCAGCCACTCTGGTCCGTGCCAC
En revanche, dès que je l'applique à ce fichier : http://filez.univmed.fr/download.php?ad=7987f4zJuw
J'obtiens le message d'erreur suivant en arrêtant le programme prématurément :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
perl remove_redondance.pl fasta.fa
Can't coerce UNKNOWN to string in iter at remove_redondance.pl line 34.
Use of uninitialized value $seq in pattern match (m//) at remove_redondance.pl l
ine 34.
Use of uninitialized value $seq in regexp compilation at remove_redondance.pl li
ne 38.
Use of uninitialized value $_ in pattern match (m//) at remove_redondance.pl lin
e 38.
panic: pp_iter at remove_redondance.pl line 38.
bonjour
Je ne comprends pas le problème, quelqu'un pourrait m'aider ?
Merci d'avance, et bonne journée