Página 2 de 2

Re: Paro en el terminal

NotaPublicado: 2011-01-04 10:13 @467
por explorer
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.

Re: Paro en el terminal

NotaPublicado: 2011-01-04 11:07 @505
por Perldesesperada
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.003 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.001 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.

Re: Paro en el terminal

NotaPublicado: 2011-01-04 11:21 @514
por explorer
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.

Seleccionar ORF

NotaPublicado: 2011-01-08 10:11 @466
por Perldesesperada
¡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 :)

Re: Posiciones de inicio y fin de ORF

NotaPublicado: 2011-01-08 12:22 @557
por explorer
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...

Re: Posiciones de inicio y fin de ORF

NotaPublicado: 2011-01-09 02:15 @135
por Perldesesperada
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í.