Pattern Extraction and Periodicity analysis,and commnunication multiple method library based on BEDCMM
Project description
bedcmm
Open Implementation of Patented Algorithm (Japan Patent)
This repository provides an open implementation of the "Base Extraction Division Minimum Method," which is registered as a patent in Japan.
- This implementation is intended for research, verification, and evaluation purposes.
- Commercial use or redistribution requires obtaining a license (see below).
bedcmm is a library for robust periodicity, pattern extraction, and communication multiplexing based on a patented method.
Features
A robust algorithm for pattern extraction and periodicity analysis, designed to remain stable under outliers and impulsive noise.
-
Quantitative pattern extraction
-
Quantitative periodicity calculation
- Applied to pitch detection robust to impulsive (spike) noise
https://github.com/YASUHARA-Wataru/bedcmmPitch - Periodicity analysis robust to outliers
(example_temperature_period_ana.py) - Support for missing values (NaN)
- Periodicity can be computed directly without interpolation or preprocessing
- Outputs the valid data ratio (
valid_ratio) as a measure of reliability - Shows behavior similar to autocorrelation on complete data, while remaining applicable to datasets with missing values
- Applied to pitch detection robust to impulsive (spike) noise
-
Quantitative continuity calculation
-
Multiplexing communication using shorter sequences than M-sequences and only 1-bit quantization.However, synchronization is required(only send), randomness is not guaranteed, and signal-to-noise ratio (SNR) is not improved.
-
Cross-periodicity analysis (not part of the core patented claims)
- A method for comparing periodic structures between signals, analogous to the relationship between autocorrelation and cross-correlation
Note: When the same signal is provided as both inputs, the result corresponds to auto-periodicity.
Install
pip install bedcmm
Example
- pattern
import numpy as np
import bedcmm
np.random.seed(0)
# 周期 + ノイズ
base = np.tile([1, 0, 0, 0], 25)
noise = np.random.randint(0, 2, len(base)) * 0.1
x = base + noise
score = bedcmm.pattern.periodicity(x)
print("periodicity score:", score)
- communication
import numpy as np
import bedcmm
base1 = [False, False, False, False, False, True, True, True]
base2 = [False, False, False, True, False, False, True, True]
base3 = [False, True, False, False, False, False, True, True]
tx1 = np.tile(base1, 5)
tx2 = np.tile(base2, 5)
tx3 = np.tile(base3, 5)
tx = np.array([tx1,tx2,tx3])
send_signal = bedcmm.communication.multiplexing(tx)
print(send_signal)
demod_signal1 = bedcmm.communication.demodulate(send_signal,base1)
demod_signal2 = bedcmm.communication.demodulate(send_signal,base2)
demod_signal3 = bedcmm.communication.demodulate(send_signal,base3)
print("demod_signal1:", demod_signal1)
print("demod_signal2:", demod_signal2)
print("demod_signal3", demod_signal3)
Demo
By running pattern_demo.ipynb and communication_demo.ipynb, you can obtain simple sample results:
A brief explanation is available in the doc directory.
How to run faster
python setup.py build_ext --inplace
Run with Cython (pattern modules)
Calculation speed
The benchmark script is speed_test.py.
Cython
mode N time_msec
0 random 1000 2.6160
1 random 5000 61.1024
2 random 10000 245.1453
3 periodic 1000 1.2297
4 periodic 5000 28.6166
5 periodic 10000 110.1707
6 spike 1000 1.3126
7 spike 5000 27.9070
8 spike 10000 113.7231
Python only
mode N time_msec
0 random 1000 188.5421
1 random 5000 4593.9274
2 random 10000 19079.0753
3 periodic 1000 196.6179
4 periodic 5000 4723.4922
5 periodic 10000 18833.8787
6 spike 1000 206.1020
7 spike 5000 4802.0938
8 spike 10000 19601.9191
Patent Information
This algorithm is based on the following Japanese patent:
- Patent Number: JP Patent No. 7537807
- Title: Pattern Extraction and Communication Multiplexing Method
- Registration Date: August 13, 2024
- Summary: Methods for pattern extraction, periodicity calculation, continuity calculation, and communication multiplexing.
Scope of Patent and Non-Patented Implementations
This repository contains both implementations covered by the patent and independent auxiliary or extended implementations.
-
Patent-covered components:
- Core algorithm for pattern extraction and periodicity analysis based on the Base Extraction Division Minimum Method
-
Extended implementations:
- Handling of missing values (NaN)
-
Non-patented implementations:
- Cross-periodicity analysis (e.g.,
cross_periodicityand related functions)
- Cross-periodicity analysis (e.g.,
The applicability of the patent may depend on the specific use case and implementation details.
Contact
fapow.contact[at]gmail.com
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bedcmm-2.42.tar.gz.
File metadata
- Download URL: bedcmm-2.42.tar.gz
- Upload date:
- Size: 228.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
983d9f61b91669715474597eb7baab3ae49ef562663bf4ae553ea91549b7bc31
|
|
| MD5 |
3701d0ce4f21a841f7aeb1686a9fcd0f
|
|
| BLAKE2b-256 |
82d5f84a5abb8ed97501ae3772d58eaf015c379242f8e599f2633b08b09bd64a
|
File details
Details for the file bedcmm-2.42-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: bedcmm-2.42-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 332.0 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f9e0755e3f98c25d1c6d74eb5ea87f38aabee9e244795290f54329ba4c07ae3f
|
|
| MD5 |
8b95b37b57596bc56afafd26d07ed1e8
|
|
| BLAKE2b-256 |
b19f6c398b045cf90a3989bd6582e550b7d1cb8307449c0dc23d3f2ded51b557
|