PyMVPA安装

多体素模式分析(multi-voxel pattern analysis, MVPA)是一种基于机器学习理论发展出来的一种功能磁共振数据分析技术,简单说,就是通过多个体素的信息融合在一起用于后续的预测等统计分析。具体实现上,PyMVPA是研究者常用的一个工具包。下面记录PyMVPA安装步骤,备查。

系统环境:Centos 5.7 64bit 非root用户

Scipy安装方法类似,主要涉及如下命令:

# pip install --user pymvpa2

如果安装顺利,会显示如下文字,表示安装完成:

Successfully installed pymvpa2
Cleaning up...

但是,更多的可能会碰到如下问题:

unable to execute 'swig': No such file or directory
error: command 'swig' failed with exit status 1

这个报错说明需要首先另外安装这个叫swip的工具,实际上,SWIG可以允许一些脚本语言调用C/C++语言的接口。支持的语言有:Perl, Python, Tcl, Ruby, Guile, and Java。在PyMVPA中主要就是涉及与Python的对接了。安装SWIP步骤如下:

Read More

投稿经历: A Paper On Head Motion And Impulsivity

这个研究关注的问题是:核磁扫描过程中的头动纯属设备噪声,还是携带了关于被试的有意义的信息?

下面是我简单写了一个中文摘要:

核磁共振成像(MRI)技术的发展为我们理解人类智能和脑疾病提供了有效的手段,在实际应用中,MRI扫描过程受到了一些无关因素的影响,头动就是其中之一。传统观点认为,头动是毫无意义的混淆因素,由于它会影响MRI信号,研究者想尽各种办法试图将头动的信息彻底去除,而这些方法往往是基于一个未经验证的假设:MRI扫描过程中的头动是简单的技术噪声。但是,这些头动究究竟只是简单的噪声,还是其本身也带有很重要的信息,目前我们对此知之甚少。本研究对MRI扫描过程中的头动的个体差异是否反映了被试的心理特质做了系统探讨。首先,我们在大样本的儿童(N=245)和成人(N=581)中均发现,头动的个体差异与被试的冲动水平存在显著相关,即被试越冲动,头动越大。进而,结果发现,多动症儿童与正常对照儿童在头动上的差异,很大程度上是由于他们在冲动水平上的差异导致的。综上所述,本研究发现MRI扫描过程中的头动反映了被试的冲动水平,这为更全面地认识头动提供了实验证据和全新的观察视角,同时,本研究对新的消除头动影响算法和处理策略的提出也有着深的指导意义。

Kong X-z, Zhen Z, Li X, Lu H-h, Wang R, et al. (2014) Individual Differences in Impulsivity Predict Head Motion during Magnetic Resonance Imaging. PLoS ONE 9(8): e104989. doi:10.1371/journal.pone.0104989

这篇文章从2013年4月11日开始投出到2014年7月16日终于接收,历时15个月又5天。期间共收到9次Reject,送审5次,其中2次Major revision,最快的回应来自Current Biology,相隔一夜。发生了奇葩的同一个reviewer连续审了三次的故事(具体见下面的投稿记录和感触)。

  • 过程中,虽然收到reject会有些失望,但是不断有来自外界的意见也会感到很踏实,每次都根据意见修改,每次都有所提高。
  • 投稿过程中推荐reviewer至关重要,尤其对于neuroimage以下的这种中等杂志。
  • 如果有机会回复reviewer的意见,要尽力做到100%满足reviewer的意见。
  • 回复reviewer意见和提交修改稿要安排好时间,尽量在20~30天时完成重新提交

虽然只能发表在PLoS ONE上,但是能把一个自己的观点表达出去还是很高兴的。况且文章刚发表,就得到了领域大牛BB的认可。大牛BB得知这篇文章后,主动和我老板通邮件,表达恭喜的同时,说
Congrats on a really interesting paper on head motion and impulsivity. (Even more surprising is that it was not in a high impact journal!)

不管怎样,能得到大牛如此高度的认可,真的荣幸至极!感谢我的导师刘嘉老板在这个过程中的悉心指导和不断鼓励。


下面投稿记录:

Read More

AFNI安装/AFNI Installation

除了FSL和SPM,AFNI也是研究者常用的脑影像处理工具。官方提供了详尽的安装步骤(非管理员权限),点。这里做一些补充。

根据官方安装步骤的说明,在安装AFNI之前,需要首先安装几个依赖的package,包括libXp, tcsh,PyQt4, 和R。安装步骤参看上面提及的链接,下面几条命令用于检查自己的机器是否安装完成了上述依赖package。

rpm -qa | grep libXp
rpm -qa | grep tcsh

这两条命令会在terminal中print出相应package的文件名。

which R

正常情况下,上面这条命令会print出R的路径。

PyQt4是Python的一个工具包,下面检查是否安装完成PyQt4.

ipython
>from PyQt4 import QtCore
>

在Python中输入第二条命令后如果没有报错,就是安装完成了。

接下来可以按照官方安装步骤完后进行。在选择AFNI的版本时,如果机器有多个CPU,可以选linux_openmp或64位系统的linux_openmp_64;只有一个CPU的话,可以选linux_xorg7linux_xorg7_64

我用的Centos7,环境变量PATH采用~/.bashrc控制,而不是官方安装步骤中的.cshrc,所以在~/.bashrc中添加如下几行即可:

Read More

Scipy安装步骤

Scipy函数库是基于python做科学和工程计算中常用的库,其中包括了众多的线性代数、数值计算、图像和信号处理、稀疏矩阵等。在基于python做脑影像处理时,scipy也是最常用到的python库之一。下面记录安装scipy的步骤,备查。

系统环境:Centos 5.7 64bit

在非root权限下,需要把库安装在自己有权限的目录下,比如采用pip提供的—user参数将默认安装到.local/lib/python2.7/site-packages/中。

安装scipy涉及到的主要命令如下:

pip install –user scipy

不过一般情况下,你会碰到如下的问题:

Read More

这个5月

这个五月是一个折腾的五月,时间关系,简单罗列如下。

五月初,参加在北京举办的ISBI2014,第一次带着自己的poster在会场展示,虽然只是一个one-page paper,也是第一次自己一个人参加国际学术会议,经历难得。会上学习到很多,也结识了不少新朋友。

Read More

deploy时[non-fast-forward]reject问题解决方案

Github+Octopress rake deploy时[non-fast-forward]reject问题解决方案

好久没更新blog,今天写好文deploy时发现报错:

! [rejected]        master -> master (non-fast-forward)

在网络google了半下午,终于找到了解决方案:

更换目录,并更新:

cd octopress/_deploy
git pull origin master

跳出目录,重新deploy:
cd ..
rake deploy

问题解决。

Read More

Paired t or two-sample t-test

之所以谈这两种t检验方法,是因为一篇很有意思的问题,即Neurobiological basis of head motion in brain imaging。在介绍完两种t检验方法后在回来谈论这篇文章。

双样本t检验Two-sample t-test | 配对t检验Paired t-test

双样本t检验,也叫独立样本t检验。即考查两个相互独立的样本的均值的差异。(与配对t检验相比,这里的两组样本是没有配对信息的,比如比较男生和女生在方向感能力上的差异)

f1

其中s1和s2分别为两个样本的标准差,n1和n2为两个样本的样本量。此时,t值的自由度为n1-1和n2-1中较小的一个。

Note: 在假设两个样本的variance相等的情况下,自由度为n1+n2-2,这也是我们常见的自由度计算方式,SPSS中给出了假设方差相等的自由度,以及方差不等时根据两个样本各自的方差和样本量估计的自由度。感谢@斯图拉特 童鞋提醒 :)

当n1=n2=N时,可以简化为

f2

这时候自由度为n1+n2-2,即2N-2。

Read More

Install and Use R Package

安装:

  • Method 1:

Install from source
下载工具包, 比如irr包,用于计算ICC:

$ R CMD INSTALL irr_0.84.tar.gz -l /my/own/R-packages/

注:这是在Linux的Terminal中完成的。

  • Method 2:

Install from CRAN directly:

install.packages(“irr”, lib=”/my/own/R-packages/“)

注:这是在R中完成的。

上述两种方式有一个很明显的区别,即方法一不会自动下载安装irr包需要的依赖包,比如lpSolve包,而后一种方法则可以自动检查并下载需要的依赖包。

使用:

下面是如何使用R,在使用irr包中的函数之前,需要首先导入该包,也就是告诉R你需要调用哪个包里的函数,这个包在哪里:

Read More

动态网络矩阵 可视化

在过去的几年里,网络分析方法从社交网络辗转到人脑网络,火爆一时,也饱受诟病。不管怎样,网络分析方法确实给我们提供了一个新的观察和认识人脑的方式。

科学发展往往遵循一个“从一元到多元,从静态到动态”的演变规律,如今,研究者也不再满足分析一个单独的静态网络,而是开始试图从动态变化的视角观察人脑网络。这个动态可是短时的(比如一次扫描中人脑网络的变化),也可以是长时的(比如是在一天中不同时段人脑网络的变化,甚至是人的一生中脑网络的动态变化)。

通常,研究者采用一个矩阵来存储一个网络,矩阵中每个行或列表示一个node,而每个cell的值表示相应的两个node的连接强度。

网络矩阵

Read More

添加Endnote样式

学术论文投稿过程中一个重要的步骤是按照学术期刊要求整理manuscript的格式,其中参考文献的格式是很关键的一步。Endnote是参考文献管理的一个很好用的工具。

在具体操作过程中,期刊一般会指定参考文献的Endnote样式,或者提供专用样式下载。针对第一种情况,选择相应的样式即可,针对后一种情况,则需要首先将专用样式下载,然后加入到Endnote中。具体方式以Human Brain Mapping为例记录备查。

Read More

由一篇JN上的文章想到的

这周组会我报告的是薛贵老师发在JN上的一篇脑结构预测reading ability的文章。起初选择该文章是出于以下两点考虑:1. 近期做个体差异的工作相对多一些,在分析方法上可能有所借鉴;2. 写作思路上的借鉴。

这篇文章内容大致如下:

在以往存在功能和结构成像技术研究reading的加工机制和个体差异的神经基础的背景下,作者提出已有研究存在两个问题,一方面往往采用单一的reading task,而reading ability是一个复杂的能力,由多个成分构成;另一方面样本量相对偏小。然后作者针对这两点,展开自己的研究。这篇文章涉及到7个不同的reading task,作者首先做了因素分析找到其中的3个成分,并分别命名为phonological readingform-sound associationnaming speed。然后采用fMRI研究中常用的MVPA的方法采用VBM的结构数据分别对3个成分进行预测。最后也采用传统的一元分析方式与MVPA的结果做了简单的对比。

Read More

对surface参数做配对T检验:以睡眠剥夺实验为例

在脑科学的研究中,带有操纵的前后测实验相对于个体差异或组间比较的实验,分量要相对大很多。而前后测往往就涉及到统计上的配对T检验。下面以一个例子记录一下针对Freesurfer生成的surface上的参数做配对T检验(Paired T-test)的流程。一方面自己备查,另一方面也希望对有相同需求的同学有所帮助。

这是一个前后测的研究,中间睡眠剥夺约72小时,共8名男性参与测试。下面的分析旨在考查72小时的睡眠剥夺是否对被试的皮层厚度(thickness)产生了一定的影响。

Read More

From freesurfer labels to volumetric masks

最近的工作涉及到获取两个脑区的mask:Fusiform GyrusEntorhinal Cortex。考虑到被试间的结构变异,决定采用Freesurfer针对被试的T1像分割的结果,其中主要涉及到recon-all这个命令。

在每个被试分割生成的结果中有两个分割方案,分别是aparc.annot[]和aparc.a2009s.annot[]。查看一些材料后,发现在要获取的mask上,两个分割方案存在一些差别。其中,aparc.annot中有单独的Entorhinal Cortex,而在aparc.a2009s中则将其融合进了旁海马的结构中,这样为了获取Entorhinal Cortex,可以从aparc.annot中获取;这对Fusiform Gyrus,在aparc.annot中存在一个Fusiform Cortex,即包括了Gyrus和Sulcus的结构,而在aparc.a2009s.annot中则把Gyrus和Sulcus做了区分,这样Fusiform Gyrus就可以从aparc.a2009s.annot中获取了。

接下来简单的记录一下从label到mask的操作过程(以Entorhinal Cortex为例):

Read More

互信息杂谈

谈到互信息,必然涉及到“信息”和“熵”两个概念。信息论的创始人Shannon给信息的定义是“用来消除不确定性的东西”;而在信息论中,熵表示的是不确定性的度量,不确定性越大,熵越高。对于一个熵越大的随机变量,需要越多的信息量来确定它的值。

而互信息是一个用来在信息论中衡量两个信号关联程度的度量,后其被用来对两个随机变量间的关联程度进行描述。互信息I(X;Y)=H(X)-H(X|Y)直观的意思就是知道了Y的值以后,我们对X的不确定性的减少量,即Y的值透露了多少关于X的信息量。(Mutual information measures the reduction of uncertainty in X after observing Y. )

互信息是非负的,也是对称的。当I(X;Y)远大于0时,表示二者关联度大;当I(X;Y)=0时,二者无关。且I(X; Y) = I(Y; X)。虽然,在某些计算互信息的工具包中二者并不相等。

Read More

用Python获取命令行输出

Python在慢慢成为脑影像数据处理中的主流语言。而在做脑影像处理时,不免有时候需要用到一些别人开发好的工具包,而这些包并不都是python包。比如对方采用C写好了算法,我们觉得这个算法很好,用在自己的数据上应该会有不错的结果。我在处理脑影像数据时遇到下面的情况:

需要用的工具包是C写的,那第一件事就是需要在运行该脚本的机器上重新编译该代码为可执行的程序,也就是用make了。

产生可执行文件后,在Terminal中执行测试,可以正常运行,发现结果以print到屏幕上的形式给出。

通常我采用python进行脑影像数据的读写,在读取数据后并进行一定的预处理后,需要循环调用上面提及的可执行程序,并获取其输出的结果。这时候如何来实现呢?显然,常用的’os.system()’是搞不定的,引起它只会返回程序的执行状态。下面是在网上查到的几种方案,尝试过都可以work。


Read More