def test_init_from_file(self): fisher_1 = fd.fisher_derived(file_name=test_input + '/dummy_fisher_matrix_derived.dat') assert fisher_1.path == test_input + '/dummy_fisher_matrix_derived.dat' assert fisher_1.name == 'dummy_fisher_matrix_derived' assert fisher_1.indir == test_input assert fisher_1.num_params == 28 assert fisher_1.num_derived == 9 assert fisher_1.param_names == [ 'omegabh2', 'omegach2', 'omeganuh2', 'h', 'yhe', 'logA', 'ns', 'nrun', 'nt', 'r', 'tau', 'Bias_W_1', 'Bias_W_2', 'Bias_W_3', 'Bias_W_4', 'Bias_W_5', 'Bias_W_6', 'Bias_W_7', 'Bias_W_8', 'Bias_W_9', 'Bias_W_10', 'Bias_W_11', 'Bias_W_12', 'Bias_W_13', 'Bias_W_14', 'alpha_SN', 'beta_SN', 'M0_SN' ] assert fisher_1.param_names_latex == [ '\\Omega_b h^2', '\\Omega_c h^2', '\\Omega_\\nu h^2', 'h', 'Y_{He}', '{\\rm{ln}}(10^{10} A_s)', 'n_s', 'n_{\\rm run}', 'n_t', 'r', '\\tau', 'b_1', 'b_2', 'b_3', 'b_4', 'b_5', 'b_6', 'b_7', 'b_8', 'b_9', 'b_10', 'b_11', 'b_12', 'b_13', 'b_14', '\\alpha_{\\rm SN}', '\\beta_{\\rm SN}', 'M_0^{\\rm SN}' ] assert fisher_1.derived_param_names == [ 'omegab', 'omegac', 'omeganu', 'omegav', 'omegak', 'omegam', 'theta', 'mnu', 'z_re' ] assert fisher_1.derived_param_names_latex == [ '\\Omega_b', '\\Omega_c', '\\Omega_{\\nu}', '\\Omega_{\\Lambda}', '\\Omega_{K}', '\\Omega_{m}', '100\\theta_{MC}', '\\Sigma m_\\nu', 'z_{\\rm re}' ]
def setup(self): # generate the Fisher matrix. In this case a simple diagonal matrix. matrix = np.identity(3) for i in xrange(3): matrix[i, i] = i + 1 # Jacobian matrix: matrix_derived = np.zeros((3, 2)) matrix_derived[0, 0] = 1.0 matrix_derived[1, 1] = 1.0 matrix_derived[2, 0] = 1.0 # parameter names: param_names_latex = ['m' + str(i) for i in xrange(3)] derived_param_names_latex = ['md' + str(i) for i in xrange(2)] # fiducial: fiducial = [float(i) for i in xrange(3)] fiducial_derived = [float(i) for i in xrange(2)] # initialize the Fisher type: self.fisher_1 = fm.fisher_matrix(fisher_matrix=matrix, param_names_latex=param_names_latex, fiducial=fiducial) # initialize the derived matrix: self.fisher_der = fd.fisher_derived( derived_matrix=matrix_derived, param_names_latex=param_names_latex, derived_param_names_latex=derived_param_names_latex, fiducial=fiducial, fiducial_derived=fiducial_derived)
def test_init_from_python_only_fisher_derived(self): matrix_derived = np.zeros( (3, 2) ) matrix_derived[0,0] = 1.0 matrix_derived[1,1] = 1.0 matrix_derived[2,0] = 1.0 # parameter names: param_names_latex = [ 'm'+str(i) for i in xrange(3) ] derived_param_names_latex = [ 'md'+str(i) for i in xrange(2) ] # fiducial: fiducial = [ float(i) for i in xrange(3) ] fiducial_derived = [ float(i) for i in xrange(2) ] # initialize the derived matrix: fisher_1 = fd.fisher_derived( derived_matrix=matrix_derived ) # after calling init all the objects of the class have to be initialized properly: assert np.allclose( fisher_1.derived_matrix, matrix_derived ) assert fisher_1.path == '' assert fisher_1.name == '' assert fisher_1.indir == '' assert fisher_1.num_params == 3 assert fisher_1.num_derived == 2 assert fisher_1.param_names == ['p1','p2','p3'] assert fisher_1.param_names_latex == fisher_1.param_names assert np.allclose( fisher_1.param_fiducial, [0.0,0.0,0.0] ) assert fisher_1.derived_param_names == ['p4','p5'] assert fisher_1.derived_param_names_latex == fisher_1.derived_param_names assert np.allclose( fisher_1.derived_param_fiducial, [0.0,0.0] )
def test_init_from_python_only_fisher_derived(self): matrix_derived = np.zeros((3, 2)) matrix_derived[0, 0] = 1.0 matrix_derived[1, 1] = 1.0 matrix_derived[2, 0] = 1.0 # parameter names: param_names_latex = ['m' + str(i) for i in xrange(3)] derived_param_names_latex = ['md' + str(i) for i in xrange(2)] # fiducial: fiducial = [float(i) for i in xrange(3)] fiducial_derived = [float(i) for i in xrange(2)] # initialize the derived matrix: fisher_1 = fd.fisher_derived(derived_matrix=matrix_derived) # after calling init all the objects of the class have to be initialized properly: assert np.allclose(fisher_1.derived_matrix, matrix_derived) assert fisher_1.path == '' assert fisher_1.name == '' assert fisher_1.indir == '' assert fisher_1.num_params == 3 assert fisher_1.num_derived == 2 assert fisher_1.param_names == ['p1', 'p2', 'p3'] assert fisher_1.param_names_latex == fisher_1.param_names assert np.allclose(fisher_1.param_fiducial, [0.0, 0.0, 0.0]) assert fisher_1.derived_param_names == ['p4', 'p5'] assert fisher_1.derived_param_names_latex == fisher_1.derived_param_names assert np.allclose(fisher_1.derived_param_fiducial, [0.0, 0.0])
def test_realistic_add(self): # get the original real Fisher: fisher = fm.fisher_matrix( file_name=test_input+'/dummy_fisher_matrix.dat' ) # get the derived Fisher: fisher_1 = fd.fisher_derived( file_name=test_input+'/dummy_fisher_matrix_derived.dat' ) # add them: new_fisher = fisher_1.add_derived( fisher_matrix=fisher, preserve_input=True ) # check wether the initial spectrum is contained in the final spectrum: old_eigen = [ i for i in fisher.fisher_eigenvalues if i> 1.1*fisher.fisher_cutoff ] # remove the cutoff modes assert np.amin(new_fisher.fisher_eigenvalues) < np.amin(old_eigen) assert np.amax(new_fisher.fisher_eigenvalues) > np.amax(old_eigen)
def test_init_from_file(self): fisher_1 = fd.fisher_derived( file_name=test_input+'/dummy_fisher_matrix_derived.dat' ) assert fisher_1.path == test_input+'/dummy_fisher_matrix_derived.dat' assert fisher_1.name == 'dummy_fisher_matrix_derived' assert fisher_1.indir == test_input assert fisher_1.num_params == 28 assert fisher_1.num_derived == 9 assert fisher_1.param_names == ['omegabh2', 'omegach2', 'omeganuh2', 'h', 'yhe', 'logA', 'ns', 'nrun', 'nt', 'r', 'tau', 'Bias_W_1', 'Bias_W_2', 'Bias_W_3', 'Bias_W_4', 'Bias_W_5', 'Bias_W_6', 'Bias_W_7', 'Bias_W_8', 'Bias_W_9', 'Bias_W_10', 'Bias_W_11', 'Bias_W_12', 'Bias_W_13', 'Bias_W_14', 'alpha_SN', 'beta_SN', 'M0_SN'] assert fisher_1.param_names_latex == ['\\Omega_b h^2', '\\Omega_c h^2', '\\Omega_\\nu h^2', 'h', 'Y_{He}', '{\\rm{ln}}(10^{10} A_s)', 'n_s', 'n_{\\rm run}', 'n_t', 'r', '\\tau', 'b_1', 'b_2', 'b_3', 'b_4', 'b_5', 'b_6', 'b_7', 'b_8', 'b_9', 'b_10', 'b_11', 'b_12', 'b_13', 'b_14', '\\alpha_{\\rm SN}', '\\beta_{\\rm SN}', 'M_0^{\\rm SN}'] assert fisher_1.derived_param_names == ['omegab', 'omegac', 'omeganu', 'omegav', 'omegak', 'omegam', 'theta', 'mnu', 'z_re'] assert fisher_1.derived_param_names_latex == ['\\Omega_b', '\\Omega_c', '\\Omega_{\\nu}', '\\Omega_{\\Lambda}', '\\Omega_{K}', '\\Omega_{m}', '100\\theta_{MC}', '\\Sigma m_\\nu', 'z_{\\rm re}']
def test_realistic_add(self): # get the original real Fisher: fisher = fm.fisher_matrix( file_name=test_input+'/dummy_fisher_matrix.dat' ) # get the derived Fisher: fisher_1 = fd.fisher_derived( file_name=test_input+'/dummy_fisher_matrix_derived.dat' ) # add them: new_fisher = fisher_1.add_derived( fisher_matrix=fisher, preserve_input=True ) # check wether the initial spectrum is contained in the final spectrum: old_eigen = [ i for i in fisher.fisher_eigenvalues if i> 1.1*fisher.fisher_cutoff ] # remove the cutoff modes assert np.amin(new_fisher.fisher_eigenvalues) < np.amin(old_eigen) assert np.amax(new_fisher.fisher_eigenvalues) > np.amax(old_eigen)
def test_load_paramnames_invalid_num(self): matrix_derived = np.zeros( (3, 3) ) matrix_derived[0,0] = 1.0 matrix_derived[1,1] = 1.0 matrix_derived[2,0] = 1.0 param_names = [ 'q'+str(i) for i in xrange(3) ] param_names_latex = [ 'm'+str(i) for i in xrange(3) ] derived_param_names = [ 'qd'+str(i) for i in xrange(4) ] derived_param_names_latex = [ 'md'+str(i) for i in xrange(4) ] fiducial = [ float(i) for i in xrange(3) ] fiducial_derived = [ float(i) for i in xrange(4) ] fisher_1 = fd.fisher_derived( derived_matrix=matrix_derived ) assert_raises( ValueError, fisher_1.load_paramnames_from_file, file_name=test_input+'/dummy_paramnames_5_derived.paramnames' )
def test_load_paramnames_invalid_num(self): matrix_derived = np.zeros( (3, 3) ) matrix_derived[0,0] = 1.0 matrix_derived[1,1] = 1.0 matrix_derived[2,0] = 1.0 param_names = [ 'q'+str(i) for i in range(3) ] param_names_latex = [ 'm'+str(i) for i in range(3) ] derived_param_names = [ 'qd'+str(i) for i in range(4) ] derived_param_names_latex = [ 'md'+str(i) for i in range(4) ] fiducial = [ float(i) for i in range(3) ] fiducial_derived = [ float(i) for i in range(4) ] fisher_1 = fd.fisher_derived( derived_matrix=matrix_derived ) assert_raises( ValueError, fisher_1.load_paramnames_from_file, file_name=test_input+'/dummy_paramnames_5_derived.paramnames' )
def test_init_1D_fisher_derived(self): matrix = [10] fisher_1 = fd.fisher_derived( derived_matrix=matrix ) assert np.allclose( fisher_1.derived_matrix, matrix ) assert fisher_1.path == '' assert fisher_1.name == '' assert fisher_1.indir == '' assert fisher_1.num_params == 1 assert fisher_1.num_derived == 1 assert fisher_1.param_names == ['p1'] assert fisher_1.param_names_latex == fisher_1.param_names assert np.allclose( fisher_1.param_fiducial, [0.0] ) assert fisher_1.derived_param_names == ['p2'] assert fisher_1.derived_param_names_latex == fisher_1.derived_param_names assert np.allclose( fisher_1.derived_param_fiducial, [0.0] )
def test_init_1D_fisher_derived(self): matrix = [10] fisher_1 = fd.fisher_derived(derived_matrix=matrix) assert np.allclose(fisher_1.derived_matrix, matrix) assert fisher_1.path == '' assert fisher_1.name == '' assert fisher_1.indir == '' assert fisher_1.num_params == 1 assert fisher_1.num_derived == 1 assert fisher_1.param_names == ['p1'] assert fisher_1.param_names_latex == fisher_1.param_names assert np.allclose(fisher_1.param_fiducial, [0.0]) assert fisher_1.derived_param_names == ['p2'] assert fisher_1.derived_param_names_latex == fisher_1.derived_param_names assert np.allclose(fisher_1.derived_param_fiducial, [0.0])
def test_spectral_change(self): # redefine the Jacobian matrix: matrix_derived = np.zeros( (3, 2) ) matrix_derived[0,0] = 1.e10 matrix_derived[2,0] = 1.e-10 # parameter names: param_names_latex = [ 'm'+str(i) for i in xrange(3) ] derived_param_names_latex = [ 'md'+str(i) for i in xrange(2) ] # fiducial: fiducial = [ float(i) for i in xrange(3) ] fiducial_derived = [ float(i) for i in xrange(2) ] # initialize the derived matrix: fisher_der = fd.fisher_derived( derived_matrix=matrix_derived, param_names_latex=param_names_latex, derived_param_names_latex=derived_param_names_latex, fiducial=fiducial, fiducial_derived=fiducial_derived) fisher_2 = fisher_der.add_derived( fisher_matrix=self.fisher_1, preserve_input=True )
def test_spectral_change(self): # redefine the Jacobian matrix: matrix_derived = np.zeros( (3, 2) ) matrix_derived[0,0] = 1.e10 matrix_derived[2,0] = 1.e-10 # parameter names: param_names_latex = [ 'm'+str(i) for i in range(3) ] derived_param_names_latex = [ 'md'+str(i) for i in range(2) ] # fiducial: fiducial = [ float(i) for i in range(3) ] fiducial_derived = [ float(i) for i in range(2) ] # initialize the derived matrix: fisher_der = fd.fisher_derived( derived_matrix=matrix_derived, param_names_latex=param_names_latex, derived_param_names_latex=derived_param_names_latex, fiducial=fiducial, fiducial_derived=fiducial_derived) fisher_2 = fisher_der.add_derived( fisher_matrix=self.fisher_1, preserve_input=True )
def test_load_paramnames_from_file_5(self): matrix_derived = np.zeros( (3, 4) ) matrix_derived[0,0] = 1.0 matrix_derived[1,1] = 1.0 matrix_derived[2,0] = 1.0 param_names = [ 'q'+str(i) for i in xrange(3) ] param_names_latex = [ 'm'+str(i) for i in xrange(3) ] derived_param_names = [ 'qd'+str(i) for i in xrange(4) ] derived_param_names_latex = [ 'md'+str(i) for i in xrange(4) ] fiducial = [ float(i) for i in xrange(3) ] fiducial_derived = [ float(i) for i in xrange(4) ] fisher_1 = fd.fisher_derived( derived_matrix=matrix_derived ) fisher_1.load_paramnames_from_file( file_name=test_input+'/dummy_paramnames_5_derived.paramnames') # test if everything is properly initialized: assert fisher_1.param_names == ['p1', 'p2', 'p3'] assert fisher_1.param_names_latex == ['p_1', 'p_2', 'p_3'] assert np.allclose( fisher_1.param_fiducial, [1.0, 2.0, 3.0] ) assert fisher_1.derived_param_names == ['p4', 'p5', 'p6', 'p7'] assert fisher_1.derived_param_names_latex == ['p_4', 'p_5', 'p_6', 'p7'] assert np.allclose( fisher_1.derived_param_fiducial, [4.0, 5.0,0.0,0.0] )
def test_load_paramnames_from_file_5(self): matrix_derived = np.zeros( (3, 4) ) matrix_derived[0,0] = 1.0 matrix_derived[1,1] = 1.0 matrix_derived[2,0] = 1.0 param_names = [ 'q'+str(i) for i in range(3) ] param_names_latex = [ 'm'+str(i) for i in range(3) ] derived_param_names = [ 'qd'+str(i) for i in range(4) ] derived_param_names_latex = [ 'md'+str(i) for i in range(4) ] fiducial = [ float(i) for i in range(3) ] fiducial_derived = [ float(i) for i in range(4) ] fisher_1 = fd.fisher_derived( derived_matrix=matrix_derived ) fisher_1.load_paramnames_from_file( file_name=test_input+'/dummy_paramnames_5_derived.paramnames') # test if everything is properly initialized: assert fisher_1.param_names == ['p1', 'p2', 'p3'] assert fisher_1.param_names_latex == ['p_1', 'p_2', 'p_3'] assert np.allclose( fisher_1.param_fiducial, [1.0, 2.0, 3.0] ) assert fisher_1.derived_param_names == ['p4', 'p5', 'p6', 'p7'] assert fisher_1.derived_param_names_latex == ['p_4', 'p_5', 'p_6', 'p7'] assert np.allclose( fisher_1.derived_param_fiducial, [4.0, 5.0,0.0,0.0] )
def test_init_from_python_invalid_fiducial_derived(self): matrix_derived = np.zeros( (3, 2) ) matrix_derived[0,0] = 1.0 matrix_derived[1,1] = 1.0 matrix_derived[2,0] = 1.0 # parameter names: param_names = [ 'q'+str(i) for i in range(3) ] param_names_latex = [ 'm'+str(i) for i in range(3) ] derived_param_names = [ 'qd'+str(i) for i in range(2) ] derived_param_names_latex = [ 'md'+str(i) for i in range(2) ] # fiducial: fiducial = [ float(i) for i in range(3) ] fiducial_derived = [ float(i) for i in range(3) ] # initialize the derived matrix: fisher_1 = fd.fisher_derived( derived_matrix=matrix_derived ) assert_raises( ValueError, fd.fisher_derived, derived_matrix=matrix_derived, param_names = param_names, derived_param_names = derived_param_names, param_names_latex=param_names_latex, derived_param_names_latex=derived_param_names_latex, fiducial=fiducial, fiducial_derived=fiducial_derived)
def test_init_from_python_invalid_fiducial_derived(self): matrix_derived = np.zeros( (3, 2) ) matrix_derived[0,0] = 1.0 matrix_derived[1,1] = 1.0 matrix_derived[2,0] = 1.0 # parameter names: param_names = [ 'q'+str(i) for i in xrange(3) ] param_names_latex = [ 'm'+str(i) for i in xrange(3) ] derived_param_names = [ 'qd'+str(i) for i in xrange(2) ] derived_param_names_latex = [ 'md'+str(i) for i in xrange(2) ] # fiducial: fiducial = [ float(i) for i in xrange(3) ] fiducial_derived = [ float(i) for i in xrange(3) ] # initialize the derived matrix: fisher_1 = fd.fisher_derived( derived_matrix=matrix_derived ) assert_raises( ValueError, fd.fisher_derived, derived_matrix=matrix_derived, param_names = param_names, derived_param_names = derived_param_names, param_names_latex=param_names_latex, derived_param_names_latex=derived_param_names_latex, fiducial=fiducial, fiducial_derived=fiducial_derived)
def setup(self): # generate the Fisher matrix. In this case a simple diagonal matrix. matrix = np.identity(3) for i in xrange(3): matrix[i,i] = i+1 # Jacobian matrix: matrix_derived = np.zeros( (3, 2) ) matrix_derived[0,0] = 1.0 matrix_derived[1,1] = 1.0 matrix_derived[2,0] = 1.0 # parameter names: param_names_latex = [ 'm'+str(i) for i in xrange(3) ] derived_param_names_latex = [ 'md'+str(i) for i in xrange(2) ] # fiducial: fiducial = [ float(i) for i in xrange(3) ] fiducial_derived = [ float(i) for i in xrange(2) ] # initialize the Fisher type: self.fisher_1 = fm.fisher_matrix( fisher_matrix=matrix, param_names_latex=param_names_latex, fiducial=fiducial ) # initialize the derived matrix: self.fisher_der = fd.fisher_derived( derived_matrix=matrix_derived, param_names_latex=param_names_latex, derived_param_names_latex=derived_param_names_latex, fiducial=fiducial, fiducial_derived=fiducial_derived)