通过并行化来加快床柱的速度



我正在使用一个名为bedpostx的fsl工具,该工具用于将扩散模型拟合到我的(预处理的)数据中。问题是这个过程已经运行了24个多小时。我想通过穷人并行化来加快这个过程。为此,我应该在几个终端中运行bedpostx_single_slice.sh,将其应用于一批切片。不过,我总是犯错误。这是我在终端中发出的命令:

bedpostx_single_slice.sh Tirocinio/Dati_DTI/DTI_analysis_copy 37

其中第一个输入是包含我的数据的目录,37是我要分析的第I个切片。这是我得到的错误:

terminate called after throwing an instance of 'std::bad_alloc'
what():  std::bad_alloc
Aborted (core dumped)

不幸的是,关于这些工具的文档并不多,而且我对编程还很陌生。

如果有帮助的话,下面是bedpostx_single_slice.sh:的脚本

#!/bin/sh
#   Copyright (C) 2012 University of Oxford
export LC_ALL=C
subjdir=$1
slice=$2
shift
shift
opts=$*
slicezp=`${FSLDIR}/bin/zeropad $slice 4`
${FSLDIR}/bin/xfibres
 --data=$subjdir/data_slice_$slicezp
 --mask=$subjdir/nodif_brain_mask_slice_$slicezp
 -b $subjdir/bvals -r $subjdir/bvecs
 --forcedir --logdir=$subjdir.bedpostX/diff_slices/data_slice_$slicezp 
 $opts  > $subjdir.bedpostX/logs/log$slicezp  && echo Done && touch $subjdir.bedpostX/logs/monitor/$slice

BedpostX现在已经被FSL团队很好地并行化了。你最好直接利用这一点。

如果你想要一种快速简单的并行化方法,请查看Parallelizing FSL,而不用NeuroDebian的痛苦。

最新更新