def __init__(self, filename, exclude): from cosmosis.datablock import option_section, names from cosmosis.plotting.kde import KDE exclude += ['post', 'like'] names = open(filename).readline().lstrip('#').split() names = [[i, name] for i, name in enumerate(names) if name.split("--")[-1] not in exclude] indices = np.array(names).T[0].astype(int) names =np.array(names).T[1].astype(str) n = nsample_multinest(filename) data = np.loadtxt(filename).T if n is not None: print "Using last {} rows of data".format(n) data = data[:,-n:] if "weight" in names: weight = data[np.argwhere(names=="weight")[0,0]] weight /= weight.max() else: weight = None indices = [index for index,name in zip(indices,names) if name!='weight' ] names = [name for name in names if name!='weight'] self.data = data[indices] names = [name.split("--") for name in names] self.names = names self.kde = KDE(self.data, weights=weight)
def smooth_likelihood(self, x, y): n = self.options.get("n_kde", 100) factor = self.options.get("factor_kde", 2.0) kde = KDE([x,y], factor=factor) x_range = (x.min(), x.max()) y_range = (y.min(), y.max()) (x_axis, y_axis), like = kde.grid_evaluate(n, [x_range, y_range]) return n, x_axis, y_axis, like
def smooth_likelihood(obj,x, y): n = obj.options.get("n_kde", 100) factor = obj.options.get("factor_kde", 2.0) kde = KDE([x,y], factor=factor) x_range = (x.min(), x.max()) y_range = (y.min(), y.max()) (x_axis, y_axis), like = kde.grid_evaluate(n, [x_range, y_range]) return n, x_axis, y_axis, like
def smooth_likelihood(obj,x, y): n = 100 factor = 2.0 kde = KDE([x,y], factor=factor) x_range = (x.min(), x.max()) y_range = (y.min(), y.max()) (x_axis, y_axis), like = kde.grid_evaluate(n, [x_range, y_range]) return n, x_axis, y_axis, like
class NamedKDE(object): def __init__(self, filename, exclude): from cosmosis.datablock import option_section, names from cosmosis.plotting.kde import KDE exclude += ['post', 'like'] names = open(filename).readline().lstrip('#').split() names = [[i, name] for i, name in enumerate(names) if name.split("--")[-1] not in exclude] indices = np.array(names).T[0].astype(int) names =np.array(names).T[1].astype(str) n = nsample_multinest(filename) data = np.loadtxt(filename).T if n is not None: print "Using last {} rows of data".format(n) data = data[:,-n:] if "weight" in names: weight = data[np.argwhere(names=="weight")[0,0]] weight /= weight.max() else: weight = None indices = [index for index,name in zip(indices,names) if name!='weight' ] names = [name for name in names if name!='weight'] self.data = data[indices] names = [name.split("--") for name in names] self.names = names self.kde = KDE(self.data, weights=weight) def reorder_values(self, names, values): check = np.array(self.names).T[1] if not (check==np.array(names)).all(): #print "Will reorder parameters for interpolation." vals = [] for name in check: #print name index = np.argwhere(np.array(names)==name)[0,0] vals.append(values[index]) return vals else: return values def __call__(self, values, names): vals = self.reorder_values(names, values) return self.kde.normalize_and_evaluate(vals)