Skip to main content

micromotion

tests docs PyPI Python License

A Python package for measuring human micromotion: the small movement of a body that is standing, sitting or otherwise trying to stay still. It reads optical marker data, body-worn accelerometers, respiration belts and force plates, and reduces all of them to one measure.

That measure is quantity of motion—the average speed of a body part, band-limited to 0.2–5 Hz, in millimetres per second. It can be computed from every sensor family, because the shared abstraction is the frequency band rather than the instrument.

Band-limited speed of a synthetic head marker, with the median, the mean, and the same series in five-second bins

Install

pip install micromotion

Python 3.10 or newer, with numpy, scipy and pandas. There is no computer-vision or audio stack to install.

Quickstart

import micromotion as mm

rec = mm.read("mocap_data/A0001.tsv")      # dispatches on content, not on the extension
head = rec.marker("P01")                   # (n_samples, 3), gaps already NaN
result = mm.qom(head, rec.fs, kind="position", unit=rec.unit)

print(result.median_mm_s, result.mean_mm_s)

Report the median, and say that it is the median. The mean and the median can rank the same recordings differently, so both are returned and neither is chosen for the caller.

Do not name a local variable mm. The conventional alias collides with a mean and with a value in millimetres, and rebinding it replaces the package for the rest of the file.

Documentation

Reference documentation how to use it, every function, the conventions
Wiki traps, worked recipes, design decisions
Changelog what changed between releases

Read Getting started first, then The three bands, which is the one convention that cannot be skipped. Reading files covers what each reader handles, which axis is vertical in which system, and the traps that produce plausible numbers rather than errors.

What is in it

Module Contents
qom quantity of motion from position or acceleration, in three named variants
filters the band definitions—BAND, WIDEBAND, OPTICAL_LEGACY_BAND—with band-pass, low-pass, high-pass and notch
resample rate measurement, downsample-only resampling, irregular-to-regular gridding, gap handling
io one reader per file layout, a content sniffer, and the per-channel rate and resolution checks
record MotionRecord, the common type every reader returns
validate checks that fail loudly on silently-wrong data
posture, balance sway geometry, spatial extent, centre-of-pressure measures
spectral, physio cardiac and respiratory peaks, band power, breathing rate and breath phase
dynamics detrended fluctuation analysis, multifractality, recurrence, entropy, surrogates
group whether several people moved at the same moments
align offsets between instruments that share no clock
circular directional statistics, including the axial tests postural sway needs
features feature_vector, one fixed set of eleven descriptors per recording
equivalence stating that an effect is absent rather than failing to show it is present
descriptors how many independent dimensions a descriptor set holds, and whether a measure is a trait

Readers: Qualisys and Qualisys-style TSV in all three header shapes, Sverm, Axivity AX3, Physics Toolbox phone logs, Equivital, Wii balance board, and Artinis fNIRS. read dispatches on content rather than on extension, because in this field the extension is frequently wrong.

Licence and credit

GPL-3.0-or-later. Built at the fourMs lab, RITMO Centre for Interdisciplinary Studies in Rhythm, Time and Motion, University of Oslo. If you use the package, please cite it—see CITATION.cff—and cite the underlying methods too, since the Methods page gives a reference for each.

Issues and pull requests are welcome at fourMs/micromotion. A case where a default here gives a misleading answer is the most useful kind of issue to file.

Related toolboxes

These come out of the same lab, as separate packages with separate release cycles. They are built to be used together and share several implementations, so a measure computed in one agrees with the same measure computed in another.

  • Musical Gestures Toolbox (musicalgestures)—video and audio: motiongrams, videograms, and motion analysis from ordinary video files
  • ambiscape—soundscapes: the sonic ambience of a place, across level, spectral, spatial, temporal, ecological and source descriptors
  • musiscape—music collections: comparing many tracks and albums held as audio files in folders

Download files

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

Source Distribution

micromotion-1.2.1.tar.gz (307.3 kB view details)

Uploaded Source

Built Distribution

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

micromotion-1.2.1-py3-none-any.whl (110.1 kB view details)

Uploaded Python 3

File details

Details for the file micromotion-1.2.1.tar.gz.

File metadata

  • Download URL: micromotion-1.2.1.tar.gz
  • Upload date:
  • Size: 307.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for micromotion-1.2.1.tar.gz
Algorithm Hash digest
SHA256 3bb97e88bee4e7434c60e69f4ba2bf37fe53506d3bac071f388b60188c10ed30
MD5 495fdb1b3ffa50e862c1bdf0d42b2ac1
BLAKE2b-256 fc0f9200df8072e2652d59a04842c8430c1d4e5e973a04e91464cc52673d1b0e

See more details on using hashes here.

Provenance

The following attestation bundles were made for micromotion-1.2.1.tar.gz:

Publisher: publish.yml on fourMs/micromotion

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file micromotion-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: micromotion-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 110.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for micromotion-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 793cb4d9dc762f0ebb1858ec845e0c19b4515c6a60364a3012dde30344ae6e01
MD5 e431f84c9a66a30ec1cc028c77741647
BLAKE2b-256 f03fc0e37bd72ab337f8294dcd2a64db00b6690581f7500a6e276dff0f7eca38

See more details on using hashes here.

Provenance

The following attestation bundles were made for micromotion-1.2.1-py3-none-any.whl:

Publisher: publish.yml on fourMs/micromotion

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

1.15.0

2 files

1.14.0

2 files

1.13.0

2 files

1.12.2

2 files

1.12.1

2 files

1.12.0

2 files

1.10.0

2 files

1.9.0

2 files

1.8.0

2 files

This release

1.2.1 This release

2 files

1.2.0

2 files

1.0.0

2 files

0.15.2

2 files

0.15.1

2 files

0.15.0

2 files

0.14.1

2 files

0.14.0

2 files

0.13.0

2 files

0.12.4

2 files

0.12.3

2 files

0.8.3

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.0

2 files

0.6.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page