def prior_string_AC(self, prior_type, mean, variance, corr): mean_string = value_to_string(mean) variance_string = value_to_string(variance) corr_string = value_to_string(corr) return '%s_%s_%s_%s' % (prior_type, mean_string, variance_string, corr_string)
def prior_string_blp(self, prior_type, mean, gamma, delta): mean_string = value_to_string(mean) gamma_string = value_to_string(gamma) delta_string = value_to_string(delta) return '%s_%s_%s_%s' % (prior_type, mean_string, gamma_string, delta_string)
def prior_string(self, prior_type, mean): mean_string = value_to_string(mean) return '%s_%s' % (prior_type, mean_string)
def __init__(self, options): ################ # Case Name # ################ #=== Key Strings ===# project_name = 'poisson_linear_2d_' data_options = 'n%d' %(options.parameter_dimensions) directory_dataset =\ '../../../../../datasets/fenics/poisson_linear_2d/' +\ 'n%d/'%(options.parameter_dimensions) #=== Data Type ===# if options.obs_type == 'full': obs_string = 'full' if options.obs_type == 'obs': obs_string = 'obs_o%d'%(options.num_obs_points) if options.add_noise == 1: noise_level_string = value_to_string(options.noise_level) noise_string = 'ns%s_%d'%(noise_level_string,options.num_obs_points) else: noise_string = 'ns0' data_string = data_options + '_' + obs_string + '_' + noise_string + '_' #=== Prior Properties ===# if options.prior_type_blp_reg == True: prior_string_reg = self.prior_string_blp('blp', options.prior_mean_blp_reg, options.prior_gamma_blp_reg, options.prior_delta_blp_reg) if options.prior_type_blp_train == True: prior_string_train = self.prior_string_blp('blp', options.prior_mean_blp_train, options.prior_gamma_blp_train, options.prior_delta_blp_train) if options.prior_type_blp_test == True: prior_string_test = self.prior_string_blp('blp', options.prior_mean_blp_test, options.prior_gamma_blp_test, options.prior_delta_blp_test) if options.prior_type_AC_reg == True: prior_string_reg = self.prior_string_AC('AC', options.prior_mean_AC_reg, options.prior_variance_AC_reg, options.prior_corr_AC_reg) if options.prior_type_AC_train == True: prior_string_train = self.prior_string_AC('AC', options.prior_mean_AC_train, options.prior_variance_AC_train, options.prior_corr_AC_train) if options.prior_type_AC_test == True: prior_string_test = self.prior_string_AC('AC', options.prior_mean_AC_test, options.prior_variance_AC_test, options.prior_corr_AC_test) #=== Case String ===# self.case_name = project_name + data_string + prior_string_train ################ # Datasets # ################ #=== Parameters ===# self.obs_indices = directory_dataset +\ project_name + 'obs_indices_' +\ 'o%d_'%(options.num_obs_points) + data_options self.poi_train = directory_dataset +\ project_name +\ 'parameter_train_' +\ 'd%d_'%(options.num_data_train_load) + data_options + '_' + prior_string_train self.poi_test = directory_dataset +\ project_name +\ 'parameter_test_' +\ 'd%d_'%(options.num_data_test_load) + data_options + '_' + prior_string_test self.poi_specific = directory_dataset +\ project_name + 'parameter_specific_' + data_options if options.obs_type == 'full': self.qoi_train = directory_dataset +\ project_name +\ 'state_' + options.obs_type + '_train_' +\ 'd%d_'%(options.num_data_train_load) + data_options + '_' + prior_string_train self.qoi_test = directory_dataset +\ project_name +\ 'state_' + options.obs_type + '_test_' +\ 'd%d_'%(options.num_data_test_load) + data_options + '_' + prior_string_test self.qoi_specific = directory_dataset +\ project_name + 'state_' + options.obs_type + '_specific_' +\ data_options if options.obs_type == 'obs': self.qoi_train = directory_dataset +\ project_name +\ 'state_' + options.obs_type + '_train_' +\ 'o%d_d%d_' %(options.num_obs_points, options.num_data_train_load) +\ data_options + '_' + prior_string_train self.qoi_test = directory_dataset +\ project_name +\ 'state_' + options.obs_type + '_test_' +\ 'o%d_d%d_' %(options.num_obs_points, options.num_data_test_load) +\ data_options + '_' + prior_string_test self.qoi_specific = directory_dataset +\ project_name + 'state_' + options.obs_type + '_specific_' +\ 'o%d_'%(options.num_obs_points) +\ data_options ############# # Prior # ############# #=== Prior ===# self.prior_string_reg = prior_string_reg self.prior_mean = directory_dataset +\ 'prior_mean_' + data_options + '_' + prior_string_reg self.prior_covariance = directory_dataset +\ 'prior_covariance_' + data_options + '_' + prior_string_reg self.prior_covariance_inverse = directory_dataset +\ 'prior_covariance_inverse_' + data_options + '_' + prior_string_reg self.prior_covariance_cholesky = directory_dataset +\ 'prior_covariance_cholesky_' + data_options + '_' + prior_string_reg self.prior_covariance_cholesky_inverse = directory_dataset +\ 'prior_covariance_cholesky_inverse_' + data_options + '_' + prior_string_reg ################### # FEM Objects # ################### #=== Pre-Matrices ===# self.forward_matrix = directory_dataset +\ 'forward_matrix_' + data_options self.mass_matrix = directory_dataset +\ 'mass_matrix_' + data_options self.load_vector = directory_dataset +\ 'load_vector_' + data_options #=== Mesh ===# For plotting FEM function mesh_name = 'mesh_square_2D_n%d' %(options.parameter_dimensions) mesh_directory = '../../../../../Datasets/Mesh/' + mesh_name + '/' self.mesh_nodes = mesh_directory + mesh_name + '_nodes.csv' self.mesh_elements = mesh_directory + mesh_name + '_elements.csv'
def prior_string_matern(self, prior_type, kern_type, cov_length): cov_length_string = value_to_string(cov_length) return '%s_%s_%s'%(prior_type, kern_type, cov_length)
def __init__(self, hyperp, options, project_paths): #################### # From Project # #################### #=== Project ===# self.project = project_paths #=== Datasets ===# self.poi_train = project_paths.poi_train self.poi_test = project_paths.poi_test self.poi_specific = project_paths.poi_specific self.qoi_train = project_paths.qoi_train self.qoi_test = project_paths.qoi_test self.qoi_specific = project_paths.qoi_specific #=== Prior ===# self.prior_string_reg = project_paths.prior_string_reg self.prior_mean = project_paths.prior_mean self.prior_covariance = project_paths.prior_covariance self.prior_covariance_inverse = project_paths.prior_covariance_inverse self.prior_covariance_cholesky = project_paths.prior_covariance_cholesky self.prior_covariance_cholesky_inverse = project_paths.prior_covariance_cholesky_inverse #=== Case Name ===# self.case_name = project_paths.case_name #=== Neural Network Architecture and Regularization ===# autoencoder_type = 'VAE' if options.resnet == True: resnet = 'res_' else: resnet = 'nores_' if options.model_aware == True: forward_model_type = 'maware_' if options.model_augmented == True: forward_model_type = 'maug_' #=== File Name ===# penalty_js_string = value_to_string(hyperp.penalty_js) if "posterior_diagonal_covariance" in options: self.nn_name = autoencoder_type + '_' + forward_model_type + resnet +\ self.prior_string_reg +\ '_hle%d_hld%d_hne%d_hnd%d_%s_pjs%s_d%d_b%d_e%d' %( hyperp.num_hidden_layers_encoder, hyperp.num_hidden_layers_decoder, hyperp.num_hidden_nodes_encoder, hyperp.num_hidden_nodes_decoder, hyperp.activation, penalty_js_string, hyperp.num_data_train, hyperp.batch_size, hyperp.num_epochs) if "posterior_full_covariance" in options: self.nn_name = autoencoder_type + '_full_' + forward_model_type + resnet +\ self.prior_string_reg +\ '_hle%d_hld%d_hne%d_hnd%d_%s_pjs%s_d%d_b%d_e%d' %( hyperp.num_hidden_layers_encoder, hyperp.num_hidden_layers_decoder, hyperp.num_hidden_nodes_encoder, hyperp.num_hidden_nodes_decoder, hyperp.activation, penalty_js_string, hyperp.num_data_train, hyperp.batch_size, hyperp.num_epochs) if "posterior_iaf" in options: if options.iaf_lstm_update == True: iaf_type_string = 'IAFLSTM_' else: iaf_type_string = 'IAF_' self.nn_name = autoencoder_type + iaf_type_string + forward_model_type + resnet +\ self.prior_string_reg +\ '_hle%d_hld%d_hne%d_hnd%d_%s_hli%d_hni%d_%s_pjs%s_d%d_b%d_e%d'\ %(hyperp.num_hidden_layers_encoder, hyperp.num_hidden_layers_decoder, hyperp.num_hidden_nodes_encoder, hyperp.num_hidden_nodes_decoder, hyperp.activation, hyperp.num_iaf_transforms, hyperp.num_hidden_nodes_iaf, hyperp.activation_iaf, penalty_js_string, hyperp.num_data_train, hyperp.batch_size, hyperp.num_epochs) #=== Filename ===# self.case_and_nn_name = self.case_name + '/' + self.nn_name
def __init__(self, options): ################ # Case Name # ################ #=== Key Strings ===# project_name = 'advection_diffusion_2d_' if options.flow_navier_stokes == True: flow_string = 'navier_stokes' if options.flow_darcy == True: flow_string = 'darcy' if options.time_stepping_erk4 == True: time_stepping_string = 'erk4' if options.time_stepping_lserk4 == True: time_stepping_string = 'lserk4' if options.time_stepping_implicit == True: time_stepping_string = 'imp' num_nodes_string = 'n%d' % (options.parameter_dimensions) data_options = num_nodes_string + '_' +\ flow_string + '_' +\ time_stepping_string directory_dataset = '../../../../../datasets/fenics/advection_diffusion_2d/' +\ num_nodes_string + '/' + flow_string + '_' + time_stepping_string + '/' #=== Data Type ===# if options.obs_type == 'full': obs_string = 'full' if options.obs_type == 'obs': obs_string = 'obs_o%d' % (options.num_obs_points) if options.add_noise == 1: noise_level_string = value_to_string(options.noise_level) noise_string = 'ns%s_%d' % (noise_level_string, options.num_obs_points) else: noise_string = 'ns0' data_string = data_options + '_' + obs_string + '_' + noise_string + '_' #=== Prior Properties ===# if options.prior_type_blp_reg == True: prior_string_reg = self.prior_string_blp( 'blp', options.prior_mean_blp_reg, options.prior_gamma_blp_reg, options.prior_delta_blp_reg) if options.prior_type_blp_train == True: prior_string_train = self.prior_string_blp( 'blp', options.prior_mean_blp_train, options.prior_gamma_blp_train, options.prior_delta_blp_train) if options.prior_type_blp_test == True: prior_string_test = self.prior_string_blp( 'blp', options.prior_mean_blp_test, options.prior_gamma_blp_test, options.prior_delta_blp_test) if options.prior_type_ac_reg == True: prior_string_reg = self.prior_string_ac( 'ac', options.prior_mean_ac_reg, options.prior_variance_ac_reg, options.prior_corr_ac_reg) if options.prior_type_ac_train == True: prior_string_train = self.prior_string_ac( 'ac', options.prior_mean_ac_train, options.prior_variance_ac_train, options.prior_corr_ac_train) if options.prior_type_ac_test == True: prior_string_test = self.prior_string_ac( 'ac', options.prior_mean_ac_test, options.prior_variance_ac_test, options.prior_corr_ac_test) #=== Case String ===# self.case_name = project_name + data_string + prior_string_train ################ # Datasets # ################ #=== Parameters ===# self.obs_indices = directory_dataset +\ project_name + 'obs_indices_' +\ 'o%d_'%(options.num_obs_points) + num_nodes_string self.poi_train = directory_dataset +\ project_name +\ 'parameter_train_' +\ 'd%d_'%(options.num_data_train_load) + num_nodes_string + '_' + prior_string_train self.poi_test = directory_dataset +\ project_name +\ 'parameter_test_' +\ 'd%d_'%(options.num_data_test_load) + num_nodes_string + '_' + prior_string_test self.poi_specific = directory_dataset +\ project_name + 'parameter_blob_' + num_nodes_string if options.obs_type == 'full': self.qoi_train = directory_dataset +\ project_name +\ 'state_' + options.obs_type + '_train_' +\ 'd%d_'%(options.num_data_train_load) + data_options + '_' + prior_string_train self.qoi_test = directory_dataset +\ project_name +\ 'state_' + options.obs_type + '_test_' +\ 'd%d_'%(options.num_data_test_load) + data_options + '_' + prior_string_test self.qoi_specific = directory_dataset +\ project_name + 'state_' + options.obs_type + '_blob_' +\ 'o%d_'%(options.num_obs_points) +\ data_options if options.obs_type == 'obs': self.qoi_train = directory_dataset +\ project_name +\ 'state_' + options.obs_type + '_train_' +\ 'o%d_d%d_' %(options.num_obs_points, options.num_data_train_load) +\ data_options + '_' + prior_string_train self.qoi_test = directory_dataset +\ project_name +\ 'state_' + options.obs_type + '_test_' +\ 'o%d_d%d_' %(options.num_obs_points, options.num_data_test_load) +\ data_options + '_' + prior_string_test self.qoi_specific = directory_dataset +\ project_name + 'state_' + options.obs_type + '_blob_' +\ 'o%d_'%(options.num_obs_points) +\ data_options ############# # Prior # ############# #=== Prior ===# self.prior_string_reg = prior_string_reg self.prior_mean = directory_dataset +\ 'prior_mean_' + num_nodes_string + '_' + prior_string_reg self.prior_covariance = directory_dataset +\ 'prior_covariance_' + num_nodes_string + '_' + prior_string_reg self.prior_covariance_cholesky = directory_dataset +\ 'prior_covariance_cholesky_' + num_nodes_string + '_' + prior_string_reg self.prior_covariance_cholesky_inverse = directory_dataset +\ 'prior_covariance_cholesky_inverse_' + num_nodes_string + '_' + prior_string_reg ################### # FEM Objects # ################### #=== FEM Operators ===# self.fem_operator_spatial = directory_dataset +\ 'fem_operator_spatial_' + num_nodes_string self.fem_operator_implicit_ts = directory_dataset +\ 'fem_operator_implicit_ts_' + num_nodes_string self.fem_operator_implicit_ts_rhs = directory_dataset +\ 'fem_operator_implicit_ts_rhs_' + num_nodes_string
def __init__(self, options): ################ # Case Name # ################ #=== Defining Filenames ===# data_options = 'm%d_n%d' % (options.mesh_dimensions, options.parameter_dimensions) directory_dataset = '../../../../../datasets/simple_1d/' if hasattr(options, 'continuous_linear_sin' ) and options.continuous_linear_sin == 1: project_name = 'continuous_linear_sin_1d' if hasattr(options, 'continuous_linear_uniform' ) and options.continuous_linear_uniform == 1: project_name = 'continuous_linear_uniform_1d' directory_dataset += project_name + '/' + data_options + '/' #=== Data Properties ===# if options.obs_type == 'full': obs_string = 'full' if options.obs_type == 'obs': obs_string = 'obs_o%d' % (options.num_obs_points) if options.add_noise == 1: noise_level_string = value_to_string(options.noise_level) noise_string = 'ns%s_%d' % (noise_level_string, options.num_obs_points) else: noise_string = 'ns0' data_string = data_options + '_' + obs_string + '_' + noise_string + '_' #=== Prior Properties ===# if options.prior_type_identity_reg == True: prior_string_reg = self.prior_string( 'identity', options.prior_mean_identity_reg) if options.prior_type_identity_train == True: prior_string_train = self.prior_string( 'identity', options.prior_mean_identity_train) if options.prior_type_identity_test == True: prior_string_test = self.prior_string( 'identity', options.prior_mean_identity_test) if options.prior_type_laplacian_reg == True: prior_string_reg = self.prior_string_laplacian( 'laplacian', options.prior_mean_laplacian_reg) if options.prior_type_laplacian_train == True: prior_string_train = self.prior_string_laplacian( 'laplacian', options.prior_mean_laplacian_train) if options.prior_type_laplacian_test == True: prior_string_test = self.prior_string_laplacian( 'laplacian', options.prior_mean_laplacian_test) #=== Case String ===# self.case_name = project_name + '_' + data_string + prior_string_train ################ # Datasets # ################ #=== Forward Operator ===# if hasattr(options, 'discrete_polynomial') and options.discrete_polynomial == 1: self.forward_operator = directory_dataset +\ project_name + '_forward_matrix_' +\ data_options if hasattr(options, 'continuous_linear_sin' ) and options.continuous_linear_sin == 1: self.forward_operator = directory_dataset +\ project_name + '_forward_vector_' +\ data_options if hasattr(options, 'continuous_linear_uniform' ) and options.continuous_linear_uniform == 1: self.forward_operator = directory_dataset +\ project_name + '_forward_vector_' +\ data_options #=== Parameters ===# self.obs_indices = directory_dataset +\ project_name + '_' + 'obs_indices_' +\ 'o%d_'%(options.num_obs_points) + data_options self.poi_train = directory_dataset +\ project_name + '_' + 'parameter_train_' +\ 'd%d_'%(options.num_data_train_load) + data_options + '_' + prior_string_train self.poi_test = directory_dataset +\ project_name + '_' + 'parameter_test_' +\ 'd%d_'%(options.num_data_test_load) + data_options + '_' + prior_string_test self.poi_specific = '' #=== State ===# if options.obs_type == 'full': self.qoi_train = directory_dataset +\ project_name + '_' + 'state_' + options.obs_type + '_train_' +\ 'd%d_'%(options.num_data_train_load) + data_options + '_' + prior_string_train self.qoi_test = directory_dataset +\ project_name + '_' + 'state_' + options.obs_type + '_test_' +\ 'd%d_'%(options.num_data_test_load) + data_options + '_' + prior_string_test self.qoi_specific = '' if options.obs_type == 'obs': self.qoi_train = directory_dataset +\ project_name + '_' + 'state_' + options.obs_type + '_train_' +\ 'o%d_d%d_' %(options.num_obs_points, options.num_data_train_load) +\ data_options + '_' + prior_string_train self.qoi_test = directory_dataset +\ project_name + '_' + 'state_' + options.obs_type + '_test_' +\ 'o%d_d%d_' %(options.num_obs_points, options.num_data_test_load) +\ data_options + '_' + prior_string_test self.qoi_specific = '' ############# # Prior # ############# #=== Prior ===# self.prior_string_reg = prior_string_reg self.prior_mean = directory_dataset +\ 'prior_mean_' + data_options + '_' + prior_string_train self.prior_covariance = directory_dataset +\ 'prior_covariance_' + data_options + '_' + prior_string_train self.prior_covariance_inverse = directory_dataset +\ 'prior_covariance_inverse_' + data_options + '_' + prior_string_train self.prior_covariance_cholesky = directory_dataset +\ 'prior_covariance_cholesky_' + data_options + '_' + prior_string_train self.prior_covariance_cholesky_inverse = directory_dataset +\ 'prior_covariance_cholesky_inverse_' + data_options + '_' + prior_string_train
def __init__(self, options): ################ # Case Name # ################ #=== Key Strings ===# data_options = 'n%d' % (options.parameter_dimensions) if options.boundary_conditions_dirichlet == True: project_name = 'screened_poisson_linear_dirichlet_1d_' directory_dataset =\ '../../../../../datasets/fenics/screened_poisson_linear_dirichlet_1d/' +\ data_options + '/' if options.boundary_conditions_neumann == True: project_name = 'screened_poisson_linear_neumann_1d_' directory_dataset =\ '../../../../../datasets/fenics/screened_poisson_linear_neumann_1d/' +\ data_options + '/' #=== Data Type ===# if options.obs_type == 'full': obs_string = 'full' if options.obs_type == 'obs': obs_string = 'obs_o%d' % (options.num_obs_points) if options.add_noise == 1: noise_level_string = value_to_string(options.noise_level) noise_string = 'ns%s_%d' % (noise_level_string, options.num_obs_points) else: noise_string = 'ns0' data_string = data_options + '_' + obs_string + '_' + noise_string + '_' #=== Prior Properties ===# if options.prior_type_lp_reg == True: prior_string_reg = self.prior_string_lp('lp', options.prior_mean_lp_reg, options.prior_gamma_lp_reg, options.prior_delta_lp_reg) if options.prior_type_lp_train == True: prior_string_train = self.prior_string_lp( 'lp', options.prior_mean_lp_train, options.prior_gamma_lp_train, options.prior_delta_lp_train) if options.prior_type_lp_test == True: prior_string_test = self.prior_string_lp( 'lp', options.prior_mean_lp_test, options.prior_gamma_lp_test, options.prior_delta_lp_test) #=== Case String ===# self.case_name = project_name + data_string + prior_string_train ################ # Datasets # ################ #=== Parameters ===# self.obs_indices = directory_dataset +\ project_name + 'obs_indices_' +\ 'o%d_'%(options.num_obs_points) + data_options self.poi_train = directory_dataset +\ project_name +\ 'parameter_train_' +\ 'd%d_'%(options.num_data_train_load) + data_options + '_' + prior_string_train self.poi_test = directory_dataset +\ project_name +\ 'parameter_test_' +\ 'd%d_'%(options.num_data_test_load) + data_options + '_' + prior_string_test self.poi_specific = directory_dataset +\ project_name + 'parameter_specific_' + data_options if options.obs_type == 'full': self.qoi_train = directory_dataset +\ project_name +\ 'state_' + options.obs_type + '_train_' +\ 'd%d_'%(options.num_data_train_load) + data_options + '_' + prior_string_train self.qoi_test = directory_dataset +\ project_name +\ 'state_' + options.obs_type + '_test_' +\ 'd%d_'%(options.num_data_test_load) + data_options + '_' + prior_string_test self.qoi_specific = directory_dataset +\ project_name + 'state_' + options.obs_type + '_specific_' +\ data_options if options.obs_type == 'obs': self.qoi_train = directory_dataset +\ project_name +\ 'state_' + options.obs_type + '_train_' +\ 'o%d_d%d_' %(options.num_obs_points, options.num_data_train_load) +\ data_options + '_' + prior_string_train self.qoi_test = directory_dataset +\ project_name +\ 'state_' + options.obs_type + '_test_' +\ 'o%d_d%d_' %(options.num_obs_points, options.num_data_test_load) +\ data_options + '_' + prior_string_test self.qoi_specific = directory_dataset +\ project_name + 'state_' + options.obs_type + '_specific_' +\ 'o%d_'%(options.num_obs_points) +\ data_options ############# # Prior # ############# #=== Prior ===# if options.prior_type_identity_reg == True: self.prior_string_reg = 'identity' else: self.prior_string_reg = prior_string_reg self.prior_mean = directory_dataset +\ 'prior_mean_' + data_options + '_' + prior_string_reg self.prior_covariance = directory_dataset +\ 'prior_covariance_' + data_options + '_' + prior_string_reg self.prior_covariance_inverse = directory_dataset +\ 'prior_covariance_inverse_' + data_options + '_' + prior_string_reg self.prior_covariance_cholesky = directory_dataset +\ 'prior_covariance_cholesky_' + data_options + '_' + prior_string_reg self.prior_covariance_cholesky_inverse = directory_dataset +\ 'prior_covariance_cholesky_inverse_' + data_options + '_' + prior_string_reg ################### # FEM Objects # ################### #=== Forward Operator ===# self.forward_matrix = directory_dataset +\ 'forward_matrix_' + data_options self.mass_matrix = directory_dataset +\ 'mass_matrix_' + data_options