• Publicidad

Extraer secuencias usando un archivo con los ID

Perl aplicado a la bioinformática

Extraer secuencias usando un archivo con los ID

Notapor abraham03 » 2016-10-18 17:05 @754

Hola, buenos días. Tengo este código en Perl que modifiqué de acuerdo a lo que requiero de uno ya existente, para extraer secuencias usando el ID en un archivo .txt. Sin embargo, el archivo de salida me arroja las secuencias con los ID del archivo.txt y yo lo que quiero es que salga todo el nombre original de cada secuencia.

Sintáxis: (archivo_secuencias.fasta) [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
>Z85.T_1177507 Z85s 9PG0M:00018:00019 orig_bc= new_bc= bc_diffs=0
ACTGAGACACGGTCCAGACTCCTACGGGAGGCAGCAGTGGGGAATGGGTTGTAAAGCACTTTCAGTAGGGAGGAAAACTTGGGAATTAATACCCCCCAA
>X89.T_24577341 X89s 9PG0M:00022:00033 orig_bc= new_bc= bc_diffs=0
CGATTACTAGCGATTCCGACTGAATTGCAGACTCCAATCCGGATTTGCTTCCCCTCGCGGGCTTGCGACCCTCTGTGCCGACCATTGTAGCACGTGAGTA
>D89.T_36577341 D89s 9PG0M:00027:00047 orig_bc= new_bc= bc_diffs=0
CCAGCAGCCGCGGTAAGGATGAGGTGAAATTCGTAGATATCTGGAGGAACACCAGTGGCGAAGGCGGCCATCTGGACGGTGACTGACGCTCAGACGCGTG
>F106.T_4177341 F106s 9PG0M:00031:00045 orig_bc= new_bc= bc_diffs=0
ACAAGCGGTGGAGCATGTGGTTTAATTCGATTCGGGAATCCAGTGACAGGTGCTGCATGGCAACGAGCGCAACCCTTATCCTTAGTTGCCAGCACGTAATC
>Z79.T_1177341 Z79s 9PG0M:00018:00028 orig_bc= new_bc= bc_diffs=0
CCAGCAGCCGCGGTAATACAGAGGGGGCAAGCGTTGTTCGTCTGTTTAGTCAGGCGTGAAATCCCTGGGGGGAGAGGAGAGTGGAATTCCCAGTGTAGAGGT
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Sintáxis: (archivo_id.txt) [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Z85.T_1177507
Z79.T_1177341
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Lo que obtengo es
Sintáxis: (archivo_salida.txt) [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
>Z85.T_1177507
ACTGAGACACGGTCCAGACTCCTACGGGAGGCAGCAGTGGGGAATGGGTTGTAAAGCACTTTCAGTAGGGAGGAAAACTTGGGAATTAATACCCCCCAA
>Z79.T_1177341
CCAGCAGCCGCGGTAATACAGAGGGGGCAAGCGTTGTTCGTCTGTTTAGTCAGGCGTGAAATCCCTGGGGGGAGAGGAGAGTGGAATTCCCAGTGTAGAGGT
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Sin embargo, lo que quiero es (con el nombre original: >Z85.T_1177507 Z85s 9PG0M:00018:00019 orig_bc= new_bc= bc_diffs=0)
Sintáxis: (deseado.txt) [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
>Z85.T_1177507 Z85s 9PG0M:00018:00019 orig_bc= new_bc= bc_diffs=0
ACTGAGACACGGTCCAGACTCCTACGGGAGGCAGCAGTGGGGAATGGGTTGTAAAGCACTTTCAGTAGGGAGGAAAACTTGGGAATTAATACCCCCCAAGCTTGACGTCACCTACAGAAGA
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Este es el código que modifiqué:

¡¡¡ Muchas Gracias !!!!

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2.  
  3. use strict;
  4. use Getopt::Long;
  5.  
  6.  
  7. my ($id_file, $fasta_fie, $output_file);
  8. GetOptions (
  9.             'id=s'   =>\$id_file, #archivo con id
  10.             'fa=s'   =>\$fasta_fie, # archivo fasta
  11.             'ou=s'   =>\$output_file #archivo de salida
  12.            
  13.             );
  14.  
  15. if (!$id_file or !$fasta_fie or !$output_file){
  16.    print "error";
  17.    exit;
  18. }
  19.  
  20. my @list = ();
  21. open (LIST,$id_file) or die "Cannot open file $id_file: $!\n";
  22. while (my $id = <LIST>) {
  23.     chomp $id;
  24.     $id =~ s/\s//g;
  25.     push @list, $id
  26. }
  27. close LIST;
  28.  
  29. my %seq = ();
  30. my $sid = ();
  31. open (IN, $fasta_fie) or die "Cannot open file $fasta_fie: $!\n";;
  32. while (<IN>) {
  33.     if (/^\>(\S+)/) {
  34.         $sid = $1;
  35.         my @w = split /\|/, $sid;
  36.         if (@w > 2) {
  37.             $sid = $w[2];  
  38.         } else {
  39.             $sid = $w[0];
  40.         }
  41.     } else {
  42.         $seq{$sid} .= $_;
  43.     }
  44. }
  45. close IN;
  46.  
  47.  
  48. open (OUT, ">$output_file") or die "Cannot create file $output_file: $!\n";
  49. foreach my $id (@list) {
  50.     print OUT ">$id\n";
  51.     print OUT $seq{"$id"};
  52. }
  53. close OUT;
  54. exit;
  55.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
abraham03
Perlero nuevo
Perlero nuevo
 
Mensajes: 19
Registrado: 2016-08-05 15:52 @703

Publicidad

Re: Extraer secuencias usando un archivo con los ID

Notapor explorer » 2016-10-18 18:09 @798

Quita o comenta la línea 50.

Cambia la línea 41 por una llave de cierre, y elimina la línea 43 (es decir, eliminamos la parte del else{}, y dejamos la asignación de la línea 42 fuera del if() principal).
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: Extraer secuencias usando un archivo con los ID

Notapor abraham03 » 2016-10-20 11:32 @522

¡¡¡ Muchas Gracias !!! :))
abraham03
Perlero nuevo
Perlero nuevo
 
Mensajes: 19
Registrado: 2016-08-05 15:52 @703


Volver a Bioinformática

¿Quién está conectado?

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