• Publicidad

Extraer secuencia

Perl aplicado a la bioinformática

Extraer secuencia

Notapor Peznemo » 2012-07-05 09:41 @445

Hola, a partir de un fichero con el siguiente formato:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
>supercont1.1 of E.coli M1.001
TTATACTTAACTTATTATTTAAATTAATATAGCTTATTATATAGTAACCTTATAGTTCTA
ATTATATTATAAATAATTTATTTATTATACTTATTTAGTAGTTATTAAATATCTTTATTT
>supercont1.2 of E.coli M1.001
ATATAATAAATAAGAAGTATATATAAAGTAATAATTTTTTATTTATTTATAAGAATTATT
AAAGTTAGTTAATTTATAGTTATTATAACTATTAAAGATTAAAAGTTAATAAGTACTTTT
(...)
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Estoy intentando extraer, en otro fichero (out.txt), el primer supercont. Para ello, en teoría, (según lo que yo pretendía) bastaría con teclear 1.2 y dejar que ese valor se guardara en $a. Al hacer esto, en vez de obtener un fichero con sólo la primera secuencia, obtengo uno con todas las secuencias.

Seguramente sea algo muy tonto pero no tengo mucha experiencia programando en Perl :? , ¿alguien puede ayudarme?
Este es el código del programa:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!usr/local/bin/perl
  2. use strict;
  3. use warnings;
  4. print "write the number of the supercontig from out which you want to start erasing";
  5. my $a=<STDIN>;
  6. chomp $a;
  7. my $file="E_coli_m1.001_1_supercontigs.fasta";
  8. my $out_file="out.txt";
  9. my $line;
  10.  
  11. open (IN, "<$file") or die "can't open $file :$!\n";
  12.  
  13. open (OUT, ">$out_file") or die "can't open $out_file:$!\n";
  14.  
  15. while ($line= <IN>) {
  16. if ($line =~m/\d$a/) {
  17. exit;}
  18. else {print OUT $line;
  19. }
  20. }
  21. close IN;
  22. close OUT;
  23. exit;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Peznemo
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2012-07-05 09:01 @417

Publicidad

Re: Extraer secuencia

Notapor explorer » 2012-07-05 11:07 @505

Bienvenido a los foros de Perl en Español, Peznemo.

El problema está en el bucle:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. while ( $line = <IN> ) {         # para cada $line del archivo de entrada
  2.     if ( $line =~ m/\d$a/ ) {    # si la línea contiene un dígito seguido de $a
  3.         exit;                    # terminamos
  4.     }
  5.     else {                       # si no (todas las demás)
  6.         print OUT $line;         # guardamos la línea
  7.     }
  8. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Entonces es claro: se guardan todas las líneas, hasta encontrar la línea que contiene ese patrón (un dígito más $a), cosa que -tampoco- se cumple nunca.

Cambia \d por \D (no dígito).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Extraer secuencia

Notapor Peznemo » 2012-07-06 02:25 @142

¡En efecto! ¡¡Ya funciona!!
Muchas gracias por la ayuda y la rapidez de la respuesta :)
Peznemo
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2012-07-05 09:01 @417


Volver a Bioinformática

¿Quién está conectado?

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