Ejemplo n.º 1
0
    def compute(self):
        markers = ['s', 'o', '^', '>', 'v', '<', 'd', 'p', 'h', '8', '+', 'x']
        if self.hasInputFromPort('markers'):
            markers = self.getInputFromPort('markers')

        input = self.getInputFromPort('input')
        foreach = self.getInputFromPort('for-each')

        all = {}
        for q in flatten(input):
            key = tuple([q.props[k] for k in foreach])
            all[key] = ''

        imarker = 0
        for k in all.keys():
            all[k] = markers[imarker]
            imarker = (imarker + 1) % len(markers)

        for q in flatten(input):
            key = tuple([q.props[k] for k in foreach])
            q.props['marker'] = all[key]
            if 'line' in q.props:
                ll = list(q.props['line'])
                ll[0] = all[key]
                q.props['line'] = string.join(ll, sep='')
            else:
                q.props['line'] = all[key] + '-'

        self.setResult('output', input)
Ejemplo n.º 2
0
    def compute(self):
        if self.hasInputFromPort('source'):
            Nports = len(self.my_input_ports) - 1

            inputs = []
            for i in range(0, Nports):
                port = 'input' + str(i)
                if self.hasInputFromPort(port):
                    r = self.getInputFromPort(port)
                    inputs.append(flatten(copy.deepcopy(r)))
            Ninputs = len(inputs)

            results = []

            for i in range(1, Ninputs):
                if len(inputs[0]) != len(inputs[i]):
                    raise InvalidInput("Input lengths don't match")

            for iset in range(0, len(inputs[0])):
                for iport in range(0, Ninputs):
                    cmd = 'set' + str(iport) + ' = inputs[' + str(
                        iport) + '][' + str(iset) + ']'
                    exec cmd

                result = DataSet()

                code = self.getInputFromPort('source')
                proc_code = urllib.unquote(str(code))
                exec proc_code

                results.append(result)

            self.setResult('output', results)
        else:
            raise EmptyInputPort('source')
Ejemplo n.º 3
0
    def compute(self):
        if self.hasInputFromPort('input') and self.hasInputFromPort('source'):
            if self.deepcopy_all:
                q = copy.deepcopy(self.getInputFromPort('input'))
            else:
                q = self.getInputFromPort('input')
                newsets = []
            for s in flatten(q):
                x = s.x
                y = s.y
                if self.deepcopy_all:
                    props = s.props
                else:
                    props = copy.deepcopy(s.props)

                code = self.getInputFromPort('source')
                proc_code = urllib.unquote(str(code))
                exec proc_code

                if self.deepcopy_all:
                    s.x = x
                    s.y = y
                else:
                    newsets.append(DataSet())
                    newsets[-1].x = x
                    newsets[-1].y = y
                    newsets[-1].props = props

            if self.deepcopy_all:
                self.setResult('output', q)
            else:
                self.setResult('output', newsets)
        else:
            raise EmptyInputPort('input || source')
Ejemplo n.º 4
0
    def compute(self):
        if self.hasInputFromPort('input'):
            q = copy.deepcopy(self.getInputFromPort('input'))
            for s in flatten(q):
                s = self.transform(s)

            self.setResult('output',q)
        else:
            raise EmptyInputPort('input')
Ejemplo n.º 5
0
    def compute(self):
        sets = self.getInputFromPort('input')
        sortprops = self.getInputFromPort('sort_props')

        q2 = []
        for d in flatten(sets):
            q2.append(d)
        for sp in reversed(sortprops):
            q2 = sorted(q2, key=lambda d: d.props[sp])
        self.setResult('output', q2)
Ejemplo n.º 6
0
 def property_compute(self):
     if self.hasInputFromPort('input'):
         newsets = []
         q = self.getInputFromPort('input')
         for s in flatten(q):
             newsets.append(DataSet())
             newsets[-1].x = s.x
             newsets[-1].y = s.y
             newsets[-1].props = copy.deepcopy(s.props)
             self.transform(newsets[-1])
         self.setResult('output',newsets)
Ejemplo n.º 7
0
    def compute(self):
        if self.hasInputFromPort('input') and self.hasInputFromPort('source'):
            q = copy.deepcopy(self.getInputFromPort('input'))
            kept_sets = []
            disc_sets = []

            code = self.getInputFromPort('source')
            proc_code = urllib.unquote(str(code))

            cmd = 'def fn(x,y,props):\n'
            for line in proc_code.splitlines():
                cmd = cmd + '\t' + line + '\n'
            exec cmd

            for s in flatten(q):
                if fn(s.x, s.y, s.props):
                    kept_sets.append(s)
                else:
                    disc_sets.append(s)

            self.setResult('kept', kept_sets)
            self.setResult('discarded', disc_sets)
        elif self.hasInputFromPort('input') and self.hasInputFromPort(
                'select'):
            s = self.getInputFromPort('select')
            q = copy.deepcopy(self.getInputFromPort('input'))
            kept_sets = []
            disc_sets = []

            for iq in flatten(q):
                if s.decide(
                        s, iq
                ):  # please don't ask why it wants to be called like this...
                    kept_sets.append(iq)
                else:
                    disc_sets.append(iq)

            self.setResult('kept', kept_sets)
            self.setResult('discarded', disc_sets)
        else:
            raise EmptyInputPort('input || source')
Ejemplo n.º 8
0
    def compute(self):
        if self.hasInputFromPort('input') and self.hasInputFromPort('source'):
            result = DataSet()

            for s in flatten(self.getInputFromPort('input')):
                code = self.getInputFromPort('source')
                proc_code = urllib.unquote(str(code))
                exec proc_code

            self.setResult('output', [result])
        else:
            raise EmptyInputPort('input || source')
Ejemplo n.º 9
0
    def compute(self):
        q = self.getInputFromPort('input')

        all_props = [v.props for v in flatten(q)]
        diff_props = dict_difference(all_props)

        def f(x):
            d = {}
            for k in diff_props:
                d[k] = x.props[k]
            return d

        q2 = hmap(f, q)
Ejemplo n.º 10
0
 def compute(self):
     if self.hasInputFromPort('G_omega') and self.hasInputFromPort(
             'G0_omega'):
         G = self.getInputFromPort('G_omega')
         G0 = copy.deepcopy(self.getInputFromPort('G0_omega'))
         for g0 in flatten(G0):
             del g0.props['hdf5_path']
         Sigma = []
         for g in flatten(G):
             props = copy.deepcopy(g.props)
             del props['hdf5_path']
             g0 = [s for s in flatten(G0) if props == s.props][0]
             Sigma.append(DataSet())
             Sigma[-1].x = copy.deepcopy(g.x)
             # Dyson equation
             Sigma[-1].y = np.array(
                 [1. / g0.y[w] - 1. / g.y[w] for w in range(len(g.y))])
             Sigma[-1].props = props
         print len(Sigma)
         self.setResult('Selfenergy', Sigma)
     else:
         raise EmptyInputPort('G_omega || G0_omega')
Ejemplo n.º 11
0
    def compute(self):
        q = copy.deepcopy(self.getInputFromPort('input'))
        kept_sets = []
        disc_sets = []

        for iq in flatten(q):
            if self.decide(iq):
                kept_sets.append(iq)
            else:
                disc_sets.append(iq)

        self.setResult('kept', kept_sets)
        self.setResult('discarded', disc_sets)
Ejemplo n.º 12
0
    def compute(self):
        colors = ['k', 'b', 'g', 'm', 'c', 'y']
        if self.hasInputFromPort('colors'):
            colors = self.getInputFromPort('colors')

        input = self.getInputFromPort('input')
        foreach = self.getInputFromPort('for-each')

        all = {}
        for q in flatten(input):
            key = tuple([q.props[k] for k in foreach])
            all[key] = ''

        icolor = 0
        for k in all.keys():
            all[k] = colors[icolor]
            icolor = (icolor + 1) % len(colors)

        for q in flatten(input):
            key = tuple([q.props[k] for k in foreach])
            q.props['color'] = all[key]

        self.setResult('output', input)
Ejemplo n.º 13
0
    def compute(self):
        if self.hasInputFromPort('input'):
            groups = self.getInputFromPort('input')
            dd = depth(groups)

            if dd > 1:
                hgroups = flatten(groups, -1)
                hgroups_idcs = hgroups.indices()
            else:
                hgroups = [groups]
                hgroups_idcs = [0]

            for idx in hgroups_idcs:
                sets = hgroups[idx]

                for_each = []
                if self.hasInputFromPort('for-each'):
                    for_each = self.getInputFromPort('for-each')

                for_each_sets = {}
                for iset in sets:
                    fe_par_set = tuple((iset.props[m] for m in for_each))

                    if fe_par_set in for_each_sets:
                        for_each_sets[fe_par_set].append(iset)
                    else:
                        for_each_sets[fe_par_set] = [iset]

                hgroups[idx] = for_each_sets.values()

            if dd > 1:
                self.setResult('output', groups)
            else:
                self.setResult('output', hgroups[0])

        else:
            raise EmptyInputPort('for-each || observable')