| Módulo / Carpeta | Propósito |
|---|---|
base.py |
Define interfaces y clases abstractas (BaseCost, BaseEstimator) |
cost |
Funciones de costo como L1, L2, RBF... |
detection |
Algoritmos como Pelt, Binseg, BottomUp, etc. |
datasets |
Utilidades para generar señales de prueba. |
metrics |
Evaluación (ej. precisión de detección). |
show |
Renderizado (matplotlib, etc). |
exceptions.py |
Excepciones custom. |
utils |
Funciones auxiliares como sanity_check |
__init__.py |
Organiza qué se expone como API pública. |
Si empezamos desde las técnicas de detección (detection) como paquetes separados podremos tener unidades independientes que prueben conceptos concretos, Detectar dependencias comunes (como BaseCost, sanity_check, etc.) y Modularizar de abajo hacia arriba.
Estructura propuesta en Go, inspirada en la modularidad de ruptures:
rupture/
├── cmd/ # CLI para probar, correr, exportar resultados
├── core/
│ ├── base/ # Interfaces clave: CostFunction, Estimator
│ ├── cmdutils/ #
│ ├── cost/ # Costos L1, L2, RBF... testables de forma independiente
│ ├── datasets/ # Simulación de señales (¡útil para tests!)
│ ├── detection/ # Algoritmos separados por carpeta = 💯
│ └── exceptions/ # `ErrInvalidSegment`, `ErrIncompatibleCost`, etc.
│ └── kernels/ # Base para libreria autonoma: pykernels port
│ └── linalg/ # utilerias de Gonum / Algebra lineal : shotcuts, envoltorios
│ └── stat/ # utilerias de Gonum / Stats: shotcuts, envoltorio + scypy portss
│ ├── metrics/ # Precision, coverage, F1, etc.
│ ├── types/ #
│ ├── utils/ # Funciones como `SanityCheck()`, padding, slicing...
├── docs/ # Herramientas para generacion de documentacion / RAG
├── go.mod # Manejo de dependencias limpio
├── README.md # Main page
├── license # LICENSE
├── plan.md # Roadmap de implementación, dependencias, etc.
└── logbook.md # Registro de decisiones, experimentos o insights
-
base/CostFunctioninterfaceEstimatorinterface
-
exceptions/- Definir errores como
ErrNotEnoughPoints,ErrBadSegmentationParams
- Definir errores como
-
utils/SanityCheck(...)- Otras funciones comunes
cost/l2.gocost/l1.gocost/rbf.gocost/factory.go
Con cada uno implementando .Fit(signal) y .Error(start, end)
-
detection/pelt/- Implementar
Pelt
- Implementar
-
detection/binseg/ -
detection/dynp/ -
detection/window/
(Con cada uno implementando Estimator)
metrics/
- Precision
- Hausdorff
- Coverage
datasets/
pw_constant,pw_linear, etc.
- Pruebas: comparar contra salidas de
rupturesen Python
- Estructura tipica en Go, modular y mantenible.
- Comenzar por fundamentos (
base,cost), luego algoritmos (detection). - Pruebas paralelas contra Python (
ruptures) para validar equivalencia.