[BETTER SELF CONSISTENCY] Unique Tally object, closure and consistency reports - #83
[BETTER SELF CONSISTENCY] Unique Tally object, closure and consistency reports#83SteSeg wants to merge 13 commits into
closure and consistency reports#83Conversation
|
Generally this seems a bit big to be a single PR. Can the functionality be broken out into slightly smaller chunks? Also, I don't love the addition of the If we are taking the MCNP input to be the definition of the spec then we can add a bin below the lowest tally bin edge at the cutoff value to the spec. |
Of course, i can split the PR in multiple ones and remove the |
Summary
This PR introduces a scalable, metadata-preserving tally workflow in OFB and aligns benchmark/UQ/TMC tally handling around a consistent API style.
It also addresses ambiguity in benchmark definitions (not only tallies), with a concrete fix for energy-spectrum closure semantics and improved consistency reporting.
Why These Changes Were Needed
1. Tally shape scalability
Before this PR, tallies were converted through a
pandas.DataFramestep before becomingxarrayobjects.That intermediate
DataFramerepresentation is naturally tabular and effectively limits clean handling to 2D-like layouts, which becomes a bottleneck for multi-dimensional tallies.This limitation affects both:
2. Definition ambiguity across transport codes
We identified ambiguity in some benchmark definitions, especially energy-spectrum bin interpretation.
Example observed in Oktavian:
This can produce shifted/discordant results from nominally "same" inputs.
To address this ambiguity, we implemented the concept of
closurein benchmarkspecifications.yamlfile, which uniquely defines the correct interpretation of a given array of bins for tallies.Main Changes In This PR
backends/folder for transport-code specific implementations.closuresemantics inspecificationsand handling.Tallyobject inBenchmarkResults:BenchmarkResults(including UQ runs)TMCStatePoint/TMCTallyspecificationsfileMinimal Usage Examples
1. Energy closure in specification
2. Read benchmark results and work with OFB Tally object
3. Call consistency report