Página 1 de 1

bioinfo: Vectores de sufijos para buscar patrones

NotaPublicado: 2011-03-24 15:54 @704
por explorer
«hemos aprendido las ventajas de usar vectores de sufijos (suffix arrays) para el problema de buscar patrones o subcadenas exactas en textos muy largos, como son las secuencias genómicas. Pero, ¿qué es un vector de sufijos? Trataré de explicarlo con el siguiente código en Perl:»

Artículo

Re: bioinfo: Vectores de sufijos para buscar patrones

NotaPublicado: 2011-03-24 20:15 @885
por explorer
Creo entender que el autor ha querido expresar en Perl un algoritmo de búsqueda para mostrarlo y entenderlo mejor, pero supongo que no es de aplicación en el mundo real, sino hacerlo con otros lenguajes que generen una solución compilada.

Perl es muy lento realizando esa tarea: haciendo un Bechmark, me sale que es de 20 a 30 veces más lento que usando index() (o rindex()).

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub match_pattern {
  2.     my($pat,$seq) = @_;
  3.     my $pos = -1;
  4.     while (-1 != ($pos = index $seq, $pat, ++$pos)) {  # buscamos $pat en $seq a partir de la siguiente posición a $pos
  5.         say "Encontrado en posición $pos";
  6.     }
  7. }
Coloreado en 0.013 segundos, usando GeSHi 1.0.8.4


Y esa ventaja es con el tamaño de la secuencia del ejemplo. Si el tamaño de la secuencia aumenta, mucho más aumenta la diferencia, a causa del tiempo empleado en la ordenación.

Se podría aumentar la prestación de make_suffix_array() usando alguna maniobra Orcish para evitar la ejecución de demasiadas funciones substr().

De todas formas, se agradece muchísimo mostrar algoritmos en código Perl, pues de todos ellos aprendemos bastante.