mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-08 19:42:39 +02:00
Display of models and params for the notebook.
This commit is contained in:
parent
afbb8ab253
commit
8fa890639e
3 changed files with 62 additions and 0 deletions
|
|
@ -381,6 +381,16 @@ class Model(Parameterized):
|
||||||
self.optimizer_array = x
|
self.optimizer_array = x
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
def _repr_html_(self):
|
||||||
|
"""Representation of the model in html for notebook display."""
|
||||||
|
model_details = [['<b>Model</b>', self.name + '<br>'],
|
||||||
|
['<b>Log-likelihood</b>', '{}<br>'.format(float(self.log_likelihood()))],
|
||||||
|
["<b>Number of Parameters</b>", '{}<br>'.format(self.size)]]
|
||||||
|
from operator import itemgetter
|
||||||
|
to_print = [""] + ["{}: {}".format(name, detail) for name, detail in model_details] + ["<br><b>Parameters</b>:"]
|
||||||
|
to_print.append(super(Model, self)._repr_html_())
|
||||||
|
return "\n".join(to_print)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
model_details = [['Name', self.name],
|
model_details = [['Name', self.name],
|
||||||
['Log-likelihood', '{}'.format(float(self.log_likelihood()))],
|
['Log-likelihood', '{}'.format(float(self.log_likelihood()))],
|
||||||
|
|
|
||||||
|
|
@ -249,6 +249,29 @@ class Param(Parameterizable, ObsAr):
|
||||||
if ind.size > 4: indstr = ','.join(map(str, ind[:2])) + "..." + ','.join(map(str, ind[-2:]))
|
if ind.size > 4: indstr = ','.join(map(str, ind[:2])) + "..." + ','.join(map(str, ind[-2:]))
|
||||||
else: indstr = ','.join(map(str, ind))
|
else: indstr = ','.join(map(str, ind))
|
||||||
return name + '[' + indstr + ']'
|
return name + '[' + indstr + ']'
|
||||||
|
|
||||||
|
def _repr_html_(self, constr_matrix=None, indices=None, prirs=None, ties=None):
|
||||||
|
"""Representation of the parameter in html for notebook display."""
|
||||||
|
filter_ = self._current_slice_
|
||||||
|
vals = self.flat
|
||||||
|
if indices is None: indices = self._indices(filter_)
|
||||||
|
ravi = self._raveled_index(filter_)
|
||||||
|
if constr_matrix is None: constr_matrix = self.constraints.properties_for(ravi)
|
||||||
|
if prirs is None: prirs = self.priors.properties_for(ravi)
|
||||||
|
if ties is None: ties = self._ties_for(ravi)
|
||||||
|
ties = [' '.join(map(lambda x: x, t)) for t in ties]
|
||||||
|
header_format = """
|
||||||
|
<tr>
|
||||||
|
<td><b>{i}</b></td>
|
||||||
|
<td><b>{x}</b></td>
|
||||||
|
<td><b>{c}</b></td>
|
||||||
|
<td><b>{p}</b></td>
|
||||||
|
<td><b>{t}</b></td>
|
||||||
|
</tr>"""
|
||||||
|
header = header_format.format(x=self.hierarchy_name(), c=__constraints_name__, i=__index_name__, t=__tie_name__, p=__priors_name__) # nice header for printing
|
||||||
|
if not ties: ties = itertools.cycle([''])
|
||||||
|
return "\n".join(['<table>'] + [header] + ["<tr><td>{i}</td><td>{x}</td><td>{c}</td><td>{p}</td><td>{t}</td></tr>".format(x=x, c=" ".join(map(str, c)), p=" ".join(map(str, p)), t=(t or ''), i=i) for i, x, c, t, p in itertools.izip(indices, vals, constr_matrix, ties, prirs)] + ["</table>"])
|
||||||
|
|
||||||
def __str__(self, constr_matrix=None, indices=None, prirs=None, ties=None, lc=None, lx=None, li=None, lp=None, lt=None, only_name=False):
|
def __str__(self, constr_matrix=None, indices=None, prirs=None, ties=None, lc=None, lx=None, li=None, lp=None, lt=None, only_name=False):
|
||||||
filter_ = self._current_slice_
|
filter_ = self._current_slice_
|
||||||
vals = self.flat
|
vals = self.flat
|
||||||
|
|
|
||||||
|
|
@ -357,6 +357,35 @@ class Parameterized(Parameterizable):
|
||||||
@property
|
@property
|
||||||
def _ties_str(self):
|
def _ties_str(self):
|
||||||
return [','.join(x._ties_str) for x in self.flattened_parameters]
|
return [','.join(x._ties_str) for x in self.flattened_parameters]
|
||||||
|
|
||||||
|
def _repr_html_(self, header=True):
|
||||||
|
"""Representation of the parameters in html for notebook display."""
|
||||||
|
name = adjust_name_for_printing(self.name) + "."
|
||||||
|
constrs = self._constraints_str;
|
||||||
|
ts = self._ties_str
|
||||||
|
prirs = self._priors_str
|
||||||
|
desc = self._description_str; names = self.parameter_names()
|
||||||
|
nl = max([len(str(x)) for x in names + [name]])
|
||||||
|
sl = max([len(str(x)) for x in desc + ["Value"]])
|
||||||
|
cl = max([len(str(x)) if x else 0 for x in constrs + ["Constraint"]])
|
||||||
|
tl = max([len(str(x)) if x else 0 for x in ts + ["Tied to"]])
|
||||||
|
pl = max([len(str(x)) if x else 0 for x in prirs + ["Prior"]])
|
||||||
|
format_spec = "<tr><td>{{name:<{0}s}}</td><td>{{desc:>{1}s}}</td><td>{{const:^{2}s}}</td><td>{{pri:^{3}s}}</td><td>{{t:^{4}s}}</td></tr>".format(nl, sl, cl, pl, tl)
|
||||||
|
to_print = []
|
||||||
|
for n, d, c, t, p in itertools.izip(names, desc, constrs, ts, prirs):
|
||||||
|
to_print.append(format_spec.format(name=n, desc=d, const=c, t=t, pri=p))
|
||||||
|
sep = '-' * (nl + sl + cl + + pl + tl + 8 * 2 + 3)
|
||||||
|
if header:
|
||||||
|
header = """
|
||||||
|
<tr>
|
||||||
|
<td><b>{name}</b>
|
||||||
|
<td><b>Value</b></td>
|
||||||
|
<td><b>Constraint</b></td>
|
||||||
|
<td><b>Prior</b></td>
|
||||||
|
<td><b>Tied to</b></td>""".format(name=name)
|
||||||
|
to_print.insert(0, header)
|
||||||
|
return '<table>' + '\n'.format(sep).join(to_print) + '\n</table>'
|
||||||
|
|
||||||
def __str__(self, header=True):
|
def __str__(self, header=True):
|
||||||
name = adjust_name_for_printing(self.name) + "."
|
name = adjust_name_for_printing(self.name) + "."
|
||||||
constrs = self._constraints_str;
|
constrs = self._constraints_str;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue