Compare Alternatives
DeTime is useful when the project needs one decomposition workflow across Python, CLI, saved artifacts, and machine-readable metadata. Specialist packages remain the better choice when you only need their deepest family- specific API.
Before and after
DecompositionConfig, one DecompResult, one CLI artifact contract
Software matrix
Audit date: 2026-07-14. Local comparator packages available in the final audit
environment were statsmodels==0.14.6, PyWavelets==1.9.0, and
PySDKit==0.4.25. EMD-signal, SSALib, and sktime were not installed in
that environment, so their positions use package papers and public
documentation rather than local import checks. The feature matrix records
workflow/API characteristics; it is not a runtime or memory ranking.
| Axis | DeTime | statsmodels |
PyEMD |
PyWavelets |
PySDKit |
SSALib |
sktime |
|---|---|---|---|---|---|---|---|
| Best fit | cross-method workflow | classical decomposition/statistics | EMD-family work | wavelet transforms | broad signal decomposition | SSA-focused work | broader time-series ecosystem |
| Config/result surface | shared config and normalized result | per-method constructors; shared DecomposeResult for STL/MSTL |
classes and IMF arrays | functions and coefficient trees | method-family classes/results | SSA-specific configuration/results | estimator/transformer API |
| CLI and profiling | package API, CLI, batch, and profiles | library API | library API | library API | library API | library API | library API |
| Schemas and metadata | JSON schemas plus method/runtime metadata | result fields and documentation | IMF arrays and method state | coefficient metadata | method-specific outputs | SSA diagnostics/results | estimator parameters, tags, and registry |
| Multivariate under one surface | yes | limited | family-specific | transform-specific | yes | no | partial |
| Where it is deeper | workflow reproducibility | statistical modeling | EMD variants | wavelet tooling | decomposition breadth | SSA workflows | ecosystem breadth |
Package-by-package reading
| Package | Use it directly when | Use DeTime when |
|---|---|---|
statsmodels |
you need the full statistical modeling stack | you want STL / MSTL output in the same contract as other methods |
PyEMD |
you need deeper EMD-family controls | you want EMD / CEEMDAN beside SSA, STD, VMD, and CLI artifacts |
PyWavelets |
you need transform-specific wavelet APIs | you want wavelet decomposition as one option in a broader workflow |
PySDKit |
you need its broad signal-decomposition catalog | you want selected optional multivariate backends behind DeTime metadata and I/O |
SSALib |
you only need SSA-family tooling | you want SSA as one core method in a cross-family package |
sktime |
you need a large time-series ML ecosystem | you want decomposition outputs with DeTime's artifact and schema contract |
Broader ecosystems provide complementary abstractions: Darts supports forecasting and time-series modelling, aeon provides estimator interfaces for time-series machine learning, and StatsForecast focuses on scalable statistical forecasting. DeTime's narrower scope is a standalone decomposition package with one configuration, execution, normalized result, metadata, schema, CLI, profiling, and artifact contract across families.
Runtime snapshot
The release evidence includes a reproducible runtime snapshot generated by
scripts/generate_performance_snapshot.py. The current committed snapshot was
generated on Windows 10, Python 3.11.9, AMD64, with native SSA, STD,
STDR, MA_BASELINE, MSSA, and VMD capabilities available. Experimental
GABOR_CLUSTER timing is excluded from release-validation performance evidence
because it depends on a trained model object and optional clustering backend
availability.
| Method | Python median runtime (ms) | Native median runtime (ms) | Python/native ratio | Repeats / warmup |
|---|---|---|---|---|
SSA |
0.526 | 3.523 | 0.149x | 50 / 10 |
STD |
0.138 | 0.111 | 1.244x | 50 / 10 |
STDR |
0.176 | 0.118 | 1.496x | 50 / 10 |
MA_BASELINE |
0.071 | 0.064 | 1.104x | 50 / 10 |
MSSA |
42.933 | 16.053 | 2.674x | 50 / 10 |
VMD |
125.270 | 464.513 | 0.270x | 50 / 10 |
A ratio above 1 means that the native path was faster in this snapshot. Native execution was faster for STD, STDR, MA baseline, and MSSA, while Python was faster for SSA and VMD on this input. These numbers are a release-validation snapshot, not a universal benchmark.
Runtime and memory boundary
The current comparison evidence does not claim cross-package runtime or memory superiority. Runtime rows above compare DeTime native-backed paths with DeTime Python fallback paths in one environment. Peak-memory and direct same-method comparisons against external packages are future comparison work unless a release artifact explicitly records them.
Evidence appendix
Curated comparison files
comparison_evidence.jsoncomparison_capability_matrix.csvcomparison_install_matrix.csvcomparison_family_fairness.csvcomparison_machine_contract_matrix.csvworkflow_comparison.json
Regenerate them with:
python benchmarks/software_comparison/generate_comparison_evidence.py
python examples/workflow_comparisons/compare_specialist_glue_vs_detime.py
The comparison generator defaults to local-unverified; use
--release-state verified-public only after checking the matching
GitHub and PyPI release.
Quality and packaging checks
python scripts/check_doc_consistency.pymkdocs build --strictpython -m buildpython scripts/check_dist_contents.py dist/*.tar.gz dist/*.whlpython -m twine check dist/*python scripts/release_smoke_matrix.py