def recover_cosmological_module(data): """ From the cosmological module name, initialise the proper Boltzmann code .. note:: Only CLASS is currently wrapped, but a python wrapper of CosmoMC should enter here. """ # Importing the python-wrapped CLASS from the correct folder, defined in # the .conf file, or overwritten at this point by the log.param. # If the cosmological code is CLASS, do the following to import all # relevant quantities if data.cosmological_module_name == 'CLASS': try: classy_path = '' for elem in os.listdir( os.path.join(data.path['cosmo'], "python", "build")): if elem.find("lib.") != -1: classy_path = os.path.join(data.path['cosmo'], "python", "build", elem) if len(classy_path) == 1: classy_path = classy_path[0] else: stringcheck = "%i.%i" % (sys.version_info.major, sys.version_info.minor) for path in classy_path: if stringcheck in path: classy_path = path break except OSError: raise io_mp.ConfigurationError( "You probably did not compile the python wrapper of CLASS. " + "Please go to /path/to/class/python/ and do\n" + "..]$ python setup.py build") # Inserting the previously found path into the list of folders to # search for python modules. sys.path.insert(1, classy_path) try: from classy import Class except ImportError: raise io_mp.MissingLibraryError( "You must have compiled the classy.pyx file. Please go to " + "/path/to/class/python and run the command\n " + "python setup.py build") cosmo = Class() else: raise io_mp.ConfigurationError( "Unrecognised cosmological module. " + "Be sure to define the correct behaviour in MontePython.py " + "and data.py, to support a new one.") return cosmo
# of parameters import prior from scipy.optimize import fsolve # A modified version of Python dictionary in order to keep track of the order # in it (much the same as in an array). In case an older version of Python is # used, this module does not belong to collections. Please remind to put that # into your PYTHONPATH variable. try: from collections import OrderedDict as od except ImportError: try: from ordereddict import OrderedDict as od except ImportError: raise io_mp.MissingLibraryError( "If you are running with Python v2.5 or 2.6, you need" + "to manually install the ordereddict package by placing" + "the file ordereddict.py in your Python Path") class Data(object): """ Store all relevant data to communicate between the different modules. """ def __init__(self, command_line, path): """ The Data class holds the cosmological information, the parameters from the MCMC run, the information coming from the likelihoods. It is a wide collections of information, with in particular two main dictionaries: cosmo_arguments and mcmc_parameters.