LUCiDDataset#
- class LUCiDDataset(data_root, split='', transform=None, modalities=('sensor',), dataset_name='wc', output_mode='response', include_labels=True, pe_threshold=0.0, min_segments=0, max_len=-1, loop=1, test_mode=False, test_cfg=None)[source]#
Bases:
DatasetWater Cherenkov detector dataset over co-indexed LUCiD HDF5 files.
Reads PMT sensor response and/or 3D track segments from event-aligned shard families (
sensor/and/orseg/) and emits flat dicts for the pimm transform/collation pipeline. The public keys depend onoutput_modefor the sensor modality:"response"emits one entry per PMT withcoord(3D PMT position or a 1D sensor index),energy(total PE) andtime;"labels"emits sparse per-particle entries withcoord,energy,segment(category) andinstance(particle index);"separate"keeps the raw reader keys (pmt_coord,pmt_pe,pp_*). After collation a batch addsoffset. Registered asLUCiDDataset– use astypeunderdata.train/data.val/data.test.- Parameters:
data_root (str) – Root directory holding
seg/and/orsensor/subdirectories.split (str) – Split name used for shard discovery. Defaults to
"".transform (list[dict]) – List of transform configs (NOT a prebuilt
Compose). Defaults toNone.modalities (tuple[str]) – Which modalities to load, any of
"sensor","seg". Defaults to("sensor",).dataset_name (str) – Shard filename prefix (e.g.
"wc"forwc_seg_0000.h5). Defaults to"wc".output_mode (str) – Sensor output contract, one of
"response","labels","separate"(see above). Defaults to"response".include_labels (bool) – Whether the sensor reader loads the per-particle decomposition (needed for
output_mode="labels"). Defaults toTrue.pe_threshold (float) – Minimum PE used to sparsify per-particle PE. Defaults to
0.0.min_segments (int) – Minimum segments per event (seg reader filter). Defaults to
0.max_len (int) – Cap on event count before the loop multiplier (-1 = no cap). Defaults to
-1.loop (int) – Train-time epoch multiplier. Defaults to
1.test_mode (bool) – Emit voxelized/augmented test fragments and force
loop = 1. Defaults toFalse.test_cfg (object) – Test config (
voxelize,crop,post_transform,aug_transform); required whentest_mode. Defaults toNone.
Note
The dataset length is the minimum event count across the active readers (they must be co-indexed). Loader settings (
batch_size,num_worker) live at the top level of the config.Example
>>> from pimm.datasets.builder import build_dataset >>> # data root not in this env -> shown with doctest +SKIP >>> ds = build_dataset(dict(type="LUCiDDataset", data_root="dataset_wc", ... modalities=("sensor",), output_mode="response", ... transform=[])) >>> sample = ds[0] >>> # output_mode="response" sample keys: coord (N, 3 PMT pos, or N, 1 >>> # sensor index), energy (N, 1 total PE), time (N, 1), name, split >>> # output_mode="labels": coord, energy, segment (category), >>> # instance (particle idx), time, name, split >>> # output_mode="separate": raw reader keys (pmt_coord, pmt_pe, pp_*) >>> # + name, split