construcción de un clasificador basado en perfiles de expresión...

47
Informe técnico – Technical report Trabajo de Fin de Máster Junio 2010 Construcción de un clasificador basado en perfiles de expresión genómicos con identificación transparente de biomarcadores y redes de genes asociadas Sara Aibar Santos Master en Sistemas Inteligenges Universidad de Salamanca

Upload: others

Post on 09-Apr-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Informe técnico – Technical reportTrabajo de Fin de Máster

Junio 2010

Construcción de un clasificadorbasado en perfiles de expresión

genómicos con identificacióntransparente de biomarcadores y

redes de genes asociadas

Sara Aibar Santos

Master en Sistemas Inteligenges Universidad de Salamanca

Page 2: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación
Page 3: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

ResumenPara crear un clasificador basado en las matrices de expresión resultantes de los

microarrays, primero es necesario seleccionar qué genes son más relevantes para diferenciar las clases. Sin embargo, la mayoría de los clasificadores existentes realizan esta selección, pero solo dan los resultados finales sin informar sobre los genes utilizados para realizar esta clasificación. El algoritmo implementado para este trabajo por el contrario, además de seleccionar el número óptimo de genes para entrenar el clasificador, también proveerá de la información y estadísticas básicas utilizadas para seleccionarlos. Esto permitirá al investigador analizar si hay posibles genes marcadores entre ellos.

AbstractTo create a classifier based in the gene expression data contained in a regular

microarray, it is first required to select which genes will be used to identify the different classes. However, most existing classifiers only provide the final results without giving any information regarding the genes that are being used. The algorithm here implemented on the contrary, in addition of selecting the optimum set of genes and training the classifier with them, will also provide some basic information and statistics of the selected genes. This will allow the researcher to analyze if there are potential genetic markers within the resulting set of genes.

Page 4: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación
Page 5: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Índice 1. Introducción..................................................................................................................1

2.Conceptos teóricos.........................................................................................................1

2.1.R y Bioconductor...................................................................................................1 2.2.Support Vector Machines (SVM)..........................................................................3 2.3.Leucemia y Síndrome Mielodisplásico..................................................................4

3.Clasificación con identificación de biomarcadores.......................................................7

3.1.Algoritmo...............................................................................................................7 a)Construcción del clasificador ..............................................................................8 b)Consulta al clasificador........................................................................................9

3.2.Implementación...................................................................................................10 a)Construcción del clasificador.............................................................................10 b)Estimación del error del clasificador.................................................................12 c)Consulta al clasificador......................................................................................14 d)Funciones auxiliares..........................................................................................14 e)Presentacion visual de resultados.......................................................................15R-Procesing ...........................................................................................................16

3.3.Manual.................................................................................................................21 a)Instalación .........................................................................................................21 b)Construcción del clasificador............................................................................22 c)Estimación del error del clasificador.................................................................25 d)Consulta al clasificador......................................................................................27 e)Funciones auxiliares...........................................................................................27 f)Presentacion visual de resultados.......................................................................28

4.Pruebas y resultados....................................................................................................31

4.1.Resultados con Leucemias...................................................................................31 4.2.Resultados con MDS ..........................................................................................32

5.Lineas de trabajo futuras.............................................................................................39

6.Conclusiones................................................................................................................39

7.Bibliografía..................................................................................................................40

Anexo I: Artículo para el Workshop................................................................................42

Page 6: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación
Page 7: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

1. IntroducciónEste trabajo me fue propuesto por el departamento de Bioinformática y

Genómica Funcional del Centro de Investigación del Cáncer y he estado realizándolo allí desde principios de enero. El trabajo principalmente consiste en la implementación y validación de un clasificador que basándose en los datos de matrices de expresión clasifica las muestras introducidas. Sin embargo, al tratarse de datos normalmente provenientes de microarrays, para realizar esta clasificación hace falta seguir varios pasos previos de selección de genes (la normalización de los arrays etc, se supone previa al algoritmo). Por lo tanto el algoritmo, a parte de construir el clasificador, tiene que ser capaz de seleccionar los genes adecuados para entrenarlo.

2. Conceptos teóricosEn esta sección se incluye una pequeña introducción a los conceptos teóricos

necesarios para poder entender este trabajo. Los conceptos relacionados con los clasificadores y bioinformática a nivel general se dan por supuestos. Puesto que ya los habíamos dado en la propia programación del máster, no he visto necesaria su inclusión.

2.1. R y BioconductorEl programa se ha implementado en R, un conjunto de herramientas y

lenguaje de programación principalmente diseñado para el manejo estadístico de datos. Está basado en el entorno S, por lo que R es habitualmente considerada la versión de uso libre y open-source de éste lenguaje. El programa se publicó en 1996. Empezado por Robert Gentleman y Ross Ihaka, es hoy en dia uno de los programas libres más utilizados en el entorno estadístico para el manejo de datos. Sus principales características son:

– Gran capacidad para manipulación de datos

– Lenguaje de programación con gran flexibilidad.

– Principalmente basado en el manejo de estructuras de datos como vectores y matrices, pero también se pueden crear estructuras propias.

– Posibilidad de realizar gráficos

– Además dispone de un amplio repositorio de paquetes con funcionalidades ya implementadas.

En cuanto a los conocimientos necesarios para utilizar el entorno, tan solo hay que tener en cuenta que R es un lenguaje interpretado que se ejecuta en consola, por lo tanto hay que cargar en la interfaz de R el programa o funciones implementados. Por lo demás, el manejo de una función en R es similar a la mayoría de los lenguajes: se utiliza el nombre de la función seguido de los argumentos entre paréntesis. Si no se especifica el nombre de los argumentos,

Trabajo de Fin de Máster 1

Page 8: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Construcción de un clasificador con identificación de biomarcadores

se asignarán por orden según la definición de la función. Puesto que si en la definición de la función los parámetros traen un valor por defecto no es imprescindible especificarlos, también existe la posibilidad de dar el nombre de un parámetro y asignarle un valor ( ej. temperatura=20).

El valor que devuelve la función, se puede asignar a una variable que no es necesario haber declarado anteriormente (ej. laVariable <- miFuncion()) de forma que posteriormente pueda ser utilizado. Si no se asigna a una variable, el valor devuelto por la función se imprimirá en pantalla.

El valor de esta variable se puede ver con tan solo escribir su nombre. En este algoritmo sin embargo, algunas funciones (concretamente build.classifier y generalization.error) devuelven listas muy grandes, por lo que es recomendable explorar el objeto devuelto mediante names(laVariable) y acceder a cada uno de los campos con laVariable$nombreCampo.

Ejemplo :> clasificador <- build.classifier (esetMDS, esetMDS$Subtype, verbose=FALSE)> names(clasificador)[1] "call" [2] "classifier" [3] "classificationGenes" [4] "classificationGenes.Info" [5] "errorNumGenes" [6] "numGenesOverThreshold" [7] "genesRanking.lpThreshold" [8] "genesNetwork.classificationGenes"> clasificador$classificationGenes.Info[1:5] Ranking Class PosteriorProb ExprsMeanDiff DiscriminantPower ExprsUpDw AssocEssentialENSG00000096006 "1" "AML" "1" "-4.69" "-8.57" "DOWN" "TRUE"

ENSG00000102837 "2" "AML" "1" "-4.63" "-9.32" "DOWN" "TRUE"

ENSG00000148346 "3" "AML" "1" "-4.4" "-11.55" "DOWN" "FALSE"

ENSG00000121742 "4" "AML" "1" "-4.37" "-11.74" "DOWN" "FALSE"

ENSG00000164047 "5" "AML" "1" "-3.9" "-8.26" "DOWN" "FALSE"

Las líneas precedidas por > son las introducidas por el usuario. Las grises, las devueltas por R.

Bioconductor

Bioconductor es un proyecto de software de código libre para el análisis de datos genómicos basado en código R. Una de sus principales características es la gran cantidad disponible de paquetes creados explícitamente para el manejo de datos genómicos, microarrays... etc. Entre ellos se encuentan paquetes específicos para la normalización, análisis y anotación de microarrays, que son las operaciones más básicas y siempre necesarias para manejar estos datos. Además también existen la posibilidad de que los propios usuarios contribuyan con la creación de sus propios paquetes, por lo que la variedad de funcionalidades ya implementadas anteriormente es enorme.

2

Page 9: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

La diferencia en cuanto a utlización al utilizar R con Bioconductor es mínima. Tan solo es necesario saber a utilizar las funciones/paquetes instalados. Sin embargo hay algunos detalles, entre ellos la estructura de datos ExpresionSet, incluida en el paquete “Biobase” el núcleo de Bioconductor, que es común a prácticamente todos ellos. Los objetos recibidos como parámetros en la mayoría de las funciones implementadas en este programa, son de esta clase. Aunque es un objeto bastante complejo, en este contexto lo principal que hay que tener en cuenta son el acceso a los datos:

La función exprs(nombreExpresionset) extrae la matriz de expresión.

Con el símbolo $, se puede acceder a los campos que determinan el fenotipo de los datos guardados en el expresionset: nombreExpresionset$nombreetiquetas

2.2. Support Vector Machines (SVM)

Las máquinas de soporte vectorial o máquinas de vectores de soporte son un conjunto de algoritmos de aprendizaje automático supervisado destinados a la clasificación. Se basan en la representación de las muestras en un espacio multi-dimensional para buscar el hiperplano que mejor las separa. Este hiperplano trata de maximizar la distancia a las muestras de la frontera entre clases. Las muestras en la frontera es a lo que se llama vectores soporte, puesto que son las que determinan la posición del plano. Aunque los SVM fueron inicialmente diseñados para la clasificación binaria, se pueden generalizar para aplicarlos a la separación de varias clases.

Las dos técnicas principales para generalizar una SVM a la clasificación multi clase son las conocidas como one-against-all(OAA) y one-versus-one(OvO):

Trabajo de Fin de Máster 3

Figura 1: SVM con separación lineal

Page 10: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Construcción de un clasificador con identificación de biomarcadores

One-against-all (OAA) SVMs: La versión básica de la técnica uno-contra-todos se basa en establecer las fronteras que separan una clase del resto. La asignación de una muestra se establece en función del SVM para el que da positivo. Sin embargo, aunque este método es muy eficaz para clasificaciones muy compactas, en aquellas en las que hay regiones del espacio sin una clara asignación, puede darse el caso de que más de una clase den positivo, o de que todas den negativo. Para evitar los puntos muertos, se suelen utilizar funciones contínuas, en las que la muestra se asigna a aquella clase que tenga mayor valor.

One-versus-one(OvO): En los SVM multi-clase basados en la técnica OvO, se entrena un clasificador para cada par de clases. La forma más básica de transformación en clasificación multi-clase simplemente selecciona aquella clase más votada o asignada por los SVM binarios.

2.3. Leucemia y Síndrome MielodisplásicoLa Leucemia es un conjunto de enfermedades, también conocidas como

cáncer de sangre o de la médula ósea. Su principal característica es que el número un cierto tipo de células sanguíneas, normalmente los glóbulos blancos, aumenta enormemente, impidiendo el desarrollo de los demás.

Dependiendo de la característica a la que se de más importancia, hay dos tipos de clasificaciones que las dividen en Aguda y Crónica, Mieloide y Linfocítica:

Las leucemias agudas se caracterizan por un aumento muy rápido de las células inmaduras, lo que impide que la médula ósea pueda producir las sanas correctamente. Son de muy rápido desarrollo por lo que requieren un tratmiento inmediato.

La crónica sin embargo, se distingue porque aunque puede producir las células maduras, sin embargo estas siguen siendo de alguna forma más numerosas y además defectuosas. Su progresión puede llevar meses o incluso años y suele darse principalmente en ancianos.

Las leucemias linfoides, se denominan así porque las células afectadas son aquellas que posteriormente se convertirían en linfocitos. Las mieloides,

4

Figura 2: One-Against-All Figura 3: One-versus-One

Page 11: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

afectan a los mielocitos, que posteriormente se desarrollan en glóbulos rojos, blancos o plaquetas.

De las posibles combinaciones entre ellas, resultan 4 clases:

• Leucemia linfoide aguda o Leucemia Linfoblástica (LLA / ALL)• Leucemia mieloide aguda o Leucemia Mieloblástica (LMA /

AML)• Leucemia linfoide crónica (LLC / CLL) • Leucemia mieloide crónica (LMC / CML)

El Síndromes Mielodisplásico, también conocido como pre-leucemia, es un grupo de enfermedades que afectan a la producción de las células sanguíneas. La médula ósea, es la encargada de producir las células madre que posteriormente se convertirán en glóbulos rojos, que transportan el oxígeno y los nutrientes al resto de las células del organismo; glóbulos blancos, que combaten las infecciones; o plaquetas que forman coágulos para evitar el sangrado. Sin embargo, en los síndromes mielodisplásicos, las células madre no maduran correctamente. Al quedarse células sanguíneas inmaduras (blastocitos) que no funcionan correctamente en la médula ósea, queda menos espacio para que se formen las células maduras correctamente y acaba habiendo una deficiencia de glóbulos rojos, blancos o plaquetas.

Dependiendo de la progresión de la enfermedad y del tipo de células sanguíneas a las que afecta, los MDS se dividen en varios subtipos. Estos subtipos varían ligeramente en función de cual de las dos clasificaciones principales se utilice. La que utilizaremos en este trabajo es la establecida por la

Trabajo de Fin de Máster 5

Figura 4: Proceso de desarrollo de las células sanguíneas. En las MDS se producen irregularidades en este proceso por lo que no las células normales no se forman correctamente.

Page 12: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Construcción de un clasificador con identificación de biomarcadores

Organización Mundial de la Salud en 2008, que divide las MDS en:

• Citopenia refractaria con displasia unilinaje. Es decir, reducción del número de solo un tipo de células sanguíneas, pero que resiste a los métodos tradicionales de tratamiento. Concretamente en este trabajo se utilizará Anemia Refractaria (AR / AR), aunque también existen neutropenia y trombocitopenia refractarias.

• Anemia Refractaria con sideroblastos en anillo (RARS)

• Citopenia Refractaria con Displasia Multilinaje (CRDM / RCMD): Incluye a los pacientes en los que se produce una reducción de varios tipos de células sanguíneas.

• Anemia Refractaria con Exceso de Blastos (AREB / RAEB): que a su vez se divide en AREB-I si contiene entre un 5% y un 9% de blastos y AREB-II si tiene entre 10% y 19%.

• Síndrome 5q- : Síndrome mielodisplásico relacionado con una anomalía aislada del cromosoma del(5q).

• Síndrome mielodisplásico no clasificable. De estas subclases, las que se utilizarán son las involucradas en un

proceso típico de evolución de la enfermedad hacia la leucemia. RA y CRDM son normalmente consideradas el primer paso del desarrollo, puesto que ambas enfermedades suelen tender a convertirse en AREB que posteriormente se transforma en AML. Debido a que la principal diferencia observable entre ellas es la diferencia en el porcentaje de blastos presente en la sangre, las diferencias genéticas no están claras. En la mayoría de los clasificadores construidos para leucemias, las MDS se dejan fuera. Incluso en el estudio a nivel mundial mencionado anteriormente[6.], en el que disponen de más de tres mil muestras, las MDS se consideraron todas ellas como una única clase.

6

Page 13: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

3. Clasificación con identificación de biomarcadoresLos métodos basados en aprendizaje automático como el clústering o los

algoritmos de clasificación se han convertido en algunos de los métodos más ámpliamente utilizados para el análisis de los datos obtenidos a partir de microarrays[1.]. Sin embargo, aún tienen mucho que mejorar. Entre otras cosas, debido a la alta dimensionalidad de los datos, en los algoritmos de aprendizaje supervisado, y más concretamente en los de clasificación, es necesario hacer una pre-selección de los genes. Si se usase toda la matriz de datos, miles de genes (del orden de 17mil en un típico array humano) se utilizarían para tan solo unas pocas muestras, lo que provoca que los algoritmos tiendan a tener el problema de “sobreajuste de los datos”[2.]. Esto resulta en un sistema de predicción que en vez de generalizar la situación, está demasiado ajustado a los datos de entrenamiento y no es capaz de predecir adecuadamente el valor de nuevas muestras. Para evitar el sobreajuste, la reducción de la dimensionalidad se ha convertido en un paso requerido para la creación de clasificadores con este tipo de datos. Aunque no hay un método específico que se haya demostrado el mejor para realizar esta tarea, hay múltiples enfoques que intentan encontrar el mejor subconjunto de genes. La mayoría de ellos, se centran en realizar algún tipo de filtrado o establecer un ranking basándose en métodos que varían desde utilizar otros algoritmos de aprendizaje automático [4.] como clústering, redes neuronales, algoritmos genéticos... hasta estudios de entropía o enfoques estadísticos. Sin embargo, la mayoría de estos métodos se aplican dentro del algoritmo y por lo tanto, el único resultado es el clasificador final ya entrenado. No hay forma de saber qué genes se tuvieron en cuenta, cuales se eliminaron, e incluso en la mayoría de los casos, ni siquiera cuales se utilizaron para realizar la clasificación. Aunque conseguir un clasificador eficaz pueda parecer suficiente en la mayoría de los casos, esto conlleva a una pérdida de información. No se ha probado que haya una relación directa entre la eficacia de un clasificador y el significado biológico de los genes que utiliza. Sin embargo, no se debería olvidar que aunque, por comodidad, estamos tratando la expresión genética como números, realmente por detrás de esos números sí que hay un significado biológico.

Puesto que el conjunto de genes que permiten construir un buen clasificador, posiblemente sí que esconda una razón biológica, para este trabajo se ha implementado un un algoritmo que no solo encuentra el conjunto de genes óptimo para entrenar el clasificador, sino que también provee ciertas estadísticas básicas sobre ellos. Esto permitirá al investigador conocer los genes que se están utilizando para realizar la clasificación y también obtener una lista de posibles marcadores genéticos que explorar.

3.1. AlgoritmoEl progama creado para analizar los genes y entrenar el clasificador está

basado en un algoritmo previamente diseñado por el grupo de Bioinformática y Genómica Funcional del Centro de Investigación del Cáncer. Éste algoritmo todavía no estaba terminado, por lo que mi trabajo fue completarlo e implementarlo en R para integrarlo como un paquete que se enviará a

Trabajo de Fin de Máster 7

Page 14: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Construcción de un clasificador con identificación de biomarcadores

Bioconductor para que esté disponible para el uso público.

El algoritmo inicial fue diseñado como una SVM multi-clase que integraba también la pre-selección de los genes. Este algoritmo estaba diseñado para encontrar este conjunto óptimo de genes basandose en un ránking construido a partir del cálculo de la importancia estadística de los genes.y en cross-validación. Este algoritmo de entrenamiento del clasificador SVM, se basa en tres pasos fundamentales: construcción de un ránking con los genes más representativos de cada clase, selección del número óptimo de genes a través de un bucle interno de cross-validación y construcción del clasificador final con los genes seleccionados. Opcionalmente, también se puede añadir un bucle externo de cross-validación para estimar el rendimiento del clasificador construido.

Para consultar al clasificador, también se diseñó una función específica que permitía la posibilidad de dejar las muestras sin asignar. A diferencia de la mayoría de los clasificadores, esta función compara la probabilidad de pertenecer a cada una de las clases, no solo busca la clase con la mayor probabilidad, por lo que se reduce enormemente la probabilidad de clasificar erróneamente una muestra.

a) Construcción del clasificador El clasificador se entrena basándose en los perfiles de expresión genética de

las muestras de las distintas clases, por lo tanto, necesita recibir como entrada tanto la matriz de expresión como un vector que contenga los valores reales de las muestras. Debido a que el número de genes contenido en una matriz de expresión normalmente está en el orden de varios miles de genes, es demasiado alto para entrenar el clasificador directamente. La mayoría de ellos son prácticamente constantes entre las distintas muestras, sirviendo únicamente como ruido o para que el clasificador se sobreajuste. Por ello, el primer paso del análisis es aplicar un filtro que elimine estos genes. El filtro más estándar aplicado en estos casos es el conocido como “interquartile range” (IQR)[7.], que elimina aquellos genes que no muestran una variabilidad suficiente entre las distintas muestras, y por tanto no ayudan a diferenciar las clases. La matriz de expresión resultante se utilizará para entrenar el clasificador, lo que requiere tres pasos:

1. Construcción de un Ranking de genes basado en el uso del algoritmo “Parametric Empyrical Bayes” (PEB), que calcua la diferencia de expresión de cada clase frente al resto y provee la probabilidad posterior de cada gen. Esta probabilidad posterior representa la probabilidad de que si un gen se expresa en una muestra, esa muestra pertenezca a una determinada case. Puesto que cuanto mayor sea el valor de la probabilidad posterior para un gen y una clase, mejor. Este valor se utiliza para construir el ranking de genes de cada clase. Sin embargo, muy frecuentemente habrá varios genes con probabilidad posterior igual a 1. Para determinar cual de ellos se posicionará primero en el ránking, se utiliza la media de la diferencia de

8

Page 15: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

expresión entre todas las muestras de una clase y el resto de las clases. Además, teniendo en cuenta el principio de que no tiene sentido tener varias variables con exactamente la misma información, el algoritmo también ofrece la posibilidad de calcular las correlaciones y la información mútua entre los genes para localizar aquellos que podrían ser considerados redundantes y permitir eliminarlos. Hay varias publicadiones que afirman que eliminando la redundancia entre los genes se puede reducir el conjunto de genes necesario sin perjudicar al rendimiento del clasificador [8.]. Sin emgargo, trabajo previo del grupo sugiere que las relaciones entre genes no tienen porqué implicar redundancia[9.]. Ya que en algunos ocasiones, al intentar eliminar las correlaciones era necesario aumentar el número de genes para alcanzar el mismo rendimiento, el algoritmo permite decidir al usuario si eliminarlas o no.

2. Una vez se ha construido el ranking de genes, es necesario decidir cuantos de ellos se utilizarán. Para encontrar el número óptimo de genes, se utiliza una exploración incremental del ránking combinada con cross-validación.La SVM es entrenada con un número diferente de genes que aumenta en cada iteración; empezando con el gen en primera posición del ránking de cada clase y añadiendo el de una posición más en cada iteración. Para poder estimar el error del clasificador construido, no se utilizan todas las muestras para el entrenamiento de estos clasificadores. De esta forma, al dejar algunas muestras fuera en cada entrenamiento, se pueden utilizar como test del clasificador construido. Puesto que para cada número de genes se entrenan varios clasificadores, calculando la media del error de todos ellos, se puede estimar con qué numero de genes se alcanza el mínimo error.

3. Entrenamiendo del clasificador final con los genes seleccionados.

Además, para poder estimar la fiabilidad del clasificador construido, existe la posibilidad de simular una validación externa a través de cross-validación. Para ello, existe la posibilidad de añadir un bucle externo de cross-validación a la construcción del clasificador. En cada iteración de este bucle, unas cuantas muestras se dejan fuera del entrenamiento del clasificador y se utilizan como test para calcular el error del clasificador.

b) Consulta al clasificadorUna vez el clasificador está entrenado, se puede utilizar para predecir la

clase de muestras externas. La función de asignación diseñada, además de calcular la probabilidad de que una muestra pertenezca a una clase, también decidirá si es adecuado asignar la muestra a la clase con mayor probabilidad o si no hay seguridad suficiente y se deja como no asignada. Para decidir si la muestra se asigna a la clase o no, tiene en cuenta la probabilidad de pertenencia a dicha clase, pero también el número de clases y la probabilidad de pertenencia a la siguiente clase más cercana. Para asignar una muestra, la probabilidad de asignación a clase debe ser como mínimo el doble de la

Trabajo de Fin de Máster 9

Page 16: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Construcción de un clasificador con identificación de biomarcadores

probabilidad de asignación aleatoria (50% para 2 clases, 33% para 3...) y además la diferencia con la siguiente clase también debería ser mayor que esta probabilidad aleatoria. Por ejemplo, en un clasificador para 4 clases, para asignar una muestra la probabilidad mayor debería ser al menos 50% (2x0.25) y la probabilidad de pertenencia a la siguiente clase más próxima, debería ser como mínimo un 25% menor que la primera. Esto implica que si la probabilidad de que una muestra pertenezca a una clase es 55% y a otra 40%, aunque la probabilidad de pertenencia a la primera clase sea mayor, se dejará como “No Asignada”.

3.2. ImplementaciónLa implementación del algoritmo explicado anteriormente se llevó a cabo en R,

para poder crear con el programa resultante un paquete que se suba a Bioconductor y así quede a disposición del público. Además de implementar el algoritmo, se le añadieron algunas funcionalidades extras. De esta forma el programa resultante, además de entrenar y consultar el clasificador, permite obtener algunas estadísticas extra sobre los genes utilizados para entrenar el clasificador, y el rendimiento esperado del clasificador construido.

El programa final se divide en varias funciones:

Construcción del clasificador: La función que permite entrenar el clasificador a partir de la matriz de expresión de las muestras iniciales.

Estimación del error del clasificador: Mediante cross validación, calcula el error que un clasificador construido con unas determinadas muestras tendrá al aplicarlo a muestras externas. También da algunas estadísticas sobre los genes elegidos en los distintos clasificadores entrenados para la cross-validación.

Consulta al clasificador: Aplicación del clasificador a nuevas muestras para conocer la clase a la que pertenecen.

Funciones auxiliares: Funciones extras para facilitar la extracción de estadísticas, por ejemplo a partir de matrices de confusión o de la predicción obtenida. También se incluyen varias funciones gráficas para la representación de los datos obtenidos.

a) Construcción del clasificadorEsta es la función que contiene la parte principal del algoritmo explicada

anteriormente. En ella se hace el análisis de los genes y se entrena el clasificador. La implementación de SVM utilizada se puede encontrar en el paquete e1071 [5.] de R. De esta implementación se utilizará el SVM con núcleo lineal aplicada a la clasificación multi-clase. La clasificación multi-clase está basada en la técnica One-versus-one (OvO), en la que todas las clasificaciones binarias se unen para decidir la clase correcta en función de un sistema de votos.

Para utilizar esta función, no hay más que llamarla pasándole como argumentos

10

Page 17: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

un objeto expressionSet o una matriz de expresión y las etiquetas con la clase real de las muestras. También se pueden especificar como argumentos los parámetros mencionados en la explicación del algoritmo, como el número de genes a explorar, el límite de la probabilidad posterior... etc. La llamada más básica a la función sería:

Clasificador <- build.classifier (exprs(esetMDS), esetMDS$Subtype)En la que esetMDS es un expresionSet que contiene la matriz de expresión y la

etiqueta de los subtipos. Basándose en estos datos, la función construye el clasificador. Además de este clasificador, la función también devolverá las estadísticas sobre los genes seleccionados. Entre ellas se incluyen las relaciones, la probabilidad posterior, el ranking, las ascociadiones (correlaciones e información mutua) entre genes... etc De estas estadísticas, las más destacadas son:

• Numero de genes significativos asociados a cada enfermedad: El número de genes con una probabilidad posterior sobre un cierto límite (por defecto postProb>0.75). Esto permite definir la función de pérdida de probabilidad (LP1/4) que ayuda a identificar la diferencia entre las clases y a identificar la firma genética asociada a cada enfermedad. Cuando LP1/4 se representa en un gráfico, se puede observar la diferencias en la probabilidad posterior de los genes en la parte superior del ranking. Aquellas clases que tardan más en disminuir serán normalmente más fáciles de clasificar. Si para una clase no hay suficientes genes sobre el límite y el clasificador necesita utilizar algunos por debajo, mostrará una alerta. El conjunto de genes asociados a cada enfermedad por encima de LP1/4 permitirá asociar posibles marcadores genéticos.

• Poder discriminante:Un valor que representa la relevancia que la SVM asigna a un gen para identificar cada clase. Utilizando parámetros internos derivados de la SVM, se analizan los valores de las coordenadas de las variables (genes) de cada vector soporte. Para cada gen, estas coordenadas se añaden para formar un vector. Finalmente, se miden las distancias entre los vectores calculados para las distintas enfermedades y se calcula la distancia entre el mayor y el siguiente. Esta distancia se llama poder discriminante.

• Asociaciones entre genes calculadas a partir de los coeficientes de la correlacióno de Pearson y los de Información Mutua entre cada par de genes en el ranking de una clase. Las correlaciones entre los genes pueden ser utilizados para detectar y eliminar posibles genes redundantes (genes del ranking relacionados con otros genes pero con peor puntuación). Además, las correlaciones e interacciones siempre se utilizan para dibujar la red de genes de las clases (figura ).

Trabajo de Fin de Máster 11

Page 18: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Construcción de un clasificador con identificación de biomarcadores

Figura 5: Grafo con la red de genes obtenida para AML incluyendo sus propiedades. Para cada gen (nodo) la intensidad del color representa el valor de su expresión: sobreexpresados en rojo, reprimidos en verde. El tamaño del nodo representa el ranking (cuanto mayor, más arriba). Las aristas azules representan correlaciones y las rojas información mútua. Los genes con forma de diamante permanecen aunque se eliminen las asociaciones.

b) Estimación del error del clasificadorLa estimación de la fiabilidad del clasificador está implementada en una

función aparte que realiza la cross validación. Puesto que esto tan solo requiere añadir un bucle alrededor de la construcción normal del clasificador, ambas funciones se fusionarán, tal y como estaba diseñado en el algoritmo inicial. Hasta el momento se ha mantenido como dos funciones distintas por comodidad en la implementación y a la hora de realizar las pruebas, pero una vez se hayan decidido los últimos detalles se fusionará con la función de construcción del clasificador.

Esta función aprovecha los 5 clasificadores entrenados en la cross-validación para calcular las siguientes estadísticas:

Matriz de confusión: Número de muestras que fueron asignadas a cada clase por el clasificador. Como este clasificador también considera la opción de no asignar una muestra, se añadió la columna “NotAssigned” como si se tratase de una clase más.

Known vs Predicted ALL AML CLL CML NoL NotAssignedALL 10 0 0 0 0 0AML 0 10 0 0 0 0CLL 0 0 10 0 0 0CML 0 0 0 10 0 0NoL 0 0 0 0 10 0

12

Page 19: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

Sensibilidad: Proporción de muestras de una clase que fueron correctamente identificadas (100% si no hubo muestras de la clase asignadas a otra clase)

Especifidad: Proporción de muestras de una clase que realmente pertenecen a la clase. (100%: No se asignaron muestras de otra clase a esta clase)

Coeficiente de Correlación de Matthews (MCC): Medida que tiene en cuenta tanto los falsos como los correctos positivos y negativos.

Matriz de probabilidad: Matriz que contiene las probabilidades de las muestras asignadas. Ayuda a identificar qué clases tienden a confundirse y con cuales, incluso si no hubo errores en la asignación.

> ge_mile1_5c_RAEB1_v2$probabilityMatrix AML NoL RA RAEB-1 RCMDAML 0.701 0.072 0.062 0.102 0.064NoL 0.100 0.677 0.089 0.046 0.088RA 0.078 0.076 0.598 0.069 0.179RAEB-1 0.080 0.034 0.075 0.694 0.116RCMD 0.060 0.048 0.169 0.110 0.612

Precisión global: Proporción de asignaciones correctas entre las muestras asignadas.

Tasa de asignación: Proporción de muestras disponibles asignadas.

Este bucle externo de cross-validación también permite estimar la estabilidad de los genes elegidos por el clasificador. Comparando los genes elegidos en los 5 clasificadores entrenados con 5 subsets distintos de datos, también se calculan algunas estadísticas sobre los genes elegidos:

$genesStats$ARS geneSymbol timesChosen rankMean rankSDENSG00000130513 GDF15 5 1.2 0.45ENSG00000081181 ARG2 5 2.6 0.55ENSG00000114698 PLSCR4 5 4.4 0.89ENSG00000198692 EIF1AY 3 5 6.08ENSG00000048462 TNFRSF17 3 5.33 1.15ENSG00000079156 OSBPL6 3 6.33 2.31

Trabajo de Fin de Máster 13

Page 20: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Construcción de un clasificador con identificación de biomarcadores

ENSG00000178752 FAM132B 2 6.5 0.71ENSG00000187010 RHD 2 7.5 6.36ENSG00000158473 CD1D 2 8 0ENSG00000181458 TMEM45A 2 10 4.24ENSG00000145850 TIMD4 1 2 0ENSG00000110777 POU2AF1 1 4 0ENSG00000112936 C7 1 4 0

c) Consulta al clasificadorLa función que hace la consulta al clasificador se basa en aplicar la

SVM a la matriz de expresión recibida y analizar las probabilidades de pertenencia a cada una de las clases para decidir si efectivamente se asigna a la clase con mayor probabilidad o no. Para ello utiliza el algoritmo explicado en la sección anterior, que tiene en cuenta tanto la clase con mayor probabilidad como la siguiente y el numero total de clases:

Numero de clases

Probabilidad mínima para asignación a una clase

Probabilidad mínima de separación con la sig. clase

2 - 0.503 0.66 0.334 0.50 0.255 0.40 0.20

d) Funciones auxiliaresPara facilitar el análisis de los resultados obtenidos al realizar una consulta al clasificador, algunas de las funciones auxiliares que se crearon inicialmente para los cálculos internos del algoritmo, se adaptaron para su uso desde el exterior. Estas funciones son:

• “prediction.stats”: Calcula cuantas muestras se asignaron a cada una de las clases y calcula la media y la desviación estándar de las asignaciones.Esta función es especialmente útil para tener una vista global de los resultados de una predicción en la que se han incluido muchas muestras.

prediction.stats(predictionResults)$assigments Count MinProb MaxProb Mean SDALL 37 0.49 0.87 0.78 0.08AML 10 0.71 0.90 0.81 0.06CLL 10 0.71 0.87 0.79 0.06CML 10 0.71 0.89 0.79 0.07NoL 10 0.72 0.86 0.78 0.05

14

Page 21: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

$notAssignedStats Count PercentageNotAssigned 1 1.28Assigned 77 98.72

• “probabilityMatrix”: Calcula la matriz de probabilidad para una predicción. Está orientada a aplicarse con datos de test, por lo que requiere conocer la clase real de las muestras.

• “confusionMatrix.stats”: Permite calcular la sensibilidad, especifidad y tasa de asignación a partir de una matriz de confusión.

e) Presentacion visual de resultadosPara que la información resulte útil devuelta por el algoritmo resulte más

fácil de comprender y poder observar las características principales sobre los genes de un vistazo, quería crear algún tipo de representación gráfica. Sin embargo, el lenguaje elegido para realizar el trabajo: R, es muy limitado en cuanto a representaciones gráficas. Se eligió el lenguaje R para realizar el programa porque es una de las plataformas de libre distribución utilizadas en el ámbito de la bioinformática y dispone de una gran variedad de librerías para el tratamiento de datos provenientes de microarrays, genomas… etc. Sin embargo, aunque es muy bueno para el manejo estadístico de datos, sus posibilidades gráficas son muy limitadas. Dispone de unas cuantas funciones de “plot” que permiten la representación de los datos en forma de gráfica, pero todos ellos son gráficos estáticos muy básicos que ni siquiera permiten una mínima interacción como el cambio de escala o selección de los datos. Puesto que en la asignatura de análisis visual y visualización de la información precisamente se había insistido en la importancia de estos factores, decidí buscar alternativas.

Puesto que una de las principales ventajas que ofrece R, es que dispone de un amplio repositorio de paquetes que amplían las funcionalidades básicas, la primera opción fue intentar buscar los paquetes específicos para representaciones gráficas. Sin embargo, la mayoría de ellos lo único que ofrecen eran son interfaces para realizar los gráficos más sencillamente (igraph: grafos, diagram: diagramas de flujo, RColorBrewer: paletas de colores…) pero seguían siendo gráficos estáticos, que no ofrecían la posibilidad de interacción ni ninguno de los otros principios “básicos” que buscaba. La otra opción encontrada que permitiese interacción con los gáficos fueron 3 paquetes de R: R-procesing, iPlots y rggobi analizados a continuación. Sin embargo, aunque parecen tener bastante potencial, o bien siguen en versión de pruebas, o bien requieren instalación de software externo. Puesto que se quiere construir el programa para la integración en Bioconductor, la dependencia de software externo se descartó automáticamente. Quedando como única alternativa la realización de los gráficos estáticos en R, a pesar de ser consciente de no ser la mejor solución desde el punto de vista de la visualización y mucho menos del análisis visual, se implementaron las funciones para realizar los siguientes gráficos:

Trabajo de Fin de Máster 15

Page 22: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Construcción de un clasificador con identificación de biomarcadores

Los paquetes analizados como posibles alternativas fueron:

▪ R-Procesing Processing me pareció una plataforma interesante cuando se mencionó en

clase de analítica visual y, además, en uno de los videos en Studium comentaban la opción de integrar las posibilidades de cálculo de R con las gráficas de Procesing. Al buscar información sobre cómo unir R con Procesing, lo único que encontré fue éste paquete: R-procesing, que fue creado para integrar los applets de procesing en R. Sin embargo, todavía está en versión Alpha, por lo que ni siquiera aparece en R-Cran (la plataforma de paquetes de R) aunque en el futuro podría llegar a ser una opción interesante.

• iPlots Es un paquete de R escrito en Java que permite interactuar con los gráficos.

Tiene varios tipos de representaciones: Gráficos de barras, de puntos (scatterplots), boxplots, coordenadas paralelas… etc.

Según dicen sus autores, también permite hacer consultas y cambiar los parámetros de forma interactiva (estas dos opciones no las logré probar). Y además, su instalación es como cualquier otro paquete en R: no hay más que ejecutar un comando. Por estas razones, aunque no amplíe mucho las posibilidades básicas de R, parece una buena opción para –al menos- poder interactuar con los gráficos sin necesidad de instalar software externo.

16

Figura 6: Relevancia de los genes para identificar cada clase

Figura 7: Valor de expresión del gen en cada una de las muestras

Figura 8: Representación interna del algoritmo del valor de los genes y clases (vectores soporte)

Page 23: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

Sin embargo, todavía está en desarrollo. En su página web podemos ver un mensaje de julio del año pasado, en el que dicen que la versión definitiva estaba planeada para septiembre, pero no hay más mensajes desde entonces.

“2009/07/01 the current development version can be found here. The initial release is planned for September this year.”

Si llegasen a sacar una versión completa, podría ser una buena alternativa. Sin embargo, hoy en día, todavía da muchos errores (incluso en los ejemplos que proveen en la web) y no ofrece más que la posibilidad de seleccionar elementos en los gráficos, por lo que apenas valdría para hacer unas pruebas. Desde luego todavía no es una opción para usar en un programa a mayor escala.

• Rggobi Requiere descargarse y estar familiarizado con el uso de “GGobi”, por lo

que ya queda descartado desde un principio. Uno de los requisitos que buscábamos era no tener que descargar software externo. Sin embargo, decidí probarlo para poder tenerlo en cuenta en el futuro.

Para poder instalarlo fueron necesarios 2 programas/interfaces previos:- RGtk2: Una interfaz para poder utilizar librerías dependientes de GTK2

con R y así poder construir GUI’s con R. - GGobi: Un programa de código abierto que permite explorar datos

multidimensionales de forma visual, dinámica e interactiva. Rggobi lo que nos permite es pasar los datos de R a GGobi para poder

verlos con él. Por esta razón, aunque necesitamos instalar una librería en R para poder ejecutar el comando que lanza ggobi con nuestros datos, todo el resto de la interfaz, es decir la visualización, interacción… se hace directamente desde ggobi.

Trabajo de Fin de Máster 17

Figura 9: Ejemplo de selección de datos en un gráfico de iPlots.

Page 24: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Construcción de un clasificador con identificación de biomarcadores

La interfaz de GGobi permite ver las representaciones de los datos de múltiples formas, por lo que probé a meter los datos de las leucemias que disponía para entrenar el clasificador.

En un primer lugar, probé a introducir los datos de la matriz de expresión (dimensiones: 50muestras x 16000genes) como era de esperar, el programa se colgó. Sin embargo, resultó ser una muy buena opción para ver la distribución global de los fenotipos de las muestras (datos previos de los que se dispone para entrenar el clasificador: tipo, tejido… etc).

Aunque no dispone de muchas opciones de representación y la mayoría de ellas son bastante básicas, ofrece posibilidades que R de otra forma no tendría. Por ejemplo, nada más abrir los datos, se puede abrir la “scatterplot matrix”(Figura 2), que nos permitiría ver de forma general la distribución de las muestras en función de las variables representadas de 2 en dos, para así identificar las variables que más nos interesa ver en detalle posteriormente.

En la Figura 3, una gráfica de coordenadas paralelas, sirve de ejemplo de la facilidad con la que se puede observar la relación entre las variables gracias a esta herramienta: El numero de cultivo en un principio es independiente, todas las muestras corresponden al mismo tipo de tejido, y hay cinco “tipos” de leucemia. Además esta gráfica incluso me permitió descubrir la relación de éste con el valor “resultados.eagle”, que anteriormente no sabía exactamente qué era. Con este gráfico se puede ver claramente que todas las muestras de un mismo tipo tienen un mismo valor (las lineas correspondientes a las 10 muestras están superpuestas) excepto las moradas, que gracias a la interacción podemos saber que se trata de las muestras correspondientes a “ALL” (Acute Lymphoblastic Leukemia). Además con el gráfico de barras (Fig. 4), se podría confirmar esto y ver más claramente la distribución (número de muestras) en cada uno de los casos y sus valores.

18

Figura 10: Scatterplot Matrix de Rggobi.

Page 25: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

Por lo tanto, en mi opinión, esta es una herramienta que aunque no sea la solución óptima, tiene al menos las funciones básicas de representación e interacción. La posibilidad de cambiar las variables a representar tan solo con un click, selección de los datos (y ver de qué datos se trata), e incluso visualización en 3D con la posibilidad de realizar rotaciones (Fig. 5), cambiar colores... etc facilita enormemente la exploración de los datos en comparación con el resto de opciones analizadas.

Figura 13: Visualización en 3D con opciones de interacción (rotacion, selección de puntos, modificación de variables y escala...)

Estas funcionalidades, por ejemplo en el caso de los datos de las leucemias, vinieron muy bien para comprobar que los datos de los que disponemos se agrupan en 5 clases distintas y todos ellos pertenecen al mismo tipo de tejido.

Trabajo de Fin de Máster 19

Figura 11: Gráfico de coordenadas paralelas en Rggobi

Figura 12: Gráfico de barras de los mismos datos que la Figura 3.

Page 26: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Construcción de un clasificador con identificación de biomarcadores

Lo que nos asegura que el predictor podrá clasificar en función del tipo de leucemia y no del tipo de tejido del que se extrajo la muestra.

Como ejemplo de la posible utilidad de esta herramienta para la visualización de los resultados del algoritmo, probé a intentar representar la expresión de los genes seleccionados para entrenamiento del clasificador. Puesto que se trata de datos de muy alta dimensionalidad opté por un gráfico de coordenadas paralelas, en el que cada “coordenada” sería un gen, y las líneas el valor de expresión de cada muestra para cada gen. Si además se colorean las lineas de las muestras en función del tipo de leucemia que padecen, con este gráfico se pueden observar de un simple vistazo, cuales son las clases más definidas, si los genes seleccionados tienen a ser sobre-expresados o subexpresados, qué clases tienden a confundirse... etc

Por ejemplo, en nuestro caso simplemente con un vistazo, se observa fácilmente que las clases rosa, roja y verde están muy claramente diferenciadas (pre-atención) ya que en los genes seleccionados para su clase ellos son los únicos “sobre-expresados”. Además en la clase verde, también podemos observar que hay algunas lineas rojas que también tienden a estar un poco más altos que el resto, por lo que cabría esperar que haya una cierta tendencia a darse falsos positivos entre estas clases. Mirando con un poco más de detenimiento la clase rosa también podemos observar, que aunque para la mayoría de los genes están sobre-expresados hay en concreto uno, el 3º por la derecha, en el que tiene la tendencia contraria: está sub-expresado, es decir todas las demás clases “suben” cuando para esta clase, en este gen “baja”.

Sin embargo, aunque este gráfico podría resultar útil, hay un par de detalles que habría que tener en cuenta. Para empezar, la representación se hizo directamente desde la interfaz gráfica, realmente no he probado a crear el gráfico desde R, por lo que no estoy segura de si sería posible que el gráfico se mostrase adecuadamente de forma automática para cualquier set de datos. Además, al realizarlo para un ejemplo construido con 50 muestras y 10 genes por clase, ralentizó muchísimo el ordenador a pesar de que es un ejemplo relativamente pequeño para los datos con los que el clasificador tendrá que trabajar habitualmente. Probablemente en un caso real, habría que tener un ordenador muy potente para poder realizar un gráfico con todos los datos, o seleccionar un subconjunto de muestras a representar en vez de hacerlo con todas.

20

Figura 14: Expresión de los genes en gráfico de coordenadas paralelas

Page 27: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

3.3. ManualA continuación se detallan los parámetros y la estructura del objeto

devuelto por cada una de las funciones. Los detalles sobre su funcionamiento e implementación están explicado en las secciones anteriores. Una pequeña introducción al manejo básico de R se puede encontrar en la sección de conceptos teóricos.

a) Instalación La instalación del programa no es necesaria, simplemente se pueden cargar

los ficheros con el código fuente y las librerías directamente con el siguiente código:

# Librerias library(affy) library(EBarrays) library(e1071) library(ipred) library(minet) library(RColorBrewer)

# Ficheros source("build.classifier.r") source("generalization.error.r") source("package.public.r") source("package.private.r")

Para que este código funcione, hay que estar trabajando en el directorio en el que están los archivos, lo que se puede determinar con la función setwd(“C: / carpeta”) o simplemente añadiendo la ruta delante del archivo.

Si por el contrario se prefiere instalar el paquete, en Linux (en Windows seguramente no funcione porque requiere un fichero .zip) se puede hacer mediante los siguientes comandos:

install.packages("TFMcodigoR_0.1.tar.gz")library(TFMcodigoR)

> install.packages("TFMcodigoR_0.1.tar.gz")inferring 'repos = NULL' from the file name* installing *source* package âTFMcodigoRâ ...** R** preparing package for lazy loading

Welcome to Bioconductor

Vignettes contain introductory material. To view,

Trabajo de Fin de Máster 21

Page 28: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Construcción de un clasificador con identificación de biomarcadores

type 'openVignette()'. To cite Bioconductor, see 'citation("Biobase")' and for packages

'citation(pkgname)'.

Loading required package: latticeLoading required package: clusterLoading required package: infotheoLoading required package: rpartLoading required package: MASSLoading required package: mlbenchLoading required package: survivalLoading required package: splinesLoading required package: classLoading required package: nnet** help*** installing help indices** building package indices ...* DONE (TFMcodigoR)

> library(TFMcodigoR)Loading required package: Biobase

Welcome to Bioconductor

Vignettes contain introductory material. To view, type

'openVignette()'. To cite Bioconductor, see 'citation("Biobase")' and for packages

'citation(pkgname)'.

Loading required package: EBarraysLoading required package: latticeLoading required package: clusterLoading required package: minetLoading required package: infotheoLoading required package: rpartLoading required package: MASSLoading required package: mlbenchLoading required package: survivalLoading required package: splinesLoading required package: classLoading required package: nnet>

Si posteriormente se quiere desinstalar el paquete, se puede hacer mediante:

remove.packages("TFMcodigoR")

b) Construcción del clasificadorLa función para entrenar el clasificador recibe como argumentos

principales una matriz de expresión (con las muestras por columnas y genes por

22

Page 29: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

filas), o un expressionSet que contenga una, y las etiquetas de las muestras:

clasificador <- build.classifier (exprs(esetMDS), esetMDS$Subtype)

Todos los demás argumentos son opcionales porque traen valores por defecto:

filterPercentage = 0.50Porcentaje para el filtro IQR

maxGenesBuild = 80Número de genes de cada clase explorado para encontrar el número óptimo

lpThreshold = 0.75Probabilidad posterior mínima para la que se calcularán las asociaciones entre genes y el número de genes sobre el “threshold” indicado en el gráfico [REF].

removeCorrelations=FALSEPermite elegir si se eliminan las correlaciones del conjunto de genes con los que se entrena el clasificador.

correlationsThreshold=0.8Valor mínimo del coeficiente de Pearson para el que dos genes se consideran correlacionados.

removeInteractions=FALSEPermite elegir si se eliminan las correlaciones del conjunto de genes con los que se entrena el clasificador.

interactionsThreshold=0.5Valor mínimo del coeficiente de interacción mútua para el que dos genes se consideran equivalentes.

returnGenesRanking=FALSESi es 'TRUE' devuelve se obtiene el ranking de genes completo. Normalmente se devuelve solo el ranking hasta el threshold de la probabilidad posterior (lpThreshold).

returnGenesNetwork=FALSESi es 'TRUE' devuelve la red completa de asociaciones para todos los genes sobre lpThreshold. Por defecto solo se devuelve la de los genes utilizados en la clasificación.

plotsPrefix=NULL

Trabajo de Fin de Máster 23

Page 30: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Construcción de un clasificador con identificación de biomarcadores

Prefijo del fichero en el que se guardaran los gráficos resultantes. Si no se especifica, no se crean los gráficos.

verbose=TRUEPermite especificar si se quiere alguna salida del algoritmo por pantalla e información sobre el progreso.

Si no se utiliza el parámetro verbose=FALSE, la salida por pantalla de una ejecución sería similar a la siguiente:

> pred_mile1_4c_sinCRDM_v2 <- build.predictor( esetMile1[,samples], sampleLabels_5c[1:40], maxGenesBuild = 100, plotsPrefix="pred_mile1_4c_sinCRDM_v2")

16:49:46 - Filtering data and calculating the genes ranking...16:50:29 - Calculating correlations between genes...16:50:30 - Calculating interactions between genes...16:52:49 - Building the classifier...16:52:49 - Progress: 10% finished16:53:55 - Progress: 20% finished16:55:01 - Progress: 30% finished16:56:04 - Progress: 40% finished16:57:06 - Progress: 50% finished16:58:08 - Progress: 60% finished16:59:17 - Progress: 70% finished17:00:20 - Progress: 80% finished17:01:28 - Progress: 90% finished17:02:32 - Progress: 100% finishedWarning in build.predictor(esetMile1[, samples]: For some classes there are not enough genes with posterior

probability over the threshold (lpThreshold=0.75). To build the optimum classifier 31 genes are needed, so some of the genes of the following classes will have a lower posterior probability:

NumGenesOverThresholdRA 8

Classifier built for the following classes: C1: AML C2: NoL C3: RA C4: RAEB-1Total number of genes included in the classifier: 124 (31 genes per

class)

Classifier trained with 40 samples. (10 samples for each of the 4 classes)

Gene expression matrix filtered to remove 50% of the genes (IQR filter). Number of genes left: 8791

Gene associations calculated between genes with posterior probability over threshold 0.75 (top 25% of the genes ranking)

Classifier built removing gene associations/redundancy: FALSE Correlations removed: FALSE Interactions removed: FALSEMaximum number of genes explored to find the optimum classifier: 100

per class.

The plots were saved in /home/saraa/proyectoMILES with the prefix 'pred_mile1_4c_sinCRDM_v2'.

Returning a list with the following fields: $ call $ classifier $ classificationGenes $ classificationGenes.Info

24

Page 31: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

$ errorNumGenes $ numGenesOverThreshold $ genesRanking.lpThreshold $ genesNetwork.classificationGenes

El objeto devuelto tendría la siguiente estructura: $ call

El comando con el que se llamó a la función. $ classifier

El clasificador entrenado $ classificationGenes

Los genes utilizados para la clasificación $ classificationGenes.Info

Detalles sobre los genes utilizados para la clasificación $ errorNumGenes

Error medio de los clasificadores entrenados con cada número de genes

$ numGenesOverThresholdNúmero de genes por encima de lpThreshold para cada clase

$ genesRanking.lpThresholdRanking de los genes por encima de lpThreshold

$ genesNetwork.classificationGenesRed de los genes utilizados para clasificar

c) Estimación del error del clasificadorLa función de estimación del error del clasificador se ejecuta exactamente

igual que la de construcción del clasificador. De hecho, los parámetros deben ser los mismos que aquellos utilizados para entrenar el clasificador para el que se quiere estimar el error.

estimacionError <- generalization.error (exprs(esetMDS), esetMDS$Subtype) Sin embargo, los valores devueltos varían bastante, ya que principalmente

calcula las estadísticas del clasificador.

Los mensajes por pantalla que se verían durante su ejecución son los siguientes:

> ge_5c<- generalization.error(exprs(esetMDS), esetMDS$Subtype)14:56:47 - Calculating the initial genes ranking...14:57:24 - Calculating correlations between genes...14:57:25 - Calculating interactions between genes...15:04:37 - All required parameters have been calculated and checked. Starting error calculations...15:18:12 - Progress: 20% finished15:31:44 - Progress: 40% finished15:45:21 - Progress: 60% finished15:59:02 - Progress: 80% finished16:12:33 - Progress: 100% finishedWarning in generalization.error(esetMile1[, samples], sampleLabels_5c, maxGenesBuild = 100) : In 5 of the crossvalidation loops, for some classes there were not enough genes with posterior probability over the threshold (lpThreshold=0.75). To build the optimum classifier between 21 and 51 genes were needed, therefore

Trabajo de Fin de Máster 25

Page 32: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Construcción de un clasificador con identificación de biomarcadores

some genes with a lower posterior probability were used in the following classes: NumGenesOverThresholdRA 4RAEB-1 32RCMD 25

Stats from crossvalidation:

Accuracy CallRateGlobal 100 94 Sensitivity Specifity MCC CallRateAML 100 100 100 100NoL 100 100 100 100RA 100 100 100 80RAEB-1 100 100 100 100RCMD 100 100 100 90

Returning a list with the following fields: $ call $ globalAccuracy $ sensitivitySpecifity $ confussionMatrix $ probabilityMatrix $ predictionStats $ numGenesMinError $ errorNumGenes $ genesStats $ classificationGenesInfo $ classificationGenesNetwork

El objeto devuelto tiene la siguiente estructura: $ call

Comando con el que se llamó a la función.

$ globalAccuracy $ sensitivitySpecifity $ confussionMatrix $ probabilityMatrix

Valores de las estadísticas con dicho nombre

$ predictionStats Resumen de las distinas predicciones realizadas

durante la cross-validación

$ numGenesMinError Número de genes elegido como de mínimo error en cada uno de

los clasificadores

$ errorNumGenes Error medio de los clasificadores entrenados con cada número de

genes para cada una de las 5 vueltas de la crossvalidación

$ genesStats Estadísticas relativas a los genes elegidos. Ranking medio,

número de veces seleccionado... etc

26

Page 33: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

$ classificationGenesInfo Detalles sobre los genes utilizados para la clasificación

$ classificationGenesNetwork Red de los genes utilizados para clasificar

d) Consulta al clasificadorLa función “query.classifier” recibe como parámetros el clasificador al que se

quiere hacer la consulta y la matriz de expresión con las muestras a clasificar:query.classifier(resultadoClasificador3$classifier,

exprs(esetMuestras))Al ejecutarla no muestra nada por pantalla, tan solo devuelve un objeto con los

siguientes campos:

$call: Código utilizado para llamar a la función.

$class: Factor con la clase a la que la muestra ha sido asignada

$probabilities: Matriz con las probabilidades de pertenencia de cada muestra a cada clase.

> query.classifier(pred_mile1_5c_RAEB1_v3$classifier, exprs(esetMile1)[,1:3])$callquery.classifier(classifier = pred_mile1_5c_RAEB1_v3$classifier, eset = exprs(esetMile1)[, 1:3])

$classAR-CRDM_sM1_2958.CEL AR-CRDM_sM1_3083.CEL AR-CRDM_sM1_3090.CEL RCMD NotAssigned RCMD Levels: NotAssigned RCMD

$probabilities AR-CRDM_sM1_2958.CEL AR-CRDM_sM1_3083.CEL AR-CRDM_sM1_3090.CELAML 0.05914593 0.06525191 0.03276925NoL 0.09458041 0.16552797 0.05035610RA 0.06944717 0.11859133 0.06184090RAEB_1 0.05389820 0.29111748 0.11380654RCMD 0.72292829 0.35951131 0.74122721

e) Funciones auxiliares“prediction.stats”

Recibe como parámetros el resultado de una predicción, y devuelve el objeto con las probabilidades de asignación y la clase asignada:

>predictionResults <- query.classifier(...)>prediction.stats(predictionResults)$assigments Count MinProb MaxProb Mean SDALL 37 0.49 0.87 0.78 0.08AML 10 0.71 0.90 0.81 0.06CLL 10 0.71 0.87 0.79 0.06CML 10 0.71 0.89 0.79 0.07NoL 10 0.72 0.86 0.78 0.05

Trabajo de Fin de Máster 27

Page 34: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Construcción de un clasificador con identificación de biomarcadores

$notAssignedStats Count PercentageNotAssigned 1 1.28Assigned 77 98.72

“probabilityMatrix”Recibe como parámetros el resultado de una predicción y las etiquetas reales de los datos y devuelve la matriz de probabilidad:

>probabilityMatrix(predictionResults, realLabels) AML NoL RA RAEB-1AML 0.735 0.087 0.073 0.105NoL 0.107 0.726 0.109 0.058RA 0.080 0.100 0.727 0.093RAEB-1 0.081 0.046 0.084 0.789

“confusionMatrix.stats”Recibe como parámetros una matriz de confusión y devuelve sus estadísticas en forma de lista:

> (matrizConfusion)$global Accuracy CallRateGlobal 100 100$byClass Sensitivity Specifity MCC CallRateAML 100 100 100 100NoL 100 100 100 100RA 100 100 100 100RAEB-1 100 100 100 100

f) Presentacion visual de resultados• significance.loss.plot

Crea el siguiente gráfico a partir de los datos de una matriz de expresión y sus etiquetas de clase.

significance.loss.plot(exprs(esetMDS), esetMDS$Subtype)

28

Page 35: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

Parámetros opcionales y sus valores por defecto:numGenes=1000filterPercentage= 0.5threshold = 0.75verbose=TRUEgenesRanking=NULL

Permite introducir un objeto ranking de genes si ya disponíamos de él previamente (a través de la la ejecución del clasificador)

• expression.profiles.plotDibuja los perfiles de expresión de los genes pasados como parámetro para las muestras presentes en la matriz de expresión y los guarda en un fichero con el nombre especificado en el tercer parámetro.

expression.profiles.plot(exprs(esetMDS), listaGenes, “perfExpresion”)

Parámetros opcionales y sus valores por defecto:

◦ geneNames=NULL ◦ dataLabels=NULL◦ showSampleNames=FALSE◦ verbose=TRUE

Trabajo de Fin de Máster 29

Page 36: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Construcción de un clasificador con identificación de biomarcadores

• discriminant.power.plotRealiza el gráfico representando el “poder discriminante” de unos determinados genes en un clasificador.

discriminant.power.plot(classif$classifier, genes)

Parámetros opcionales y sus valores por defecto:

◦ geneNames=NULL Permite añadir el nombre de los genes a parte de la etiqueta que traigan en la matriz de expresión que se usó para entrenar el clasificador.

◦ classNames=NULLPermite modificar el nombre de las clases respecto a las usadas para entrenar el clasificador.

◦ numGenesClass=NULL

Número máximo de genes por clase a representar, si no se quieren todos.

◦ correctedAlpha=FALSETiene en cuenta el parámetro alpha para compensar las clases con menos vectores soporte en vez de utilizar la media.

◦ fileName= NULL Nombre del fichero con el que se guardará el gráfico

◦ verbose=TRUE

30

Page 37: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

4. Pruebas y resultadosLos datos que se han utilizado para probar el clasificaodr resultante,

principalmente pertenecen a Leucemias y Síndromes Mielodisplásicos. Las leucemias se eligieron en primer lugar porque se colaboraba con algunos de los laboratorios participantes en un estudio que recopilaba muestras para construir un clasificador de subtipos de Leucemia [6.] que nos pudieron proporcionar los datos. Aunque las muestras de Leucemia fueron las primeras que utilizamos para comprobar el funcionamiento del algoritmo, eran muy fácilmente diferenciables y la mayor parte de las veces conseguíamos predicciones perfectas. Puesto que para probar el algoritmo también necesitabamos tener algunos errores, decidimos probar a clasificar unas muestras de MDS que nos proporcionó uno de los grupos del Centro de Investigación del Cáncer. Las MDS son una enfermedad en la que a veces incluso a los médicos les cuesta identificar de cual de los subtipos se trata y diferenciarlos de otros tipos de citopenia (como la anemia “normal”). De hecho, hasta el momento no tenemos conocimiento de ningún clasificador para los subtipos de MDS, por lo que las MDS eran el reto que estábamos buscando para comprobar la eficacia el algoritmo.

4.1. Resultados con LeucemiasEl set de datos de leucemias fue el primero con el que probé el clasificador.

Con estos datos siempre resultaban clasificaciones perfectas y también con una alta tasa de asignación (mayor del 90% en todos los casos).

Sensitivity SpecifityAcute Lymphoblastic Leukemia (ALL) 1 1Acute Myelogenous Leukemia (AML) 1 1Chronic Lymphocytic Leukemia (CLL) 1 1Chronic Myelogenous Leukemia (CML) 1 1Non Leukemia (NoL) 1 1

Estos resultados fueron estupendos para comprobar que tanto el algoritmo como la implementación funcionan correctamente y ver la aplicación real a un set de datos. De ellos obtuve por ejemplo, la representación de los redes y principales parámetros obtenidos para los genes de cada clase.

Trabajo de Fin de Máster 31

Figura 15: Redes de genes de ALL y AML

Page 38: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Construcción de un clasificador con identificación de biomarcadores

4.2. Resultados con MDS Los resultados con las MDS, por el contrario resultaron ser el caso opuesto.

Como se esperaba, las clases se diferenciaban muy poco unas de otras y sí que había errores en la clasificación por lo que fue el complemento perfecto para probar el algoritmo.

Se realizaron varias pruebas creando clasificadores para distintas combinaciones de las clases disponibles. Los resultados entre todas ellas fueron bastante similares, por lo que procederé a exponer los detalles sobre la clasificación que incluye las 5 clases, ya que es la más representativa.

Las subclases de MDS utilizadas para la clasificación son:

– AR: 11 muestras disponibles

– CRDM: 15 muestras disponibles

– AREB-I: 13 muestras disponibles (Se utilizó únicamente AREB-I porque de AREB-II solo se disponía de 5 muestras. Se probó también a unir ambas como una única clase, tomando 5 muestras de cada, pero los resultados fueron peores)

Además se utilizaron también muestras de pacientes sanos o con otras enfermedades distintas a las Leucemias y muestras de AML. De AML se utilizaron únicamente las de “cariotipo normal” y con hasta 70% de blastos, las más similares a las mds.

El clasificador se entrenó con 10 muestras de cada una de estas 5 clases, con los parámetros por defecto:

• Filtrado IQR del 50%

32

Page 39: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

• Se exploraron los 100 primeros genes del ranking de cada clase (500 en total) para encontrar el número óptimo con el que entrenar el algoritmo

• No se eliminaron ni correlaciones ni información mutua.

La salida por pantalla obtenida al ejecutar el clasificador con estas condiciones fue:13:57:09 - Filtering data and calculating the genes ranking...13:58:15 - Calculating correlations between genes...13:58:17 - Calculating interactions between genes...14:06:08 - Building the classifier...14:06:08 - Progress: 10% finished14:08:07 - Progress: 20% finished14:10:05 - Progress: 30% finished14:12:04 - Progress: 40% finished14:14:03 - Progress: 50% finished14:16:02 - Progress: 60% finished14:18:01 - Progress: 70% finished14:20:00 - Progress: 80% finished14:21:58 - Progress: 90% finished14:23:57 - Progress: 100% finishedAviso en build.predictor(esetMile1[, samples], sampleLabels_5c, maxGenesBuild = 100, : For some classes there are not enough genes with posterior probability over the threshold (lpThreshold=0.75). To build the optimum classifier 44 genes are needed, so some of the genes of the following classes will have a lower posterior probability: NumGenesOverThresholdRA 1RAEB_1 37RCMD 24Classifier built for the following classes: C1: AML C2: NoL C3: RA C4: RAEB_1 C5: RCMDTotal number of genes included in the classifier: 220 (44 genes per class)Classifier trained with 50 samples. (10 samples for each of the 5 classes)Gene expression matrix filtered to remove 50% of the genes (IQR filter). Number of genes left: 8791Gene associations calculated between genes with posterior probability over threshold 0.75 (top 25% of the genes ranking)Classifier built removing gene associations/redundancy: FALSE Correlations removed: FALSE Interactions removed: FALSEMaximum number of genes explored to find the optimum classifier: 100 per class.

Trabajo de Fin de Máster 33

Page 40: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Construcción de un clasificador con identificación de biomarcadores

Análisis de estos resultadosEl clasificador se obtuvo entrenado con 44 genes de cada clase: AML NoL RA RAEB_1 RCMD [1,] "CRISP3" "CXCR7" "PRUNE2" "DLK1" "CXCL5" [2,] "OLFM4" "PLK2" "CHL1" "BEND4" "OSBPL6" [3,] "LCN2" "ABCA13" "HAND2" "PLAG1" "NRIP3" [4,] "GJB6" "GIMAP7" "FCRLA" "PXDN" "TFPI2" [5,] "CAMP" "LUM" "LPL" "AC013272.5" "TNFRSF17" [6,] "CHI3L1" "COCH" "DNASE1L3" "PLS3" "SSU_rRNA_5" [7,] "PRG3" "EMR3" "GHR" "PRTFDC1" "XG" [8,] "FLT3" "BCL11B" "ARHGAP11A" "COL3A1" "CYorf15A" [9,] "ORM1" "TRDV2" "APOLD1" "IFNB1" "EDN1" [10,] "IL18RAP" "TRA@" "MND1" "MX1" "SDC2" [11,] "CLEC4D" "IL32" "snoU6-53" "C1orf106" "CCL7" [12,] "GGTA1" "GZMA" "KRT16" "PMEPA1" "GSTT1" [13,] "QPCT" "NELL2" "FABP4" "IFIT5" "AC108047.4"[14,] "NMU" "TFPI" "PRSS21" "FAM171A1" "VNN1" [15,] "CCNA1" "C21orf7" "C12orf48" "BAALC" "CCL20" [16,] "CR1L" "LCK" "MSH2" "SERPINF1" "CX3CR1" [17,] "TACSTD1" "CD2" "TCF7L2" "MGP" "BTN3A3" [18,] "HOXA5" "KLRF1" "EGR3" "MN1" "C10orf118" [19,] "SLC16A14" "GPR171" "AB019438.1" "IFI44L" "TTC25" [20,] "SLC25A21" "RECK" "P2RY14" "SRPX" "ADORA2B" [21,] "MEIS1" "MYBL1" "IFNG" "CXCL10" "KBTBD8" [22,] "ACSL6" "RP3-402L9.2" "IL6R" "FAM108C1" "TBC1D12" [23,] "SERPINE2" "CD3G" "SNX18" "GATM" "BLNK" [24,] "ANGPT1" "PHLDA2" "ABCB4" "ABCG1" "PGF" [25,] "RNF182" "KRT18" "MNS1" "NID2" "EDNRB" [26,] "SLC39A10" "TC2N" "DIAPH3" "USP18" "GIMAP6" [27,] "LOXL1" "LRRK2" "hsa-mir-1273" "Z84723.1" "CYorf15B" [28,] "RFESD" "MLF1" "RASGEF1A" "PRSS2" "COL15A1" [29,] "CCL23" "CDK5R1" "A2M" "FCER1A" "CTH" [30,] "FGF13" "IGSF2" "TMEM46" "IFI44" "IGHA2" [31,] "CA3" "GZMH" "SPARCL1" "CD34" "GPR137B" [32,] "MAMDC2" "ID1" "ORC5L" "STOX2" "TRIM59" [33,] "RORA" "PMAIP1" "ZC3H12C" "SLC24A4" "TPK1" [34,] "FZD6" "CD3E" "ETFDH" "FAM126B" "AC110080.2"[35,] "PIR" "SIRPG" "PARP15" "P2RY5" "HIST1H1E" [36,] "HOXA7" "RP1-34B21.6" "PCBD2" "MMRN1" "HIST1H1B" [37,] "COL24A1" "IL7R" "C1orf112" "DOCK10" "ANKRD41" [38,] "C20orf197" "LRRN1" "NR1D2" "TRH" "AC092436.5"[39,] "AC112641.3" "DZIP1L" "FMO3" "SLITRK5" "GIMAP4" [40,] "ZNF573" "GEM" "AC016629.7" "SERPING1" "HLA-DPB1" [41,] "KIAA1841" "CCNJL" "ARTS-1" "TANC1" "AC110080.2"[42,] "SLPI" "STEAP4" "TMIGD2" "SULF2" "VMO1" [43,] "ALOX12" "KRT23" "CLEC4G" "LAPTM4B" "ADAMTS3" [44,] "TCN1" "DEFB1" "AL034450.1" "LY6E" "NXN"

Como se puede observar, el programa avisó de que entre estos genes se encontraban algunos por debajo del umbral de probabilidad posterior (75%). De hecho, me llamó muchísimo la atención que en concreto AR tuviese solo 1 gen por encima de este umbral. Pos lo que me habían comentado de las MDS ya esperaba que las clases no se diferenciasen muy bien. Pero sinceramente, al ver que solo había 1 gen para esta clase, pensé que había hecho algo mal. Sin embargo al comentárselo al director del proyecto y continuar mirando los detalles, llegamos a algunas observaciones muy interesantes. Para empezar, la similitud entre las clases, se puede comprobar muy facilmente en el gráfico de la probabilidad posterior:

34

Page 41: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

En este gráfico se observa como las clases de MDS bajan casi instantáneamente del umbral, a diferencia de la Leucemia que tiene hasta 1400 genes sobre él. Esto es un indicio de la similitud entre las clases. Si se disminuye la escala para mostrar solo los 200 primeros genes, se pueden observar mejor las MDS:

Trabajo de Fin de Máster 35

Page 42: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Construcción de un clasificador con identificación de biomarcadores

Posteriormente pasamos a mirar los detalles de los genes (aquí se muestran únicamente los 10 primeros de cada clase): Ranking Class PosteriorProb ExprsMeanDiff DiscriminantPower ExprsUpDw AssocEs

ENSG00000163735 "CXCL5" "1" "RCMD" "1" "0.94" "9.28" "UP" "TRUE" ENSG00000079156 "OSBPL6" "2" "RCMD" "1" "0.88" "6.59" "UP" "TRUE" ENSG00000175352 "NRIP3" "3" "RCMD" "1" "1.11" "9.4" "UP" "TRUE" ENSG00000105825 "TFPI2" "4" "RCMD" "1" "0.72" "9.22" "UP" "TRUE" ENSG00000048462 "TNFRSF17" "5" "RCMD" "0.9997" "-0.99" "-1.6" "DOWN" "TRUE" ENSG00000222855 "SSU_rRNA_5" "6" "RCMD" "0.999" "0.84" "6" "UP" "TRUE" ENSG00000124343 "XG" "7" "RCMD" "0.9983" "0.77" "5.64" "UP" "TRUE" ENSG00000099749 "CYorf15A" "8" "RCMD" "0.9982" "-0.99" "-3.09" "DOWN" "TRUE" ENSG00000078401 "EDN1" "9" "RCMD" "0.998" "0.87" "5.31" "UP" "TRUE" ENSG00000169439 "SDC2" "10" "RCMD" "0.9883" "0.93" "7.14" "UP" "TRUE"

ENSG00000185559 "DLK1" "1" "RAEB_1" "1" "2.55" "-2.23" "UP" "TRUE" ENSG00000188848 "BEND4" "2" "RAEB_1" "1" "1.11" "2.42" "UP" "TRUE" ENSG00000181690 "PLAG1" "3" "RAEB_1" "1" "1.11" "3.13" "UP" "TRUE" ENSG00000130508 "PXDN" "4" "RAEB_1" "1" "1.12" "6.49" "UP" "TRUE" ENSG00000186281 "AC013272.5" "5" "RAEB_1" "1" "-0.95" "1.1" "DOWN" "TRUE" ENSG00000102024 "PLS3" "6" "RAEB_1" "1" "1.08" "4.31" "UP" "TRUE" ENSG00000099256 "PRTFDC1" "7" "RAEB_1" "0.9999" "1.11" "3.58" "UP" "TRUE" ENSG00000168542 "COL3A1" "8" "RAEB_1" "0.9999" "0.84" "-1.23" "UP" "TRUE" ENSG00000171855 "IFNB1" "9" "RAEB_1" "0.9995" "0.82" "2.76" "UP" "TRUE" ENSG00000157601 "MX1" "10" "RAEB_1" "0.9992" "1.55" "5.75" "UP" "TRUE"

ENSG00000106772 "PRUNE2" "1" "RA" "0.9997" "1.28" "9.49" "UP" "TRUE" ENSG00000134121 "CHL1" "2" "RA" "0.2149" "0.6" "3.82" "UP" "FALSE" ENSG00000164107 "HAND2" "3" "RA" "0.205" "-0.64" "-9.31" "DOWN" "FALSE" ENSG00000132185 "FCRLA" "4" "RA" "0.2042" "0.56" "4.19" "UP" "FALSE" ENSG00000175445 "LPL" "5" "RA" "0.1444" "0.82" "2.91" "UP" "FALSE" ENSG00000163687 "DNASE1L3" "6" "RA" "0.112" "0.92" "3.09" "UP" "FALSE" ENSG00000112964 "GHR" "7" "RA" "0.0697" "0.57" "1.63" "UP" "FALSE" ENSG00000198826 "ARHGAP11A" "8" "RA" "0.0312" "0.52" "6.26" "UP" "FALSE" ENSG00000178878 "APOLD1" "9" "RA" "0.0244" "0.61" "2.24" "UP" "FALSE" ENSG00000121211 "MND1" "10" "RA" "0.0224" "0.79" "3.16" "UP" "FALSE"

ENSG00000144476 "CXCR7" "1" "NoL" "1" "-1.66" "-5.26" "DOWN" "TRUE" ENSG00000145632 "PLK2" "2" "NoL" "1" "-1.53" "-7.82" "DOWN" "TRUE" ENSG00000179869 "ABCA13" "3" "NoL" "1" "1.74" "6.12" "UP" "TRUE" ENSG00000179144 "GIMAP7" "4" "NoL" "1" "1.4" "7.48" "UP" "TRUE" ENSG00000139329 "LUM" "5" "NoL" "1" "-1.1" "-2.39" "DOWN" "TRUE" ENSG00000100473 "COCH" "6" "NoL" "1" "-1.47" "-4.09" "DOWN" "TRUE" ENSG00000131355 "EMR3" "7" "NoL" "1" "1.22" "4.7" "UP" "TRUE" ENSG00000127152 "BCL11B" "8" "NoL" "1" "1.08" "8.38" "UP" "TRUE" ENSG00000211889 "TRDV2" "9" "NoL" "1" "1.68" "10.27" "UP" "TRUE" ENSG00000211829 "TRA@" "10" "NoL" "1" "1.16" "8.26" "UP" "TRUE"

ENSG00000096006 "CRISP3" "1" "AML" "1" "-4.69" "-8.57" "DOWN" "TRUE" ENSG00000102837 "OLFM4" "2" "AML" "1" "-4.63" "-9.32" "DOWN" "TRUE" ENSG00000148346 "LCN2" "3" "AML" "1" "-4.4" "-11.55" "DOWN" "FALSE" ENSG00000121742 "GJB6" "4" "AML" "1" "-4.37" "-11.74" "DOWN" "FALSE" ENSG00000164047 "CAMP" "5" "AML" "1" "-3.9" "-8.26" "DOWN" "FALSE" ENSG00000133048 "CHI3L1" "6" "AML" "1" "-3.81" "-7.79" "DOWN" "FALSE" ENSG00000156575 "PRG3" "7" "AML" "1" "-3.56" "-8.56" "DOWN" "TRUE" ENSG00000122025 "FLT3" "8" "AML" "1" "3.3" "11.37" "UP" "TRUE" ENSG00000187681 "ORM1" "9" "AML" "1" "-3.18" "-6.86" "DOWN" "FALSE" ENSG00000115607 "IL18RAP" "10" "AML" "1" "-3.07" "-10.71" "DOWN" "FALSE"

Puesto que AR solo tiene 1 gen por encima del Threshold fue la clase en la que más nos fijamos, pudiendo comprobar que no solo tiene un solo gen por encima del umbral, sino que los demás están muy por debajo. Dejando prácticamente todo el poder de preddición caer sobre el gen llamado PRUNE2:

36

Page 43: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

Buscando información sobre este gen en las bases de datos disponibles online, descubrimos que ya se había utilizado anteriormente para la construcción de un clasificador que diferenciaba dos subtipos de tumores gástricos (GIST y LMS) con tan solo dos genes, uno de ellos PRUNE2. Esto confirmaba su potencial. En este experimento concretamente, se podía observar su clara influencia para la diferenciación entre AR y el resto de las MDS. Esto puede resultar muy interesante tener en cuenta en el caso de estar buscando marcadores genéticos de la enfermedad.

Validación del clasificadorPara comprobar si realmente los genes elegidos funcionaban, y la eficacia del

clasificador construido, se realizó una validación externa. La realizada por el algoritmo mediante cross-validación dio los siguientes resultados:

− Accuracy/CallRate(Global) Accuracy CallRateGlobal 100 94

− Sensitivity/Specificity/CallRate(perClass) Sensitivity Specifity MCC CallRateAML 100 100 100 100NoL 100 100 100 100RA 100 100 100 80RAEB-1 100 100 100 100RCMD 100 100 100 90

− Confusion Matrix predictiontestLabels AML NoL RA RAEB-1 RCMD NotAssigned AML 10 0 0 0 0 0 NoL 0 10 0 0 0 0 RA 0 0 8 0 0 2 RAEB-1 0 0 0 10 0 0 RCMD 0 0 0 0 9 1

− Probability Matrix AML NoL RA RAEB-1 RCMDAML 0.701 0.072 0.062 0.102 0.064NoL 0.100 0.677 0.089 0.046 0.088RA 0.078 0.076 0.598 0.069 0.179RAEB-1 0.080 0.034 0.075 0.694 0.116RCMD 0.060 0.048 0.169 0.110 0.612

Aunque en la validación propia del algoritmo no se ha dado ningún error, probablemente porque elegimos las muestras más similares entre sí para entrenamiento. La matriz de probabilidad muestra que las enfermedades que tienen más riesgo de confundirse son RCMD con AR y AREB-1 y además AREB-1 con AML.

La validación externa venía limitada por el número de muestras disponibles. Puesto que solo disponíamos de 3 muestras de AREB, para mantener los resultados balanceados, decidimos utilizar 3 muestras de cada clase. Excepto de AR de la que solo se disponía de una muestra no utilizada para entrenamiento.

Trabajo de Fin de Máster 37

Page 44: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Construcción de un clasificador con identificación de biomarcadores

El resultado de intentar clasificar estas muestras fue el siguiente (la clase real se puede ver en el nombre de la muestra):

$class LAM_sM1_1485.CEL LAM_sM1_2424.CEL NOL_sM1_3062.CEL NOL_sM1_3537.CEL AML NotAssigned NoL NoL NOL_sM1_3571.CEL AR_sM1_2765.CEL AR-CRDM_sM1_3544.CEL CRDM_s+M1_3402.CEL NotAssigned NotAssigned NotAssigned RCMD CRDM_s+M1_4823.CEL AREB1_s+M1_2815.CEL AREB_5q_s+M1_2163.CEL AREB_s+M1_4237.CEL RA RAEB_1 RCMD NotAssigned LAM_sM1_1995.CEL AML

De esta predicción, las estadísticas calculadas fueron:Accuracy 75%CallRate 61.54% Sensitivity Specifity MCC CallRateAML 100 100.00 100.00 66.67NoL 100 100.00 100.00 66.67RA - 87.50 - 0.00RAEB_1 50 100.00 65.47 66.67RCMD 50 83.33 33.33 66.67

Confusion MatrixtestLabels3 AML NoL RA RAEB_1 RCMD NotAssigned AML 2 0 0 0 0 1 NoL 0 2 0 0 0 1 RA 0 0 0 0 0 1 RAEB_1 0 0 0 1 1 1 RCMD 0 0 1 0 1 1

probabilityMatrix AML NoL RA RAEB_1 RCMD AML 0.66 0.05 0.03 0.21 0.05 NoL 0.09 0.72 0.07 0.07 0.06 RA NA NA NA NA NA RAEB_1 0.04 0.03 0.13 0.40 0.39

RCMD 0.04 0.03 0.27 0.26 0.40

Además como complementaria, se realizó también una validación externa con muestras de AML y no leucemias (ya que de ellas si que se disponía de más muestras). Obteniendo una ligera mejora de las estadísticas (80% precisión, tasa de asignación: 65%) aunque no tanto como esperábamos.

External Validation con las 18 muestras de AML y 5 de NoL

Sensitivity Specifity MCC CallRateAML 81.82 100.00 73.85 61.11NoL 75.00 100.00 82.92 80.00RCMD NaN 93.33 NaN NARAEB_1 NaN 86.67 NaN NA

$globalAccuracy CallRate

Global 80 65.22

Confusion MatrixtestAmlNol AML NoL RAEB_1 RCMD NotAssigned AML 9 0 2 0 7 NoL 0 3 0 1 1

probabilityMatrix

AML NoL RA RAEB_1 RCMDAML 0.59 0.04 0.03 0.29 0.05NoL 0.08 0.50 0.08 0.10 0.24

38

Page 45: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

Aunque una precisión del 75-80% vista fuera de contexto puede parecer bastante “insuficiente”. Teniendo en cuenta la dificultad de la clasificación, esperábamos resultados mucho peores. Hasta el momento no tenemos constancia de que se haya construido ningún clasificador previamente para realizar clasificación de MDSs. Con esto se comprobó que el clasificador es muy eficaz incluso en casos muy complicados. Además, los errores de clasificación se cometieron donde se había predicho con la función de estimación del error del algoritmo (RCMD con AR y AREB-1 y además AREB-1 con AML.), por lo que también se ha comprobado la eficacia de esta función.

5. Lineas de trabajo futurasUn detalle que todavía queda por optimizar en el algoritmo, es el de la elección del

número de genes. Actualmente se añaden simultáneamente 1 gen de cada clase, por lo que el número de genes de todas las clases en el clasificador final siempre es el mismo. Esto biológicamente no tiene mucha justificación. Por ello, para su optimización, hemos pensado en algunas alternativas que permitan seleccionar las clases a las que añadir los genes. Sin embargo los detalles todavía no están decididos. Si una vez se decidan y se hagan las pruebas adecuadas, se mejoran los resultados actuales, seguramente se proceda a su implementación.

Por lo demás, el algoritmo está prácticamente terminado de implementar. Tan solo faltaría fusionar las dos funciones la de “build.classifier” y “generalization.error” en una, y decidir qué nombre ponerle al algoritmo. Así estaría todo listo para escribir la documentación de ayuda de las funciones y enviar el programa como un paquete a Bioconductor para su publicación.

6. ConclusionesLas principales conclusiones obtenidas a través de las pruebas realizadas, es que el

algoritmo es robusto como para seleccionar un conjunto de genes adecuado para clasificación incluso en casos muy difíciles. Puesto que el programa también informa sobre la probabilidad de las clases asignadas, y tiene en cuenta la posibilidad de no asignar, se asemeja el comportamiento de decisión de un humano y se reducen enormemente los errores de clasificación. Por ello realmente creo que es un buen algoritmo y aunque todavía quedan los últimos detalles por rematar, se procederá a enviarlo a Bioconductor en cuanto esté listo.

Además, la realización de este trabajo me ha parecido realmente interesante, no solo por la gran cantidad de conocimientos que he adquirido en el ámbito de la bioinformática, de la que al empezar apenas conocía el nombre y poco más. Sino también, por haber tenido la oportunidad de pertenecer a un grupo de investigación y así tener experiencia práctica en este ámbito.

Trabajo de Fin de Máster 39

Page 46: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Construcción de un clasificador con identificación de biomarcadores

7. Bibliografía

1. Ebert BL, Golub TR. Genomic approaches to hematologic malignancies. Blood (2004) 104(4):923-32.

2. Guyon I, Weston J, Barnhill S, Vapnik V. Gene Selection for Cancer Classification using Support Vector Machines. Machine Learning (2002), 46:389–422.

3. Aisen B. A Comparison of Multiclass SVM Methods. (2006)

4. Huang H., Lee C., Ho S. Selecting a minimal number of relevant genes from microarray data to design accurate tissue classifiers. BioSystems 90 (2007) 78–86.

5. Meyer D. Support Vector Machines - The Interface to libsvm in package e1071. R-Vignette (2010). R-News, Vol.1/3, 9.2001

6. Haferlach T, Kohlmann A, Wieczorek L, Basso G, Kronnie GT, Béné MC, De Vos J, Hernández JM, Hofmann WK, Mills KI, Gilkes A, Chiaretti S, Shurtleff SA, Kipps TJ, Rassenti LZ, Yeoh AE, Papenhausen PR, Liu WM, Williams PM, Foà R. Clinical Utility of Microarray-Based Gene Expression Profiling in the Diagnosis and Subclassification of Leukemia: Report From the International Microarray Innovations in Leukemia Study Group. Journal of Clinical Oncology, Vol 28, No 15 (2010): pp. 2529-2537

7. von Heydebreck A., Hubery W., Gentleman R. Differential Expression with the Bioconductor Project. Bioconductor Project Working Papers (2004). Working Paper 7.

8. Ding C, Peng H. Minimum redundancy feature selection from microarray gene expression data. Journal of Bioinformatics and Computational Biology 2005, 3:185-205.

9. Fontanillo C., Risueño A., De Las Rivas, J. Gene relations (correlations and interactions) include critical information to build accurate disease-classifiers derived from gene expression profiles and to find disease-networks. International Conference & Meetings EMBnet-RIBio 2009: "Bioinformatics for High Throughput Technologies and the Interface of Bioinformatics and Systems Biology". Invited Speaker.

10. Price N., Trent J., El-Naggar A., Cogdell D., Taylor E, Hunt K, Pollock R, Hood L, Shmulevich I, Zhang W. Highly accurate two-gene classifier for differentiating gastrointestinal stromal tumors and leiomyosarcomas. Proceedings of the National Academy of Sciences of the USA (2006). 104(9):3414–3419

11. R/Processing Interface: http://r-forge.r-project.org/projects/rprocessing/

12. iPlots. http://rosuda.org/iplots/

13. Hadley Wickham, Michael Lawrence, Duncan Temple Lang, Deborah F

40

Page 47: Construcción de un clasificador basado en perfiles de expresión …diaweb.usal.es/diaweb/comun/descargar.jsp?f=10013828TFM... · Construcción de un clasificador con identificación

Sara Aibar

Swayne. “An introduction to rggobi” Disponible online. Visitado: [Abril 2010] http://www.ggobi.org/rggobi/introduction.pdf

14. GGobi. http://www.ggobi.org/

15. [9] Rgtk2. http://www.ggobi.org/rgtk2/

Trabajo de Fin de Máster 41