Python中如何提取Nipype接口返回的计算数值并存入数组
Nipype提取ImageStats计算结果操作指南
问题场景
使用Nipype处理fMRI影像计算tSNR指标时,ImageStats接口运行后直接打印返回的InterfaceResult对象仅显示内存地址,无法获取日志中打印的统计数值。
print(tsnr_result) <nipype.interfaces.base.support.InterfaceResult object at 0x7fd550078be0>
正确提取方法
Nipype接口的所有计算结果都存储在返回结果的outputs属性中,ImageStats的统计值对应字段为out_stat,直接读取该字段即可拿到浮点类型的目标数值,无需解析运行日志:
tsnr_value_calc = ImageStats(in_file=out_file_dv, op_string="-M") tsnr_result = tsnr_value_calc.run() # 提取tSNR数值 tsnr_val = tsnr_result.outputs.out_stat # 存入目标数组即可 tsnr_list.append(tsnr_val)
执行print(tsnr_val)即可得到日志中输出的113.157831。
实用技巧
如果不清楚当前接口有哪些输出字段,可执行以下命令打印全部输出键值对,无需手动排查对象属性:
print(tsnr_result.outputs.get())
注意:不要通过正则匹配运行日志的方式提取数值,该方法依赖日志输出格式,Nipype版本更新时日志格式变动会导致提取逻辑失效,读取
outputs属性是官方推荐的标准写法。
内容的提问来源于stack exchange,提问作者Dr. S
相关产品推荐
相关产品推荐

