• Publicidad

Porcentaje de bases

Perl aplicado a la bioinformática

Porcentaje de bases

Notapor millen » 2011-11-30 06:15 @302

Buenas, llevo toda la mañana y no me sale, me desespero. Me gusta Perl, pero cuando me salen las cosas, ¡ja,ja!

A ver, tengo este hash de hashes y tengo que sacar de un organismo y de la base que me pida el usuario el porcentaje de la base.

Dadme alguna idea. Gracias.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print "¿Que quieres hacer:\n a)Imprimir todos los organismos por pantalla (pulsa a)\n b)Guardar la tabla en un fichero (pulsa b)\n c)Mostrar el porcentaje de bases de un determinado tipo que existen en un determinado organismo (pulsa c)\n" ;
  2. $respuesta = <STDIN>;
  3. chomp $respuesta;
  4.  
  5. if ($respuesta =~ /a/){
  6.         print @organismo;}     
  7. elsif ($respuesta =~ /b/){
  8.         print "¿Como quieres que se llame el fichero?";
  9.         $txt = <STDIN>;
  10.         chomp $txt;
  11.         open (TABLA, ">$txt");
  12.         print TABLA @tabla;
  13.         close TABLA;}
  14. elsif ($respuesta =~ /c/){
  15.         print "¿De qué organismo?";
  16.         $organ = <STDIN>;
  17.         chomp $organ;
  18.         print "¿Y de qué base? (a, c, g o t)";
  19.         $bas = <STDIN>;
  20.         chomp $bas;    
  21. }else {print "Error: vuelva a intentarlo e introduzca bien el caracter"}
  22.  
  23.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. %org = (
  2.         $organismo  => {
  3.                 Adeninas => $a,
  4.                 Citosinas => $c,
  5.                 Guaninas => $g,
  6.                 Timinas => $t,
  7. }
  8. );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
millen
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2011-11-19 06:30 @313

Publicidad

Re: Porcentaje de bases

Notapor explorer » 2011-11-30 06:54 @329

A ver si esta versión te inspira...
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use diagnostics;
  5. use utf8;
  6. use open qw(:utf8 :std);
  7.  
  8. use Data::Dumper;
  9.  
  10. my %organismos = (
  11.     humano => {
  12.         Adeninas  => 12,
  13.         Citosinas => 34,
  14.         Guaninas  => 56,
  15.         Timinas   => 78,
  16.     },
  17.     mosca => {
  18.         Adeninas  => 120,
  19.         Citosinas => 340,
  20.         Guaninas  => 560,
  21.         Timinas   => 780,
  22.     },
  23. );
  24.  
  25. my %abr = ( A => 'Adeninas', C => 'Citosinas', G => 'Guaninas', T => 'Timinas' );
  26.  
  27. my $respuesta;
  28.  
  29. do {
  30.     print '
  31. ¿Qué quieres hacer?
  32.    a) Imprimir todos los organismos por pantalla
  33.    b) Guardar la tabla en un fichero
  34.    c) Mostrar el porcentaje de bases de un determinado tipo que existen en un determinado organismo
  35.    0) Terminar
  36.  
  37. [Opción]: ';
  38.  
  39.     chomp($respuesta = <>);
  40.     print "\n";
  41.  
  42.     if ( $respuesta eq 'a' ) {
  43.         print Dumper \%organismos;
  44.     }
  45.     elsif ( $respuesta eq 'b' ) {
  46.         print "¿Cómo quieres que se llame el fichero?";
  47.         chomp(my $txt = <>);
  48.         open( TABLA, ">$txt" );
  49.         print TABLA Dumper \%organismos;
  50.         close TABLA;
  51.         print "Ok\n";
  52.     }
  53.     elsif ( $respuesta eq 'c' ) {
  54.         print "¿De qué organismo? ";
  55.         chomp(my $organismo = <>);
  56.         if (!$organismos{$organismo}) {
  57.             print "ERROR: No tengo ese organismo\n";
  58.         }
  59.         else {
  60.             my $total = 0;
  61.             for my $valor (values %{$organismos{$organismo}}) {
  62.                 $total += $valor;
  63.             }
  64.             print "¿Y de qué base? [A/C/G/T]:";
  65.             chomp(my $bas = <>);
  66.             $bas = uc($bas);
  67.             if ($bas =~ /^[ACTG]$/) {
  68.                 printf "Porcentaje: %2.2f%%\n", 100 * $organismos{$organismo}{$abr{$bas}} / $total;
  69.             }
  70.         }
  71.     }
  72. } while ($respuesta ne '0');
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Ejemplo de salida
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
explorer@casa:~/Documentos/Desarrollo> perl code_28838.pl

¿Qué quieres hacer?
    a) Imprimir todos los organismos por pantalla
    b) Guardar la tabla en un fichero
    c) Mostrar el porcentaje de bases de un determinado tipo que existen en un determinado organismo
    0) Terminar

[Opción]: a

$VAR1 = {
          'humano' => {
                        'Guaninas' => 56,
                        'Adeninas' => 12,
                        'Citosinas' => 34,
                        'Timinas' => 78
                      },
          'mosca' => {
                       'Guaninas' => 560,
                       'Adeninas' => 120,
                       'Citosinas' => 340,
                       'Timinas' => 780
                     }
        };

¿Qué quieres hacer?
    a) Imprimir todos los organismos por pantalla
    b) Guardar la tabla en un fichero
    c) Mostrar el porcentaje de bases de un determinado tipo que existen en un determinado organismo
    0) Terminar

[Opción]: c

¿De qué organismo? humano
¿Y de qué base? [A/C/G/T]:g
Porcentaje: 31.11%

¿Qué quieres hacer?
    a) Imprimir todos los organismos por pantalla
    b) Guardar la tabla en un fichero
    c) Mostrar el porcentaje de bases de un determinado tipo que existen en un determinado organismo
    0) Terminar

[Opción]:
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Bioinformática

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados

cron