def chi2(b, dataset, model1='phoebe1model', model2='phoebe2model'):
ds = b.get_dataset(dataset) - b.get_dataset(dataset, method='*dep')
if ds.method=='lc':
depvar = 'fluxes'
elif ds.method=='rv':
depvar = 'rvs'
else:
raise NotImplementedError("chi2 doesn't support dataset method: '{}'".format(ds.method))
chi2 = 0.0
for comp in ds.components if len(ds.components) else [None]:
if comp=='_default':
continue
# phoebe gives nans for RVs when a star is completely eclipsed, whereas
# phoebe1 will give a value. So let's use nansum to just ignore those
# regions of the RV curve
print "***", depvar, dataset, model1, model2, comp
chi2 += np.nansum((b.get_value(qualifier=depvar, dataset=dataset, model=model1, component=comp, context='model')\
-b.get_value(qualifier=depvar, dataset=dataset, model=model2, component=comp, context='model'))**2)
return chi2
评论列表
文章目录