def execute(self, reducer, inputworkspace=None, outputworkspace=None): """ Create a new instance of the requested algorithm object, set the algorithm properties replacing the input and output workspaces. The execution will work for any combination of mandatory/optional properties. @param reducer: Reducer object managing the reduction @param inputworkspace: input workspace name [optional] @param outputworkspace: output workspace name [optional] """ if outputworkspace is None: outputworkspace = inputworkspace propertyOrder = MantidFramework.mtd._getPropertyOrder(algorithm) # Override input and output workspaces if "Workspace" in propertyOrder: algorithm.setPropertyValue("Workspace", MantidFramework._makeString(inputworkspace).lstrip('? ')) if "InputWorkspace" in propertyOrder: algorithm.setPropertyValue("InputWorkspace", MantidFramework._makeString(inputworkspace).lstrip('? ')) if "OutputWorkspace" in propertyOrder: algorithm.setPropertyValue("OutputWorkspace", MantidFramework._makeString(outputworkspace).lstrip('? ')) algorithm.execute() if "OutputMessage" in propertyOrder: return algorithm.getPropertyValue("OutputMessage") return "%s applied" % algorithm.name()
def execute(self, reducer, inputworkspace=None, outputworkspace=None): """ Create a new instance of the requested algorithm object, set the algorithm properties replacing the input and output workspaces. The execution will work for any combination of mandatory/optional properties. @param reducer: Reducer object managing the reduction @param inputworkspace: input workspace name [optional] @param outputworkspace: output workspace name [optional] """ # If we don't have a data file, look up the workspace handle if self._data_file is None: if inputworkspace in reducer._data_files: data_file = reducer._data_files[inputworkspace] if data_file is None: return else: raise RuntimeError, "SANSReductionSteps.LoadRun doesn't recognize workspace handle %s" % workspace else: data_file = self._data_file proxy = MantidFramework.mtd._createAlgProxy(algorithm) if not isinstance(proxy, MantidFramework.IAlgorithmProxy): raise RuntimeError, "Reducer expects a ReductionStep or a function returning an IAlgorithmProxy object" propertyOrder = MantidFramework.mtd._getPropertyOrder(proxy._getHeldObject()) # add the args to the kw list so everything can be set in a single way for (key, arg) in zip(propertyOrder[:len(args)], args): kwargs[key] = arg # Override input and output workspaces if "Workspace" in kwargs: kwargs["Workspace"] = inputworkspace if "OutputWorkspace" in kwargs: kwargs["OutputWorkspace"] = inputworkspace if "Filename" in kwargs: kwargs["Filename"] = data_file if "AlternateName" in kwargs and \ kwargs["AlternateName"] in propertyOrder: kwargs[kwargs["AlternateName"]] = data_file # set the properties of the algorithm ialg = proxy._getHeldObject() self.algorithm = ialg for key in kwargs.keys(): ialg.setPropertyValue(key, MantidFramework._makeString(kwargs[key]).lstrip('? ')) proxy.execute() if "OutputMessage" in propertyOrder: return proxy.getPropertyValue("OutputMessage") return "%s applied" % proxy.name()
def execute(self, reducer, inputworkspace=None, outputworkspace=None): """ Create a new instance of the requested algorithm object, set the algorithm properties replacing the input and output workspaces. The execution will work for any combination of mandatory/optional properties. @param reducer: Reducer object managing the reduction @param inputworkspace: input workspace name [optional] @param outputworkspace: output workspace name [optional] """ # If we don't have a data file, look up the workspace handle if self._data_file is None: if inputworkspace in reducer._data_files: data_file = reducer._data_files[inputworkspace] if data_file is None: return else: raise RuntimeError, "SANSReductionSteps.LoadRun doesn't recognize workspace handle %s" % workspace else: data_file = self._data_file propertyOrder = MantidFramework.mtd._getPropertyOrder(algorithm) # Override input and output workspaces if "Workspace" in propertyOrder: algorithm.setPropertyValue("Workspace", MantidFramework._makeString(inputworkspace).lstrip('? ')) if "OutputWorkspace" in propertyOrder: algorithm.setPropertyValue("OutputWorkspace", MantidFramework._makeString(inputworkspace).lstrip('? ')) if "Filename" in propertyOrder: algorithm.setPropertyValue("Filename", data_file) if "AlternateName" in kwargs and \ kwargs["AlternateName"] in propertyOrder: algorithm.setPropertyValue(kwargs["AlternateName"], data_file) algorithm.execute() return "%s applied" % algorithm.name()
def execute(self, reducer, inputworkspace=None, outputworkspace=None): """ Create a new instance of the requested algorithm object, set the algorithm properties replacing the input and output workspaces. The execution will work for any combination of mandatory/optional properties. @param reducer: Reducer object managing the reduction @param inputworkspace: input workspace name [optional] @param outputworkspace: output workspace name [optional] """ if outputworkspace is None: outputworkspace = inputworkspace proxy = MantidFramework.mtd._createAlgProxy(algorithm) if not isinstance(proxy, MantidFramework.IAlgorithmProxy): raise RuntimeError, "Reducer expects a ReductionStep or a function returning an IAlgorithmProxy object" propertyOrder = MantidFramework.mtd._getPropertyOrder(proxy._getHeldObject()) # add the args to the kw list so everything can be set in a single way for (key, arg) in zip(propertyOrder[:len(args)], args): kwargs[key] = arg # Override input and output workspaces if "Workspace" in kwargs: kwargs["Workspace"] = inputworkspace if "InputWorkspace" in kwargs: kwargs["InputWorkspace"] = inputworkspace if "OutputWorkspace" in kwargs: kwargs["OutputWorkspace"] = outputworkspace # set the properties of the algorithm ialg = proxy._getHeldObject() self.algorithm = ialg for key in kwargs.keys(): ialg.setPropertyValue(key, MantidFramework._makeString(kwargs[key]).lstrip('? ')) proxy.execute() if "OutputMessage" in propertyOrder: return proxy.getPropertyValue("OutputMessage") return "%s applied" % proxy.name()