Fullscreen
Loading...
 

Project:BrainConnectivity

Brain networks in health and disease   

Project coordinator: Arvid Lundervold

Part of the Aging - cognition, imaging and genetics project, funded by the Western Norway Regional Health Authority (PI: Prof. Astri J. Lundervold)

Background  Image  

The brain contains complex networks, both structural and functional. Such networks can be described by mathematical graphs, where the nodes typically represents areas of the cerebral cortices, and the edges myelinated fiber bundles

Figure to the right is from Olaf Sporns (http://www.scholarpedia.org/article/Brain_connectivity)

 

Challenges and research questions

a)                                                                                                                                                 b)

Image  

Structural and functional connectivity assessed with magnetic resonance imaging (MRI)  [ also part of BMED360 ]. Image-derived information from a multi-modal MRI examination of a healthy volunteer in the study of “cognitive aging”, obtained automatically with different freely-available image processing and analysis tools. 

Coregistration (spatial alignment) of the different modalities was implemented in MATLAB.

In a) a T1-weighted anatomical 3-D image is superimposed with: (i) an anatomical region (left thalamus) segmented with FreeSurfer; (ii) spatial components of resting state networks (RSNs) derived from independent component analysis (ICA) analysis of the functional BOLD fMRI recordings; (iii) white matter fiber tracts (blue) between these regions of interest.

Yellow “blob” represents the ventromedial prefrontal cortex (VMPFC) component of the default mode network (DMN) defined by IC-3. The "blob" in pink represents the spatial intersection between anatomical thalamus and the RSN defined by IC-26. 

In b) the lower and upper traces show the corresponding time courses (256 frames; TR= 2 s) of the resting state components. Lower trace is IC-3 (DMN). Upper trace is IC-26 located in the central thalamic region (not part of the DMN).

The left insert shows histogram of the diffusion tensor fractional anisotropy (FA) values, reflecting "white matter integrity" of the fiber tracts and structural connectivity between the two brain regions (right insert). Functional connectivity is measured by cross-correlation between time courses IC-3 and IC-26.

More detailed description of this processing machinery is given in Hodneland et al. (2012)[See also Lundervold A. On consciousness, resting state fMRI, and neurodynamics. Nonlinear Biomedical Physics 2010,4(Suppl 1):S9  doi:10.1186/1753-4631-4-S1-S9]   

Contributions from:  Martin Ystad, Tom Eichele, Erlend Hodneland, Judit Haasz, and Arvid Lundervold 

Anatomy1.nii.gzAnatomy2.nii,gzDWI.nii.gzbvec.datbval.datResting.nii.gzFingertapping.nii.gz          

FreeSurfer (5.3.0) processed 3D T1-weighted anatomy data:  subjects.tgz (575 MB exclaim)

MRI data sets from #538 (wave1, wave2, wave3) can be found here  (in NIFTI) ; Resting state TR = 2 s         
MRI data sets from #559 (wave1, wave2, wave3), including Freesurfer and TrackVis processing, can be found here (1.8 GB exclaim)

exclaim NEW data for TDA

Freesurfer 5.3.0 and CONN processed structural and functional data from #507, wave2

Image

func.nii.gz | orig-2-MNI152_T1_2mm_brain.nii.gz | wmparc-2-MNI152_T1_2mm_brain.nii.gz | subj_507_wave2_func.csv (1.59 GB (!) )

The R Notebook: fMRI_TD.Rmd and its PDF version

R>
library(RNifti)
# Using the R-package https://github.com/jonclayden/RNifti
# func.nii.gz is obtained after preprocessing of RS-fMRI recordings 
# from subject 507 in wave 2 with CONN (https://www.nitrc.org/projects/conn)

# Saving the 4-D fMRI data (=image) as vectors $x^i, y^i, z^i, t^i_1, t^i_2,...,t^i_{256}$ 
# in a CSV-file for an enumeration of the voxels $i=1,....,902629$, where
# $x^i, z^i \in \{1,...,91\}$, $y^i \in \{1,...,109\}$ 
# and voxel intensities versus time is $t^i_j \in [min(image), max(image)]$.
# The value of the data sample in voxel coordinate [x,y,z] at time t is **image[x,y,z,t]**

image <- readNifti("func.nii.gz")
dim(image)
pixdim(image)
pixunits(image)
print(image)
# Image array of mode "double" (1.7 Gb)
# - 91 x 109 x 91 x 256 voxels
# - 2 x 2 x 2 mm x 1 s per voxel
min(image)
# -5.657024
max(image)
# 4.116746

# Brute force ...
X = matrix(NA, nrow = 91*109*91, ncol = 3+256)
i = 0
for (x in 1:91){
  for (y in 1:109){
      for (z in 1:91){
        i = i+1
        X[i,] = c(x,y,z,image[x,y,z,1:256])
      }
  }
}

library(data.table)
# Slow:
system.time(write.table(X,
            file="subj_507_wave2_func.csv",
            sep = ",",
            dec = ".",
            row.names = FALSE, 
            col.names = FALSE))
# > 10x faster:
system.time(fwrite(as.data.frame(X), "subj_507_wave2_func_df_fwrite.csv"))


 ( Let us know and be acknowledged if you use any of these data for publication - arvid.lundervold at biomed.uib.no )

How to import data

MATLAB - http://mathworks.com/products/matlab:

Download 'my_load_nifti.m', 'my_strlen.m', 'my_load_nifti_hdr.m', and 'my_save_nifti.m', slightly modified from corresponding files in the the matlab-tree of Freesurfer. The 4D dataset 'Resting.nii.gz' can then be read into MATLAB workspace by

MATLAB >> 
D = my_load_nifti('Resting.nii.gz');
size(D.vol)
%  -> 64    64    25   256
D.vol(11,12,13,14)
% -> 17
plot(squeeze(D.vol(30,31,12,:)), 'k-')
R - http://www.r-project.org:
R > 
library(RNifti)
image <- readNifti("Resting.nii.gz")
# The value of the data sample in voxel coordinate [x,y,z] at time t is image[x,y,z,t]
dim(image)
pixdim(image)
pixunits(image)
print(image)
Julia - http://julialang.org:
JULIA > 
# Pkg.add("NIfTI")
using NIfTI
ni = niread("Resting.nii.gz");
# The header is in nii.header; 
# NIfTI extensions are in nii.extensions; 
# the raw volume is in nii.raw
# To get the TR and voxel size:
vsize = voxel_size(ni.header)    # In mm
# 3-element Array{Float32,1}:
# 3.75
# 3.75
# 5.5 
tr = time_step(ni.header)          # In ms
# 2000.0
(nx,ny,nz,nt) = size(ni.raw)
# (64,64,25,256)
d = ni.raw[11,12,13,14]            # Unscaled, one-based indexes  [x, y, z, t]
# 17
# Pkg.add("Gadfly")
using Gadfly
plot(x=[1:nt],y=ni.raw[30,31,12,:], Geom.line, Guide.XLabel("Frame #"), Guide.YLabel("SI"))

Getting started

  • MATLAB-based: see SPM12 Statistical Parametric Mapping and CONN functional connectivity toolbox
  • Data from two subjects (sub538 and sub559) with two examinations (wave2 and wave3) comprising rs-fMRI (func/rest.nii.gz) and 3D anatomy (anat/anat3d.nii.gz): CONN_processing
  • R and medical imaging: see CRAN Task View: Medical Image Analysis
  • FMRIB Software Library FSL FMRIB Analysis Group, University of Oxford, UK
  • FreeSurfer - Martinos Center for Biomedical Imaging, MGH / Harvard-MIT Health Sciences and Technology / Harvard Medical School

Reports on results