Página 1 de 1

Extraer secuencias usando un archivo con los ID

NotaPublicado: 2016-10-18 17:05 @754
por abraham03
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

Re: Extraer secuencias usando un archivo con los ID

NotaPublicado: 2016-10-18 18:09 @798
por explorer
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).

Re: Extraer secuencias usando un archivo con los ID

NotaPublicado: 2016-10-20 11:32 @522
por abraham03
¡¡¡ Muchas Gracias !!! :))