Data model#

MoDaCor uses three nested containers so numerical values, physical meaning, and pipeline organization remain explicit:

ProcessingData
└── "sample"                         DataBundle
    ├── "signal"                     BaseData
    │   ├── signal                    numerical array
    │   ├── units                     Pint unit
    │   ├── uncertainties             named absolute 1σ arrays
    │   ├── weights and axes
    │   └── rank_of_data
    ├── "Q"                          BaseData
    └── "mask"                       BaseData