Ejemplo n.º 1
0
    def __init__(self, ft1, skydir, emax,
                 emins=np.logspace(2,4,17),
                 rads=np.linspace(0.1,4,40),
                 verbose=False,
                ):

        self.ft1 = ft1
        self.skydir = skydir
        self.emax = emax

        stats = np.empty([len(emins),len(rads)])

        for iemin,emin in enumerate(emins):
            for irad,radius in enumerate(rads):
                phases = get_phases(ft1, skydir, emin, emax, radius)
                stat = hm(phases) if len(phases) > 0 else 0
                if verbose: print 'emin=%s, radius=%s, stat=%s, len=%s' % (emin,radius,stat,len(phases))
                stats[iemin,irad] = stat

        a = np.argmax(stats)
        coord_e, coord_r = np.unravel_index(a, stats.shape)

        self.optimal_emin = emins[coord_e]
        self.optimal_radius = rads[coord_r]
        self.optimal_h = np.max(stats)
Ejemplo n.º 2
0
def find_offpeak(ft1,name,skydir, pwncat1phase, emax=100000):

    # First, find energy and radius that maximize H test.

    opt = OptimizePhases(ft1,skydir, emax=emax, verbose=True)

    print 'optimal energy=%s & radius=%s, h=%s' % (opt.optimal_emin,opt.optimal_radius,opt.optimal_h)

    # Get optimal phases
    phases = get_phases(ft1, skydir, opt.optimal_emin, emax, opt.optimal_radius)

    # compute bayesian blocks on the optimized list of phases
    off_peak_bb = OffPeakBB(phases)


    global results
    results=tolist(
        dict(
            name=name,
            pwncat1phase = pwncat1phase.tolist() if pwncat1phase is not None else None,
            off_peak_phase = off_peak_bb.off_peak.tolist(),
            blocks = off_peak_bb.blocks,
            optimal_emin = opt.optimal_emin,
            emax = emax,
            optimal_radius = opt.optimal_radius,
            ncpPrior=off_peak_bb.ncpPrior,
            actual_ncpPrior=off_peak_bb.actual_ncpPrior,
            )
        )

    yaml.dump(results,open('results_%s.yaml' % name,'w'))

    plot_phaseogram_blocks(ft1, 
                           repeat_phase=False,
                           skydir = skydir, 
                           emin = opt.optimal_emin, 
                           emax = emax, 
                           radius = opt.optimal_radius, 
                           phase_range = off_peak_bb.off_peak,
                           blocks_kwargs=dict(color='green'),
                           phase_range_kwargs=dict(color='green', label='blocks'),
                           data_kwargs=dict(color='red'),
                           blocks = off_peak_bb.blocks)

    if pwncat1phase is not None:
        PhaseRange(pwncat1phase).axvspan(label='pwncat1', alpha=0.25, color='blue')

    P.legend()
    P.title(name)
    P.savefig('results_%s.pdf' % name)
    P.savefig('results_%s.png' % name)