コード例 #1
0
def contour_plot(fisher,
                 fiducials,
                 fname,
                 name='',
                 add_marker=False,
                 latex=True):
    from chainconsumer import ChainConsumer
    mean = [fiducials[key] for key in fisher.params]
    cov = np.linalg.inv(fisher.values)
    parameters = [latex_mapping[x]
                  for x in fisher.params] if latex else fisher.params

    c = ChainConsumer()
    c.add_covariance(mean, cov, parameters=parameters, name=name, shade=False)
    if add_marker:
        c.add_marker(mean,
                     parameters=parameters,
                     marker_style="*",
                     marker_size=100,
                     color="r",
                     name='')
    c.configure(usetex=False, serif=False, sigma2d=True, sigmas=[1])
    fig = c.plotter.plot()
    fig.set_size_inches(3 + fig.get_size_inches())
    fig.savefig(fname)
コード例 #2
0
def contour_plot_multiple(fisher_list,fiducials,fname,name_list,add_marker=False,latex=True):
    from chainconsumer import ChainConsumer
    c = ChainConsumer()
    means_list=[]
    covs_list=[]
    parameters_list=[]
    for i in range(len(fisher_list)):
        means_list.append([fiducials[key] for key in fisher_list[i].params])
        covs_list.append(np.linalg.inv(fisher_list[i].values)) 
        parameters_list.append([latex_mapping[x] for x in fisher_list[i].params] if latex else fisher_list[i].params)
        c.add_covariance(means_list[i], covs_list[i], parameters=parameters_list[i], name=name_list[i], shade=True)
    
    if add_marker: c.add_marker(mean1, parameters=parameters1, marker_style="*", marker_size=100, color="r",name='')
    c.configure(usetex=False, serif=False,sigma2d=True,sigmas=[0,1,2])
    fig = c.plotter.plot()
    fig.set_size_inches(3 + fig.get_size_inches()) 
    fig.savefig(fname)
コード例 #3
0
 def test_marker(self):
     loc = [0, 1, 2]
     c = ChainConsumer()
     c.add_marker(loc)
     assert np.all(np.equal(loc, c.chains[0].chain[0, :]))
コード例 #4
0
===============================

Sometimes you want to compare your data to a Fisher matrix projection,
or you just have some Gaussian you want also drawn.

Or maybe its just a random point you want to put on the plot.

It's all easy to do.

"""
# -*- coding: utf-8 -*-
from chainconsumer import ChainConsumer

mean = [1, 5]
cov = [[1, 1], [1, 3]]
parameters = ["a", "b"]

c = ChainConsumer()
c.add_covariance(mean, cov, parameters=parameters, name="Cov")
c.add_marker(mean,
             parameters=parameters,
             name="Marker!",
             marker_style="*",
             marker_size=100,
             color="r")
c.configure(usetex=False, serif=False)
fig = c.plotter.plot()

fig.set_size_inches(
    3 + fig.get_size_inches())  # Resize fig for doco. You don't need this.
コード例 #5
0
                params_dict, display=False, figname=figname)

            # Add the chain or MAP to the Chainconsumer plots
            extra.pop("realisation", None)
            if realisation == "mean":
                fitname = data[0]["name"].replace(" ", "_")
                stats[fitname] = []
                output[fitname] = []
                c.add_chain(df,
                            weights=weight,
                            **extra,
                            plot_contour=True,
                            plot_point=False,
                            show_as_1d_prior=False)
            else:
                c.add_marker(params, **extra)

            # Compute some summary statistics and add them to a dictionary
            mean, cov = weighted_avg_and_cov(
                df[[
                    "$\\alpha_\\parallel$",
                    "$\\alpha_\\perp$",
                ]],
                weight,
                axis=0,
            )

            corr = cov[1, 0] / np.sqrt(cov[0, 0] * cov[1, 1])
            stats[fitname].append([
                mean[0], mean[1],
                np.sqrt(cov[0, 0]),