Skip to content

Real-Data Case Study: ISO-NE Forced Oscillation

This page runs the shipped SCPN Phase Orchestrator screening chain on a real, public, documented power-system disturbance and shows exactly what it produced. It is the first entry in an external-validation track whose premise is that evidence on real external data counts for more than any number of synthetic fixtures: a documented outcome an outsider can reproduce and check, not a claim.

The sealed output, its provenance, and an integrity test are committed under examples/real_data/iso_ne_case1/ so the result is inspectable directly from the repository.

The disturbance

The capture is case 1 of the University of Tennessee, Knoxville forced-oscillation test-case library — an ISO New England recording with a documented sustained oscillation near 0.27 Hz. It is an IEEE-format multi-header phasor concentrator export: a label row, a quantity-type row (T for time, F for frequency, VM/VA/IM/IA for the phasor channels), a unit row, a secondary-label row, then one time column and five channels per unit — 35 frequency channels over 5400 samples at roughly 30 Hz.

The raw capture is citation-only and is not redistributed here. Obtain it from the dataset page (https://web.eecs.utk.edu/~kaisun/Oscillation/actualcases.html, ISO-NE-case1.zip) and cite S. Maslennikov, B. Wang, Q. Zhang, F. Ma, X. Luo, K. Sun, E. Litvinov, A test cases library for methods locating the sources of sustained oscillations, IEEE PES General Meeting, 2016. The processed ISO-NE_case1.csv had SHA-256 ca5001bb64cfecced20ea71a6a007a5db8ad96acdcfa13cb021358f0f2575de0.

The pipeline

Two shipped commands take the raw multi-header export to sealed review evidence. Both stages are deterministic, so the committed artefact reproduces byte for byte.

# 1. Adapt the IEEE multi-header export to the screener's two-column input.
#    Selects the dropout-free, in-band frequency channel with the largest swing.
spo pmu-ieee-adapt ISO-NE_case1.csv iso_ne_case1_frequency_Sub9Ln20.csv \
  --nominal-frequency-hz 60.0 --plausible-band-hz 2.0

# 2. Screen the derived series for PRC oscillation review evidence.
spo pmu-ringdown iso_ne_case1_frequency_Sub9Ln20.csv \
  --event-id iso-ne-forced-oscillation-case1 \
  --captured-at 1900-01-01T00:00:00Z \
  --signal-source "ISO-NE Oscillation dataset case1 (UTK) / Sub:9:Ln:20 frequency" \
  --nominal-frequency-hz 60.0 --detrend mean --analysis-rate-hz 5.0 \
  --output pmu_ringdown_prc_evidence.json

The adapter selects channel Sub:9:Ln:20. The screener mean-detrends the frequency deviation (removing the operating-point offset that would otherwise be fit as a spurious 0 Hz mode) and decimates the 5400-sample, ~30 Hz capture to 5 Hz (900 samples) before the matrix-pencil estimator — both are necessary on this real capture, where the full rate exceeds the estimator's practical size and the un-detrended offset dominates.

What it found

Mode Frequency (Hz) Damping ratio Family Flagged
1 0.0000 +1.0000 aperiodic no
2 0.2753 −0.0028 inter-area yes (undamped)
3 0.2851 +0.0026 inter-area yes (poorly damped)
4 0.0196 +0.0543 inter-area no
5 0.0000 −1.0000 aperiodic yes (undamped)

The two inter-area modes at 0.2753 / 0.2851 Hz are the documented ~0.27 Hz forced oscillation, recovered with essentially zero damping — a sustained, not decaying, oscillation — and flagged. Verdict: flagged_for_review, flagged_count = 3.

This result is not free: the shipped screener originally missed this mode despite passing its whole synthetic suite at full coverage, and recovering it required fixing three real-data defects (operating-point offset, decimal-rounded timestamps, and estimator sizing). That the failure was invisible to synthetic fixtures is the point of validating on real data.

Provenance and integrity

The sealed pmu_ringdown_prc_evidence.json records only analytical results — the modal estimates, their damping, the flag decision — and provenance digests; it contains no raw time series, so it is a research result about the data rather than a redistribution of it. The derived single-channel series has SHA-256 2ed93167ced93d75d61fef5dc9fb7a878ceb631d74a76fa352e046f64e32f915 (recorded as source_sha256), and the sealed record's content_hash is 44b2aa69b5575cfb84dc5b18741a55af904c04a07358c28256623b09c6bd6b2f.

tests/test_iso_ne_case1_real_evidence.py guards the committed artefact without the raw data: it recomputes the top-level and nested content seals, pins the derived-series digest, and asserts the documented inter-area mode is flagged.

Scope and limits

  • Review-only, offline. The claim boundary is review_only_offline_no_live_actuation. The chain screens measured modal damping for NERC PRC-028-1 / PRC-030-1 review workflows; it is not a conformity assessment, a certification of compliance, or legal advice, and it never actuates. Conformance is for a qualified assessor to determine.
  • A single-evidence artefact, not a full assessor bundle. The three-role spo power-grid-prc-bundle binds dVOC damping, PMU ringdown, and IBR ride-through evidence. This capture is a frequency ringdown only, so no real companion dVOC or IBR record exists for it; the honest artefact is the PMU ringdown evidence on its own rather than a bundle padded with synthetic companions.
  • One event. It shows the shipped chain recovers a documented real oscillation; it is not a statistical evaluation across many disturbances.