def sv_recursive_transformations(*args): ''' main function takes 5 args function, verts1, verts2, multiplyer, separate resulting levels arg to recursion''' # print('arguments recursive',len(args)) if len(args) == 5: f, v1, v2, m, s = args m, v1, v2 = match_long_repeat([m, v1, v2]) level1 = levelsOflist(v1) level2 = levelsOflist(v2) level3 = levelsOflist(m) lev = max(level1, level2, level3) - 1 #print('recursion-dataspoiled',m,level3) v1 = dataSpoil(v1, lev) v2 = dataSpoil(v2, lev) m = dataSpoil(m, lev) #print('recursion-dataspoiled',m,lev) return sv_recursion(f, v1, v2, m, s, lev)
def sv_recursive_transformations(*args): ''' main function takes 5 args function, verts1, verts2, multiplyer, separate resulting levels arg to recursion''' # print('arguments recursive',len(args)) if len(args) == 5: f,v1,v2,m,s = args m,v1,v2 = match_long_repeat([m,v1,v2]) level1 = levelsOflist(v1) level2 = levelsOflist(v2) level3 = levelsOflist(m) lev = max(level1,level2,level3)-1 #print('recursion-dataspoiled',m,level3) v1 = dataSpoil(v1, lev) v2 = dataSpoil(v2, lev) m = dataSpoil(m, lev) #print('recursion-dataspoiled',m,lev) return sv_recursion(f,v1,v2,m,s,lev)
def process(self): if self.inputs['X'].is_linked: vecs = SvGetSocketAnyType(self, self.inputs['X']) else: vecs = [[0.0]] # outputs if not self.outputs['Result'].is_linked: return list_mult = [] if self.inputs['n[0]'].is_linked: i = 0 for socket in self.inputs[1:]: if socket.is_linked: list_mult.append(SvGetSocketAnyType(self, socket)) #print(list_mult) code_formula = parser.expr(self.formula).compile() # finding nasty levels, make equal nastyness (canonical 0,1,2,3) levels = [levelsOflist(vecs)] for n in list_mult: levels.append(levelsOflist(n)) maxlevel = max(max(levels), 3) diflevel = maxlevel - levels[0] if diflevel: vecs_ = dataSpoil([vecs], diflevel-1) vecs = dataCorrect(vecs_, nominal_dept=2) for i, lev in enumerate(levels): if i == 0: continue diflevel = maxlevel-lev if diflevel: list_temp = dataSpoil([list_mult[i-1]], diflevel-1) list_mult[i-1] = dataCorrect(list_temp, nominal_dept=2) #print(list_mult) r = self.inte(vecs, code_formula, list_mult, 3) result = dataCorrect(r, nominal_dept=min((levels[0]-1), 2)) SvSetSocketAnyType(self, 'Result', result)
def process(self): if self.inputs['X'].is_linked: vecs = self.inputs['X'].sv_get() else: vecs = [[0.0]] # outputs if not self.outputs['Result'].is_linked: return list_mult = [] if self.inputs['n[0]'].is_linked: i = 0 for socket in self.inputs[1:]: if socket.is_linked: list_mult.append(socket.sv_get()) code_formula = parser.expr(self.formula).compile() # finding nested levels, make equal nastedness (canonical 0,1,2,3) levels = [levelsOflist(vecs)] for n in list_mult: levels.append(levelsOflist(n)) maxlevel = max(max(levels), 3) diflevel = maxlevel - levels[0] if diflevel: vecs_ = dataSpoil([vecs], diflevel - 1) vecs = dataCorrect(vecs_, nominal_dept=2) for i, lev in enumerate(levels): if i == 0: continue diflevel = maxlevel - lev if diflevel: list_temp = dataSpoil([list_mult[i - 1]], diflevel - 1) list_mult[i - 1] = dataCorrect(list_temp, nominal_dept=2) r = self.inte(vecs, code_formula, list_mult, 3) result = dataCorrect(r, nominal_dept=min((levels[0] - 1), 2)) self.outputs['Result'].sv_set(result)