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)
blocks = results['blocks'] off_peak_phase = off_peak_results[pwn]['phase'] import pickle jd = pickle.load(open('/nfs/farm/g/glast/u55/pulsar/2ndPulsarcatalog/psue/General/josh_dicts.pickle')) offset = float(jd[pwn.replace('PSRJ','J')]['shift']) print pwn,offset plot_phaseogram_blocks(ft1, skydir=skydir, emin=emin, emax=emax, radius=radius, phase_range=off_peak_phase, phase_range_kwargs=dict(color='black', fill=False, alpha=None, hatch='//'), blocks=blocks, blocks_kwargs=dict(color='grey' if bw else 'red'), nbins=nbins, repeat_phase=False, data_kwargs=dict(color='black', linewidth=0.5), offset=offset, axes=axes) axes.set_ylim(ymax=axes.get_ylim()[1]*1.2) # from http://matplotlib.sourceforge.net/faq/howto_faq.html#align-my-ylabels-across-multiple-subplots axes.yaxis.set_label_coords(-0.25,0.5) y,x = np.unravel_index(i, (nrows,ncols)) if x != 0: axes.set_ylabel('')