def read_beatlas_xdr(): from simulation import setup_simulation simulation, stellardata = setup_simulation() Nwalk, Nstep, Nproc, alist, starname, xdrfile, suffix,prior_vsini,prior_dist,data_source = simulation imin, imax, ebvmin, ebvmax, rvmin, rvmax, plx0, dplx0, Nsig,vsini0, dvsini0 = stellardata dims = ['M', 'ob', 'sig0', 'mr', 'cosi'] dims = dict(zip(dims, range(len(dims)))) isig = dims["sig0"] ctrlarr = [np.NaN, np.NaN, np.NaN, np.NaN, np.NaN] tmp = 0 cont = 0 while tmp < len(ctrlarr): if math.isnan(ctrlarr[tmp]) is True: cont = cont + 1 tmp = tmp + 1 else: tmp = tmp + 1 folder_models = 'bat/' xdrPL = folder_models + 'beatlas_disk_flx.xdr' # 'PL.xdr' listpar, lbdarr, minfo, models = bat.readBAsed(xdrPL, quiet=False) # F(lbd)] = 10^-4 erg/s/cm2/Ang for i in range(np.shape(minfo)[0]): for j in range(np.shape(minfo)[1]): if minfo[i][j] < 0: minfo[i][j] = 0. for i in range(np.shape(models)[0]): for j in range(np.shape(models)[1]): if models[i][j] < 0. or models[i][j] == 0.: models[i][j] = (models[i][j + 1] + models[i][j - 1]) / 2. listpar[-1][0] = 0. ranges = np.array([[listpar[0].min(), listpar[0].max()], \ [listpar[1].min(), listpar[1].max()], \ [listpar[2].min(), listpar[2].max()], \ [listpar[3].min(), listpar[3].max()], \ [listpar[4].min(), listpar[4].max()]]) # add ebv range ranges = np.vstack([ranges, np.array([ebvmin, ebvmax])]) # add Rv range ranges = np.vstack([ranges, np.array([rvmin, rvmax])]) # add dist range ranges = np.vstack([ranges, np.array([plx0-Nsig*dplx0, plx0+Nsig*dplx0])]) return ctrlarr, minfo, models, lbdarr, listpar, dims, isig, ranges
def read_acol_xdr(): # print(params_tmp) dims = ['M', 'ob', 'Hfrac', 'sig0', 'Rd', 'mr', 'cosi'] dims = dict(zip(dims, range(len(dims)))) isig = dims["sig0"] ctrlarr = [np.NaN, np.NaN, np.NaN, np.NaN, np.NaN, np.NaN, np.NaN] tmp = 0 cont = 0 while tmp < len(ctrlarr): if math.isnan(ctrlarr[tmp]) is True: cont = cont + 1 tmp = tmp + 1 else: tmp = tmp + 1 # Read the grid models, with the interval of parameters. folder_models = 'models/' xdrPL = folder_models + 'acol.xdr' listpar, lbdarr, minfo, models = bat.readBAsed(xdrPL, quiet=False) # Filter (removing bad models) for i in range(np.shape(minfo)[0]): for j in range(np.shape(minfo)[1]): if minfo[i][j] < 0: minfo[i][j] = 0. for i in range(np.shape(listpar)[0]): for j in range(len(listpar[i])): if listpar[i][j] < 0: listpar[i][j] = 0. mask = np.ones(len(minfo[0]), dtype=bool) mask[[2, 6]] = False result = [] for i in range(len(minfo)): result.append(minfo[i][mask]) minfo = np.copy(result) for i in range(np.shape(minfo)[0]): minfo[i][3] = np.log10(minfo[i][3]) listpar[4] = np.log10(listpar[4]) listpar[4].sort() listpar = list([ listpar[0], listpar[1], listpar[3], listpar[4], listpar[5], listpar[7], listpar[8] ]) return ctrlarr, minfo, models, lbdarr, listpar, dims, isig
def read_befavor_xdr(): folder_models = 'models/' dims = ['M', 'ob', 'Hfrac', 'sig0', 'Rd', 'mr', 'cosi'] dims = dict(zip(dims, range(len(dims)))) isig = dims["sig0"] ctrlarr = [np.NaN, np.NaN, 0.014, np.NaN, 0.0, 50.0, 60.0, 3.5, np.NaN] tmp = 0 cont = 0 while tmp < len(ctrlarr): if math.isnan(ctrlarr[tmp]) is True: cont = cont + 1 tmp = tmp + 1 else: tmp = tmp + 1 # Read the grid models, with the interval of parameters. xdrPL = folder_models + 'BeFaVOr.xdr' listpar, lbdarr, minfo, models = bat.readBAsed(xdrPL, quiet=False) # [models] = [F(lbd)]] = 10^-4 erg/s/cm2/Ang for i in range(np.shape(minfo)[0]): for j in range(np.shape(minfo)[1]): if minfo[i][j] < 0: minfo[i][j] = 0. for i in range(np.shape(models)[0]): for j in range(np.shape(models)[1]): if models[i][j] < 0 and (j != 0 or j != len(models[i][j]) - 1): models[i][j] = (models[i][j - 1] + models[i][j + 1]) / 2. # delete columns of fixed par cols2keep = [0, 1, 3, 8] cols2delete = [2, 4, 5, 6, 7] listpar = [listpar[i] for i in cols2keep] minfo = np.delete(minfo, cols2delete, axis=1) listpar[3].sort() listpar[3][0] = 0. return ctrlarr, minfo, models, lbdarr, listpar, dims, isig
def read_beatlas_xdr(): dims = ['M', 'ob', 'sig0', 'mr', 'cosi'] dims = dict(zip(dims, range(len(dims)))) isig = dims["sig0"] ctrlarr = [np.NaN, np.NaN, np.NaN, np.NaN, np.NaN] tmp = 0 cont = 0 while tmp < len(ctrlarr): if math.isnan(ctrlarr[tmp]) is True: cont = cont + 1 tmp = tmp + 1 else: tmp = tmp + 1 folder_models = 'models/' xdrPL = folder_models + 'disk_flx.xdr' # 'PL.xdr' listpar, lbdarr, minfo, models = bat.readBAsed(xdrPL, quiet=False) # F(lbd)] = 10^-4 erg/s/cm2/Ang for i in range(np.shape(minfo)[0]): for j in range(np.shape(minfo)[1]): if minfo[i][j] < 0: minfo[i][j] = 0. for i in range(np.shape(models)[0]): for j in range(np.shape(models)[1]): if models[i][j] < 0. or models[i][j] == 0.: models[i][j] = (models[i][j + 1] + models[i][j - 1]) / 2. listpar[-1][0] = 0. return ctrlarr, minfo, models, lbdarr, listpar, dims, isig
def read_befavor_xdr_complete(): folder_models = 'models/' dims = ['M', 'ob', 'Hfrac', 'sig0', 'Rd', 'mr', 'cosi'] dims = dict(zip(dims, range(len(dims)))) isig = dims["sig0"] ctrlarr = [np.NaN, np.NaN, np.NaN, np.NaN, np.NaN, np.NaN, np.NaN] tmp = 0 cont = 0 while tmp < len(ctrlarr): if math.isnan(ctrlarr[tmp]) is True: cont = cont + 1 tmp = tmp + 1 else: tmp = tmp + 1 # Read the grid models, with the interval of parameters. xdrPL = folder_models + 'aara_sed.xdr' # 'PL.xdr' # xdrPL = folder_models + 'aara_final.xdr' # 'PL.xdr' # xdrPL = folder_models + 'aara_acs.xdr' # 'PL.xdr' # xdrPL = folder_models + 'disk_flx.xdr' # 'PL.xdr' listpar, lbdarr, minfo, models = bat.readBAsed(xdrPL, quiet=False) # F(lbd)] = 10^-4 erg/s/cm2/Ang for i in range(np.shape(minfo)[0]): for j in range(np.shape(minfo)[1]): if minfo[i][j] < 0: minfo[i][j] = 0. for i in range(np.shape(models)[0]): for j in range(np.shape(models)[1]): if models[i][j] < 0. or models[i][j] == 0.: models[i][j] = (models[i][j + 1] + models[i][j - 1]) / 2. # n0 to logn0 listpar[4] = np.log10(listpar[4]) listpar[4].sort() minfo[:, 4] = np.log10(minfo[:, 4]) if True: mask = [] tmp, idx = find_nearest(lbdarr, 1000) for i in range(len(models)): if models[i][idx] > 2.21834e-10: mask.append(i) # print(i) # plt.plot(lbdarr, models[i], alpha=0.1) tmp, idx = find_nearest(lbdarr, 80) for i in range(len(models)): if models[i][idx] > 2e-8: mask.append(i) # print(i) # # plt.plot(lbdarr, models[i], alpha=0.1) tmp, idx = find_nearest(lbdarr, 850) for i in range(len(models)): if models[i][idx] > 7e-11: mask.append(i) # print(i) # plt.plot(lbdarr, models[i], alpha=0.1) # plt.yscale('log') # plt.xscale('log') # plt.show() new_models = np.delete(models, mask, axis=0) new_minfo = np.delete(minfo, mask, axis=0) models = np.copy(new_models) minfo = np.copy(new_minfo) # delete columns of fixed par cols2keep = [0, 1, 3, 4, 5, 7, 8] cols2delete = [2, 6] listpar = [listpar[i] for i in cols2keep] minfo = np.delete(minfo, cols2delete, axis=1) listpar[3].sort() # for i in range(len(models)): # plt.plot(lbdarr, models[i], alpha=0.1) # plt.yscale('log') # plt.xscale('log') # plt.show() return ctrlarr, minfo, models, lbdarr, listpar, dims, isig