def predict_model(param, config, obs_data, sim_data, smf_only=False, ds_only=False): """Return all model predictions. Parameters ---------- param: list, array, or tuple. Input model parameters. config : dict Configurations of the data and model. obs_data: dict Dictionary for observed data. sim_data: dict Dictionary for UniverseMachine data. constant_bin : boolen Whether to use constant bin size for logMs_tot or not. return_all : bool, optional Return all model information. show_smf : bool, optional Show the comparison of SMF. show_dsigma : bool, optional Show the comparisons of WL. """ mass_x_field = config['sim_mass_x_field'] halotools = config['sim_halotools'] if halotools: print("USING HALOTOOLS with halo_mvir") # build_model and populate mock if 'model' in sim_data: # save memory if model already exists for i, model_param in enumerate(config['param_labels']): sim_data['model'].param_dict[model_param] = param[i] # set redshift dependence to 0 for i, model_param in enumerate(config['redshift_param_labels']): sim_data['model'].param_dict[model_param] = 0 sim_data['model'].mock.populate() print('mock.populate') else: sim_data['model'] = PrebuiltSubhaloModelFactory( 'behroozi10', redshift=config['sim_z'], scatter_abscissa=[12, 15], scatter_ordinates=[param[0], param[1]]) for i, model_param in enumerate(config['param_labels']): sim_data['model'].param_dict[model_param] = param[i] # set redshift dependence to 0 for i, model_param in enumerate(config['redshift_param_labels']): sim_data['model'].param_dict[model_param] = 0 # populate mock # sim_data['model'].populate_mock(deepcopy(sim_data['halocat'])) sim_data['model'].populate_mock(sim_data['halocat']) print('populate_mock') print(sim_data['model'].param_dict) stellar_masses = np.log10( sim_data['model'].mock.galaxy_table['stellar_mass']) else: #use Chris' code instead of halotools print("USING CHRIS' CODE with {0}".format(mass_x_field)) stellar_masses = get_chris_stellar_masses(param, config, sim_data) # Predict SMFs smf_mass_bins, smf_log_phi = compute_SMF(stellar_masses, config, nbins=100) print('SMF computed') if smf_only: return smf_mass_bins, smf_log_phi, None, None, stellar_masses # Predict DeltaSigma profiles wl_r, wl_ds = compute_deltaSigma(stellar_masses, config, obs_data, sim_data) print('DS computed') if ds_only: return None, None, wl_r, wl_ds, stellar_masses return smf_mass_bins, smf_log_phi, wl_r, wl_ds, stellar_masses