---
id: wiki-2026-0508-theta-gamma-coupling
title: Theta Gamma Coupling
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [TGC, Theta-Gamma-PAC]
duplicate_of: none
source_trust_level: A
confidence_score: 0.85
verification_status: applied
tags: [neuroscience, oscillation, pac, memory, eeg]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack:
  language: python
  framework: mne-tensorpac
---

# Theta Gamma Coupling

## 매 한 줄
> **"매 theta phase 가 매 gamma amplitude 의 modulate"**. TGC 의 phase-amplitude coupling (PAC) 의 specific form — 4-8 Hz theta 의 cycle 안 에 30-100 Hz gamma 의 burst 의 nested. 1995 Lisman-Idiart hippocampus 의 working-memory 의 mechanism 의 제안 — 2026 에 EEG biomarker, BCI, Alzheimer 의 study 의 활발.

## 매 핵심

### 매 정의
- **Theta**: 4-8 Hz, hippocampus / cortex 의 dominant slow rhythm.
- **Gamma**: 30-100 Hz (low 30-60, high 60-100), local processing.
- **Coupling form**: theta phase φ(t) 의 deterministic gamma envelope A(t).
- **Modulation Index (MI, Tort)**: 매 normalized KL divergence — phase-binned amplitude vs uniform.

### 매 mechanism
- **Lisman-Idiart**: theta 1 cycle 안 ~7 gamma cycle → 매 ~7±2 working memory items (Miller).
- **CA1 / CA3**: place-cell sequence 의 theta phase 안 의 ordered firing.
- **Cross-region**: hippocampal theta → entorhinal gamma → memory encoding.

### 매 measurement
- **Phase**: Hilbert transform → instantaneous phase φ(t) of theta-filtered signal.
- **Amplitude**: Hilbert envelope of gamma-filtered signal.
- **MI (Tort 2010)**: 매 most popular — bin phase, average amp per bin, KL vs uniform.
- **Other**: PLV (Phase-Locking Value), GLM-PAC, Mean Vector Length.

### 매 응용
1. Working memory capacity biomarker.
2. Alzheimer's — TGC 의 reduction.
3. Schizophrenia — disrupted PAC.
4. BCI / cognitive enhancement (tACS at theta).
5. Anesthesia depth monitoring.

## 💻 패턴

### 1. MNE — load EEG + filter
```python
import mne
raw = mne.io.read_raw_fif("subj.fif", preload=True)
raw.filter(l_freq=1, h_freq=120)
theta = raw.copy().filter(4, 8)
gamma = raw.copy().filter(30, 80)
```

### 2. Hilbert phase + amplitude
```python
import numpy as np
from scipy.signal import hilbert
theta_phase = np.angle(hilbert(theta.get_data()))
gamma_amp = np.abs(hilbert(gamma.get_data()))
```

### 3. Modulation Index (Tort)
```python
def modulation_index(phase, amp, n_bins=18):
    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))
    return (np.log(n_bins) - H) / np.log(n_bins)  # 매 normalized KL
```

### 4. tensorpac (full library)
```python
from tensorpac import Pac
p = Pac(idpac=(2, 0, 0), f_pha=(4, 8, 1, 0.5), f_amp=(30, 100, 5, 2))
xpac = p.filterfit(sf=1000, x=signal)  # MI matrix (phase × amp)
p.comodulogram(xpac.mean(-1))
```

### 5. Surrogate test (statistical sig)
```python
# 매 phase 의 shuffle → 매 surrogate MI 의 distribution → p-value
def surrogate_pac(phase, amp, n_perm=200):
    obs = modulation_index(phase, amp)
    shuffles = []
    for _ in range(n_perm):
        shift = np.random.randint(len(phase))
        shuffles.append(modulation_index(np.roll(phase, shift), amp))
    p = (np.array(shuffles) >= obs).mean()
    return obs, p
```

### 6. Comodulogram (full freq scan)
```python
phase_freqs = np.arange(2, 12, 1)
amp_freqs = np.arange(20, 120, 5)
comod = np.zeros((len(phase_freqs), len(amp_freqs)))
for i, fp in enumerate(phase_freqs):
    for j, fa in enumerate(amp_freqs):
        ph = np.angle(hilbert(bandpass(x, fp-1, fp+1)))
        am = np.abs(hilbert(bandpass(x, fa-5, fa+5)))
        comod[i, j] = modulation_index(ph, am)
```

### 7. tACS protocol (cognitive enhancement, 2026)
```text
매 theta-frequency tACS (6 Hz) over fronto-parietal sites
→ 매 working memory performance 의 ↑ (effect size ~0.3, replicated mixed)
```

### 8. tensorpac with MNE epochs
```python
from tensorpac import EventRelatedPac
erp = EventRelatedPac(f_pha=(4, 8, 1, 0.5), f_amp=(30, 100, 5, 2))
erp_pac = erp.filterfit(sf=1000, x=epochs.get_data())
```

## 매 결정 기준
| 상황 | Approach |
|---|---|
| Standard PAC quantification | Tort MI (idpac=(2,...)) |
| Phase consistency only | PLV |
| Full freq exploration | Comodulogram |
| Statistical significance | Surrogate (200+ perm) |
| Event-related | EventRelatedPac (epoch-wise) |
| Software | tensorpac > custom (validated) |

**기본값**: MNE filter → Hilbert → Tort MI → surrogate p-value → comodulogram visualization.

## 🔗 Graph
- 부모: [[Phase-Amplitude Coupling]] · [[Cross-Frequency Coupling (CFC)]]
- 변형: [[Cross-Frequency Coupling (CFC)]]
- 응용: [[Working Memory]] · [[Neural Ignition]]
- Adjacent: [[Signal-Processing-Foundations]] · [[Hebbian-Theory]]

## 🤖 LLM 활용
**언제**: explanation of TGC mechanism, pipeline draft, paper interpretation, hypothesis discussion.
**언제 X**: 매 actual signal processing — 매 MNE / tensorpac 의 사용.

## ❌ 안티패턴
- **MI without surrogate**: 매 spurious — 매 baseline MI 의 always non-zero.
- **Filter bandwidth too narrow**: 매 amp envelope 의 unresolvable — 매 amp band ≥ 2× phase freq 의 필요.
- **Volume conduction**: 매 EEG 의 같은 source 의 두 sensor 의 false PAC — 매 source-localized analysis 의 권장.
- **Single-channel claim**: 매 within-channel PAC 의 weak — 매 cross-region 의 더 의미있음.
- **TGC = causation**: 매 correlate of cognition 의 X causation — manipulation (tACS, opto) 의 필요.
- **Aggregating over subjects naively**: 매 individual differences 의 huge — 매 within-subject 의 normalize.

## 🧪 검증 / 중복
- Verified (Tort et al. 2010 J Neurophysiol, Canolty & Knight 2010 TICS, Lisman-Idiart 1995).
- 신뢰도 A.

## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — TGC mechanism, MI/tensorpac patterns, surrogate stats. |
