Este repositorio contiene el código y recursos asociados al análisis presentado en el estudio:
"Explorando la Demencia Frontotemporal mediante Biología de Sistemas: Un Enfoque Integrado"
Autores:
- Mario Pascual González
- Ainhoa Nerea Santana Bastante
- Carmen Rodríguez González
- Gonzalo Mesas Aranda
- Ainhoa Pérez González.
Las pruebas fueron realizadas en:
- Sistema Operativo: Ubuntu 22.04.5 LTS
- Kernel: Linux 6.8.0-49-generic
- Procesador: 13th Gen Intel i7-13700KF (24) @ 5.300GHz
- GPU: NVIDIA GeForce RTX 3060
- Arquitectura: x86_64
- Primera ejecución: 2024-11-22 11:40:01
- Última Ejecución: 2024-12-09 16:21:53
La forma más sencilla y recomendada es ejecutar el pipeline utilizando la imagen preconstruida de Docker en Docker Hub. El script launch.sh se encargará de descargar y ejecutar la imagen.
-
Clonado del Repositorio
Clonar el repositorio usandogit:git clone https://github.com/MarioPasc/project_template cd project_template -
Ejecución del Pipeline
Lanzar el pipeline completo ejecutando:./code/launch.sh
Este script:
- Descarga la imagen preconstruida desde Docker Hub:
mariopasc/biosist_ftd:latest. - Ejecuta el pipeline dentro de un contenedor Docker.
- Monta las carpetas locales
results/ycode/data/para almacenar los resultados.
- Descarga la imagen preconstruida desde Docker Hub:
Si se prefiere no usar la imagen preconstruida de Docker Hub, puedes optar por las siguientes alternativas:
Si quieres construir la imagen tú mismo a partir del Dockerfile, sigue estos pasos:
-
Construir la Imagen
Ejecutar el siguiente comando en la raíz del proyecto:docker build -t biosist_ftd:latest . -
Ejecución del Pipeline con la Imagen Local
Utilizar el scriptlaunch.sh, que ahora ejecutará la imagen localmente construida:./code/launch.sh
Si no se puede usar Docker, también se pueden instalar las dependencias y ejecutar el pipeline directamente en su máquina local:
-
Instalación de Dependencias
Ejecutar el scriptsetup.shpara instalar todas las dependencias de Python localmente:./code/setup.sh
-
Ejecución del Pipeline
Lanzar el pipeline ejecutandoexecute.sh:./code/execute.sh
Caution
Es muy probable que la generación del PDF no funcione con esta vía de ejecución, ya que esa parte del flujo ha sido programada ad hoc para Docker
| Forma | Comando | Requisitos |
|---|---|---|
| Principal (Docker Hub) | ./code/launch.sh |
Docker instalado |
| Alternativa 1 (Docker Local) | docker build -t biosist_ftd ../code/launch.sh |
Docker instalado |
| Alternativa 2 (Ejecución Local) | ./code/setup.sh./code/execute.sh |
Python instalado (>=3.10), Latex local (figuras), sin Docker |
launch.sh: Ejecuta Docker y monta las carpetas necesarias.execute.sh(dentro del contenedor): Se encarga de ejecutar el pipeline completo, incluyendo:- Descarga de datos de HPO.
- Construcción y análisis de la red PPI.
- Optimización bayesiana (si se habilita).
- Generación de resultados y figuras.
En el script execute.sh, se encuentran las siguientes variables:
| Variable | Valor por Defecto | Descripción |
|---|---|---|
| OPTIMIZE | true |
Controla si se realiza la optimización bayesiana de hiperparámetros. Si está en true, se retomará desde el último intento si existen archivos .db en results/. |
| TRIALS | 100 |
Define el número de intentos del algoritmo de optimización bayesiana. Se recomienda 80-100 iteraciones para replicar los resultados del estudio original. |
Caution
Si se quiere modificar cualquiera de estas variables, se deben especificar en la llamada a launch.sh, ya que Docker se encargará de pasarlas a execute.sh:
OPTIMIZE=true TRIALS=100 ./code/launch.shCaution
Si se fija OPTIMIZE=false, entonces se debe renombrar la carpeta original_results a results, para que tome los resultados guardados ahí. Esto se puede hacer fácilmente con:
mv ./original_results ./resultsImportant
Si results/ está vacío y OPTIMIZE=true, el ajuste se iniciará desde cero. Si los archivos .db existen, se reanudará el ajuste.
Note
Se estima 1 minuto por intento para cada algoritmo de clustering (Leiden y Louvain). Este tiempo puede estar relacionado con la configuración de hardware, pero sobre todo depende del estado de la API.
La estructura del proyecto está organizada de la siguiente manera:
📂 project_template/
├── 📂 code/ # Código fuente principal
│ ├── 📂 clustering/ # Scripts de clustering
│ ├── 📂 functional_analysis/ # Scripts de análisis funcional
│ ├── 📂 network/ # Scripts de construcción y análisis de redes
│ ├── 📂 utils/ # Utilidades y funciones auxiliares
│ ├── setup.sh* # Script para instalación de dependencias
│ ├── launch.sh* # Ejecución de la imagen Docker
│ └── execute.sh* # Script principal para ejecutar el pipeline
│
├── 📂 report/ # Documentación y reportes del estudio
│ ├── ...
│ └── report.pdf # Artículo original del proyecto
│
├── 📂 results/ # Resultados de las ejecuciones
│ ├── clustering_results.json # Resultados de clustering
│ ├── functional_analysis_leiden_max_enrichment.csv # Resultados de enriquecimiento funcional sin filtrar
│ ├── functional_analysis_leiden_max_modularity.csv # Resultados de enriquecimiento funcional sin filtrar
│ ├── filtered_results_leiden_max_enrichment.csv # Resultados de enriquecimiento funcional filtrados
│ ├── filtered_results_leiden_max_modularity.csv # Resultados de enriquecimiento funcional filtrados
│ ├── leiden_optimization.db # Resultados de optimización Leiden
│ ├── multilevel_optimization.db # Resultados de optimización Louvain
│ ├── networkAnalysisMetrics.tex # Métricas de análisis de la red
│ ├── results_leiden.csv # Resultados de optimización Leiden (formato csv)
│ ├── results_multilevel.csv # Resultados de optimización Louvain (formato csv)
│ └── 📂 plots/ # Gráficos generados
│ ├── 📂 clustering/ # Visualización de clustering
│ ├── 📂 functional_analysis/ # Gráficos de análisis funcional
│ ├── 📂 network/ # Gráficos de redes
│ └── 📂 optimization/ # Gráficos de optimización
│
├── Dockerfile # Dockerfile con la configuración del entorno Docker
└── README.md # Documentación principal del proyectoLos resultados incluyen:
- Clustering Funcional: Generado con algoritmos Leiden y Louvain.
- Análisis Funcional: Rutas biológicas enriquecidas, incluyendo archivos
filtered_resultsoptimizados. - Optimización Bayesiana: Bases de datos
.dbcon resultados de hiperparámetros ajustados. - Visualización: Gráficos detallados en la carpeta
results/plots/.
Se deja como contacto al alumno coordinador del proyecto, Mario Pascual González:
📧 [email protected]