def render(self, context): qs = context[self.var_name] tmp = StringIO.StringIO() P = [c.p_bary for c in qs.all() if c.p_bary > 0] cv = SVGCanvas(940, 550, background_color='white') if P: binned = bin_data_log(P, 200) pc = PlotContainer(0, -20, 950, 550, color='black', x_log=True) pc.bottom.set_label('Period (ms)') pc.top.hide_label() pc.left.set_label('Count') pc.right.hide_label() hp = HistogramPlotter(binned, color='black') pc.add_plotter(hp) cv.add_plot_container(pc) # write number of candidates shown: tf = TextFragment(50, 520, '(Showing %d candidates.)' % len(P), color='black', font_size=15) cv.add_plot_container(tf) else: tf = TextFragment(200, 200, 'No Candidates found.', color='red', font_size=50) cv.add_plot_container(tf) tmp = StringIO.StringIO() cv.draw(tmp) return tmp.getvalue()
def render(self, context): qs = context[self.var_name] tmp = StringIO.StringIO() P = [c.p_bary for c in qs.all() if c.p_bary > 0] cv = SVGCanvas(940, 550, background_color='white') if P: binned = bin_data_log(P, 200) pc = PlotContainer(0, -20, 950, 550, color='black', x_log=True) pc.bottom.set_label('Period (ms)') pc.top.hide_label() pc.left.set_label('Count') pc.right.hide_label() hp = HistogramPlotter(binned, color='black') pc.add_plotter(hp) cv.add_plot_container(pc) # write number of candidates shown: tf = TextFragment(50, 520, '(Showing %d candidates.)' % len(P), color='black', font_size=15) cv.add_plot_container(tf) else: tf = TextFragment(200, 200, 'No Candidates found.', color='red', font_size=50) cv.add_plot_container(tf) tmp = StringIO.StringIO() cv.draw(tmp) return tmp.getvalue()
def render(self, context): qs = context[self.var_name] P = [c.p_bary for c in qs.all() if c.best_dm > 0] DM = [c.best_dm for c in qs.all() if c.best_dm > 0] REDCHISQ = [c.reduced_chi_sq for c in qs.all() if c.best_dm > 0] LINKS = [reverse('bestprof_detail', args=[c.pk]) for c in qs.all() if c.best_dm > 0] RA = [c.ra_deg for c in qs.all() if c.best_dm > 0] DEC = [c.dec_deg for c in qs.all() if c.best_dm > 0] cv = SVGCanvas(940, 550, background_color='white') if P: lo_dm = min(DM) max_dm = max(DM) pc = PlotContainer(0, -20, 880, 550, color='black', x_log=True, y_log=True, data_background_color='gray') gr = RGBGradient((lo_dm, max_dm), (0, 0, 1), (1, 0, 0)) scp = ScatterPlotter(P, REDCHISQ, RA, DEC, DM, gradient=gr, gradient_i=4, links=LINKS, symbol=RADECSymbol) pc.add_plotter(scp) # pc.top.hide_tickmarklabels() pc.top.hide_label() # pc.right.hide_tickmarklabels() pc.right.hide_label() pc.left.set_label('Reduced Chi Square') pc.bottom.set_label('Period (ms)') cv.add_plot_container(pc) # Gradient: pc = PlotContainer(820, -20, 120, 550, color='black', data_padding=0) pc.top.hide_label() pc.top.hide_tickmarks() pc.left.hide_tickmarks() pc.bottom.hide_label() pc.bottom.hide_tickmarks() pc.left.hide_label() pc.right.set_label('Dispersion Measure cm^-3 pc') pc.add_plotter(GradientPlotter(gr)) cv.add_plot_container(pc) # write number of candidates shown: tf = TextFragment(50, 520, '(Showing %d candidates.)' % len(P), color='black', font_size=15) cv.add_plot_container(tf) else: tf = TextFragment(200, 200, 'No Candidates found.', color='red', font_size=50) cv.add_plot_container(tf) tmp = StringIO.StringIO() cv.draw(tmp) return tmp.getvalue()
def plot(filename, spr, options, pulse_trains, pt_idx, rejected_pulses, nlink, plink, marker_dms): ''' Create a pulsetrain diagnostic plot. Note: Call this function to create the plot, not others in this module. ''' # Find DM range for this plot: lodm, hidm = find_dm_range(spr.dms, pulse_trains[pt_idx]) # Flatten pulses into list of candidates (foreground, background): foreground = flatten_pulses(pulse_trains[pt_idx], lodm, hidm) background = flatten_pulses(rejected_pulses, lodm, hidm) for i in range(len(pulse_trains)): if i != pt_idx: background.extend(flatten_pulses(pulse_trains[i], lodm, hidm)) # Determine whether it is wise to switch to rasterized plotting (called # fallback). n_candidates = len(foreground) + len(background) if n_candidates > MAX_N_CANDIDATES: fallback = True else: fallback = False # Set up the overall canvas to wich all panels are plot: cv = SVGCanvas(1250, 750) # Add the three panels to the plot: plot_main_panel(cv, foreground, background, lodm, hidm, marker_dms, fallback) plot_snr_scatter(cv, foreground, background, lodm, hidm, marker_dms, fallback) plot_count_histogram(cv, spr.dms, foreground, background, lodm, hidm, marker_dms) # Add the text identifying the data set etc. to the diagnostic plot: add_text(cv, spr.md_map[spr.dms[0]], nlink, plink, n_candidates, fallback) add_settings_text(cv, options) add_trigger_text(cv, pulse_trains, pt_idx) # Finally write everything out to an SVG (xml) file. with open(filename, 'w') as f: cv.draw(f)
pc_gr.top.hide_label() pc_gr.bottom.set_label(TYPE2TITLE[options.type]) pc_gr.add_plotter(grp) cv.add_plot_container(pc_gr) # Text (data set, next previous, etc...) if len(output_files) > 1: if plot_i < len(output_files) - 1: tf = TextFragment(870, 580, 'Next', color='blue', link=output_files[plot_i + 1][2]) cv.add_plot_container(tf) if plot_i > 0: tf = TextFragment(920, 580, 'Previous', color='blue', link=output_files[plot_i - 1][2]) cv.add_plot_container(tf) elif options.uselinkplaceholder: print 'Using link placeholders' cv.add_plot_container(TextFragment(870, 580, 'Home', color='blue', link='HOME_PLACEHOLDER')) cv.add_plot_container(TextFragment(1020, 580, 'Next', color='blue', link='NEXT_PLACEHOLDER')) cv.add_plot_container(TextFragment(1070, 580, 'Previous', color='blue', link='PREVIOUS_PLACEHOLDER')) with open(fn, 'w') as f: cv.draw(f) print spr.n_error, spr.n_success
c.top.hide_all() c.bottom.hide_all() c.left.hide_label() c.left.hide_tickmarklabels() c.right.set_label('Significance (sigma)') c.add_plotter(GradientPlotter(gr2)) cv.add_plot_container(c) # ------------------------------------------------------ # -- For debugging raster fallback --------------------- # Note: this also tests the 'new' shortcuts on SVGCanvas and PlotContainer # The raster fallback might still have some off-by-one problems. gr = RGBGradient((0, 25), (0, 0, 1), (1, 0, 0)) gr2 = RGBGradient((0, 25), (1, 0, 0), (0, 0, 1)) c = PlotContainer(100, 1900, 600, 400) xdata = list(range(25)) c.add(ScatterPlotter(xdata, symbols=[RasterDebugSymbol]), True) c.add(ScatterPlotter(xdata, symbols=[RasterDebugSymbol])) xdata.reverse() colors = ['yellow' for x in xdata] c.add(ScatterPlotter(xdata, symbols=[BaseSymbol], colors=colors)) c.add(ScatterPlotter(xdata, gradient=gr, gradient_i=0), True) cv.add(c) # # ------------------------------------------------------ cv.draw(sys.stdout)
c.top.hide_all() c.bottom.hide_all() c.left.hide_label() c.left.hide_tickmarklabels() c.right.set_label("Significance (sigma)") c.add_plotter(GradientPlotter(gr2)) cv.add_plot_container(c) # ------------------------------------------------------ # -- For debugging raster fallback --------------------- # Note: this also tests the 'new' shortcuts on SVGCanvas and PlotContainer # The raster fallback might still have some off-by-one problems. gr = RGBGradient((0, 25), (0, 0, 1), (1, 0, 0)) gr2 = RGBGradient((0, 25), (1, 0, 0), (0, 0, 1)) c = PlotContainer(100, 1900, 600, 400) xdata = list(range(25)) c.add(ScatterPlotter(xdata, symbols=[RasterDebugSymbol]), True) c.add(ScatterPlotter(xdata, symbols=[RasterDebugSymbol])) xdata.reverse() colors = ["yellow" for x in xdata] c.add(ScatterPlotter(xdata, symbols=[BaseSymbol], colors=colors)) c.add(ScatterPlotter(xdata, gradient=gr, gradient_i=0), True) cv.add(c) # # ------------------------------------------------------ cv.draw(sys.stdout)
def render(self, context): qs = context[self.var_name] tmp = StringIO.StringIO() cv = SVGCanvas(940, 550, background_color='white') P = [c.p_bary for c in qs.all() if c.best_dm > 0] DM = [c.best_dm for c in qs.all() if c.best_dm > 0] REDCHISQ = [c.reduced_chi_sq for c in qs.all() if c.best_dm > 0] LINKS = [ reverse('bestprof_detail', args=[c.pk]) for c in qs.all() if c.best_dm > 0 ] RA = [c.ra_deg for c in qs.all() if c.best_dm > 0] DEC = [c.dec_deg for c in qs.all() if c.best_dm > 0] if P: max_redchisq = max(REDCHISQ) min_redchisq = min(REDCHISQ) # Main panel showing candidate period-DM scatter plot: pc = PlotContainer(0, -20, 880, 550, color='black', x_log=True, y_log=True, data_background_color='gray') pc.bottom.set_label('Period (ms)') pc.top.hide_label() pc.left.set_label('Dispersion Measure (cm^-3 pc)') pc.right.hide_label() gr = RGBGradient((min_redchisq, max_redchisq), (0, 0, 1), (1, 0, 0)) scp = ScatterPlotter(P, DM, RA, DEC, REDCHISQ, gradient=gr, gradient_i=4, links=LINKS, symbol=RADECSymbol) pc.add_plotter(scp) cv.add_plot_container(pc) # Gradient: pc = PlotContainer(820, -20, 120, 550, color='black', data_padding=0) pc.top.hide_label() pc.top.hide_tickmarks() pc.left.hide_tickmarks() pc.bottom.hide_label() pc.bottom.hide_tickmarks() pc.left.hide_label() pc.right.set_label('Candidate Reduced Chi-Square') pc.add_plotter(GradientPlotter(copy.deepcopy(scp.gradient))) cv.add_plot_container(pc) # write number of candidates shown: tf = TextFragment(50, 520, '(Showing %d candidates.)' % len(P), color='black', font_size=15) cv.add_plot_container(tf) else: tf = TextFragment(200, 200, 'No Candidates found.', color='red', font_size=50) cv.add_plot_container(tf) cv.draw(tmp) return tmp.getvalue()
'%.2f ms' % bpf.header.p_bary[0], alignment='start', font_size=TEXTSIZE)) cv.add_plot_container(TextFragment(x + width, y + height + 2 * TEXTSIZE, '%.3f pc cm^-3' % bpf.header.best_dm, alignment='end', font_size=TEXTSIZE)) files = os.listdir(sys.argv[1]) tmp = [] for f in files: if f.endswith('.bestprof'): try: bpf = BestprofFile(os.path.join(sys.argv[1], f)) except: print 'There was a problem reading %s' % os.path.join(sys.argv[1], f) else: tmp.append(bpf) tmp.sort(key=lambda x: x.header.reduced_chi_sq) tmp.reverse() cv = SVGCanvas(1140, 1240) N_HORIZONTAL = 5 N_VERTICAL = 10 for ix in range(N_HORIZONTAL): for iy in range(N_VERTICAL): try: plot_profile(cv, 220 * ix + 20, 140 * iy + 20, 200, 100, tmp[ix + N_HORIZONTAL * iy], psr_name='B0000+0000') except IndexError, e: pass cv.draw('test234.xml')
files = os.listdir(sys.argv[1]) tmp = [] for f in files: if f.endswith('.bestprof'): try: bpf = BestprofFile(os.path.join(sys.argv[1], f)) except: print 'There was a problem reading %s' % os.path.join( sys.argv[1], f) else: tmp.append(bpf) tmp.sort(key=lambda x: x.header.reduced_chi_sq) tmp.reverse() cv = SVGCanvas(1140, 1240) N_HORIZONTAL = 5 N_VERTICAL = 10 for ix in range(N_HORIZONTAL): for iy in range(N_VERTICAL): try: plot_profile(cv, 220 * ix + 20, 140 * iy + 20, 200, 100, tmp[ix + N_HORIZONTAL * iy], psr_name='B0000+0000') except IndexError, e: pass cv.draw('test234.xml')