Pipeline Features

The Consistency module

The CosmoSIS standard library has a particularly helpful module called consistency, which is designed to translate automatically between different ways of expressing cosmological parameters.

For example, if your values file specifies both \(\Omega_m\) and \(h^2\) then it will calculate \(\omega_m \equiv \Omega_m h^2\) for you automatically.

Any sufficient choice of the parameters can be specified and the remainder will be determined.

To use this module, just include the module utility/consistency/consistency_interface.py at the start of a pipeline.

Pre- and post-scripts

CosmoSIS can automatically run a script before executing your pipeline; if the script returns an error code then the pipeline will not be run.

It can also run a script after the

You could use this feature to: - run a check before the pipeline to make sure some test result is as expected. - download some data that is needed for a pipeline. - postprocess results after the pipeline is complete and make some plots.

To use this feature, add lines in the [runtime] section of the parameter file:

[runtime]
pre_script=./my_pre_script.sh
post_script=./my_post_script.sh

Your scripts can be any executable. If the pre-script has a non-zero return value then the pipeline will not run.

Making pipeline graphs

You will need the pygraphviz tool to use this feature. On Conda, you can install it with:

conda install -c conda-forge pygraphviz

Then you can create a graph from the command line using the --graph flag and then the graphviz dot command:

cosmosis --graph des-y1.dot  examples/des-y1.ini
dot -Tpng -o des-y1.png des-y1.dot

And example is shown below:

../_images/des-y1.png

Making a pipeline from a single likelihood function

New in version 3.3

If you have a single likelihood function that you want to use as a pipeline (so that you are really just using CosmoSIS for its sampling features), then you can do it like this:

import cosmosis

def log_like(x):
    # your likelihood function here
    return log_like

param_ranges = [
    (-1.0, 0.0, 1.0),
    # ...
    # min, start, and max of each parameter of the likelihood
]

pipeline = cosmosis.LikelihoodPipeline.from_likelihood_function(log_like, param_ranges)

You can now test your pipeline, calling pipeline.posterior or pipeline.likelihood, or run a sampler like this:

sampler_config = {
    "runtime": {
        "sampler": "emcee",
        "verbosity": "quiet",
    },

    "emcee": {
        "walkers": 100,
        # ... other emcee parameters
    },
}

status, output = cosmosis.run_cosmosis(sampler_config, pipeline=pipeline, output='astropy')

The output will be an astropy table with the samples and likelihoods.

You can also use derived parameters or supply non-uniform priors. See the LikelihoodPipeline.from_likelihood_function docstring for details.