First-principles signal analysis without training data, protocol libraries, or GPUs.
Send any time-series. Get structural characterisation back. No signal-specific tuning required.
Overview
API Operational — v1.0.0
What This Does
The API accepts raw time-series data — voltage samples, ADC readings, or derived magnitude (e.g. √(I²+Q²)) — and returns a structural characterisation of what the signal is doing. It works on radio signals, sensor streams, financial data, or any continuous measurement.
How It Works
Your data is converted into state-space trajectories. Adaptive thresholding identifies significant state transitions. Unsupervised anomaly gating filters noise. Spike-based coincidence scoring measures structural similarity. Multi-lag autocorrelation captures temporal patterns. Twelve mathematical phenomena detectors surface anomalous signatures.
The pipeline runs server-side. You receive only the characterisation — classification tags, temporal profile, anomaly level, and detected phenomena.
What Makes It Different
No training data: Fully unsupervised. Works on signals never seen before.
Not pattern matching: Characterises mathematical structure, not protocol signatures.
Universal input: Any time-series. RF, vibration, medical, financial, quantum hardware.
Structural output: Not just "anomaly detected" but what kind of anomaly.
Edge-ready: Designed for neuromorphic hardware at milliwatt power.
Run the analysis on the built-in demo signal, or paste your own samples.
First request after idle may be 1–3s slower (cold start). Subsequent requests are fast.
If you receive HTTP 429, retry after a short delay; demo traffic is rate-limited to protect service reliability.
Ready
Detectors12 mathematical signatures
What We Detect
The pipeline tests for twelve mathematical phenomena in every signal. Each detector asks a specific structural question — not "is this a known protocol?" but "is this signal doing something mathematically unusual?"
Physical Phenomena
Quantum Zeno: Measurement frequency correlates with delayed transitions
Criticality: Self-organised criticality in event magnitude distribution
Information Backflow: Non-Markovian temporal correlations
Fractal Dimension: Chaotic structure in state-space trajectories
Topological Transitions: Phase changes in signal geometry
Copy-paste the snippet for your stack. No config needed — the system auto-tunes.
Python (recommended for data science / Rydberg)
import requests
import numpy as np
# 1. Generate Data (Example: Gaussian Noise)# Note: Noise often trends to ANTI_CORRELATED or low structure; may show STRUCTURED depending on gating/windowing.
data = np.random.normal(0, 1, 5000).tolist()
# Pro Tip: To see "STRUCTURED" detection, use a sine wave instead:# t = np.linspace(0, 1, 5000)# data = (np.sin(2 * np.pi * 50 * t)).tolist()# 2. Request — no config needed; optional: {"samples": data, "config": {"sample_rate_hz": 44100}}
url = "https://signal.sparse-supernova.com/api/characterise"
headers = {
"X-API-Key": "demo-sparse-supernova-2026",
"Content-Type": "application/json",
"User-Agent": "QuantumSignalClient/1.0",
}
print(f"Sending {len(data)} samples to Sparse Supernova...")
response = requests.post(url, headers=headers, json={"samples": data})
# 3. Resultsif response.status_code == 200:
result = response.json()
print("Classification:", result["characterisation"]["classification"])
print("Phenomena:", [p["detector"] for p in result["phenomena_detected"]])
else:
print("Error:", response.text)
Expectations: Noise often trends to ANTI_CORRELATED or low structure (may show STRUCTURED depending on gating/windowing). Sine → STRUCTURED. The snippet prints Phenomena (e.g. Quantum Zeno, Criticality). RF/IQ: Send magnitude √(I²+Q²); set User-Agent to avoid Cloudflare blocks.
cURL (Linux / Mac / WSL)
Minimum 128 samples: The API rejects payloads with fewer than 128 samples (400 Bad Request). Example 1 is for documentation; example 2 is a bash-only quick test (generates 150 samples with positive bias; for a symmetric signal test use a small JSON file or the Python snippet).
# 1. Documentation example (replace ... with 125+ more values or use #2)
curl -X POST https://signal.sparse-supernova.com/api/characterise \
-H "X-API-Key: demo-sparse-supernova-2026" \
-H "Content-Type: application/json" \
-d '{"samples": [0.1, -0.3, 0.5, ...]}'# min 128 samples# 2. Bash-only quick test (generates 150 samples; 0.xxx positive bias)
curl -X POST https://signal.sparse-supernova.com/api/characterise \
-H "X-API-Key: demo-sparse-supernova-2026" \
-H "Content-Type: application/json" \
-d "{\"samples\": [$(for i in {1..150}; do echo -n \"0.$RANDOM,\"; done | sed 's/,$//')]}"
Speaks hardware language: magnitude √(I²+Q²), not raw JSON. Fits Unix pipelines (rtl_sdr, GNU Radio). Converting I/Q to magnitude before upload cuts bandwidth by 50%. Save the script below as iq_to_magnitude.py so the pipeline runs.
# Fixed-size demo read: 48,000 complex samples → 96,000 bytes interleaved u8 IQ (I,Q,I,Q,…). Use -n 48000 with rtl_sdr. For streaming, read stdin in a loop instead.import sys, numpy as np, json
raw = sys.stdin.buffer.read() # or read(96000) for exactly one -n 48000 chunk
y = np.frombuffer(raw, dtype=np.uint8).astype(float)
y = (y - 127.5) / 127.5 # Normalize to -1..1
i, q = y[0::2], y[1::2]
magnitude = np.sqrt(i**2 + q**2) # √(I²+Q²)print(json.dumps({"samples": magnitude.tolist()}))