コード例 #1
0
ファイル: regression_view.py プロジェクト: NMGRL/pychron
    def setup_graph(self, an):

        container = HPlotContainer()

        sg = StackedGraph()
        sg.plotcontainer.spacing = 5
        sg.plotcontainer.stack_order = 'top_to_bottom'

        isos = an.sorted_values(reverse=False)
        for i, iso in enumerate(isos):
            sniff = iso.sniff
            sg.new_plot(ytitle=iso.name, xtitle='Time (s)', title='Equilibration')
            if sniff.xs.shape[0]:
                sg.new_series(sniff.offset_xs, sniff.ys, marker='circle', type='scatter')
            sg.set_y_limits(pad='0.1', plotid=i)

        bg = StackedRegressionGraph()
        bg.plotcontainer.spacing = 5
        bg.plotcontainer.stack_order = 'top_to_bottom'

        for i, iso in enumerate(isos):
            baseline = iso.baseline
            bg.new_plot(ytitle=baseline.detector, xtitle='Time (s)', title='Baseline')
            if baseline.xs.shape[0]:
                bg.new_series(baseline.offset_xs, baseline.ys,
                              color='red', type='scatter', fit=baseline.fit)
            bg.set_y_limits(pad='0.1', plotid=i)

        ig = StackedRegressionGraph()
        ig.plotcontainer.spacing = 5
        ig.plotcontainer.stack_order = 'top_to_bottom'

        for i, iso in enumerate(isos):
            ig.new_plot(ytitle=iso.name, xtitle='Time (s)', title='Isotope')
            if iso.xs.shape[0]:
                ig.new_series(iso.offset_xs, iso.ys,
                              color='blue', type='scatter', fit=iso.fit)
            ig.set_y_limits(pad='0.1', plotid=i)

        container.add(sg.plotcontainer)
        container.add(ig.plotcontainer)
        container.add(bg.plotcontainer)

        self.container = container
コード例 #2
0
    def show_extraction_graph(self):
        if not self.has_active_editor(klass=RecallEditor):
            return

        from pychron.graph.stacked_graph import StackedGraph
        from numpy import array
        import struct
        import base64

        an = self.active_editor.analysis
        data = an.get_extraction_data()

        def extract_blob(blob):
            blob = base64.b64decode(blob)
            if blob != 'No Response':
                x, y = array([
                    struct.unpack('<ff', blob[i:i + 8])
                    for i in range(0, len(blob), 8)
                ]).T
                x[0] = 0
            else:
                x, y = [], []

            return x, y

        g = StackedGraph()
        g.window_title = 'Extraction Results - {}'.format(an.record_id)
        g.new_plot(padding=[70, 10, 10, 60])

        xx, yy = extract_blob(data['request'])
        g.new_series(xx, yy, plotid=0)
        g.set_y_limits(pad='0.1')

        g.new_plot(padding=[70, 10, 10, 10])
        xx, yy = extract_blob(data['response'])
        g.new_series(xx, yy, plotid=1)

        g.set_y_title('Temp (C)', plotid=0)
        g.set_x_title('Time (s)', plotid=0)
        g.set_y_title('% Output', plotid=1)
        open_view(g)
コード例 #3
0
ファイル: browser_task.py プロジェクト: NMGRL/pychron
    def show_extraction_graph(self):
        if not self.has_active_editor(klass=RecallEditor):
            return

        from pychron.graph.stacked_graph import StackedGraph
        from numpy import array
        import struct
        import base64

        an = self.active_editor.analysis
        data = an.get_extraction_data()

        def extract_blob(blob):
            blob = base64.b64decode(blob)
            if blob != 'No Response':
                x, y = array([struct.unpack('<ff', blob[i:i + 8]) for i in range(0, len(blob), 8)]).T
                x[0] = 0
            else:
                x, y = [], []

            return x, y

        g = StackedGraph()
        g.window_title = 'Extraction Results - {}'.format(an.record_id)
        g.new_plot(padding=[70, 10, 10, 60])

        xx, yy = extract_blob(data['request'])
        g.new_series(xx, yy, plotid=0)
        g.set_y_limits(pad='0.1')

        g.new_plot(padding=[70, 10, 10, 10])
        xx, yy = extract_blob(data['response'])
        g.new_series(xx, yy, plotid=1)

        g.set_y_title('Temp (C)', plotid=0)
        g.set_x_title('Time (s)', plotid=0)
        g.set_y_title('% Output', plotid=1)
        open_view(g)
コード例 #4
0
    def _make_graph(self, lumens, duration):
        g = StackedGraph(container_dict=dict(stack_order='top_to_bottom'))
        g.new_plot(ytitle='Output (W)')
        g.new_series()
        g.new_plot(ytitle='Residual')
        g.new_series(plotid=1)
        g.new_plot(ytitle='Lumens', xtitle='time (s)')
        g.new_series(plotid=2)

        g.add_horizontal_rule(lumens, plotid=2)
        g.set_x_limits(0, duration * 1.1)
        return g
コード例 #5
0
ファイル: degasser.py プロジェクト: NMGRL/pychron
    def _make_graph(self, lumens, duration):
        g = StackedGraph(container_dict=dict(stack_order="top_to_bottom"))
        g.new_plot(ytitle="Output (W)")
        g.new_series()
        g.new_plot(ytitle="Residual")
        g.new_series(plotid=1)
        g.new_plot(ytitle="Lumens", xtitle="time (s)")
        g.new_series(plotid=2)

        g.add_horizontal_rule(lumens, plotid=2)
        g.set_x_limits(0, duration * 1.1)
        return g
コード例 #6
0
    def setup_graph(self, an):

        container = HPlotContainer()

        container_dict = {'spacing': 5, 'stack_order': 'top_to_bottom'}
        sg = StackedGraph(container_dict=container_dict)
        sg.plotcontainer.spacing = 5
        sg.plotcontainer.stack_order = 'top_to_bottom'

        isos = an.sorted_values(reverse=False)
        add_sniff = True

        sisos = [iso for iso in isos if iso.sniff.offset_xs.shape[0]]
        for i, iso in enumerate(sisos):
            sniff = iso.sniff
            sg.new_plot(ytitle=iso.name,
                        xtitle='Time (s)',
                        title='Equilibration')
            sg.new_series(sniff.offset_xs,
                          sniff.ys,
                          marker='circle',
                          type='scatter')
            sg.set_y_limits(pad='0.1', plotid=i)
            sg.set_x_limits(min_=0, max_=max(sniff.offset_xs) * 1.05, plotid=i)

        bg = StackedRegressionGraph(container_dict=container_dict)
        add_baseline = True

        ig = StackedRegressionGraph(container_dict=container_dict)

        iisos = [iso for iso in isos if iso.offset_xs.shape[0]]
        baselines = []
        for i, iso in enumerate(iisos):
            if iso.baseline.offset_xs.shape[0]:
                baselines.append(iso.baseline)
            ig.new_plot(ytitle='{}({})'.format(iso.name, iso.detector),
                        xtitle='Time (s)',
                        title='Isotope')
            ig.new_series(iso.offset_xs,
                          iso.ys,
                          display_filter_bounds=True,
                          filter_outliers_dict=iso.filter_outliers_dict,
                          color='blue',
                          type='scatter',
                          fit=iso.efit)
            ig.set_regressor(iso.regressor, i)
            ig.set_y_limits(pad='0.1', plotid=i)
            ig.set_x_limits(min_=0, max_=max(iso.offset_xs) * 1.05, plotid=i)

        ig.refresh()

        # bisos = [iso for iso in isos if iso.baseline.offset_xs.shape[0]]
        # plotted_baselines = []
        # for i, iso in enumerate(bisos):
        # baseline = iso.baseline
        # if baseline.detector in plotted_baselines:
        #     continue
        # plotted_baselines.append(baseline.detector)

        # for iso in bisos:
        for i, baseline in enumerate(baselines):

            bg.new_plot(ytitle=baseline.detector,
                        xtitle='Time (s)',
                        title='Baseline')
            bg.new_series(baseline.offset_xs,
                          baseline.ys,
                          filter_outliers_dict=baseline.filter_outliers_dict,
                          display_filter_bounds=True,
                          color='red',
                          type='scatter',
                          fit=baseline.efit)
            bg.set_regressor(baseline.regressor, i)
            bg.set_y_limits(pad='0.1', plotid=i)
            bg.set_x_limits(pad='0.025', plotid=i)

        bg.refresh()

        container.add(sg.plotcontainer)
        container.add(ig.plotcontainer)
        container.add(bg.plotcontainer)

        self.container = container