enum spawn_type spawn_typeFromString(const char * st) { STRING2ENUM(st, TREE); STRING2ENUM(st, LINEAR); return TREE; }
enum pattern_type pattern_typeFromString(const char * pt) { STRING2ENUM(pt, RANDOM); STRING2ENUM(pt, INCREASING); STRING2ENUM(pt, DECREASING); return RANDOM; }
SMC_ABC_t *initialize_SMC_ABC_t(peak_param *peak, error **err) { SMC_ABC_t *ABC = (SMC_ABC_t*)malloc_err(sizeof(SMC_ABC_t), err); forwardError(*err, __LINE__,); ABC->d = peak->ABC_d; ABC->p = peak->ABC_p; ABC->r_stop = peak->ABC_r_stop; int i; STRING2ENUM(ABC->summ, peak->ABC_summ, summary_t, STR_SUMMARY_T, i, NB_SUMMARY_T, err); forwardError(*err, __LINE__,); ABC->epsilon_0 = DBL_MAX; ABC->priorFct = prior_pentagon; ABC->t = 0; ABC->oldPart = initialize_particle_arr(ABC->d, ABC->p, err); forwardError(*err, __LINE__,); ABC->newPart = initialize_particle_arr(ABC->d, ABC->p, err); forwardError(*err, __LINE__,); ABC->diffList = initialize_double_arr(ABC->p); if (ABC->summ == abd6) { ABC->obsSummary = initialize_double_arr(6); ABC->simulSummary = initialize_double_arr(6); ABC->peakHist = initialize_hist_t(6); set_hist_t(ABC->peakHist, 3.5, 6.5); ABC->peakHist->x_max = 1000.0; //-- So that bins are [3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 1000.0] ABC->summaryFct = summary_abd_all; ABC->distFct = dist_abd6; } else if (ABC->summ == pct6) { ABC->obsSummary = initialize_double_arr(6); ABC->simulSummary = initialize_double_arr(6); ABC->summaryFct = summary_pct6; ABC->distFct = dist_6D; } else if (ABC->summ == cut6) { ABC->obsSummary = initialize_double_arr(6); ABC->simulSummary = initialize_double_arr(6); ABC->summaryFct = summary_cut6; ABC->distFct = dist_6D; } else if (ABC->summ == abd5) { ABC->obsSummary = initialize_double_arr(5); ABC->simulSummary = initialize_double_arr(5); ABC->peakHist = initialize_hist_t(5); ABC->peakHist->x_lower[0] = 3.0; ABC->peakHist->x_lower[1] = 3.8; ABC->peakHist->x_lower[2] = 4.5; ABC->peakHist->x_lower[3] = 5.3; ABC->peakHist->x_lower[4] = 6.2; ABC->peakHist->x_max = 1000.0; //-- So that bins are [3.0, 3.8, 4.5, 5.3, 6.2, 1000.0] ABC->summaryFct = summary_abd_all; ABC->distFct = dist_abd5; } else if (ABC->summ == pct5) { ABC->obsSummary = initialize_double_arr(5); ABC->simulSummary = initialize_double_arr(5); ABC->summaryFct = summary_pct5; ABC->distFct = dist_pct5; } else if (ABC->summ == cut5) { ABC->obsSummary = initialize_double_arr(5); ABC->simulSummary = initialize_double_arr(5); ABC->summaryFct = summary_cut5; ABC->distFct = dist_cut5; } else if (ABC->summ == pct4) { ABC->obsSummary = initialize_double_arr(4); ABC->simulSummary = initialize_double_arr(4); ABC->summaryFct = summary_pct4; ABC->distFct = dist_4D; } else if (ABC->summ == pct998) { ABC->obsSummary = initialize_double_arr(1); ABC->simulSummary = initialize_double_arr(1); ABC->summaryFct = summary_pct998; ABC->distFct = dist_1D; } else if (ABC->summ == pct996) { ABC->obsSummary = initialize_double_arr(1); ABC->simulSummary = initialize_double_arr(1); ABC->summaryFct = summary_pct996; ABC->distFct = dist_1D; } else if (ABC->summ == cut900) { ABC->obsSummary = initialize_double_arr(1); ABC->simulSummary = initialize_double_arr(1); ABC->summaryFct = summary_cut900; ABC->distFct = dist_1D; } else {*err = addError(peak_unknown, "Unknown summary type", *err, __LINE__); forwardError(*err, __LINE__,);} int length = (peak->resol[0] - 2 * peak->bufferSize) * (peak->resol[1] - 2 * peak->bufferSize); cosmo_hm *cmhm = initialize_cosmo_hm_default(err); forwardError(*err, __LINE__,); ABC->sampArr = initialize_sampler_arr(peak->N_z_halo, peak->nbMassBins); ABC->hMap = initialize_halo_map(peak->resol[0], peak->resol[1], peak->theta_pix, err); forwardError(*err, __LINE__,); ABC->gMap = initialize_gal_map(peak->resol[0], peak->resol[1], peak->theta_pix, err); forwardError(*err, __LINE__,); makeGalaxies(cmhm, peak, ABC->gMap, err); forwardError(*err, __LINE__,); ABC->kMap = initialize_map_t(peak->resol[0], peak->resol[1], peak->theta_pix, err); forwardError(*err, __LINE__,); ABC->nMap = initialize_map_t(peak->resol[0], peak->resol[1], peak->theta_pix, err); forwardError(*err, __LINE__,); ABC->transformer = initialize_FFT_t(peak->FFTSize, peak->FFTSize); fillGaussianKernel(ABC->transformer, peak->s); ABC->peakList = initialize_double_arr(length); free_parameters_hm(&cmhm); printf("ABC initialization done\n"); return ABC; }