Aprendizaje profundo en el descubrimiento de fármacos
9 de mayo de 2017
- De la mesa de Peter Lind, CDD Advocate -
Aprendizaje automático
El aprendizaje automático consiste en diseñar y ejecutar programas informáticos que mejoran automáticamente con la experiencia. Se supone que una máquina que aprende hace lo correcto en respuesta a los datos de entrada, y debe tener la capacidad de mejorar y hacerlo mejor a medida que recoge información sobre la calidad de sus respuestas. En los estudios formales decimos que la máquina tiene una tarea (T) que se ejecuta con cierto rendimiento (P), que debe mejorar a medida que el programa adquiere experiencia (E).
He aquí algunos ejemplos de tareas:
-
- Haz los movimientos correctos en una partida de ajedrez, con el objetivo de ganar.
- Adivinar qué artículos es probable que compre un cliente.
- Predecir el tiempo de mañana en un lugar.
- Controla los movimientos de brazos y piernas de un robot que camina.
- Predecir el destino metabólico de una molécula de fármaco prevista.
- Determine qué mensajes de correo electrónico son spam.
Las tareas pueden ser de naturaleza muy diferente, pero el tema común es que la tarea debe ejecutarse de forma diferente y adecuada en respuesta a diferentes datos de entrada. Los datos de entrada pueden ser la posición de un tablero de ajedrez o los registros de las compras anteriores de un cliente y su comportamiento histórico de navegación. La ejecución de una tarea siempre implica la producción de datos de salida, que pueden ser en sí mismos un resultado que tiene interés, o pueden ser una prescripción de acción posterior hacia un resultado final. El proceso de aprendizaje trata de ajustar la forma de ejecutar las tareas para obtener un mejor rendimiento, lo que significa que se espera que el resultado de una determinada entrada cambie y mejore a medida que la máquina adquiere experiencia.
Aprendizaje automático profundo y superficial
Si el ordenador ejecuta su tarea de forma escalonada, donde los datos de entrada se transforman en datos de salida directamente en un proceso directo, entonces se dice que la máquina de aprendizaje tiene una arquitectura superficial. Si la ejecución de la tarea se realiza por pasos, de forma que la salida de un primer proceso es la entrada de un segundo proceso y así sucesivamente, entonces decimos que tenemos una arquitectura profunda.
Como ejemplo de máquina de aprendizaje superficial, consideremos un algoritmo primitivo de filtro de spam que intenta aprender una regla de detección de spam basada en la presencia de palabras clave indicadoras de spam. Tal vez la máquina aprenda que las palabras "urgente", "increíble", "gratis" y algunas más son indicativas de spam. Sumar una puntuación basada en la presencia de estas palabras es un proceso sencillo y poco profundo, porque la construcción de la suma es un único paso lógico.
Como ejemplo de una máquina de aprendizaje profundo, consideremos un sistema de análisis de imágenes que tiene la tarea de detectar y clasificar objetos en una fotografía digital. La máquina recibe su entrada en un formato de píxeles, y necesita determinar si uno o más conjuntos de píxeles en algún lugar de la imagen representan un determinado objeto, como un perro o un coche. No hay forma de pasar directamente de los píxeles al objeto clasificado en un solo paso. El mismo objeto puede ocupar un espacio diferente en la imagen dependiendo de lo cerca que estuviera de la cámara, y el patrón de píxeles dependerá del ángulo desde el que se tomó la fotografía. Los objetos pueden estar parcialmente oscurecidos por otros objetos y su apariencia en la imagen dependerá de las sombras. Además, un mismo tipo de objeto puede tener diferentes tamaños y colores.
La resolución del problema requiere que los datos de entrada se procesen por etapas, en las que quizás la primera etapa encuentre los contornos, la segunda etapa resuelva las formas 2D delimitadas por los contornos, una tercera etapa trabaje en un nivel aún más alto y así sucesivamente hasta llegar a las clases de objetos. La máquina tendrá que aprender a realizar bien cada paso para ser buena en la tarea general de reconocimiento de objetos. Esto es el aprendizaje profundo.
La profundidad es una cualidad de las arquitecturas de las máquinas de aprendizaje, y podemos tener más o menos de ella, pero no hay un límite claro entre lo superficial y lo profundo. Esto se debe a que los procesos y los pasos pueden definirse de diferentes maneras.
Transformación de características
Como se ha descrito anteriormente, la máquina de aprendizaje profundo procesa las características brutas de los datos de entrada, como los píxeles, y las convierte en características de orden superior que tienen un mejor poder expresivo en el dominio del problema final, como los objetos 3D. Estas conversiones se denominan transformaciones de características, y la máquina trabajará internamente con múltiples niveles de representación.
El diseñador de una máquina de aprendizaje no necesita saber de antemano qué tipo de transformaciones de características son necesarias para resolver un determinado problema. Una máquina puede, si tiene un número suficiente de ejemplos de entrenamiento, averiguar qué transformaciones de características son eficaces para realizar su tarea.
Las características pueden no corresponder a los conceptos humanos y podemos ser incapaces de explicar, en términos de razonamiento, cómo la máquina llega a un determinado resultado.
En resumen, la transformación de características explica por qué el aprendizaje profundo es eficaz. El diseñador de una máquina de aprendizaje profundo tiene que entender cómo permitir que se produzca el aprendizaje y la transformación de rasgos, pero no necesita tener ninguna idea de antemano sobre la naturaleza de los rasgos intermedios que van a intervenir.
Biología
Curiosamente, hay pruebas de que el cerebro utiliza un proceso escalonado y una forma de transformación de características cuando procesa y actúa sobre los datos visuales. (1)
Las señales nerviosas viajan desde el ojo hasta una zona del cerebro llamada corteza visual primaria. Las señales que se originan en las zonas vecinas de la retina estimulan las células vecinas de la primera capa del córtex visual. Al parecer, el córtex primario se ocupa de las características de bajo nivel, como los bordes entre áreas de diferente brillo y color. Las señales procedentes del córtex visual se envían posteriormente a las zonas donde se reconocen los objetos, y de ahí a zonas con otras responsabilidades, como el análisis del movimiento.
Esto puede ser un hecho curioso para el científico de datos, y algunas de las primeras investigaciones sobre el aprendizaje automático se han inspirado en los resultados de la neurociencia. Pero la mayoría de los desarrollos actuales se basan en resultados y teorías de la informática y el aprendizaje estadístico, y solo en muy raras ocasiones se pretende imitar cómo funciona y aprende el cerebro.
Una de las tecnologías del aprendizaje automático se llama redes neuronales artificiales o simplemente redes neuronales. Esta tecnología se llama así porque un diagrama que explica su funcionamiento se parece a un dibujo animado de neuronas biológicas conectadas en red. De nuevo, no suele haber intención de simular un proceso biológico.
Redes Neuronales Feedforward
Hay muchos tipos de máquinas de aprendizaje y muchas versiones de cada una. Aquí describiremos brevemente un ejemplo básico del tipo llamado redes neuronales feedforward. (2) Existen muchas elaboraciones avanzadas que se utilizan en programas como AlphaGo (3) y la última versión de Google Translate (4).
A continuación se muestra una ilustración de una red feedforward. Los círculos representan neuronas artificiales. En la parte inferior hay una capa de neuronas de entrada y en la superior una capa de neuronas de salida. Las capas de neuronas intermedias se llaman capas ocultas. Una red superficial tiene pocas capas ocultas y una red profunda tiene muchas. Las neuronas ocultas se llaman así porque son internas a la máquina de aprendizaje y el mundo exterior no las verá. La ilustración muestra un ejemplo con sólo trece neuronas, mientras que un programa real suele tener muchos miles de neuronas. El número de neuronas en las capas ocultas puede variar.
Recordemos que la máquina realizará tareas (T) con un cierto rendimiento (P) que debería mejorar a medida que gane experiencia (E). Podemos utilizar conjuntos de números para codificar tanto la entrada como la salida, de modo que para una máquina una tarea consiste siempre en la producción de números de salida en respuesta a números de entrada.
Al intentar una tarea, la máquina se encuentra en una fase de avance. Los datos de entrada se asignan a las neuronas de entrada, lo que significa que a cada neurona se le asigna un valor numérico. Si los datos de entrada provienen de una imagen en blanco y negro, entonces necesitamos tantas neuronas de entrada como píxeles haya en la imagen. Cada neurona de entrada está conectada a un número de neuronas en la primera capa oculta. Una conexión significa que durante el feed forward el valor de una neurona inferior se multiplicará por un factor de peso (w) específico de la conexión, y el producto se añadirá a la neurona en el extremo superior de la conexión. Una función matemática llamada función de activación se aplica entonces a la suma para formar el nuevo valor de la neurona. Esto continúa, capa por capa, hasta que los números se han sumado en la capa de salida. Los pesos específicos de la conexión se ajustan a medida que avanza el aprendizaje. Los pesos suelen ajustarse a valores aleatorios antes de comenzar el aprendizaje, lo que significa que obtendremos resultados aleatorios y un rendimiento inútil la primera vez que lo intentemos en algunas tareas.
Quizás hayamos decidido que la primera neurona de salida codifique la probabilidad de que haya un gato en algún lugar de la imagen de entrada. Los valores de salida altos significarán probabilidades de gato altas, y viceversa. La máquina registrará las diferencias entre los resultados reales y los correctos después del feed forward. A continuación, entra en una fase de actualización de pesos. Se utiliza un algoritmo llamado retropropagación para actualizar los pesos de la red de forma que los errores sean menores si se vuelve a realizar la misma tarea. Como su nombre indica, la retropropagación funciona desde la capa de salida y de vuelta a través de las capas ocultas. El aprendizaje con nuevas tareas continúa mientras los recursos lo permitan, o hasta que el rendimiento deje de aumentar. A menudo, el mismo conjunto de tareas se reutiliza muchas veces, por lo que llamamos a cada ciclo de tareas una época de entrenamiento. El algoritmo de retropropagación, que se basa en resultados del cálculo, fue propuesto como método de entrenamiento para redes neuronales por el psicólogo matemático de Stanford David Rumelhart en 1986. (5)
Desde el principio era obvio que las redes podían tener más de unas pocas capas, pero el entrenamiento de las redes profundas tiende a consumir más recursos informáticos y se necesitan muchos más datos de entrenamiento. Esto explica por qué el aprendizaje profundo ha cobrado una importancia relativa con el paso del tiempo. En los últimos años se ha producido un aumento de la popularidad de las redes profundas, no sólo porque el hardware es más potente, sino también porque se dispone de muchos más conjuntos de datos suficientemente grandes. Una regla general dice que se necesitan alrededor de 5000 ejemplos de entrenamiento para obtener un rendimiento aceptable. (2)
Otras máquinas Deep
Una de las aplicaciones más legendarias del aprendizaje automático es el ordenador de ajedrez Deep Blue de IBM. Este es famoso por haber derrotado al gran maestro Garry Kasparov en 1997, que era el campeón del mundo en ese momento. El nombre de Deep Blue no tiene nada que ver con las redes multicapa y fue elegido por otras razones. (6) Blue es un color principal de la identidad de marca de IBM, y deep procedía del nombre del ordenador de ajedrez predecesor, Deep Thought. La máquina Deep Thought había obtenido su nombre de un ordenador de la serie de ciencia ficción The Hitchhiker's Guide to the Galaxy, escrita por Douglas Adams. (7) El Pensamiento Profundo de la serie de ficción fue creado con el propósito de calcular la respuesta a la gran pregunta sobre la Vida, el Universo y Todo. Después de reflexionar sobre el problema durante siete millones y medio de años, el Pensamiento Profundo proporcionó finalmente la respuesta, que fue cuarenta y dos.
Deep Fritz y Deep Junior son otros ordenadores de ajedrez con el mismo nombre.
Cuando se trata de ordenadores y juegos de mesa, la mayor parte de la atención se centra en el juego de estrategia Go, que es más complejo que el ajedrez, ya que hay más alternativas por movimiento. Hace poco que las máquinas que juegan al Go son capaces de derrotar a los grandes maestros humanos. En 2016 se produjo un gran avance cuando el programa informático AlphaGo derrotó al maestro de 9 dan Lee Sedol. AlphaGo utiliza efectivamente una red neuronal profunda. (3)
Aprendizaje profundo en el descubrimiento de fármacos
El efecto deseado de un fármaco es el resultado de su interacción con alguna molécula biológica diana en el organismo. Las fuerzas intermoleculares unen el fármaco y las moléculas diana y los acontecimientos que se producen a continuación tendrán efecto sobre una enfermedad o afección. Por tanto, un proyecto de descubrimiento de fármacos busca compuestos que puedan unirse con suficiente fuerza a una molécula diana. Pero un fármaco también puede unirse a moléculas no diana en el cuerpo, lo que puede causar efectos secundarios no deseados y posiblemente peligrosos que deben evitarse. La absorción de un fármaco en el intestino, así como su metabolismo y excreción, también dependen de las fuerzas intermoleculares.
Lamentablemente, no podemos examinar una posible molécula de fármaco en el ordenador para predecir cómo interactuará con las moléculas relevantes del organismo. Una de las razones es que carecemos de un buen método general para predecir las fuerzas intermoleculares.
En la actualidad, la mayoría de los medicamentos candidatos fracasan cuando se prueban en humanos en la clínica. Esto hace que el proceso general de fabricación de medicamentos sea extremadamente costoso y se podrían ahorrar muchos recursos si tuviéramos mejores métodos de predicción.
QSAR
El descubrimiento de fármacos es un proceso iterativo y hay un elemento de prueba y error. Los nuevos compuestos se diseñan a partir de los datos de prueba de los compuestos ya fabricados. Se intenta encontrar patrones entre la estructura y la actividad, o la estructura y cualquier otra propiedad, en lo que se denomina análisis cuantitativo estructura-actividad, abreviado QSAR. El análisis QSAR intenta modelar cómo las interacciones entre el fármaco y el objetivo dependen de la estructura del fármaco, pero lo hace de forma indirecta, sin hacer ningún intento de modelar explícitamente los fenómenos físicos que hay detrás de las fuerzas intermoleculares.
Los modelos QSAR pueden ser más o menos locales o globales. Un modelo global se entrena con un conjunto diverso de compuestos y puede producir estimaciones significativas para una amplia gama de compuestos. Los conjuntos de datos de los modelos globales suelen ser grandes. Un modelo local se entrena en una clase de compuestos de especial interés y puede producir estimaciones para compuestos dentro de esa clase. Los modelos locales suelen funcionar mucho mejor que los modelos globales en conjuntos de compuestos similares, por lo que se utilizan en proyectos de optimización de pistas en los que el trabajo se centra en determinadas clases de estructuras.
Las redes neuronales profundas presentan ventajas cuando los conjuntos de datos son muy grandes. Por ejemplo, el ganador de un concurso de química computacional de 2012 utilizó un conjunto de métodos que incluía redes neuronales profundas. (8) Los conjuntos de datos del concurso oscilaban entre los 2.000 y los 5.000 compuestos y se proporcionaron varios miles de descriptores para cada compuesto. Los mejores resultados en este trabajo procedían de redes con cuatro capas ocultas que tenían entre 1000 y 4000 neuronas en cada una de ellas. La media de la estadística R-cuadrado de los modelos fue de 0,49, lo que significa que estos modelos informáticos pueden explicar alrededor de la mitad de la varianza de los datos.
Otro estudio de redes neuronales QSAR predijo las actividades de los compuestos a partir de múltiples ensayos al mismo tiempo. (9) El estudio se llevó a cabo con 19 conjuntos de datos de PubChem, cuyo tamaño oscilaba entre 2000 y 14000 compuestos. Los resultados fueron mejores que los de los métodos alternativos, pero el cambio del número de capas ocultas de la red neuronal no tuvo un efecto significativo.
Un proyecto de descubrimiento de fármacos querrá, obviamente, ser capaz de identificar un fármaco candidato tras sintetizar y examinar el menor número posible de compuestos, por lo que el principal interés en ese contexto es que haya buenos modelos basados en conjuntos de datos pequeños. Es muy probable que añadir más capas a las redes neuronales QSAR no suponga ninguna ventaja cuando los conjuntos de datos son pequeños y la entrada principal consiste en cualquiera de los tipos tradicionales de descriptores moleculares.
Acoplamiento
Se han dedicado muchos esfuerzos a desarrollar los denominados programas de acoplamiento, que son algoritmos cuyo objetivo es predecir el grado de unión de moléculas hipotéticas a alguna diana de interés. Los programas de acoplamiento pueden utilizarse para examinar una colección de compuestos virtuales con el fin de obtener un subconjunto para el que una mayor proporción de compuestos sea realmente un buen aglutinante.
El programa de acoplamiento tendrá que examinar una serie de posibles orientaciones relativas entre las moléculas de la diana y del ligando y estimar la fuerza de unión para cada una de esas poses. Para la estimación de la fuerza de unión se utiliza la llamada función de puntuación. El problema es que hoy en día no podemos predecir de forma fiable la intensidad de la interacción entre dos moléculas.
La mayoría de los programas que se ocupan de la interacción molecular utilizarán internamente una representación de las moléculas del tipo palo y bola. Los modelos también utilizarán factores que expresen atracciones, repulsiones, flexibilidad y otros. Pero ser capaz de modelar las interacciones entre el fármaco y la molécula objetivo con algún nivel de precisión es todavía un objetivo lejano. Las moléculas en un entorno biológico se mueven, vibran y están rodeadas de otras moléculas que afectan a la unión. Un programa que modele directamente la realidad física subyacente a la interacción molecular tendría que utilizar un alto nivel de teoría y considerar un número de posturas relativas y modos de vibración tan grande que el cálculo se vuelve inviable.
La representación clásica de palo y bola sigue siendo muy útil para predecir y explicar muchos fenómenos de la química, pero parece que los químicos computacionales necesitarán otras características que hagan el trabajo en los modelos de fuerzas intermoleculares. Por supuesto, la entrada de la química primaria seguirá estando en los formatos habituales, pero hay que permitir que las máquinas de aprendizaje encuentren transformaciones de características adecuadas.
Un ejemplo reciente de un estudio de aprendizaje automático que utiliza el aprendizaje profundo para el acoplamiento es el de Pereira y colaboradores. (10) Las principales características utilizadas por su máquina de aprendizaje incluyen datos de contexto para cada átomo de los compuestos. Los datos de contexto son distancias, tipos de átomos, cargas parciales atómicas y aminoácidos.
Métodos sintéticos
Otro campo en el que podemos esperar avances del aprendizaje automático es el del análisis retrosintético. Las moléculas suelen ser difíciles de sintetizar y gran parte de los recursos del descubrimiento de fármacos se destinan a los esfuerzos de síntesis. Puede ser difícil dar con una sola ruta sintética para un compuesto objetivo. El análisis retrosintético es el examen sistemático de las posibles rutas sintéticas, buscadas de forma retrospectiva, empezando por la búsqueda de formas de hacer el compuesto final a partir de compuestos más simples, para luego ver cómo éstos pueden derivarse a su vez de compuestos aún más simples.
Una vez más, la disponibilidad de datos de formación y los esfuerzos de colaboración para recopilar datos serán clave para el progreso. Un aspecto interesante y desafiante es que los registros de la química sintética casi nunca son totalmente completos, ya que hay un límite práctico a la cantidad de datos de resultados de reacción que un químico puede analizar e interpretar. Los sistemas de aprendizaje tendrán que ser buenos para manejar datos incompletos.
¿Qué pasará después?
Conjuntos de datos
Cada vez son más los conjuntos de datos con estructuras químicas y datos de actividad que se ponen a disposición del público, y ahora hay bases de datos de libre acceso que ofrecen tanto calidad como cantidad. (11) Esto es de enorme importancia para la comunidad informática, que necesita datos de calidad para poder desarrollar nuevas tecnologías. La disponibilidad general de conjuntos de datos de referencia seguirá aumentando, lo que desencadenará un desarrollo acelerado de los métodos de aprendizaje automático en el descubrimiento de fármacos. Cada vez parecerá más extraño publicar métodos computacionales que se evalúen con conjuntos de datos propios no divulgados.
Nube
Las empresas farmacéuticas deben proteger cuidadosamente su propiedad intelectual y, por lo tanto, tienen políticas muy estrictas con respecto al intercambio de datos. El temor a que los datos acaben en manos equivocadas ha sido la razón por la que la industria farmacéutica adoptó tarde la computación en nube. Pero ahora la industria farmacéutica está externalizando cada vez más su infraestructura informática. Los proveedores de servicios basados en la nube son, por supuesto, conscientes de las preocupaciones de seguridad de sus clientes y compiten no sólo con la calidad del servicio técnico, sino también con la seguridad y la fiabilidad. El uso de los servicios en la nube seguirá aumentando.
Software
Existen varios marcos de código abierto para el aprendizaje automático y una serie de ecosistemas para la computación en la nube que se han convertido en herramientas estándar para los científicos de datos que trabajan, por ejemplo, con la previsión financiera o el comportamiento de los clientes. Queda por ver cómo los informáticos de I+D integrarán las herramientas estándar de aprendizaje automático con las herramientas específicas del ámbito del diseño de fármacos. Ya se espera que los miembros del personal informático de I+D tengan un amplio conocimiento sobre el aprendizaje automático, y las personas de estos campos, como los quimioinformáticos, los bioinformáticos, los químicos computacionales y el personal informático de I+D, seguirán aprendiendo más sobre el aprendizaje profundo y explotando sus posibilidades.
Los datos químicos para QSAR son, por supuesto, una forma más de datos, como los datos de imágenes para el reconocimiento de objetos, los datos de audio para los intérpretes de idiomas o las posiciones de juegos de mesa para las máquinas de ajedrez o de go. Quizás lo específico de QSAR es que los conjuntos de datos de la vida real suelen ser pequeños en comparación con los de otros entornos en los que a menudo se dispone de muchos órdenes de magnitud de muestras. El aprendizaje profundo requiere grandes conjuntos de datos. Tal vez las redes profundas puedan entrenarse de alguna manera para encontrar transformaciones de características potentes en grandes conjuntos de datos con datos generales antes de seguir entrenándose en conjuntos de datos más pequeños de interés especial.
Funciones de puntuación
La falta de una buena tecnología para estimar rápidamente las fuerzas intermoleculares (funciones de puntuación) es un área de especial interés. Es un ejemplo de un área de la tecnología en la que las predicciones sobre el progreso futuro han sido demasiado optimistas durante muchas décadas. El uso de métodos de aprendizaje profundo puede ser un camino a seguir.
Referencias
- https://en.wikipedia.org/wiki/Visual_system
- Goodfellow, I.; Bengo, Y. & Courville, A. (2016), 'Deep Learning', The MIT Press.
- Silver, D.; Huang, A.; Maddison, C. J.; Guez, A.; Sifre, L.; van den Driessche, G.; Schrittwieser, J.; Antonoglou, I.; Panneershelvam, V.; Lanctot, M.; Dieleman, S.; Grewe, D.; Nham, J.Kalchbrenner, N.; Sutskever, I.; Lillicrap, T.; Leach, M.; Kavukcuoglu, K.; Graepel, T. y Hassabis, D.: 'Mastering the game of Go with deep neural networks and tree search'. Nature 529 (2016), Nr. 7587, 484-489
- Wu, Y.; Schuster, M.; Chen, Z.; Le, Q. V.; Norouzi, M.; Macherey, W.; Krikun, M.; Cao, Y.; Gao, Q.; Macherey, K.; Klingner, J.; Shah, A.; Johnson, M.; Liu, X.; Łukasz Kaiser; Gouws, S.; Kato, Y.; Kudo, T.Kazawa, H.; Stevens, K.; Kurian, G.; Patil, N.; Wang, W.; Young, C.; Smith, J.; Riesa, J.; Rudnick, A.; Vinyals, O.; Corrado, G.; Hughes, M. & Dean, J.: 'Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation' arXiv(1609.08144v2).
- Rumelhart, D. E.; Hinton, G. E.; Williams, R. J.: 'Learning representations by back-propagating errors.' Nature 323 (1986), Nr. 6088, S. 533-536
- Hsu, F.: 'Behind Deep Blue: Building the Computer that Defeated the World Chess Champion': Princeton University Press., 2002
- https://en.wikipedia.org/wiki/Deep_Thought_(chess_computer)
- Ma, J.; Sheridan, R. P.; Liaw, A.; Dahl, G. E. & Svetnik, V. (2015), 'Deep Neural Nets as a Method for Quantitative Structure-Activity Relationships', J. Chem. Inf. Model. 55(2), 263–274.
- Dahl, G., E.; Jaitly, N. & Salakhutdinov, R. (2014), 'Multi-task neural networks for QSAR predictions', arXiv(1406.1231).
- Pereira, J. C.; Caffarena, E. R. & dos Santos, C. N. (2016), 'Boosting Docking-Based Virtual Screening with DeepLearning', J. Chem. Inf. Model. 56(12), 2495–2506.
- Bento, A. P.; Gaulton, A.; Hersey, A.; Bellis, L. J.; Chambers, J.; Davies, M.; Krüger, F. A.; Light, Y.; Mak, L.; McGlinchey, S.; Nowotka, M.; Papadatos, G.; Santos, R. & Overington, J. P.: 'The ChEMBL bioactivity database: an update'. En: Nucleic Acids Research 42 (2013), Nr. D1, S. D1083-D1090