est_centroid_one = pm.Uniform("est_centroid_one", 5000, 5050)
est_centroid_two = pm.Uniform("est_centroid_two", 5000, 5050)
est_sigma_one = pm.Uniform("est_sigma_one", 0, 5)
est_sigma_two = pm.Uniform("est_sigma_two", 0, 5)
est_height_one = pm.Uniform("est_height_one", 0, 5)
est_height_two = pm.Uniform("est_height_two", 0, 5)
std_deviation = 1. / mc.Uniform("std", 0, 1) ** 2
@pm.deterministic(trace=False)
def est_profile_1(x=wavelength, centroid=est_centroid_one, sigma=est_sigma_one, height=est_height_one):
return GaussFunc(x, height, centroid, sigma)
@pm.deterministic(trace=False)
def est_profile_2(x=wavelength, centroid=est_centroid_two, sigma=est_sigma_two, height=est_height_two):
return GaussFunc(x, height, centroid, sigma)
@pm.deterministic(trace=False)
def mean(profile_1=est_profile_1, profile_2=est_profile_2):
return profile_1 + profile_2
observations = pm.Normal("obs", mean, std_deviation, value=combined, observed=True)