Programa



El nombre del programa es busquEM.pl. Se ejecuta, como cualquier programa perl con el comando ./busquEM.pl. Al ejecutarse el programa aparecen por pantalla una serie de mensajes. El primero de ellos pide el nombre del archivo donde se encuentran las secuencias en formato FASTA (el archivo a de estar guardado en el mismo directorio que el programa). En caso de no poder abrir el archivo aparece el siguiente mensaje: No se puede abrir el archivo y el programa finaliza.

Seguidamente aparece un mensaje solicitando la longitud del motivo a buscar en las secuencias. Por último, aparece un mensaje solicitando la calidad mínima (treshold) deseada para seleccionar las ocurrencias del patrón obtenido en las secuencias.


Una vez realizada la entrada de los datos, el programa empieza a hacer operaciones.

En primer lugar, lee el archivo de entrada y separa cada secuencia colocándola en una posición de un vector. busquEM! acepta secuencias escritas indistintamente en mayúsculas, en minúsculas o en ambas cosas.

El siguiente paso es elaborar todos los posibles candidatos de cada secuencia (de longitud N, entrada por pantalla por el operador al inicio). Estos candidatos se almacenan en una matriz donde cada fila corresponde a una secuencia y cada columna a un candidato.

Una vez hecho esto, escoge un candidato al azar de cada secuencia. Estos candidatos servirán para crear la primera matriz de pesos del motivo. También se elabora una matriz de pesos del background.

Ahora que ya tenemos la matriz de pesos inicial y todos los posibles candidatos, comienza el paso E: el programa puntúa todos los candidatos en función de la matriz de pesos del motivo y re-escala el score de cada candidato respecto a los demás segmentos candidatos. El valor obtenido para cada candidato tras el re-escalado, será el peso que dicho candidato tendrá a la hora de modificar la matriz de pesos del motivo.

Ahora comienza el paso M: el programa modifica la matriz del motivo en función del peso de cada candidato. Por cada nucleótido de un candidato, según su posición dentro del motivo, actualiza la correspondiente posición en la matriz sumándole su peso.

Una vez llegados aquí, el programa repite los pasos E y M hasta obtener un resultado final.
El programa puede finalizar por dos motivos:


En nuestro caso el número límite de iteraciones es 100. Al llegar a este número el programa finaliza y nos muestra los resultados obtenidos.

Para comprobar la convergencia, nuestro programa utiliza como heurístico el total de scores de todos los candidatos, ya que es este valor el que utilizamos para re-escalar la puntuación de cada candidato y por tanto es el que establece el peso que cada candidato tendrá sobre la matriz.

El programa está obligado a hacer 10 iteraciones durante las cuales no se comprueba la convergencia. Pasadas estas 10 iteraciones, el programa resta el score total de la iteración presente con el score total de la iteración anterior. Si en 5 iteraciones seguidas el resultado de la resta es siempre menor de 0.5 consideramos que la matriz no se modifica significativamente entre una iteración y la siguiente y por lo tanto, el programa ha convergido hacia una solución.


busquEM! nos va informando por pantalla de lo que está realizando en ese momento a través de distintos mensajes: Nos indica el número de iteración en el que se encuentra, cuando inicia el paso E y cuando inicia el paso M.

Al finalizar nos muestra un mensaje indicando el motivo por el que se ha detenido: por convergencia o por límite de iteraciones. Tras informarnos del motivo de la finalización, nos indica las ocurrencias del motivo encontradas en cada una de las secuencias (sólo las que superan la calidad indicada por el operador). Además nos indica a que secuencia pertenece cada patrón y la posición en dicha secuencia.

Todos los mensajes que salen por pantalla pertenecen al canal de error de modo que aunque el programa se redireccione a un archivo de salida continuarán saliendo por pantalla.

Por otro lado, busquEM! genera dos archivos de salida, uno de texto (outfile.txt) y otro html (outfile.html).

Ambos archivos se crean en el mismo directorio en el que se encuentra busquEM!



En este enlace puede descargarse el programa busquEM!

En este enlace puede descargarse el set de secuencias de prueba utilizado para elaborar el programa: prueba.fa

En este enlace puede descargarse archivos de secuencias reales para usar con el programa: