def DiffTable(ObjectName):
    """             """
    
    ParDict, ParFiles, Object = cfp.getParDict(ObjectName)

    #print ParDict['MINUIT.FLD.1']['NT.T4']['lower']
    #sys.exit()
    FitList = ParFiles.keys()
    allParList = []
    for fit in ParDict.keys(): allParList.extend(ParDict[fit].keys())
    CommonParList = list(set(allParList))
    CommonParList = ['T0.T1'] 
    
    TriedPairList = []
    for par in CommonParList:
        if par in Object.ModelParams.keys():
            pf = Object.ModelParams[par]['printformat']
        else:
            Object.InitiateCase('MCMC.FLD')
            Object.InitiateFitNum('1')
            Dpar = tmcmc.iomcmc.ReadStartParams(Object.DerivedLowestChiSQFile)
            pf = Dpar[par]['printformat']

        for pair in list(itertools.permutations(FitList,2)):
            if not pair in TriedPairList and \
               not pair[::-1] in TriedPairList and \
               not pair[0] in [pair[1]]:
                TriedPairList.append(pair)
                try:
                    #print ParDict[pair[0]][par].keys()
                    #print ParDict[pair[1]][par].keys()
                    #print pair, par
                    mu1 = ParDict[pair[0]][par]['value']
                    mu2 = ParDict[pair[1]][par]['value']
                    sig1 = max([ParDict[pair[0]][par]['lower'],ParDict[pair[0]][par]['upper']])
                    sig2 = max([ParDict[pair[1]][par]['lower'],ParDict[pair[1]][par]['upper']])
                    pstring_m1 = format(mu1,pf)
                    pstring_s1 = format(sig1,pf)
                    pstring_m2 = format(mu2,pf)
                    pstring_s2 = format(sig2,pf)
                    #print mu1, mu2, sig1, sig2, pair, par, ovl
                    if par == 'Period':
                        ovl = tmcmc.misc.ovl_coefficient(mu1*86400e0,sig1*86400e0,mu2*86400e0,sig2*86400e0)
                    else:
                        ovl = tmcmc.misc.ovl_coefficient(mu1,sig1,mu2,sig2) 
                    
                    #print mu1, mu2, sig1, sig2, pair, par, ovl
                    Nwidth = 13
                    if ovl > 1e-2:
                        #print par, pair[0], pair[1], ovl, (mu1,sig1),(mu2,sig2),' Good'
                        print par, pair[0].strip().ljust(Nwidth),(pstring_m1,pstring_s1),pair[1].strip().ljust(Nwidth),(pstring_m2,pstring_s2),'Good', ovl, num.abs(mu1-mu2)/max([sig1,sig2])
                    elif not math.isnan(ovl):
                        print par, pair[0].strip().ljust(Nwidth),(pstring_m1,pstring_s1),pair[1].strip().ljust(Nwidth),(pstring_m2,pstring_s2),'Bad ', ovl, num.abs(mu1-mu2)/max([sig1,sig2])
                    else:
                        #continue
                        print pair, ' Ugly'
                ##print mu1, sig1, mu2, sig2
                except:
                    #raise
                    pass
Beispiel #2
0
def OCplot(ObjectName):
    """             """

    ParDict, ParFiles, Object = cfp.getParDict(ObjectName)
    PeriodDicts = cfp.GetPeriodFits(ParDict)
    TTDicts = cfp.GetTTFits(ParDict)
    #UseList = ['MCMC.FLD.1','fernandez2009','sing2011','burke2007']
    #UseList = ['MCMC.FLD.1','fernandez2009','sing2011']
    CasePlotDict = CasePlotInformation(ParDict)
    for fitName in ParDict.keys():
        for parName in ParDict[fitName].keys():
            if parName.startswith('T0'):
                if fitName == 'TAP': fitName, parName, TTDicts[fitName]
    
    #print TTDicts['TAP']
    #plt.plot(xrange(len(TTDicts['TAP'][0])),TTDicts['TAP'][0],'b.')
    #plt.show()
    #sys.exit()
    UseList = {'XO2':['MCMC.FLD.1','fernandez2009','sing2011'],\
               'TRES3':['MCMC.FLD.2']}#,'sozzetti2009','gibson2009','christiansen2011']}

    #PeriodGuess = PeriodDicts['MCMC.FLD.1'][0]
    #print PeriodDicts['TAP'], PeriodDicts['MCMC.FLD.1']
    #sys.exit()
    #print PeriodDicts['TAP'][0],PeriodDicts['MCMC.FLD.1'][0]
    epoch, tt, err = cfp.sortTTdata(TTDicts,['TAP'],PeriodDicts['MCMC.FLD.1'][0])
    epoch1, tt1, err1 = cfp.sortTTdata(TTDicts,['MCMC.FLD.1'],PeriodDicts['MCMC.FLD.1'][0])
    #epoch, tt, err = cfp.sortTTdata(TTDicts,UseList[Object.name],PeriodGuess)
    (P,errP), (T0,errT0) = tmcmc.misc.linefitquick_werr(epoch,tt,err)
    (P1,errP1), (T01,errT01) = tmcmc.misc.linefitquick_werr(epoch1,tt1,err1)
    print (P,errP), (T0,errT0)
    print (P1,errP1), (T01,errT01)
    
    #sys.exit()
    #srt_epoch = sorted(epoch)
    #sortedTT = sorted(TTDicts['TAP'][0])
    #for i in range(len(srt_epoch)):
        #print i, srt_epoch[i], T0 + P*srt_epoch[i], sortedTT[i], sortedTT[i]-(T0 + P*srt_epoch[i])
        #ttRe = (tt[i]-P*epoch[i]) + P1*(epoch1[i])
        #reCastTT = tt[i]
        #print tt1[i]-ttRe,epoch1[i], epoch[i]
        #print epoch[i], epoch1[i], tt[0]+epoch1[i]*P1, tt1[i], tt[i]

    #sys.exit()
    yLine = T0+epoch*P
    yLine1 = T01+epoch1*P1
    OC = (tt-yLine)*86400e0
    OCerr = err*86400e0
    OC1 = (tt1-yLine1)*86400e0
    OCerr1 = err1*86400e0
    
    epoch = num.array(epoch)
    epoch1 = num.array(epoch1)
    argsort_epoch = num.argsort(epoch)
    argsort_epoch1 = num.argsort(epoch1)
    
    OC = OC[argsort_epoch]
    OCerr = OCerr[argsort_epoch]
    yLine = yLine[argsort_epoch]
    
    OC1 = OC1[argsort_epoch]
    OCerr1 = OCerr1[argsort_epoch]
    yLine1 = yLine1[argsort_epoch1]
    
    epoch = epoch[argsort_epoch]
    epoch1 = epoch1[argsort_epoch1]

    #print epoch
    #print epoch1
    #sys.exit()

    for i in range(len(OC1)):
        ovl = tmcmc.misc.ovl_coefficient(OC1[i],OCerr1[i],OC[i],OCerr[i])
        print i+1, epoch[i], OC[i], OCerr[i], OC1[i], OCerr1[i], ovl 
    print 'TT   nsigAPOSTLE  nsigTAP'
    for i in range(len(OC)):
        nsig1 = format(abs(OC1[i]/OCerr1[i]),'.1f')
        nsig2 = format(abs(OC[i]/OCerr[i]),'.1f')
        print i+1,',', nsig1,',', nsig2 
    
    ChiSQ1 = tmcmc.mcmc.chisq(OC,OCerr,num.zeros(len(OC)))
    ChiSQ2 = tmcmc.mcmc.chisq(OC1,OCerr1,num.zeros(len(OC1)))
    NPars = 2e0
    print 'red Chisq TAP, ChiSQ, DOF', ChiSQ1/(len(OC)-NPars), ChiSQ1, len(OC)-NPars
    print 'red Chisq MCMC, ChiSQ, DOF', ChiSQ2/(len(OC1)-NPars), ChiSQ2, len(OC1)-NPars
    plt.plot(epoch1,OC,'ko')
    #plt.plot(epoch1,OC1,'ks')
    plt.errorbar(epoch1,OC,yerr=OCerr,fmt=None,ecolor='blue')
    #plt.errorbar(epoch1,OC1,yerr=OCerr1,fmt=None,ecolor='green')
    plt.plot(epoch1,num.zeros(len(epoch)),'r-')
    plt.title(Object.name)
    plt.xlabel('Epoch')
    plt.ylabel('O-C (seconds)')
    plt.xlim([-15,max(epoch1)+15])
    plt.show()