def run(self, options): """ Run the process """ from oxasl import Workspace, calib from fsl.data.image import Image data = self.get_data(options) img = Image(data.raw(), name=data.name) roi = self.get_roi(options, data.grid) options["mask"] = Image(roi.raw(), name=roi.name) calib_name = options.pop("calib-data") if calib_name not in self.ivm.data: raise QpException("Calibration data not found: %s" % calib_name) else: calib_img = Image(self.ivm.data[calib_name].resample( data.grid).raw(), name=calib_name) ref_roi_name = options.pop("ref-roi", None) if ref_roi_name is not None: if ref_roi_name not in self.ivm.rois: raise QpException("Reference ROI not found: %s" % calib_name) else: options["ref_mask"] = Image( self.ivm.rois[ref_roi_name].resample(data.grid).raw(), name=ref_roi_name) options["calib_method"] = options.pop("method", None) output_name = options.pop("output-name", data.name + "_calib") logbuf = six.StringIO() wsp = Workspace(log=logbuf, **options) wsp.calib = calib_img ## FIXME variance mode calibrated = calib.calibrate(wsp, img) self.log(logbuf.getvalue()) self.ivm.add(name=output_name, data=calibrated.data, grid=data.grid, make_current=True)
def get_wsp(): wsp = Workspace(debug=True) wsp.struc = Image(np.random.rand(10, 10, 10)) wsp.calib = Image(np.random.rand(5, 5, 5)) return wsp