예제 #1
0
	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)
예제 #2
0
 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
예제 #3
0
 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
예제 #4
0
 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
예제 #5
0
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)