Beispiel #1
0
    def execute(self):
        """ Run each parameter set. """

        # Prepare parameters and responses.
        exprs = {}
        case_paths = {}
        inputs = []
        values = []
        for path in self.get_parameters():
            if isinstance(path, tuple):
                for target in path:
                    inputs.append(target)
                    if not is_legal_name(target):
                        exprs[target] = ExprEvaluator(target)
                path = path[0]
            else:
                inputs.append(path)
                if not is_legal_name(path):
                    exprs[path] = ExprEvaluator(path)

            path = make_legal_path(path)
            values.append(self.get('case_inputs.' + path))

        for path in self.get_responses():
            if not is_legal_name(path):
                exprs[path] = ExprEvaluator(path)
            case_paths[path] = make_legal_path(path)

        length = len(values[0]) if values else 0
        self.init_responses(length)

        # Run each parameter set.
        for i in range(length):

            # Set inputs.
            for j, path in enumerate(inputs):
                value = values[j][i]
                expr = exprs.get(path)
                if expr:
                    expr.set(value, self.parent)
                else:
                    self.parent.set(path, value)

            # Run workflow.
            self.workflow.run()

            # Get outputs.
            for path in self.get_responses():
                expr = exprs.get(path)
                if expr:
                    value = expr.evaluate(self.parent)
                else:
                    value = self.parent.get(path)
                path = case_paths[path]
                self.set('case_outputs.' + path,
                         value,
                         index=(i, ),
                         force=True)
    def execute(self):
        """ Run each parameter set. """

        # Prepare parameters and responses.
        exprs = {}
        case_paths = {}
        inputs = []
        values = []
        for path in self.get_parameters():
            if isinstance(path, tuple):
                for target in path:
                    inputs.append(target)
                    if not is_legal_name(target):
                        exprs[target] = ExprEvaluator(target)
                path = path[0]
            else:
                inputs.append(path)
                if not is_legal_name(path):
                    exprs[path] = ExprEvaluator(path)

            path = make_legal_path(path)
            values.append(self.get('case_inputs.'+path))

        for path in self.get_responses():
            if not is_legal_name(path):
                exprs[path] = ExprEvaluator(path)
            case_paths[path] = make_legal_path(path)

        length = len(values[0]) if values else 0
        self.init_responses(length)

        # Run each parameter set.
        for i in range(length):

            # Set inputs.
            for j, path in enumerate(inputs):
                value = values[j][i]
                expr = exprs.get(path)
                if expr:
                    expr.set(value, self.parent)
                else:
                    self.parent.set(path, value)

            # Run workflow.
            self.workflow.run()

            # Get outputs.
            for path in self.get_responses():
                expr = exprs.get(path)
                if expr:
                    value = expr.evaluate(self.parent)
                else:
                    value = self.parent.get(path)
                path = case_paths[path]
                self.set('case_outputs.'+path, value, index=(i,), force=True)
Beispiel #3
0
def _split_expr(text):
    """Take an expression string and return varpath, expr"""
    if text.startswith('@') or is_legal_name(text):
        return text, text
    
    expr = ExprEvaluator(text)
    return expr.get_referenced_varpaths().pop(), text
Beispiel #4
0
    def _translate_up(self, text, node):
        if is_legal_name(text):
            return '.'.join([node, text])

        expr = ExprEvaluator(text)
        varpath = expr.get_referenced_varpaths().pop()
        return transform_expression(text, { varpath: '.'.join([node, varpath]) })
Beispiel #5
0
    def _translate_up(self, text, node):
        """Upscoping"""
        if is_legal_name(text):
            return '.'.join([node, text])

        expr = ExprEvaluator(text)
        varpath = expr.get_referenced_varpaths().pop()
        return transform_expression(text, { varpath: '.'.join([node, varpath]) })
 def _register_expr(self, s):
     """If the given string contains an expression, create an ExprEvaluator
     and store it in self._exprs.
     """
     if not is_legal_name(s):
         expr = ExprEvaluator(s)
         if self._exprs is None:
             self._exprs = {}
         self._exprs[s] = expr
Beispiel #7
0
 def _register_expr(self, s):
     """If the given string contains an expression, create an ExprEvaluator
     and store it in self._exprs.
     """
     if not is_legal_name(s):
         expr = ExprEvaluator(s)
         if self._exprs is None:
             self._exprs = {}
         self._exprs[s] = expr