196 2019 Callisaya Choquecota WC Espg Maestria Informatica
196 2019 Callisaya Choquecota WC Espg Maestria Informatica
196 2019 Callisaya Choquecota WC Espg Maestria Informatica
Escuela de Posgrado
TESIS
PRESENTADA POR:
TACNA - PERÚ
2018
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN
Escuela de Posgrado
PRESIDENTE : ..................................................................
Dr. Edwin Antonio Hinojosa Ramos
SECRETARIO : ..................................................................
M.Sc. Edgar Aurelio Taya Acosta
MIEMBRO : ..................................................................
Dra. Karin Yanet Supo Gavancho
ASESOR : ..................................................................
M.Sc. Hugo Manuel Barraza Vizcarra
ii
Agradecimiento
A Dios
A mi familia
de aliento
A mis profesores
iii
Dedicatoria
de bien
iv
CONTENIDO
Pág.
Agradecimiento iii
Dedicatoria iv
RESUMEN x
ABSTRACT xi
INTRODUCCIÓN 1
CAPÍTULO I 3
PLANTEAMIENTO DEL PROBLEMA 3
1.1. Descripción del problema 3
1.1.1. Antecedentes del problema 3
1.1.2. Problemática de la investigación 11
1.2. Formulación del problema 12
1.3. Justificación e importancia de la investigación 13
1.4. Alcances y limitaciones 15
1.5. Objetivos 16
1.5.1. Objetivo general 16
1.5.2. Objetivos específicos 16
1.6. Hipótesis 17
CAPÍTULO II 18
MARCO TEÓRICO 18
2.1. Antecedentes del estudio 18
2.2. Bases teóricas 24
2.2.1. La importancia de la comparación de secuencias 24
2.2.2. Alineamiento de secuencias: 25
2.2.3. Alineando con sistema de puntuación 26
2.2.4. Métodos de alineamiento de pares de secuencias 27
2.2.5. Programación dinámica para el alineamiento de secuencias 28
2.2.6. Alineamiento múltiple de secuencias 34
v
2.2.7. El puntaje en alineamientos múltiples de secuencias 35
2.2.8. Algoritmo centro estrella 36
2.2.9. El procesamiento paralelo 37
2.2.10. Niveles de paralelismo 38
2.2.11. La clase Parallel 40
2.3. Definición de términos 41
CAPÍTULO III 43
MARCO METODOLÓGICO 43
3.1. Tipo y diseño de la investigación 43
3.2. Población y muestra 44
3.2.1. Población 44
3.2.2. Muestra 44
3.3. Operacionalización de variables 45
3.4. Técnicas e instrumentos para recolección de datos 46
3.5. Procesamiento y análisis de datos 46
CAPÍTULO IV 47
PROPUESTA DE DISEÑO DE ALGORITMOS 47
4.1. Elaboración del algoritmos 47
4.1.1. Elaboración del algoritmo estrella paralelo 47
4.1.2. Elaboración del algoritmo basado en colonia artificial de abejas
para el alineamiento múltiple de secuencias 51
4.2. Análisis de complejidad de algoritmos 56
4.2.1. Análisis de complejidad del algoritmo estrella paralelo 56
4.2.2. Análisis de complejidad del algoritmo basado en colonia artificial
de abejas para el alineamiento múltiple de secuencias lo 56
CAPÍTULO V 58
RESULTADOS 58
5.1. Descripción del experimento realizado 58
5.2. Plan de pruebas 59
5.3. Análisis del indicador Tiempo de Ejecución 59
5.4. Análisis del indicador puntaje del alineamiento 63
vi
CAPÍTULO VI 68
DISCUSIÓN 68
CONCLUSIONES 69
RECOMENDACIONES 70
REFERENCIAS BIBLIOGRÁFICAS 71
ANEXOS 76
vii
ÍNDICE DE TABLAS
Pág.
viii
ÍNDICE DE FIGURAS
Pág.
ix
RESUMEN
x
ABSTRACT
xi
INTRODUCCIÓN
2
CAPÍTULO I
4
diferentes investigaciones para intentar apoyar al problema de alinear
múltiples secuencias.
5
secuenciación de proteínas ha creado una gran cantidad de procesos a
analizar que excede de la capacidad de los modelos informáticos
tradicionales. Por lo tanto, un modelo de alineación de secuencias múltiples
en paralelo efectivo capaz de resolver estos problemas está en una gran
demanda. En sus resultados diseñan soluciones tanto para la programación
dinámica por pares algoritmos de adaptación local y global sobre el modelo
de computación reconfigurable malla de tiempo de gestión. Para alinear
secuencias m con un máximo de longitud n, que la combinación de las
soluciones de programación dinámica por pares paralelos con
componentes paralelos de nuevo diseño. También precisan que ello reduce
con éxito la complejidad de tiempo de ejecución de la secuencia del
algoritmo del alineamiento múltiple progresiva de O (m x n) a O (m)
utilizando O (m x n3) unidades para los sistemas de puntuación. La solución
general de algoritmo de alineación de secuencias múltiples toma O (m x
n4) unidades de procesamiento y completa en el tiempo O (m).
Lalwani, S., Kumar, R. y Gupta, N. (2013) en su trabajo titulado “A
Review on Particle Swarm Optimization variants and their applications to
Multiple Sequence Alignment”, precisan que la alineación de secuencias
múltiples es una de las técnicas más utilizadas en bioinformática para
descubrir información funcional, estructural y evolutiva de secuencias
biológicas. La alineación de secuencias múltiples es un problema NP-
completo y una zona difícil de la bioinformática. Los enfoques clásicos no
son eficientes para este tipo de problema debido a la mayor complejidad de
tiempo y espacio. En este trabajo también precisan que la optimización de
enjambre de partículas es una de las mejores metaheurísticas, analizan las
variantes de optimización de enjambre de partículas y sus aplicaciones
para la alineación de secuencias múltiples.
6
Wang, L., Leebens, J., Kerr, P., Beckmann, K., Pamphilis, C. y
Warnow, T. (2011), en su obra titulada “The Impact of Multiple Protein
Sequence Alignment on Phylogenetic Estimation”, expresan que la
alineación de secuencias múltiples es normalmente el primer paso en la
estimación de los árboles filogenéticos, con la suposición de que si mejoran
las alineaciones mejoran, también lo harán reconstrucciones filogenéticas.
Durante la última década, se han desarrollado nuevos métodos de
alineación de secuencias múltiples para mejorar los análisis comparativos
de estructura de proteínas, pero estos nuevos métodos no han sido
utilizados normalmente en los análisis filogenéticos. En el trabajo, nos
informan sobre un estudio de simulación que han realizado para evaluar las
consecuencias del uso de estos nuevos métodos de alineación de
secuencias múltiples en términos de la reconstrucción filogenética
resultante. Descubrieron que mientras la precisión de alineación se
correlaciona positivamente con exactitud filogenética, la cantidad de mejora
en la estimación filogenética resulta de una mejor alineación y que puede
variar desde muy pequeño a sustancial. Observaron que la precisión
filogenética es altamente correlacionada con la alineación de precisión,
cuando las secuencias son más difíciles de alinear, y que la variación en la
alineación de precisión puede tener poco impacto en filogenética precisión,
cuando las tasas de error de alineación son generalmente bajos. Discuten
estas observaciones y las implicaciones para sus futuros trabajos.
Mokaddeml, A y Elloumi, M. (2013) en su trabajo titulado “A Multiple
Sequence Alignment Algorithm Based on a New Distance and a New Score
Function”, presentan un nuevo algoritmo de alineamiento progresivo,
llamado Motalign, para múltiples secuencias de alineación (MSA). Su
algoritmo adopta una distancia basada nuevo perfil para comparar dos
secuencias biológicas y una nueva función de puntuación, llamada GPSP,
7
para alinear los perfiles. Ellos comparan los resultados obtenidos por su
algoritmo a los obtenidos por otros, como CLUSTALW2, muscular y
MAFFT, mediante el uso de la puntuación de la columna (CS) y la suma de
parejas consigan (MSF), obteniendo resultados relevantes.
8
algoritmo colonia artificial de abejas (ABC) para resolver el problema de
alineación de secuencias múltiples (MSA). Indican que el algoritmo ABC es
un enfoque novedoso optimización inspirado por un comportamiento
inteligente particular de enjambres de abejas. Tomado el carácter discreto
del problema MSA en consideración, se introduce un nuevo método de
algoritmo de ABC para determinar una fuente de alimento en el barrio. El
rendimiento de su enfoque ABC se compara con otros algoritmos utilizados
comúnmente para MSA, los resultados computacionales demuestran la
superioridad del nuevo algoritmo de ABC sobre algoritmo genético (GA) y
la optimización de enjambre de partículas (PSO) para muchas secuencias
con diferente longitud y la identidad. El nuevo enfoque indica que es más
sólido y obtiene una mejor calidad matemática y biológica.
Ozturk, C. y Aslan, S. (2016) en su trabajo titulado “A new artificial
bee colony algorithm to solve the multiple sequence alignment problem”,
señalan que la alineación de tres o más secuencias al mismo tiempo es uno
de los problemas más difíciles en la bioinformática. En el trabajo, proponen
un nuevo algoritmo de la colonia artificial de abejas (ABC-alineador) para
resolver alineación de secuencias múltiples. Múltiples alineamientos
obtenidos de ABC-alineador se comparan en términos de la SPS, COFFEE
y el SP estándar de las puntuaciones con optimización por enjambre de
partículas (PSO), Algoritmos Genéticos (GA) y el algoritmo básico artificial
Colonia de abejas (ABC); con la alineación de secuencias de Algoritmos
Genéticos (SAGA) y paquetes de software ClustalX; y con nueve
herramientas de alineación muy conocidos que incluyen CLUSTALW,
CLUSTAL OMEGA, DIALIGN-TX, MAFFT, músculo, POA, Probalign,
ProbCons y T-COFFEE, sobre las secuencias extraídas de la BAliBASE
1.0, 3D_ali y BAliBASE 3.0 bancos de datos de referencia,
respectivamente. A partir de los resultados de la simulación, concluyeron
9
que el algoritmo propuesto ABC-alineador supera a los otros meta-
heurísticos basados en la población y obtienen mejores puntajes que los
paquetes de software utilizados en los experimentos sin requerir ninguna
información adicional, o aplicación de procedimientos complejos.
Borovska, P., Gancheva, V., Markov, S., Georgiev, I. y Asenov, E.
(2011) en su trabajo titulado “Parallel Performance Evaluation and Profiling
of Multiple Sequence Nucleotide Alignment on the Supercomputer
BlueGene/P”, dan a conocer que la alineación de secuencias múltiples es
un método importante en el análisis de ADN y las proteínas. ClustalW se
ha convertido en la herramienta más popular e implementa un método
progresivo para la alineación de secuencias múltiples. El objetivo del
estudio fue proponer la evaluación del desempeño de la eficiencia de
múltiples alineación paralela en el superordenador Blue Gene / P para el
estudio de caso de la investigación de las secuencias de nucleótidos virales
y encontrar el consenso motivos y dominios variables en los diferentes
segmentos del genoma del virus de la gripe. La evaluación del desempeño
paralelo y perfiles de alineación de secuencias múltiples fueron realizados
sobre la base de la aplicación del programa paralelo que se basa en el
método ClustalW y una base de datos de réplica local de todos los
aislamientos disponibles de los ocho segmentos del virus de la gripe A. Se
realizaron pruebas paralelas con parámetros de rendimiento, tiempo de
ejecución, el tiempo de aceleración y perfiles que se estimaron
experimentalmente. La estimación de rendimiento y de perfiles de análisis
demostró que el sistema paralelo está bien equilibrado debido a la
actuación de la distribución de datos a todos los demás procesadores así
como la comunicación y la sincronización.
10
1.1.2. Problemática de la investigación
11
1.2. Formulación del problema
12
1.3. Justificación e importancia de la investigación
13
colectiva como de la colonia artificial de abejas. La mayoría de
investigaciones no dan detalles de una implementación para dichos
algoritmos y una descripción en pseudocódigo ayudaría a ese fin, siendo
este proyecto de gran valor académico para futuras investigaciones en
estas áreas, a fin de plantear nuevas propuestas de trabajo.
14
1.4. Alcances y limitaciones
Alcances
Limitaciones
15
1.5. Objetivos
16
1.6. Hipótesis
17
CAPÍTULO II
MARCO TEÓRICO
esa fecha. Los autores esperan que su trabajo sea muy beneficioso para
algoritmo ABC.
mundo real a pesar de que utiliza menos parámetros de control y que puede
19
multimodales y multidimensionales. La principal ventaja de ABC es que no
por la creciente dimensión del problema. ABC, al igual que otros algoritmos
20
El valor final de la aptitud solución se ve reforzada por alrededor de 8% en
Path Problem in Raster GIS”, nos refieren sobre la aplicación del algoritmo
21
algoritmo de Dijkstra. Los resultados también indican que las rutas a base
de mayor tamaño.
rendimiento de la red es una gran opción con el fin de reducir los tiempos
trabajos similares.
22
Aguilar, A. (2014) en su tesis titulada “Un algoritmo basado en la
tipo.
de las abejas, precisando que este algoritmo ofrece una solución casi
23
numerosos y diferentes problemas de optimización. El mecanismo de
24
bases de datos de secuencias. Una nueva secuencia se analiza mediante
la extrapolación de las propiedades de sus 'Vecinos' en una búsqueda de
base de datos. Estos métodos se han aplicado durante las últimas tres
décadas con mucho éxito y han ayudado a identificar la función biológica
de muchas secuencias de proteínas, así como para revelar muchas
relaciones distantes e interesantes entre las familias de proteínas. En
realidad, más secuencias han sido supuestamente caracterizadas por la
búsqueda de bases de datos que los de cualquier otra tecnología. (Higgins
y Taylor, 2000, pp. 167–168)
Las cuestiones clave a tomar en cuenta al alinear son:
(1) ¿Qué tipo de alineación se deben considerar?
(2) El sistema de puntuación utilizado para clasificar las alineaciones
(3) El algoritmo usado para encontrar una alineación con puntuación
óptima.
(4) Los métodos estadísticos utilizado para evaluar la importancia de
una puntuación de alineamiento.
(Durbin, Eddy, Krogh y Mitchison, 1998, p. 12)
25
búsqueda consiste en hacer un alineamiento por pares de la secuencia de
consulta a todas las secuencias en la base de datos, y ordenar las
alineaciones resultantes de la puntuación de alineamiento. Los éxitos son
algunas de las mejores secuencias de la base de datos que tienen una
alineación de puntuación con la secuencia de consulta.
Si se logra generar un algoritmo eficiente, se obtendrá una buena
posición para ir a pescar en los bancos de datos de secuencias
relacionadas. Este análisis se complica al considerar los GAPS (huecos).
En la figura 1, se aprecia ejemplos de alineamiento (Lesk, 2002, p. 154).
26
tercera base, y mediante la supresión de la quinta base G. La alineación
correspondiente se muestra en la figura 2.
27
c) Word o k-tupla métodos, tales como el utilizado por los programas
FASTA y BLAST.
El método de programación dinámica, se utiliza para alineación
global de secuencias de Needleman y Wunsch (1970) y garantiza en un
sentido matemático proporcionar la alineación óptima (mejor o más alta
puntuación), incluyendo la elección de la matriz de puntuación y la brecha
de sanciones. El método de programación dinámica también puede ser
lento, debido a la cantidad de etapas de cálculo, que aumentan
aproximadamente como el cuadrado o el cubo de las longitudes de
secuencia. El requisito de memoria de la computadora también aumenta
con el cuadrado de la longitud de la secuencia. Por lo tanto, es difícil utilizar
el método para secuencias muy largas (Mount, 2001, pp. 53–57).
28
anterior que se utilizó para llegar a la alta puntuación. Cuando todas las
posiciones en la matriz ha sido rellenado, se realiza una etapa de rastreo
(Gibas y Reilly, 2001, pp. 157–158).
Ejemplo de un alineamiento usando la función de la ecuación 1 se
muestra en la figura 3, y resultado de la alineación en la figura 4.
[1]
29
Por lo tanto, los datos de entrada y salida para el algoritmo
corresponden a:
Entrada: Cadenas v y w, y una matriz de puntuación δ
Salida: Un alineamiento de v y w cuyo puntaje es definido por la
matriz de puntuación δ, es el máximo de todos los posibles alineamientos
de v y w (Jones y Pevzner, 2004, p. 177).
El alineamiento se realiza en 3 pasos como indica Pevsner: paso 1
inicialización de la matriz, paso 2 llenado de la matriz de Scores, paso 3
identificación del Alineamiento (Traceback).
Las figuras 5 y 6 detallan todo este proceso paso a paso (Pevsner,
30
Figura 5: Procedimiento para los pasos de inicialización y llenado de la
matriz
Fuente: Pevsner (2009)
31
En la figura 5 se muestra en (a) inicialización en (b) función a usar
en la matriz y el puntaje respectivo de su funcion de similitud en (c) el
llenado de cada celda depende de las posiciones superior, izquierda y
diagonal, en (d) cálculo de la celda de la segunda fila y segunda columna
en (e) cálculo de la celda de segunda fila y tercera columna en (f) llenado
de la segunda fila y en (g) matriz de scores llenas con la función de similitud
respectiva.
32
El pseudocódigo respectivo para los pasos 1 y 2 del alineamiento
global se observa en seguidamente, y a continuación el paso 3 de
Traceback.
Algorithm Similarity
input: sequences s and t
output: similarity between s and t
m |s|
n |t|
for i0 m do
a[0,j] j x g
for i 1 to m do
for j 1 to n do
a[i,j] max(a[i –I, j] + g,
a[i-I,j-1]+p(i,j),
a[i, j-1] + g)
return a[m,n]
33
Algorithm Align
input: indices I, j, array a given by algorithm Similarity
output: aligment in align-s, align-t, and length in len
if i=0 and j=0 then
len 0
else if > 0 and a[i,j] =a[i-1,j] + g then
Align(i-1, j, len)
len len +1
align-s[len] s[i]
align-t[len] -
else if > 0 and j > 0 and a[i, j] = a[i-1, j-1] + p(i,j) then
Align(i-1,j-1,len)
len len +1
align-s[len] s[i]
align-t[len] t[j]
else // has to be j >0 and a[i,j] = a[I, j-1] + g
Align(i, j-1, len)
len len +1
align-s[len] -
align-t[len] r[j]
34
conservados y funcionalmente críticos pueden ser identificados en un
alineamiento múltiple de proteínas. La alineación de secuencias múltiples
es también un prerrequisito esencial para llevar a cabo el análisis
filogenético de las familias de secuencias y predicción de estructuras
secundarias y terciarias de proteínas. En teoría, es posible utilizar la
programación dinámica para alinear cualquier número de secuencias como
para la alineación por parejas. Sin embargo, la cantidad de tiempo y la
memoria de computación que requiere aumentan exponencialmente a
medida que el número de secuencias aumenta. Como consecuencia de
ello, la programación dinámica completa no se puede aplicar para conjuntos
de datos de más de diez secuencias. En la práctica, se utilizan con mayor
frecuencia los enfoques heurísticos (Xiong, 2006, p. 63).
35
[2]
36
Figura 7: Ejemplo de uso para alinear con el algoritmo centro estrella
Fuente: (Setubal & Meidanis, 1997, p. 78)
37
normalmente del mismo tipo, interconectados de cierta manera para que la
coordinación de sus actividades y el intercambio de datos. ¿Cómo se debe
evaluar un algoritmo para su conveniencia para el procesamiento en
paralelo? Al igual que en el caso de los algoritmos secuenciales, hay varios
criterios importantes, como el rendimiento del tiempo, la utilización del
espacio, y capacidad de programación. La situación de los algoritmos
paralelos es más complicada debido a la presencia de parámetros
adicionales, tales como el número de procesadores, las capacidades de las
memorias locales, el esquema de comunicación, y los protocolos de
sincronización (JáJá, 1997, pp. 2–3).
Actualmente, es rutinario tener procesadores con muchos núcleos y,
posiblemente, la capacidad de ejecutar múltiples flujos de instrucciones
dentro de cada núcleo. En otras palabras, la tecnología multinúcleo será la
corriente principal. Es de vital importancia que las futuras aplicaciones
puedan hacer uso efectivo del paralelismo que está presente en nuestro
hardware. Pero, a pesar de importantes avances en la tecnología de
compilación, tendrá el programador que ayudar, mediante la descripción de
la concurrencia que se encuentra en los códigos de la aplicación
(Chapman, Jost, & Van der Pas, 2008, pp. 1–3).
38
• Paralelismo a nivel de datos, en los que operamos simultáneamente en
varios trozos de un dato o en varios datos. Ejemplos, son la adición de
bits en paralelo, multiplicación y división de números binarios,
procesadores de vectores y matrices sistólicas para hacer frente a
varias muestras de datos.
• Paralelismo a nivel de instrucción (ILP), en la que al mismo tiempo
ejecutar más de una instrucción por parte del procesador. Un ejemplo,
es el uso de la canalización de instrucciones.
• Paralelismo a nivel de hilo (TLP), un hilo es una parte de un programa
que comparte recursos de procesador con otros hilos. Un hilo a veces
se llama un proceso ligero. En TLP, múltiples subprocesos de software
se ejecutan simultáneamente en un procesador o varios procesadores.
• Paralelismo a nivel de proceso, un proceso es un programa que se
ejecuta en el equipo. Un proceso de reserva de sus propios recursos
de la computadora, como espacio de memoria y registros. En este nivel
varios programas se están ejecutando de forma simultánea sobre uno
máquina o en varias máquinas.
La más famosa taxonomía procesador fue propuesto por Flynn sobre
la base de los datos y las operaciones realizadas en estos datos:
• Único flujo de datos simple instrucción (SISD), este es el caso del
procesador único.
• Instrucción simple flujo de datos múltiples (SIMD), todos los
procesadores ejecutan la misma instrucción en diferentes datos. Cada
procesador tiene sus propios datos en una memoria local, y los datos
de cambio procesadores entre sí a través de esquemas de
comunicación típicamente simples. Muchas aplicaciones científicas y
de ingeniería se prestan para el procesamiento en paralelo con este
esquema. Ejemplos de tales aplicaciones incluyen el procesamiento de
39
gráficos, compresión de vídeo, análisis de imágenes médicas, y así
sucesivamente.
• Único flujo de datos múltiple instrucción (MISD), se podría argumentar
que las redes neuronales y máquinas de flujo de datos son ejemplos
de este tipo de procesadores en paralelo.
• Instrucción de flujo de datos múltiple Múltiple (MIMD), cada procesador
está ejecutando sus propias instrucciones sobre sus datos locales.
Ejemplos de tales procesadores paralelos son procesadores
multinúcleo y multihilo multiprocesadores en general (Smith, 1993, pp.
14–16).
40
2.3. Definición de términos
41
SIMD: Simple instrucción y múltiples datos, refiere que una orden es
aplicada a muchos datos en forma simultánea.
SPEEDUP: Incremento de la aceleración medida con la que se ve el
rendimiento de la programación paralela con la secuencial.
TIEMPO DE EJECUCIÓN: Lapso en el cual el computador demora
en resolver un problema.
TPL: Librería de programación de tareas. Task Parallel Library,
difundido por Microsoft.
ALGORITMO BIOINSPIRADO: Se basa en emplear analogías con
sistemas naturales. Tienen como características ser auto - adaptativos,
auto-organizados y ser capaces de auto-aprender. Un sistema es
adaptativo si mejora su desempeño en el tiempo. Un sistema es auto–
organizativo si aumenta su organización con el tiempo. Debido a su
capacidad de resolver problemas complejos se utiliza actualmente en
muchos campos como logística, diseño en ingeniería, etc.
ALGORITMO DE ENJAMBRE: Es una rama de la inteligencia
artificial que estudia el comportamiento colectivo de los
sistemas descentralizados, auto-organizados, naturales o artificiales. El
concepto se emplea en los trabajos sobre inteligencia artificial.
42
CAPÍTULO III
MARCO METODOLÓGICO
3.2.1. Población
3.2.2. Muestra
44
3.3. Operacionalización de variables
Definición Indicadores
Variable Definición conceptual
operacional
Variable Algoritmo centro estrella
independiente diseñado con la técnica de
Algoritmo centro programación que utiliza a
estrella paralelo los múltiples procesadores
del computador para
realizar una o varias
tareas.
45
3.4. Técnicas e instrumentos para recolección de datos
46
CAPÍTULO IV
48
T= auxiliar para intercambio y garantizar que p tenga la mayor
longitud.
MaxL y MinL= contienen la máxima y minima longitud.
C= contiene las secuencias unidas.
49
Algoritmo 3 wunsch (requiere sec1, sec2, devuelve puntaje,
sec1alineada, sec2alineada)
Requiere:
La función max (Máximo de 3 números), la función de similitud
S y el puntaje del gap, la función Invertir_texto que invierte el
orden del texto
Las longitudes de las secuencias n y m
Asegurar:
Para i=0 Hasta n Hacer
f(i,0)=i x gap
Fin Para
Para i=0 Hasta m Hacer
f(0,i)=i x gap
Fin Para
Para i=1 Hasta n Hacer
Para j=1 Hasta m Hacer
f(i,j)=max(f(i-1,j)+gap, f(i-1,j-1)+s(sec1, sec2, i,j), f(i,j-1)+gap)
Fin Para
Fin Para
i=n /*Inicio del traceback*/
j=m
Mientras (i > 0) o (j > 0) hacer
Si (i >0 y j=0) o (i>0 y j >0 y (f[i, j]=f[i - 1, j]+gap)) entonces
Asec1 = Asec1 + sec1[i - 1]
Asec2 = Asec2 + "-"
i=i-1
Si no
Si (i=0 y j>0) o (i >0 y j >0 y f[i, j]=f[i, j -1]+gap) entonces
Asec1 = Asec1 + "-"
Asec2 = Asec2 + sec2[j - 1]
j=j-1
Si no
Asec1 = Asec1 + sec1[i - 1]
Asec2 = Asec2 + sec2[j - 1]
i=i-1
j=j-1
fin si
fin si
Fin mientras
Asec1 = Invertir_texto(Asec1)
Asec2 = Invertir_texto (Asec2)
Val=f(n,m)
/*El puntaje es Val y los alineamientos en Asec1 y en Asec2 */
50
4.1.2. Elaboración del algoritmo basado en colonia artificial de abejas
para el alineamiento múltiple de secuencias
51
Algoritmo 4 Algoritmo de la colonia artificial de abejas
Requiere:
Función Generar Alineamiento Aleatorio
Función GenerarCadenaFavoritaYSupGap(sec)
Función InsertarySuprimirGap(GapT, sec)
Función de evaluación Seval(s1,s2, i)
Asegurar
Ingresamos las secuencias
Para ne=1 Hasta nenjambre Hacer
Para B=1 Hasta nscout Hacer
Generar alineamiento aleatorio
Construimos la secuencia favorita
Evaluamos las secuencias con la secuencia favorita
Guardamos el alineamiento en la lista de
optimización.
Fin Para
Para B=1 Hasta nobservadoras Hacer
Seleccionar un alineamiento de manera aleatoria de
la lista de optimización
Seleccionar la secuencia con el menor puntaje
Insertar y eliminar un gap de manera aleatoria
Evaluamos la nueva secuencia con la secuencia
favorita
Si es de mayor calidad entonces
La guardamos en la lista de optimización
Si no
Descartamos el nuevo alineamiento
Fin si
Fin Para
Seleccionamos el alineamiento que tenga mayor calidad de
la lista de optimización.
Guardamos este alineamiento la lista de alineamiento Elite
Fin Para
Seleccionar el mejor alineamiento del alineamiento Elite
Mostrar el mejor alineamiento Elite /* Informar a la abeja madre */
52
Algoritmo 5 GenerarCadenaFavoritaYSupGap(secuencias[])
Requiere:
Un arreglo de secuencias “secuencias”
La longitud de la mayor secuencia L
Un arreglo de letras letras(A, C, T, G)
La función Remover() que quita una letra de una posición
especifica
Asegurar:
Para i = 0 Hasta L-1 Hacer
Para k = 0 Hasta 3 Hacer
num[k] = 0
Fin Para
Para j = 0 Hasta p-1
En caso de seq[j][i] Haga
Caso 'A': num[0] = num[0] + 1
Caso 'C': num[1] = num[1] + 1
Caso 'T': num[2] = num[2] + 1
Caso 'G': num[3] = num[3] + 1
Fin Caso
Fin Para
mayor = num[0]
imayor = 0
Para j = 1 Hasta 3 Hacer
Si mayor < num[j] entonces
mayor = num[j]
imayor = j
fin si
Fin Para
Si mayor = 0 entonces
Para j = 0 Hasta p-1 Hacer
Remover(seq2[j] ,i)
Fin para
L = L - 1;
i = i - 1;
Si no
seq3 = seq3 + letras[imayor]
Fin si
Fin para
53
Figura 9: Puntajes realizados de las secuencias con la secuencia favorita
Fuente: Anexo 6
54
Algoritmo 6 InsertarySuprimirGap(GapT, sec)
Requiere:
Una secuencia sec
El total de Gaps de la secuencia sec (Gapt)
La función Rand(inicio,fin) que genera un número aleatorio
entre el inicio y fin.
La función InsertarT() que inserta en un texto en una
determinada posición una letra.
La función Longitud() que indica la cantidad de letras de un
texto
Asegurar:
Si Gapt != 0 entonces
lsec = Longitud(sec)
iig = Rand(0, lsec + 1)
InsertarT(sec, iig, "-")
eg = Rand(1, Gapt + 1)
ge = 0
Para i = 0 Hasta lsec Hacer
Si sec[i] = '-' entonces
ge = ge + 1
Si i = iig entonces
ge = ge - 1
Si no
Si ge = eg entonces
sec = sec.Remove(i, 1)
i = lsec
Fin si
Fin si
Fin si
Fin para
Fin si
/* sec contendrá la nueva secuencia */
55
4.2. Análisis de complejidad de algoritmos
56
alineamiento aleatorio, el cual su complejidad es de O(p),
GenerarCadenaFavoritaYSupGap el cual su complejidad es de O(n*p),
InsertarySuprimirGap que tiene una complejidad de O(n), la evaluación de
las secuencias con la secuencia favorita que es de complejidad O(n*p) e
Insertar y eliminar un gap de manera aleatoria que es de complejidad O(n).
Finalmente la complejidad del algoritmo colonia artificial de abejas
estará dada por:
O(p) + O(n*p) + O(n) + O(n*p) + O(n) = O(n*p)
57
CAPÍTULO V
RESULTADOS
59
alinear (un total de 30 grupos), realizándose 30 alineaciones por grupo de
longitudes aproximadas de 90 a 2 700 pares de bases (pb). Los tiempos de
ejecución (en milisegundos) resultados del experimento se observan en las
figura 13, figura 14 y figura 15.
60
Figura 14. Tiempos de ejecución para el basado en colonia artificial de
abejas según la longitud y número de secuencias a alinear
Fuente: Elaboración propia
Figura 15. Tiempo de ejecución del algoritmo centro estrella paralelo con
tiempos de ejecución menores a 25000 milisegundos según la
longitud y número de secuencias a alinear
Fuente: Elaboración propia
61
Se realizó la regresión lineal múltiple para los tiempos de ejecución
de ambos algoritmos según la ecuación 3:
Y= a0+a1X1+a2X2 , [3]
En donde :
Y= el tiempo de ejecución en milisegundos.
X1= la longitud de la secuencia.
X2= el número de secuencias a alinear
a0= valor del interceptor.
a1= coeficiente del X1.
a2= coeficiente del X2.
Los resultados de la regresión lineal para el algoritmo de la colonia
artificial de abejas indican:
a0= -6 677,9304.
a1= 6,5477.
a2= 267,5531.
Con el coeficiente de determinación R2 = 0,8365.
Siendo el coeficiente de determinación más próximo a 1 se acepta
que la Ecuación 2 representa a estos datos.
Y= -6 677,9304+6,5477X1+267,5531X2, [4]
Los resultados de la regresión lineal para el algoritmo centro estrella
paralelo indican:
a0= -36 903,1656.
a1= 24,2725.
a2= 1 590,2548.
Con el coeficiente de determinación R2 = 0,6878
62
Siendo el coeficiente de determinación más próximo a 1 se acepta
que la ecuación 5 representa a estos datos.
Y= -36 903,1656+24,2725X1+1 590,2548X2, [5]
Comparando los coeficientes de X1 y X2 en las ecuaciones 4 y 5 se
verifica que la variable X2 (número de secuencias a alinear) es la que mayor
incremento genera en el tiempo de respuesta, por lo tanto es la más
influyente.
Comparando el coeficiente a1 de las ecuaciones 4 y 5 se verifica
que el coeficiente a1 de la ecuación 4 es aproximadamente 4 veces menor
que el coeficiente a1 de la ecuación 5, lo cual indica que el tiempo de
respuesta total del algoritmo de la colonia artificial de abejas recibe un
aumento de una cuarta parte del incremento que recibe el algoritmo estrella
paralelo por cada incremento en la longitud promedio de las secuencias a
alinear.
Comparando el coeficiente a2 de las ecuaciones 4 y 5 se verifica que
el coeficiente a2 de la ecuación 4 es aproximadamente 6 veces menor que
el coeficiente de a2 de la ecuación 5, lo cual indica que el tiempo de
respuesta total del algoritmo de la colonia artificial de abejas recibe un
aumento de una sexta parte del incremento que recibe el algoritmo estrella
paralelo por cada secuencia a alinear adicional.
63
Análisis de normalidad de datos
Las hipótesis a probar fueron:
Tabla 1
Resultados de la prueba de normalidad con SPSS
64
Al ser el valor de p< α se rechaza Ho para ambos algoritmos. Es
decir los puntajes obtenidos por el algoritmo centro estrella paralelo y el
colonia artificial de abejas no siguen una distribución normal requisito
necesario para realizar una prueba T según Limache y Limache (2017),
dado que no se cumplió el supuesto de normalidad se aplicó la prueba U
de Mann Whitney.
65
Tabla 2
Rangos de la prueba de Mann-Whitney
Tabla 3
Estadísticos de prueba de Mann-Whitney
66
Tabla 4
Valores descriptivos de los algoritmos estudiados
67
CAPÍTULO VI
DISCUSIÓN
Borovska, P., Gancheva, V., Markov, S., Georgiev, I. y Asenov, E. (2011). Parallel
Performance Evaluation and Profiling of Multiple Sequence Nucleotide
Alignment on the Supercomputer BlueGene/P. The 6th IEEE International
Conference on Intelligent Data Acquisition and Advanced Computing
Systems: Technology and Applications.
Chand, J., Sharma, H. y Singh, S.(2013). Artificial bee colony algorithm: a survey.
Int. J. Advanced Intelligence Paradigms, Vol 5.
Chapman, B., Jost, G., y Van der Pas, R. (2008). Using OpenMP: portable shared
memory parallel programming. (M. Press, Ed.) (p. 353). London, England.
Durbin, R., Eddy, S., Krogh, A., y Mitchison, G. (1998). Biological Sequence
Analysis: Probabilistic models of proteins and nucleic acids. (C. U. Press,
Ed.) (p. 356). New York, United States.
Eldrandaly, K., Hassan, M. y AbdelAziz, N. (2015). A Modified Artificial Bee Colony
Algorithm for Solving Least-Cost Path Problem in Raster GIS. An
International Journal of Applied Mathematics & Information Sciences.
Freeman, A. (2010). Pro .NET 4 Parallel Programming in C#. (Apress, Ed.) (p.
328). Berkeley, CA: Apress. doi:10.1007/978-1-4302-2968-1
Freeman, DH (1987) Applied categorical data analysis. New York. Marcel Dekker
Inc.
JáJá, J. (1997). An Introduction to Parallel Algorithms. (A. Wesley, Ed.) (p. 566).
United States of America.
72
Karaboga, D., Gorkemli, B., Ozturk, C. y Karaboga, N. (2012). A comprehensive
survey: artificial bee colony (ABC) algorithm and apllications, Artif Intell
Rev. Springer.
Lesk, A. M. (2002). Introduction to Bioinformatics. (O. U. Press, Ed.) (p. 283). New
York, United States: Oxford University Press.
Lei, X., Sun, J., Xu, X. y Guo, L. (2010). Artificial bee colony for solving multiple
sequence alignment. IEEE Fifth International Conference Bio-Inspired
Computing: Theories and Applications (BIC-TA).
Luo, G., Huang, S., Chang, Y. y Yuan, S. (2013). A parallel Bees Algorithm
implementation on GPU. Journal of Systems Architecture.
73
Namakforoosh, Mohamman Naghi (2005), Metodología de la Investigación,
México: Editorial Limusa, S.A. de C.V.
Oliver, T., Schmidt, B., Nathan, D., Clemens, R. y Maskell, D. (2005). Multiple
Sequence Aligment on an FPGA. Proceedings of the 11th International
Conference on Parallel and Distributed Systems.
Ozturk, C. y Aslan, S. (2016). A new artificial bee colony algorithm to solve the
multiple sequence alignment problem. Int. J. Data Mining and
Bioinformatics, Vol 14.
74
Inferring Phylogenies on Multicore Architectures. IEEE International
Symposium on Parallel and Distributed Processing with Applications.
Smith, J. R. (1993). The Design and Analysis of Parallel Algorithms. (O. U. Press,
Ed.) (p. 510). New York, United States.
Sundfeld, D., Teodoro, G., Cristina, A. y Melo, M. (2015). Parallel A-Star Multiple
Sequence Alignment with Locality-Sensitive Hash Functions. Ninth
International Conference on Complex, Intelligent, and Software Intensive
Systems (CISIS).
Wang, L., Leebens, J., Kerr, P., Beckmann, K., Pamphilis, C. y Warnow, T. (2011).
The Impact of Multiple Protein Sequence Alignment on Phylogenetic
Estimation. IEEE/ACM Transactions on Computational Biology and
Bioinformatics, vol.8, no. 4, pp. 1108-1119.
Xiong, J. (2006). Essential Bioinformatics. (C. U. Press, Ed.) (p. 339). New York,
United States.
75
ANEXOS
76
Anexo 1: Tiempos del algoritmo Centro estrella paralelo
77
78
79
Anexo 2: Tiempos del algoritmo basado en colonia artificial de abejas
80
81
82
Anexo 3: Puntajes obtenidos del alineamiento múltiple con el algoritmo
centro estrella paralelo
83
84
85
Anexo 4: Puntajes obtenidos del alineamiento múltiple con el algoritmo
basado en colonia artificial de abejas
86
87
88
Anexo 5: Código de la implementación de los algoritmos
89
private void btnejecutarstar_Click(object sender, EventArgs e)
{
tiempo = Stopwatch.StartNew();
long i, j;
long[,] val;
string[, ,] seq;
// string s1, s2;
val = null;
val = new long[p + 1, p + 1];
seq = null;
seq = new string[p + 1, p + 1, 3];
//evaluando secuencias con Wunsh
//paralelizable
val[0, 0] = 0;
for (i = 0; i < p - 1; i++)
{
Parallel.For(i+1,p, pl =>
{
wunsch(this.dgvseq.Rows[(int)i].Cells[0].Value.ToString
(),
this.dgvseq.Rows[(int)pl].Cells[0].Value.ToString(),
out val[i, pl], out seq[i, pl, 1], out seq[i, pl, 2],
out val[pl, i], out seq[pl, i, 2], out seq[pl, i, 1]);
});
}
val[p - 1, p - 1] = 0;
//fin evaluación
//Determinando indice de la secuencia principal
long[] Sum;
int c2;
long MaxI;
long Imax;
Sum = null;
Sum = new long[p + 1];
c2 = 0;
MaxI = 0;
Imax = 0;
//seccion no paralelizable
for (i = 0; i <= p - 1; i++)
{
//
for (j = 0; j <= p - 1; j++)
{
Sum[i] = Sum[i] + val[i, j];
}
if (c2 == 0)
{
MaxI = Sum[i];
Imax = i;
90
c2 = 1;
}
else
{
if (MaxI < Sum[i])
{
MaxI = Sum[i];
Imax = i;
}
}
}
//FIN de determinación de indice de secuencia principal
// combinable
Parallel.For(0, p, pl =>
{
if (pl == Imax) af[pl] = SP;
else af[pl] = secf(SP, seq[Imax,pl, 1], seq[Imax, pl,
2]);
});
// fin de la generación
// mostrando alineamientos finales
this.dgvalinearparallel.DataSource = null;
this.dgvalinearparallel.Rows.Clear();
for (i = 0; i < p; i++)
{
this.dgvalinearparallel.Rows.Add();
this.dgvalinearparallel.Rows[(int)i].Cells[0].Value =
af[i];
}
91
lblstarscoreparallel.Text = "El score obtenido es: " +
fscorestar().ToString();
this.lbltstarmiliparallel.Text =
dt.TotalMilliseconds.ToString();
this.lbltiempostarparallel.Text = dt.ToString();
}
private void wunsch(string sec1, string sec2, out long val, out
string Asec1, out string Asec2,out long vala, out String Asec1a, out string
Asec2a)
{
long n, m;
long[,] f;
long Gap;
n = sec1.Length;
m = sec2.Length;
f = null;
f = new long[n + 1, m + 1];
Asec1 = "";
Asec2 = "";
//Matriz de puntaje
long i, j;
Gap = (long)this.NumGap.Value;
for (i = 0; i <= n; i++)
f[i, 0] = i * Gap;
for (i = 0; i <= m; i++)
f[0, i] = i * Gap;
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
f[i, j] = max(f[i - 1, j] + Gap, f[i - 1, j - 1] +
s(sec1, sec2, i, j), f[i, j - 1] + Gap);
92
j = j - 1;
}
else
{
Asec1 = Asec1 + sec1[(int)i - 1];
Asec2 = Asec2 + sec2[(int)j - 1];
i = i - 1;
j = j - 1;
}
}
}
Asec1 = strreverse(Asec1);
Asec2 = strreverse(Asec2);
// fin de traceback
vala = val;
Asec1a = Asec1;
Asec2a = Asec2;
}
//Invierte el orden de la secuencia necesario para el traceback
para el Wunsch
public static string strreverse(string s)
{
char[] arr = s.ToCharArray();
Array.Reverse(arr);
return new string(arr);
}
//funcion de similitud que nos indica el puntaje de dos caracteres
de acuerdo al valor del match, miss y gap
private long s(string s1, string s2, long x, long y)
{
char a, b;
a = s1[(int)x - 1];
b = s2[(int)y - 1];
if (a == b)
return (long)this.NumMatch.Value;
else
return (long)this.NumMiss.Value;
}
93
private void btnbee_Click(object sender, EventArgs e)
{
tiempo = Stopwatch.StartNew();
int i, j, nscout, nonlooker, nswarm;
nscout = (int)NumScout.Value;
nonlooker = (int)NumOnlookers.Value;
nswarm = (int)NumSwarm.Value;
string[] secuencias;//almacenamos las secuencias en secuencias
string[] secaligrandom;//secuencias alineadas aleatoriamente
secuencias = null;
secaligrandom = null;
secuencias = new string[p + 1];
secaligrandom = new string[p + 1];
string[,] WSiOL;
long[, ,] evalgap;
evalgap = null;
evalgap = new long[nscout, p + 1, 2];
EliteHiveevalgap = null;
EliteHiveevalgap = new long[nswarm, p];
WSiOL = null;
WSiOL = new string[nscout, p + 1];
EliteAliHive = null;
EliteAliHive = new string[nswarm, p];
int iw, im;//indice a trabajar e indice mayor
long mineval, eval, gap; //Menor score de una secuencia de un
posible alineamiento, eval nueva evaluacion, gap cantidad de gaps de la
secuencia
string newsec; //nueva secuencia generada por abejas
observadoras
long Msol, sol; //score de un optimal list y mayor score de los
optimal list
int iMsol;//indice del mayor score de la optimal list
int ns;//numero de enjambre actual
for (i = 0; i < p; i++)
{
secuencias[i] =
this.dgvseq.Rows[i].Cells[0].Value.ToString();
}
for (ns = 0; ns < nswarm; ns++)
{
//Abejas Exploradoras
for (i = 0; i < nscout; i++)
{
//Generar un alineamiento aleatorio
secaligrandom = null;
secaligrandom = new string[p + 1];
RandomAlineamiento(ref secuencias,out
secaligrandom,ns); //guardando el alieneamiento aleatorio
//Eliminar Gaps sobrantes, y construir la secuencia
favorita
94
string seqfav; //secuencia favorita
Cadfandsupgap(secaligrandom, out secaligrandom, out
seqfav);
//Evaluar las secuencias contra la secuencia favorita y
realizar conteo de gaps por fila
for (j = 0; j < p; j++)
{
evalseq(secaligrandom[j], seqfav, out evalgap[i, j,
0], out evalgap[i, j, 1]);
//Guardando el alineamiento en Working set in
optimization list
WSiOL[i, j] = secaligrandom[j];
}
WSiOL[i, p] = seqfav;
}
//Abejas Observadoras
sol = 0;
for (i = 0; i < p; i++)
{
sol = sol + evalgap[0, i, 0];
95
}
Msol = sol;
iMsol = 0;
for (i = 1; i < nscout; i++)
{
sol = 0;
for (j = 0; j < p; j++)
{
sol = sol + evalgap[i, j, 0];
}
if (sol > Msol)
{
Msol = sol;
iMsol = i;
}
}
for (i = 0; i < p; i++)
{
EliteHiveevalgap[ns, i] = evalgap[iMsol, i, 0];
EliteAliHive[ns, i] = WSiOL[iMsol, i];
}
}
//Buscar el mayor score de los diferentes posibles
alineamientos multiples de un panal
sol = 0;
for (i = 0; i < p; i++)
{
sol = sol + EliteHiveevalgap[0, i];
}
Msol = sol;
iMsol = 0;
for (i = 1; i < nswarm; i++)
{
sol = 0;
for (j = 0; j < p; j++)
{
sol = sol + EliteHiveevalgap[i, j];
}
if (sol > Msol)
{
Msol = sol;
iMsol = i;
}
}
96
this.dgvbee.Rows[(int)i].Cells[0].Value =
EliteAliHive[iMsol, i];
}
tiempo.Stop();
dt = tiempo.Elapsed;
lblbeescore.Text = "El score obtenido es:" +
fscorebee().ToString();
lbltbeemili.Text = dt.Milliseconds.ToString();
this.lbltiempobee.Text = dt.ToString();
}
private void RandomAlineamiento(ref string[] seq, out string[]
seq2,int ns)
{
double IGMax; //Incremento de gaps maximo
IGMax = Math.Round(MaxSec * (float)this.NumpGap.Value / 100,
0);
seq2 = new string[p];
int IGAM = Rand(0, (int)IGMax + 1,ns); // Incremento de gaps
aleatorio Maximo
for (int i = 0; i < p; i++)
{
seq2[i] = seq[i];
seq2[i] = ADDGAP(MaxSec + IGAM - seq2[i].Length,
seq2[i],ns);
}
}
private string ADDGAP(int numgap, string sec,int ns)
{
int i;
97
{
switch (seq[j][i])
{
case 'A': num[0] = num[0] + 1; break;
}
mayor = num[0];
imayor = 0;
}
if (mayor == 0)
{
for (j = 0; j < p; j++)
{
seq2[j] = seq2[j].Remove(i, 1);
}
L = L - 1;
i = i - 1;
}
else seq3 = seq3 + letras[imayor];
}
}
// FIN CADENA FAVORITA
//evaluar score por columnas y evaluar columna de counter
private void evalseq(string s1, string sf, out long eval, out long
gap)
{
int i, L;
L = s1.Length;
eval = 0;
gap = 0;
for (i = 0; i < L; i++)
{
eval = eval + seval(s1, sf, i);
if (s1[i] == '-') gap = gap + 1;
98
}
private string insasupagap(int Gapt, string sec,int ns) // insertar
aleatoriamente y eliminar aleatoriamente un gap
{
int iig, eg, ge, lsec;//indice de insercion de gap, eliminar
gap, gap eliminar contador
if (Gapt != 0)
{
lsec = sec.Length;
iig = Rand(0, lsec + 1,ns);
sec = sec.Insert(iig, "-");
eg = Rand(1, Gapt + 1,ns);
ge = 0;
for (int i = 0; i <= lsec; i++)
{
if (sec[i] == '-')
{
ge = ge + 1;
if (i == iig) ge = ge - 1;
else if (ge == eg)
{
sec = sec.Remove(i, 1);
i = lsec;
}
}
}
}
return sec;
}
99
Anexo 6: Paper presentado al COMTEL 2016
100
101
102
103
104
105
106
107
108
109