General tidy and refactor of plot_corner
In addition to a general tidy up of plot_corner
(adding some comments and reordering things for clarity), this introduces the following four options to plots truths:
# The recommended (and documented) way
>>> result.plot_corner(parameters=dict(mu=2, sigma=5))
# The way it was done in the past (backward compatible, but undocumented)
>>> result.plot_corner(truths=dict(mu=2, sigma=5))
# As separate lists
>>> result.plot_corner(parameters=['mu', 'sigma'], truths=[2, 5])
# Don't plot truths, just give the order/which to plot
>>> result.plot_corner(parameters=['mu', 'sigma'])
Meanwhile, giving anything but a list for parameters and truths will raise an error
# This will raise a `ValueError`
>>> result.plot_corner(parameters=dict(mu=2, sigma=5), truths=dict(mu=2, sigma=5))
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-6-43f821651b7e> in <module>()
----> 1 result.plot_corner(parameters=['mu', 'sigma'], truths=dict(mu=1, sigma=2))
/home/user1/tupak/tupak/core/result.py in plot_corner(self, parameters, priors, titles, save, filename, dpi, **kwargs)
357 else:
358 raise ValueError(
--> 359 "Combination of parameters and truths not understood")
360
361 # If parameters is a dictionary, use the keys to determine which
ValueError: Combination of parameters and truths not understood
# This will also raise an error indicating that the lengths are mismatched
>>> result.plot_corner(parameters=['mu', 'sigma'], truths=[2, 5, 4])
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-5-ba912057ec35> in <module>()
----> 1 result.plot_corner(parameters=['mu', 'sigma'], truths=[2, 5, 5])
/home/user1/tupak/tupak/core/result.py in plot_corner(self, parameters, priors, titles, save, filename, dpi, **kwargs)
352 if len(parameters) != len(truths):
353 raise ValueError(
--> 354 "Length of parameters and truths don't match")
355 elif isinstance(truths, dict) and parameters is None:
356 parameters = kwargs.pop('truths')
ValueError: Length of parameters and truths don't match
Edited by Gregory Ashton