예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
    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)
예제 #4
0
    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)
예제 #5
0
    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)
예제 #6
0
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']
예제 #7
0
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'),
예제 #8
0
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)
예제 #9
0
 def from_mpl_v(cls, v):
     drpall = m.load_drpall(v)
     return cls(drpall)
예제 #10
0
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']
예제 #11
0
 def from_mpl_v(cls, v):
     drpall = m.load_drpall(v)
     return cls(drpall)
예제 #12
0
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)
예제 #13
0
    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)),
예제 #14
0
    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)