• Publicidad

Problema sobre utilidades de Perl y BioPerl

Perl aplicado a la bioinformática

Problema sobre utilidades de Perl y BioPerl

Notapor Alfumao » 2009-12-10 11:41 @528

Buenas tardes,

Me llamo Álvaro y estoy intentando aprender a programar en Perl y Bioperl para poder desarrollar programas que me ayuden en el desempeño de mi Tesis doctoral.

No tengo experiencia previa en programación (solo un poco de Basic... :S ) y me ha sido imposible encontrar cursos presenciales de Perl; además los que vi a través de este foro requieren experiencia previa... es un bucle infinito, ¡ja,ja,ja!

Lo que os decía: es que solo puedo aprender leyendo libros, y me está resultando especialmente duro (soy biólogo, no informático).
Escribo aquí por si alguien me puede ayudar con un script que me tiene completamente atascado y no soy capaz de ver la salida del túnel.

Lo que requiere este script es:

* Localizar una lista de nombres de secuencias en un archivo compuesto por secuencias en este formato (formato FASTA por si a alguien le suena) p. ej.:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
>Secuencia 1
LISTADELETRASOCADENADEAMINOACIDOS
DSFUIFHOIUOIFJUJPOFDSKJFDLPOKFFDD
JSHIUHFDIJDSPOFIGDPOKJPOAIGPOKJGD
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


* Dicha secuencia se halla en un archivo tipo ".txt", entre miles de secuencias con su mismo formato, p. ej.:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
>Secuencia 1
LISTADELETRASOCADENADEAMINOACIDOS
DSFUIFHOIUOIFJUJPOFDSKJFDLPOKFFDD
JSHIUHFDIJDSPOFIGDPOKJPOAIGPOKJGD
>Secuencia 2
LISTADELETRASOCADENADEAMINOACIDOS
DSFUIFHOIUOIFJUJPOFDSKJFDLPOKFFDD
JSHIUHFDIJDSPOFIGDPOKJPOAIGPOKJGD
...
>Secuencia n
LISTADELETRASOCADENADEAMINOACIDOS
DSFUIFHOIUOIFJUJPOFDSKJFDLPOKFFDD
JSHIUHFDIJDSPOFIGDPOKJPOAIGPOKJGD
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Lo que intento hacer es extraer las secuencias de mi lista y escribirlas en un fichero ".txt" aparte.

Un problema que se plantea es el parsing del nombre, yo lo parsee con estas expresiones:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $id =~ /^>[^:]+:(\S+)/
my $id =~ /^>(\S+)/
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4


Pero fui incapaz de llegar mas allá usando unicamente Perl. Decidí usar Bioperl (no sé si en este foro puedo poner scripts de BioPerl también...) y para lograr esto tuve que crear un índice en el cual el programa busca las secuencias, lo hice con este script (pegado debajo), pero sigo sin obtener ningún resultado positivo... ojalá alguien de este foro me pueda echar una mano ;)

Gracias por adelantado

Aquí va mi script:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/C:/perl/bin -w
  2. use strict;
  3. use Bio::Index::Fasta;
  4. use Bio::SeqIO;
  5. use IO::File;
  6.  
  7. #create index
  8. print ("Enter your index name:\n");
  9. my $index_file = 'PC92.fasta';
  10. my $inx = Bio::Index::Fasta->new(-filename => $index_file. ".idx",
  11.     -write_flag => 1);
  12. $inx->make_index(@ARGV);
  13. next;
  14.  
  15. print ("Enter your list name:\n");
  16. my $id_list = <STDIN>;
  17.  
  18. # open the id list
  19. open (INFILE, "$id_list")|| die ("can´t open input file");
  20. my @ids = <INFILE>;
  21. chop @ids;
  22.  
  23. # open index file
  24. my $db = Bio::DB::Fasta->new($index_file) or die;
  25.  
  26. # open FASTA to write
  27. my $out = new Bio::SeqIO (-file =>">index_extracted.fasta",-format => 'fasta');
  28.  
  29. # retrieve a sequence
  30. foreach my $id (my @list) {
  31.     if (my $id eq ''){
  32.         die ("empty list")
  33.     }
  34.     if (my $id =~ /^>[^:]+:(\S+)/ ) {
  35.         my $seqobj = my $inx->fetch($id);
  36.         my $out->write_seq($seqobj);;
  37.     }
  38.     elsif ($id =~ /^>(\S+)/) {
  39.         my $seqobj = my $inx->fetch($id);
  40.         my $out->write_seq($seqobj);;
  41.     }
  42.     else {
  43.         warn("cannot parse ID for $id\n");
  44.     }
  45. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2009-12-10 13:48 @617, editado 1 vez en total
Razón: Ortografía, sintaxis, bloques de código, indentación de código
Alfumao
Perlero nuevo
Perlero nuevo
 
Mensajes: 178
Registrado: 2009-12-10 11:20 @514

Publicidad

Re: Problema sobre utilidades de Perl y BioPerl

Notapor explorer » 2009-12-10 14:21 @639

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

Por estos foros hemos comentado en algunas ocasiones el trabajo con el formato FASTA. Usa el sistema de búsqueda o Google con la opción site:perlenespanol.com para encontrarlos.

Por ejemplo, del hilo Extraer un extracto de secuencia, podemos extraer la solución que buscas:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @nombre_secuencia;
open FICHERO, "<fasta.txt" or die "ERROR: No puedo abrir: $!\n";
while (my $linea = <FICHERO>) {     # Leemos el fichero línea a línea
    chomp;                          # Quitar el carácter fin de línea
    if ($linea =~ /^>(.*)/) {       # Si la línea comienza por '>',
                                    # capturamos lo que le sigue
        push @nombre_secuencia, $1; # y lo guardamos
    }
}
close FICHERO;

if (@nombre_secuencia) {            # Si hemos encontrado secuencias
    open  SALIDA, ">secuencias.txt" or die "ERROR: No puedo escribir: $!\n";
    print SALIDA join("\n", @nombre_secuencia), "\n";   # Las sacamos a fichero
    close SALIDA;
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


La expresión regular $linea =~ /^>(.*)/ quiere decir:
* Busca, desde el principio (^) de la $linea, un carácter '>'

* Captura (con los paréntesis), 0 o más (*) caracteres cualesquiera (.). Vamos, cualquier cosa, hasta el final de la $linea

El resultado de la captura del primer par de paréntesis queda almacenado en la variable especial $1, que usaremos en la línea siguiente, para guardarla en un array.

Naturalmente que puedes poner dudas sobre BioPerl, aunque quizás tardes más tiempo en obtener respuestas que si las dejas en los foros oficiales de bioinformática y/o BioPerl. Bueno, tampoco te cuesta ponerlo en los dos sitios, y así, esperar por la respuesta más rápida ;)
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema sobre utilidades de Perl y BioPerl

Notapor Alfumao » 2009-12-11 04:03 @210

Estimado Perlero,
Muchísimas gracias por tu atención y pronta respuesta ;)

El programa que me diste cumple su cometido a las mil maravillas, pero creo que no me expliqué bien respecto a lo que realmente necesito, os pido disculpas a todos... ;S

* El programa que me has facilitado (muchísimas gracias por todas las líneas de comentario, ¡así sí que se aprende Perl, cuando te explican las cosas con ese nivel de detalle!) lo que hace es extraer los encabezamientos de todas las líneas de mi fichero FASTA, pero lo que yo necesito es extraer también toda la secuencia que viene detrás del encabezamiento. Lo más cercano que se me ocurre para expresarlo en términos informáticos es extraer todos los caracteres que van desde ">" que encabeza la secuencia hasta (sin incluirlo) el siguiente ">" que es principio de la siguiente secuencia.

* Para que se extraigan las secuencias deseadas, hay que facilitarle una lista donde se encuentran los nombres de las secuencias buscadas, que son los que han de coincidir con el nombre escrito en la primera línea de cada FASTA.

Ej.:

Tengo la lista (en un archivo txt) ej:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
100039
100072
100151
100188
100231
100288
100398
100509
100514
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

y quiero extraer esas secuencias de un megaarchivo FASTA, donde aparte de las secuencias con esos nombres hay otras 6000 más (por poner un número representativo...)

Lo que yo creo que habría que hacer (pero soy incapaz de lograr) sería:

* Leer el Fasta (como hace tu programa) y leer también la lista (en un array).

* Hecho esto pensé en hacer un bucle que permita coger cada uno de los $ del array lista (foreach $lista (@lista)) [por ejemplo], y los busque en el archivo FASTA (usando el pattern matching que tu has definido en tu programa, por ejemplo).

* Extraer la secuencia que encaje con la de la lista (en formato FASTA completo) (SOBRE ESTE PASO NO TENGO NI LA MÁS REMOTA IDEA DE CÓMO PLANTEARLO SIQUIERA). Ej.:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
>100398
LISTADELETRASOCADENADEAMINOACIDOS
DSFUIFHOIUOIFJUJPOFDSKJFDLPOKFFDD
JSHIUHFDIJDSPOFIGDPOKJPOAIGPOKJGD
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


* Y por último escribir (todas las encontradas) en el archivo de salida en formato txt (como hace tu programa con los nombres).

* PREMISA: Todos los nombres de secuencia de la lista están representados por una secuencia en el megaarchivo FASTA.

Siento mucho dar tanto la lata, pero es que realmente preferiría poder correr esta utilidad en Perl que en BIOPERL.

Un saludo y muchísimas gracias por vuestra atención (en especial a Explorer ;) )
Última edición por explorer el 2009-12-11 04:52 @244, editado 1 vez en total
Razón: Tildes
Alfumao
Perlero nuevo
Perlero nuevo
 
Mensajes: 178
Registrado: 2009-12-10 11:20 @514

Re: Problema sobre utilidades de Perl y BioPerl

Notapor explorer » 2009-12-11 05:48 @283

Bueno, esta es una forma de hacerlo...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use diagnostics;
  5.  
  6. # Lectura del fichero de secuencias
  7. my %es_interesante;
  8. open  SEQ, '<seq.txt' or die "ERROR: $!\n";
  9. while (my $linea = <SEQ>) {
  10.     chomp $linea;
  11.     $es_interesante{$linea} = 1;            # la almacenamos en la memoria asociativa
  12. }
  13. close SEQ;
  14.  
  15. # Lectura del fichero FASTA
  16. my $nombre_secuencia;                       # Guarda el nombre de cada secuencia
  17. my $secuencia = '';                         # Contenido de la secuencia interesante
  18.  
  19. open  FASTA, '<fasta.txt' or die "ERROR: $!\n";
  20. while (my $linea = <FASTA>) {
  21.     chomp $linea;
  22.  
  23.     if ($linea =~ /^>(.+)/) {                       # Comienzo de una secuencia nueva
  24.  
  25.         if ($secuencia) {                           # Si tenemos una ya leída...
  26.             procesar_secuencia($nombre_secuencia, $secuencia);  # la procesamos
  27.         }
  28.  
  29.         $nombre_secuencia = $1;                     # Nombre de la secuencia extraída desde la exp. reg.
  30.         $secuencia = '';                            # Reiniciamos nuestra secuencia a capturar
  31.  
  32.         next;                                       # pasamos a la siguiente línea
  33.     }
  34.  
  35.     if ($es_interesante{$nombre_secuencia}) {       # Si estamos en una secuencia interesante
  36.         $secuencia .= $linea;                           # la guardamos
  37.     }
  38. }
  39. close FASTA;
  40.  
  41. if ($secuencia) {                                   # Si aún queda alguna $secuencia por sacar
  42.     procesar_secuencia($nombre_secuencia, $secuencia);  # la procesamos
  43. }
  44.  
  45. sub procesar_secuencia {
  46.     my ($nombre, $secuencia) = @_;
  47.  
  48.     print "$nombre : $secuencia\n";
  49. }
  50.  
  51. __END__
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Primero leemos la lista de secuencias interesantes, y las metemos en un hash, que nos servirá de memoria.

Luego, vamos procesando línea a línea el fichero FASTA. Si la línea empieza por '>' entonces es una secuencia nueva. Si no, se trata de una línea de secuencia normal, que almacenaremos o no según nos interese. Al principio de cada secuencia nueva o al final del bucle, procesamos la secuencia encontrada.

Naturalmente, hay más formas de hacerlo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema sobre utilidades de Perl y BioPerl

Notapor Alfumao » 2009-12-11 06:40 @320

Hola de nuevo Explorer,

he corrido tu programa pero no había un output file en el código (o al menos yo no lo he detectado) por lo que le añadí una línea de apertura del OUTFILE en txt y otra en la subrutina con la que pretendo que cada vez a ésta obtenga un resultado positivo me lo agregue al OUTFILE.

Lo malo es que no me ha funcionado... te pongo aquí tu código con mi modificación en rojo para que me des tu opinión sobre por qué no me da ningún resultado el el archivo OUTFILE.

#!/c:/perl/bin/perl -w
# encabezamiento para correrlo en Windows
use strict;
use warnings;
use diagnostics;

# Lectura del fichero de secuencias
my %es_interesante;
open SEQ, '<Lista.txt' or die "ERROR: $!\n";
while (my $linea = <SEQ>) {
chomp $linea;
$es_interesante{$linea} = 1;
}
# la almacenamos en la memoria asociativa
close SEQ;
my $nombre_secuencia;
# Guarda el nombre de cada secuencia
my $secuencia = '';
# Contenido de la secuencia interesante

# Lectura del fichero FASTA
open FASTA, '<PC92.txt' or die "ERROR: $!\n";
while (my $linea = <FASTA>) {
chomp $linea;

#Abrimos fichero de salida
open (OUTFILE, ">>salida_lista.txt");


if ($linea =~ /^>(.+)/) {
# Comienzo de una secuencia nueva
if ($secuencia) {
# Si tenemos una ya leída...
procesar_secuencia($nombre_secuencia, $secuencia);
# la procesamos
}

$nombre_secuencia = $1;
# Nombre de la secuencia extraída desde la exp. reg.
$secuencia = '';
# Reiniciamos nuestra secuencia a capturar

next;
# pasamos a la siguiente línea
}
# Si estamos en una secuencia interesante
if ($es_interesante{$nombre_secuencia}) {
$secuencia .= $linea;
# la guardamos
}
}
close FASTA;
# Si aún queda alguna secuencia por sacar
if ($secuencia) {
procesar_secuencia($nombre_secuencia, $secuencia); # la procesamos
}

sub procesar_secuencia {
my ($nombre, $secuencia) = @_;
print OUTFILE ("@_\n");
}

__END__


PD. Mil gracias por tu ayuda (eres mejor que ningún libro para explicar los programas) y paciencia con inútiles como yo ;)
Última edición por explorer el 2009-12-11 06:46 @324, editado 1 vez en total
Razón: Ortografía
Alfumao
Perlero nuevo
Perlero nuevo
 
Mensajes: 178
Registrado: 2009-12-10 11:20 @514

Re: Problema sobre utilidades de Perl y BioPerl

Notapor explorer » 2009-12-11 07:14 @343

Pues es raro, porque a mí sí que me funciona.

De todas formas, si la salida consiste en la misma forma que en la entrada (secuencias recortadas a un determinado ancho), entonces no te vale el programa que te dí, porque lo que hace es concentrar toda la secuencia en una sola línea.

Esta versión ya está corregida:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use diagnostics;
  5.  
  6. # Lectura del fichero de secuencias
  7. my %es_interesante;
  8. open  SEQ, '<seq.txt' or die "ERROR: $!\n";
  9. while (my $linea = <SEQ>) {
  10.     chomp $linea;
  11.     $es_interesante{$linea} = 1;            # la almacenamos en la memoria asociativa
  12. }
  13. close SEQ;
  14.  
  15. # Lectura del fichero FASTA
  16. my $nombre_secuencia;                       # Guarda el nombre de cada secuencia
  17. my $secuencia = '';                         # Contenido de la secuencia interesante
  18.  
  19. open  SALIDA, '>salida.txt' or die "ERROR: $!\n";
  20. open  FASTA,  '<fasta.txt'  or die "ERROR: $!\n";
  21.  
  22. while (my $linea = <FASTA>) {
  23.  
  24.     if ($linea =~ /^>(.+)/) {                       # Comienzo de una secuencia nueva
  25.  
  26.         if ($secuencia) {                           # Si tenemos una ya leída...
  27.             procesar_secuencia($nombre_secuencia, $secuencia);  # la procesamos
  28.         }
  29.  
  30.         $nombre_secuencia = $1;                     # Nombre de la secuencia extraída desde la exp. reg.
  31.         $secuencia = '';                            # Reiniciamos nuestra secuencia a capturar
  32.  
  33.         next;                                       # pasamos a la siguiente línea
  34.     }
  35.  
  36.     if ($es_interesante{$nombre_secuencia}) {       # Si estamos en una secuencia interesante
  37.         $secuencia .= $linea;                           # la guardamos
  38.     }
  39. }
  40.  
  41. close FASTA;
  42. close SALIDA;
  43.  
  44. if ($secuencia) {                                   # Si aún queda alguna $secuencia por sacar
  45.     procesar_secuencia($nombre_secuencia, $secuencia);  # la procesamos
  46. }
  47.  
  48. sub procesar_secuencia {
  49.     my ($nombre, $secuencia) = @_;
  50.  
  51.     print SALIDA ">$nombre\n$secuencia";
  52. }
  53.  
  54. __END__
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
El único cambio importante es la eliminación de la función chomp(), para que mantenga la disposición de los finales de línea. Y en la función de procesamiento, sacar el $nombre y la $secuencia, de forma apropiada.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema sobre utilidades de Perl y BioPerl

Notapor Alfumao » 2009-12-11 12:30 @562

Estimado Explorer,

Perdona la tardanza en responder, pero es que sigue saliéndome un archivo salida, completamente vacío...

Supongo:
- La lista de nombres de secuencias a buscar es el archivo que tu has llamado "seq.txt"
- El megaarchivo FASTA con todas las secuencias de proteínas es el que tu llamas "fasta.txt"

Porque he nombrado mis archivos así y sigo sin obtener nada en el archivo "salida.txt".

¿Es posible que te envíe de alguna manera los 2 archivos para que los puedas comprobar tu mismo y ver si obtienes resultado?

O enviarme tu los que has usado para probar yo con ellos...

Un saludo de nuevo y te pido mil disculpas por mi incapacidad manifiesta para hacer funcionar tu programa... :?
Alfumao
Perlero nuevo
Perlero nuevo
 
Mensajes: 178
Registrado: 2009-12-10 11:20 @514

Re: Problema sobre utilidades de Perl y BioPerl

Notapor explorer » 2009-12-11 12:54 @579

Si no te sale nada, es que la secuencia que aparece después del '>' no coincide con ninguno de los indicados en la lista leída.

Fíjate bien que no haya algún carácter en blanco, al final de alguno de ellos.

Yo las pruebas las hice con los ficheros que has publicado aquí, tanto el Fasta como el de la lista de secuencias.

Si, sospechas, de que se trata de caracteres extraños al final de la línea, puedes cambiar la línea 24, de

$linea =~ /^>(.+)/

a

$linea =~ /^>(.+)\s*$/

pero sería interesante ver los ejemplos en concreto.

Sí que puedes adjuntar ficheros a estas respuestas (Subir adjunto, debajo de la ventana Publicar una respuesta, cuando estás respondiendo), pero los ficheros FASTA son fáciles de resumir, así que con unas pocas líneas, vale. Lo mismo para el otro fichero.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema sobre utilidades de Perl y BioPerl

Notapor Alfumao » 2009-12-11 14:19 @638

Creo que tendré que escribirlo aquí mismo, lo pondré abreviado, es decir, solo unas pocas secuencias del FASTA y 5 identidades de secuencia, para que puedas copiarlos fácilmente a unos txt y los pruebes.

En el seq.txt (lista de identidades a buscar):
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
23766
27952
96101
101523
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


En el FASTA.txt irían:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
>98448|fgenesh3_pg.4971__1
MQGAVNSIDTATPSTPPSKPRKIVRSPYFRKSNGKRRTRQHAENVGHGHSHSDAVSPGIPSCYFKHSSSG
KLTANSTVTEVSARLLPWYDGAEFEDALPLFGVAGGERSANDQVDIALAHFTLLHDAAFSHFCSDFMRAY
RGLYDAKPILIQEYVAHDPWKLLVAVTLLNKTAGTHAVPVFLELMDAWATAHALAQVPQGVLQARIAHLG
LGRSRSERLIALSQAYCADPPVRGVMRTSRCYLDVGDGVKRQRYPPTEASHLPGSGPYALDSYRIFCAGE
DEWKAVMPRDKELVRYL
>23766|gw1.611.1.1
KWRGKLVKRKYAFGEKDVPKGESQWFKVVYGFDEPQLPSNISSPNISRVFGTNTTAFELLVLKRKIMGPC
WLQVKEPKLEHKGVSWCKVEATVSNPKDINPFAETDQQAPRGTPPLTVVSLSLRTIVNHKENNREIVCAT
ARICNAVDLDDPTPPEALPCMVRTFVRPLDRFPSNFEVRAAKNGKGVISPQKNERMLLNNLLVTIHKADP
DAIVGHEVLGVSLDVLLHRMRDLKADHWSRIGRFRRSKWPNIGRQGTNLKFMNGRLLCDLASDSAKGMIS
STTWSLTEMCKTHLKSDRQDIDPDDTASYFDSSVSSPDRLLTFVRHCELDAHYQMALAAKVQILPLTRQL
TNLAGNSWNKTLNGGRAERNEYILLHEFHRLKYICPDKLWGKKAATAEKEAHDDDAEGGKVTKSKKDKYK
GGLVFEPKRGLWDKYILVMDFNSLYPSIIQEYNIDFTTVDRAEDEVRADGEEAIPEPPSPGVGQGVLPRL
IATLVNRRRQVKSLMKDRKATQAQLLQWDIKQMALKLTANSMYGCLGFEYSRFYARPLAALTTFKGREI
>28683|gw1.3814.2.1
ISTPITELFKIKHPILLAGMNVAAGPELAAAVTNAGGLGVIGGHGYTPKFLRQQIRAVKADLKDKNAPFG
VDLLIPQVGGNARKTNKDYQNGKLPELIDIIIEEKAALFVCAVGIPPKWAVEKMHAAGIPVMNMVGHPKH
VPRALDAGVDLICAQGGEGGGHTGDVPCSLLIPACVDAVRGHTSPLTGRPVYVVGAGAVYDGRGLAANLM
WGAQGVWVGTRFVASVEAGAPKAHKDAVVRSGIDDTARTVIFTGRPLRVVRNEYVDDWNKNRQKEIDELT
ARGIIPHEEEVRKHPEKHAKAITFLTGQVAGLIHD
>28107|gw1.435.1.1
VQVALSLLDGDARAWATPYFAQLISVQIGVQGATTPFANEAAFAATFKAHFGNLDDEAAAQVELAKLCAD
KSVREKRTAAEFSALFKGPADRSGYGDLELRDKYLSGIPSRVYRKIELETFTTWRAAEKRATEVEQILDI
>38764|gw1.4610.1.1
PRYINPHYEEVKAESDAWLKGLKPFTKQSQLAFDKCDLEHLRTGCDLMNVIVVIDEYTDVESASAVREIV
DIVNDAINNPHKPRPDGESILGEMTRQFWERAIKTATPSSQKHFIEAFTDYLHSVVEQAADRDNNHIRTV
GSYLKTRRENIGARPSYVPAELGLNLPDEAFYHPVVTELSYNIAELIILDNASTISSSNHEDIVSYNKEQ
ATGDDRHNILTIVMHQFNIDLEAAMAWVASYHREVENKFLDGMKKLPSFGPAVDKELEEYVLALA
>27952|gw1.3.99.1
LNTFHYAGVSSKNVTLGVPRLKEIINVATNIKTPSLSVYLEPEIAKDKILANSVQQELAYTSLRTVTAAV
EIWYDPEPTSTIIEEDSIFVESFFAIPDDEVEQKLHLQSPWLLRLELDRAKMIDRKLTMSYVAGRIAESF
KTDLFVIWSEDNSEKLIIRCRVLGGADKDEDGMETVEEDIFLRQLENTMLNSISLRGVPGIQRVFLLEHD
KVVVTEEGSIKAHQEKEWVLETDGVNLKTVMCVEGVNFKRTYSNSCVEIFNV
>27568|gw1.1228.1.1
MLNTPQQYVLPDLLPLIPFKGSFNPHYLEAATASAAWAESYKVVPERKRTAFLQSGSELLCAHAYPYASL
EQLRTCCDFVHILFAVDEISDEQTGKDAYATGRVFLDALRYAEWNDGSAIAKMTKEFRERIMKVDVPACH
NRLFKHCESYVNAFSVEAELRERDEILDIDSYIRLRRENSAVRCCFGLFGYVLGIDLPDSIFEHP
>94555|fgenesh3_pg.1874__1
MAEIHAAATFILHGTSSTPTTAANQATASTSNTSTTVPPGMIKTEDISMIIESLSRTIATLIQPTTHATH
NHAPAPRQQAAVHIHENSGAEQTCHYCGNRGCRVGTCEFAEIDIRDGKCKRNTEGKIVLPNGSFCPRTIP
GLTIRDRIYEWHRRNPTAPAAPTMLFEIDDRSTMQTFTLNTSSRIEALERELLQLRKRREVFDGVEILQR
KKPTIPVVTRSAEASGSGTSKGVAAPSSTSTSTAPPPTIPAALPAPPSPPTQSTSQPIATSAPPAPPVHP
FANARDATYAPPNVRNFATPPKPSNDKGKEPAYKTIVPVIQPKLAEESSSVR*
>24772|gw1.722.1.1
QPDPKLRTIEGVLFNALVKVGAVSQDNADDPIKVNLGRAARTDAGVHAAGNVVSMKLITAIPGVGDLISR
VNEELPPEIRLWNVLRVQNSFNARTRKYTYFFPSYLMIPPKPGSGLFQIAQQNDGNELKHIFWNSPAPEA
TWQDDLRRKRQYRMPPEQVEALRAASRKFEGSHNFHNFTVGRDFGDRSCMRHIKSVEIADPVVYGGTEWV
SVLFHGQSFMLHQRKMMSALVLACRTGSPPQTIEEMYGPRTVFIPKMPALGLLLEYPIFDTYTRRIASVN
ENLQPSDPEYRQPIDFEVHRGAIDQFKQEHIYSRMRSIEDTEGVFDAWVRFIDSYSGNDLLYLNPKGVIP
AAAVIKKGERRDNPFREKRRFDATSFSHNAPDEVRLDEDDLDEVDEVDKSKLVDMEG
>38314|gw1.1902.1.1
VQVALSLLDGDARAWATPIFAQLAAVQIRTQGATTPFADETAFLTAFKARFGNLDDAAAAQVELNKLCAD
KTVREKHTAAEFSVLFKGPADRSRYGDLELRDKYLSGIPSRVYRKIELETFATWQAADKRATEVEQILDV
SRARRPELNSFFSAQGRGRGGARGGAP
>96101|fgenesh3_pg.187__1
MADEGPLAPNQFTFAALFRGLSWRRATSGGPEAQAAMCARNASDVKLLWRQMLKIAEKNPQFEFDSHLIT
PAISALASGSPSDQLFAFDIVRDYLGLTKPGETPQPPRVQLSTHLLGEVLYLCNSSQKYRLGVHFFRQVV
DHPDNRAIITHRHVETVIKLFAGMSMMGSDEASAQALETLEWLLQEEASARNAGDLRPTITTFSLVLNVC
WRNGDWASATRTFELMTGYNPDDFADGSRVKEPEMQKRSPGRNIKLDTPAMAHIAHTALASQELANMRQC
LRIIDHIGAERLLHRPKALVDQSRSSQFMNDLEYYLAKLAKDLMEIVDEVVAKEPEMCSEEERERWKKIK
SQAKECRRYARPTRTPHTEESPLGSQRGLDATASAVDQEFSVRRTLRPSRLCMVHAYLVRRFHVTVKYPS
NLQSSTLGTHATDIGRSCISDTGRSPEMGLENAGDGGTNASSETAIDTGWYAPPGESPLIRPTVDMVFIG
IGATRPGALRARVLPRALRRKKYTAPATTSRISTSALNAMSASTAGIKLLTRSRDVMTSLESATVVEPEP
EVVVLAALGLVGIDQGEEFDVWVAHLARRVVVAKVIDGVNGTQDVVADQPVTIRMFCDHTFCKARSTYNS
PPPTETDWGINVPTQVDESLTKASDNDGIPKLQGDVDFGITGHNPLP*
>92226|fgenesh3_pg.2543__1
MRFVQRAASVSRTWRTTALNTSALWGTVVITRPRAPPLTVLTTLLERSRGAQLDIFLDLYHTGPRRQNVQ
RQDGPTYIKDAMQLLRQHIQRWRSLDLTWGMAFQWSDELDYMYGPFLTGTADALKSLHLSCVCRFIHQDD
VQRCDFTKGLSAPNLRSLDLDVPSATDLNSSKVTARFPSIQELRWRENCKPRWFHNSMDFMRMLGPLRDL
RHLTLDNVEVEDVKNEPLDDDEALVCLPALETLTFCDTNFATIRDMLSIVTAPQLRDLTILNLIHEDETA
SFHAFWQQPRRFPLLRTLNLEYNVDGLTIEELIDLWHHFQFFRSARIIHTFARDSNDFSMEDVLEVLSNA
QEDGRWLFPSLTSVAIYSKSNLATDGLRQLVGNRQETETEVPDIGVTGLQTLKIYAPAMVHSTDSDYFVQ
NLRHFDWIQGKPPPGCDKQHLSMASWAMQLTVYLRLMR*
>101523|fgenesh3_pg.260__1
MVRLLSNFIIPRCLHVPDEAEQPDWDMNVLVIPSERMNGYMRITAQPGEVVFDINLGKLMDGLPQLDAIL
SAPTFDGLTDVDVDVRILDGPDAERDEELAHELRLCLPRLDARVNLAIGFNGILYAARRARRPPFSRRRL
SRIGLDWDEDAGKLRCHRIERVSAQDAVVANEETSAEDDRCTNNATTGRILHEAAAYVDAERPSSSNPMD
ARVPSQPVCDDEPVPPHATAGLGMSVDISAPDNHDDELSALPGSVA*
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Ojalá con estos datos se pueda solucionar el problema...

Mil gracias de nuevo por tu atención ;)
Última edición por explorer el 2009-12-11 18:28 @811, editado 1 vez en total
Razón: Ortografía, anglicismos, abreviaturas telefónicas
Alfumao
Perlero nuevo
Perlero nuevo
 
Mensajes: 178
Registrado: 2009-12-10 11:20 @514

Re: Problema sobre utilidades de Perl y BioPerl

Notapor explorer » 2009-12-11 18:31 @813

Claro... lo que sigue a '>' NO coincide con la lista que se lee...

98448|fgenesh3_pg.4971__1

El número (98448) está acompañado de algo más: |fgenesh3_pg.4971__1

Si, suponemos, la secuencia está compuesto de un número, seguido de algo más, se puede cambiar la expresión regular por

$linea =~ /^>(\d+)/

De esa manera estamos buscando uno o más dígitos (\d+).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Siguiente

Volver a Bioinformática

¿Quién está conectado?

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

cron