Este backend implementado con FastAPI permite procesar evaluaciones clínicas, predecir riesgos de TEA utilizando modelos de Machine Learning, y almacenar los resultados en una base de datos PostgreSQL. El proyecto puede ejecutarse localmente y también ser desplegado fácilmente en Railway.
- FastAPI + Uvicorn
- SQLAlchemy
- PostgreSQL
- Pandas & Joblib
- Alembic (opcional para migraciones)
- Railway (despliegue)
- Python 3.10+
- Git
- PostgreSQL (local o en la nube)
- Railway (opcional para despliegue)
git clone https://github.com/tu-usuario/tu-repo.git
cd tu-repopython -m venv venv
source venv/bin/activate.\venv\Scripts\Activate.ps1Si se lanza un error por permisos:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\venv\Scripts\Activate.ps1pip install -r requirements.txtCrea un archivo llamado .env en la raíz del proyecto con este contenido:
DATABASE_URL=postgresql+psycopg2://usuario:contraseña@host:puerto/nombrebd
Reemplaza los valores con tus credenciales de PostgreSQL.
uvicorn app.main:app --reloadAbre en tu navegador: http://localhost:8000/docs
.
├── app/
│ ├── db/
│ ├── model/
│ ├── schemas/
│ ├── utils/
│ ├── api.py
│ └── main.py
├── notebooks/
├── tests/
├── model.pkl
├── pca_model.pkl
├── requirements.txt
├── Procfile
├── .env (no subir a GitHub)
├── .gitignore
└── README.md
/docs- Documentación Swagger UI/redoc- Documentación ReDoc
POST /predict- Este endpoint:- Recibe una lista de 25 valores numéricos o binarios
- Realiza preprocesamiento usando un modelo PCA
- Aplica un modelo ML previamente entrenado (
model.pkl) - Devuelve una clase (
0o1) y un nivel de confianza - Guarda la evaluación completa en la base de datos PostgreSQL
# Usando SQLAlchemy
python -c "from app.db.database import Base, engine; Base.metadata.create_all(bind=engine)"
# O usando Alembic
alembic revision --autogenerate -m "Initial migration"
alembic upgrade headpytest- Ve a https://railway.app
- Crea un nuevo proyecto
- Agrega PostgreSQL como plugin
- Copia la cadena DATABASE_URL
git init
git add .
git commit -m "Primera versión"
git branch -M main
git remote add origin https://github.com/tu-usuario/tu-repo.git
git push -u origin main- Selecciona el repositorio subido
- Railway instalará automáticamente las dependencias usando
requirements.txt
En el panel de "Variables", define:
DATABASE_URL=postgresql+psycopg2://usuario:contraseña@host:puerto/nombrebd
AUTO_CREATE_TABLES=true
Puedes acceder al endpoint en:
https://<tu-app>.up.railway.app/docs
El sistema utiliza modelos pre-entrenados para la predicción del riesgo de TEA:
- Preprocesamiento: El modelo PCA (
pca_model.pkl) reduce la dimensionalidad de los 25 valores de entrada - Clasificación: El modelo principal (
model.pkl) implementa un algoritmo de clasificación que determina:- Una clase binaria (
0= Sin riesgo de TEA,1= Con riesgo de TEA) - Un nivel de confianza para la predicción
- Una clase binaria (
Ambos modelos fueron entrenados previamente y se cargan mediante joblib para realizar las predicciones en tiempo real.
- Haz fork del repositorio
- Crea una rama para tu funcionalidad (
git checkout -b feature/amazing-feature) - Haz commit de tus cambios (
git commit -m 'Add some amazing feature') - Empuja a la rama (
git push origin feature/amazing-feature) - Abre un Pull Request
Este archivo le dice a Railway cómo ejecutar FastAPI:
web: uvicorn app.main:app --host=0.0.0.0 --port=${PORT:-8000}Asegúrate de tener este contenido para evitar subir archivos innecesarios:
venv/
__pycache__/
*.pyc
.envDesarrollado por [Ernesto Saniel Castro Lozano]
📧 Email: [ernestosaniel123@gmail.com]
Proyecto académico orientado a la predicción del riesgo de TEA utilizando modelos de aprendizaje automático.