Repository navigation
Conversation
Co-authored-by: Mateusz Sadowski <msadowski@users.noreply.github.com>
…ader - Two-pass loading (headers, then one series of pixels at a time) keeps peak WASM memory ~130 MB for the chest CT and ~95 MB for the 750 MB 4D study - Precomputed timeline of encoded messages drives create_iter and backfill - 4D-Lung study S300 (142 slices/phase) keeps the diaphragm in view - Tests decode with prost; tests and smoke script read data/chest and data/breathing - Smoke script implements the full WIT reader resource Co-authored-by: Mateusz Sadowski <msadowski@users.noreply.github.com>
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.
Adds
foxglove_sdk/dicom_data_loader: a Foxglove data loader extension (Rust compiled to WASM) that opens folders of uncompressed DICOM.dcmfiles directly in Foxglove. It needs no MCAP conversion and no custom panel. It registers.dcmwithsupportsMultiFile: true, so a whole series is selected at once.Navigation uses the Foxglove timeline, not a slice slider:
/dicom/stats.lung_volume_mltraces the breathing curve (about 4.0–4.8 L).These images are decoded from the loader's
RawImageoutput when the built.wasmruns outside Foxglove.How it works
create_iteris apartition_pointplus a channel filter.get_backfillreturns the latest message per channel.RawImages (lung window, with coronal and sagittal resampled to square pixels);ImageAnnotations; bone, lung, and slicePointClouds; aSceneUpdatebounding box;FrameTransforms; custom stats; and a metadata message with no patient identifiers.wasm-tools+jco) that runs the built loader in Node.Verification
cargo fmt --check,cargo clippy --target wasm32-unknown-unknown --all-targets -D warnings, release WASM buildcargo test --release: runs against both sample datasets; the dataset tests skip when the data is absentnode scripts/wasm_smoke.mjs: both datasets, with ordered log times, per-channel counts, backfill, and preview imagesnpm run lint:ci,npm run package(writes the.foxe), and.utils/generate_readme.py(root README regenerated)I have not tested it inside the Foxglove app itself, because that needs a signed-in Foxglove session.
To show artifacts inline, enable in settings.