Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
    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)
Пример #4
0
    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)