f8b21af4be
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>
158 lines
5.6 KiB
Markdown
158 lines
5.6 KiB
Markdown
---
|
|
id: wiki-2026-0508-neuropsychology
|
|
title: Neuropsychology
|
|
category: 10_Wiki/Topics
|
|
status: verified
|
|
canonical_id: self
|
|
aliases: [Clinical Neuropsychology, Cognitive Neuropsychology, Brain-Behavior]
|
|
duplicate_of: none
|
|
source_trust_level: A
|
|
confidence_score: 0.9
|
|
verification_status: applied
|
|
tags: [neuropsychology, cognition, brain, fmri, assessment, ai-diagnosis]
|
|
raw_sources: []
|
|
last_reinforced: 2026-05-10
|
|
github_commit: pending
|
|
tech_stack: { language: Python, framework: nilearn/MNE }
|
|
---
|
|
|
|
## 한 줄
|
|
뇌-행동 관계를 평가-병변매핑-신경영상으로 정량화하고, 2026 현재 ML 분류기와 멀티모달 fMRI/MEG로 임상 진단을 보조한다.
|
|
|
|
## 핵심
|
|
- **평가 도구**: WAIS-IV (지능), WMS-IV (기억), Trail Making A/B (실행), Stroop (억제), BVMT-R (시공간).
|
|
- **병변-행동 매핑**: VLSM (voxel-based lesion symptom mapping) — 병변 마스크 + 행동 점수 회귀로 영역 기여 추정.
|
|
- **신경영상**: fMRI BOLD, DTI 백질 트랙, MEG 시간해상도 ms, EEG 임상 표준.
|
|
- **임상 도메인**: 뇌졸중 인지 결손, TBI, 치매 (AD/FTD/LBD 감별), ADHD, 정신질환 인지 프로파일.
|
|
- **AI 진단 보조**: 구조 MRI → AD/MCI 분류 (3D CNN), MEG → epilepsy spike detection, 자동 점수화.
|
|
|
|
## 💻 패턴
|
|
|
|
```python
|
|
# 1) 인지 평가 점수 정규화 (연령/교육 보정 z-score)
|
|
import pandas as pd
|
|
import numpy as np
|
|
|
|
def age_edu_adjusted_z(raw, age, edu, norms):
|
|
"""norms: DataFrame with mean/sd per (age_band, edu_band)"""
|
|
band = norms.loc[(norms.age_lo <= age) & (age <= norms.age_hi) &
|
|
(norms.edu_lo <= edu) & (edu <= norms.edu_hi)].iloc[0]
|
|
return (raw - band["mean"]) / band["sd"]
|
|
|
|
# 손상 임계: z < -1.5 mild, z < -2.0 moderate
|
|
```
|
|
|
|
```python
|
|
# 2) VLSM (voxel-based lesion symptom mapping) — 단순 t-test 형
|
|
import numpy as np
|
|
from scipy import stats
|
|
|
|
def vlsm(lesion_masks, scores, min_overlap=5):
|
|
# lesion_masks: (n_subj, X, Y, Z) binary; scores: (n_subj,)
|
|
overlap = lesion_masks.sum(axis=0)
|
|
valid = overlap >= min_overlap
|
|
tmap = np.zeros_like(overlap, dtype=float)
|
|
for idx in np.argwhere(valid):
|
|
x, y, z = idx
|
|
present = lesion_masks[:, x, y, z] == 1
|
|
if present.sum() < min_overlap or (~present).sum() < min_overlap:
|
|
continue
|
|
tmap[x, y, z] = stats.ttest_ind(scores[present], scores[~present]).statistic
|
|
return tmap
|
|
```
|
|
|
|
```python
|
|
# 3) 구조 MRI 기반 AD/MCI/CN 분류 (간단 3D CNN)
|
|
import torch.nn as nn
|
|
|
|
class Brain3DCNN(nn.Module):
|
|
def __init__(self, n_classes=3):
|
|
super().__init__()
|
|
self.features = nn.Sequential(
|
|
nn.Conv3d(1, 16, 3, padding=1), nn.ReLU(), nn.MaxPool3d(2),
|
|
nn.Conv3d(16, 32, 3, padding=1), nn.ReLU(), nn.MaxPool3d(2),
|
|
nn.Conv3d(32, 64, 3, padding=1), nn.ReLU(), nn.AdaptiveAvgPool3d(4),
|
|
)
|
|
self.head = nn.Sequential(nn.Flatten(), nn.Linear(64 * 64, 128),
|
|
nn.ReLU(), nn.Dropout(0.3), nn.Linear(128, n_classes))
|
|
|
|
def forward(self, x):
|
|
return self.head(self.features(x))
|
|
```
|
|
|
|
```python
|
|
# 4) 인지 프로파일 클러스터링 (서브타입 발견)
|
|
from sklearn.preprocessing import StandardScaler
|
|
from sklearn.cluster import KMeans
|
|
|
|
X = patients[["wais_iq", "wms_mem", "tmt_b", "stroop", "bvmt"]].values
|
|
Xs = StandardScaler().fit_transform(X)
|
|
labels = KMeans(n_clusters=4, n_init=20, random_state=0).fit_predict(Xs)
|
|
```
|
|
|
|
```python
|
|
# 5) MEG epilepsy spike detection (MNE-Python)
|
|
import mne
|
|
raw = mne.io.read_raw_fif("subject_meg.fif", preload=True)
|
|
raw.filter(1, 70).notch_filter(60)
|
|
events = mne.preprocessing.find_eog_events(raw) # 예시: 이벤트 검출
|
|
epochs = mne.Epochs(raw, events, tmin=-0.5, tmax=0.5, baseline=(None, 0))
|
|
```
|
|
|
|
```python
|
|
# 6) DTI 트랙토그래피로 백질 손상 정량 (FA 감소)
|
|
import numpy as np
|
|
def fa_deficit(patient_fa, control_fa, mask):
|
|
# voxel-wise z-score, mask는 트랙 ROI
|
|
mu, sd = control_fa[:, mask].mean(0), control_fa[:, mask].std(0) + 1e-6
|
|
z = (patient_fa[mask] - mu) / sd
|
|
return float(z.mean()), float((z < -2).mean()) # 평균 z, 손상 비율
|
|
```
|
|
|
|
```python
|
|
# 7) 자동 점수화: TMT-B 시간 → 손상 카테고리
|
|
def tmt_b_severity(seconds, age):
|
|
# Tombaugh 2004 norms 근사
|
|
cutoffs = {(20, 39): (60, 90), (40, 59): (75, 110),
|
|
(60, 79): (100, 150), (80, 100): (150, 240)}
|
|
for (lo, hi), (mild, severe) in cutoffs.items():
|
|
if lo <= age <= hi:
|
|
if seconds <= mild: return "normal"
|
|
if seconds <= severe: return "mild"
|
|
return "severe"
|
|
return "unknown"
|
|
```
|
|
|
|
## 결정 기준
|
|
|
|
| 상황 | 도구 |
|
|
|---|---|
|
|
| 일반 인지 스크리닝 | MoCA, MMSE |
|
|
| 정밀 평가 (법정/연구) | 풀 배터리 (WAIS+WMS+TMT+Stroop) |
|
|
| 병변 위치 추정 | VLSM + 구조 MRI |
|
|
| AD vs FTD 감별 | FDG-PET, 3D CNN on MRI |
|
|
| 발작 초점 | MEG + EEG |
|
|
|
|
## 🔗 Graph
|
|
- 인접: [[Stroke Recovery]]
|
|
|
|
## 🤖 LLM 활용
|
|
- 평가 점수 표 → 손상 도메인 자동 요약 (실행기능/기억/시공간).
|
|
- 임상 노트에서 인지 호소 추출 → 추천 배터리 매핑.
|
|
- 다국어 번역된 표준 검사의 해석 차이 비교.
|
|
|
|
## ❌ 안티패턴
|
|
- 연령/교육 미보정 raw 점수로 손상 판단.
|
|
- VLSM에서 min_overlap 너무 낮게 (<5) 잡고 가짜 영역 검출.
|
|
- 구조 MRI 분류기를 단일 사이트로만 학습 → 스캐너 편향.
|
|
- 자동 점수화로 임상가 판단 대체 (보조만 가능).
|
|
|
|
## 🧪 검증
|
|
- VLSM: permutation test로 cluster-level 보정.
|
|
- 분류기: 다중 사이트 leave-site-out CV.
|
|
- 평가: test-retest 신뢰도 ICC > 0.7.
|
|
|
|
## 🕓 Changelog
|
|
- 2026-05-08 Phase 1 자동 생성
|
|
- 2026-05-10 Manual cleanup — house style 적용
|