Skip to main content

oma-python

Open-source Operational Modal Analysis (OMA) algorithms for Python. Estimate natural frequencies, damping ratios, and mode shapes from ambient vibration measurements.

Install the distribution as oma-python; import the library as dynoma.

Install

pip install oma-python

For local development with uv:

uv sync --group dev

Quick start (FDD)

Frequency Domain Decomposition on a synthetic multi-channel signal:

import numpy as np
from dynoma import FDD

rng = np.random.default_rng(0)
fs = 100.0  # Hz
t = np.arange(0, 40, 1 / fs)

# Ambient-like response on 3 channels (modes near 2.5 Hz and 6.0 Hz)
signal = np.column_stack(
    [
        np.sin(2 * np.pi * 2.5 * t) + 0.4 * np.sin(2 * np.pi * 6.0 * t),
        0.8 * np.sin(2 * np.pi * 2.5 * t + 0.2) + np.sin(2 * np.pi * 6.0 * t),
        0.5 * np.sin(2 * np.pi * 2.5 * t) + 0.7 * np.sin(2 * np.pi * 6.0 * t + 0.1),
    ]
)
signal += 0.05 * rng.standard_normal(signal.shape)

fdd = FDD(
    frequency_min=0.0,
    frequency_max=20.0,
    number_of_fft_points=512,
    num_svd_plots=3,
)

# Optional: inspect SVD lines before picking peaks
frequencies, eigenvalues, eigenvectors = fdd.compute_signal_svd(
    signal=signal,
    sampling_frequency=fs,
)

# Results are TypedDict mappings (use bracket access)
results = fdd.apply(
    signal=signal,
    sampling_frequency=fs,
    peaks_range=[[2.0, 3.0], [5.5, 6.5]],
)

print(results["frequencies"])       # ~2.54 Hz, ~6.05 Hz
print(results["complex_mode_shapes"].shape)  # (n_channels, n_modes)
print(results["real_mode_shapes"].shape)

Covariance SSI

from dynoma import CovSSI

cov_ssi = CovSSI(
    frequency_min=0.0,
    frequency_max=20.0,
    order_min=20,
    order_max=40,
    order_steps=2,
    time_lag=1.2,
    number_of_fft_points=256,
    num_svd_plots=3,
    continuous_mode=True,
)

results, dashboard = cov_ssi.apply(
    signal=signal,
    sampling_frequency=fs,
    optimized=True,
    shuffle=False,
)

print(results["frequencies"])
print(results["damping_ratios"])  # percent scale
# dashboard is None when continuous_mode=True

Public API

from dynoma import FDD, CovSSI, OmaAlgorithm, ModalIdentificationError, __version__
Symbol Role
FDD Frequency Domain Decomposition
CovSSI Covariance-driven Stochastic Subspace Identification
OmaAlgorithm Shared CSD / SVD base (usually subclassed)
ModalIdentificationError Domain errors from validation / identification

Signal layout is (n_samples, n_channels).

Requirements

  • Python ≥ 3.10
  • NumPy, SciPy, Pydantic, PyTorch

CPU-only PyTorch wheels are preferred for development (uv is configured for the official CPU index).

License

MIT — see LICENSE.

Metadata

Release files for oma-python 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for oma-python 0.1.0
File Size Uploaded Provenance Actions
oma_python-0.1.0.tar.gz 32.6 kB With provenance Details for oma_python-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for oma-python 0.1.0
File Interpreter ABI Platform Actions
oma_python-0.1.0-py3-none-any.whl Python 3 none any Details for oma_python-0.1.0-py3-none-any.whl

Total release size: 55.7 kB

Release files / oma_python-0.1.0.tar.gz

Download URL oma_python-0.1.0.tar.gz
Size 32.6 kB
Tags Source
SHA-256 checksum
How to use checksums
21e80039bce9cd44c7482140871589fa303f7fb6c439c7c96397900a1c999a20
BLAKE2b-256 checksum
How to use checksums
943739dc6cba6cf663402214ab819f9c9ae1a2ef3622e5f534bb5c9f7310f49e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / oma_python-0.1.0-py3-none-any.whl

Download URL oma_python-0.1.0-py3-none-any.whl
Size 23.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a60026b1aa5e328abd22c0554db8c41e67c29e909ca8140413665c4f83c00d93
BLAKE2b-256 checksum
How to use checksums
98a6e28ac1ea992a5a7f8b84ec7e7b9238f58fa969dc1a4b4fa36d9851b22350
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Security for oma-python 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for oma_python-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

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