Introducción
Wolfram Language es un lenguaje de programación multi-paradigma, el cual esta diseñado para la programación funcional y se utiliza principalmente en Wolfram Alpha y Mathematica.
Este año, Texas Tech University ha desarrollado un HACKATHON con el objetivo de detectar y clasificar el cáncer de mama con ayuda de Wolfram Language, dicha competencia busca relacionar a las chicas de Colegios Científicos hacia la programación con el objetivo de promover la atracción femenina a áreas STEAM, y de crear a las futuras profesionales de un país en constante progreso como lo es Costa Rica.
La dinámica de esta competencia se enfoca en que las participantes demuestren las habilidades y conocimientos adquiridos a lo largo de la preparación al analizar e identificar posibles errores presentes en un código proporcionado por los organizadores. Las participantes deberán identificar dichos errores y corregirlos de la mejor manera.
El presente documento cuenta con información fundamental para entender el funcionamiento del código perteneciente al equipo CCAtlántico, algunos aspectos presentes en dicho documento son:
- Funcionamiento del codigo.
- Entrada (Input)
- Salida (Output)
- Conclusiones por parte del equipo.
- Challenge extra.
- Referencias.
Este año, Texas Tech University ha desarrollado un HACKATHON con el objetivo de detectar y clasificar el cáncer de mama con ayuda de Wolfram Language, dicha competencia busca relacionar a las chicas de Colegios Científicos hacia la programación con el objetivo de promover la atracción femenina a áreas STEAM, y de crear a las futuras profesionales de un país en constante progreso como lo es Costa Rica.
La dinámica de esta competencia se enfoca en que las participantes demuestren las habilidades y conocimientos adquiridos a lo largo de la preparación al analizar e identificar posibles errores presentes en un código proporcionado por los organizadores. Las participantes deberán identificar dichos errores y corregirlos de la mejor manera.
El presente documento cuenta con información fundamental para entender el funcionamiento del código perteneciente al equipo CCAtlántico, algunos aspectos presentes en dicho documento son:
- Funcionamiento del codigo.
- Entrada (Input)
- Salida (Output)
- Conclusiones por parte del equipo.
- Challenge extra.
- Referencias.
HACKATHON2025
ColegioCientíficodelAtlántico
Input
Primera sección: Directorios y rutas de enlace.01: Definir directorios.Los directorios son primordiales a la hora de codificar. Definir las rutas en las que se encuentran nuestros archivos es importante para que la plataforma sea capaz de utilizarlos sin problemas. - Se definió una carpeta llamada “CCATLANTICO” como el directorio principal para el código. En esta carpeta, se encuentra el notebook, esto permite que el acceso a la información sea efectiva.El comando SetDirectory se encarga de definir el directorio principal, mientras que el comando “Directory” indica que el notebook reconoce el directorio, por lo que todo est\bá en orden y podemos continuar. (Colocamos doble backslash o slash invertido “\\” para que el comando funcione correctamente)
In[]:=
SetDirectory["C:\\Users\\Helen\\OneDrive\\Desktop\\CCATLANTICO"]
Out[]=
C:\Users\Helen\OneDrive\Desktop\CCATLANTICO
In[]:=
Directory[]
Out[]=
C:\Users\Helen\OneDrive\Desktop\CCATLANTICO
02: Rutas de las mamografias.
Dentro de la carpeta principal se encontraban dos carpetas junto al notebook.
- Ambas carpetas contenían una amplia base de datos sobre mamografias, las cuales fueron proporcionadas con anterioridad al desafio por el equipo de Texas Tech, HACKATHON 2025.
Dentro de la base de datos “Mammogram Mastery A Robust Dataset for Breast Cancer Detection and Medical Education” se encuentra una carpeta llamada “Breast Cancer Dataset”, que como su nombre su indica contiene las imagenes aumentadas “Augmented Dataset” y originales “Original Dataset” de las mamografias.
Las carpetas importantes son las que continen las imagenes de Cancer y NoCancer.
- Aquí se agregaron modificaciones e incluimos las clasificaciones del BI-RADS, en donde la clasificación “1, 2, 3” fueron definidas dentro de NoCancer y las “4 y 5” dentro de Cancer.
03: Definir las rutas de las mamografias.
Se definieron cinco rutas de enlace: examBIRADS1, examBIRADS2, examBIRADS3, examBIRADS4 y examBIRADS5.
Posterior a ello, fueron convertidas en variables, lo que permite que podamos utilizar comandos propios de Wolfram en las imágenes de estas carpetas.
02: Rutas de las mamografias.
Dentro de la carpeta principal se encontraban dos carpetas junto al notebook.
- Ambas carpetas contenían una amplia base de datos sobre mamografias, las cuales fueron proporcionadas con anterioridad al desafio por el equipo de Texas Tech, HACKATHON 2025.
Dentro de la base de datos “Mammogram Mastery A Robust Dataset for Breast Cancer Detection and Medical Education” se encuentra una carpeta llamada “Breast Cancer Dataset”, que como su nombre su indica contiene las imagenes aumentadas “Augmented Dataset” y originales “Original Dataset” de las mamografias.
Las carpetas importantes son las que continen las imagenes de Cancer y NoCancer.
- Aquí se agregaron modificaciones e incluimos las clasificaciones del BI-RADS, en donde la clasificación “1, 2, 3” fueron definidas dentro de NoCancer y las “4 y 5” dentro de Cancer.
03: Definir las rutas de las mamografias.
Se definieron cinco rutas de enlace: examBIRADS1, examBIRADS2, examBIRADS3, examBIRADS4 y examBIRADS5.
Posterior a ello, fueron convertidas en variables, lo que permite que podamos utilizar comandos propios de Wolfram en las imágenes de estas carpetas.
In[]:=
examBIRADS1="C:\\Users\\Helen\\OneDrive\\Desktop\\CCATLANTICO\\Mammogram Mastery A Robust Dataset for Breast Cancer Detection and Medical Education\\Breast Cancer Dataset\\Augmented Dataset\\NoCancer\\BIRADS 1";examBIRADS2="C:\\Users\\Helen\\OneDrive\\Desktop\\CCATLANTICO\\Mammogram Mastery A Robust Dataset for Breast Cancer Detection and Medical Education\\Breast Cancer Dataset\\Augmented Dataset\\NoCancer\\BIRADS 2";examBIRADS3="C:\\Users\\Helen\\OneDrive\\Desktop\\CCATLANTICO\\Mammogram Mastery A Robust Dataset for Breast Cancer Detection and Medical Education\\Breast Cancer Dataset\\Augmented Dataset\\NoCancer\\BIRADS 3";examBIRADS4="C:\\Users\\Helen\\OneDrive\\Desktop\\CCATLANTICO\\Mammogram Mastery A Robust Dataset for Breast Cancer Detection and Medical Education\\Breast Cancer Dataset\\Augmented Dataset\\NoCancer\\BIRADS 4";examBIRADS5="C:\\Users\\Helen\\OneDrive\\Desktop\\CCATLANTICO\\Mammogram Mastery A Robust Dataset for Breast Cancer Detection and Medical Education\\Breast Cancer Dataset\\Augmented Dataset\\NoCancer\\BIRADS 5";
04: Manipulación de las variables para confirmar que todo este en orden.
Las “birads1Images” es una variable que está definida por el comando FileNames, este define que siempre que se llame a esa variable, se refiere a TODAS (Infinity) las imagenes (birads1) sin importar el tipo de archivo (“*”).
Las “birads1Images” es una variable que está definida por el comando FileNames, este define que siempre que se llame a esa variable, se refiere a TODAS (Infinity) las imagenes (birads1) sin importar el tipo de archivo (“*”).
In[]:=
examImagesBIRADS1=FileNames["*",examBIRADS1,Infinity];examImagesBIRADS2=FileNames["*",examBIRADS2,Infinity];examImagesBIRADS3=FileNames["*",examBIRADS3,Infinity];examImagesBIRADS4=FileNames["*",examBIRADS4,Infinity];examImagesBIRADS5=FileNames["*",examBIRADS5,Infinity];
En esta parte del código, comandos como:
- Length: sirven para verificar que la plataforma este utilizando todas las imágenes.
- Length: sirven para verificar que la plataforma este utilizando todas las imágenes.
In[]:=
Length[examImagesBIRADS1]Length[examImagesBIRADS2]Length[examImagesBIRADS3]Length[examImagesBIRADS4]Length[examImagesBIRADS5]
Out[]=
8002
Out[]=
95
Out[]=
131
Out[]=
0
Out[]=
0
- Manipulate: muestran todas las imágenes de las carpetas, de forma que se pueden observar dentro del código.
In[]:=
Manipulate[Column[{n,bcidImages[[n]],Image[Import[bcidImages[[n]]],ImageSize->Small]}],{n,1,Length[bcidImages],1},SaveDefinitions->True]
Out[]=
In[]:=
Manipulate[Column[{n,birads1Images[[n]],Image[Import[birads1Images[[n]]],ImageSize->Small]}],{n,1,Length[birads1Images],1},SaveDefinitions->True]
Out[]=
In[]:=
Manipulate[Column[{n,birads2Images[[n]],Image[Import[birads2Images[[n]]],ImageSize->Small]}],{n,1,Length[birads2Images],1},SaveDefinitions->True]
Out[]=
In[]:=
Manipulate[Column[{n,birads3Images[[n]],Image[Import[birads3Images[[n]]],ImageSize->Small]}],{n,1,Length[birads3Images],1},SaveDefinitions->True]
02: Importancia de las pruebas en este punto.
La prueba fue realizada por medio del comando Length, al igual que para las veces anteriores este comando nos permite visualizar la cantidad de imágenes. El resultado de 100 indica que todo ha surgido sin errores y ha logrado adquirir el conocimiento de las 100 imágenes cargadas. (De igual forma si se agregan más imágenes el resultado del Length sería esta cantidad.)
02: Importancia de las pruebas en este punto.
La prueba fue realizada por medio del comando Length, al igual que para las veces anteriores este comando nos permite visualizar la cantidad de imágenes. El resultado de 100 indica que todo ha surgido sin errores y ha logrado adquirir el conocimiento de las 100 imágenes cargadas. (De igual forma si se agregan más imágenes el resultado del Length sería esta cantidad.)
Tercera sección: Entrenamiento de la IA con las bases de datos.
01: Funcionamiento del comando “Classify”.
Todo esta codificación tiene como propósito realizar una correcta detención del cáncer en las mamografías que sean adjuntadas.
El input tendrá la opción de subir la imagen mientras que el output se encargará de mostrar el diagnostico.
Este proceso puede ser posible gracias a la herramienta de classify. Comando que se encarga de asignar un nombre al resultado del reconocimiento. Si la imagen a reconocer coincide con los resultados de la base de datos del CANCER, entonces la variable “cancerClassify” se encargará de indicar que hay presencia cancerígena. Lo mismo para el caso de que no la haya.
Esta variable se define del comando Classify.
01: Funcionamiento del comando “Classify”.
Todo esta codificación tiene como propósito realizar una correcta detención del cáncer en las mamografías que sean adjuntadas.
El input tendrá la opción de subir la imagen mientras que el output se encargará de mostrar el diagnostico.
Este proceso puede ser posible gracias a la herramienta de classify. Comando que se encarga de asignar un nombre al resultado del reconocimiento. Si la imagen a reconocer coincide con los resultados de la base de datos del CANCER, entonces la variable “cancerClassify” se encargará de indicar que hay presencia cancerígena. Lo mismo para el caso de que no la haya.
Esta variable se define del comando Classify.
Por ultimo, ClassifierFunction actúa como una función, indicando la clase en la que se considera que es más probable que se encuentren los datos.
02: Pruebas para esta sección.
Finalmente con el comando \bInformation obtenemos información sobre los datos que confirman que todo este en orden y que sea funcional.
02: Pruebas para esta sección.
Finalmente con el comando \bInformation obtenemos información sobre los datos que confirman que todo este en orden y que sea funcional.
03: Función de algunos comandos.
- CloudPut[cancerClassify, “cancerClassifier”]: Se encarga de publicar los datos en la nube.
03: Función de algunos comandos.
- CloudPut[cancerClassify, “cancerClassifier”]: Se encarga de publicar los datos en la nube.
- BarChart: Originalmente en el código brindado estaba con PieChart, sin embargo, se decidió optar por gráfico de barras debido a que se visualiza con mayor claridad y es más ordenado.
- BarChart: Originalmente en el código brindado estaba con PieChart, sin embargo, se decidió optar por gráfico de barras debido a que se visualiza con mayor claridad y es más ordenado.
- Information: Muestra la información junto con una grafica.
Output
Conclusiones
Importancia del Lenguaje de Programación: Wolfram Language.
Wolfram Language es un lenguaje de programación ideal para trabajar con grandes cantidades de datos. Su capacidad de ejecutar operaciones complejas en pocas líneas de código, junto con su Inteligencia Artificial integrada, permite crear herramientas estables y altamente optimizadas para realizar tareas de automatización.
Conclusiones personales:
-Helena: Clasificación del BI-RADS.
La idea de agregar la identificación de la escala de BI-RADS debía empezar con separar las imagenes proporcionadas (cancer y no cancer), en subdiviciones según en que categoría de la escala BI-RADS se encontraban.
Asimismo, asistencia tanto al área de programación como ensayo.
Personalmente, fue un desafío el analizar correctamente los patrones, densidades y caracteristicas de cada mama. Fue un trabajo arduo de analisis biologico.
-Valerie: Programación del modelo y entendimiento del lenguaje.
Responsable de desarrollar el sistema de Machine Learning, entrenar el modelo con la nueva base de datos y logistica detrás del codigo.
Además, se encargó de la verificación de la explicación del \bcódigo.
Mi principal dificultad fue integrar todas las partes del proyecto en un sistema funcional. Además, el trabajar con bases de datos tan pesadas.
\b
-Vieleny: Todo lo relacionado a lo escrito.
Principalmente el ensayo, la logistica detrás de él y la redacción de las ideas.
Junto a esto, la explicación del código de programación al estilo “storytelling”
Explicar el código de manera clara y con un lenguaje sencillo para todos fue un desafío por si mismo, al cual se le sumó la carga de redacción que fue el ensayo.
Wolfram Language es un lenguaje de programación ideal para trabajar con grandes cantidades de datos. Su capacidad de ejecutar operaciones complejas en pocas líneas de código, junto con su Inteligencia Artificial integrada, permite crear herramientas estables y altamente optimizadas para realizar tareas de automatización.
Conclusiones personales:
-Helena: Clasificación del BI-RADS.
La idea de agregar la identificación de la escala de BI-RADS debía empezar con separar las imagenes proporcionadas (cancer y no cancer), en subdiviciones según en que categoría de la escala BI-RADS se encontraban.
Asimismo, asistencia tanto al área de programación como ensayo.
Personalmente, fue un desafío el analizar correctamente los patrones, densidades y caracteristicas de cada mama. Fue un trabajo arduo de analisis biologico.
-Valerie: Programación del modelo y entendimiento del lenguaje.
Responsable de desarrollar el sistema de Machine Learning, entrenar el modelo con la nueva base de datos y logistica detrás del codigo.
Además, se encargó de la verificación de la explicación del \bcódigo.
Mi principal dificultad fue integrar todas las partes del proyecto en un sistema funcional. Además, el trabajar con bases de datos tan pesadas.
\b
-Vieleny: Todo lo relacionado a lo escrito.
Principalmente el ensayo, la logistica detrás de él y la redacción de las ideas.
Junto a esto, la explicación del código de programación al estilo “storytelling”
Explicar el código de manera clara y con un lenguaje sencillo para todos fue un desafío por si mismo, al cual se le sumó la carga de redacción que fue el ensayo.
How could this tool help a clinic in the interior of Costa Rica?
Referencias
https://wolfr.am/1yoCYUfTz
https://wolfr.am/1yoD0ODN5
https://wolfr.am/1yoD2RWXl
https://www.who.int/es/news-room/fact-sheets/detail/breast-cancer
https://www.ministeriodesalud.go.cr/index.php/prensa/61-noticias-2024/1972-fallecimientos-por-cancer-de-mama-en-edad-prematura-disminuyo-un-0-86-en-el-2023
https://wolfr.am/1yoD0ODN5
https://wolfr.am/1yoD2RWXl
https://www.who.int/es/news-room/fact-sheets/detail/breast-cancer
https://www.ministeriodesalud.go.cr/index.php/prensa/61-noticias-2024/1972-fallecimientos-por-cancer-de-mama-en-edad-prematura-disminuyo-un-0-86-en-el-2023
¡Gracias!

