
Proyecto Javierre — Sesión 1: por qué este proyecto y de dónde vienen los datos
Empezamos un proyecto nuevo, distinto de CUTLER. Si CUTLER nos enseñó a usar árboles de decisión y Random Forest sobre datos de cáncer de mama, este proyecto tiene un objetivo más ambicioso todavía: aprender las mismas técnicas, pero sobre datos de leucemia infantil, con la vista puesta en algo muy concreto — que quien esté hoy en un aula aprendiendo esto pueda, el día de mañana, dedicarse a investigar de verdad y ayudar a curar esta enfermedad. Las herramientas de la ciencia de datos no distinguen entre practicar con un ejemplo de clase y trabajar en un laboratorio real: son las mismas.
Por qué se llama Proyecto Javierre
Le hemos puesto nombre a un proyecto de investigación de este tipo, y aquí lo dedicamos a alguien que representa exactamente lo que queremos conseguir: Biola Javierre.
Biola Javierre nació en Sabiñánigo (Huesca) en 1983. Es licenciada en Biología y Bioquímica por la Universidad de Navarra y doctora en Biología Molecular y Epigenética por la Universidad Autónoma de Madrid. Hizo su periodo posdoctoral en un centro asociado a la Universidad de Cambridge. Hoy lidera un grupo de investigación en el Instituto de Investigación Josep Carreras contra la Leucemia, especializado precisamente en leucemia linfoblástica aguda (LLA) — el mismo tipo de leucemia sobre el que vamos a trabajar en este proyecto. En 2019, la Fundación L’Oréal-UNESCO la reconoció como una de las 15 investigadoras jóvenes más prometedoras del mundo, dentro del programa “For Women in Science”.
En una entrevista resumía así su trabajo: “Buscamos tratamientos más eficaces contra la leucemia infantil”. Esa frase podría ser el lema de este proyecto.
De dónde vienen los datos
Los datos con los que vamos a trabajar no son inventados ni simulados: son datos reales, publicados en 1999 por el equipo de Todd Golub, en uno de los estudios que fundó la clasificación molecular de las leucemias tal y como se entiende hoy en medicina. En aquel estudio se midió la actividad (la “expresión”) de miles de genes en muestras de sangre y médula ósea de 72 pacientes, con el objetivo de distinguir dos tipos de leucemia que a simple vista, al microscopio, pueden confundirse:
- ALL (leucemia linfoblástica aguda): 47 de los 72 pacientes.
- AML (leucemia mieloide aguda): 25 de los 72 pacientes.
Son datos de dominio público (licencia CC0), disponibles sin necesidad de registro ni permiso especial.
Por qué solo 4 genes, y por qué esos
El estudio original mide más de 7000 genes por paciente. Usar los 7000 tal cual sería un mal punto de partida para un proyecto como este: con solo 72 pacientes y miles de variables, cualquier modelo se volvería poco fiable, y además haría falta una técnica de selección automática de variables que todavía no toca en este nivel.
En vez de eso, hemos elegido a mano 4 genes concretos, por una razón que no tiene nada de estadística y sí mucho de medicina real: son genes que el personal médico usa hoy en día, en un hospital de verdad, para distinguir el tipo de leucemia de un paciente. Esta técnica se llama inmunofenotipado, y se basa en identificar marcadores propios de cada estirpe celular:
- MPO (mieloperoxidasa) y CD33: marcadores de estirpe mieloide. Se espera que estén altos en pacientes con AML.
- CD19 y TdT: marcadores de estirpe linfoide. Se espera que estén altos en pacientes con ALL.
Es decir: no hemos dejado que un algoritmo decidiera qué variables son importantes — hemos partido de lo que ya se sabe en biología y medicina sobre estos genes, y hemos comprobado que esa idea funciona con los datos reales.
Qué significa cada columna del dataset
El archivo leucemia_4genes.csv tiene 72 filas (una por paciente) y estas columnas:
- patient: número identificador del paciente, del 1 al 72. No aporta información médica, solo sirve para no perder la pista de cada fila.
- MPO, CD33, CD19, TdT: el nivel de actividad de cada uno de los cuatro genes, medido con una tecnología llamada microarray. Cuanto más alto es el número, más activo está ese gen en las células del paciente. Un detalle importante: vais a encontrar valores negativos en estas columnas (por ejemplo, -109 o -257). Esto no es un error de los datos: la técnica de medición resta primero el “ruido de fondo” del aparato, así que un valor negativo simplemente significa que la actividad de ese gen está por debajo del umbral que el aparato es capaz de detectar con fiabilidad — es decir, “prácticamente apagado”, no un número roto.
- cancer: el diagnóstico real del paciente,
ALLoAML. Esta es la columna que querremos que un modelo aprenda a predecir a partir de las otras cuatro.
Primer vistazo a los datos
Antes de ejecutar el código, tenéis que guardar el archivo leucemia_4genes.csv en la misma carpeta donde tengáis guardado el cuaderno de Jupyter de esta sesión. Si el archivo está en otra carpeta distinta, pd.read_csv("leucemia_4genes.csv") no lo va a encontrar y dará un error de tipo FileNotFoundError. Así que el primer paso es mover o copiar el CSV a esa carpeta, y comprobar en el explorador de archivos de JupyterLab (el panel de la izquierda) que aparece ahí, junto al cuaderno.
import pandas as pd
datos = pd.read_csv("leucemia_4genes.csv")
datos.head()
datos["cancer"].value_counts()
Con esto deberíais ver las cinco primeras filas del dataset, y comprobar que hay 47 pacientes ALL y 25 AML — el mismo reparto que ya conocíamos por el estudio original.

Próximo paso
En la próxima sesión entrenaremos nuestro primer modelo real sobre estos datos, siguiendo el mismo camino que ya recorrimos en CUTLER: partición de entrenamiento y prueba, y un primer clasificador. La diferencia es que esta vez, detrás de cada número, hay una pregunta que de verdad importa: si el patrón de estos cuatro genes basta para distinguir un tipo de leucemia de otro.



