Add normalized dataset store and offline Record3D support#88
Draft
JanDuchscherer104 wants to merge 15 commits into
Draft
Add normalized dataset store and offline Record3D support#88JanDuchscherer104 wants to merge 15 commits into
JanDuchscherer104 wants to merge 15 commits into
Conversation
a107b92 to
f6f15fe
Compare
added 15 commits
June 11, 2026 21:20
f6f15fe to
8a5a19f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This branch replaces the earlier Record3D-only extraction with a clean, reviewable replay that adds a normalized dataset store for dataset-backed sources, introduces offline Record3D
.r3darchives as a dataset package, and wires the minimal CLI/source/pipeline/app surfaces needed to inspect and replay those normalized datasets. ADVIO and TUM RGB-D keep their raw local source defaults, Record3D offline support stays separate from live Record3D transport, and the branch intentionally excludes W&B, sweeps/run orchestration, run-bundle import/export, pipeline sink/Ray runtime drift,utils/geometry.py,uv.lock, and committedgraphify-outchurn.Focused verification completed:
PYTHONDONTWRITEBYTECODE=1 prml-vslam-worktree-env run pytest tests/test_record3d_dataset.py tests/test_tum_rgbd.py tests/test_advio.py tests/test_advio_page.py tests/test_app.py tests/test_cli.py tests/test_main.py tests/test_source_runtime.pymake cimake graphify-rebuildgit diff --check origin/feature/extend-trajectory-evaluation..HEADuv.lock,graphify-out,src/prml_vslam/utils/geometry.py, W&B, sweeps/run orchestration, run-bundle import/export, pipeline sinks/Ray runtime, and unrelated trajectory-eval service renamesWork Packages
sources/datasets/normalized_store.py,normalized_tables.py,batch_normalization.py,dataset_query.pysources/datasets/record3d/*,tests/test_record3d_dataset.pysources/config.py,pipeline/config.py,main.py,eval/stage_cloud_alignment/config.pyapp/pages/datasets.py,app/models.py,app/services.py,app/bootstrap.pytests/test_advio.py,tests/test_tum_rgbd.py, docs/README surfacesWP1 — Normalized Dataset Store
Scope
.data/<dataset>/.normalized/<sequence>/<profile-key>/with manifests, observation tables, depth/stat sidecars, benchmark inputs, and queryable metadata.Key files
src/prml_vslam/sources/datasets/normalized_store.pysrc/prml_vslam/sources/datasets/normalized_tables.pysrc/prml_vslam/sources/datasets/batch_normalization.pysrc/prml_vslam/sources/dataset_query.py.configs/datasets/normalize-benchmark.tomlInitial success criteria resolution
normalized dataset store core is replayed without unrelated orchestration:resolvedstore entries are queryable and tamper-checked:resolvedADVIO/TUM timestamp and provenance behavior remains compatible:resolvedAPI/path mapping
.data/<dataset>/.normalized/<sequence>/<profile-key>/.prml-vslam dataset ....WP2 — Offline Record3D Dataset Package
Scope
.r3darchive cataloging, local archive discovery, checksum-aware downloads, metadata parsing, RGB/depth/confidence decoding, ARKit trajectory extraction, and reference-cloud materialization.sources/datasets/record3d/; live Record3D capture remains in the existing live transport source package.pyliblzfseoptional for synthetic tests while preserving an explicit runtime error for real.r3ddepth/confidence decoding when the package is absent.Key files
src/prml_vslam/sources/datasets/record3d/record3d_loading.pysrc/prml_vslam/sources/datasets/record3d/record3d_sequence.pysrc/prml_vslam/sources/datasets/record3d/record3d_service.pysrc/prml_vslam/sources/datasets/record3d/record3d_download.pytests/test_record3d_dataset.pyInitial success criteria resolution
Record3D dataset package is replayed from salvage patch:resolvedoffline Record3D stays distinct from live Record3D transport:resolvedmissing real LZFSE decoder is reported explicitly:resolvedAPI/path mapping
source_id = "record3d_dataset".record3d_dataset.record3d_lidar.WP3 — Source, Pipeline, and CLI Integration
Scope
setup_target()defaults raw-local and makes normalized-store replay explicit through normalized dataset workflows.Key files
src/prml_vslam/sources/config.pysrc/prml_vslam/sources/datasets/sources.pysrc/prml_vslam/pipeline/config.pysrc/prml_vslam/main.pysrc/prml_vslam/eval/stage_cloud_alignment/config.pyInitial success criteria resolution
minimal source/pipeline integration only:resolvedADVIO/TUM behavior-compatible:resolvedno W&B, sweeps, run orchestration, run-bundle, sink/Ray, or geometry drift:resolvedSymbol mapping
OfflineSequenceSource.labelis now a read-only property contract, matching dataset and streaming wrappers.Record3DDatasetSourceConfigis the offline archive source config;Record3DSourceConfigremains the live transport source config.WP4 — Streamlit Dataset UI
Scope
Key files
src/prml_vslam/app/pages/datasets.pysrc/prml_vslam/app/models.pysrc/prml_vslam/app/services.pysrc/prml_vslam/app/bootstrap.pysrc/prml_vslam/app/advio_controller.pyInitial success criteria resolution
Streamlit dataset UI supports Record3D and normalized store:resolvedADVIO/TUM form behavior stays compatible:resolvedmetrics page state remains compatible:resolvedWP5 — Compatibility, Docs, and Final Gates
Scope
graphify-outdiffs uncommitted.Key files
tests/test_advio.pytests/test_tum_rgbd.pytests/test_source_runtime.pytests/test_app.pysrc/prml_vslam/sources/README.mdsrc/prml_vslam/sources/datasets/README.mdInitial success criteria resolution
docs/tests replayed after salvage:resolvedfinal branch scope excludes forbidden surfaces:resolvedlocal final gate is green:resolvedRemaining follow-ups