def exec_coupledsolve(self, *args):
        keyframes = self.global_extractor.get_n_keyframes(self.n_globals)
        n_keyframes = len(keyframes)

        interps = []

        for name in self.curves.keys():
            for dim in self.dimensions[name].keys():
                if not self.dimensions[name][dim]:
                    continue

                index = -1
                if dim == "rx": index = 1
                if dim == "ry": index = 2
                if dim == "rz": index = 3
                curve = []
                for i in range(len(Motion.mocap["single"][name])):
                    curve.append([Motion.mocap["single"][name].item(i, 0), Motion.mocap["single"][name].item(i, index)])
                curve = np.array(curve)

                interps +=  global_fitting.coupled_solve( curve
                                                        , keyframes
                                                        , self.alpha
                                                        , self.beta
                                                        , 100)

        for i in range(len(interps)):
            seg = interps[i]
            if len(seg.curve) <= 3:
                interps[i] = interp_f.line(seg.curve, 100)

        self.interps = interps
        self.app.update()
        return interps
 def coupled_solve(self, curve, keyframes):
     interps = global_fitting.coupled_solve( curve
                                           , keyframes
                                           , self.r_straight_tangents
                                           , self.r_small_tangents
                                           , Algorithm.interp_res)
     for i in range(len(interps)):
         seg = interps[i]
         if len(seg.curve) <= 3:
             interps[i] = interp_f.line(seg.curve, Algorithm.interp_res)
     return interps