--- id: wiki-2026-0508-cross-frequency-coupling-cfc title: Cross Frequency Coupling (CFC) category: 10_Wiki/Topics status: verified canonical_id: self aliases: [CFC, Phase-Amplitude Coupling, PAC, Theta-Gamma Coupling] duplicate_of: none source_trust_level: A confidence_score: 0.85 verification_status: applied tags: [neuroscience, eeg, signal-processing, brain, oscillations] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: language: Python framework: 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) ```python 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) ```python 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) ```python 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 ```python 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 ```python 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 ```python 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 - 변형: [[Phase-Amplitude Coupling]] - 응용: [[Brain-Computer Interface]] · [[Cognitive Neuroscience of Flow]] - Adjacent: [[Working Memory]] ## 🤖 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 |