Propagar la poca evidencia experimental que hay entre organismos para ordenar un genoma completo por cuán prometedoras son sus proteínas como blanco de un fármaco, y usar la misma red para proponer el blanco de compuestos que no tienen ninguno.
In English. Given a genome, rank its proteins as drug-target candidates by propagating scarce experimental evidence across a three-layer network (compounds, proteins, functional annotations). Evaluated leaving out all evidence of the organism being ranked, it beats chance in 16 of 16 organisms (median AUC01 0.645). Run on an integer-coded database; every number on this page is read from the result tables, and every figure is redrawn from them in about 40 s.
El problema es de mi propia investigación: dado un genoma, ordenar sus proteínas por cuán prometedoras son como blanco de un fármaco. La evidencia es escasa y está repartida de forma muy desigual entre organismos, así que la estrategia es propagar lo que se sabe sobre una red de tres capas —compuestos, proteínas y anotaciones funcionales— desde las proteínas con evidencia hacia las que no la tienen.
La base tiene 399 353 proteínas de 16 organismos con evidencia suficiente, 248 545 enlaces de bioactividad positiva y 769 661 afiliaciones a 14 083 dominios InterPro y 76 157 grupos de ortología. La evidencia por organismo va de 19 a 1 985 proteínas con actividad conocida: esa desigualdad es la premisa del método. La base publicada está codificada (toda columna es un entero; los diccionarios son privados) y recortada a las componentes químicas con alguna bioactividad positiva.
Las anotaciones se puntúan por cuánto se enriquecen en blancos conocidos (Fisher unilateral, corregido por Benjamini–Hochberg) y esa puntuación pondera la propagación, que tiene cuatro parámetros: α (peso de la puntuación), β (penalización de las categorías grandes), λ y γ (cómo se combinan las categorías de una proteína). La métrica es la AUC01: el área bajo la ROC hasta FPR ≤ 0.10, corregida por McClish para que el azar valga 0.5. Sólo importa el extremo del ranking.
La validación es leave-one-species-out: para evaluar un organismo se le quita toda su evidencia a la semilla y se lo prioriza como si no se supiera nada de él. Una prueba dedicada (comun/tests/test_fuga.py) verifica que ninguna proteína del organismo evaluado sobrevive en la semilla.
Para cada organismo se barrieron las 120 combinaciones válidas de parámetros. En su óptimo la AUC01 mediana es 0.645 y los 16 organismos superan el azar. El orden no es arbitrario: los 4 primeros puestos son los 4 protozoos parásitos.
| especie | grupo | parasito | AUC01 | AUC | alpha | beta | lambda_ | gamma |
|---|---|---|---|---|---|---|---|---|
| T. cruzi | Protozoos | sí | 0.8494 | 0.8828 | 0 | 1 | 1 | 0.8 |
| T. brucei | Protozoos | sí | 0.7888 | 0.8444 | 0.3 | 1.5 | híbrido | 0.8 |
| L. major | Protozoos | sí | 0.7429 | 0.8588 | 0 | 1.5 | 0.5 | 0.8 |
| P. falciparum | Protozoos | sí | 0.7365 | 0.8407 | 1.2 | 1 | 1 | 0.8 |
| A. thaliana | Plantas | no | 0.6834 | 0.8282 | 0 | 1 | 0.5 | 0.8 |
| C. elegans | Invertebrados | no | 0.6637 | 0.7808 | 0.3 | 1.5 | 1 | 0.8 |
| D. discoideum | Amebozoos | no | 0.6521 | 0.8707 | 0 | 1 | 1 | 0.8 |
| C. albicans | Hongos | sí | 0.6453 | 0.8679 | 1.2 | 1 | 0.5 | 0.8 |
| O. sativa | Plantas | no | 0.6443 | 0.8433 | 1.2 | 1 | 0.5 | 0.8 |
| D. melanogaster | Invertebrados | no | 0.614 | 0.812 | 0 | 1 | 1 | 0.8 |
| M. musculus | Mamiferos | no | 0.6109 | 0.8176 | 0.3 | 1 | híbrido | 0.8 |
| H. sapiens | Mamiferos | no | 0.5942 | 0.7694 | 0 | 0.5 | 1 | 0.8 |
| S. aureus | Bacterias | sí | 0.5912 | 0.8783 | 0.3 | 0.5 | 0.5 | 0.8 |
| E. coli | Bacterias | sí | 0.588 | 0.8205 | 1.2 | 1 | 1 | 0.8 |
| S. cerevisiae | Hongos | no | 0.5813 | 0.7434 | 0.9 | 0 | 0 | 0.8 |
| M. tuberculosis | Bacterias | sí | 0.5808 | 0.8659 | 1.2 | 1 | híbrido | 0.8 |
Óptimo por organismo. genome_prioritization/02_optimo_y_consistencia.ipynb.
De los cuatro parámetros sólo β mueve la AUC01 de forma consistente: penalizar las categorías grandes mejora la priorización, y el óptimo tiene β > 0 en 15 de 16 organismos. Entre las diez mejores combinaciones de cada organismo, β = 1 aparece 2.45 veces más de lo que daría el azar y β = 0 apenas 0.25.
En todos los organismos las veinte mejores combinaciones quedan a menos del 2.1 % del máximo: el óptimo es una meseta, no un pico casual. Y el perfil de la grilla se parece entre organismos (Spearman mediana 0.64, positiva en el 85 % de los pares): los parámetros que funcionan en uno funcionan en los demás.
Que β ayude no dice a costa de qué. Para aislarlo se fija el mejor (α, λ, γ) de cada organismo dentro de β = 1 y después se mueve sólo β a 0: lo único que cambia entre las dos corridas es la penalización. El grupo de prueba son las quinasas, el caso de libro de una categoría grande y promiscua (391 dominios, el 3.4 % de las proteínas de un genoma típico).
Apagar la penalización cuesta AUC01 en 15 de los 16 organismos (mediana 0.057, máximo 0.275), y lo que se pierde se ve en la cabeza del ranking: con β = 0, en 8 organismos las primeras cien posiciones se llenan de quinasas —hasta 37 veces más de las que daría el azar, y en varios casos el top-100 es enteramente quinasa—. Con β = 1 ese enriquecimiento no pasa de 3.5 en ningún organismo.
El desplazamiento es específico: al pasar de β = 0 a β = 1 las quinasas bajan en 15 de los 16 organismos (mediana 10.3 percentiles), mientras que la mediana del resto del genoma no se mueve de cero en ninguno. β no reordena el ranking entero: saca del tope a las proteínas que estaban ahí por compartir una anotación que comparte medio genoma.
La segunda pregunta invierte la dirección: dado un compuesto sin blanco conocido, proponer uno. Para medir el acierto se usan pseudohuérfanas, compuestos con exactamente un blanco conocido a los que se les borra toda su bioactividad; la semilla se arma desde su vecindario químico y se mide la posición relativa del blanco verdadero (frank, recuperado si < 0.1). Se evaluaron 7 782.
El blanco se recupera en el 17.5 % de los casos, y la causa está medida: la recuperación la decide la clase de semilla, no el modelo. El 68 % no tiene ningún vecino químico con blanco (semilla nula). Con semilla pero sin ninguna anotación en común con el blanco (1 144 casos), la recuperación es del 0.0 %; con al menos una (1 365), del 99.6 %.
La fracción informativa es un techo que ninguna reponderación de la red puede superar; por organismo va del 3.9 % al 33 %. Tres palancas para ampliar la semilla (subir el umbral de similitud, sumar KEGG, usar la actividad fenotípica) rescataron 0 de 500; las dos primeras no podían hacerlo en esta base.
El 99.6 % dice poco: en la mediana de estos casos, frank < 0.1 es quedar entre las primeras ~656 proteínas del organismo. Mirando la posición absoluta, el blanco queda primero en el 30 % de los casos, en el top-10 en el 72 % y en el top-100 en el 93 % (el azar pondría en el top-10 al 0.13 %). Son dos poblaciones: en la inferencia directa (1 113; el blanco ya está en la semilla) la posición mediana es 2 y el top-10 llega al 79 %; en la indirecta (252; sólo por anotaciones) la mediana es 20 y el top-10, 40 %. Las semillas grandes diluyen la señal (ρ = 0.45, positiva en 11 de 11 organismos con casos suficientes). En el 40 % el blanco empata en puntaje con otras proteínas.
Sobre el ranking global, la recuperación acumulada tiene pendiente alta en las primeras posiciones y cae al ruido de fondo en r*G = 76: una propuesta más abajo no se distingue del azar. Es un corte operativo: con k_σ entre 2 y 4 va de 68 a 88. La inferencia directa (el blanco lo trae un vecino químico) es el 44 % de los casos y pone el blanco en la posición global mediana 40; la indirecta (sólo por anotaciones), el 56 %, lo pone en la 185 125. De los blancos recuperados, el 82 % lo trae un vecino químico.
Aplicación al organismo foco. De 174 compuestos con actividad fenotípica contra Plasmodium falciparum, 3 no tienen blanco proteico y 3 tienen vecinos químicos con blanco; 2 reciben una propuesta por encima de r*G (2 sugerencias sobre 1 blanco distinto). Es un candidato para ensayar, no un resultado: el embudo es angosto porque la base está recortada.
Este repositorio porta el análisis v4 a la base codificada y recortada. Las mismas tablas calculadas antes de los dos cambios quedaron como oráculo, con un único criterio: si el análisis toca la capa química, el recorte lo mueve; si no, no. En desorfanización cambia además por la corrección de un error que el oráculo tiene. Sobre 353 columnas: sin discrepancias
El port destapó cuatro filtros heredados que comparaban un entero codificado contra el texto que solía contener; ninguno lanzaba una excepción, y los encontraron las pruebas y esta comparación. Y un error que no era del port, sino heredado del código original: la semilla de un compuesto buscaba sus vecinos químicos con el id del compuesto en tablas indexadas por cluster, y como las numeraciones se solapan devolvía los vecinos de otro cluster. Se encontró en v4 y se corrigió con una prueba. Detalle en PROVENANCE.md.
63 pruebas corren en menos de medio minuto: integridad de las tablas, ausencia de fuga, métricas contra valores de referencia, rutas, entorno, y que toda figura se dibuje sin tocar la base. Las tablas de la corrida están versionadas, así que las 38 figuras y todas las cifras de esta página se reproducen desde las tablas pregeneradas en alrededor de un minuto, sin volver a correr ningún modelo. Rehacer las tablas desde la base lleva unos 45 minutos con 20 procesos.
conda create -n TDR_GW python=3.12 && conda activate TDR_GW
pip install -r requirements.txt
make verificar # pruebas + figuras desde las tablas + cifras del informe ~1 min
make corrida # los 10 notebooks, desde la base ~45 min
make entregables # figuras, informe, presentación y esta página ~1,5 min
Cada notebook deja un NN_meta.json junto a sus tablas con la fecha, los parámetros, la fecha de cada tabla de entrada y las versiones de python y pandas. Qué tablas lee cada figura y qué la verifica está en FIGURAS.md. El repositorio no reproduce la base misma ni la lista de compuestos promiscuos (las dos se derivan de datos privados y se versionan como insumo), ni los nombres legibles de las anotaciones ni la identidad de los organismos, que es deliberada.