Files
2nd/10_Wiki/Topics/Computer_Science_and_Theory/Cross-Frequency Coupling (CFC).md
T
Antigravity Agent f8b21af4be Wiki cleanup: error-doc removal, dedup merge, link normalization
10_Wiki/Topics 대규모 정리:
- 오류 캡처/미완성 stub 문서 227개 제거
- 교차폴더 중복 43클러스터 병합 (63파일 → redirect)
- 링크명 정규화: 깨진 링크 수정·redirect 직결·개념 매핑 ~2,400건
- 카테고리 MOC 6개 신규 생성
- Graph 섹션 미해결 related-keyword 링크 10,058건 제거

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 23:52:15 +09:00

7.2 KiB
Raw Blame History

id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
id title category status canonical_id aliases duplicate_of source_trust_level confidence_score verification_status tags raw_sources last_reinforced github_commit tech_stack
wiki-2026-0508-cross-frequency-coupling-cfc Cross Frequency Coupling (CFC) 10_Wiki/Topics verified self
CFC
Phase-Amplitude Coupling
PAC
Theta-Gamma Coupling
none A 0.85 applied
neuroscience
eeg
signal-processing
brain
oscillations
2026-05-10 pending
language framework
Python MNE-Python / tensorpac / scipy

Cross Frequency Coupling (CFC)

매 한 줄

"매 brain oscillation 의 매 multi-band interaction". Bragin 1995 hippocampus theta-gamma 발견 → Canolty 2006 PAC formalism → 2026 closed-loop neurostim 의 clinical use. 매 working memory + attention + sensorimotor binding 의 매 candidate mechanism — 매 BCI/neurofeedback의 actionable feature.

매 핵심

매 CFC types

  • Phase-Amplitude Coupling (PAC): 매 low-freq phase 의 high-freq amplitude 의 modulation — 매 most studied (theta phase × gamma amplitude).
  • Phase-Phase Coupling (n:m): 매 phase synchrony at integer ratios — 매 7:1 theta-gamma 의 hippocampus.
  • Amplitude-Amplitude Coupling: 매 envelope co-fluctuation.
  • Phase-Frequency Coupling: 매 less common.

매 PAC 측정 metrics

  • Modulation Index (MI, Tort 2010): 매 KL divergence — 매 가장 robust.
  • Mean Vector Length (MVL, Canolty): 매 simpler, noise-sensitive.
  • General Linear Model PAC (van Wijk): 매 statistical inference.
  • Phase-Locking Value (PLV): 매 phase-phase only.

매 Functional roles

  • Theta-Gamma (4-8 Hz × 30-100 Hz): 매 working memory chunking — 매 Lisman-Idiart 7±2 model.
  • Alpha-Gamma (8-13 Hz × 30-100 Hz): 매 attention gating — 매 sensory selection.
  • Delta-Beta (1-3 Hz × 13-30 Hz): 매 motor planning.
  • Theta-Alpha: 매 hippocampus-cortex coordination.

매 응용

  1. BCI: 매 PAC features 의 motor intent decoding — 매 SOTA 보다 +10% accuracy.
  2. Neurofeedback: 매 closed-loop modulation 의 ADHD/depression.
  3. Sleep staging: 매 SO-spindle coupling 의 NREM consolidation marker.
  4. Anesthesia depth: 매 alpha-delta PAC 의 monitoring.
  5. Esports/flow detection: 매 frontal theta-gamma 의 absorption marker.

💻 패턴

Modulation Index (Tort 2010)

import numpy as np
from scipy.signal import hilbert, butter, filtfilt

def bandpass(sig, fs, low, high, order=4):
    b, a = butter(order, [low, high], btype="band", fs=fs)
    return filtfilt(b, a, sig)

def modulation_index(signal, fs, phase_band, amp_band, n_bins=18):
    phase_sig = bandpass(signal, fs, *phase_band)
    amp_sig = bandpass(signal, fs, *amp_band)
    phase = np.angle(hilbert(phase_sig))
    amp = np.abs(hilbert(amp_sig))

    bins = np.linspace(-np.pi, np.pi, n_bins + 1)
    mean_amp = np.array([
        amp[(phase >= bins[i]) & (phase < bins[i+1])].mean()
        for i in range(n_bins)
    ])
    p = mean_amp / mean_amp.sum()
    H = -np.sum(p * np.log(p + 1e-12))
    Hmax = np.log(n_bins)
    return (Hmax - H) / Hmax  # MI ∈ [0, 1]

PAC Comodulogram (frequency-pair sweep)

def comodulogram(signal, fs,
                 phase_freqs=np.arange(2, 15, 1),
                 amp_freqs=np.arange(20, 120, 5),
                 bw_phase=2, bw_amp=10):
    co = np.zeros((len(phase_freqs), len(amp_freqs)))
    for i, fp in enumerate(phase_freqs):
        for j, fa in enumerate(amp_freqs):
            co[i, j] = modulation_index(
                signal, fs,
                (fp - bw_phase/2, fp + bw_phase/2),
                (fa - bw_amp/2, fa + bw_amp/2),
            )
    return phase_freqs, amp_freqs, co

Tensorpac (production library)

from tensorpac import Pac
import numpy as np

# 매 multi-trial PAC + surrogate statistics
data = np.random.randn(100, 2048)  # n_epochs × n_samples
fs = 256
p = Pac(idpac=(2, 2, 4),  # MVL, swap-block surrogate, z-score
        f_pha=(2, 15, 1, 0.5), f_amp=(20, 120, 5, 5))
phases = p.filter(fs, data, ftype="phase", n_jobs=4)
amps = p.filter(fs, data, ftype="amplitude", n_jobs=4)
xpac = p.fit(phases, amps)  # n_amp × n_pha × n_epochs

Sleep SO-Spindle Coupling

def so_spindle_coupling(eeg, fs=500):
    # 매 slow oscillation phase (0.5-1.25 Hz) × spindle amplitude (12-15 Hz)
    return modulation_index(eeg, fs, (0.5, 1.25), (12, 15))
# 매 healthy young: MI ≈ 0.005-0.015; 매 elderly: 매 lower

Closed-Loop Phase-Triggered Stim

import collections, time

class PhaseTriggeredStim:
    def __init__(self, fs, target_phase=0, tolerance=0.3):
        self.fs = fs; self.buf = collections.deque(maxlen=int(fs * 2))
        self.target = target_phase; self.tol = tolerance
    def push_sample(self, x):
        self.buf.append(x)
        if len(self.buf) < self.fs: return False
        sig = np.array(self.buf)
        theta = bandpass(sig, self.fs, 4, 8)
        cur_phase = np.angle(hilbert(theta))[-1]
        return abs(cur_phase - self.target) < self.tol
    def stim_loop(self, sample_iter, deliver_pulse):
        for x in sample_iter:
            if self.push_sample(x): deliver_pulse()

Statistical Significance via Surrogates

def pac_zscore(signal, fs, phase_band, amp_band, n_perm=200):
    real = modulation_index(signal, fs, phase_band, amp_band)
    surr = []
    for _ in range(n_perm):
        shift = np.random.randint(fs, len(signal) - fs)
        s = np.concatenate([signal[shift:], signal[:shift]])
        surr.append(modulation_index(s, fs, phase_band, amp_band))
    return (real - np.mean(surr)) / np.std(surr)

매 결정 기준

Use case Approach
Single recording, exploration Tort MI + comodulogram
Multi-trial group stats Tensorpac w/ surrogates + cluster perm
Real-time BCI/stim MVL (cheaper) + phase tracker
Sleep research SO-spindle MI + co-occurrence
Tutorial/learning Tort MI w/ 18 bins

기본값: Tort 2010 MI + 200 surrogate permutations + cluster correction.

🔗 Graph

🤖 LLM 활용

언제: 매 PAC pipeline scaffold, 매 metric choice 의 explanation, 매 surrogate-test 의 reasoning. 언제 X: 매 clinical diagnostic decision 의 sole basis, 매 individual subject 의 inference 의 small-sample.

안티패턴

  • No surrogate test: 매 spurious PAC 의 1/f noise + nonstationarity 의 false positive.
  • Filter ringing artifact: 매 narrow band + steep filter 의 phase distortion.
  • Phase-amp band overlap: 매 fp + bw/2 ≥ fa - bw/2 의 self-coupling artifact.
  • Edge effects 무시: 매 Hilbert transform 의 endpoint distortion.
  • MVL alone: 매 amplitude variance 의 confound — 매 MI 의 더 robust.
  • PAC = causation: 매 correlation 의 mechanistic interpretation 의 over-claim.

🧪 검증 / 중복

  • Verified (Tort et al. 2010 J Neurophysiol, Canolty & Knight 2010 Trends Cogn Sci, Aru et al. 2015 Curr Opin Neurobiol pitfalls review).
  • 신뢰도 A.

🕓 Changelog

날짜 변경
2026-05-08 Phase 1
2026-05-10 Manual cleanup — Tort MI + comodulogram + closed-loop stim patterns