Skip to content

jovan-AIcoder/SinusoidalNN

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SinusoidalNN

logo

A TensorFlow-based Sinusoidal Neural Network (SNN) for signal decomposition, spectral analysis, and signal reconstruction.


Overview

SinusoidalNN is a Python package that represents a signal as a trainable superposition of sinusoidal components.

Instead of using a conventional Fourier Transform, SinusoidalNN learns frequencies, amplitudes, and phase shifts directly through gradient descent using TensorFlow.

Signal representation:

y(t) = Σ Ai sin(2πfi t + φi)

where:

  • fi = learned frequency
  • Ai = learned amplitude
  • φi = learned phase shift

The package provides:

  • Signal fitting
  • Spectrum extraction
  • Signal reconstruction
  • Model saving and loading
  • Signal preprocessing
  • TensorFlow optimizer support

Installation

pip install sinusoidalnn

Try the Demo First

Before writing any code, it is recommended to explore the example project.

Inside the repository:

examples/

├── demo.py
├── signal_value.py
├── signal_original.csv

Run:

python demo.py

The demo will:

  1. Load a signal from CSV
  2. Train a SinusoidalNN model
  3. Save the trained model
  4. Extract the learned spectrum
  5. Plot the spectrum
  6. Reconstruct the signal
  7. Save the reconstructed signal

Generated files:

model_demo.h5

spectrum.csv
spectrum.png

signal_reconstructed.csv

signal_comparison.png

This is the fastest way to understand how SinusoidalNN works. To demonstrate loading model and print the signal value at arbitrary time, run signal_value.py instead.


Quick Start

Import Package

from sinusoidalnn import SNN

Load Signal

import pandas as pd

df = pd.read_csv("signal.csv")

t = df["Time"]
y = df["Signal"]

Create Model

snn = SNN(
    max_modes=10000,
    optimizer="adam",
    learning_rate=1e-5,
    verbose=1
)

Fit Signal

snn.fit_signal(
    t,
    y,
    epochs=256
)

Extract Spectrum

spectrum = snn.return_spectrum()

Example:

   Frequencies  Phase shift  Amplitudes
0      49.99       0.12        0.998
1     120.03      -0.31        0.502
...

Reconstruct Signal

signal = snn.reconstruct_signal(
    duration=1.0,
    sample_rate=1000
)

Example Output:

       Time    Signal
0    0.0000   0.0123
1    0.0010   0.5234
...

Save Model

snn.save_model(
    "my_model.h5"
)

Load Model

snn.load_SNN_model(
    "my_model.h5"
)

Return Signal Value at Arbitrary Time

snn.signal_value(
    [[2.5]]
)

Signal Preprocessing

Baseline Removal

from sinusoidalnn import zeroing_baseline

y = zeroing_baseline(y)

Removes DC offset from a signal by subtracting its mean value.


Supported Optimizers

SinusoidalNN supports:

  • SGD
  • RMSprop
  • Adam
  • AdamW
  • Adagrad
  • Adadelta
  • Adamax
  • Nadam
  • FTRL

Example:

snn = SNN(
    optimizer="adamw"
)

API Reference

SNN

SNN(
    max_modes=10000,
    use_phase_shift=True,
    optimizer="adam",
    learning_rate=1e-4,
    verbose=2
)

fit_signal

fit_signal(
    t,
    y,
    epochs=256
)

Train the model on a signal.


return_spectrum

return_spectrum(
    positive_freqs_only=True,
    abs_amplitudes=True
)

Extract learned frequencies, amplitudes, and phase shifts.


reconstruct_signal

reconstruct_signal(
    duration=5.0,
    sample_rate=44100
)

Generate a reconstructed signal using the learned sinusoidal representation.


save_model

save_model(path)

Save the TensorFlow model.


load_SNN_model

load_SNN_model(path)

Load a previously saved model.

signal_value

snn.signal_value(
    [[2.5]]
)

Returns signal value at arbitrary time.


Dependencies

  • TensorFlow
  • NumPy
  • Pandas
  • Matplotlib

License

MIT License


Repository

https://github.com/jovan-AIcoder/SinusoidalNN


Author

Jovan


Citation

If you use SinusoidalNN in research, academic work, scientific reports, or publications, please cite the repository and acknowledge the package appropriately.

About

A TensorFlow-based Sinusoidal Neural Network (SNN) for signal decomposition, spectral analysis, and signal reconstruction.

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages