• Publicidad

Posiciones de inicio y fin de ORF

Perl aplicado a la bioinformática

Re: Paro en el terminal

Notapor explorer » 2011-01-04 10:13 @467

Si quieres saber qué está haciendo Perl, debes decirle a Perl que te diga qué es lo que está haciendo.

Coloca print() en los sitios estratégicos del programa, para que sepas dónde está parado.
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

Publicidad

Re: Paro en el terminal

Notapor Perldesesperada » 2011-01-04 11:07 @505

Vale, descubrí qué pasaba...

Resulta que el error vuelve a estar relacionado con el problema de ordenación de los arrays, el mismo que tiene en vilo a beafm.

Intenté hacer dos hashes, uno que me relacionara la posición de inicio con la de fin y otro que me relacionara la posición de inicio con la proteína correspondiente. Utilicé para ello el bucle for:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my %principiofin;
  2. my %principioproteina;
  3. for ($i=0; $i< scalar @poslecfin; $i++) {
  4.     %principiofin =($poslecin[$i] => $poslecfin[$i] );
  5. }
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. for ($i=0; $i< scalar @proteinas; $i++) {
  2.     %principioproteina=($poslecin[$i] => $proteinas[$i]);
  3. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


He visto que solo me introduce al hash el primer elemento de cada array.
Ayuda de nuevo.

Siento estar gastando su tiempo, pero me desespero.
Perldesesperada
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2010-12-26 10:35 @482

Re: Paro en el terminal

Notapor explorer » 2011-01-04 11:21 @514

Así no se accede ni se ponen los contenidos de los hash. Tienes que repasar la sintaxis básica. Será algo así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
      my %principiofin;
      for ($i=0; $i< scalar @poslecfin; $i++) {
          $principiofin{ $poslecin[$i] } = $poslecfin[$i];
      }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Más información en perldoc perldata y perldoc perllol.
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

Seleccionar ORF

Notapor Perldesesperada » 2011-01-08 10:11 @466

¡Buenas tardes!
Tengo una duda más que un problema.

En mi programa llego a un punto donde tengo almacenadas en un mismo array las posiciones de inicio y fin de los ORF (en la forma de contar normal, es decir, comenzando por el 1 y hasta la base anterior al codón STOP). Tengo que rechazar aquellas cuya longitud sea menor a una cierta longitud introducida por línea de comando, que luego yo he almacenado como $longmin.
He realizado una serie de bucles similares para cada marco de lectura, pero no sé si funcionan del modo que yo quiero. ¿Qué opina usted?

Consistiría en que si la longitud del ORF es mayor a 300 (en el fichero de ejemplo) sí las tradujera luego en el fichero de salida, y si no, no.

Quiero que si son mayores de 300 me almacene la posición de inicio en @poslecin, la de fin en @poslecfin y me extraiga la secuencia de ADN a @ORFs.

He pensado que el error de mi programa debe estar aquí, porque las siguientes partes ya son de traducción e impresión en el fichero.

Este es el bucle para el marco de lectura 1:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. do{
  2.  
  3.   if(($posiciones0[$f]-$posiciones0[$i] +1)> $longmin) {
  4.     push (@poslecin, $posiciones0[$i]);
  5.     push (@poslecfin, $posiciones0[$f]);
  6.     $orf= substr($dna, $posiciones0[$i] - 1, $posiciones0[$f]-$posiciones0[$i]+1);
  7.     push (@ORFs, $orf);
  8.     $i+=2;
  9.     $f+=2;
  10.   }else{
  11.     $i+=2;
  12.     $f+=2;
  13.   }
  14. }until($i > scalar (@posiciones0) / 2);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Gracias :)
Perldesesperada
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2010-12-26 10:35 @482

Re: Posiciones de inicio y fin de ORF

Notapor explorer » 2011-01-08 12:22 @557

Yo lo que no entiendo es lo de la línea 14. ¿Por qué recorrer solo la mitad de las posiciones iniciales?

Luego, ¿por qué realizar este bucle si el filtrado de la longitud de la secuencia se puede realizar en el mismo momento en que se encontró?

Edito: Vale, lo entiendo: @posiciones0 guarda tanto las posiciones iniciales como finales. Por eso el bucle es solo hasta la mitad. Creo que hubiera sido mejor seguir con dos array en lugar de meterlo todo en uno solo, pero bueno...
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

Re: Posiciones de inicio y fin de ORF

Notapor Perldesesperada » 2011-01-09 02:15 @135

Lo arreglé. Sí, era la línea 14, me había equivocado al razonarlo matemáticamente.
¡¡¡¡Ya tengo el programa perfecto!!!! :D
Muchas gracias por todo.
Espero que este foro siga así.
Perldesesperada
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2010-12-26 10:35 @482

Anterior

Volver a Bioinformática

¿Quién está conectado?

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