示例#1
0
    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()
示例#2
0
    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()
示例#3
0
    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()
示例#4
0
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
示例#6
0
    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)
示例#7
0
文件: basics.py 项目: tcoenen/brp
    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)
示例#8
0
    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()
示例#9
0
            '%.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')
示例#10
0
    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')