The conversion pipeline is organized around three base classes defined in py123d.parser.base_dataset_parser.BaseDatasetParser.
- Dataset Parser: A top-level orchestrator that produces lightweight, picklable handles for logs and maps. It is instantiated once on the main process and distributed to parallel workers.
- Log Parser: A handle to a single continuous driving sequence (a 'log'). Workers use these to perform heavy I/O and yield synchronized frames.
- Map Parser: A handle to a specific map region.
Data flows from these parsers into ArrowLogWriter and ArrowMapWriter, which store the results in Arrow format for access via the unified API.
Important: Parsers must be lightweight. Do not store open file handles, database connections, or decoded sensor data in the parser classes. Store only paths and parameters; perform expensive I/O inside the iterators which run on the worker processes.
BaseDatasetParser
├── get_log_parsers() ──▶ [ LogParser_1, ..., LogParser_N ] ──▶ ArrowLogWriter
└── get_map_parsers() ──▶ [ MapParser_1, ..., MapParser_M ] ──▶ ArrowMapWriter
│
▼
Arrow storage ──▶ unified API