Skip to content

Task 1 – Core Architecture Redesign (NLnet)

Pierre Raybaut edited this page Jun 26, 2025 · 4 revisions

This page documents the results of Task 1 of the NLnet-funded DataLab refactoring project.

Summary

This task focused on decoupling the computation engine, object model, and I/O layer from the existing DataLab application (cdl module), in order to prepare a standalone processing library.

Milestone Status

✅ 1a. Decouple core data model and computational functions

All core signal/image processing features have been migrated from the cdl module to a new internal module named sigima_, which is fully independent from GUI-related logic.

🟡 1b. Decouple I/O features (excluding HDF5)

Basic I/O functions have been successfully extracted to sigima_, but the I/O plugin system from cdl.plugins is still pending migration.

➡️ Remaining action:

  • Implement a flexible I/O plugin architecture within sigima_, similar to the one in cdl.

🚧 1c. Redesign the API for the new core library

The API redesign is underway. A new object model for signals and images is in place, but still relies on some shared infrastructure from the cdl package.

➡️ Remaining actions (as listed in sigima_/__init__.py):

  • Remove all dependencies on cdl
  • Remove all references to Conf (if no longer needed)
  • Evaluate setting a minimum NumPy version to enable advanced type hints
  • Clarify the role of the PREFIX attribute in BaseObj

✅ 1d. Refactor the application layer to integrate the new core

The cdl package has been updated to use sigima_ as its processing backend.
All previously embedded logic in cdl now delegates to sigima_.

Code References

Next steps

  • Extract sigima_ into a standalone sigima package
  • Rename cdl to datalab, and cdl package to datalab-platform
  • Move tests and documentation
  • Implement plugin systems in sigima