Standard
Record decoder variant that decodes node features, targets, graph connectivity, and auxiliary columns from blocks written by the data pipeline in the standard columnar schema: each key is one column of the block, ragged columns carry per-record row offsets. It is the counterpart to the standard attribute decoder and the default choice for datasets produced by IceGraph.
It is also the decoder for IceCube simulation, and is the only part of the engine
that knows about simweights: the weights role is decoded by building the
generation surface and weighting each record against a flux.
Weighting
The i3-simulation processor does not store a weight. It stores the per-event generation quantities as a column and the shard’s simulation metadata as a local attribute, so the mixture is chosen when the data is read rather than when it is written.
On load this decoder:
Builds the surface of each simulation set with simweights, treating the set’s loaded shards as one.
Counts the input files each shard records under
nfiles, including files without events.
Sums the surfaces of the sets of each type.
Weights each block’s generation columns against those sums.
Returns the final weights, one per record.
Shards without a simulation are inferred to be real data and get no weights.
The weights role reads the generation column through the decode service’s
keymap.weights, which defaults to generation.
Mixed simulation
A source may mix simulation types, for instance CORSIKA files alongside NuGen ones. The sets of each type are summed into their own surface, each surface is weighted against its own flux, and each record is routed to one of them. Configure one flux per type.
Routing is per record because a block spans shards. The i3-simulation processor
writes a sim code naming the set into the generation columns of every event and
declares, in the same shard’s attributes, what type that code stands for and which
column carries it, so the decoder learns the mapping from the data rather than from
a convention shared with the writer.
Note
Real data and simulation cannot be loaded together.
Configuration
Selected as name: standard.
Option |
Description |
Type |
Default |
|---|---|---|---|
|
Flux model each simulation type is weighted against, keyed by the simulation
that generated it ( |
mapping |
|
Each entry selects a model from one of the two packages that ship them:
Option |
Description |
Type |
Default |
|---|---|---|---|
|
Package the model comes from: |
str |
required |
|
Model name as that package spells it, e.g. |
str |
required |
|
Constructor arguments for a |
mapping |
|
services:
decode:
records:
name: standard
kwargs:
flux:
corsika:
source: simweights
name: GaisserH4a
kwargs: { }
A source mixing CORSIKA and NuGen files (for example) configures both, and each is weighted against its own model:
flux:
corsika:
source: simweights
name: GaisserH4a
kwargs: { }
nugen:
source: nuflux
name: honda2006
kwargs: { }
Note
nuflux is not a pip dependency; it comes from the IceTray environment on
CVMFS, and is imported only when a nuflux model is configured.