Esempio n. 1
0
def setup_covariance_matrix_scaling_factor_beta(equality_constraints, \
    optimization_variables, residuals):

    beta = ci.mul([residuals.T, residuals]) / (residuals.numel() + \
        equality_constraints.numel() - optimization_variables.numel())

    return beta
Esempio n. 2
0
def setup_covariance_matrix_scaling_factor_beta(equality_constraints, \
    optimization_variables, residuals):

    beta = ci.mul([residuals.T, residuals]) / (residuals.size() + \
        equality_constraints.size() - optimization_variables.size())

    return beta
Esempio n. 3
0
    def _setup_fisher_matrix(self):

        self._fisher_matrix = self._fisher_matrix_A - ci.mul([ \

                self._fisher_matrix_B.T, \

                ci.solve(self._fisher_matrix_C, \
                        
                        self._fisher_matrix_B, \
                        
                        "csparse")])
Esempio n. 4
0
    def _setup_fisher_matrix(self):

        self._fisher_matrix = self._fisher_matrix_A - ci.mul([ \

                self._fisher_matrix_B.T, \

                ci.solve(self._fisher_matrix_C, \

                        self._fisher_matrix_B, \

                        "csparse")])
Esempio n. 5
0
    def _plot_confidence_ellipsoids(self, pdata, properties = "initial"):

        if properties == "initial":

            covariance_matrix = {"initial": self.covariance_matrix_initial}

        elif properties == "optimized":

            covariance_matrix = {"optimized": self.covariance_matrix_optimized}

        elif properties == "all":

            covariance_matrix = {"initial" : self._covariance_matrix_initial, \
                "optimized" : self._covariance_matrix_optimized}

        else:

            raise ValueError('''
Input-value not supported, choose either "initial", "final", or "all".
''')

        plotting_directory = "confidence_ellipsoids_" + \
                os.path.basename(__main__.__file__).strip(".py")

        try:
            os.mkdir(plotting_directory)

        except OSError:
            if not os.path.isdir(plotting_directory):

                raise OSError('''
Plotting directory "confidence_ellipsoids_{0}"
does not yet exist, but could not be created.

Do you have write access within your working folder, or is
some file with this name already present within your working folder?
'''.format(plotting_directory))

        xy = np.array([np.cos(np.linspace(0, 2*np.pi, 100)), 
            np.sin(np.linspace(0, 2*np.pi, 100))])

        for p1 in range(pdata.size):

            for p2 in range(pdata.size)[p1+1:]:

                plt.figure()

                for prop, cm in covariance_matrix.iteritems():

                    covariance_matrix_p1p2 = np.array([ \

                            [cm[p1, p1], cm[p1, p2]], \
                            [cm[p2, p1], cm[p2, p2]]

                        ])

                    w, v = np.linalg.eig(covariance_matrix_p1p2)

                    ellipsoid = ci.repmat(np.array([pdata[p1], pdata[p2]]), 1, 100) + \
                        ci.mul([v, ci.diag(w), xy])

                    plt.plot(ellipsoid[0,:].T, ellipsoid[1,:].T, label = \
                        "p_" + str(p1) + ", p_" + str(p2) + " " + prop)
                
                plt.scatter(pdata[p1], pdata[p2], color = "k")    
                plt.legend(loc="upper right")                
                plt.savefig(plotting_directory + "/p_" + str(p1) + \
                    "-p_" + str(p2) + "-" + properties + ".png", bbox_inches='tight')
                plt.close()
Esempio n. 6
0
    def _setup_objective(self):

        self._objective = 0.5 * ci.mul([self._residuals.T, self._residuals])
Esempio n. 7
0
    def _setup_objective(self):

        self._objective =  0.5 * ci.mul([self._residuals.T, self._residuals])
Esempio n. 8
0
    def _plot_confidence_ellipsoids(self, pdata, properties = "initial"):

        if properties == "initial":

            covariance_matrix = {"initial": self.covariance_matrix_initial}

        elif properties == "optimized":

            covariance_matrix = {"optimized": self.covariance_matrix_optimized}

        elif properties == "all":

            covariance_matrix = {"initial" : self._covariance_matrix_initial, \
                "optimized" : self._covariance_matrix_optimized}

        else:

            raise ValueError('''
Input-value not supported, choose either "initial", "final", or "all".
''')

        plotting_directory = "confidence_ellipsoids_" + \
                os.path.basename(__main__.__file__).strip(".py")

        try:
            os.mkdir(plotting_directory)

        except OSError:
            if not os.path.isdir(plotting_directory):

                raise OSError('''
Plotting directory "confidence_ellipsoids_{0}"
does not yet exist, but could not be created.

Do you have write access within your working folder, or is
some file with this name already present within your working folder?
'''.format(plotting_directory))

        xy = np.array([np.cos(np.linspace(0, 2*np.pi, 100)), 
            np.sin(np.linspace(0, 2*np.pi, 100))])

        for p1 in range(pdata.size):

            for p2 in range(pdata.size)[p1+1:]:

                plt.figure()

                for prop, cm in covariance_matrix.iteritems():

                    covariance_matrix_p1p2 = np.array([ \

                            [cm[p1, p1], cm[p1, p2]], \
                            [cm[p2, p1], cm[p2, p2]]

                        ])

                    w, v = np.linalg.eig(covariance_matrix_p1p2)

                    ellipsoid = ci.repmat(np.array([pdata[p1], pdata[p2]]), 1, 100) + \
                        ci.mul([v, ci.diag(w), xy])

                    plt.plot(ellipsoid[0,:].T, ellipsoid[1,:].T, label = \
                        "p_" + str(p1) + ", p_" + str(p2) + " " + prop)
                
                plt.scatter(pdata[p1], pdata[p2], color = "k")    
                plt.legend(loc="upper right")                
                plt.savefig(plotting_directory + "/p_" + str(p1) + \
                    "-p_" + str(p2) + "-" + properties + ".png", bbox_inches='tight')
                plt.close()