Source code for rabacus.cosmology.parameters.planck.load

""" I/O routines to read in Plank data """ 

import os as _os
import string as _string
import numpy as _np

__all__ = ['PlanckParameters']

class _Error(Exception):
    """Base class for exceptions in this module."""
    pass


class _InvalidDataSets(_Error):
    """Exception raised for requesting an invalid group of data sets. """ 
    def __init__(self, message ):
        Exception.__init__( self, message )


[docs]class PlanckParameters: r""" Load Planck cosmological parameters. Args: `data_sets` (str): A string indicating which data sets to include. Possible values for `data_sets` include, - ``base_planck_lowl`` - ``base_planck_lowl_lowLike`` - ``base_planck_lowl_post_lensing`` - ``base_planck_lowl_lowLike_highL`` - ``base_planck_lowl_lowLike_post_lensing`` - ``base_planck_lowl_lowLike_highL_post_lensing`` Attributes: values (dict): cosmological parameter values latex (dict): latex representation of parameter name Notes: Description of data sets. ``base``: 6 parameter LCDM model ``planck``: high-l planck temperature data ``lowl``: low-l planck temperature data ``lowLike``: low-l WMAP9 polarization data (WP) ``lensing``: planck lensing power spectrum ``highL``: high-l data from ACT and SPT The default data sets ``base_plank_lowl`` will return the values in column 1 of table 2 in http://arxiv.org/abs/1303.5076 """ def __init__( self, data_sets='base_planck_lowl' ): self.ValidDataSets = ['base_planck_lowl', 'base_planck_lowl_lowLike', 'base_planck_lowl_post_lensing', 'base_planck_lowl_lowLike_highL', 'base_planck_lowl_lowLike_post_lensing', 'base_planck_lowl_lowLike_highL_post_lensing'] if not data_sets in self.ValidDataSets: msg = '\n' msg += 'received data_sets = ' + data_sets + '\n' msg += '\ndata_sets must be one of ... \n' for ds in self.ValidDataSets: msg += ' ' + ds + '\n' raise _InvalidDataSets(msg) self.data_sets = data_sets fname_in = data_sets + '.minimum' local = _os.path.dirname(_os.path.realpath(__file__)) fname = local + '/' + fname_in self.values = {} self.latex = {} f = open( fname, 'r' ) for line in f: pieces = line.split() if len(pieces) >= 4: if pieces[0].isdigit(): self.values[pieces[2]] = _np.float64(pieces[1]) self.latex[pieces[2]] = _string.join(pieces[3:]) f.close() self.values['h'] = self.values['H0'] / 100.0 self.latex['h'] = 'h' self.values['omegab'] = self.values['omegabh2'] / self.values['h']**2 self.latex['omegab'] = '\Omega_b' self.values['omegac'] = self.values['omegach2'] / self.values['h']**2 self.latex['omegac'] = '\Omega_c' self.values['omegar'] = self.values['omegam'] / (1.0+self.values['zeq']) self.latex['omegar'] = '\Omega_r' # copy yheused into yhe and make alias Yp self.values['yhe'] = self.values['yheused'] self.latex['yhe'] = self.latex['yheused'] self.values['Yp'] = self.values['yhe'] self.latex['Yp'] = r'Y_p' def __str__(self): print 'PlanckParameters Instance' print ' data sets: ', self.data_sets print ' OmegaM: %5.3f' % self.values['omegam'] print ' OmegaB: %5.3f' % self.values['omegab'] print ' OmegaC: %5.3f' % self.values['omegac'] print ' OmegaL: %5.3f' % self.values['omegal'] print ' OmegaR: %5.3f' % self.values['omegar'] print ' h: %5.3f' % self.values['h'] print ' sigma_8: %5.3f' % self.values['sigma8'] print ' n_s: %5.3f' % self.values['ns'] print ' Y_P: %5.3f' % self.values['yhe'] print return ''
if __name__ == "__main__": """ Get the values presented in Tables 2 and 5 of http://arxiv.org/abs/1303.5076 """ data_sets = 'base_planck_lowl' pp_base = PlanckParameters( data_sets=data_sets ) data_sets = 'base_planck_lowl_post_lensing' pp_lens = PlanckParameters( data_sets=data_sets ) data_sets = 'base_planck_lowl_lowLike' pp_WP = PlanckParameters( data_sets=data_sets ) data_sets = 'base_planck_lowl_lowLike_highL' pp_WP_highL = PlanckParameters( data_sets=data_sets ) data_sets = 'base_planck_lowl_lowLike_highL_post_lensing' pp_WP_highL_lens = PlanckParameters( data_sets=data_sets ) print print 'Showing values from Table 2 http://arxiv.org/abs/1303.5076 \n' print ' [OmegaL, OmegaM, OmegaB, OmegaC, H0, sigma8, ns]:' fs = '%.5f' pb = pp_base.values print 'Base :', fs % pb['omegal'], fs % pb['omegam'], \ fs % pb['omegab'], fs % pb['omegac'], '%.2f' % pb['H0'], \ fs % pb['sigma8'], fs % pb['ns'] p = pp_lens.values print 'Base+lens :', fs % p['omegal'], fs % p['omegam'], \ fs % p['omegab'], fs % p['omegac'], '%.2f' % p['H0'], \ fs % p['sigma8'], fs % p['ns'] p = pp_WP.values print 'Base+WP :', fs % p['omegal'], fs % p['omegam'], \ fs % p['omegab'], fs % p['omegac'], '%.2f' % p['H0'], \ fs % p['sigma8'], fs % p['ns'] print print 'Showing percent difference from base \n' p = pp_lens.values print 'Base+lens :', \ fs % ( 100.0*(p['omegal'] - pb['omegal']) / pb['omegal']), \ fs % ( 100.0*(p['omegam'] - pb['omegam']) / pb['omegam']), \ fs % ( 100.0*(p['omegab'] - pb['omegab']) / pb['omegab']), \ fs % ( 100.0*(p['omegac'] - pb['omegac']) / pb['omegac']), \ fs % ( 100.0*(p['H0'] - pb['H0']) / pb['H0']), \ fs % ( 100.0*(p['sigma8'] - pb['sigma8']) / pb['sigma8']), \ fs % ( 100.0*(p['ns'] - pb['ns']) / pb['ns']) p = pp_WP.values print 'Base+WP :', \ fs % ( 100.0*(p['omegal'] - pb['omegal']) / pb['omegal']), \ fs % ( 100.0*(p['omegam'] - pb['omegam']) / pb['omegam']), \ fs % ( 100.0*(p['omegab'] - pb['omegab']) / pb['omegab']), \ fs % ( 100.0*(p['omegac'] - pb['omegac']) / pb['omegac']), \ fs % ( 100.0*(p['H0'] - pb['H0']) / pb['H0']), \ fs % ( 100.0*(p['sigma8'] - pb['sigma8']) / pb['sigma8']), \ fs % ( 100.0*(p['ns'] - pb['ns']) / pb['ns']) print print print 'Showing values from Table 5 http://arxiv.org/abs/1303.5076 \n' pb = pp_base.values print 'Base :', fs % pb['omegal'], fs % pb['omegam'], \ fs % pb['omegab'], fs % pb['omegac'], '%.2f' % pb['H0'], \ fs % pb['sigma8'], fs % pb['ns'] p = pp_WP_highL.values print 'Base+WP+hiL :', fs % p['omegal'], fs % p['omegam'], \ fs % p['omegab'], fs % p['omegac'], '%.2f' % p['H0'], \ fs % p['sigma8'], fs % p['ns'] p = pp_WP_highL_lens.values print 'Base+WP+hiL+lens:', fs % p['omegal'], fs % p['omegam'], \ fs % p['omegab'], fs % p['omegac'], '%.2f' % p['H0'], \ fs % p['sigma8'], fs % p['ns'] print print 'Showing percent difference from base \n' p = pp_WP_highL.values print 'Base+WP+hiL :', \ fs % ( 100.0*(p['omegal'] - pb['omegal']) / pb['omegal']), \ fs % ( 100.0*(p['omegam'] - pb['omegam']) / pb['omegam']), \ fs % ( 100.0*(p['omegab'] - pb['omegab']) / pb['omegab']), \ fs % ( 100.0*(p['omegac'] - pb['omegac']) / pb['omegac']), \ fs % ( 100.0*(p['H0'] - pb['H0']) / pb['H0']), \ fs % ( 100.0*(p['sigma8'] - pb['sigma8']) / pb['sigma8']), \ fs % ( 100.0*(p['ns'] - pb['ns']) / pb['ns']) p = pp_WP_highL_lens.values print 'Base+WP+hiL+lens:', \ fs % ( 100.0*(p['omegal'] - pb['omegal']) / pb['omegal']), \ fs % ( 100.0*(p['omegam'] - pb['omegam']) / pb['omegam']), \ fs % ( 100.0*(p['omegab'] - pb['omegab']) / pb['omegab']), \ fs % ( 100.0*(p['omegac'] - pb['omegac']) / pb['omegac']), \ fs % ( 100.0*(p['H0'] - pb['H0']) / pb['H0']), \ fs % ( 100.0*(p['sigma8'] - pb['sigma8']) / pb['sigma8']), \ fs % ( 100.0*(p['ns'] - pb['ns']) / pb['ns']) print