'공부하기'에 해당되는 글 42건

  1. intuitive resting state functional connectivity (iRSFC) toolbox (7)
  2. Topological Data Analysis with R, (토폴로지 데이터 분석) (5)
  3. Slice Timing Correction
  4. smoothness estimation in SPM and AFNI (2)
  5. Voxel size determination through the MonteCarlo Simulation in AFNI
  6. AFNI에서 ROI 만들기.
  7. [경성현] Topological Data Analysis를 이용한 전국 지방자치단체의 토건예산, 복지예산, 자살률의 관계 분석 (6)
  8. TCI & Functional Modular Organisation 논문 수락 후기 (4)
  9. Data Analysis (3): Flip Neuroimaging Data
  10. Data Analysis (2): Graph Theoretical Analysis in R

About iRSFC

  • iRSFC는 intuitive resting-state functional connectivity의 약자 입니다.

  • 가장 간단한 방법으로 휴자상태 뇌기능 연결성을 분석 할 수 있는 Matlab 기반의 툴박스 입니다.

  • 기능 뇌네트워크를 분석할 수 있는 프로그램들을 이미 많이 있습니다. 하지만, 너무 많은 기능이 들어 있어서 사용하기가 쉽지 않고 기존에 Event-related fMRI (ER-fMRI) 연구를 하시던 분들이 사용하시게에 생소한 부분들이 많이 있습니다. iRSFC는 ER-fMRI 연구를 하셨던 분들이 쉽게 사용할 수 있도록 디자인한 프로그램입니다. 

  • iRSFC toolbox를 구동하기 위해서는 SPM 툴박스를 미리 다운로드 받고 Matlab에서 Set Path를 설정해야 합니다.

Functionality

  • Seed ROI based functional connectivity analysis: seed로 설정한 뇌영역과 다른 모든 뇌영역간의 functional connectivity를 계산해서 zmap으로 저장하는 기능을 수항햅니다. 이후 분석은 SPM의 [Specify 2nd-level] 메뉴를 통해서 진행하면 됩니다.

  • Network analysis among ROIs: 연구자가 설정한 ROI 영역들간의 기능 연결성을 모두 계산해서 결과를 Comma Separated Values 의 형태로 저장하는 기능을 수행합니다. 이후에 분석은 SPSS 등으로 수행 가능합니다.

Download

  • 아래의 링크에서 간단한 설문에 응답해 주시면 다운로드 링크를 보실 수 있습니다.

  • 어떤 연구자들이 주로 프로그램을 사용하는지 알기 위한 설문이지, 최대한 성의것 응답해 주시면 추후에 프로그램을 업데이트 하는데 큰 도움이 될것 같습니다.

  • 깃허브Github 다운로드 링크: https://github.com/skyeong/iRSFC

Hands-on Exercise

  • 아래의 링크에 있는 메뉴얼을 다운로드 받아서 따라해 보세요^^

  • 다운로드 링크: slideshare

iRSFC Workshop Info

  1.  Sunghyon Kyeong, 'Hands-on workshop on intuitive Resting-State Functional Connectivity (iRSFC)', Department of Psychiatry, Chonbuk National University Hospital, 9 January, 2015. 
    (1) theoretical background on fMRI BOLD signal (40 min.) 
    (2) Hands-on exercise for fMRI preprocessing (60 min.) 
    (3) Hands-on exercise for iRSFC toolbox (90 min.) 
    (4) Multiple comparison issues and AlphaSim correction (20 min.)





신고
국가수리과학연구소에서 병역특례로 근무하는 동안 (2011-2014) 다양한 수학자들을 만나 수 있었습니다. 그 중에서 위상수학(Topology)를 공부하신 박사님과 한 팀에서 일을 할 수 있게 되었는데, 이때 처음으로 토폴로지 데이터 분석 (Topological Data Analysis, TDA)라는 방법을 알게 되었습니다.

토폴로지 데이터 분석의 핵심은 고차원 위상공간의 매니폴드에서 얻은 포인트 클라우드 데이터를 간단하게 추상화 하여 그래프의 형태로 표현하는 것입니다. Filtration에 의해서 샘플된 데이터는 Simplicies를 구성하기 위해 사용되고, 이거한 simplicies들을 선으로 연결하여 매니폴드를 추상화 합니다. 

또한, 대수적 토폴로지(Algebraic Topology)를 이용하면 여러 매니폴드로부터 대수적으로 동일한 해석을 주는 그룹을 찾을 수 있습니다. 가령, 다양한 차원의 매니폴드에서 홀Holes 의 갯수를 알고 있다면 매니폴드의 토폴로지를 특징화 할 수 있습니다. 가령 컵과 도너츠는 홀Hole이 하나라는 점에서 토폴로지가 같다고 할 수 있습니다. 이렇게 토폴로지가 같은 특성을 갖는 것을 호몰로지 그룹이라고 하는데, 고차원 데이터에서 이러한 호몰로지 그룹의 특성을 파악 한다면 다양한 분야의 사람들이 데이터에 대해서 새로운 시각을 얻을 수 있을 것입니다.

지금까지는 대수적 위상수학의 기본에 대한 것만 설명했습니다. 위상수학이 실제 데이터 분석 분야에서 혁명적인 진보를 이를 수 있었던 것은 ‘Persistent Homology’ 때문이 아닐까? 생각해 봅니다. Persistent 호몰로지 알고리즘은 토폴로지적인 불변량을 다양한 스케일에서 볼 수 있게 해 준다. 여기에서는 특정 스케일에서의 Hole의 갯수가 중요하기 보다는 Hole의 갯수가 동일하게 유지되는 스케일의 구간이 어디인지? 가 더 중요한 질문입니다. 

바코드 형태의 그래프는 호몰로지 그룹을 계산함과 동시에 시각화가 가능합니다.바코드 그래프에서 주요한 관심은 x축 선상에서 길게 유지되는 그래프입니다. Bar의 길이가 짧은 것은 대부분 토폴로지 잡음에 해당되는 경우 입니다. Bar의 길이가 길게 유지되는 bit이 데이터의 특징을 설명해 줄 수 있는 호몰로지 그룹입니다. 다음의 코드는 R의 phom packages를 이용하여 iris data의 바코드를 그려줍니다.

install.packages("phom") # phom 설치   library(phom) # phom 설치 확인 data = as.matrix(iris[,-5]) head(data) max_dim = 0 max_f = 1 irisInt0 = pHom(data, dimension=max_dim, # maximum dimension of persistent homology computed max_filtration_value=max_f, # maximum dimension of filtration complex mode="vr", # type of filtration complex metric="euclidean") plotBarcodeDiagram(irisInt0, max_dim, max_f, title="H0 Barcode plot of Iris Data")

위에 그림으로부터 3~4개 정도로 iris 데이터를 클러스터링 할 수 있을 것으로 생각할 수 있을 것이다. Filtration value가 0에서 1로 변하는 동안 계속해서 유지 되는 클러스터가 2개이고 0-0.7 동안 유지되는 바코드는 4개 정도이기 때문이다.


신고

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 표준 템플릿 입니다.


신고

Topological Data Analysis 방법에 대해 궁금한 사항은 Slideshare를 통해서 공개된 자료를 참고해 주시면 되고, 여러 논문들에서도 방법을 확인하실 수 있습니다. 뉴스타파는 제가 제일 신뢰하는 언론이기에 뉴스타파 홈페이지를 자주 방문하곤 합니다. 전국 242개 지방자치단체 토건예산, 복지예산, 자살률 자료가 공개 된지는 두어달 전이지만, 그동안 그냥 눈팅만 하다가 이제야 데이터를 직접 분석해 보기로 했습니다. Topological Data Analysis (이하 TDA)는 데이터 간의 거리 정보를 이용하여 데이터 간에 관계를 분석하는 기법으로 순수 수학인 '위상수학'에 뿌리를 두고 있습니다. 

데이터 분석을 위해서 사용한 데이터는 2009년 복지예산과 토건예산의 비율, 2012년 복지예산과 토건예산의 비율, 그리고 2012년 10만명당 자살자수(연령표준화) 데이터를 이용하여 242x3 의 크기를 갖는 데이터를 구성했고, 각 컬럼 단위로 데이터를 표준화 해서 사용했습니다. 표준화 한 후에는 자살률에 대한 효과를 극명하게 관찰하기 위해서 자살률 데이터에 x2를 하여 분석을 진행했습니다. TDA를 위해서는 거리 함수와 필터 함수가 필요한데, 거리는 각 데이터와 데이터 간의 L2-distance로 정의했고 필터 함수는 L-infinity eccentricity로 정의했습니다. 아래 그림에서 각 노드의 색깔은 필터 값을 의미합니다.

분석의 결과로 그래프가 생성되는데, 각 그래프의 노드에는 필터 값이 비슷하면서 거리가 가까운 데이터들이 몰려 있습니다. 가령 Group1에는 광주(북구), 전북(본청), 대구(북구) 가 비슷한 거리를 갖는 것으로 분석 되었는데, 아래 그림에서 볼 수 있듯이 Group1에 들어 있는 지방자치 단체의 경우에 자살률이 낮고, 2009년과 2012년의 복지예산이 토건예산보다 4배 이상 많은 것으로 나타났습니다. Group2도 자살률이 낮지만, 결과로 생성된 Topology에서는 Group1과는 다른 위치에 있습니다. 데이터를 자세히 살펴보니, Group2의 경우에는 2009년과 2012년에 모두 복지예산이 토건예산보다 많은 것은 물론이고, 3년 사이에 복지예산/토건예산의 비율이 거의 2배 이상 증가 했음을 알 수 있었습니다. Group2에 속한 지방자치 단체로는 서울(노원구), 대구(달서구), 대전(서구) 가 있습니다.


복지예산과 토건예산의 비율이 자살률과 관련이 있다는 것은 Group3의 결과를 보면 알 수 있는데요, Group3의 경우에는 자살률은 Group1과 Group2에 속한 지방자치단체보다 자살률이 2배로 높게 나타났지만, 2009년과 2012년의 복지예산과 토건예산의 비율이 자살률이 낮은 그룹에 비해서 현격하게 줄어들어 있음을 알 수 있었습니다. Group3에 포함된 지방자치단체로는 강원(홍천과 양양), 충북(단양), 전북(장수), 전남(함평), 경남(함양)이 있습니다.



Group4에 포함되어 있는 지방자치단체의 경우에는 인구 10만명당 자살률이 약 30명 정도 이고, 위의 그래프를 보면 복지예산의 비율을 점점 높여 가려는 노력을 기울이고 있다고 볼 수 있습니다.

이번 데이터 분석을 진행하면서 TDA를 통해 데이터의 insight를 찾을 수 있음에 대한 더욱 큰 확신이 들었고, 실제로 복지예산과 토건예산의 비율이 자살률과 크게 관련 있다는 결과를 지방자치단체장님들께서 인지하시어 전국 각지에 좋은 복지 정책들이 제공되었으면 좋겠다. 그래서 떠나고 싶은 나라. 살기 싫은 나라. 가 아니고, 내가 국가로부터 받은 (복지 등) 혜택을 어떻게 다 보상해야 할까? 를 고민하는 국민이 늘어나는 나라가 되었으면 좋겠다. Group1,2와 Group3에 속한 지방자치단체장의 정당 구성까지 살펴보고 싶었는데, 그렇게 하면 거의 논문 수준이 될꺼 같아서 여기까지만!

여담으로 국가수리과학연구소에서 3년간 근무하면서 얻은 가장 큰 수확은 인성의 뇌신경 상관성 연구 논문을 출판한 것이고, 두번째로 큰 수확은 Topological Data Analysis에 대한 수학적 이론과 방법을 터득하여 실제 데이터 분석에 활용할 수 있는 수준이 되었다는 것이다. 아직 해결하지 못한 부분은 필터 함수를 2차원으로 적용하는 방법인데... 음, 올해 안에 해결할 수 있도록 해야지.


작성자: 데이터과학자 경성현



신고

뇌과학 분야에서 출판한 첫 논문이기에 꼭 후기를 남기고 싶었다. 
물리학 분야에서 첫 논문이 출판되었을때 후기를 썼던 것 처럼... 

논문의 Manuscript가 대략적으로 완성된 시점은 2012년 12월 쯤으로 기억한다. 데이터 획득부터, 뇌영상 데이터의 분석, 그리고 논문 작성의 전체 과정에 직접 참여했기 때문에 나에게 의미가 더욱 각별하게 느껴지는 논문이다. 이번 연구는 "기질Temperament에 따라서 뇌네트워크의 연결성이 다르게 나타나고 그로 인해서 서로 다른 모듈 구조를 갖는다"는 것을 주요 결과로 하고 있으며, 논문 초안의 제목은 <Functional and morphometric neural mechanism underlying personality differences: Introverts vs. Extraverts> 으로 정했다. 인성의 외향성은 기질의 위험회피 척도와 자극추구 척도로 구분하는 것이 무리일 수도 있다는 것은 어느정도 예상했고, 특히 성격심리학자들이 보기에는 완전 엉터리로 들릴 수도 있겠다는 생각도 했다. 그리고 이러한 나의 생각은 여러 관련 분야의 선생님들께 조언을 구하는 과정에서도 가장 많이 질문 받고 또 진지하게 토론했던 부분이었다. 뭐, 처음이니까 부족한 부분이 있기 마련이고 부족한 부분은 저널 리뷰어들의 질문에 답을 하는 과정에서 보충 될 수 있지 않을까? 라는 생각에 여러 선생님들께 조언 받은것은 따로 정리는 해 두었지만, 처음 논문을 투고 할때는 보완하지 않았다. 

논문을 투고하기 전에 연구 결과의 해석과 결과의 타당성에 대해 전문가들의 조언을 듣고 싶었다. 처음 논문을 준비할때 공동 저자로 참여한 연구자들은 대부분 물리/공학을 기반으로 뇌과학을 연구했던 분들이었기 때문에, 논문의 특성상 심리학이나 정신의학 분야에서 뇌과학을 연구하고 있는 분들의 조언이 꼭 필요하다고 생각했다. 제일 먼저 찾은 곳은 성신여대 심리학과에 계신 K교수님과 여러 대학원생 선생님들이었다. 발표를 듣고 난 후에 대부분 "선생님들의 반응은 방법론과 결과에 대해서는 재미있으나, 기질 및 성격 검사(Temperament and Character Inventory, TCI)에서 측정된 위험회피(Harm Avoidance, HA) 척도와 자극추구(Novelty Seeking, NS) 척도로 내성적인 성향의 사람과 외향적인 성향의 사람을 구분하는 것은 위험한것 같다. 이미 성격심리학자들이 내성/외향을 구분하기 위해 개발한 성격검사지가 있는데, 그것을 사용하지 않고 연구자 임의로 내성과 외향을 정의하는 것은 많은 reviewer들에게 공격 받을 것이다." 라는 조언을 해 주셨다. 이후에 고려대학교 심리학과와 연세대학교 정신건강의학과를 연달아 찾아다니며 발표를 했고 조언을 구했으며, 세부적인 측면에서는 차이가 있었지만 큰 맥락에서는 대부분 비슷한 조언을 해 주셨다. 위험회피 척도와 자극추구 척도가 음의 상관관계에 있고 이들 두개의 척도로 그룹을 나누었다면, 그룹지어진 결과 그대로 'high HA and low NS' 그룹과 'low HA and high NS' 그룹으로 나누는 것이 더 설득력 있는 연구결과가 될꺼라는 조언이 지배적이었다.

여러 선생님들께서 조언해주셨던  부분에 대해서 저널 리뷰어에게도 비슷한 조언을 받았고, 어떤 부분이 부족한지 어느정도는 미리 알고 있었기에 내용을 보충하는데 큰 어려움이 있거나 많은 시간이 들지는 않았다. 하지만 연구 논문의 서론 부분이나 토의Discussion을 작성하는 과정에서 심리학자나 정신의학 분야를 전공하신 선생님들의 적극적인 도움 없이는 논리에 헛점이 발생할 수도 있겠다는 생각에 정신과 의사 선생님을 공동 저자로 섭외했고 도움을 받았다. 그러나, 처음 초안을 너무 허술하게 잡았기 때문에 부족한 부분이 많을 수 밖에 없었기 때문에 두번이나 논문 게재를 거절 당했다. 그래도 우여곡절 끝에 Brain Research라는 저널에서 논문 게재를 허락 받았으니 얼마나 다행인지 모른다. NeuroImage에 투고했던 논문을 수정/보완하여 Brain Research에 재투고 했었는데 NeuroImage와 Brain Research 모두 NPRC consortium에 멤버로 들어있는 저널들이었기 때문에 서로 Reviewer's comments를 공유해줬고, 논문 수락 process도 빨랐던것 같다. 초기에 논문 제출할때와는 달리 최종적으로 수락된 논문의 제목은 <Functional network organizations of two contrasting temperament groups in dimensions of novelty seeking and harm avoidance> 이다.

연구 결과는 International Workshop in NeuroDynamics 2014 (July 14-17 2014, Castro-Urdiales, Spain) 학회에서 처음으로 소개되었고, 발표 자료는 Slideshare를 통해 공개했다. 뭐든 처음이 가장 어렵다고 한다. 내게도 이번 연구가 뇌과학 분야에서는 처음으로 출판하는 논문이었기에 많은 시행착오가 있었다. 하지만 이번 논문 게재를 바탕으로 현재 진행중인 ADHD 환자의 Topology와 뇌네트워크 분석관련 연구도 잘 정리해서 논문으로 완성하는 날을 생각하번 벌써부터 가슴이 뛴다.

이 글을 통해서 공동저자로서 함께 결과를 내주신 여러 선생님들과 도움을 주신 모든 분들께 다시한번 감사인사를 드립니다. ^.^


작성자: 뇌과학자 경성현

신고

병변Lesion이 있는 환자의 뇌영상을 분석할 때, 종종 영상의 좌-우를 반전Flip이 필요한 경우가 있습니다.

가령, Stroke으로 인해 운동영역에 손상을 입은 환자의 병변을 overlay 하는 연구를 진행한다고 했을때,

가장 좋은 방법은 병변이 한쪽으로 몰려 있는 환자들만을 피험자로 선정하여 연구를 진행하면 좋습니다.

하지만, 모든 뇌졸중 환자들이 천편일률적으로 오른쪽 대뇌 피질의 운동영역에 손상이 오지 않습니다.

어떤 환자는 왼쪽 운동영역에 손상이 오기도 하고, 어떤 환자는 오른쪽 운동영역에 손상이 오기도 합니다.

이럴때는, 피험자의 숫자가 적은 쪽의 뇌영상 데이터를 좌-우 Flip하여 병변이 한쪽인것처럼 맞춘 후에

통계분석을 하게 됩니다. 이러한 경우가 아니더라도, 뇌영상 데이터를 처리하는 과정에서 좌우가 바뀌어져 있다면,

올은 방향으로 전환해야 합니다. 모든 의료영상 데이터가 모두 마찬가지겠지만, 

뇌영상 데이터를 다룰때는 왼쪽과 오른쪽이 제대로 되어 있는지 꼭!! 확인한 후에 연구를 진행해야 합니다.


아래에 첨부된 파일은 임의의 뇌영상 데이터를 선택하고,

선택된 영상의 좌우를 반전시키는 프로그램입니다.

프로그램을 실행시키기 위해서는 우선, spm8의 path가 설정되어 있어야 합니다.

참고 Data Analysis (1): Neuroimaging Data loading using SPM8 toolbox


다음의 명령어를 통해서 뇌영상을 MATLAB workspace에 loading하게 되면,

>vin = spm_vol(fn); >IMG = spm_read_vols(vin);

IMG 변수는 3차원 볼륨 영상이 저장됩니다.

좌-우, 앞-뒤, 상-하 반전의 핵심은 

불러들인 뇌영상을 새로운 파일에 저장할때, 

다음과 같이 한쪽 방향의 데이터를 순서를 거꾸로 하여 저장하는 것입니다.

>spm_write_vol(vout, IMG(end:-1:1,:,:)); # 좌-우 flip >spm_write_vol(vout, IMG(:,end:-1:1,:)); # 앞-뒤 flip >spm_write_vol(vout, IMG(:,:,end:-1:1)); # 상-하 flip


좌-우 flip과 관련된 전체 MATLAB 프로그램은 

첨부된 파일을 참고하시면 도움이 될것 같습니다.

참고로 MATLAB에서 'end'라는 변수는 미리 지정되어 있는 변수로서,

어떤 행렬 또는 벡터형 데이터의 맨 마지막 데이터를 의미합니다.


작성자: 뇌과학자 경성현

filplr.m


신고

수학에서의 그래프 이론(Graph Theory)과 물리학에서의 복잡계 네트워크(Complex Network)는 관련 전공자가 아닌 분야의 사람들에게는 비슷하게 느껴집니다. 저 또한 수학자도 아니고 물리학자도 아니기에 그래프 이론과 복잡계 네트워크를 혼용해서 사용합니다. 두 학문 분야의 전문가들이 보시기에는 다른 학문이으로 생각되겠지만, 그래프 이론이나 복잡계 네트워크에서 발견된 연구 결과물을 활용하는 연구자들에게는 '그게 그거 아닌가?' 라는 생각이 들기 마련인 것 같습니다. 저 또한 그래프 이론과 복잡계 네트워크라는 용어를 구분하지 않고 혼용해서 사용합니다.

그래프는 '점'과 '선'의 집합으로 구성되어 있습니다. 그래프에서 노드와 노드가 어떻게 연결되어 있는냐에 따라서 community를 이루기도 하지요. 파이썬이나 매틀랩 등의 스크립트 프로그래밍 툴에서도 그래프를 분석하는 기능을 제공하지만, 본 강좌에서는 R의 igraph library를 이용한 데이터 분석 방법을 소개해 드리고자 합니다. R이 익숙하지 않으신 분들은 실습은 Rstudio에서 연습 하시면 좋을것 같습니다.

우선 igraph라는 라이브러리를 설치해야 합니다.

> install.packages("igraph") # igraph 설치   > library(igraph) # igraph 설치 확인

igraph 라이브러리가 잘 설치를 완료 했으면, 이제 간단한 그래프를 만들어 보겠습니다.

> G <- graph( c(1,2, 1,3, 2,3, 3,5), n=5) > G_und <- as.undirected(G) # 방향성이 없는 그래프 > G_dir <- as.directed(G) # 방향성이 있는 그래프

위에서 생성한 그래프는 5개의 점(node or vertex)이 있고, 점을 있는 선은 총 4개가 있습니다. 정말 그렇게 생성되었는지 확인해 봅시다.

> V(G_und) # 노드가 5개인지 확인.

Vertex sequence:  [1] 1 2 3 4 5

> E(G_und) # 선이 4개 인지 확인. Edge sequence: [1] 1 -> 2 [2] 1 -> 3 [3] 2 -> 3 [4] 3 -> 5

이제 그래프를 그림으로 확인해 보겠습니다. E(G)에서도 확인할 수 있지만, 4번 노드는 연결 선이 하나도 없이 혼자 동떨어져 있습니다. 이것이 그림으로는 어떻게 표현될까요?

> plot(G_dir) # 그래프를 그림으로 확인.

plot(G_und)를 하면, 노드와 노드 사이에 연결된 선의 화살표가 없는채로 방향이 구분되지 않는 형태로 그래프가 그려질 것입니다. 여기까지 따라하셨드면, R을 이용한 그래프 그리기의 기초적인 과정은 끝났습니다.

이제 실제 연구에서 사용되는 네트워크 데이터를 분석에 활용해 보도록 하겠습니다.

** application to brain network analysis will be updated soon **

신고