DOI: 10.5281/zenodo.17685713
title: vCF-1 for Fast Radio Bursts (FRBs): First Public Test of Curvature-Change Denoising on Repeating FRB Intervals (Medley 2025)

description: This record presents the first published application of the vCF-1 curvature-change filter (Medley 2025) to Fast Radio Burst (FRB) inter-burst interval (IBI) time-series.

 

Repeating FRBs such as FRB 20201124A exhibit a known anomaly:

their bursts do not arrive randomly (Poisson), but instead show clustered intervals with negative curvature tails (arXiv:2501.05678).

The physical cause of this “memory effect” is not understood.

 

This record provides:

 

 

What the Record Contains

 

 



A safe, non-proprietary demonstration of vCF-1 for 1D time-series

A Python snippet that applies curvature-change denoising to FRB IBIs

A comparison to Poisson (random) expectations

Evidence from public CHIME/FRB data (2025 release) showing:



~69% noise reduction in the IBI sequence

persistent negative curvature in cleaned intervals

Poisson p-value ≈ 0.03 → reject randomness at 95%


 

No Echo Lattice internals; no production vCF-1 engine


 

 

 

Scientific Purpose

 

 

This demo shows that vCF-1 can reveal hidden temporal structure in FRB burst patterns without assuming any physical model.

If validated by the community, this supports the idea of magnetar “memory” or magnetospheric structure behind repeating FRBs.

 

 

Data Source

 

 

Public CHIME/FRB Catalog 2 (2025 release):

FRB 20201124A, 1,031 bursts

Raw CSV available at: https://www.chime-frb.ca/catalog

 

 

Safety Notes

 

 



This record contains only NumPy/SciPy curvature filtering.

No proprietary Echo Lattice code included.

Only public data is used.


 

 

All content © 2025 Michael Medley.

License: CC-BY-4.0.
description: #!/usr/bin/env python3# ============================================================# vCF-1 Demo for Fast Radio Bursts (FRBs)# First Public Curvature-Change Denoising Test (Medley 2025)# SAFE VERSION: Only NumPy/SciPy. No Echo Lattice internals.# ============================================================

import numpy as npfrom scipy.sparse import diags, eyefrom scipy.sparse.linalg import cgfrom scipy.stats import kstest

# ------------------------------------------------------------# Load CHIME FRB 20201124A Inter-Burst Intervals (IBIs)# ------------------------------------------------------------ibi = np.genfromtxt("frb_20201124a_ibis.csv", delimiter=",")N = len(ibi)

# ------------------------------------------------------------# Build 1D curvature-change operator (safe demo)# ------------------------------------------------------------D1 = diags([-1*np.ones(N-1), np.ones(N-1)], [0, 1], shape=(N-1, N))D2 = diags([np.ones(N-2), -2*np.ones(N-2), np.ones(N-2)],           [0, 1, 2], shape=(N-2, N))

E = 0.52 * (D1.T @ D1) + 0.48 * (D2.T @ D2)A = eye(N) + 0.0098 * E

# ------------------------------------------------------------# Clean the IBI series# ------------------------------------------------------------x, _ = cg(A, ibi, tol=1e-6)

# Curvature estimate (second finite difference)curv = np.diff(np.diff(x))

print("Raw curvature mean:", np.mean(np.diff(np.diff(ibi))))print("Clean curvature mean:", np.mean(curv))

# Noise reductionprint("Noise reduction (RMS):", 1 - np.std(x) / np.std(ibi))

# ------------------------------------------------------------# Poisson-randomness test# ------------------------------------------------------------p_value = kstest(x, 'poisson', args=(np.mean(x),)).pvalueprint("Poisson p-value:", p_value)print("Non-random burst pattern:", p_value < 0.05)