突发奇想,打算开始写一些的关于Python在神经影像分析中的应用的文字(之所以用Python,是因为Python是一个可以替代昂贵的MatlabT的语言)。从哪里说起呢,当然是Nipype。

之所以从Nipype写起,主要出于以下几个原因:首先Nipype是我接触的第一个用python处理神经影像数据的工具;其次,由于在Nipype项目开始就一直追踪这个项目,我在2011年暑假开始参与到Nipype的项目中去,根据Nipype的框架设计,贡献了自己的工作,这个工作在2012年初随发布版v0.5发布给更多的人使用,给自己带来小小的成就感;当然,最重要的是,Nipype的各种优点让我越来越偏爱。后面我会根据自己的理解间歇地介绍一些对Nipype的了解。

如果你想深入了解Nipype,而且比较喜欢读英文(因为我们一般认为从英文原版的文档中能得到更精确的理解),可以直接点击Nipype;如果你只是好奇,而且和我一样是一个懒人的话,就接着往下读吧,我会尽量把我的理解写在下面和以后的文字中。

Nipype是指Neuroimaging in Python: Pipelines and Interface,即Nipype实现了用Python做神经影像处理的流程管道和标准接口。Nipype之所以值得推荐,需要从目前神经影像处理工具的现状说起。

如果你是通过类似“神经影像处理”的关键词链接到这里的,那么你应该对一下几个软件有所耳闻:免费的FSL,AFNI,Freesurfer,SPM以及昂贵但值的BrainVoyager等等很多的工具。这么多可选的工具,很容易让人选的眼花缭乱,

比如我在DTI数据处理时可能会考虑采用SPM呢还是FSL呢?面临我的是大量的格式不一的使用手册;另外,我可不可以选择不同软件中占优势的算法来处理我的数据呢?怎样实现会方便一些?Nipype便采用统一的使用方法为现存的不同软件提供了统一的接口,并采用Workflows的概念实现了不同软件间的交互。

更炫的是,Nipype在计算效率上也在下功夫,不断完善对并行计算的支持,这也是面临“大数据”处理必须要做的。采用Nipype你几乎不用写脚本,就可以实现数据处理的并行计算了。如果你的计算服务器上安装了SGE,那么你可以提交Nipype的任务,如果你懒得配置SGE,直接用Nipype也可以实现并行计算,当然前提是你有多个处理器。

关于Nipype的概况的理解基本就这些,个人理解,欢迎指正!