--- 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 적용