emu

Includes all the emulator functions
# #| export

# def blockPrint():
#     sys._jupyter_stdout = sys.stdout
#     sys.stdout = open(os.devnull, 'w')

# def enablePrint():
#     sys._jupyter_stdout = sys.stdout
#     sys.stdout = sys.__stdout__

enablePrint

def enablePrint():

Call self as a function.


blockPrint

def blockPrint():

Call self as a function.

# #| hide

# def emulate_old(sepia_model:SepiaModel=None, # Input data in SEPIA format
#         input_params:np.array=None, #Input parameter array 
#        ) -> tuple: # 2 np.array of mean and (0.05,0.95) quantile in prediction
    
    
#     if len(input_params.shape) == 1:
#         ip = np.expand_dims(input_params, axis=0)
        
#     else:
#         ip = input_params
        
#     pred_samples= sepia_model.get_samples(numsamples=20)
        
#     pred = SepiaEmulatorPrediction(t_pred=ip, samples=pred_samples, model=sepia_model, storeMuSigma=True)
    
#     pred_samps = pred.get_y()
#     pred_mean = np.mean(pred_samps, axis=0).T
#     pred_quant = np.quantile(pred_samps, [0.05, 0.95], axis=0).T

#     return np.array(pred_mean), np.array(pred_quant)
# #| hide

# def emulate(sepia_model:SepiaModel=None, # Input data in SEPIA format
#         input_params:np.array=None, #Input parameter array 
#        ) -> tuple : # 2 np.array of mean and (0.05,0.95) quantile in prediction
    
    
#     if len(input_params.shape) == 1:
#         ip = np.expand_dims(input_params, axis=0)
        
#     else:
#         ip = input_params
        
#     pred_samples= sepia_model.get_samples(numsamples=20)
        
#     pred = SepiaEmulatorPrediction(t_pred=ip, samples=pred_samples, model=sepia_model, storeMuSigma=True)
    
#     pred_samps = pred.get_y()
#     pred_mean = np.mean(pred_samps, axis=0).T
#     pred_err = np.quantile(pred_samps, [0.05, 0.95], axis=0).T



#     # pred_mean_arr, pred_err_arr = pred.get_mu_sigma()
#     # pred_mean = np.mean(pred_mean_arr, axis=0).T
#     # pred_err = np.std(pred_err_arr, axis=0).T

#     '''
#     pred_mean_arr = pred.mu #(#samples, #x_pred)
#     pred_err_arr = pred.sigma #(#samples, #x_pred, #x_pred)


#     pred_mean = np.mean(pred_mean_arr, axis=0).T
#     pred_err = np.mean(pred_err_arr, axis=0).T ## pred.diag?

#     print(pred_mean_arr.shape)
#     print(pred_err_arr.shape)
    
#     '''

#     return np.array(pred_mean), np.array(pred_err)
#     # return np.array(pred_mean), np.array(pred_err)

emulate

def emulate(
    sepia_model:SepiaModel=None, # Input model in SEPIA format
    sepia_data:SepiaData=None, # Input data in SEPIA format
    input_params:array=None, # Input parameter array
)->tuple: # 2 np.array of mean and std

Call self as a function.

# #| export

# def load_model_multiple(model_dir:str=None, # Pickle directory path
#                         p_train_all:np.array=None, # Parameter array
#                         y_vals_all:np.array=None, # Target y-values array
#                         y_ind_all:np.array=None, # x-values
#                         z_index_range:np.array=None, # Snapshot indices for training
#                    ) -> None: 
    
#     blockPrint()
    
#     model_list = []
#     data_list = []
    
#     for z_index in z_index_range:
        
#         sepia_data = sepia_data_format(p_train_all, y_vals_all[:, z_index, :], y_ind_all)
        
#         sepia_model_pca_i = do_pca(sepia_data, exp_variance=0.999)
        
#         model_filename = model_dir + 'multivariate_model_z_index' + str(z_index) 
#         sepia_model_z = gp_load(sepia_model_pca_i, model_filename)
#         model_list.append(sepia_model_z)
#         data_list.append(sepia_data)

#     enablePrint()

#     print('Number of models loaded: ' + str(len(model_list)) + ' from: ' + model_dir  )

    
#     '''
#     # def sepia_data_by_redshift(redshift):
#     ## Data prep
#     Bk_all, k_all, z_all = load_boost_data()
#     p_all = load_params()
#     z_index = np.argmin(np.abs(z_all - redshift))
#     print('Redshift index: ' + str(z_index))

#     # Load validation data
#     train_indices = [i for i in  np.arange(49)] # if i not in test_indices]
#     p_all_train = p_all[train_indices]
#     y_vals_train = Bk_all[:, z_index, :][train_indices]
#     print('Redshift: ' + str(z_all[z_index]))

#     sepia_data_z = sepia_data_format(p_all_train, y_vals_train, k_all)
#     do_pca(sepia_data_z, exp_variance=0.999)

#     return sepia_data_z

#     '''


#     return model_list, data_list

load_model_multiple

def load_model_multiple(
    model_dir:str=None, # Pickle directory path
    p_train_all:array=None, # Parameter array
    y_vals_all:array=None, # Target y-values array
    y_ind_all:array=None, # x-values
    z_index_range:array=None, # Snapshot indices for training
)->None:

Call self as a function.


emu_redshift

def emu_redshift(
    input_params_and_redshift:array=None, # Input parameters (along with redshift)
    sepia_model_list:list=None, sepia_data_list:list=None, z_all:array=None, # All the trained models
):

Call self as a function.