QInfer / python-qinfer

Library for Bayesian inference via sequential Monte Carlo for quantum parameter estimation.
BSD 3-Clause "New" or "Revised" License
92 stars 31 forks source link

Plotting Upgrade #137

Open ihincks opened 7 years ago

ihincks commented 7 years ago

It might be worthwhile looking into doing our plots through seaborn...they have some nice stuff.

See this for example, which is only four lines of code.

ihincks commented 7 years ago

The seaborn library works most conveniently when the data is presented using pandas data types, like DataFrame. Perhaps a modest first step would just be to add a dataframe method to ParticleDistribution, or perhaps to SMCUpdater (which has access to modelparam_names). Something along the lines of (untested):

@property
def dataframe(self):
    # we want uniform particle weights
    dist = self if self.just_resampled else self.resampler(self)
    return pandas.DataFrame(data={
        name: dist.particle_locations[:,idx] 
        for idx, name in enumerate(self.model.modelparam_names)
    })

We don't have to make pandas a dependency if we don't want to.

EDIT: KDEs can be expensive, so maybe it should be a method with some sort of slice option.