Skip to content

4. Análisis detallado de código

Esta sección disecciona el código real del proyecto, archivo por archivo. Para cada módulo relevante se cubre: propósito, flujo interno, funciones (entradas/salidas/complejidad/casos borde), clases y los bloques de código críticos explicados por su intención, no solo su sintaxis.

Cómo está organizada

Por volumen, se divide en subpáginas temáticas que siguen las capas del proyecto:

SubpáginaCubreArchivos
Configuración y rutasEl contrato de configuración y resolución de rutasconfig/dataset.yaml, src/config.py
Capa de datosCarga, dataset, splits, transforms, samplersrc/data/*
Modelos y registryCatálogo de arquitecturas, patrón registrysrc/models/*
EntrenamientoEl loop funcional y las utilidades compartidastrain_baselines.py, train.py, src/training/common.py
ExplicabilidadLIME, Grad-CAM, reportes visualessrc/explainability/*, explain_*.py
Scripts de soportePredicción, checks, dataset, Modal, cleanuppredict.py, scripts/checks/*, scripts/dataset/*, scripts/modal/*

Convenciones de lectura del código (obligatorias para modificar)

Estas reglas están grabadas en CLAUDE.md y las skills del proyecto. Interiorízalas antes de tocar nada:

  1. Un único punto de entrada a imagen. Toda lectura de imagen pasa por load_and_normalize_image() (datos). No abrir imágenes con PIL en otro lugar.
  2. Rutas nunca hardcodeadas. Dataset fuente vía get_dataset_root(); artefactos vía get_output_root() (configuración). Nunca usar la constante DATASET_ROOT directa (es Path | None).
  3. Config centralizada. Clases, target_size, seed y perfil baseline viven en config/dataset.yaml. No hardcodear constantes de dominio.
  4. Sin sys.path.append. El paquete es editable (pip install -e .); los imports src.* resuelven directo.
  5. target_size es (alto, ancho) — convención (h, w) de torchvision. El Resize con distorsión de aspecto es intencional y consistente entre train/eval; no "corregirlo" a Resize+CenterCrop.

Grafo de dependencias entre módulos

Empieza por Configuración y rutas: es la base que todo lo demás consume.