Vous recherchez une aide pour le dépannage et la modification. Ceci est un devoir. Mon professeur encourage l'utilisation des forums. Je n'ai pas encore d'expérience avec Perl Functions ou Subs, alors veuillez limiter les réponses au niveau approprié pour que je puisse comprendre. Le but du script est de lire une chaîne d'ADN (ou un fichier à partir de la ligne de commande que j'ajouterai plus tard), de le traduire en ARN, puis de retourner la valeur de la protéine sous la forme d'une lettre majuscule les noms des acides aminés.Modification de l'aide avec le script Perl pour démarrer et arrêter à des endroits spécifiques dans un tableau
La fonction du script:
Prendre 3 caractères « codons » du premier caractère et leur donner un symbole unique lettre (un nom d'acide aminé majuscule d'une lettre de la table de hachage) Imprimer ARN Protéines qui sont des chaînes commençant par AUG ("M") et se terminant par UAG, UAA ou UGA.
Si un espace est rencontré, une nouvelle ligne est lancée et le processus est répété. Nous pouvons supposer que les écarts sont des multiples de trois.
Les principaux problèmes pour autant que je peux dire:
Je ne sais pas où avoir la boucle de données via la table de hachage. J'ai essayé de le placer avant et après mon bloc Foreach. J'ai également pris le bloc Foreach tout à fait et essayé pendant que & Si.
Le bloc Foreach ne semble pas traiter tout le tableau @all_codons et ne s'arrête qu'à AUG.
Le plus gros problème est qu'il ne rapporte rien. Quelque part, la valeur $ next_codon est affectée à "false". J'ai essayé de commenter chaque ligne morceau par morceau - la dernière ligne qui a retourné quelque chose était My $ start et à partir de là tout est faux.
Le script:
$^W = 1;
use strict;
my $dna_string = "CCCCAAATGCTGGGATTACAGGCGTGAGCCACCACGCCCGGCCACTTGGCATGAATTTAATTCCCGCCATAAACCTGTGAGATAGGTAATTCTGTTATATCCACTTTACAAATGAAGAGACTGAGGCAAAGAAAGATGATGTAACTTACGCAAAGC";
my %codon_codes = (
"UUU" => "f", "UUC" => "f", "UUA" => "l", "UUG" => "l",
"CUU" => "l", "CUC" => "l", "CUA" => "l", "CUG" => "l",
"AUU" => "i", "AUC" => "i", "AUA" => "i", "AUG" => "m",
"GUU" => "v", "GUC" => "v", "GUA" => "v", "GUG" => "v",
"UCU" => "s", "UCC" => "s", "UCA" => "s", "UCG" => "s",
"CCU" => "p", "CCC" => "p", "CCA" => "p", "CCG" => "p",
"ACU" => "t", "ACC" => "t", "ACA" => "t", "ACG" => "t",
"GCU" => "a", "GCC" => "a", "GCA" => "a", "GCG" => "a",
"UAU" => "y", "UAC" => "y", "UAA" => " ", "UAG" => " ",
"CAU" => "h", "CAC" => "h", "CAA" => "q", "CAG" => "q",
"AAU" => "n", "AAC" => "n", "AAA" => "k", "AAG" => "k"
);
my $rna_string = $dna_string;
$rna_string =~ tr/[tT]/U/;
my @all_codons = ($rna_string =~ m/.../g);
foreach my $next_codon(@all_codons){
while ($next_codon =~ /AUG/gi){
my $start = pos ($next_codon) -3;
last unless $next_codon =~ /U(AA|GA|AG)/gi;
my $stop = pos($next_codon);
my $genelen = $stop - $start;
my $gene = substr ($next_codon, $start, $genelen);
print "\n" . join($start+1, $stop, $gene,) . "\n";
}
}
Êtes-vous le juste mon substituant '$ dna_string = « CCCCA ... '' $ avec dna_string = <> '? La façon dont votre programme est écrit, vous aurez besoin de lire le fichier entier en mémoire, ce qui pourrait ne pas fonctionner, en fonction de sa taille.En tout cas, vous voudriez faire mon my_dna_string = rejoindre ', map {chomp} <> '. –
Je me suis rendu compte qu'il était nouveau lignes dans le fichier qui créait le problème.Le script fonctionne très bien.Merci de m'avoir beaucoup appris la semaine dernière à ce sujet et à mon autre question. – Koala