Source code for classylss
from .version import version as __version__, class_version
[docs]def get_data_files():
"""
Returns the path of data files, which are installed to the package directory.
"""
import os
path = os.path.dirname(__file__)
path = os.path.join(path, 'data')
r = dict(
Alpha_inf_hyrec_file = os.path.join(path, 'hyrec', 'Alpha_inf.dat'),
R_inf_hyrec_file = os.path.join(path, 'hyrec', 'R_inf.dat'),
two_photon_tables_hyrec_file = os.path.join(path, 'hyrec', 'two_photon_tables.dat'),
sBBN_file = os.path.join(path, 'bbn', 'sBBN.dat'),
)
return r
def _find_file(filename):
"""
Find the file path, first checking if it exists and then looking in the
data directory
"""
import os
if os.path.exists(filename):
path = filename
else:
path = os.path.dirname(__file__)
path = os.path.join(path, 'data', filename)
if not os.path.exists(path):
raise ValueError("cannot locate file '%s'" %filename)
return path
[docs]def load_precision(filename):
"""
Load a CLASS precision file into a dictionary.
Parameters
----------
filename : str
the name of an existing file to load, or one in the files included
as part of the CLASS source
Returns
-------
dict :
the precision parameters loaded from file
"""
# also look in data dir
path = _find_file(filename)
r = dict()
with open(path, 'r') as f:
exec(f.read(), {}, r)
return r
[docs]def load_ini(filename):
"""
Read a CLASS ``.ini`` file, returning a dictionary of parameters
Parameters
----------
filename : str
the name of an existing parameter file to load, or one included as
part of the CLASS source
Returns
-------
dict :
the input parameters loaded from file
"""
# also look in data dir
path = _find_file(filename)
pars = {}
with open(path, 'r') as ff:
# loop over lines
for lineno, line in enumerate(ff):
if not line: continue
# skip any commented lines with #
if '#' in line: line = line[line.index('#')+1:]
# must have an equals sign to be valid
if "=" not in line: continue
# extract key and value pairs
fields = line.split("=")
if len(fields) != 2:
import warnings
warnings.warn("skipping line number %d: '%s'" %(lineno,line))
continue
pars[fields[0].strip()] = fields[1].strip()
return pars