Skip to main content

SignalForge

See the structure in any data, across every scale, instantly.

Install

For the CLI:

pipx install adelic-signalforge
# or, if you have uv:
uv tool install adelic-signalforge

For library use in your own project:

python -m venv .venv && source .venv/bin/activate
pip install adelic-signalforge

Quick Start

# Download sample data (VIX volatility index, 2005-2012)
curl -o vix.csv "https://fred.stlouisfed.org/graph/fredgraph.csv?id=VIXCLS&cosd=2005-01-01&coed=2012-12-31"

# See the structure
sf surface vix.csv -hm --max-window 360

VIX heatmap

The 2008 financial crisis — visible across every scale at once.

Your data

sf schema mydata.csv                                 # see what it inferred
sf schema mydata.csv --save mydata.schema.json       # save it (correct overrides first if needed)
sf surface mydata.csv --schema mydata.schema.json -hm

Any CSV works. Multi-column, multi-channel, per-entity — sf schema figures it out.

Explore

sf surface data.csv -hm --baseline ewma --residual z    # what's anomalous?
sf surface data.csv -hm --start-date 2008-01 --end-date 2009-06  # zoom in
sf inspect ewma                                          # how does this work?
sf inspect                                               # what's available?

The CLI suggests what to try next. Every output leads somewhere.

Python API

import signalforge as sf

surfaces = (
    sf.load("data.csv")
    .measure(windows=[10, 60, 360])
    .baseline("ewma", alpha=0.1)
    .residual("z")
    .surfaces()
)

For branching and merging — multiple baselines, stacked features:

from signalforge.graph import Input, Measure, Baseline, Residual, Stack, Pipeline

x = Input()
m = Measure()(x)
bl = Baseline("ewma", alpha=0.1)(m)
r = Residual("z")(m, bl)
features = Stack()([m, r])
pipe = Pipeline(x, features)
result = pipe.run(records, windows=[10, 60, 360])

Custom aggregations

Each surface cell reduces a window to a number — by default a mean. SF ships with 20+ aggregations (mean, std, percentiles, spectral energy, dominant frequency, Shannon entropy, ...) and you can add your own:

from signalforge.pipeline.aggregation import register_aggregation

@register_aggregation("iqr")
def iqr(values):
    return float(np.percentile(values, 75) - np.percentile(values, 25))

Across domains

The same pipeline processes financial data, EEG brain recordings, satellite gravity measurements, and generic time series — unchanged.

EEG phase coherence

EEG seizure detection: the top panels show amplitude, the bottom panels show phase relationships between brain hemispheres. The seizure disrupts both — but the phase change is only visible with complex-valued analysis.

Documentation

Quick Start Zero to heatmap
Your Data Bring your own data
CLI All commands
Python API Chaining and DAG
Examples VIX, EEG, GRACE, INTERMAGNET
Concepts How it works
Comparison vs STFT, wavelets, EMD

License

Business Source License 1.1. See LICENSE.

Free for non-commercial use. Commercial use requires a license from Adelic — contact shun.honda@adelic.org. Converts to Apache 2.0 on 2029-03-22.

Metadata

Release files for adelic-signalforge 0.4.2

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

Source distribution (sdist)

Source distribution for adelic-signalforge 0.4.2
File Size Uploaded Provenance
adelic_signalforge-0.4.2.tar.gz 15.1 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for adelic-signalforge 0.4.2
File Interpreter ABI Platform
adelic_signalforge-0.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 15.2 MB

Release files / adelic_signalforge-0.4.2.tar.gz

Download URL adelic_signalforge-0.4.2.tar.gz
Size 15.1 MB
Tags Source
SHA-256 checksum
How to use checksums
6242a019ffe13f9fc1eafc4993685d543d7429d0059cbe04576475ab8d3fd9c7
BLAKE2b-256 checksum
How to use checksums
5728e15b52091839d56c398783742ae7a8b04e46c121611cc93e317e0f25932a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.0

Release files / adelic_signalforge-0.4.2-py3-none-any.whl

Download URL adelic_signalforge-0.4.2-py3-none-any.whl
Size 127.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7e0c7631939bdad9070ff3fe259d29c170daad9be2cefb6c06752c4e3a15fd31
BLAKE2b-256 checksum
How to use checksums
736fea8927fce63b5f69d687f15964224601d763a4d4aaa02738400aded757c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.0

Security for adelic-signalforge 0.4.2

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

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.

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