我正在使用名为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

答案 0 :(得分:0)
现在,FSL团队将BedpostX很好地并行化了。你最好不要直接利用它。
如果您想要快速简便的并行化方法,请查看NeuroDebian的Parallelizing FSL without the pain。