def print_chi2_breakdown(chain,mcf): import models import variables as v model = models.get_model_from_file(mcf) lhoods = models.get_lhood_names(mcf) MCVdict=v.mc_variables() if len( model ) > 0 : print "\nchi2 penalties from gaussian constraints :" print "===================================================================" print " Penalty Prediction Name Type Constraint" print "===================================================================" for constraint in model: sn=constraint.short_name MCV=MCVdict[sn] v_index = MCV.get_index(mcf) chi2=chain.treeVars["contributions"][v_index] pred=chain.treeVars["predictions"][v_index] #print "{:11g} {:<{width}{precision}{base}}{c!r}".format(chi2, pred, base='g', width=1, precision=4, c=constraint) print "{:11.2f} {:11.4g} {!r}".format(chi2, pred, constraint) #print "{chi2:>f} {".format(chi2=chi2) print "===================================================================" if len(lhoods.keys()) > 0 : print "\nThe likelihoods give penalties:\n" for i, lhood in enumerate(lhoods.items()): chi2=chain.treeVars["lhoods"][i] print "{:11.2f} {:16} {:16}". format( chi2, lhood[0], lhood[1] )
def get_p_value_n_dof(chain,mcf): import models import variables as v model = models.get_model_from_file(mcf) lhoods = models.get_lhood_names(mcf) MCVdict=v.mc_variables() chi2_s=[] for constraint in model: sn=constraint.short_name chi2_s.append(get_contribution(chain,mcf,sn)) for i, lhood in enumerate(lhoods.items()): chi2_s.append(chain.treeVars["lhoods"][i]) count=0 for chi2 in chi2_s: if chi2 > 0 : count += 1 n_dof = count - mcf.Inputs chi2_tot = chain.treeVars["predictions"][0] p_value= r.TMath.Prob(chi2_tot, n_dof) return p_value, n_dof