• Publicidad

Analizar cabeceras de FASTA

Perl aplicado a la bioinformática

Analizar cabeceras de FASTA

Notapor millen » 2012-01-11 05:58 @290

A ver, tengo que analizar cientos de ficheros FASTA. La cabecera ya la he sacado.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use strict;
  2.  
  3. my @fichero;
  4.  
  5. open (FA, "641736151.fna.txt");
  6. @fichero = <FA>;
  7. close @fichero;
  8.  
  9. my $line;
  10. my @headers;
  11. my $id;
  12. my $locus;
  13. my $refseq;
  14. my $nombre;
  15. foreach $line (@fichero){
  16.         if ($line =~ />/){
  17.                 @headers = $line;
  18.                 print @headers;
  19.         }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Entonces me da cientos de estas cabeceras:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
>642427638 BgramDRAFT_6745 1557..1832(-)(NZ_ABLD01000069) [Burkholderia graminis C4D1M]
>642427639 BgramDRAFT_6746 1921..2019(-)(NZ_ABLD01000069) [Burkholderia graminis C4D1M]
>642427640 BgramDRAFT_6747 280..846(-)(NZ_ABLD01000070) [Burkholderia graminis C4D1M]
>642427641 BgramDRAFT_6748 851..1948(-)(NZ_ABLD01000070) [Burkholderia graminis C4D1M]
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Y se me ha ocurrido hacerlo así, pero no sé si está bien o si hago algo mal:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $header;
  2. foreach $header (@headers) {
  3.     if ( $header =~ />(\d+) (BgramDRAFT_\d+) (\d+..\d+)\([+-]\)(NZ_ABLD\d+) (\[Burkholderia graminis C4D1M\])/ ) {
  4.         $id     = $1;
  5.         $locus  = $2;
  6.         $refseq = $3;
  7.         $nombre = $4;
  8.     }
  9. }
  10. }
  11.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¡Muchas Gracias!
millen
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2011-11-19 06:30 @313

Publicidad

Re: Analizar cabeceras de FASTA

Notapor explorer » 2012-01-11 08:42 @404

Por este foro hay más ejemplos de lectura e interpretación de los ficheros en formato FASTA. Usa el sistema de búsqueda para encontrarlos.

En cuanto a la expresión regular que pones, veo que te falta algún escape, aparte de que no queda claro qué partes quieres capturar.

Esta es mi solución:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use Modern::Perl;               # Somos modernos
  3. use utf8::all;                  # Activamos todo el soporte UTF-8. Todo.
  4. use File::Slurp;
  5.  
  6. my @fasta_headers = read_file('kk.txt');
  7.  
  8. for my $header (@fasta_headers) {
  9.     if ($header =~ /^>(\d+) (\w+) (\d+\.\.\d+)\([-+]\)\((\w+)\) \[(.+?)\]/) {
  10.         my($id, $locus, $refseq, $tag, $nombre) = ($1, $2, $3, $4, $5);
  11.  
  12.         # ...
  13.         say "[$id][$locus][$refseq][$tag][$nombre]";
  14.     }
  15. }
  16.  
  17. __END__
  18. [642427638][BgramDRAFT_6745][1557..1832][NZ_ABLD01000069][Burkholderia graminis C4D1M]
  19. [642427639][BgramDRAFT_6746][1921..2019][NZ_ABLD01000069][Burkholderia graminis C4D1M]
  20. [642427640][BgramDRAFT_6747][280..846][NZ_ABLD01000070][Burkholderia graminis C4D1M]
  21. [642427641][BgramDRAFT_6748][851..1948][NZ_ABLD01000070][Burkholderia graminis C4D1M]
Coloreado en 0.001 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

Re: Analizar cabeceras de FASTA

Notapor millen » 2012-01-11 09:20 @431

Muchísimas gracias, explorer. Más o menos ¡ya lo he conseguido! Sin más quería extraer todos los apartados, como tu bien has hecho.
millen
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2011-11-19 06:30 @313

Re: Analizar cabeceras de FASTA

Notapor Santino » 2013-03-05 09:45 @448

Hola, ¡¡buenas tardes!!

explorer... ¿¿cómo luego el programa identifica a "[$id][$locus][$refseq][$tag][$nombre]"??

Sólo consigo obtener la cabecera pero no cómo interpretarla.

Si puedes ayudar, gracias.
Santino
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2013-01-27 13:47 @616

Re: Analizar cabeceras de FASTA

Notapor explorer » 2013-03-05 11:18 @512

Es en la línea 10 donde esas variables son definidas, a partir de las capturas hechas por los paréntesis de la expresión regular de la línea 9.

En las líneas 12 y 13 es donde se supone que vamos a trabajar con ellas (hacer estadísticas, imprimir en pantalla, guardar en base de datos, etc.).
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 1 invitado