Bonjour à tous.
Quand je lance le script ci dessous sur un fichier test (4,0K), tout se passe bien. En revanche, lorsque je le lance sur mon fichier de 102M, il m'est indiqué après quelques minutes "processus arrêté", est ce que cela vient de mon script ?

Je cherche en fait à supprimer le premier nucleotide puis le second puis le troisième etc jusqu'a ce que ma sequence ait une longueur > à l'entier $int , par exemple, ici $int = 20 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
>seq
CATCTGGTATCTGTTGGGTACATCC 
>seq_nb1
ATCTGGTATCTGTTGGGTACATCC 
>seq_nb2
TCTGGTATCTGTTGGGTACATCC 
>seq_nb3
CTGGTATCTGTTGGGTACATCC 
>seq_nb4
TGGTATCTGTTGGGTACATCC 
>seq_nb5
GGTATCTGTTGGGTACATCC
j'ai donc écrit ce script:
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
#!/usr/bin/perl
use strict;
use warnings;
use Carp qw(confess);
use Getopt::Long;
use Bio::SeqIO;
 
my ($fasta_file,$out_file);
my ($int,$cut,$len);
my (%hash,%dico);
 
GetOptions("fasta=s" => \$fasta_file,"seed=i" => \$int ,"out=s" => \$out_file); 
 
 
#open (OUT, ">"."$input"."_"."$number".".fasta") or die "Cannot open outfile!";
 
 
my $in = Bio::SeqIO->new( -file => $fasta_file, '-format' => 'Fasta' );
open(my $out,'>',$out_file) or die "$out_file : $!\n\n";
 
while ( my $seq = $in->next_seq()){
	my $id = $seq->primary_id ;
	my $sequence = $seq->seq ;
	$len = $seq->length();
	my $count = 0;
	while($len >= $int){
		$cut = substr($sequence,$count);
		push(@{$dico{$id}->{'sequence'}}, $cut);
		$len--;
		$count++;
 
 
	}
 
}
 
foreach my $data (keys(%dico)){
	my $i=0;
	foreach my $seq (@{$dico{$data}->{'sequence'}}){
		print {$out} "$data"."_nb$i"."\n$seq\n";
		$i++;
	}
}
Je souhaiterai savoir s'il y a unproblème dans mon script ?
Merci d'avance,
Bonne journée à tous