J'ai écrit le script suivant pour rechercher un motif (sous-chaîne) dans une séquence de protéines (chaînes). Je suis débutant et écrire cela a été difficile pour moi. J'ai deux questions concernant la même chose: 1. Erreurs: Le script suivant a quelques erreurs. Je suis là depuis assez longtemps maintenant mais n'ai pas compris quoi et pourquoi? 2. Le script suivant a été écrit pour rechercher un motif (sous-chaîne) dans des séquences de protéines (chaînes). Ma tâche suivante consiste à rechercher de multiples motifs dans un ordre spécifique (ex: motif1 motif de motif2 3 motif4 cet ordre ne peut pas être changé) dans les mêmes séquences de protéines (chaînes)Recherche de motif dans la séquence protéique?
use strict;
use warnings;
my @file_data=();
my $motif ='';
my $protein_seq='';
my $h= '[VLIM]';
my $s= '[AG]';
my $x= '[ARNDCEQGHILKMFPSTWYV]';
my $regexp = "($h){4}D($x){4}D"; #motif to be searched is hhhhDxxxxD
my @locations=();
@file_data= get_file_data("seq.txt");
$protein_seq= extract_sequence(@file_data);
#searching for a motif hhhhDxxxxD in each protein sequence in the give file
foreach my $line(@file_data){
if ($motif=~ /$regexp/){
print "found motif \n\n";
}
else {
print "not found \n\n";
}
}
#recording the location/position of motif to be outputed
@locations= match_position($regexp,$seq);
if (@locations){
print "Searching for motifs $regexp \n";
print "Catalytic site is at location:\n";
}
else{
print "motif not found \n\n";
}
exit;
sub get_file_data{
my ($filename)[email protected]_;
use strict;
use warnings;
my $sequence='';
foreach my $line(@file_data){
if ($line=~ /^\s*$/){
next;
}
elsif ($line=~ /^\s*#/){
next;
}
elsif ($line=~ /^>/){
next;
}
else {
$sequence.=$line;
}
}
$sequence=~ s/\s//g;
return $sequence;
}
sub(match_positions) {
my ($regexp, $sequence)[email protected]_;
use strict;
my @position=();
while ($sequence=~ /$regexp/ig){
push (@position, $-[0]);
}
return @position;
}
@axeman: modifications effectuées. – shubster