Skip to main content

IMU data QA, reliability scoring, and reproducibility tooling

Project description

imuops

imuops is a public alpha for IMU data QA, reliability scoring, and reproducibility.

It is built around one core question:

Is this IMU data trustworthy, why is it failing, and how does that affect baseline algorithms?

The product is intentionally tabular-first. The main path is customer-shaped csv, tsv, or parquet data plus a small YAML mapping file. Benchmark adapters stay in the repo for reproducibility demos, but they are secondary to the tabular workflow.

Status

  • alpha / preview release
  • current release line: v0.4.0
  • main product path: tabular
  • benchmark/demo adapters: ronin, oxiod, wisdm
  • local-only contrib adapter: legacy_arduino

Benchmark adapters are validated on fixtures and demo flows. They are not guaranteed across every upstream packaging or layout variant.

Install

Requires Python 3.11+.

Primary public path:

python3.12 -m venv .venv
source .venv/bin/activate
pip install .

Use any Python 3.11+ interpreter available on your machine.

Optional uv path:

uv venv
source .venv/bin/activate
uv pip install .

Maintainer-side validation in this workspace uses the dl conda environment, but public users should still prefer a clean venv install path.

Quickstart

After install, the offline first-run path is exactly three commands:

imuops ingest tabular examples/sample_tabular_imu.csv --config examples/sample_tabular_config.yaml --out output/sample_tabular_demo
imuops audit output/sample_tabular_demo --summary-format markdown
imuops report output/sample_tabular_demo --out output/sample_tabular_demo/report.html

You can also use the bundled demo wrapper:

bash examples/run_tabular_demo.sh

What It Does

  • normalizes messy IMU tables into one canonical session format
  • audits timing, clipping, dropout, magnetic disturbance, bias drift, and related issues
  • computes a versioned trust_score with explicit penalties, weights, and thresholds
  • replays conservative baseline algorithms for orientation and PDR reproducibility
  • benchmarks task-aware baselines where labels or trajectories exist
  • compares clean vs corrupted or before vs after sessions
  • batches QA over many sessions and writes machine-readable summaries for CI use
  • streams tabular ingest and export through canonical Parquet so large sessions do not need to fit in RAM end to end

Core Commands

imuops ingest tabular /path/to/session.csv --config /path/to/mapping.yaml --out output/session_a
imuops audit output/session_a --fail-below 0.80 --summary-format markdown
imuops export output/session_a --profile qa_filtered --format parquet --out output/session_a_clean
imuops compare output/session_a output/session_b --out output/compare.html --json-out output/compare.json --fail-on regression
imuops batch audit output --out output/batch_artifacts
imuops batch validate-trustscore output --out output/trustscore_batch

GitHub Action

imuops now ships a reusable GitHub Action from this repo:

- uses: weiping-ni/imuops@v0.4.0
  with:
    data_glob: data/**/*.csv
    tabular_config: examples/sample_tabular_config.yaml
    report_dir: output/pr_review
    comment_mode: summary

The action emits:

  • trust_score
  • status
  • summary_json
  • report_html
  • compare_json
  • comment_markdown

See .github/workflows/pr_tabular_review.yml for a sample PR workflow.

Included Adapters

Market-facing default

  • tabular: customer-shaped csv, tsv, and parquet sources with YAML mapping and unit conversion

Benchmark/demo adapters

  • ronin: clean inertial odometry benchmark sessions
  • oxiod: clean handheld / phone inertial odometry benchmark sessions
  • wisdm: lightweight HAR benchmark sessions

Contrib/local regression

  • legacy_arduino: historical Arduino/MPU9255 adapter kept only for local regression and examples

Trust Score

imuops publishes the trust-score contract directly into artifacts and reports:

  • per-window formula
  • session aggregation formula
  • penalty totals
  • weight profile
  • thresholds

That is documented in docs/trustscore.md, and the current validation tranche is in docs/trustscore_validation.md.

What This Release Is

  • a tabular-first IMU QA tool that new users can install and run without hand-holding
  • a machine-readable trust-score and compare/batch workflow for CI use
  • an alpha release with release-level validation artifacts and explicit known limitations

What This Release Is Not

  • a claim of deployment-grade calibration across every device or dataset
  • unbounded replay or benchmark support for arbitrarily large sessions
  • a promise that every benchmark adapter variant in the wild is supported

Docs

Public Alpha Notes

  • This repo is a truthful alpha, not a commercial deployment claim.
  • Reports support --redact-source-path and --redact-subject-id for safer sharing.
  • Output quality is strongest for tabular customer data and fixture/demo benchmark layouts.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

imuops-0.4.0.tar.gz (74.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

imuops-0.4.0-py3-none-any.whl (61.0 kB view details)

Uploaded Python 3

File details

Details for the file imuops-0.4.0.tar.gz.

File metadata

  • Download URL: imuops-0.4.0.tar.gz
  • Upload date:
  • Size: 74.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for imuops-0.4.0.tar.gz
Algorithm Hash digest
SHA256 8da06fed63414b949fc75f5650672ae41f07649708d675a02b062584b4bb3467
MD5 c68f41bd8e4bf204fbd32f3c7dab2fd0
BLAKE2b-256 8b5d6666ae0644e39e1dcd70baf43f55a9fdf4b6d48aee64407cb8dbbedde7f8

See more details on using hashes here.

File details

Details for the file imuops-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: imuops-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 61.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for imuops-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c2ed89ae9686472270f6049703979b71860a55e41e22983b442e703c84c2b4ba
MD5 a2ba90fc51abe3f5f7467944dccf0bbf
BLAKE2b-256 539ab697c387d694d27627c378d1266ee979eb52ea48f9f9e55e6145265eb14b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page