Skip to main content

bedcmm

CI PyPI version Python Versions

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
  • 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_periodicity and related functions)

The applicability of the patent may depend on the specific use case and implementation details.

Contact

fapow.contact[at]gmail.com

Metadata

Release files for bedcmm 2.43

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

Source distribution (sdist)

Source distribution for bedcmm 2.43
File Size Uploaded
bedcmm-2.43.tar.gz 227.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bedcmm 2.43
File Interpreter ABI Platform
bedcmm-2.43-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details

Total release size: 338.0 kB

Release files / bedcmm-2.43.tar.gz

Download URL bedcmm-2.43.tar.gz
Size 227.0 kB
Tags Source
SHA-256 checksum
How to use checksums
15dddc6e2cba08079dc151d0a77272d38d92b4b700999e806c093e0e448ac41e
BLAKE2b-256 checksum
How to use checksums
ecbfd3c15bb8f6e097239b35d7c77b1c7363fee22a9308427627c13cb59ca71e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release files / bedcmm-2.43-cp311-cp311-win_amd64.whl

Download URL bedcmm-2.43-cp311-cp311-win_amd64.whl
Size 111.0 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
044675d4f61acde0e003c04fcbdda31270d10864589c2d720b8d491035dbddc1
BLAKE2b-256 checksum
How to use checksums
817c197cbbb317ca3831a3d3d3aa9b41b3fdbf50248e5b53fbc7dbcb87f56ee3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release history Release notifications | RSS feed

This release

2.43 This release

2 release files

2.42

2 release files

2.41

2 release files

2.40

2 release 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