Tengo una duda y es que me ha comentado mi profesor que en la subrutina del aminoacido_minoritario() él cree que puede conllevar a una confusión que para calcularlo usa el valor de num_max_apariciones que obtengo en la subrutina anterior, y me ha dicho que lo modifique para que en el caso de que aparezca más de un aminoácido mayoritario imprima por pantalla el primero y el último y no lo entiendo muy bien.
Muchas gracias y siento ser tan pesado.
Using perl Syntax Highlighting
- use Codones; #subrutina que he creado en otro archivo
- print "Escriba el nombre del fichero que contiene la secuencia ADN:";
- $DNA_filename= <STDIN>;
- chomp $DNA_filename;
- unless ( open(DNAFILE, $DNA_filename) ) {print "No se puede abrir el fichero\"$DNA_filename\"\n\n";
- exit;}
- @DNA = <DNAFILE>; #guardamos el archivo como un array
- close DNAFILE;
- $DNA = join('', @DNA);
- $DNA =~ s/\s//g; #sustituimos los espacios en blanco por nada
- $RNA =$DNA; # Generamos una nueva varible RNA en la que guardamos el contenido del DNA
- $RNA =~ s/T/U/g;
- print $DNA;
- $protein=''; # Generamos una cadena vacía donde vamos añadiendo los aminoácidos generados
- for($i=0; $i < (length($RNA) -2) ; $i += 3) {
- $codon = substr($RNA,$i,3); #Extrae un aminoácido cada vez que recorra
- $protein .= Aminoacido_CodonADN($codon);
- }
- @protein = split('', $protein);
- $protein = join(',',@protein);
- print "Traducción de la secuencia de DNA a proteína:\n",$protein,,"\n";
- print "El signo (-) significa codón stop \n\n";
- #######Aminoacido mayoritario###########
- $protein = join('',@protein);
- sub aminoacido_mayoritario{($protein)=@_;
- %tabla =();
- $num_max_apariciones =0;
- @resultado =();
- for(my $i=0;$i<(length $protein);$i++){
- $aminoacido = substr ($protein,$i,1);
- if (exists $tabla{$aminoacido}) {
- $tabla{$aminoacido} = $tabla{$aminoacido} +1;
- }
- else {$tabla{$aminoacido} =1
- }
- }
- foreach $contador(values%tabla){
- if($contador > $num_max_apariciones){$num_max_apariciones =$contador;}
- }
- foreach $aminoacido(keys%tabla){
- if ( $tabla{$aminoacido}== $num_max_apariciones){push@resultado,$aminoacido;}
- }
- return join(",",@resultado),$num_max_apariciones;
- }
- @mayoritario = aminoacido_mayoritario($protein);
- print "Áminoacido/s mayoritario/s y número de apariciones:\n",join(" ",@mayoritario),"\n\n";
- ###### calcular el aminoacido minoritario######
- sub aminoacido_minoritario{($protein)=@_;
- %tabla=();
- @resultado =();
- for (my $i=0;$i<(length $protein);$i++){
- $aminoacido = substr ($protein,$i,1); #Extrae un aminoácido cada vez que recorra
- if (exists $tabla{$aminoacido}) {
- $tabla{$aminoacido} = $tabla{$aminoacido} +1;
- }
- else {$tabla{$aminoacido} =1
- }
- }
- foreach $contador(values%tabla){
- if($contador < $num_max_apariciones){$num_max_apariciones =$contador;}
- $num_min_apariciones=$num_max_apariciones
- }
- foreach $aminoacido(keys%tabla){
- if ( $tabla{$aminoacido}== $num_min_apariciones){push@resultado,$aminoacido;}
- }
- return join(",",@resultado),$num_min_apariciones;
- }
- @minoritario = aminoacido_minoritario($protein);
- print"Aminoácido/s minoritario/s y número de apariciones:\n",join(" ",@minoritario),"\n\n";
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4