def from_plateifu(cls, plateifu, res_basedir, pca_system, cosmo=cosmo, mlband='i'): plate, ifu = plateifu.split('-') results = read_results.PCAOutput.from_plateifu(basedir=res_basedir, plate=plate, ifu=ifu) drp = m.load_drp_logcube(plate, ifu, mpl_v) dap = m.load_dap_maps(plate, ifu, mpl_v, daptype) drpall = m.load_drpall(mpl_v, 'plateifu') drpall_row = drpall.loc['{}-{}'.format(plate, ifu)] return cls(results, pca_system, drp, dap, drpall_row, cosmo, mlband)
def from_plateifu(cls, plate, ifu, MPL_v, kind, row=None, **kwargs): ''' load a MaNGA galaxy from a plateifu specification ''' plate, ifu = str(plate), str(ifu) if row is None: drpall = m.load_drpall(MPL_v, index='plateifu') row = drpall.loc['{}-{}'.format(plate, ifu)] drp_hdulist = m.load_drp_logcube(plate, ifu, MPL_v) dap_hdulist = m.load_dap_maps(plate, ifu, MPL_v, kind) return cls(drp_hdulist, dap_hdulist, row, **kwargs)
def from_plateifu(cls, plate, ifu, MPL_v, kind, row=None, **kwargs): ''' load a MaNGA galaxy from a plateifu specification ''' plate, ifu = str(plate), str(ifu) if row is None: drpall = m.load_drpall(MPL_v, index='plateifu') row = drpall.loc['{}-{}'.format(plate, ifu)] drp_hdulist = m.load_drp_logcube(plate, ifu, MPL_v) dap_hdulist = m.load_dap_maps(plate, ifu, MPL_v, kind) return cls(drp_hdulist, dap_hdulist, row, **kwargs)
def from_plateifu(cls, plateifu, res_basedir, pca_system, cosmo=cosmo, mlband='i'): plate, ifu = plateifu.split('-') results = read_results.PCAOutput.from_plateifu(basedir=res_basedir, plate=plate, ifu=ifu) drp = m.load_drp_logcube(plate, ifu, mpl_v) dap = m.load_dap_maps(plate, ifu, mpl_v, daptype) drpall = m.load_drpall(mpl_v, 'plateifu') drpall_row = drpall.loc['{}-{}'.format(plate, ifu)] return cls(results, pca_system, drp, dap, drpall_row, cosmo, mlband)
def from_fakedata(cls, plate, ifu, MPL_v, basedir='fakedata', row=None, kind='SPX-MILESHC-MILESHC', **kwargs): ''' load fake data based on a particular already-observed galaxy ''' plate, ifu = str(plate), str(ifu) if row is None: drpall = m.load_drpall(MPL_v, index='plateifu') row = drpall.loc['{}-{}'.format(plate, ifu)] drp_hdulist = fits.open( os.path.join(basedir, '{}-{}_drp.fits'.format(plate, ifu))) dap_hdulist = fits.open( os.path.join(basedir, '{}-{}_dap.fits'.format(plate, ifu))) return cls(drp_hdulist, dap_hdulist, row, **kwargs)
from astropy import units as u from astropy.cosmology import WMAP9 from astropy.utils.console import ProgressBar import numpy as np import matplotlib.pyplot as plt from matplotlib import colors as mcolors from matplotlib import gridspec from matplotlib.legend_handler import HandlerTuple from statsmodels.nonparametric.smoothers_lowess import lowess from statsmodels.regression.linear_model import OLS from statsmodels.tools.tools import add_constant as sm_add_constant drpall = m.load_drpall(mpl_v, index='plateifu') dapall = m.load_dapall(mpl_v) dapall = dapall[dapall['DAPDONE'] * (dapall['DAPTYPE'] == daptype)] dapall.add_index('PLATEIFU') pca_system = read_results.PCASystem.fromfile(os.path.join(csp_basedir, 'pc_vecs.fits')) jhumpa = t.Table.read('/usr/data/minhas/zpace/stellarmass_pca/jhu_mpa_{}.fits'.format( mpl_v.replace('-', '').lower())) jhumpa['plateifu'] = [plateifu.strip(' ') for plateifu in jhumpa['PLATEIFU']] jhumpa = jhumpa['plateifu', 'LOG_MSTAR'] jhumpa = jhumpa[jhumpa['LOG_MSTAR'] > 0.] sfrsd_tab = t.Table.read('/usr/data/minhas/zpace/stellarmass_pca/sigma_sfr.fits') sfrsd_tab['plateifu'] = sfrsd_tab['names']
linefluxes_noise = real_unc * np.random.randn(*linefluxes_real.shape) linefluxes_obs = linefluxes_real + linefluxes_noise obs_unc = real_unc / unc_factor mask_obs = np.any(linefluxes_obs < 0., axis=1) print(linefluxes_obs.shape) ''' ''' fakemodel, faketrace = metallicity.find_ism_params( grid=cloudy_fsps_grid, dustlaw=fitzpatrick99, line_obs=[linefluxes_obs[~mask_obs], obs_unc[~mask_obs], mask_obs[~mask_obs]], line_ls=line_ls, drpall_row={'nsa_zdist': zdist}) ''' ##### drpall = m.load_drpall(metallicity.mpl_v) drpall.add_index('plateifu') drpall_row = drpall.loc['9497-9101'] plate, ifu = drpall_row['plateifu'].split('-') el = metallicity.Elines.DAP_from_plateifu( plate, ifu, mpl_v, 'SPX-GAU-MILESHC', data_colname='MPL-6-name', lines_used=cloudy_fsps_grid.observable_names, elines_table=elines) pcares = from_pca.PCAOutput.from_plateifu(basedir=os.path.join( pca_basedir, 'results'),
def make_color_compare(CSP_dir, mpl_v, n_obs=10, model_zcolors=False, randomseed=None, snr_min=5.): ''' make (g-r) vs (r-i) plot ''' if randomseed is not None: np.random.seed(randomseed) drpall = m.load_drpall(mpl_v, index='plateifu') drpall = drpall[(drpall['mngtarg2'] == 0) * (drpall['nsa_z'] != -9999)] plateifus = np.random.choice(drpall['plateifu'], replace=False, size=n_obs) # cols are g, r, and i fluxes in order obs_fluxes = [ m.get_gal_bpfluxes(*plateifu.split('-'), mpl_v, ['g', 'r', 'i'], snr_min) for plateifu in plateifus ] obs_ext = np.concatenate([ np.repeat(drpall.loc[plateifu]['nsa_extinction'][None, 3:6], f.shape[0], axis=0) for f, plateifu in zip(obs_fluxes, plateifus) ]) obs_fluxes = np.row_stack(obs_fluxes) integrated_g = drpall['nsa_elpetro_absmag'][:, 3] - \ drpall['nsa_extinction'][:, 3] integrated_r = drpall['nsa_elpetro_absmag'][:, 4] - \ drpall['nsa_extinction'][:, 4] integrated_i = drpall['nsa_elpetro_absmag'][:, 5] - \ drpall['nsa_extinction'][:, 5] integrated_gr = integrated_g - integrated_r integrated_ri = integrated_r - integrated_i obs_gr = -2.5 * np.log10(obs_fluxes[:, 0] / obs_fluxes[:, 1]) - \ (obs_ext[:, 0] - obs_ext[:, 1]) obs_ri = -2.5 * np.log10(obs_fluxes[:, 1] / obs_fluxes[:, 2]) - \ (obs_ext[:, 1] - obs_ext[:, 2]) models_fnames = glob.glob(os.path.join(CSP_dir, 'CSPs_*.fits')) if model_zcolors: color1 = 'Cgr_z015' color2 = 'Cri_z015' color1TeX = r'$^{.15}C_{gr}$' color2TeX = r'$^{.15}C_{ri}$' else: color1 = 'Cgr' color2 = 'Cri' color1TeX = r'$C_{gr}$' color2TeX = r'$C_{ri}$' models_colors = t.vstack( [t.Table.read(fn_)[color1, color2] for fn_ in models_fnames]) fig = plt.figure() ax = fig.add_subplot(1, 1, 1, projection='scatter_density') ax.scatter([-100], [-100], c='g', s=1, marker='s', label='models') ax.scatter([-100], [-100], c='b', s=1, marker='s', label='spax') ax.scatter([-100], [-100], c='r', s=1, marker='s', label='integrated') ax.scatter_density(obs_gr, obs_ri, color='b') ax.scatter_density(models_colors[color1], models_colors[color2], color='g') #ax.scatter_density(integrated_gr, integrated_ri, color='r') ax.set_xlim([-.2, 1.4]) ax.set_ylim([-.1, 0.6]) ax.set_xlabel(color1TeX, size='small') ax.set_ylabel(color2TeX, size='small') ax.legend(loc='best') fig.suptitle(CSP_dir.replace('_', '-'), size='x-small') fig.tight_layout() ax.tick_params(labelsize='x-small') basename = 'Cgr_Cri' if model_zcolors: basename = '_'.join((basename, 'z015')) savefig(fig, ''.join((basename, '.png')), CSP_dir, close=True)
def from_mpl_v(cls, v): drpall = m.load_drpall(v) return cls(drpall)
from astropy import table as t from astropy import units as u from astropy.cosmology import WMAP9 from astropy.utils.console import ProgressBar import numpy as np import matplotlib.pyplot as plt from matplotlib import colors as mcolors from matplotlib import gridspec from statsmodels.nonparametric.smoothers_lowess import lowess from statsmodels.regression.linear_model import OLS from statsmodels.tools.tools import add_constant as sm_add_constant drpall = m.load_drpall(mpl_v, index='plateifu') dapall = m.load_dapall(mpl_v) dapall = dapall[dapall['DAPDONE'] * (dapall['DAPTYPE'] == daptype)] dapall.add_index('PLATEIFU') pca_system = read_results.PCASystem.fromfile(os.path.join(basedir, 'pc_vecs.fits')) jhumpa = t.Table.read('/usr/data/minhas/zpace/stellarmass_pca/jhu_mpa_{}.fits'.format( mpl_v.replace('-', '').lower())) jhumpa['plateifu'] = [plateifu.strip(' ') for plateifu in jhumpa['PLATEIFU']] jhumpa = jhumpa['plateifu', 'LOG_MSTAR'] jhumpa = jhumpa[jhumpa['LOG_MSTAR'] > 0.] sfrsd_tab = t.Table.read('/usr/data/minhas/zpace/stellarmass_pca/sigma_sfr.fits') sfrsd_tab['plateifu'] = sfrsd_tab['names']
def from_mpl_v(cls, v): drpall = m.load_drpall(v) return cls(drpall)
def make_color_compare(CSP_dir, mpl_v, n_obs=10, model_zcolors=False, randomseed=None, snr_min=5.): ''' make (g-r) vs (r-i) plot ''' if randomseed is not None: np.random.seed(randomseed) drpall = m.load_drpall(mpl_v, index='plateifu') drpall = drpall[(drpall['mngtarg2'] == 0) * (drpall['nsa_z'] != -9999)] plateifus = np.random.choice(drpall['plateifu'], replace=False, size=n_obs) # cols are g, r, and i fluxes in order obs_fluxes = [m.get_gal_bpfluxes(*plateifu.split('-'), mpl_v, ['g', 'r', 'i'], snr_min) for plateifu in plateifus] obs_ext = np.concatenate( [np.repeat(drpall.loc[plateifu]['nsa_extinction'][None, 3:6], f.shape[0], axis=0) for f, plateifu in zip(obs_fluxes, plateifus)]) obs_fluxes = np.row_stack(obs_fluxes) integrated_g = drpall['nsa_elpetro_absmag'][:, 3] - \ drpall['nsa_extinction'][:, 3] integrated_r = drpall['nsa_elpetro_absmag'][:, 4] - \ drpall['nsa_extinction'][:, 4] integrated_i = drpall['nsa_elpetro_absmag'][:, 5] - \ drpall['nsa_extinction'][:, 5] integrated_gr = integrated_g - integrated_r integrated_ri = integrated_r - integrated_i obs_gr = -2.5 * np.log10(obs_fluxes[:, 0] / obs_fluxes[:, 1]) - \ (obs_ext[:, 0] - obs_ext[:, 1]) obs_ri = -2.5 * np.log10(obs_fluxes[:, 1] / obs_fluxes[:, 2]) - \ (obs_ext[:, 1] - obs_ext[:, 2]) models_fnames = glob.glob(os.path.join(CSP_dir, 'CSPs_*.fits')) if model_zcolors: color1 = 'Cgr_z015' color2 = 'Cri_z015' color1TeX = r'$^{.15}C_{gr}$' color2TeX = r'$^{.15}C_{ri}$' else: color1 = 'Cgr' color2 = 'Cri' color1TeX = r'$C_{gr}$' color2TeX = r'$C_{ri}$' models_colors = t.vstack([t.Table.read(fn_)[color1, color2] for fn_ in models_fnames]) fig = plt.figure() ax = fig.add_subplot(1, 1, 1, projection='scatter_density') ax.scatter([-100], [-100], c='g', s=1, marker='s', label='models') ax.scatter([-100], [-100], c='b', s=1, marker='s', label='spax') ax.scatter([-100], [-100], c='r', s=1, marker='s', label='integrated') ax.scatter_density(obs_gr, obs_ri, color='b') ax.scatter_density(models_colors[color1], models_colors[color2], color='g') #ax.scatter_density(integrated_gr, integrated_ri, color='r') ax.set_xlim([-.2, 1.4]) ax.set_ylim([-.1, 0.6]) ax.set_xlabel(color1TeX, size='small') ax.set_ylabel(color2TeX, size='small') ax.legend(loc='best') fig.suptitle(CSP_dir.replace('_', '-'), size='x-small') fig.tight_layout() ax.tick_params(labelsize='x-small') basename = 'Cgr_Cri' if model_zcolors: basename = '_'.join((basename, 'z015')) savefig(fig, ''.join((basename, '.png')), CSP_dir, close=True)
mass_table['outer_mass_cmlr'] = \ (mass_table['outer_lum_{}'.format(mlband)] + \ mass_table['outer_ml_cmlr']).to(u.Msun) return mass_table['plateifu', 'mass_in_ifu', 'outer_mass_cmlr', 'outer_mass_ring'] def chunks(l, nchunks): """Yield n number of striped chunks from l.""" for i in range(0, nchunks): yield l[i::nchunks] if __name__ == '__main__': drpall = m.load_drpall(mpl_v, 'plateifu') mlband = 'i' mass_table_fname = os.path.join(csp_basedir, 'mass_table.fits') # what galaxies are available to aggregate? res_fnames = glob(os.path.join(csp_basedir, 'results/*-*/*-*_res.fits')) mass_table = None for i, rfn in enumerate(res_fnames): if mass_table is None: mass_table = mass_agg_onegal(rfn, mlband, drpall) else: mass_table.add_row(mass_agg_onegal(rfn, mlband, drpall)[0]) print('{:^6} / {:^6} completed'.format(i + 1, len(res_fnames)),
return os.path.exists(os.path.join(status_file_dir, '{}.log'.format(plateifu))) def write_log_file(plateifu, msg): '''write a log file ''' status_file_dir = os.path.join( os.environ['STELLARMASS_PCA_RESULTSDIR'], 'results', plateifu) if not os.path.exists(status_file_dir): os.makedirs(status_file_dir) with open(os.path.join(status_file_dir, '{}.log'.format(plateifu)), 'w') as logf: logf.write(msg) def summary_remaining(drpall, group_col='ifudesignsize'): remaining = drpall[ ~np.array(list(map(log_file_exists, drpall['plateifu'])))] ifusize_grps = remaining.group_by(group_col) print('remaining galaxies by {}'.format(group_col)) for k, g in zip(ifusize_grps.groups.keys, ifusize_grps.groups): print(k[group_col], ':', len(g)) if __name__ == '__main__': import manga_tools as m drpall = m.load_drpall(mpl_v) drpall = drpall[(drpall['ifudesignsize'] > 0) * (drpall['nsa_z'] != -9999.)] print(drpall) summary_remaining(drpall)