Skip to main content

Better, drop in replacement of vmdpy

Project description

vmdrs-py

Drop in replacement for vmdpy with fixes and improvements using the vmd-rs Rust crate.

VMD, aka Variational Mode Decomposition, is a signal processing tool that decompse the input signal into different band-limited IMFs.

Installation

Available on PyPI

pip install --upgrade vmdrs-py

Requirements

numpy>=1.20

Examples

#%% Simple example: generate signal with 3 components + noise  
import numpy as np  
import matplotlib.pyplot as plt  
from vmdrs_py import VMD  

#. Time Domain 0 to T  
T = 1000  
fs = 1/T  
t = np.arange(1,T+1)/T  
freqs = 2*np.pi*(t-0.5-fs)/(fs)  

#. center frequencies of components  
f_1 = 2  
f_2 = 24  
f_3 = 288  

#. modes  
v_1 = (np.cos(2*np.pi*f_1*t))  
v_2 = 1/4*(np.cos(2*np.pi*f_2*t))  
v_3 = 1/16*(np.cos(2*np.pi*f_3*t))  

f = v_1 + v_2 + v_3 + 0.1*np.random.randn(v_1.size)  

#. some sample parameters for VMD  
alpha = 2000       # moderate bandwidth constraint  
tau = 0.            # noise-tolerance (no strict fidelity enforcement)  
K = 3              # 3 modes  
DC = 0             # no DC part imposed  
init = 1           # initialize omegas uniformly  
tol = 1e-7  


#. Run VMD 
u, u_hat, omega = VMD(f, alpha, tau, K, DC, init, tol)  

#. Visualize decomposed modes
plt.figure()
plt.subplot(2,1,1)
plt.plot(f)
plt.title('Original signal')
plt.xlabel('time (s)')
plt.subplot(2,1,2)
plt.plot(u.T)
plt.title('Decomposed modes')
plt.xlabel('time (s)')
plt.legend(['Mode %d'%m_i for m_i in range(u.shape[0])])
plt.tight_layout()

Compiling from source

Requirements

  1. Python >= 3.7
  2. Rustc

Instructions

Rust compiler is needed since this project is compiled using Maturin.

pip install maturin
git clone https://github.com/jiafuei/vmdrs-py.git && cd vmdrs-py
maturin build --release

Customizing BLAS providers

BLAS is used by ndarray, follow the instructions there and edit Cargo.toml.

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

vmdrs_py-0.3.0.tar.gz (22.8 kB view hashes)

Uploaded Source

Built Distributions

vmdrs_py-0.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl (5.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.28+ x86-64

vmdrs_py-0.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl (2.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.28+ ARM64

vmdrs_py-0.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl (5.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.28+ x86-64

vmdrs_py-0.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl (2.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.28+ ARM64

vmdrs_py-0.3.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl (5.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.28+ x86-64

vmdrs_py-0.3.0-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl (2.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.28+ ARM64

vmdrs_py-0.3.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl (5.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.28+ x86-64

vmdrs_py-0.3.0-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl (2.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.28+ ARM64

vmdrs_py-0.3.0-cp313-cp313-manylinux_2_28_aarch64.whl (2.1 MB view hashes)

Uploaded CPython 3.13 manylinux: glibc 2.28+ ARM64

vmdrs_py-0.3.0-cp312-none-win_amd64.whl (451.0 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

vmdrs_py-0.3.0-cp312-cp312-manylinux_2_28_x86_64.whl (5.0 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.28+ x86-64

vmdrs_py-0.3.0-cp312-cp312-manylinux_2_28_aarch64.whl (2.1 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.28+ ARM64

vmdrs_py-0.3.0-cp312-cp312-macosx_11_0_arm64.whl (447.5 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

vmdrs_py-0.3.0-cp312-cp312-macosx_10_12_x86_64.whl (537.9 kB view hashes)

Uploaded CPython 3.12 macOS 10.12+ x86-64

vmdrs_py-0.3.0-cp311-none-win_amd64.whl (452.6 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

vmdrs_py-0.3.0-cp311-cp311-manylinux_2_28_x86_64.whl (5.0 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

vmdrs_py-0.3.0-cp311-cp311-manylinux_2_28_aarch64.whl (2.1 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

vmdrs_py-0.3.0-cp311-cp311-macosx_11_0_arm64.whl (450.0 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

vmdrs_py-0.3.0-cp311-cp311-macosx_10_12_x86_64.whl (541.0 kB view hashes)

Uploaded CPython 3.11 macOS 10.12+ x86-64

vmdrs_py-0.3.0-cp310-none-win_amd64.whl (452.6 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

vmdrs_py-0.3.0-cp310-cp310-manylinux_2_28_x86_64.whl (5.0 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

vmdrs_py-0.3.0-cp310-cp310-manylinux_2_28_aarch64.whl (2.1 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

vmdrs_py-0.3.0-cp39-none-win_amd64.whl (452.6 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

vmdrs_py-0.3.0-cp39-cp39-manylinux_2_28_x86_64.whl (5.0 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

vmdrs_py-0.3.0-cp39-cp39-manylinux_2_28_aarch64.whl (2.1 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

vmdrs_py-0.3.0-cp38-none-win_amd64.whl (452.4 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

vmdrs_py-0.3.0-cp38-cp38-manylinux_2_28_x86_64.whl (5.0 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

vmdrs_py-0.3.0-cp38-cp38-manylinux_2_28_aarch64.whl (2.1 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

vmdrs_py-0.3.0-cp37-none-win_amd64.whl (452.4 kB view hashes)

Uploaded CPython 3.7 Windows x86-64

vmdrs_py-0.3.0-cp37-cp37m-manylinux_2_28_x86_64.whl (5.0 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.28+ x86-64

vmdrs_py-0.3.0-cp37-cp37m-manylinux_2_28_aarch64.whl (2.1 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.28+ ARM64

Supported by

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