'공부하기/뇌과학/의과학'에 해당되는 글 25건

  1. 생체시계의 기능적 연결성과 섬망환자에서 보여지는 수면각성 장애의 신경 기전에 대한 연구
  2. 토폴로지 데이터 분석을 이용한 섬망의 하위그룹 발견 (1)
  3. 뇌영상 데이터 분석 - Create Brain Mask
  4. 뇌영상 데이터 분석 - Matlab Index scheme
  5. 무한도전 - 심장박동으로 식스맨의 기분을 측정하다.
  6. Contrasts in Neuroimaging Data Anlaysis (1)
  7. Slice Timing Correction
  8. smoothness estimation in SPM and AFNI (2)
  9. Voxel size determination through the MonteCarlo Simulation in AFNI
  10. AFNI에서 ROI 만들기.

섬망 중 환자는 증상의 일중 변화를 보입니다.  수면각성 주기의 장애, 낮 시간 중의 졸림, 밤 시간에 잠 들기 어려움 등의 증상은 모두 일중 변화와 관련되어 있다고 할 수 있습니다. 이러한 증상의 일중 변화는 우리 몸(정확하게는 뇌) 안에 있는 생체시계(Circadian Clock)가 섬망 중에 오작동 했을 가능성과 관련 있을 것입니다. 여러 생체시계 중에서 마스터 시계라고 불리는 Suprachiasmatic Nucleus (SCN)은 다른 모든 Peripheral Organs의 생체리듬을 조절하는데 핵심적인 역할을 수행한다고 알려져 있습니다. 따라서 본 연구에서는 섬망 증상의 일중변화가 SCN이 오작동에서 기인했다는 가설을 세우게 되었고, SCN과 다른 뇌의 영역간의 기능적 연결성이 섬망 환자와 비섬망 환자군 간의 신경학적 차이를 연구하게 되었습니다. 

이번 연구에서 발견한 핵심 결과는 섬망 환자의 경우 SCN과 dorsal anterior cingulate 영역간의 기능적 연결성이 증가되어 있다는 것입니다. 반면에, SCN과 기본신경망 영역(left posterior cingulate cortex), parahippocampal gyrus, thalamus, 소뇌의 기능적 연결성은 섬망 환자에서 감소되어 있다는 것입니다. 특히 SCN과 소뇌와의 연결성은 섬망 증상이 심각한 환자에게서 더욱 감소되어 있음을 발견했습니다. 소뇌가 정신활동의 조절과 운영(mental coordination)에 관여하는 중요한 뇌의 영역임을 고려하면, 섬망 중에 SCN과 소뇌와의 연결성 감소는 섬망 환자의 수면각성장애와 증상의 일중변화와 연관되여 있을 것이다.

본 연구 논문의 원문은 다음 링크에서 확인 가능합니다.
(링크: 
http://www.sciencedirect.com/science/article/pii/S0925492716303389)

<Fig. 1 in Psychiatry Research: Neuroimaging 264 (2017) 10-22>



신고

최근 미국 식품의약청(FDA)는 Personalized Medicine의 중요성을 강조하고 있는 추세다. 같은 병명의 질병을 가졌다고 할지라도 사람마다 유전적인 특징이 다를 수가 있고, 생물학적으로 약물에 반응하는 정도가 모두 다르기 때문에다. 이에 따라 함께 강조되고 있는 것이 환자들을 아형에 따라 하위그룹으로 나누는 "Phenotypic Subgrouping"이다. 

Subgrouping을 위해 사용할 수 있는 비지도 기계 학습(Unsupervised Machine Learning) 방법은 여러가지가 있을 수 있지만, 질환을 범주화 하기에는 어려움이 있다. 이제 새롭게 등장한 것이 토폴로지 데이터 분석(Topological Data Analysis, TDA)이다. TDA는 일종에 Partial Clustering 방법으로 질병이 Spectrum 형태로 분포하는 경우에, 매우 유용하게 적용할 수 있는 클러스터링 방법이다.

토폴로지 데이터 분석에서 Input Features를 선택하는 방법은 많이 있지만, 이번 연구에서는 로지스틱 회귀분석을 이용해서 수술후 섬망 발생에 영향을 미치는 위험인자를 우선적으로 찾아냈다. 이렇게 찾아낸 위험인자는 노인 인지기능 평가 지수(MMSE), 심경증, 성실성, 수술시 마취의 종류이다. 이 4개의 특징 변수의 Principal Component를 찾아내서, 이를 Mapper의 filter metric으로 사용했다. 아래 그래프에서 노드의 색깔은 filter metric이다. Mapper에 input으로 사용된 distance metric으로는 L2-distance를 사용했고, 클러스터링 알고리즘으로는 single-linkage dendrogram을 적용했다. 

분석 결과로 생성된 Topology of patient-patient networks에 여러 임상 변인들을 mapping해보니, 섬망의 하위 그룹이 2개 정도로 나눠지는 것을 발견했다. 하나의 섬망 그룹은 인지기능 평가지수가 낮으면서 수술시에 부분마취를 했던 환자그룹(G1)이고, 또 다른 섬망 그룹은 인지기능 평가점수는 보통이지만, 신경증 지수가 매우 높고, 성실성 점수가 낮으며 수술시에 전신마취를 했던 환자 그룹(G2)임을 밝혔다.

재미있는 것은 로지스틱 회귀 분석에서는 혈액내 단백질 총량이나 알부민 수치가 섬망의 위험인자가 아닌것으로 나타났지만, 이 두 변인을 Patient-patient network에 Mapping 했더니, 섬망이 발생한 그룹에도 단백질과 알부민 수치가 낮은 것으로 나타났다. 이 두 수치가 환자의 영양상태와 관련 있음 고려했을때, 수술 전에 환자의 영양 상태가 섬망 발생에 영향을 미칠 수 있음을 밝힌 셈이다. 이는 같은 데이터에 로지스텍 회귀분석을 적용했을때는 발견할 수 없던 결과로, TDA 연구의 중요성이 강조되는 부분이다.

본 연구는 2016년 11월에 BMC Psychiatry 학술지에 게제되었다.
저널 바로가기: https://bmcpsychiatry.biomedcentral.com/articles/10.1186/s12888-016-1079-z



신고

MATLAB을 이용하여 뇌영상 데이터를 분석하다 보면, 뇌영역에 해당되는 부분의 마스크Mask를 만들어야 하는 경우가 있습니다. 이러한 경우에는 뇌영상 데이터 분석 - Matlab Index scheme 강의에서 처럼 MATLAB의 index 기능을 이용하면 회색질, 백색질, 뇌척수액 등에 해당되는 뇌 영역을 indices 값을 얻을 수 있고, 각각의 인덱스 값의 합집합을 이용하면 전체 뇌영역에 해당되는 마스크Mask를 얻을 수 있습니다.

위에 그림은 회색질(Grey Matter, GM), 백질(White Matter, WM), 뇌척수액(Cerebro-spinal Fluid, CSF)의 3차원 공간에서의 확률 분포를 보여주고 있습니다. 각각의 영상은 SPM (Statistical Parametric Mapping)을 설치하면 자동으로 설치되는 영상파일 입니다.

이제 다음의 MATLAB 명령어를 통해서 뇌마스크(Brain Mask)를 만들어 보겠습니다. 다음과 같이 한줄씩 MATLAB 명령창(Command Window)에 입력해 보시면서, 각각의 명령어가 의미하는바가 무엇인지 결과를 확인해 보시면 많은 공부가 될것 같습니다. 

>> % Specify file path >> fn_GM = fullfile(spm('dir'),'tpm', 'grey.nii'); >> fn_WM = fullfile(spm('dir'), 'tpm', 'white.nii'); >> fn_CSF = fullfile(spm('dir'), 'tpm', 'csf.nii'); >> >> % read volume header information >> vo_GM = spm_vol(fn_GM); >> vo_WM = spm_vol(fn_WM); >> vo_CSF = spm_vol(fn_CSF); >> >> % read 3D volume image data >> GM = spm_read_vols(vo_GM); >> WM = spm_read_vols(vo_WM); >> CSF = spm_read_vols(vo_CSF); >> >> % find indices of brain matter mask (idbrainmask) >> idx_gm = find(GM>0.5); % GM mask with Prob(GM>0.5); >> idx_wm = find(WM>0.5); % WM mask with Prob(WM>0.5); >> idx_csf = find(CSF>0.5); % CSF mask with Prob(CSF>0.5); >> >> % Set operation to compute union of two indices >> idbrainmask = union(idx_gm, idx_wm); >> idbrainmask = union(idbrainmask, idx_csf); >> >> % Fill ones for ROI >> IMG = zeros(size(GM)); % create zeros matrix >> IMG(idbrainmask) = 1; >> >> % Write 3D image >> vout = vo_GM; % copy header information >> vout.fname = 'brainmask.nii'; >> spm_write_vol(vout,IMG);

ex1.m

위의 프로그램을 실행하기 위해서는 확률맵(grey.nii, white.nii, csf.nii)이 필요한데, 이 파일들은 위에 설명되어 있듯이 SPM을 설치하고 MATLAB에서 Set Path로 SPM의 경로를 설정해 주어야 접근 가능한 파일들입니다.

신고

매틀랩으로 데이터 분석을 하다보면 find() 명령어를 통해서 특정 index를 찾고, 해당되는 index 값에 대해서만 여러 연산을 수행하는 과정이 필요합니다. 매틀랩에서 행렬을 생성하게 되면 아래의 그림과 같이 Subscript space에서는 A(1,1) 또는 A(1,2) 등의 과정을 통해서 행렬의 각 요소에 있는 값을 얻어올 수 있습니다. 하지만, Subscript space에서 Index space로 변환을 하게 되면 A(1,1)은 A(1)로 접근이 가능하고, A(1,2)는 A(11)을 통해서도 행렬의 값을 얻을 수 있습니다.

가령 아래와 같은 10x20의 행렬 A를 생각해 보겠습니다. 숫자는 행렬의 index를 의미하는 것이고 색깔은 행렬 요소의 값을 의미합니다. 파란색은 0이고 빨간색은 1을 나타냅니다. 이제 Matlab의 find() 명령어를 이용해서 행렬의 값이 1인 요소들의 index 값들을 찾아보도록 하겠습니다.

위의 그림에서 오른쪽에 나와 있듯이 Matlab에서 (>> idx = find(A>0)) 이란 명령어를 통해서 값이 0보다 큰 행렬 요소들이 어느 위치에 있는지 알 수 있습니다. 

신고

무한도전이 10주년을 맞이하여 새로운 멤버인 식스맨(여섯번째 멤버)를 뽑는 오디션을 진행하고 있다. 지난주 (2015년 3월 28일) 방송에서는 오디션 과정에서 식스맨 후보들이 "애정어린 쓴소리에 어떻게 반응하는가?" 또는 민감한 질문들을 거짓없이 대답하는지? 판단하기 위한 목적으로 심박수(Heart Rate, HR)를 측정하고 그 수치를 방송 화면에 함께 보여줬다. 

사실 방송에서는 고급 분석을 사용해서 심박수를 분석하지는 않았지만, 심박수가 높아지고 있음으로 악플을 읽고 있는 식스맨 후보의 짜증과 불쾌감을 간접적으로 표현했다는 데 큰 의미가 있는 것 같다. 심장박동은 우리가 스스로 조절할 수 있는 것이 아니고 우리몸의 자율신경계의 길항 작용으로 조절되는 생체반응이다. 따라서 스스로 조절이 불가능한 흥분된 감정 상태가 되면 교감신경이 활발하게 활동하게 되고, 이것이 심장박동을 증가시키는 주요한 요인이다. 하지만, 심장박동이 높아진채로 계속 유지되는 것은 아니고, 자율신경계의 신비로운 길항작용에 의해서 원래의 상태로 돌아오게 된다. 심박수를 시계열 데이터의 형태로 얻으면 다양한 지표를 계산할 수 있고, 여러 지표들을 복합적으로 활용하면 감정 상태를 더욱 잘 예측할 수도 있을 것이다.


ECG 또는 PPG를 이용한 심장박동 측정 

본래 심장 박동은 Electrocardiogram (ECG or EKG from Greek: kardia, meaning heart) 을 통해서 측정해야 가장 정확하지만 최근에는 손가락 끝의 모세혈관 내의 동맥혈량의 변화로 심장박동을 간접적으로 측정할 수 있는 광혈류량량검사Photoplethysmogram (PPG)를 이용한 방법도 있다. 무한도전에서 보여진 심박수 측정 방법은 이 PPG 를 이용한 방법이라 할 수 있겠다. 심박수의 측정 단위는 분당 심박수로 영어로는 beat per minute (BPM)을 사용한다. 단위에서도 알 수 있듯이 본래 심박수는 1분동안 박동횟수를 측정하고 그 횟수를 이야기 하는 것이지만, 의료기기나 웨어러블 장비에서 측정되는 심박수는 연속적으로 측정되는 심장박동 간의 시간 간격 (RR interval)으로 1분 동안 측정되었을때를 가정하여 매 심장박동이 발생할때마다 심박수를 계산해 준다. 가령 아래 그림에서 처럼 첫번째 심장박동과 두번째 심장박동 간의 시간 간격이 845ms라고 하면 이때의 심장 박동은 60/0.845bpm이 된다. 즉, 71bpm 이 된다.

위의 그림과 같이 ECG로 측정되는 심장박동 신호는 아주 강한 peak 값(QRS complex의 R값)을 나타나지만 PPG로 측정되는 펄스 신호에서는 peak 값이 보여지기는 하지만 ECG 처럼 강하지는 않다 (아래 그림 참고). 하지만 ECG의 RR-interval 값과 PPG의 peak to peak interval 값으로 HR을 측정했을때의 상관계수는 거의 0.98 정도 이미 많은 연구에서 증명되었다[1]. 물론 부정맥 등 심장계 질환을 가진 환자의 경우에는 PPG 신호로 HR을 계산 하는 것에는 무리가 있다. 또한 주의해야 하는 것은 ECG는 심박수를 전기적 신호로 측정하는 것이고, PPG는 동맥혈의 변화를 측정하는 것이기 때문에 두개의 신호 간에는 time delay가 발생함을 인지해야 한다. 정확한 timing을 요구하는 연구에서는 PPG로 HR을 측정하는 것이 무리가 있지만, 정상인을 대상으로 한 연구(또는 실험)에서 5분동안 (혹은 그 이상) 연속 측정한 데이터로 심박변이도(Heart Rate Variability, HRV) 등을 측정하는 것에는 큰 무리가 없을 것이다.


PPG의 장점

그렇다면 ECG에 비해 PPG의 장점은 무엇을까? ECG는 왼쪽 가슴에 전극을 부착하여 측정하는 것이 QRS complex를 측정하기에 가장 정확하고, 그 밖에는 양쪽 손목에 +전극와 -전극을 부착하고 발목에 그라운드 전극을 부착하여 측정하는 것(또는 양쪽 발목에 전극을 부착하고 가슴이나 손목에 그라운드 전극을 부착하여 측정하는 것)도 가능하다. 이처럼 ECG는 몸에 전극을 부착해서 신호를 측정하기 때문에 (전극 부착으로 통증이 있는 것은 아니지만) 불편하기도 하고, 측정중에 발생하는 몸의 움직임이 곧 잡음으로 측정될 수 있다. (전류가 흐르는 전선이 움직이게 되면 전자기장이 발생하기 때문에 신호에 교란을 일으키게 된다.) 또한, ECG 측정을 위해서는 항상 몸의 양쪽에 전극을 부착해야 한다. 따라서 가령 양쪽 손목에 전극을 부착하게되면 측정중에는 손으로 다른 활동을 하는 것이 불가능 하다. 하지만 PPG는 빛센서를 이용하고 한쪽 손가락 끝이나 귓볼에 센서를 착용하면 바로 측정이 시작되고, 빛으로 측정하기 때문에 움직임으로 인해 유도전류가 발생하여 생기는 잡음으로부터 자유롭다. 하지만 센서를 착용한 손을 번쩍 들어올리는 행위를 한다면 혈액의 흐름이 갑자기 변화가 생기기 때문에 PPG 신호가 제대로 측정 되지 않는다. PPG 센서는 뛰거나 과도한 움직임을 제외한 일상 생활 중에서도 신호를 측정하는 것이 가능하다.

무엇보다 최근 다양한 웨어러블 기기들에서는 PPG 센서의 장점을 살려서 간편하게 심박수를 측정할 수 있는 기능을 제공하고 있다. 앞으로 웨어러블 헬스케어 분야에 어떠한 변화가 일어날지 기대해 본다.


Reference

[1] G. Lu, F. Yang, J.A. Taylor, and J.F. Stein, A comparison of photoplethysmography and ECG recording to analyse heart rate variability in healthy subjects, Informa healthcare 33(8), p634-641 (2009).

신고

SPM 등의 뇌영상 데이터 분석 툴을 이용한 뇌영상 데이터의 분석은 기본적으로 각 복셀의 영상에 할당된 데이터 값을 일반 선형 모델 (General Linear Model, GLM)을 이용하여 모델링하고, 실제 데이터와 모델이 얼마나 잘 맞는지 통계적으로 테스트 하는 것이다. 특정 복셀 $i$에 대해서 $Y_{i} = XB_i + E_i$로 모델링 했을때 $X$는 디자인 행렬이되고, 벡터 $B_i$는 분석을 통해서 추정되는 파라미터이며, $E_i$는 에러를 의미한다. 이때 contrast는 $c'B$를 통해서 계산된다. 뇌영상 데이터에서 $c$는 보통 행벡터(column vector)를 의미하고, $c$를 통해서 다양한 contrasts로 결과를 확인할 수 있다. 

벡터 $c$는 contrasts의 가중치를 의미하고, 확인하고자 하는 대부분의 contrast의 Null hypothesis는 $c'B=0$이다. 구체적으로 contrast 가중치를 구성하는 방법에 대해서 다음의 예를 통해서 설명하고자 한다.

위 그림과 같이 세 그룹에 대한 데이터가 있을때, 가장 먼저 생각해 볼 수 있는 통계 분석은 일원분산분석(Analysis of variance, ANOVA)이고 이때의 contrast는 F-contrast로 세 그룹 중 발생할 수 모든 차이를 보고자 할때는 다음과 같은 방법으로 만들 수 있다.

또는 결과는 동일하지만 다른 방법으로 표현하고 싶다면, 다음과 같은 방법도 가능하다.

이제 각 그룹간 차이를 보고자 한다면, 다음과 같은 방법으로 분석이 가능하다. 하지만 분석의 초점이 ANOVA에서 그룹간 차이가 나는 영역을 찾고 해당 영역 내에서 세 그룹간 값이 어떻게 되는지 통계적으로 분석하는 것이 목표라면, F-contrast의 결과로 나온 영역에 대해서 평균 Beta 값을 추출해서 SPSS 등에서 post-hoc 분석을 진행하는 것이 옳다. MATLAB에서 post-hoc 분석이 가능하다면 말리지는 않겠다. SPM에서 T-contrast는 다음과 같은 방법으로 만들 수 있다.

  • -1    1    0:  spm{T} contrast for sample2 > sample1

  •  1     0   -1:  spm{T} contrast for sample1 > sample3

  •  2   -1   -1:  spm{T} contrast for sample1 > (sample2 + sample3)

이제 confounding effect를 제어한 후에 그룹간 차이를 비교하는 분석을 생각해 보자. 이러한 분석을 공변량분석 (Analysis of Covariance, ANCOVA) 이라 불린다. 다음과 같은 데이터가 있다고 가정해 보자.


이제 공변량(covariate1)의 효과를 제거한 후에 두 그룹간의 차이를 비교하는 F-contrast를 생각해 보다. 다음과 같은 spm{F} contrast를 통해서 sample1과 sample2 간의 값의 차이를 비교할 수 있다.



신고

Slice Timing Correction

하나의 3차원 뇌영상 데이터는 여러개의 단면영상(Slice Image)으로 구성되어 있다. 기능자기공명영상(functional magnetic resonance imaging, fMRI)의 경우에는 보통 매2초마다 하나의 3차원 볼륨 영상을 획득하게 된다. 다시 말해서 2초동안 여러개의 단면영상을 획득하게 되는데, 그중에서 제일 처음에 획득한 단면영상과 맨 마지막에 획득한 단면영상 간에는 최고 2초 정도의 시간 차이가 발생하게 된다. 이러한 시간 차이를 보정해 주는 것이 Slice timing correction이라 물리는 전처리 과정이다. SPM의 경우에 slice timing correction 을 적용하게 되면 'a'를 어두로 하는 새로운 뇌영상 파일이 생성된다.

단면영상의 순서(slice order)는 각 단면영상이 획득된 순서를 의미한다. 단면영상에서 순서로 정의해준 순서는 각 단면영상이 획득된 시간 순서를 의미한다. SPM에서 order of slices를 확인하기 위해서는 SPM Display에서 보고자 하는 뇌영상을 선택하고, cross-hairs를 z=1인 위치로 이동시키면 볼륨 영상의 첫번째 단면 영상을 가르키게 된다.

Slice timing 을 통해서 동일한 볼륨 영상 내에 서로 다른 시간에 획득된 단면 영상들이 마치 동일한 시간에 획득된 것 처럼 보정을 하게 된다. 보정 과정은 sinc-interpolation을 이용하고, 이것은 시계열 데이터를 lagging하는 효과를 낸다.

개념을 명확히 하기 위해서 예를 들어 설명해 보고자 한다. 가령 연속되는 단면 영상에 어떤 신경활동이 있다고 가정해 보자. A 단면영상의 값들은 t=0s에 획득되었고, B 단면영상의 값들은 t=1s에 획들되었다. 보정이 없다면 B 단면영상에 있는 혈류동역학 반응(hemodynamic response)은 사실상 B 영상이 획득되기 1초 전에 발생한 신호를의미한다. 이것을 보정하기 위해서는 B 단면영상에 있는 값들을 1초 전에 발생한 시점의 값들로 shifting 해야 한다.

Slice timing correction에서 중요한 점은 뇌영상 데이터를 획득한 순서를 명확히 알아야 한다는 것이다. 만약 잘 모른다면 뇌영상 획득에 도움을 준 방사선사 선생님들께 문의해서 영상 획득 순서를 숙지하고 있는 것이 좋다. 보통은 ascending (from bottom to top), descending (from top to bottom), interleaved (odd number slices and then even number slices)등의 순서로 획득된다.

지멘스Siemens MRI로부터 .ima 파일로 데이터를 저장했다면, MATLAB에서 다음과 같은 명령어로도 order of slice를 확인하는 것이 가능하다.

>>hdr = spm_dicom_headers(’dicom.ima’); >>slice_times = hdr.Private_0019_1029


이 경우 단면영상의 순서는 아래쪽으로부터 위쪽으로 증가하는 방향이다.


신고

Smoothness estimation은 MonteCarlo simulation을 위해서 반드시 필요한 과정입니다.

SPM으로 영상 데이터를 분석했다면, SPM.mat 파일의 Field 값을 확인함으로써 smoothness를 확인할 수 있습니다.

>>load SPM; % SPM 결과 파일이 저장된 폴더에서 실행 >>M = SPM.xVol.M; % 변환행렬 정보를 가져옴 >>VOX = abs(diag(M)); % 대각행렬 정보가 볼셀 사이즈 >>FWHM = SPM.xVol.FWHM; % FWHM in voxel unit >>FWHMmm = FWHM.*VOX(1:3)'; % FWHM in mm unit >>disp(FWHMmm); 

SPM에서 Gaussian random field theory를 기반으로 smoothness를 estimation하고, 이것은 spm_est_smoothness을 통해서 계산됩니다. 

위의 과정을 통해서 확인한 FWHMmm 정보는 AFNI의 3dFWHMx의 명령어를 통해서 estimation한 smoothness와 완전히 동일하지는 않지만, 비슷한 수준의 값이 나와야 합니다. AFNI가 설치되어 있다면 다음과 같이 실행해 보세요. 

~>3dFWHMx -mask mask.hdr -input ResMS.hdr % SPM 결과 파일이 저장된 폴더에서 실행

여기서 얻은 smoothness를 기반으로 MonteCarlo simulation을 시행하면, 이것이 AlphaSim-corrected p-value가 됩니다.

관련 글은 다음의 링크에서도 확인이 가능합니다.
https://www.jiscmail.ac.uk/cgi-bin/webadmin?A2=spm;bb3ad6d.1308

신고

뇌영상을 이용한 뇌과학 연구는 대부분 다음과 같은 질문에 답하는 것이다.

  • 3차원의 뇌에 어떤 영역이 활성화 되었는지?  
  • 특정 영역의 시계열 데이터와 상관성이 높게 나오는 뇌영역은 어디인지? 

생물정보학에서 다루는 Microarray 데이터도 마찬가지 이지만, 뇌영상 데이터도 multiple comparison에서 발생하는 false positive를 조절하는 방법에 대해서다양한 해법들이 있다. 가령, false discovery rate (FDR) 또는 family-wire error rate (FWE) 등이 전통적으로 가장 많이 이용되어 왔던 multiple comparison correction 방법들이다. 

뇌영상 데이터는 특정 복셀에서 통계적으로 유의미한 차이를 보인다고 했을때 "아, 이 볼셀에서 통계적으로 유의미 하니까 해당 영역이 중요하겠네!" 라고 생각하면 안된다. 뇌는 인접한 뇌영역들 같이 비슷한 역할을 하는 뉴런들이 있어서 특정 복셀 1개만 통계적으로 유의미한 차이를 보이고, 인접한 영역에 있는 복셀들에서도 비슷한 양상이 보여야 한다. 전문 용어로 차이가 나는 영역 덩어리 (continuous voxel size)가 얼만큼 큰지?의 여부에 따라서 해당 영역이 false positive인지를 판별해야 한다. 최근 뇌영상 연구에서는 multiple comparison correction을 하지 않은 분석 결과는 좋은 저널에 출판하기 어려울 것이다. 

뇌영상 연구의 Multiple comparison에서 중요한 것은 다음의 두가지 질문일 것이다.

  • 각 복셀에서의 통계적 유의미성이 어느정도로 해야 하는지? (보통 뇌영상(fMRI or MRI) 분석에서는 p<0.005 or p<0.001을 많이 사용) 
  • 해당 threshold에서 덩어리져 있는 영역-덩어리를 찾아야 할텐데, 덩어리(or continuous voxel size)의 크기는 얼만큼이 적당한지?  

위의 질문은 MonteCarlo (MC) simulation을 통해서 할 수 있는데, SPM with REST toolbox와 AFNI의 AlphaSim을 통해서 시뮬레이션이 가능하다. MC simulation을 위해서는 여러가지 파라미터가 필요한데, 각각의 파라미터의 이름은 프로그램마다 조금씩 다르지만, 대략적으로 다음과 같은 의미를 가진다고 할 수 있다.

  • mask: MC simulation을 하는 voxel size, image dimension, and brain boundary 등의 정보를 담고 있음.
  • rmm: 얼만큼 떨어져 있는 복셀을 인접한 복셀로 볼 것인지? 볼셀의 중심과 중심의 거리
  • NN: nearest neighbor를 어떻게 정의할 것인지?  가령, 각각의 볼셀이 6면체로 되어 있는데 복셀의 face가 붙어 있는 것을 연결된 복셀로 볼 것인지? edge가 붙어 있는 것을 연속적으로 연결된 복셀로 볼것인지? 아니면 corner가 붙어 있는 것을 연속적으로 연결된 볼셀로 볼 것인지? 의 여부를 결정할 수 있다.
  • FWHM: 이것은 결과 데이터의 smoothness를 의미함. 단순히 smoothing kernel의 FWHM 값을 입력하면 안되고, AFNI나 SPM의 smoothness estimation 방법을 통해서 계산한 결과 값을 입력해야 한다. smoothness estimation을 다룬 포스팅을 확인하기.



신고

AFNI에서 ROI 만들기.

기능 뇌영상 연구에서는 특정한 관심 영역(Region of Interest, ROI)를 설정하고, 해당 ROI에 대한 시계열 데이터를 추출해서 분석을 해야 하는 경우가 많이 있습니다. AFNI를 통해서 ROI를 그리는 방법에 대해서 잘 설명되어 있는 영문 포스트가 있어서 이곳에 한글로 옮깁니다.

Afni 프로그램은 리눅스나 매킨토시 계열의 컴퓨터에서 작동하는 프로그램으로, 프로그램을 설치하고 쉘Shell에서 PATH 설정을 제대로 했다면, @GetAfniBin 명령어를 통해서 Afni가 설치되어 있는 경로를 return 받을 수 있습니다. 

이제 중심 좌표의 위치가 (x=23,y=21,z=-6.5 in talairach coordinate)이고 반지름이 3mm인 왼쪽 hippocampus 영역의 일부 영역을 구Shpere 형태의 ROI로 만들고 싶다면, 다음의 명령어를 통해서 가능합니다.

3dcalc -a `@GetAfniBin`/TT_N27+tlrc.HEAD \

-prefix ShpereROI \

-expr 'step(3*3 - (x-23)*(x-23) - (y-21)*(y-21) - (z+6.5)*(z+6.5))'

아주 간단하죠?

TT_N27+tlrc는 Afni나 Caret 등에서 볼 수 있는 Talairach 표준 템플릿 입니다.


신고