posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · tabla...

70

Upload: others

Post on 10-Jan-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:
Page 2: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:
Page 3: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:
Page 4: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

AGRADECIMIENTOS

Quiero expresar mi más profundo agradecimiento a mis padres, a quienes les debo lo que

soy, lo que he hecho y lo que seguiré haciendo durante toda mi vida.

Se agradece al CONACYT por el apoyo a través del proyecto SEP-CONACYT No. 151818:

Identificación y Evaluación de Vacunas Comestibles en Alfalfa para Prevenir la

Paratuberculosis (Mycobacterium avium subps. Paratuberculosis) de Rumiantes Domésticos

de México.

Agradezco también a mis directores de tesis, Dr. Carlos Eliud Angulo Valadez y Dr. Marco

Antonio Castro Liera quienes, con paciencia, estuvieron siempre dispuestos a ayudarme y

solventar todas esas dudas que me asaltaron, por muy básicas que fuesen.

Un agradecimiento especial para el MSC. Joel Artemio Morales Viscaya, estimado amigo y

compañero cuyo conocimiento no dudó nunca en compartir conmigo para la realización de

este trabajo.

Por último y desde lo más profundo de mi corazón agradezco y dedico este trabajo a mi

amada Daniela, quien con tiernos empujones me impulsó a concluir en seis meses lo que no

pude hacer yo solo en un año y medio.

Page 5: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

RESUMEN

El presente trabajo aborda un tema de suma importancia para el campo de la inmunología,

el desarrollo de vacunas. Especialistas en la materia hacen uso día con día de diversas

herramientas para la identificación de proteínas como candidatas ideales para la creación de

vacunas efectivas.

La principal característica de todas estas herramientas disponibles es su funcionamiento bajo

el esquema tradicional de la programación secuencial, por lo que en vista de la falta de

propuestas alternativas y haciendo uso del enfoque actual que favorece la aplicación de

nuevas tecnologías para mejorar procesos en diversos campos del conocimiento, en el

transcurso de esta tesis se describe el proceso para el desarrollo de una herramienta

informática que facilita la identificación de proteínas como posibles candidatas para el

desarrollo de vacunas.

Los tópicos principales involucrados en la codificación de esta aplicación inmuno-informática

son la computación paralela como enfoque de programación y una implementación del

Método Estabilizador de Matrices (SMM por sus siglas en ingles) que opera gracias a los

metodos de descenso máximo y bagging, con dicho método se logra una predicción eficaz y

con un menor coste de tiempo con respecto a las herramientas ya existentes en la

bibliografía actual.

Page 6: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

ABSTRACT

The present work deals with a uttermost important topic for field immunology, vaccine

development. Everyday specialist on the matter use diverse software tools aimed to identify

good candidate proteins for the creation of efective vaccines.

The comun trait of the above mentioned software tools is the use of a single processor

scheme for their operation. This work describes the development of a more efficient software

that uses a newly available parrallel technology known as general purpose graphical

processing units (GPGPU).

The main components of the proposed application are parallel computing and an

implementation of the Stabilized Matrix Method (SMM) applying gradient-descend and

bagging. Using this implementation an effective prediction of the binding of immunogenic

peptides to major histocompatibility complex (MHC) molecules is achieved using less time

than the currently available applications and without the need of Internet access.

Page 7: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

INDICE GENERAL

Índice de figuras III

Índice de tablas IV

CAPITULO I. INTRODUCCIÓN 1

1.1 Antecedentes 1

1.2 Delimitación del problema 2

1.3 Justificación 2

1.4 Hipótesis 3

1.5 Objetivo general 3

1.6 Objetivos específicos 4

1.7 Organización del trabajo 4

CAPÍTULO II. CONCEPTOS GENERALES 6

2.1 El sistema inmune 6

2.2 Complejo mayor de histocompatibilidad 9

2.2.1 Proteína 10

2.2.2 Antígeno 11

2.2.3 Anticuerpos 12

2.2.4 Aminoácidos 12

2.2.5 Linfocito B 13

2.2.6 Péptido 13

2.2.7 Epítopo 13

2.2.8 Alelo 14

2.3 Inmunología computacional 14

2.3.1 Vacunología inversa 15

2.4 Arquitectura cliente – servidor 16

2.5 Lenguace de programación C 17

2.6 Colección de compiladores GNU 18

2.7 Linux mint 19

2.8 Biblioteca científica GNU 20

I

Page 8: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

CAPÍTULO III. PREDICCIÓN DE AFINIDAD PÉPTIDO – MHC II 21

3.1 Antecedentes 21

3.2 Base de datos IEDB 22

3.3 Servidor NetMHC-II 23

CAPÍTULO IV. CÓMPUTO DE PROPÓSITO GENERAL EN UNIDADES DE PROCESAMIENTO GRÁFICO 25

4.1 Paralelismo 26

4.2 Lenguajes de programación para GPGPU 28

4.3 Estructura de un programa en CUDA 29

CAPÍTULO V. MÉTODO ESTABILIZADOR DE MATRICES CON DESCENSO MÁXIMO 31

5.1 Principios del método 31

5.2 Validación cruz 32

5.3 Descenso de gradiente 33

CAPÍTULO VI. CODIFICACIÓN SECUENCIAL E IMPLEMENTACIÓN PARALELA 36

6.1 Estructura de la aplicación 36

6.1.1 Origen de los datos 37

6.1.2 Pre-procesamiento 38

6.1.3 Construcción de la matriz H 39

6.1.4 Descenso máximo 40

6.1.5 Método de bagging 41

6.1.6 Bibliotecas 42

6.2 Proceso de paralelización 42

6.3 Acciones dentro de la GPU 43

CAPÍTULO VII. RESULTADOS Y CONCLUSIONES 45

7.1 Resultados 45

BIBLIOGRAFÍA 57

II

Page 9: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

Índice de figuras

Figura 1: Conformación del sistema inmune 6

Figura 2: Interacción entre la CPA y el antígeno 9

Figura 3: Ejemplo de estructura proteínica 11

Figura 4: Interacción antígeno – anticuerpo 11

Figura 5: Interacción célula T – célula B 13

Figura 6: Epítopos localizados en la superficie celular 14

Figura 7: Diagrama cliente – servidor 17

Figura 8: Disposición lógica de espacios de memoria en tarjetas NVIDIA 26 para CUDA

Figura 9: Representación de matrices en CUDA 27

Figura 10: Ejemplo de grids aplicados a un programa en CUDA 30

Figura 11: Linealización de una matriz 43

Figura 12: Resultados de afinidad utlizando el método de descenso 46 máximo para TrainInput2

Figura 13: Resultados de afinidad utlizando el método de bagging 46 para TrainInput2

Figura 14: Resultados de afinidad utlizando el método de descenso 47 máximo para TrainInput3

Figura 15: Resultados de afinidad utlizando el método de bagging para 47 TrainInput3

Figura 16: Resultados de afinidad utlizando el método de descenso 48 máximo para TrainInput4

Figura 17: Resultados de afinidad utlizando el método de bagging para 48 TrainInput4

III

Page 10: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

Índice de tablas

Tabla 1: Aminoácidos presentes en el proceso de predicción 12

Tabla 2: Resumen de datos disponibles en IEDB 23

Tabla 3: Resultados de predicción arrojados por NetMHCII 24

Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51

Tabla 5: Comparativa entre descenso máximo y bagging para TrainInput3 53

Tabla 6: Comparativa entre descenso máximo y bagging para TrainInput4 55

IV

Page 11: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

CAPÍTULO I. INTRODUCCIÓN

1.1 Antecedentes

El desarrollo de vacunas ha supuesto un importante avance en el campo de la

medicina, específicamente en el área de la inmunología. Ha permitido eliminar

enfermedades funestas como la viruela, estableciéndose como un método de

prevención contra cada nueva enfermedad que aparece con el paso del tiempo.[1]

La inmunología es una sub-disciplina de la medicina que se encarga

específicamente del estudio de los procesos moleculares y celulares implicados en

la defensa de la integridad biológica del organismo a través de la identificación de

sustancias propias y la detección de las sustancias extrañas. Todo ello con el

objetivo principal de destruir a los microorganismos patógenos y evitar así las

infecciones.[2]

La vacunología es el área dentro de la inmunología que se encarga del desarrollo

de las vacunas aplicando principios del sistema inmune en un ambiente controlado

con pruebas in vivo (realizadas directamente en el tejido interno del sujeto

experimental), in vitro (realizadas a nivel celular y fuera del organismo) y mas

recientemente in silico (realizadas mediante herramientas informáticas).

Actualmente la vacunología, con ayuda de herramientas informáticas, se vale de

un novedoso proceso denominado vacunología inversa. Dicho proceso consiste en

el análisis bio-informático de secuencias completas para la identificación de

proteínas que después serán utilizadas en procesos de purificación e inmunización

dentro de pruebas in vitro o in vivo para confirmar su exposición de superficie y

eficiencia bactericida y así seleccionar finalmente los componentes idóneos para

el desarrollo de las vacunas.[3]

1

Page 12: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

El presente proyecto, abarca el proceso de desarrollo de una nueva herramienta

inmuno-informática auxiliar para la identificación de proteínas como potenciales

candidatos para el posterior desarrollo de vacunas, basada en los mecanismos de

la respuesta inmuno-específica mediada por células. Esta herramienta será para

uso por parte del Centro de Investigaciones Biológicas del Noroeste (CIBNOR),

centro especializado en la generación y divulgación de conocimiento científico

dentro del campo de las ciencias biológicas; así como en la formación de

científicos y expertos en el uso , manejo y preservación de los recursos naturales.

1.2 Delimitación del problema

En el campo de la Vacunología se han venido desarrollando y mejorando diversas

herramientas inmuno-informáticas, entre ellas las de predicción de afinidad de

epítopos (péptidos) al complejo mayor de histocompatibilidad presente en la

respuesta inmune específica, como una alternativa para la identificación de

proteínas candidatas a vacunas. Sin embargo, dicho proceso conlleva la utilización

de diferentes servidores web independientes entre sí, que deben ser utilizados de

forma secuencial y que generan resultados heterogéneos, que deben ser

comparados y homogeneizados para su uso en el laboratorio. Lo anterior implica

largos periodos de procesamiento, esfuerzos invertidos en actividades que podrían

optimizarse y una dependencia total de la conexión a internet.

1.3 Justificación

Dado el proceso actual de identificación de epítopos afines a la molécula MHC-II

para la selección de proteínas como potenciales candidatos para el diseño de

vacunas, se propone una aplicación paralela de escritorio que tendrá varios

beneficios como permitir establecer un punto inicial para el futuro desarrollo de

toda una plataforma de herramientas inmuno-informáticas integradas para el

auxilio en la realización de diversas tareas en el laboratorio.

2

Page 13: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

Al ser una aplicación de escritorio se prescinde por completo de una conexión a

internet para su funcionamiento, todo el proceso de predicción funciona entonces

a nivel local, es decir, en sitio y sin necesidad de procesamiento externo,

transmisión o recepción de datos vía web, todo esto representa un ahorro de costo

en tiempo y una aumento en la eficiencia de la aplicación.

Por último, se apuesta por la utilización del paradigma de programación paralela

para la construcción de esta aplicación de predicción, dicho paradigma será

abordado detalladamente más adelante, pero en términos generales significa que

se le da a la aplicación la capacidad de utilizar la tecnología de una GPGPU

(General Purpose Graphic Processing Unit) para procesar todos los datos de

forma concurrente, es decir, al mismo tiempo usando todas las ventajas ofrecidas

por la arquitectura de la tarjeta gráfica NVIDIA a través de CUDA, lo anterior

representa un aumento considerable en la capacidad de procesamiento general de

la aplicación.

1.4 Hipótesis

Con el desarrollo de la aplicación de escritorio paralela, para la predicción de

afinidad de epítopos con el complejo mayor de histocompatibilidad clase II, será

posible obtener dichas predicciones de manera eficaz, eficiente, con bajo costo y

sin depender del acceso a Internet.

1.5 Objetivo general

Desarrollar, mediante el lenguaje de programación Cuda C, una aplicación

paralela de escritorio que implemente un algoritmo basado en el Método

Estabilizador de Matrices (SMM) y combinado con el método numérico de

Descenso de Gradiente, para la predicción de enlace de péptidos al complejo

mayor de histocompatibilidad clase II.

3

Page 14: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

1.6 Objetivos específicos

• Analizar el contenido del servidor web para obtener los algoritmos

implementados en el proceso de predicción del grado de afinidad de

epítopos con MHC II.

• Desarrollar la aplicación paralela en base al esquema de paralelización

apropiado que permita la predicción eficiente del grado de afinidad de

epítopos con MHC II.

• Validar la aplicación paralela empleando secuencias de epítopos cuya

compatibilidad ha sido previamente verificada de manera biológica y

comparando su afinidad in vitro con la predicha por la aplicación in silico.

1.7 Organización del trabajo

A continuación se listan los temas tratados en cada uno de los capítulos

subsecuentes contenidos en la presente tesis:

• Capítulo 2.- Comprende un compendio de los conceptos clave para la

construcción de una base teórica fundamentada que permita esclarecer el

contexto biológico implicado en el desarrollo de este proyecto.

• Capítulo 3.- Describe los antecedentes más importantes relacionados con el

proyecto, aplicaciones inmuno-informáticas y herramientas auxiliares para

predicción de enlace utilizando diversos algoritmos.

• Capítulo 4.- Establece los conceptos más importantes respecto al tema de

la computación paralela con CUDA, parte fundamental de la aplicación

desarrollada.

• Capítulo 5.- Explica la estructura, secuencia y funcionamiento del algoritmo

principal “Stabilized Matrix Method” en el que se basa el proceso de

predicción de la aplicación descrita en este proyecto.

4

Page 15: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

• Capítulo 6.- Trata todos los puntos respecto al desarrollo de la parte

paralela del proyecto, desde la implantación de la estrategia de

paralelización hasta la codificación en CUDA C.

• Capítulo 7.- El apartado final que compila todos los datos acerca de los

resultados obtenidos en las pruebas de software, las validaciones

estadísticas y las conclusiones obtenidas respecto a todo lo anterior.

5

Page 16: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

CAPÍTULO II. CONCEPTOS GENERALES

2.1 El sistema inmune

Para poder defenderse de todo aquello que sea ajeno, los organismos, cuentan

con barreras naturales de aislamiento tales como la piel y la mucosa, así como de

un sistema inmune con la capacidad de identificar y destruir cualquier elemento

extraño que invade nuestro organismo.[4]

Figura 1: Conformación del sistema inmune

La inmunología es precisamente la ciencia que estudia los procesos moleculares y

celulares implicados en la defensa de la integridad biológica del organismo a

través de la identificación de las sustancias propias y la detección de las

sustancias extrañas. Todo lo anterior con el objetivo principal de detectar y destruir

microorganismos patógenos para evitar infecciones.[4]

Cada organismo además, cuenta con dos tipos de mecanismos de defensa

diferentes, innatos y adaptativos.

6

Sistemas de defensa

Barrerasnaturales

RespuestaInmune

adaptativa

RespuestaInmune innata

Piel ymucosas

HumoralCelularFagocitosisInflamación

Page 17: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

Los mecanismos de tipo innato, también llamados respuesta inmune innata, son

aquellos con los que el organismo cuenta desde el momento de su nacimiento y

representan la primera línea de defensa. Este tipo de respuesta inmune es no-

específica y no genera una memoria del antígeno, se pueden clasificar de la

siguiente manera:[5]

• Mecanismos físicos y químicos como la piel, la mucosa y la saliva, es decir,

las barreras naturales.

• Fagocitosis, el proceso de engullir y destruir a los organismos invasores,

llevada a cabo por macrófagos y células dendríticas.

• Respuesta molecular, por parte de Citoquinas, Quimioquinas y el sistema

complemento.

• Respuesta inflamatoria, que consiste en la acumulación de fluido y células

en el sitio de la infección.

Los mecanismos de tipo adaptativo, en cambio, son el segundo mecanismos de

defensa contra cualquier cosa que sea reconocida como extraña y provee

protección contra la re-exposición al mismo patógeno. Las características de la

inmunidad adaptativa son:

• Especificidad, dado que cada respuesta es específica al antígeno atacante.

• Tolerancia, que permite al sistema inmune diferenciar entre lo que es propio

y extraño.

• Memoria, para tener una respuesta más rápida y fuerte en caso de una

exposición subsecuente a un mismo antígeno.[6]

7

Page 18: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

A su vez la respuesta inmune adaptativa se divide en dos categorías:

• Celular: es aquella en la que las llamadas Células-T generan otras células

especiales llamadas APC (Antigen Presenting Cell por sus siglas en inglés)

como los macrófagos y las células dendríticas.

• Humoral: mediada por las Células-B para generar moléculas

inmunoglobulinas llamadas “anticuerpos”.[6]

El caso de este proyecto para predicción de afinidad de epítopos a la molécula del

complejo mayor de histocompatibilidad clase II entra, específicamente, en el

proceso de respuesta inmune adaptativa celular dado de la siguiente forma:

1. Cuando un antígeno no identificado ataca, un tipo de Célula-T llamado

Colaboradora o CD4+ envía a una CPA (Célula Presentadora de Antígeno)

hacía la zona donde se produce el ataque.

2. Una vez detectado, se comienza con un proceso de endocitosis, es decir, la

CPA introduce al antígeno en su medio celular y lo devora para

desintegrarlo.

3. Una vez desintegrado, el antígeno arroja ciertos fragmentos de sí mismo

denominados péptidos, que son proteínas que contienen información propia

del antígeno en cuestión, dichos fragmentos se someten a un proceso

llamado fagocitosis, consistente en aislarlos dentro de un fagocito.

4. Este fagocito se fusiona con otro que contiene a las denominadas

moléculas MHC-II.

5. Estando ya en el mismo medio se da el proceso de enlace entre los

péptidos y las moléculas MHC-II, recordando que no todos los péptidos

pueden lograr dicho enlace.

6. Cada vez que se forma un complejo péptido-MHCII es llevado a la

superficie de la CPA mediante exocitosis.

8

Page 19: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

7. Por último la CPA regresa hacia la Celula-T colaboradora y se da la

presentación del antígeno, donde la Celula-T recibe la información del

antígeno atacante para poder desencadenar las reacciones necesarias que

den una respuesta satisfactoria para la defensa del organismo.[4]

Figura 2: Interacción entre la CPA y el antígeno

Dado que no todos los péptidos se enlazan con la molécula MHC-II, es necesario

el desarrollo y constante mejoramiento de herramientas inmuno-informáticas de

predicción que puedan ayudar a detectar qué péptidos se enlazarán efectivamente

para la identificación de proteínas candidatas a vacunas, la actividad principal

realizada en el campo de la vacunología.

2.2 Complejo mayor de histocompatibilidad

El complejo mayor de histocompatibilidad (CMH o MHC, acrónimo para el inglés

major histocompatibility complex), o complejo principal de histocompatibilidad, es

una familia de genes ubicados en el brazo corto del cromosoma 6 cuyos productos

están implicados en la presentación de antígenos a los linfocitos T y en la

diferenciación de lo propio y lo ajeno en el sistema inmunitario.[7]

9

Page 20: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

En humanos, los genes MHC conforman el denominado sistema HLA (por human

leukocyte antigen), porque estas proteínas se descubrieron como antígenos en los

leucocitos, que podían detectarse con anticuerpos.[8] Los genes MHC son

fundamentales en la defensa inmunológica del organismo frente a los patógenos, y

por otro lado, constituyen también la principal barrera al trasplante de órganos y de

células madre.[9]

La región del brazo corto del cromosoma 6 que contiene los genes del MHC posee

la información de:

• Glucoproteínas de la membrana plasmática involucradas en los

mecanismos de presentación y procesamiento de antígenos a los linfocitos

T, agrupándose en los genes de clase II (que codifican las proteínas MHC-

II) y los genes de clase I (que codifican las proteínas MHC-I).[10]

• Citocinas y proteínas del sistema del complemento, importantes en la

respuesta inmunológica, estos genes se agrupan en la clase III.[10]

Las proteínas mencionadas anteriormente participan en la respuesta inmunitaria,

que permite la identificación de las moléculas propias y extrañas (invasoras), para

eliminar estas últimas mediante diferentes mecanismos.

2.2.1 Proteína

Las proteínas son biomoléculas formadas por cadenas lineales de aminoácidos.

Se dividen en proteínas simples (holoproteidos), proteínas conjugadas

(heteroproteidos) y proteínas derivadas. Las proteínas son necesarias para la vida

pues constituyen el 80% del protoplasma deshidratado de toda célula y tiene

funciones biorreguladoras (enzimas) y defensivas (anticuerpos).[11]

Prácticamente todos los procesos biológicos dependen de la presencia o actividad

de éstas moléculas. Bastan algunos ejemplos para vislumbrar la variedad y

trascendencia de funciones que desempeñan. Son proteínas casi todas las

enzimas, catalizadores de reacciones químicas en organismos vivientes; la

10

Page 21: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

hemoglobina y otras moléculas con funciones de transporte en la sangre; los

anticuerpos, encargados de acciones de defensa natural contra infecciones o

agentes patógenos; los receptores de las células, a los que se fijan moléculas

capaces de desencadenar una respuesta determinada; la actina y la miosina,

responsables finales del acortamiento del músculo durante la contracción, etc.[11]

Figura 3: Ejemplo de estructura proteínica

2.2.2 Antígeno

Un antígeno es cualquier sustancia que provoca que el sistema inmunitario

produzca anticuerpos contra sí mismo. Esto significa que su sistema inmunitario

no reconoce la sustancia, y está tratando de combatirla [12]. La definición

moderna abarca todas las sustancias que pueden ser reconocidas por el sistema

inmune adaptativo, bien sean propias o ajenas. Los antígenos son usualmente

proteínas o polisacáridos. Esto incluye partes de bacterias (cápsula, pared celular,

flagelos, fimbrias, y toxinas), de virus y otros microorganismos.[13]

Figura 4: Interacción antígeno - anticuerpo

11

Page 22: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

2.2.3 Anticuerpo

Los anticuerpos (también conocidos como inmunoglobulinas, abreviado Ig) son

glicoproteínas del tipo gamma globulina. Pueden encontrarse de forma soluble en

la sangre u otros fluidos corporales de los vertebrados, disponiendo de una forma

idéntica que actúa como receptor de los linfocitos B y son empleados por el

sistema inmunitario para identificar y neutralizar elementos extraños tales como

bacterias, virus o parásitos.[14]

2.2.4 Aminoácido

Un aminoácido es una molécula orgánica con un grupo amino (-NH2) y un grupo

carboxilo (-COOH). La unión de varios aminoácidos da lugar a cadenas llamadas

péptidos o polipéptidos, se denominan proteínas cuando la cadena polipeptídica

supera una cierta longitud (entre 50 y 100 residuos aminoácidos) o la masa

molecular total supera las 5000 uma y, especialmente, cuando tienen una

estructura tridimensional estable definida.[15]

Tabla 1: Aminoácidos presentes en el proceso de predicción

12

Numero Aminoácido Abreviatura Símbolo

1 Alanina Ala A

2 Cisteína Cys C

3 Ácido Aspártico Asp D

4 0 Glu E

5 Fenilanina Phe F

6 Glicina Gly G

7 Histidina His H

8 Isoleucina Ile I

9 Lisina Lys K

10 Leucina Leu L

11 Metionina Met M

12 Asparagina Asn N

13 Pirrolisina Pyl O

14 Prolina Pro P

15 Glutamina Gln Q

16 Arginina Arg R

17 Serina Ser S

18 Treonina Thr T

19 Selenocisteína Sec U

20 Valina Val V

21 Triptofano Trp W

22 Tirosina Tyr Y

Page 23: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

2.2.5 Linfocito B

Los linfocitos B son los leucocitos de los que depende la inmunidad mediada por

anticuerpos con actividad específica de fijación de antígenos. Las células B, que

constituyen un 5 a 15% del total de linfocitos, dan origen a las células plasmáticas

que producen anticuerpos.[16]

Figura 5: Interacción célula T – célula B

2.2.6 Péptido

Los péptidos (del griego πεπτός, peptós, digerido) son un tipo de moléculas

formadas por la unión de varios aminoácidos mediante enlaces peptídicos.[17]

2.2.7 Epítopo

Los anticuerpos, bien sean libres o fijos a la matriz extracelular, se unen a

moléculas antigénicas en una superficie de unión, para así formar complejos

antígeno-anticuerpo. Esas superficies de unión sobre las macromoléculas constan

de complejas secuencias específicas llamadas determinantes antigénicos o

epítopos. La mayoría de los epítopos reconocidos por anticuerpos o células B se

pueden pensar como relieves de superficies tridimensionales de una molécula

antígeno; estos relieves encajan con precisión y así se unen a anticuerpos. La

parte de un anticuerpo que reconoce el epítopo se llama parátopo.[18]

13

Page 24: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

Figura 6: Epítopos localizados en la superficie celular

2.2.8 Alelo

Un alelo o aleloide es cada una de las formas alternativas que puede tener un

mismo gen, se diferencian en su secuencia y se puede manifestar en

modificaciones concretas de la función de ese gen. (Producen variaciones en

características heredadas como, por ejemplo, el color de ojos o el grupo

sanguíneo).

Por alelo debe entenderse el valor de dominio que se otorga a un gen cuando

rivaliza contra otro gen por la ocupación de posición final en los cromosomas

durante la separación que se produce durante la meiosis celular.[19]

2.3 Inmunología Computacional

Inmunología Computacional inició hace más de 90 años con el modelado teórico

de la epidemiología de la malaria, haciendo uso de las matemáticas para guiar el

estudio de la transmisión de la enfermedad. Desde entonces, el campo se ha

ampliado para cubrir todos los aspectos de los procesos del sistema inmunológico

y enfermedades.

14

Page 25: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

Actualmente el principal objetivo del campo es convertir los datos inmunológicos

en problemas de cálculo, resolver estos problemas usando matemáticas y

enfoques computacionales y luego convertir estos resultados en interpretaciones

inmunológicamente significativas.[20]

2.3.1 Vacunología inversa

La vacunología inversa es una mejora en el campo de la vacunología , que emplea

la bio-informática, fue Rino Rappuoli quien utilizó este enfoque por primera vez

contra el serogrupo B del meningococo. Desde entonces, se ha utilizado en varias

otras vacunas bacterianas.

La idea básica detrás de la vacunología inversa es que el genoma de un patógeno

puede ser examinado mediante enfoques bio-informáticos para encontrar genes.

Algunos de los rasgos de dichos genes son controlados para que puedan indicar

antigenicidad, se incluyen genes codificados para proteínas con localización

extracelular, péptidos señalizados, y epítopos de células B. Una vez localizados,

estos genes se filtran en base a atributos deseables para una buena vacuna, tales

como proteínas exteriores de la membrana. Finalmente dichas proteínas se

someten a pruebas de laboratorio para verificar una respuesta inmune.

Aunque el uso de la tecnología bio-informática para desarrollar vacunas se ha

popularizado en los últimos diez años, los laboratorios generales a menudo no

tienen el software adecuado para realizar estas actividades. Sin embargo, hay un

número creciente de programas bio-informáticos que hacen la aplicación de la

vacunología inversa más accesible.[20]

15

Page 26: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

2.4 Arquitectura cliente - servidor

La arquitectura cliente-servidor es un modelo de aplicación distribuida en el que

las tareas se reparten entre los proveedores de recursos o servicios, llamados

servidores, y los demandantes, llamados clientes. Un cliente realiza peticiones a

otro programa, el servidor, quien da respuesta. Esta idea también se puede aplicar

a programas que se ejecutan sobre una sola computadora, aunque es más

ventajosa en un sistema operativo multiusuario distribuido a través de una red de

computadoras.

En esta arquitectura la capacidad de proceso está repartida entre los clientes y los

servidores, aunque son más importantes las ventajas de tipo organizativo debidas

a la centralización de la gestión de la información y la separación de

responsabilidades, lo que facilita y clarifica el diseño del sistema.

La separación entre cliente y servidor es una separación de tipo lógico, donde el

servidor no se ejecuta necesariamente sobre una sola máquina ni es

necesariamente un sólo programa. Los tipos específicos de servidores incluyen los

servidores web, los servidores de archivo, los servidores del correo, etc. Mientras

que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá

siendo la misma.

Una disposición muy común son los sistemas multicapa en los que el servidor se

descompone en diferentes programas que pueden ser ejecutados por diferentes

computadoras aumentando así el grado de distribución del sistema.

La red cliente-servidor es una red de comunicaciones en la cual los clientes están

conectados a un servidor, en el que se centralizan los diversos recursos y

aplicaciones con que se cuenta; y que los pone a disposición de los clientes cada

vez que estos son solicitados. Esto significa que todas las gestiones que se

realizan se concentran en el servidor, de manera que en él se disponen los

requerimientos provenientes de los clientes que tienen prioridad, los archivos que

son de uso público y los que son de uso restringido, los archivos que son de sólo

16

Page 27: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

lectura y los que, por el contrario, pueden ser modificados, etc. Este tipo de red

puede utilizarse conjuntamente en caso de que se esté utilizando en una red

mixta.[21]

Figura 7: Diagrama de arquitectura cliente – servidor

2.5 Lenguaje de programación C

C es un lenguaje de programación originalmente desarrollado por Dennis M.

Ritchie entre 1969 y 1972 en los Laboratorios Bell,2 como evolución del anterior

lenguaje B, a su vez basado en BCPL.

Se trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de medio

nivel pero con muchas características de bajo nivel. Dispone de las estructuras

típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del

lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen

ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador

con código C o acceder directamente a memoria o dispositivos periféricos.

La primera estandarización del lenguaje C fue en ANSI, con el estándar X3.159-

1989. El lenguaje que define este estándar fue conocido vulgarmente como ANSI

C. Posteriormente, en 1990, fue ratificado como estándar ISO (ISO/IEC

9899:1990). La adopción de este estándar es muy amplia por lo que, si los

programas creados lo siguen, el código es portable entre plataformas y/o

arquitecturas.[22]

17

Page 28: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

2.6 Colección de compiladores GNU

La colección de compiladores GNU o GCC por sus siglas en inglés (GNU Compiler

Collection), es una distribución integrada para varios lenguajes de programación,

entre los que se incluyen:

• C

• C++

• Objetive-C

• Objetive-C++

• Java

• Fortran

• Ada, entre otros.

El componente independiente de lenguajes de GCC incluye la mayoría de los

optimizadores (conocidos como “back ends”) que generan código máquina para

diversos procesadores.

La parte del compilador que es específica para un lenguaje de programación

particular se denomina “front end”. Además de los “front ends” integrados a GCC,

hay diversos “front ends” separados que permiten soporte para lenguajes como

Pascal, Mercury y COBOL.[23]

Estos compiladores se consideran estándar para los sistemas operativos

derivados de UNIX, de código abierto y también de propietarios, como Mac OS X.

GCC requiere el conjunto de aplicaciones conocido como binutils para realizar

tareas como identificar archivos objeto u obtener su tamaño para copiarlos,

traducirlos o crear listas, enlazarlos, o quitarles símbolos innecesarios.

Originalmente GCC significaba GNU C Compiler (compilador GNU de C), porque

sólo compilaba el lenguaje C, luego cambió debido al soporte de los lenguajes

mencionados anteriormente.[24]

18

Page 29: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

2.7 Linux Mint

Linux Mint es una sistema operativo para computadoras diseñado para trabajar en

la mayoría de los sistemas modernos, incluyendo PCs típicos x86 y x64. Se puede

pensar en Linux Mint como un sistema que cumple con el mismo rol que Windows

de Microsoft, Mac OS de Apple y el Sistema Operativo BSD. Linux Mint también

está diseñado para trabajar en conjunción con otros sistemas operativos

(incluyendo los antes mencionados) y que puede configurar automáticamente un

entorno de «arranque dual» o «multi-arranque» (en el que al usuario se le

pregunta con cuál sistema operativo desea iniciar en cada arranque) durante su

instalación.

Su desarrollo se inició en 2006. Sin embargo, está construido sobre capas de

software muy consolidado y probado, incluyendo el kernel Linux, las herramientas

GNU y el escritorio Cinnamon, MATE, KDE y Xfce. También está apoyado en los

grandes proyectos como Ubuntu y Debian, y utiliza sus sistemas como base.[25]

Linux Mint mantiene un inventario actualizado, un sistema operativo estable para

el usuario medio, con un fuerte énfasis en la usabilidad y facilidad de instalación.

Es reconocido por ser fácil de usar, especialmente para los usuarios sin

experiencia previa en Linux.

Linux Mint se compone de muchos paquetes de software, la mayor parte de los

cuales se distribuyen bajo una licencia de software libre. La principal licencia

utilizada es la GNU General Public License (GNU GPL) que, junto con la GNU

Lesser General Public License (GNU LGPL), declara explícitamente que los

usuarios tienen libertad para ejecutar, copiar, distribuir, estudiar, cambiar,

desarrollar y mejorar el software. Linux Mint es financiada por su comunidad de

usuarios. Los usuarios individuales y empresas que utilizan el sistema operativo

pueden actuar como donantes, patrocinadores y socios de la distribución. El apoyo

financiero de la comunidad y la publicidad en el sitio web ayuda a mantener Linux

Mint libre y abierto.[26]

19

Page 30: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

2.8 GNU Scientific Library

GNU Scientific Library (GSL) es una colección de rutinas diseñadas para cómputo

numérico. Estas rutinas han sido escritas en lenguage C, y presentan una

moderna interface de aplicaciónes para programación (API por sus siglas en

ingles) para programadores C, permitiendo la codificación de subrutinas en

lenguajes de muy alto nivel.

Incorpora, entre otras, rutinas para el manejo de números complejos, funciones

elementales y funciones especiales, combinatoria, álgebra lineal, integración y

derivación numéricas, transformada rápida de Fourier, transformada wavelet

discreta, generación de números aleatorios y estadística.[27]

20

Page 31: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

CAPÍTULO III. PREDICCIÓN DE AFINIDAD PÉPTIDO – MHC II

3.1 Antecedentes

Desarrollos en el campo de la inmuno-informática han dejado a su paso una gran

cantidad de proyectos y aplicaciones para la predicción de enlace entre epítopos y

la molécula del complejo mayor de histocompatibilidad clase II. Una de las

personalidades más destacadas dentro de este campo de estudio es Morten

Nielsen, afamado físico danés quien es pionero en el diseño de modelos

computacionales del sistema inmunológico. A continuación se presentan algunos

proyectos previos, incluidos aquellos en los que Nielsen se ha involucrado y que

sirven como base para el desarrollo de este proyecto.

Uno de los primeros trabajos relacionados con la predicción de enlace a la

molécula MHC-II por parte de Morten Nielsen fue en el año 2004 titulado

“Improved prediction of MHC class I and class II epitopes using a novel Gibbs

sampling approach”. En éste se habla de un método basado en el muestreo de

Gibbs y características específicamente optimizadas para el reconocimiento de

patrones de enlace de MHC clase I y clase II, se localizan patrones de enlace en

un conjunto de secuencias y se caracterizan en términos de una matriz de pesos.

[28]

En 2007 también aportó otro trabajo llamado “Prediction of MHC class II binding

affinity using SMM-align, a novel stabilization matrix alignment method”, en el que

se describe el uso del método estabilizador de matrices como herramienta para la

predicción de patrones de enlace para la molécula MHC-II. Cabe destacar que

este método estabilizador de matrices es uno de los puntos fundamentales en el

funcionamiento de la herramienta de predicción descrita en la presente tesis. [29]

21

Page 32: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

Otros proyectos referentes a MHC-II por parte de Nielsen son NetMHCIIpan-2.0

(2010) y su mejora NetMHCIIpan-3.0 (2013), método pan específico basado en

redes neuronales que funciona sin la necesidad de ningún tipo de rep-

alineamiento para los datos de entrada.[30][31]

Finalmente algunos otros métodos encontrados en el estado del arte referente a

predicción de enlace a la molécula MHC-II incluyen optimización por enjambre de

partículas, uso de múltiples instancias regresivas, secuencias de pesos, entre

otros.[32][33][34]

Después de una exhaustiva búsqueda de todos aquellos proyectos disponibles

hasta el día de hoy, se encontró que ninguno de los actualmente propuestos

incluye el uso de la tecnología GPGPU bajo el paradigma de la programación

paralela, lo que supone una novedosa característica incluida en la nueva

herramienta de predicción propuesta en esta tesis en comparación con todo lo

anteriormente descrito.

3.2 Base de datos IEDB

La IEDB (Immune Epitope Database por sus siglas en ingles), es una colección de

datos relacionados a anticuerpos y epitopes de Celulas-T para humanos, primates

no-humanos, roedores y otras especies animales. Todos los datos de epítopos

peptídicas y no-peptídicas relacionados a padecimientos infecciosos, alergias,

padecimientos auto-inmunes y trasplantes se encuentran en constante

actualización.

Esta base de datos también contiene datos relacionados a enlace con MHC de

una variedad de fuentes antigénicas e inmuno-epitopes provenientes de otras

bases de datos tales como FIMM, HLA Ligand, TopBank, y MHC Binding.[35]

22

Page 33: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

Tabla 2: Resumen de datos disponibles en IEDB

Lo anterior pone a IEDB como una de las bases de datos más utilizadas en el

campo de la inmuno-informática, específicamente en aplicaciones de predicción

tales como NetMHC-II o BediPred.

3.3 Servidor NetMHC-II

El servidor NetMHC-II predice la afinidad de enlace de péptidos a la molécula

MHC-II de los alelos HLA-DR, HLA-DQ, HLA-DP y de ratón. Los métodos

utilizados para la predicción son SMM (Stabilized Matrix Method) y Gibbs Sample.

Este servidor usa el enfoque de cualitativo de afinidad, es decir, no sólo predice si

un péptido es enlazador con la molécula MHC-II, sino también su grado de

afinidad para determinar si será un enlazador fuerte (strong binder) o enlazador

débil (weak binder). [36]

A continuación se muestra un ejemplo de los resultados arrojados por el servidor,

al ser ejecutado en su versión local:

23

Categoría CantidadEpítopos peptídicas 122661Epítopos no péptídicas 2091Ensayos de célula T 255056Ensayos de célula B 173927Ensayos de ligando MHC 305740Organismos fuente de epítopo 3304Restricción de alelos MHC 692Referencias 16384

Page 34: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

Tabla 3: Resultados de predicción arrojados por NetMHCII

Para efectos de uso en el laboratorio, los datos más importantes de la tabla son el

core o núcleo de enlace del péptido, el valor de afinidad del péptido y el bind level

o nivel de enlace que determina si el péptido sera un enlazador fuerte o débil.

24

Page 35: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

CAPÍTULO IV. CÓMPUTO DE PROPÓSITO GENERAL EN UNIDADES DE

PROCESAMIENTO GRÁFICO

El cómputo paralelo, en ocasiones llamado paralelismo, es una forma de cómputo

en la que muchas instrucciones se ejecutan al mismo tiempo, operando bajo el

principio de que un problema grande puede dividirse en sub-problemas más

pequeños, que al ser resueltos llevan a la solución del problema completo. Este

enfoque de paralelismo se ha aplicado específicamente en la programación de

aplicaciones, generando un nuevo paradigma de programación conocido como

programación paralela.[37]

La programación paralela es, como su nombre lo indica, programar de forma tal

que muchas instrucciones puedan ser ejecutadas al mismo tiempo y se diferencia

del paradigma tradicional de programación debido a que éste es de carácter

secuencial, es decir, cada una de las instrucciones se programan de forma tal que

se ejecutan una a una sucesivamente. Actualmente no hay un común acuerdo

acerca de qué enfoque de programación es mejor, se piensa más bien que cada

uno es adecuado para situaciones o requerimientos específicos de programación,

de modo que por ejemplo, la programación secuencial aplica para algunos casos y

la programación paralela aplica para otros.

En un principio la programación paralela, así como su contra-parte secuencial, se

aplicaban sobre la CPU de la computadora. Herramientas como MPI o PVM

permitían al usuario programar aplicaciones que trabajaran sobre los hilos de la

CPU para generar un comportamiento de paralelismo. Después se descubrió que

podían utilizarse las capacidades de las tarjetas gráficas (GPU por sus siglas en

inglés) para trabajar sobre programas paralelos. La empresa NVIDIA, gigante del

mercado de tarjetas gráficas, fue uno de los pioneros en el campo del cómputo

paralelo sobre GPUs, quien posteriormente creó las llamadas GPGPU (General

Purpose Graphic Proccesor Unit), tarjetas gráficas hechas específicamente para

programar aplicaciones paralelas.[38]

25

Page 36: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

La arquitectura CUDA para programación paralela se ilustra a continuación:

Figura 8: Disposición lógica de espacios de memoria en tarjetas NVIDIA para CUDA

4.1 Paralelismo de los datos

Muchas aplicaciones de software que procesan enormes cúmulos de datos y por

lo tanto se ejecutan durante largos periodos de tiempo, son diseñados para

modelar fenómenos del mundo real. Imágenes y video son retratos de un mundo

físico donde diferentes partes de una imagen capturan de forma simultanea

eventos físicos independientes. La física de cuerpos rígidos, dinámica de fluidos y

movimientos pueden evaluarse de forma independiente sobre pequeños pasos de

tiempo. Entonces, el paralelismo de los datos se refiere a la cualidad de un

programa para realizar, de forma exitosa, muchas operaciones aritméticas sobre

estructura de datos y de forma simultanea.

Un buen ejemplo acerca de paralelismo en los datos se presenta a continuación,

donde una matriz P es el resultado del producto punto entre las filas de una matriz

M y las columnas de una matriz N. Se ve que cada una de las operaciones

ejecutadas entre los elementos correspondientes a las filas de M y las columnas

de N pueden realizarse de forma simultanea e independiente entre sí. Entonces,

26

Page 37: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

para matrices muy grandes la cantidad de multiplicaciones punto es enorme, para

una matriz de 1,000 por 1,000 serían por ejemplo 1,000,000 de operaciones, cada

una de ellas involucra 1,000 multiplicaciones y 1,000 operaciones aritméticas

acumuladas.

Son situaciones como ésta en las que se hace evidente que la utilización de

dispositivos GPU, como NVIDIA por ejemplo, auxiliados de herramientas de

programación paralela como CUDA C, pueden acelerar la ejecución de dichas

operaciones en comparación con su contra-parte tradicional sobre una CPU.[39]

Figura 9: Representación de matrices en CUDA

27

Page 38: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

4.2 Lenguajes de programación para GPGPU

Existen muchos entornos de desarrollo que posibilitan la aplicación del paradigma

de programación paralela usando GPGPU como recurso de procesamiento. Al

principio, uno de los primeros acercamientos fue gracias al lenguaje ensamblador,

después surgirían diversos lenguajes como lo son GLSL, Cg y HLSL, que si bien

no usaban la GPU desde la perspectiva de operaciones aritméticas, si lo hacían

para el desarrollo de aplicaciones gráficas.

Posteriormente se descubriría el gran potencial de procesamiento de las GPUs y

así nacerían las GPGPUs mencionadas anteriormente, para las cuales se han

desarrollado otros lenguajes de programación especializados como Brook GPU

que es una extensión de ANSI C, Sh como extensión d C++, OpenCL que puede

usarse sobre diversos dispositivos de procesamiento como CPU multi-núcleo o

GPU y por último CUDA, que trabaja exclusivamente sobre dispositivos de la

marca NVIDIA y actualmente se posiciona como una de las herramientas de

desarrollo de aplicaciones paralelas más extendidas del mercado.[40]

Para el presente proyecto, específicamente para la sección de desarrollo paralelo

de la aplicación se eligió CUDA C como herramienta principal, debido a su gran

alcance como lenguaje predilecto, lo que permite acceso a un sinfín de material de

apoyo, tanto bibliográfico como por parte de foros especializados en la materia,

además CUDA C, como su nombre lo indica, viene siendo una especie de añadido

o extensión del lenguaje de programación C, que viene siendo el más utilizado en

el mundo, lenguaje base para la aparición de otros, con mucha funcionalidad, una

enorme influencia y aplicación aun en la actualidad.

28

Page 39: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

4.3 Estructura de un programa en CUDA

Un programa en CUDA consiste en una o más fases que son ejecutadas ya sea

por el CPU o un dispositivo, una GPU por ejemplo. Aquellas fases que exhiban

poco o nada de paralelismo son ejecutadas en el llamado “host code” o código

anfitrión, mientras que las fases que si presentan una gran cantidad de

paralelismo en sus datos son ejecutadas por el “device code” o código de

dispositivo. Un programa desarrollado en CUDA es entonces un código fuente

unificado que contiene tanto “host code” como “device code”. Entonces el

compilador de NVIDIA C, conocido como nvcc, separa ambas partes durante la

etapa de compilación de código. El código anfitrión es ANSI C, por lo que es

compilado por el compilador tradicional para lenguaje C y ejecutado como un

proceso CPU ordinario. En cambio, el código de dispositivo es escrito en lenguaje

ANSI C pero extendido con palabras clave para aquellos métodos específicos para

datos paralelos, estas etiquetas se denominan “kernels”, compilado en nvcc y

ejecutado en la GPU.

Estas funciones kernels generan una gran cantidad de hilos, que son instancias de

ejecución, para explotar el paralelismo en los datos. En el ejemplo anterior de

multiplicación punto de matrices, se puede implementar un kernel que compute

todas las operaciones matriciales utilizando estos hilos. Siendo una operación con

matrices de 1,000 por 1,000 se pueden lanzar 1,000,000 de hilos, donde cada uno

de ellos es capas de computar la operación correspondiente a un sólo elemento

de la matrix P. Es importante notar que los hilos de CUDA son mucho más ligeros

que los hilos de la CPU, por lo tanto los programadores CUDA pueden asumir que

la generación y organización de estos hilos tomará muchos menos ciclos gracias a

la eficiencia del hardware GPU aplicado. Lo anterior contrasta con los hilos de la

CPU que generalmente toman miles de ciclos de reloj para generarse y

organizarse.[41]

29

Page 40: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

Entonces, la ejecución de un típico programa en CUDA puede ilustrarse en la

siguiente imagen donde el proceso comienza con la ejecución del anfitrión (CPU),

después se lanza el kernel que mueve la ejecución al dispositivo (GPU), donde se

generan una gran cantidad de hilos que toman ventaja del gran paralelismo de los

datos. Todos los hilos generados durante la ejecución de un kernel se denominan

como red o “grid”.

Figura 10: Ejemplo de grids aplicados a un programa en CUDA

30

Page 41: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

CAPÍTULO V. MÉTODO ESTABILIZADOR DE MATRICES CON DESCENSO

MÁXIMO

5.1 Principios del método

Cada péptido sometido a pruebas de afinidad de enlace con la molécula MHC-II

puede ser codificado como un vector binario con ceros en todas sus posiciones,

excepto en aquellas que codifican cada uno de sus aminoácidos específicos.

Entonces, por ejemplo, un péptido de longitud 20 puede ser codificado como un

vector binario de N posiciones que se denota como N∗20 bajo el contexto

del método estabilizador de matrices. Para un conjunto de secuencias (péptidos),

cada vector x t puede ser apilado para construir una matriz H resultante. La

matriz H es multiplicada por un vector w que asigna pesos a cada residuo

posible en cada posición de la secuencia, esto genera un vector de predicción

y pred .

H∗w= y pred (1)

De un conjunto de entrenamiento de secuencias codificado en H con valores

medidos previamente ymeas , se pueden encontrar los valores correctos del

vector w minimizando la diferencia entre los valores predichos y pred y los

valores medidos ymeas acorde a la norma L2 . Para suprimir el efecto de ruido

en los datos experimentales, se añade un segundo término a la minimización:

ǁ (H∗w )− ymeas ǁ +wt∗Ʌ∗w→mínimo (2)

31

Page 42: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

En el cual Λ es un escalar o una matriz diagonal. El efecto del segundo término

añadido es disminuir los valores de w que no contribuyen significativamente a

minimizar la norma. Esta técnica llamada regularización, suprime el efecto de

ruido. Siendo utilizada la norma L2 o la suma del error cuadrado entonces la

ecuación anterior puede resolverse analíticamente para cualquier valor dado de

Λ como sigue:

w=(H t∗H+∧)

−1∗H t

∗ymeas (3)

5.2 Validación cruz

El valor óptimo para Λ puede determinarse por validación cruz, los datos

experimentales correspondientes a las filas de (H , ymeas) son separados

aleatoriamente en conjuntos de entrenamiento T i=(H , ymeas)train i y conjuntos de

prueba (H , ymeas)blind i . Para una Λ dada, la ecuación (3) es utilizada para

calcular una w para cada conjunto de entrenamiento T i . Entonces estás

w i pueden ser utilizadas para realizar predicciones para sus correspondientes

conjuntos ciegos. Sumando las distancias de todos los conjuntos ciegos se

obtiene la distancia y pred validada por cruz:

Φ (Ʌ )=∑ ǁ Hblind i∗wi (Ʌ )− yblind i ǁ (4)

32

Page 43: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

Minimizando Φ como función de Λ corresponde a minimizar la distancia

validada por cruz “aminorando” la influencia de los coeficientes en w

susceptibles a ruido.

Dado que tanto el valor óptimo resultante para Λ y la correspondiente w i son

de algún modo influenciados por la forma cómo se dividen los conjuntos de

entrenamiento y los conjuntos ciegos, el mismo procedimiento se repite varias

veces con diferentes particiones, dicho procedimiento se denomina “bagging”.

La w final se obtiene promediando todas las w i óptimas generadas en la

validación cruz y el bagging repetidos.

5.3 Descenso de gradiente

Una parte fundamental dentro del proceso para estabilizar la matriz H es hallar

una Λ óptima qué permita encontrar el vector de pesos w . La Λ será un

valor escalar añadido a la diagonal de la matriz H . El descenso de gradiente

como tal se aplica a un conjunto de valores, originalmente se pensó de esta forma

para obtener varios valores que serían aplicados a la diagonal principal de H ,

después se determinó que para agilizar los tiempos de procesamiento de la

aplicación era necesario cambiar un poco la perspectiva, por lo que se optó por

manejar la derivada en lugar del gradiente, para un solo valor de Λ .

33

Page 44: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

El algoritmo de descenso máximo se estructura de la siguiente manera:

1. Se tiene un número máximo de iteraciones para obtener el descenso

máximo del valor Λ y un valor Ε .muy pequeño que sirve como paso

para incrementar o decrementar el valor de Λ dependiendo de hacia

donde tienda el mínimo al que se pretende acercar.

2. En cada iteración se obtiene la derivada que comprende primeramente

obtener el tamaño del paso que dará Ε , después se calcula un valor

“suma” de x+Ε y un valor “resta” x−Ε donde x es el valor actual al

cual se le aplicara el paso de ascenso o descenso, por último se obtiene la

resta entre la función de evaluación para x+Ε y x−Ε .

3. A su vez, cada función de evaluación utiliza la ecuación (3) mostrada

anteriormente para obtener un y pred al que se le resta los valores de

ymeas , después se obtiene la norma L2 de dicha resta.

4. La norma obtenida en el paso tres se devuelve tanto para x+Ε como

para x−Ε , ambas normas son restadas para obtener el numerador del

gradiente el cual se divide por el denominador del gradiente que será

2∗Ε , dicha división corresponde a la derivada.

5. Teniendo la derivada se puede determinar la dirección de descenso y se

procede a calcular el backtracking que es un criterio utilizado para reajustar

el tamaño del paso Ε para el avance de la siguiente x . El backtracking

primero multiplica el valor de descenso por el tamaño del paso alfa, este

34

Page 45: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

valor es sumado a la x actual, este valor de x+( pk∗α) se le suma una

constante C de 0.5. Después se compara la norma de x siguiente

contra la x actual, mientras sea mayor se reduce el tamaño de α a la

mitad, en caso contrario de que alfa necesite ser más grande entonces se

duplica su valor.

6. Finalmente se obtiene una x tendiendo al valor mínimo, gracias a la

dirección de descenso. Como se mencionó anteriormente, esta x servirá

como nuestra Λ inicial para la ejecución del paso de bagging.[42]

35

Page 46: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

CAPÍTULO VI. CODIFICACIÓN SECUENCIAL E IMPLEMENTACIÓN

PARALELA

6.1 Estructura de la aplicación

Una vez analizados el estado del arte y diversas fuentes bibliográficas se procedió

a codificar la aplicación. De primer momento y dada la naturaleza del proceso de

bagging, se determinó la necesidad de programar todas las funciones respecto a

operaciones con matrices y vectores, dichas operaciones son:

• Traspuesta de una matriz

• Producto entre matrices

• Suma de vectores

• Resta de vectores

• Producto entre vector y escalar

• Producto punto entre dos vectores

• Producto entre matriz y vector

Después se implementaron los métodos para extraer los datos directamente del

archivo original que contiene los péptidos que serán utilizados posteriormente para

el entrenamiento y las prueba. Una vez obtenidos los datos es necesario

transformarlos en una matriz H para proceder a su tratamiento utilizando el

método de bagging, se obtienen las dimensiones de H, se determina el alfabeto de

aminoácidos presentes en el conjunto de datos y después se construye la matriz

encendiendo en uno sólo aquellas posiciones en H que corresponden a los

aminoácidos presentes en cada uno de los péptidos, es importante recordar que la

construcción de la matriz H se basa específicamente en el criterio de transformar

cada péptido del conjunto de datos en un vector que cubra todas las posiciones

posibles para cada aminoácido presente, finalmente cada vector péptido se apila

para construir la matriz H que se utilizará constantemente en la aplicación.

36

Page 47: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

Posteriormente, al tener las matrices H y H traspuesta se programó el método de

bagging, que depende en parte del azar, por lo que se creó una librería llamada

“alea.h” que contiene algunos métodos para generación de aleatorios pero

principalmente un método de barajeo o “shuffle” que se utiliza al momento de

entrenar los datos dentro del bagging.

En el SMM o método estabilizador de matrices, la formula para obtener el vector w

de pesos conlleva realizar ciertas operaciones entre matrices, de las que la

inversa es la más laboriosa, de primer momento y dado que H jamás será una

matriz cuadrada se optó por la aplicación de la pseudo-inversa, específicamente

por el método de Penrose. Posteriormente se decidió utilizar las herramientas

provistas por las cabeceras de la GSL (GNU Scientific Library), las que se usaron

fueron:

• gsl_matrix.h: librería para operaciones matriciales y gestión de memoria.

• gsl_linalg.h: librería para operaciones con álgebra lineal, como por ejemplo

la descomposición LU y su pseudo-inversa.

• gsl_cblas.h: librería para operaciones de permutación.

A partir de aquí se explicará más detalladamente cada parte de la aplicación:

6.1.1 Origen de los datos

Como se comento en un apartado anterior, los datos utilizados tanto para el

entrenamiento como para las pruebas se obtiene de una de las fuentes de datos

más reconocidas en el campo de la inmuno-informática. Nos referimos a la IEDB

(Immune Epitope Database). Nuestro primer conjunto de datos proviene del

archivo “H-2-Iab_test_random.txt” que contiene péptidos tipo alelos H-2-Iab 15 de

ratón.

37

Page 48: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

6.1.2 Pre-procesamiento

El primer detalle notorio al revisar el archivo de origen de los datos fue que

muchos de los péptidos listados se repetían presentando diferentes valores de

medición para su afinidad con la molécula MHC-II. Entonces se procedió a

identificar qué péptidos presentaban este comportamiento y dado que es

necesario que cada uno tenga sólo un valor de medición relacionado para efecto

de ejecutar el método de predicción, se procedió a promediar todos los valores

ligados al péptido para obtener un único valor promedio qué tome en cuenta las

variantes presentadas en el archivo originalmente.

Una vez realizado lo anterior se obtuvo un nuevo archivo conteniendo un total de

97 péptidos sin incluir alguno más de una vez. A este nuevo archivo se le dio el

nombre de “TrainInput2.txt” y es el que se utiliza tanto para los datos de

entrenamiento como los de prueba.

El siguiente aspecto a considerar es el “alfabeto”, cada péptido está formado a su

vez de aminoácidos, existen entonces los llamados 20 aminoácidos esenciales,

que son representados mediante una letra que no se repite. Por lo anterior es

importante para cada conjunto de datos particular, determinar el alfabeto de

aminoácidos presentes para ese caso específico, puesto que el criterio utilizado

para construir la matriz H a partir de los datos de entrada es que debe

determinarse qué aminoácidos de los 20 esenciales están realmente presentes, es

decir, se considera cada posible variación de un aminoácido para cada posición en

el arreglo de un peṕtido.

También es importante determinar en base a los datos de entrada las dimensiones

que serán consideradas posteriormente para la construcción de la matriz H, por lo

que se hace un conteo del total de péptidos obtenidos en el pre-procesamiento, de

ese conteo se desprende la dimensión 1 o Altura que tendrá la matriz H, después

se calcula la dimensión 2 o Anchura de la matriz, definido mediante la formula:

(Dimensión del vector péptido * Dimensión del vector alfabeto) + 1.

38

Page 49: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

Cabe mencionar que el “1” sumado al final del producto corresponde al valor offset

añadido al inicio de lo que será cada uno de los vectores que conformarán

posteriormente a la matriz H.

6.1.3 Construcción de la matriz H

Una vez concluido el pre-procesamiento de los datos de entrada, ya contamos con

la información necesaria para construir la matriz H que será una representación

binaria de cada uno de los péptidos correspondientes a los datos de entrada. Ya

se conocen las dimensiones de altura y anchura de la matriz así como el alfabeto

completo de aminoácidos presentes en cada péptido.

La matriz H se forma mediante una función que transforma cada péptido en un

vector fila, cada vector se representa mediante valores binarios donde se ponen

en “1” las posiciónes correspondientes al aminoácido presente entre todo el

alfabeto disponible para esa muestra. En el caso del método como tal, primero s

genera la matriz H “vacía” es decir exclusivamente en ceros, luego se van

“encendiendo” cada uno de los aminoácidos del vector según corresponda,

teniendo en cuenta que el primer elemento de cada fila siempre estará en 1 debido

a la columna offset propia del método de bagging.

Después de tener H, se procede a generar su traspuesta pues es necesaria para

las operaciones de predicción que serán ejecutadas más adelante. También debe

considerarse el hecho de que la matriz H abarca a todo el conjunto de datos, por

lo que es necesario generar una matriz más pequeña que hemos denominado

Htrain, que sólo contiene la cantidad de datos necesaria para el entrenamiento del

programa y por supuesto su correspondiente traspuesta.

39

Page 50: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

6.1.4 Descenso máximo

El descenso máximo es un método del álgebra lineal que en nuestro caso nos

permite obtener una lambda óptima, dicha lambda será utilizada posteriormente

durante el proceso de bagging.

El método necesita de una serie de parámetros iniciales para ejecutarse, que son:

• MAXITER: el número máximo total de iteraciones que el método puede

ejecutarse, independientemente de si converge al punto óptimo deseado.

• X0: el punto inicial al que le asignamos el valor 1.0, a partir de este punto

avanzaremos hacia adelante o hacia atrás durante cada vuelta del

descenso máximo, al final este punto debe ser nuestra lambda óptima.

• Htrain: la matriz H de entrenamiento.

• Htrain traspuesta: se utiliza junto a Htrain para obtener el vector de pesos w

en un apartado específico del método.

• Input: el arreglo de péptidos que necesitamos para realizar la comparación

entre los valores obtenidos previamente in vitrio contra las que se generen

dentro de la aplicación, es decir, in silico.

El método de descenso máximo consiste un punto óptimo o lambda ideal, para ello

se toma un punto inicial y se escoge una dirección de descenso hacia atrás y

hacia adelante basado en un paso alfa dado a nuestro punto inicial. Se realiza una

prueba de convergencia con un valor epsilón que sería el límite, de modo que si

no converge entonces se ajusta el paso alfa hasta que se cumpla la condición de

que el nuevo punto x sea menor que el anterior. Una vez que el método converga

o cumpla con el número máximo de iteraiones, se obtiene una lambda ideal que se

usará posteriormente.

40

Page 51: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

6.1.5 Método de bagging

Una vez obtenida la lambda óptima se procede a ejecutar el método de bagging

que como se mencionó anteriormente transforma todos los péptidos de entrada en

una matriz H a la cual se le aplican una serie de operaciones de álgebra lineal, la

lambda se usa para añadirla como valor a la diagonal de dicha matriz H para

entonces partirse en subconjuntos de entrenamiento y subconjuntos de prueba.

Todos los subconjuntos se generan de forma aleatoria, los de entrenamiento se

someten a una función w=(H t∗H+∧)

−1∗H t

∗ymeas , dicha función tiene por objeto

obtener un vector w i específico para ese caso en concreto, al final todos esos

vectores w i se promedian para obtener un vector w general, la idea es que

este vector w general sea o contemple muchos casos diferentes de la matriz H

original de manera que pueda ser utilizado para obtener predicciones confiables

sobre los datos de prueba. Al final se obtiene entonces el vector w para nuestra

matriz H, que al multiplicarlos nos dará como resultado un vector de predicciones

y pred que deberá ser comparado con el vector de valores ymed medidos in vitro

para esos mismos péptidos.

Se debe puntualizar que el método de bagging con descenso máximo se describe

más detalladamente en el capítulo cinco.

41

Page 52: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

6.1.6 Bibliotecas

Para el funcionamiento de la aplicación se tienen tres librerías que tuvieron que

ser programadas por separado:

• jo.h: contiene todas las funciones utilizadas en el programa princial, todo lo

referente a operaciones matriciales, vectoriales, algebra lineal y los

metodos de descenso máximo y bagging.

• alea.h: contiene métodos para generación de números aleatorios bajo

diferentes criterios, además de los métodos necesarios para generar

aleatoriamente semillas y el shuffle usado en el bagging. A su vez contiene

la referencia a otra librería llamada “mt.h”.

• mt.h: contiene los métodos para generación de aleatorios usando el

algoritmo mt19937

6.2 Proceso de paralelización

Dada la naturaleza de la aplicación, que basa su funcionamiento en operaciones

entre matrices y vectores, se puede anticipar que existen muchas secciones que

pueden ser sometidas al proceso de paralelización. Específicamente todo lo

concerniente al proceso de entrenamiento y prueba en donde se utilizan tanto el

descenso máximo como el bagging.

La operaciones que fueron paralelizadas dentro del método de predicción, el cual

se basa en la formula w=(H t∗H+∧)

−1∗H t

∗ymeas son los siguientes:

• Método de SeudoInversa (Matrix A, Matrix B)

• Método MatMul (Matrix A, Matrix B, Matrix D)

• Método Inversa (Matrix A, Matrix I)

• Método GaussJordanDiv(Matrix A, Matrix I)

42

Page 53: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

• Método GaussJordanReng (Matrix A, Matrix I, float pivote, int k)

6.3 Acciones dentro de la GPU

Como se mencionó con anterioridad, el proceso de paralelización afecta

directamente todas las operaciones entre matrices y vectores que se encuentran

dentro del proceso de predicción, basado en el método de la pseudoinversa. A

continuación se describen dichas operaciones, que son realizadas por parte de la

GPU.

La pseudoinversa se aplica a la matriz cuadrada H tH y las operaciones

involucradas serían las siguientes:

• Se define la matriz traspuesta H tH que sería (H tH )t

• Se obtiene el producto de H tH por (H tH )t , dentro de la GPU se

gestiona memoria para ambas matrices mediante la operación cudaMalloc,

recordando que los tamaños en la GPU se manejan linealizando cada

matriz de la siguiente manera:

Matriz no linealizada Matriz linealizada

Figura 11: Linealización de una matriz

43

Page 54: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

• Tomando en cuenta el criterio anterior y una vez reservado el espacio en

memoria dentro de la GPU para las matrices que serán multiplicadas, la

operación como tal sigue la misma lógica tradicional de multiplicar cada

elemento de cada fila de la matriz H tH de forma consecutiva por cada

elemento de cada columna de la matriz (H tH )t , la única diferencia es el

enfoque para tomar cada elemento a multiplicar, respetando la

vectorización de ambas matrices. Se debe determinar el tamaño del bloque

dentro de la GPU, en este caso el bloque tiene un tamaño estándar de 1,

pues es espacio suficiente para cubrir las dimensiones de cada matriz. Se

debe determinar también el tamaño del grid o malla que serían la cantidad

de hilos dentro del bloque que estarán disponibles para realizar cada

operación. La característica principal de trabajar en paralelo es, como se ha

mencionado anteriormente, el uso de estos hilos para realizar de forma

concurrente tareas individuales, en este caso cada hilo se encargará de

multiplicar un elemento de la matriz H tH por un elemento de la matriz

(H tH )t .

• Se obtiene la inversa de H tH∗(H tH )t , en esta sección se hace uso de la

GPU específicamente en el kernel del método de Gauss-Jordan, tanto al

pivotear cada renglón de la matriz H tH∗(H tH )t y de su matriz identidad,

como para la división entre la matriz identidad y la matriz H tH∗(H tH )t .

44

Page 55: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

CAPÍTULO VII. RESULTADOS Y CONCLUSIONES

7.1 Resultados

Después de varias modificaciones y ajustes al programa, se procedió a realizar las

pruebas finales utilizando tres conjuntos diferentes de datos pre-procesados, todos

extraídos desde la base de datos IEDB que ya ha sido mencionada anteriormente

en este trabajo. Los tres conjuntos son:

• TrainInput2 con 97 muestras.

• TrainInput3 con 103 muestras.

• TrainInput4 con 99 muestras.

La totalidad de los péptidos probados pertenecen a la categoría de alelos H-2-Iab

15 de ratón, con una longitud fija de 15 aminoácidos cubriendo el total de 20

aminoácidos esenciales.

Básicamente el programa se divide en dos partes con distintos enfoques, primero

tenemos el método de álgebra lineal denominado Descenso Máximo, que

transforma los datos en una matriz que se intenta estabilizar, se busca un valor

lambda ideal y un resultado residual de este proceso es la obtención del vector de

pesos w que puede utilizarse para predecir los valores reservado de prueba. El

segundo método es el Bagging que sí es estocástico, transforma los péptidos a

predecir en una matriz, entonces la divide aleatoriamente en subconjuntos de

entrenamiento, donde cada subconjunto se usa para obtener un vector de pesos

w , al final todos estos wi se suman para obtener un vector de pesos general

que abarque muchos casos particulares de la matriz H . Entrenamos 70

péptidos de cada conjunto y guardamos el resto para probar dicho método.

A continuación presentamos las gráficas que reflejan el comportamiento de

predicción para los tres conjuntos de datos, para ambos métodos.

45

Page 56: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

Figura 12: Resultados de afinidad utilizando método de descenso máximo para TrainInput2

Figura 13: Resultados de afinidad utilizando método de bagging para TrainInput2

46

Page 57: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

Figura 14: Resultados de afinidad utilizando método de descenso máximo para TrainInput3

Figura 15: Resultados de afinidad utilizando método de bagging para TrainInput3

47

Page 58: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

Figura 16: Resultados de afinidad utilizando método de descenso máximo para TrainInput4

Figura 17: Resultados de afinidad utilizando método de bagging para TrainInput4

48

Page 59: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

Para una correcta interpretación de los resultados existen varios puntos a

considerar. Lo primero es referente a las muestras utilizadas, como se comentó

anteriormente los tres conjuntos de datos utilizados en nuestras pruebas

provienen de la base de datos IEDB, por lo que su principal característica es que

todas las mediciones realizadas para la obtención de estos datos fueron in vivo, es

decir se tomaron directamente sobre muestras celulares por lo que no puede

haber mayor fiabilidad y exactitud respecto al origen de las muestras.

Lo siguiente es respecto de los valores de cada dato, las entradas del programa

son como se ha comentado anteriormente péptidos representados mediante una

cadena de caracteres, cada uno de éstos viene asociado a un valor numérico de

medición realizado en laboratorio, dichos valores van desde las decenas hasta las

unidades de millar, todas con hasta seis decimales, por lo que a efectos de

simplificar el entendimiento de los resultados obtenidos se procedió a normalizar

todos los valores de modo que entren en un rango de 0 a 1.

En lo que refiere a las gráficas plasmadas en esta sección, tenemos dos para

cada conjunto de datos, una como resultado del método de descenso máximo y

otra como resultado del método de bagging, es decir, seis gráficas diferentes, de

las que las lineas verdes representan los valores medidos previamente en

laboratorio, las líneas púrpuras representan los valores de predicción de cada

caso.

Al observar y analizar detenidamente los resultados obtenidos en todos los casos,

podemos determinar lo siguiente:

Al ejecutar el método de descenso máximo observamos una “predicción casi

perfecta” de los datos usados en el entrenamiento, es decir los primeros 70

péptidos de cada conjunto de datos, pero en cuanto sometemos a prueba los

datos no utilizados durante el entrenamiento obtenemos resultados bastante

deficientes, lo que refleja que el método no es capaz de predecir correctamente

datos a menos que estén sobre-entrenados, es decir, no es un buen método de

49

Page 60: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

predicción puesto que no es estocástico sino determinista. El margen de error

general de este método es grande.

En el caso del método bagging podemos ver que la predicción de los datos de

entrenamiento no es tan buena como en el descenso máximo, que realiza una

predicción casi idéntica para los primeros 70 péptidos, pero en cambio se obtiene

una mejora significativa en los datos que no han sido utilizados en el

entrenamiento (el conjunto ciego), debido a que el algoritmo propio del método

permite reconocer la mayoría de los datos del conjunto en la etapa de

entrenamiento. Tomando en cuenta lo anterrior, es evidente que el método de

bagging es balanceado y presenta una actuación predictiva satisfactoria, por

encima del método de descenso máximo, por lo que al final optamos por unir los

puntos fuertes ambos métodos, es decir, con el descenso máximo obtenemos una

lambda que se añade a la diagonal de la matriz H para que ésta pueda someterse

al proceso de estabilización permitiendo obtener la inversa de Ht∗H para luego

ejecutar el bagging con 1000 iteraciones y así mejorar la predicción del método.

Como conclusión, se logró desarrollar una aplicación de escritorio paralela con

capacidad para predecir de forma eficaz la afinidad de epítopos a la molécula

MHC-II, sin la necesidad de acceso a internet y utilizando equipo hardware de bajo

costo, específicamente una computadora portatil con una tarjeta gráfica Nvidia

GEFORCE GT 635M de 2 GB.

A continuación se presentan las tablas de resultados para los valores ya

normalizados de predicción en cada caso, así como el error absoluto total de cada

valor predicho con respecto a su equivalente medido en laboratorio:

50

Page 61: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

51

Péptido BaggingError absoluto

Bagging DescensoFERVGPEWEPVPLTV 0.469835 0.462067 0.469251 0.007768 0.000584AGYLVGRKPLAFFSW 0.01546 0.019095 0.017407 0.003635 0.001947AMFVEDIAMGYVVSS 0.000832 0.013612 0.003623 0.01278 0.002791AQLGLRKKTKQSITE 0.036382 0.046001 0.039431 0.009619 0.003049ATERFRWLLIDLLRE 0.965044 0.928166 0.955032 0.036878 0.010012CIANGVSTKIVTRIS 0.021313 0.018661 0.022417 0.002652 0.001104CRDSLASMVKSHVAL 0.004493 0.006629 0.003857 0.002136 0.000636CSNSHVNTLRFLVKN 0.027727 0.034426 0.029144 0.006699 0.001417DQEYHRLIHSLSKTS 0.094132 0.099436 0.093743 0.005304 0.000389EEALNVALAVVTLLA 0.282915 0.289255 0.288357 0.00634 0.005442EGWPYIACRTSIVGR 0.210488 0.210367 0.208904 0.000121 0.001584EKMFVSPTPGQRNPY 0.705257 0.683620 0.700087 0.021637 0.00517FLIMRNLTNLLSARK 0.102639 0.114323 0.105656 0.011684 0.003017FLVKCQLQNPGVADL 0.233019 0.223508 0.230648 0.009511 0.002371FMRMAWGGSYIALDS 0.022192 0.023462 0.022880 0.00127 0.000688FRILSSISLALVNSM 0.054239 0.062347 0.056797 0.008108 0.002558GFVGLCRTLGSKCVR 0.004239 0.019855 0.006683 0.015616 0.002444GILHNLSDLYALITE 0.136554 0.142981 0.138887 0.006427 0.002333GRYNCKCCWFADKNL 0.021453 0.030043 0.024158 0.00859 0.002705GSLIVNPSLNGFLSK 0.348586 0.326697 0.344346 0.021889 0.00424GVWVLAEPTKGKNER 0.1041 0.099397 0.106095 0.004703 0.001995IHSLRRLYPSVFEKH 0.001548 0.007940 0.001607 0.006392 5.9E-05IISTFHLSIPNFNQY 0.23965 0.243526 0.239627 0.003876 2.3E-05ILLLDYMTSTNTNNS 0.315893 0.320141 0.316958 0.004248 0.001065INSMKTSFSSRLLIN 0.020862 0.025479 0.020986 0.004617 0.000124ISGYNFSLGAAVKAG 0.510768 0.496563 0.508012 0.014205 0.002756ITLRQMSILTHVNNV 0.002055 0.024492 0.009188 0.022437 0.007133IYGLPWMTTQTSALS 0.03121 0.027959 0.031185 0.003251 2.5E-05KGSPEFDWILGWTIK 0.019547 0.022643 0.021409 0.003096 0.001862KIPTHRHIVGKPCPK 0.080609 0.084465 0.079477 0.003856 0.001132KNKVNLLTHSINALI 0.07636 0.084223 0.078378 0.007863 0.002018KSAFQSSIASGFVGL 0.15827 0.153166 0.154135 0.005104 0.004135KSRFFIWSQEVPLLT 0.018916 0.027543 0.024583 0.008627 0.005667LIRKKLMTSPKWVQM 0.344419 0.342209 0.341814 0.00221 0.002605LKAEAQMSIQLINKA 0.001755 0.007172 0.001763 0.005417 8E-06LLKILVLSILSSPTK 0.002577 -0.001119 0.000621 0.003696 0.001956LLPSHSTVLTSHTLT 0.219179 0.216908 0.217282 0.002271 0.001897LLTKFVAAALHNIKC 0.408746 0.394099 0.403150 0.014647 0.005596LLWDYMCISLSTAIE 0.716665 0.701781 0.707913 0.014884 0.008752LMTSPKWVQMCSRTL 0.023111 0.026690 0.022320 0.003579 0.000791LQGLRYFIMAYVNQA 1 0.960004 0.987307 0.039996 0.012693LQIILSGKMAHLRKV 0.023362 0.038474 0.024855 0.015112 0.001493LQLVGIQRAGLAPTG 0.066001 0.068787 0.066348 0.002786 0.000347LQMVGMRRPQQGASG 0.226821 0.226452 0.223201 0.000369 0.00362LRLFDYNKNAIKTLN 0.697159 0.664630 0.689988 0.032529 0.007171LRNVACQEAVKLKLI 0.782347 0.753440 0.777974 0.028907 0.004373MGQFISFMQEIPTFL 0.01705 0.041993 0.020918 0.024943 0.003868

Valor medido

Descenso máximo

Page 62: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

Tabla 4: Comparativa entre Descenso Máximo y Bagging para TrainInput2

52

MGQLISFFGEIPSII 0.574345 0.543454 0.569435 0.030891 0.00491NIRYLVMAIVSDFSS 0.009813 0.017903 0.009952 0.00809 0.000139NMLTHSINSLISDNL 0.409949 0.396674 0.404771 0.013275 0.005178NQFGSVPAVTISCMT 0.37191 0.353753 0.366233 0.018157 0.005677NSLLFIPDIKLAIDN 0.008563 0.011727 0.009784 0.003164 0.001221PKGFYASPSVKTSLV 0.001298 0.017965 0.005475 0.016667 0.004177PKIFFRPTTITANVS 0.118744 0.121264 0.117800 0.00252 0.000944PSPIGYLGLLSQRTR 0.000209 -0.002509 0.002369 0.002718 0.00216PSVFINPISHTSYCY 0.014609 0.015425 0.015755 0.000816 0.001146PTHRHLKGEACPLPH 0.31008 0.311242 0.309463 0.001162 0.000617QEYHRLIHSLAKTNN 0.407683 0.394283 0.405496 0.0134 0.002187QGLRYFIMAYVNQAH 0.756388 0.736789 0.753255 0.019599 0.003133QGVYMGNLSQSQLAK 0.000435 0.008213 0.003318 0.007778 0.002883QYDVIIQHPADMSWC 0.241107 0.249513 0.240768 0.008406 0.000339REEHYIVLSSELRLS 0.492014 0.487476 0.492797 0.004538 0.000783RFFLPIFSEFVLLAT 0.293104 0.289890 0.292062 0.003214 0.001042RHIVGKPCPKPHRLN 0.008227 0.002647 0.008182 0.005580 4.5E-05RLTQSHPILNMIDTK 0 0.006796 0.001907 0.006796 0.001907RRRQLLNLDVLCLSS 0.016063 0.016778 0.018534 0.000715 0.002471RRRVMIQSSGGKLRL 0.187333 0.184852 0.188259 0.002481 0.000926RVNNSYSLIRLSHNS 0.137658 0.139027 0.137872 0.001369 0.000214RWLLIEILKASKSML 0.011433 0.018458 0.012603 0.007025 0.00117SDDQISIMKLPLSTK 0.04728 0.052364 0.046167 0.005084 0.001113SFDSKLHLISLLSLL 0.336022 0.324858 -0.009929 0.011164 0.345951SFIHNLRLSSSINIK 0.394685 0.372790 0.029663 0.021895 0.365022SGDVIVKAIGALEDI 0.069053 0.069949 0.054570 0.000896 0.014483SGEIIRAATTSPARE 0.156935 0.162463 0.399720 0.005528 0.242785SIPTNVTCAIHIGEV 0.013461 0.016925 0.076501 0.003464 0.06304SKFSNRRYLCTVTTK 0.16266 0.153546 -0.004197 0.009114 0.166857SLLNNQFGTMPSLTM 0.084777 0.084328 0.052443 0.000449 0.032334SRVLNYDFNKLTALA 0.008283 0.020830 0.236472 0.012547 0.228189SSKLNKFISPKSVIG 0.001612 0.017380 0.252712 0.015768 0.2511SWLNLAAHHPLRMVL 0.001082 0.005929 0.111455 0.004847 0.110373THRHIIGEGCPKPHR 0.018107 0.029382 0.367762 0.011275 0.349655TPRYIPSTSISSSNI 0.88881 0.866369 0.397422 0.022441 0.491388TQLVLSSMVNPLVLS 0.277156 0.265753 0.208249 0.011403 0.068907TSSSQSLISSPMSKK 0.260617 0.253343 -0.099458 0.007274 0.360075VEKSQLLNEFNNLYA 0.370684 0.361601 0.361727 0.009083 0.008957VLSYVIGLLPPDMVV 0.695136 0.666397 0.037189 0.028739 0.657947VPFNVAQAYCIGKLK 0.554228 0.553801 0.258852 0.000427 0.295376VSLIAIIKGIVNLYK 0.012784 0.034144 0.462262 0.02136 0.449478WELGLSPQQICTNFK 0.094969 0.088561 0.028228 0.006408 0.066741WRSFLNKVKSLRILN 0.082203 0.083696 0.164933 0.001493 0.08273YDFNKLTALAVSQLT 0.494889 0.487353 0.392357 0.007536 0.102532YGLRNSLLVAPMPTA 0.270744 0.269519 0.209942 0.001225 0.060802YNFATCGIFALISFL 0.806967 0.779188 -0.136933 0.027779 0.9439YNFATCGLIGLVTFL 0.067407 0.087364 -0.112151 0.019957 0.179558YQLFSDAKANCTAES 0.010236 0.008027 0.054319 0.002209 0.044083YQSRNKRLISHRNSK 0.111683 0.110685 0.211600 0.000998 0.099917YSKFRSPQPNIVAAT 0.024542 0.041924 0.391909 0.017382 0.367367

Sumatoria del error absoluto 0.948391 6.631574

Page 63: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

53

Péptido BaggingError absoluto

Bagging DescensoELLEFHYYLSSKLNK 0.000153 0.010123 0.004011 0.00997 0.003858LIEDYFEALSLQLSG 0.172741 0.166973 0.171365 0.005768 0.001376SLFSLLLVIISHNLG 0.588099 0.556836 0.579681 0.031263 0.008418SNKFHIRLIKGELSN 0.551354 0.533295 0.543662 0.018059 0.007692KLAFLVQTEPRMLLM 0.003622 0.013167 0.008885 0.009545 0.005263SMHLMLANAGRSSGS 0.025333 0.043536 0.035218 0.018203 0.009885YFIMAYVNQAHHIQL 0.002831 0.01228 0.004759 0.009449 0.001928NFWTNVKSISPLPSP 0.003061 0.00811 0.00556 0.005049 0.002499PSSGCYIHFFREPTD 0.376451 0.375811 0.376129 0.00064 0.000322KVKFGHVSINPADIA 0.060754 0.052888 0.060802 0.007866 4.8E-05NLTFSDAQSAQSQCR 0.020834 0.022334 0.020649 0.0015 0.000185IGHLLRGRNHFIYIV 0.847591 0.815002 0.834975 0.032589 0.012616RRIFGVFKNPCTSHG 0.011104 0.012962 0.013532 0.001858 0.002428FLLMYEMHRESLLKS 0.176589 0.180083 0.179443 0.003494 0.002854LKALTTKHPSLNIIT 0.043554 0.051293 0.04645 0.007739 0.002896DIYKGVYQFKSVEFD 0.00311 0.009737 0.005409 0.006627 0.002299FYREPVDQKQFKQDS 0.713106 0.694718 0.708373 0.018388 0.004733HEAINIALIAVSLIA 0.360394 0.354412 0.359071 0.005982 0.001323ELLDQSDVKEPGVSR 0.254848 0.259257 0.25754 0.004409 0.002692KSILLIMNANTLMGR 0.600175 0.560927 0.584618 0.039248 0.015557IVVSRCKILTVIPSQ 0.804088 0.762676 0.792897 0.041412 0.011191KLFNDPASPVAGNPH 0.008802 0.014349 0.012479 0.005547 0.003677VEIAIFQPQNGQFIH 0.255039 0.250648 0.255423 0.004391 0.000384LGLLYTVKYPNLNDL 0.027185 0.03763 0.032787 0.010445 0.005602LLSYVIGLLPQGSVI 0.010276 0.014511 0.012533 0.004235 0.002257FIMAYVNQAHHIDLM 0.007495 0.013967 0.011774 0.006472 0.004279WDVTHCSTICLIKRV 0.135708 0.138491 0.138536 0.002783 0.002828FNSLISIAQHLVSDR 0.176775 0.176573 0.179146 0.000202 0.002371WLLIEVLKGMKTTSE 0.246679 0.246998 0.247442 0.000319 0.000763NNVVQALTSLGLLYT 0.055286 0.034859 0.058896 0.020427 0.00361GQHTLPRCWLIRNGS 0.614726 0.611753 0.616333 0.002973 0.001607QKFVDTILSENGVVA 0.404047 0.386931 0.397054 0.017116 0.006993LFLHLVGFPTHRHIQ 0.015832 0.021068 0.019014 0.005236 0.003182SLPLFTGQASFDLAA 0.09827 0.111599 0.102922 0.013329 0.004652EFSNFKVAFSRSLND 0 -0.005294 -0.001279 0.005294 0.001279KYRWLNLSANGDLRL 0.003068 0.008871 0.005344 0.005803 0.002276FSLSAAVKAGASLID 0.016158 0.017995 0.019653 0.001837 0.003495SRCYSIYLSINGVLE 0.399494 0.388757 0.394877 0.010737 0.004617MDIKNLLTACTIFYI 0.134917 0.132257 0.137035 0.00266 0.002118LRAAMISLAKKIDVQ 0.001875 0.013796 0.006404 0.011921 0.004529KGLHHLQIILSGKMA 0.432677 0.424405 0.428996 0.008272 0.003681FMPEWANFKFRDLLF 0.62107 0.603672 0.61268 0.017398 0.00839LWTQSLRRELSGYCS 0.38696 0.384206 0.388713 0.002754 0.001753DLGKKRFLLIRNSTW 0.606143 0.595262 0.602118 0.010881 0.004025LNKFVSPKSVIGRFV 0.000991 0.009838 0.003818 0.008847 0.002827FQDAYNAAGGHNAVF 0.001039 0.007929 0.005236 0.00689 0.004197LANAGRSSGSRRPLG 0.132961 0.134919 0.132408 0.001958 0.000553SLRKLSSVCLALTNS 0.289065 0.286864 0.290145 0.002201 0.00108RCYSLYIAENGELTE 0.514529 0.507334 0.509706 0.007195 0.004823QLVFNSISARALKAY 0.000171 0.003182 0.002778 0.003011 0.002607TKKSIKEIASSISRL 0.0965 0.097591 0.098466 0.001091 0.001966NKFVSPKSVIGTFVA 0.201201 0.20755 0.205764 0.006349 0.004563

Valor medido

Descenso máximo

Page 64: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

Tabla 5 Comparativa entre Descenso Máximo y Bagging para TrainInput3

54

ILTYNKTSKTTILSK 0.033704 0.051121 0.040693 0.017417 0.006989QVVLSSMINPLVMST 0.008727 0.039635 0.018779 0.030908 0.010052FTCDQGYHSSDPNAV 0.00186 0.00369 0.003767 0.00183 0.001907NKALELFRKDIAAKY 0.724503 0.710051 0.719746 0.014452 0.004757IQLVFSSMINPLVIT 0.18171 0.181775 0.182028 6.5E-05 0.000318LECFVRSTPASFEKK 0.081459 0.082395 0.080105 0.000936 0.001354LLDNRSNHYEEVIAS 0.660928 0.642579 0.654928 0.018349 0.006CTGMLKRRLGLMSLS 0.88726 0.868681 0.882615 0.018579 0.004645YYGTQTILAACVDLG 0.013617 0.022649 0.017476 0.009032 0.003859WTQSLRRGLSAWTTS 0.083413 0.09375 0.088673 0.010337 0.00526RNNYRDSFNNFDASI 0.082441 0.092057 0.085486 0.009616 0.003045IVYSLVTTISSLSRI 0.000976 0.012657 0.004864 0.011681 0.003888NLMGKTLILLETFVR 0.689946 0.671574 0.685064 0.018372 0.004882TILIKKYNLNRAMML 0.010646 0.022122 0.016922 0.011476 0.006276VIGLLPQNMVLTTQG 0.195381 0.194747 0.195365 0.000634 1.6E-05SIISHNFCNLTSAFN 0.490576 0.482902 0.490621 0.007674 4.5E-05PSLIKTLQSRMSKNF 0.167207 0.165275 0.168072 0.001932 0.000865LSLCNKIKGLKVFNT 0.732144 0.709924 0.722613 0.02222 0.009531KVEFTGDLVVKALGA 0.215888 0.214848 0.164181 0.00104 0.051707ITDAVGNDMPGGYCL 0.404535 0.398561 0.273742 0.005974 0.130793KWVQMCSRTLKNSHQ 0.104715 0.110107 0.237874 0.005392 0.133159NSVVQALTSLGLLYT 0.011248 0.045849 0.14484 0.034601 0.133592KSRTLKSFFAWSLSD 0.26164 0.258206 0.18598 0.003434 0.07566KLKFNSVIVNPSLNG 0.000967 0.010816 0.105902 0.009849 0.104935VKDKYMWCYSQVNKR 0.000371 0.006342 0.322624 0.005971 0.322253PAPGAAGPPQVGLSY 0.020544 0.025231 0.496201 0.004687 0.475657LYKRVLHMLLLLIQT 1 0.978287 0.209205 0.021713 0.790795YFESFVREFVATART 0.003415 0.005524 -0.006355 0.002109 0.00977FLHLVGFPTHRHIRG 0.104202 0.113489 0.307393 0.009287 0.203191LGMNHVLQSIRRNYP 0.552187 0.546252 0.326609 0.005935 0.225578RQLIKTDISMSMPKF 0.176222 0.181414 0.362888 0.005192 0.186666DKYNKQLMVSSCVTS 0.145783 0.148069 0.23235 0.002286 0.086567LDGVNLVASQPIFTG 0.003485 0.018017 0.401461 0.014532 0.397976TSAFNKKTFDHTLMS 0.25706 0.252351 0.216626 0.004709 0.040434TMFEALPHIIDEVIN 0.058028 0.068022 0.351225 0.009994 0.293197FTNFKVAYSKSLKEL 0.01363 0.015361 -0.050783 0.001731 0.064413YRKGLGNFVQTDRKS 0.144414 0.148696 0.314467 0.004282 0.170053RLIHSLSNVKNQSLG 0.211701 0.211148 0.177127 0.000553 0.034574KLCLMKAQPTSWPLQ 0.003967 0.004971 0.021581 0.001004 0.017614TMTRPILRLLVLAVL 0.360863 0.368973 0.534648 0.00811 0.173785NNQNFFWAVKPKVVR 0.009618 0.011359 0.140706 0.001741 0.131088TILQRLGVLFGSRIA 0.098837 0.112251 0.26106 0.013414 0.162223VNSPRPAPGAAGPPQ 0.013648 0.01788 0.178022 0.004232 0.164374MFISDTPGERNPYEN 0.314481 0.314818 0.264083 0.000337 0.050398SGRLKFLDVCVALDM 0.084942 0.094007 0.278428 0.009065 0.193486QVNTSKTGINENYAK 0.305452 0.29978 0.125525 0.005672 0.179927RVNQLIRYSGYRETP 0.606848 0.596156 0.07196 0.010692 0.534888LSLMLNYPNSADRYY 0.026479 0.024377 0.094338 0.002102 0.067859FQKTILKATTALKDV 0.02289 0.030166 0.168502 0.007276 0.145612LLNNQFGTMPSLTLA 0.121185 0.118711 0.052991 0.002474 0.068194YQRSEEEKFPYIMGD 0.664444 0.655973 0.125965 0.008471 0.538479

Sumatoria del error absoluto 0.911003 6.633633

Page 65: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

55

Péptido BaggingError absoluto

Bagging DescensoRDIFLSQHHPSSLLL 0.355492 0.356169 0.353916 0.000677 0.001576PKLEFGSLIVNPSLN 0.000175 0.020186 0.013170 0.020011 0.012995DDDYGEPIIITSYLQ 0.058982 0.070352 0.064265 0.01137 0.005283GLVSQLSVLSSITNI 0.138034 0.148924 0.147383 0.01089 0.009349LHRVVLLESIAQFGD 0.105048 0.113828 0.109019 0.00878 0.003971RSVQRNTVFKAGDLG 0.495941 0.485916 0.489426 0.010025 0.006515IIKYNRRLAKSIICE 0.219128 0.210038 0.215763 0.00909 0.003365TSKYRSPQPNIVAAT 0.000725 0.009266 0.004322 0.008541 0.003597RYFLMAFANQIHHID 0.000531 0.002515 0.003415 0.001984 0.002884GWPYIGSRSQILGRS 0.000539 0.001929 0.003506 0.00139 0.002967KNLTGLVSAGPKAKS 0.001988 -0.002157 0.003882 0.004145 0.001894LLNEFNNLYADKVSV 0.752412 0.732801 0.742868 0.019611 0.009544RFKYLLNVSYLCHLV 0.462414 0.452423 0.455116 0.009991 0.007298FFVFLALAGRSCTEE 0.720589 0.700661 0.707811 0.019928 0.012778RESLESLWAPFGVLR 0.109156 0.110482 0.111309 0.001326 0.002153SCGMYGLKGPDIYKG 0.03857 0.050242 0.045628 0.011672 0.007058ETVEKIVDQYREPVK 0.071994 0.080666 0.075788 0.008672 0.003794RGPWRYIRSFPILAS 0.00021 0.005347 0.009394 0.005137 0.009184LAVFQPSSGNYVHCF 0.003059 0.013612 0.009411 0.010553 0.006352KLNNQFGSMPALTIA 0.00092 0.016851 0.008954 0.015931 0.008034PEIWHHLSTLIKQPD 0.285588 0.270606 0.279367 0.014982 0.006221VLKWHLHKAVEVPIS 0.476974 0.454396 0.471753 0.022578 0.005221NFSLGAAVKAGAALL 0.02378 0.021293 0.024576 0.002487 0.000796TGLWPFIRINNLKVK 0.473718 0.461959 0.463818 0.011759 0.0099EKPGNRNPYENLLYK 0.91505 0.894803 0.901184 0.020247 0.013866TFTNDSIISHNFCNL 0.245585 0.239611 0.245365 0.005974 0.00022GPDNPGEPLVLKEGI 0.749226 0.720534 0.732511 0.028692 0.016715RLCFSKSKNTLMYEI 0.59538 0.582359 0.589377 0.013021 0.006003NVKCKTPTQLAETID 0.37726 0.365705 0.377983 0.011555 0.000723MDLADLFNAQPGLTS 0.150929 0.150927 0.150150 2E-06 0.000779LLESLSSLGAHLDSD 0.378934 0.345127 0.369856 0.033807 0.009078RYHAPIYGAVHPRWL 0.069082 0.068863 0.071957 0.000219 0.002875LDMIITAVNSLISDN 0.650589 0.617927 0.637191 0.032662 0.013398SGGNHMLLDGVSVVA 0.689029 0.656734 0.670241 0.032295 0.018788NLTNLLSARKLDSSK 0.386508 0.400827 0.388335 0.014319 0.001827SGFIGFCKSMGSKCV 0.170307 0.170136 0.173590 0.000171 0.003283PEKFNARMATMLEYV 0.01411 0.034503 0.025971 0.020393 0.011861EFENFMKAGAHPIMH 0.002326 0.025181 0.009180 0.022855 0.006854TYSQLMTLKDAKMLQ 0.500256 0.478659 0.493249 0.021597 0.007007NYSLSAAVKAGATLL 0.008145 0.028496 0.016422 0.020351 0.008277GLLSYVIGLLPQNMV 0.01661 0.014489 0.017543 0.002121 0.000933GQFIHFYREPVDQKQ 0.175408 0.170629 0.173712 0.004779 0.001696SPLLTEGFKLLSSLV 0.319587 0.314733 0.316589 0.004854 0.002998SVCNKVKGLKVFNTR 0.512556 0.493998 0.508769 0.018558 0.003787ILVLILAHPSKRSQK 0.156959 0.153313 0.156867 0.003646 9.2E-05EIPSFRWTQSLRRGL 0.012026 0.016456 0.014743 0.00443 0.002717IPSIIHEALNIALIA 0.094976 0.116027 0.105746 0.021051 0.01077KVGEVCSFYADPKRY 0.729692 0.701392 0.715372 0.0283 0.01432LKGIQSLRKLSSVCL 0.357184 0.353971 0.355772 0.003213 0.001412NHVIQSVRRLYPKIF 0.628315 0.608348 0.614927 0.019967 0.013388

Valor medido

Decenso máximo

Page 66: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

Tabla 6: Comparativa entre Descenso Máximo y Bagging para TrainInput4

56

GFIGFCKSMGSKCVR 0.044562 0.060683 0.052947 0.016121 0.008385HKGIVIKSKKKGSTP 0.128189 0.131699 0.130036 0.00351 0.001847SCLDGKLCLMKAQPT 0.602789 0.588432 0.596051 0.014357 0.006738IPIQLLPNTLVFQAK 0.17524 0.174156 0.176608 0.001084 0.001368DYLILKNLTGLVSAG 0.002063 0.018751 0.012144 0.016688 0.010081ENMLRSMPVKGKRKD 0.284491 0.296559 0.285586 0.012068 0.001095RNLKNAGLIVGQMIL 0.154906 0.150556 0.153318 0.00435 0.001588HFLLRGPFEASWAIK 0.000528 -0.003798 0.004284 0.004326 0.003756VLSYVIGLLPQDMVI 0.293249 0.288806 0.291604 0.004443 0.001645LYKGVYELQTLELNM 1 0.974271 0.983934 0.025729 0.016066FINSLLKSLLLLNTR 0.46343 0.457313 0.455754 0.006117 0.007676EKDSPFKLSSSEPHC 0.026643 0.029236 0.030241 0.002593 0.003598PALFFTFLANLNLTE 0.070078 0.063818 0.072106 0.00626 0.002028NDAYNLVHLIMIYFF 0.676971 0.660001 0.662866 0.01697 0.014105DEFFECFKYLLIQGH 0.079086 0.082521 0.080948 0.003435 0.001862KTISVVTLLCVLPAV 0.023013 0.037376 0.027942 0.014363 0.004929SIAQHLVSDRPIMRY 0.386243 0.403168 0.394480 0.016925 0.008237LQFNQMMNPSHVKFL 0.161036 0.159643 0.164503 0.001393 0.003467YLGLLSQRTRDIYIS 0.485629 0.480896 0.481700 0.004733 0.003929DKLSVRVVYSTMDVN 0.020451 0.029507 0.027254 0.009056 0.006803ASLFLHLVGIPTHRH 0.023668 0.019044 0.094686 0.004624 0.071018MLIESNLAGSNDNFL 0.806168 0.776668 0.438885 0.0295 0.367283LMIAHRVLLSSILES 0.187199 0.194983 0.380215 0.007784 0.193016DITYKVHLATPINSR 0 0.015673 0.294692 0.015673 0.294692IVQNAYKQMIKSRTL 0.671453 0.649685 0.140667 0.021768 0.530786KRFFLPVFSDEVLAG 0.001765 0.007904 0.161289 0.006139 0.159524NKNFFWAVKPKAVRQ 0.173278 0.170600 0.222547 0.002678 0.049269VSLIAALKGMINLWK 0.02624 0.036311 0.193645 0.010071 0.167405NDSKLLKMVTSVIKN 0.624629 0.590473 -0.039528 0.034156 0.664157CTNFKTQLVLSSMVN 0.527466 0.513739 0.238450 0.013727 0.289016ILKGVINIWGSGLLQ 0.189903 0.194044 0.307453 0.004141 0.11755LSSKFNKFVSPKSVS 0.01032 0.036385 0.319497 0.026065 0.309177RQKIIYSGAVNLDDE 0.015645 0.043202 0.591787 0.027557 0.576142HYLVNHPEVLVEASQ 0.007401 0.017202 0.086320 0.009801 0.078919YREEIYRKGLGNFVQ 0.003869 0.002072 0.198934 0.001797 0.195065DGNYPLHIASKINNN 0.090374 0.105404 0.351923 0.01503 0.261549RLLDILEAIKLIRKK 0.396455 0.381528 0.315687 0.014927 0.080768MGQIVTMFEALPHII 0.02751 0.043380 0.382207 0.01587 0.354697VLDILTANKLIRQKL 0.103425 0.118900 0.266130 0.015475 0.162705GLDFSEVSNVQRLMR 0.536905 0.521182 0.190868 0.015723 0.346037YEYKVQQAMSNLVLG 0.029094 0.025952 0.180013 0.003142 0.150919TVYCKNILALSMTKK 0.088117 0.096221 0.396180 0.008104 0.308063LECFVRSSPASFEKK 0.031376 0.043930 0.281127 0.012554 0.249751IYEPEDLGNCLNKSD 0.271967 0.273786 0.271325 0.001819 0.000642SIGSNLTIACRVSLR 0.328949 0.313187 0.039044 0.015762 0.289905DSTVIRNLKNAGLIV 0.516126 0.482812 0.124922 0.033314 0.391204YVYDSLTTPTASVCQ 0.000503 0.018608 0.560567 0.018105 0.560064SVEFDMSHLNLTMPN 0.037436 0.054812 0.469279 0.017376 0.431843VVPDGYKLTGNVLIL 0.170359 0.178224 0.434040 0.007865 0.263681

Sumatoria del error absoluto 1.225677 8.340446

Page 67: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

BIBLIOGRAFÍA

[1] “VACUNOLOGIA INVERSA | Biotecnología.” [Online]. Available:

http://blogs.creamoselfuturo.com/bio-tecnologia/2011/07/11/vacunologia-

inversa/. [Accessed: 24-Jun-2015].

[2] “inmunologiaenlinea.es - 01. Introducción.” [Online]. Available:

http://inmunologiaenlinea.es/index.php/01-introduccion-a-la-inmunologia-

njevo. [Accessed: 13-Aug-2015].

[3] “Vacunología Inversa.” [Online]. Available:

http://www.sap.org.ar/docs/congresos/2011/infectologia/plotkin_estrategias.p

df. [Accessed: 13-Aug-2015].

[4] “Tema 01. Introducción a la Inmunología.”

[5] R. Naves P. and M. R. Bono M., Citoquinas. 2002.

[6] “Community Nursing Yukon Immunization Program Section 14 -Principles of

Immunology SECTION 14 -PRINCIPLES OF IMMUNOLOGY,” 2011.

[7] A. López–Martínez, C. Chávez–Muñoz, J. Granados, and A. López–

Martínez, “Función biológica del complejo principal de histocompatibilidad,”

Rev. Investig. clínica, vol. 57, no. 2, pp. 132–141, 2005.

[8] A. C. Goldberg, L. V. Rizzo, − Avenida, and A. Einstein, “ReVIeWING BASIC

SCIeNCeS Estrutura do MHC e função – apresentação de antígenos. Parte

1,” einstein, vol. 13, no. 1, pp. 153–6, 2015.

[9] “Complejo mayor de histocompatibilidad.” [Online]. Available:

https://es.wikipedia.org/wiki/Complejo_mayor_de_histocompatibilidad#CMH_

de_clase_II.

[10] K. (Kenneth M. . Murphy, P. Travers, M. Walport, and C. Janeway,

Inmunobiologia de Janeway, 7th ed. México: McGraw-Hill Interamericana,

2009.

57

Page 68: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

[11] “Proteína.” [Online]. Available: https://es.wikipedia.org/wiki/Proteína.

[12] “MedicinePlus enciclopedia médica - Antígeno.” [Online]. Available:

https://medlineplus.gov/spanish/ency/article/002224.htm.

[13] B. Alberts, A. Johnson, J. Lewis, M. Raff, K. Roberts, and P. Walter, “The

Adaptive Immune System,” 2002.

[14] G. W. Litman et al., “Phylogenetic diversification of immunoglobulin genes

and the antibody repertoire.,” Mol. Biol. Evol., vol. 10, no. 1, pp. 60–72, Jan.

1993.

[15] “La estructura de las proteínas.” [Online]. Available:

http://depa.fquim.unam.mx/proteinas/estructura/index.html.

[16] “Linfocito B.” [Online]. Available: https://es.wikipedia.org/wiki/Linfocito_B.

[17] “Síntesis de péptidos.” [Online]. Available:

http://www.ibt.unam.mx/computo/pdfs/met/sintesis_de_peptidos.pdf.

[18] D. Male, J. Brostoff, D. B. Roth, and I. Roitt, Inmunología, 7th ed. Elsevier

Ltd, 2007.

[19] “Alelo.” [Online]. Available: https://es.wikipedia.org/wiki/Alelo.

[20] J. L. Salazar Mendoza, “Herramienta web para la integración de sistemas de

predicción de regiones de unión al complejo mayor de histocompatibilidad

clase II,” 2014.

[21] “Cliente-servidor.” [Online]. Available: https://es.wikipedia.org/wiki/Cliente-

servidor.

[22] “C (lenguaje de programación).” [Online]. Available:

https://es.wikipedia.org/wiki/C_(lenguaje_de_programación).

[23] “Using the GNU Compiler Collection (GCC).” [Online]. Available:

https://gcc.gnu.org/onlinedocs/gcc-6.3.0/gcc/G_002b_002b-and-

GCC.html#G_002b_002b-and-GCC.

58

Page 69: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

[24] “GNU Compiler Collection.” [Online]. Available:

https://es.wikipedia.org/wiki/GNU_Compiler_Collection.

[25] “Introducción a Linux Mint.” [Online]. Available:

https://www.linuxmint.com/documentation/user-

guide/Cinnamon/spanish_17.3.pdf.

[26] “Linux Mint.” [Online]. Available: https://es.wikipedia.org/wiki/Linux_Mint.

[27] “GNU Scientific Library - Introducción.” [Online]. Available:

https://www.gnu.org/software/gsl/manual/gsl-ref.pdf.

[28] M. Nielsen et al., “Improved prediction of MHC class I and class II epitopes

using a novel Gibbs sampling approach.,” Bioinformatics, vol. 20, no. 9, pp.

1388–97, Jun. 2004.

[29] M. Nielsen, C. Lundegaard, and O. Lund, “Prediction of MHC class II binding

affinity using SMM-align, a novel stabilization matrix alignment method.,”

BMC Bioinformatics, vol. 8, no. 1, p. 238, Jan. 2007.

[30] M. Nielsen, S. Justesen, O. Lund, C. Lundegaard, and S. Buus,

“NetMHCIIpan-2.0 - Improved pan-specific HLA-DR predictions using a novel

concurrent alignment and weight optimization training procedure.,”

Immunome Res., vol. 6, p. 9, Jan. 2010.

[31] E. Karosiene, M. Rasmussen, T. Blicher, O. Lund, S. Buus, and M. Nielsen,

“NetMHCIIpan-3.0, a common pan-specific MHC class II prediction method

including all three human MHC class II isotypes, HLA-DR, HLA-DP and HLA-

DQ.,” Immunogenetics, vol. 65, no. 10, pp. 711–24, Oct. 2013.

[32] W. Zhang, J. Liu, and Y. Niu, “Quantitative prediction of MHC-II binding

affinity using particle swarm optimization.,” Artif. Intell. Med., vol. 50, no. 2,

pp. 127–32, Oct. 2010.

59

Page 70: posgrado.lapaz.tecnm.mxposgrado.lapaz.tecnm.mx/uploads/archivos/tesis.pdf · 2017-12-19 · Tabla 4: Comparativa entre descenso máximo y bagging para TrainInput2 51 Tabla 5:

[33] Y. EL-Manzalawy, D. Dobbs, and V. Honavar, “Predicting MHC-II binding

affinity using multiple instance regression.,” IEEE/ACM Trans. Comput. Biol.

Bioinform., vol. 8, no. 4, pp. 1067–79, 2011.

[34] S. P. Singh and B. N. Mishra, “Prediction Model of MHC Class-II Binding

Peptide Motifs Using Sequence Weighting Method for Vaccine Design,” 2012

Int. Conf. Adv. Comput. Commun., pp. 234–237, Aug. 2012.

[35] “IEDB Introduction.” [Online]. Available: http://help.iedb.org/hc/en-

us/articles/114094147031.

[36] “Net-MHCII 2.2 Server.” [Online]. Available:

http://www.cbs.dtu.dk/services/NetMHCII/.

[37] “Computación paralela.” [Online]. Available:

https://es.wikipedia.org/wiki/Computación_paralela.

[38] J. Sanders and E. Kandrot, CUDA BY EXAMPLE - An Introduction to

General -Purpose GPU Programming. Addison-Wesley, 2010.

[39] T. Rauber and G. Rünger, Parallel Programming for Multicore and Cluster

Systems. Springer, 2010.

[40] “GPGPU.” [Online]. Available: https://es.wikipedia.org/wiki/GPGPU.

[41] D. B. Kirk and W. W. Hwu, Programming Masively Parallel Processors - A

Hands-on Approach. Elsevier Ltd, 2010.

[42] B. Peters and A. Sette, “Generating quantitative models describing the

sequence specifity of biological processes with the SMM method.”

60