Página 3 de 3

Re: Contar repeticiones secuencias de bases

NotaPublicado: 2010-05-01 00:01 @042
por asegurac
Por ejemplo,

la secuencia de entrada sería la misma de los ejemplos anteriores

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
ATGGAGTCTTTTAGAGAGTTTATCCAACAATTCAAAAAAAATAAGGCAGCGGTCGTTGGGGCTTGGATTGTGCT
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


y supongamos que el fichero de las repeticiones contiene solamente "AA" y "GG"

La salida deseada del programa sería:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
AA = 7 apariciones totales; 4 en tándem, localizadas entre las posiciones 33 y 41.

GG = 6 apariciones totales; 2 en tándem, localizadas entre las posiciones 57 y 61.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Re: Contar repeticiones secuencias de bases

NotaPublicado: 2010-05-01 06:53 @328
por explorer
A ver ahora, si acertamos... :)
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use File::Read;
  3.  
  4. use open 'locale';
  5.  
  6. my @repeticiones = read_file({ aggregate => 0 }, '2y4ntdb.txt');
  7. my $secuencia    = read_file('seq_pba.fasta');
  8.  
  9. chomp @repeticiones;    # no nos interesan
  10. $secuencia =~ s/\n//g;  #   los finales de línea
  11.  
  12. for my $repetición (@repeticiones) {
  13.  
  14.     my $apariciones = 0;
  15.     my $contiguas   = 0;
  16.     my @posiciones_contiguas;   # basadas en 1
  17.  
  18.     while ($secuencia =~ /($repetición)\1*/pg) {        # buscamos conjuntos de secuencias repetidas
  19.         my $veces = length(${^MATCH})                   # número de veces que se repiten
  20.                   / length $repetición                  # de forma contigua
  21.                   ;
  22.  
  23.         $apariciones += $veces;                         # sumamos las apariciones totales
  24.  
  25.         if ($veces > 1) {                               # si han aparecido más de una vez juntas
  26.             $contiguas += $veces;                       # sumamos como apariciones contiguas
  27.  
  28.             push @posiciones_contiguas, [               # guardamos las posiciones
  29.                 pos($secuencia) - length ${^MATCH},     # inicial y
  30.                 pos $secuencia                          # final
  31.             ];                                          # de esas secuencias contiguas
  32.         }
  33.     }
  34.  
  35.     print "$repetición = $apariciones apariciones totales";
  36.  
  37.     if ($contiguas) {
  38.         print "; $contiguas contiguas, localizadas entre las posiciones ";
  39.         print join q[, ], map { "$_->[0] y $_->[1]"  } @posiciones_contiguas;
  40.     }
  41.  
  42.     print ".\n";
  43. }
  44.  
  45. __END__
  46. AA = 7 apariciones totales; 4 contiguas, localizadas entre las posiciones 33 y 41.
  47. AT = 5 apariciones totales.
  48. AG = 6 apariciones totales; 3 contiguas, localizadas entre las posiciones 12 y 18.
  49. AC = 1 apariciones totales.
  50. TA = 3 apariciones totales.
  51. TT = 7 apariciones totales; 2 contiguas, localizadas entre las posiciones 8 y 12.
  52. TC = 4 apariciones totales.
  53. TG = 5 apariciones totales; 2 contiguas, localizadas entre las posiciones 68 y 72.
  54. GA = 4 apariciones totales; 2 contiguas, localizadas entre las posiciones 13 y 17.
  55. GT = 5 apariciones totales.
  56. GG = 6 apariciones totales; 2 contiguas, localizadas entre las posiciones 57 y 61.
  57. GC = 4 apariciones totales.
  58. CA = 4 apariciones totales.
  59. CT = 3 apariciones totales.
  60. CG = 2 apariciones totales.
  61. CC = 1 apariciones totales.
  62. AAAA = 2 apariciones totales; 2 contiguas, localizadas entre las posiciones 33 y 41.
  63. AAAT = 1 apariciones totales.
  64. AAAC = 0 apariciones totales.
  65. AAAG = 0 apariciones totales.
  66. TTTA = 2 apariciones totales.
  67. TTTT = 1 apariciones totales.
  68. TTTC = 0 apariciones totales.
  69. TTTG = 0 apariciones totales.
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4

Re: Contar repeticiones secuencias de bases

NotaPublicado: 2010-05-01 12:05 @545
por asegurac
Muy bien, muchas gracias, ¡¡funciona!!

Ahora solo haré una pequeña modificación para tome un fichero con miles de secuencias. Supongo tendré que introducir un bucle. Ya te contaré cómo me fue.

Saludos

Re: Contar repeticiones secuencias de bases

NotaPublicado: 2010-05-03 14:13 @634
por asegurac
Hola,

Ya he introduje el bucle para realizar la búsqueda en un fichero con miles de secuencias, y funcionó.

Gracias,

Saludos