parcours d'un tableau et suppression d'élements
Bonjour à tous,
J'ai un problème que je ne parviens pas à résoudre.
J'ai un fichier qui ressemble à ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11
| AAAACCCGAAACCGTTTAGCTGT
AAAAACCCGAAACCGTTTAGCTGT
AAAACCCGAAACCGTTTAGCTGTT
AAAACCCGAAACCGTTTAGCTGTTC
AAAACCCGAAACCGTTTAGCTGTTT
AAAACCCGAAACCGTTTAGCTGTTCT
AGAAAAACCCGAAACCGTTTAGCTGT
AAAACCCGAAACCGTTTAGCTGTTCTC
AAAACCCGAAACCGTTTAGCTGTTCTCC
AAAACCCGAAACCGTTTAGCTGTTCTCCG
ATAACCCGAAACCGTTTAGCTGTTCTCCG |
Tous les séquences sont rangées par taille et par ordre alphabétique dans mon fichier.
Je souhaite supprimer la redondance en supprimant toutes les séquences contenant entièrement une autre séquences (le début doit être identique )par exemple :
Par exemple, pour la première séquence :
Code:
AAAACCCGAAACCGTTTAGCTGT
j'ai toutes ces séquences :
Code:
1 2 3 4 5 6 7
| AAAACCCGAAACCGTTTAGCTGTT
AAAACCCGAAACCGTTTAGCTGTTC
AAAACCCGAAACCGTTTAGCTGTTT
AAAACCCGAAACCGTTTAGCTGTTCT
AAAACCCGAAACCGTTTAGCTGTTCTC
AAAACCCGAAACCGTTTAGCTGTTCTCC
AAAACCCGAAACCGTTTAGCTGTTCTCCG |
Mais je ne souhaite garder que
Code:
AAAACCCGAAACCGTTTAGCTGT
puisque toutes les autres séquences commencent par cette séquence.
A la fin, j'aimerai avoir :
Code:
1 2 3 4
| AAAACCCGAAACCGTTTAGCTGT
AAAAACCCGAAACCGTTTAGCTGT
AGAAAAACCCGAAACCGTTTAGCTGT
ATAACCCGAAACCGTTTAGCTGTTCTCCG |
J'ai donc écris ce script 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
| my ($file_file,$out_file);
my (%hash,%dico);
my (@results,@sort_all_seq,@tmp);
GetOptions("file=s" => \$file_file);
open(my $file,'<',$file_file) or die "$file_file : $!\n\n";
while(<$file>){
chomp;
push(@sort_all_seq,$_);
}
print "seq in array : OK !\n";
my $i=0;
foreach my $value(@sort_all_seq){
push(@tmp,$value);
my @dix = grep { $sort_all_seq[$_] =~ m/^$value/ } 0..$#sort_all_seq ;
push(@tmp,$value) if(scalar(@dix)>1);
my $o = 0;
foreach my $val (@dix) {
splice (@sort_all_seq,$val-$o,1);
$o++;
}
$i++;
}
print "tmp : @tmp\n"; |
qui me retourne :
Code:
1 2 3
| AAAACCCGAAACCGTTTAGCTGT
AAAACCCGAAACCGTTTAGCTGT
AGAAAAACCCGAAACCGTTTAGCTGT |
Je pense que cela vient du fait que je modifie à chaque fois mon tableau @sort_all_seq.
Auriez vous une idée pour résoudre mon problème ?
Merci d'avance