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)
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')
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')
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')
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)
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)
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')
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')
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)
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')
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)
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)
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')