Example #1
0
    def drawMethodsSummary(cls, nmethods, madiffs, mavgs, mdevs, methods, mrdiffs, msteps, mts, pdf):

        line = 1
        ncols = 3
        nlines = nmethods
        nbins = 15
        # plot the data
        for name, method in methods.iteritems():
            ts = mts[name]
            devs = mdevs[name]
            avgs = mavgs[name]
            steps = msteps[name]
            rdiffs = mrdiffs[name]
            adiffs = madiffs[name]
            Graph.subplot(nlines, ncols, line)
            for pair in method["pairs"]:
                Graph.errorbar(
                    ts[pair.getPair()],
                    avgs[pair.getPair()],
                    yerr=devs[pair.getPair()],
                    fmt=".",
                    color=Graph.getColor(pair.getPair()),
                    label="%s,%s" % pair.getPair(),
                )
                Graph.hold = True
            for target, tsteps in steps.iteritems():
                Graph.step(tsteps[0], tsteps[1], "r", where="post", label=target, color=Graph.getColor(target))
                Graph.hold = True
            Graph.decorate(g_xlabel="Time (s)", g_ylabel="RTT time", g_title="Measures for %s" % name)
            Graph.legend(loc=2)
            Graph.subplot(nlines, ncols, line + 1)
            n, bins, patches = Graph.hist(
                rdiffs.values(),
                nbins,
                normed=1,
                label=["%s,%s" % x for x in rdiffs.keys()],
                g_xlabel="Logarithmic Relative error",
                g_title="Logarithmic Relative error for %s" % name,
            )
            Graph.legend(loc="upper left", bbox_to_anchor=(0.9, 1.0), ncol=1)
            # ax.set_xticklabels([lab.get_text() for lab in ax.get_xaxis().get_ticklabels()])
            Graph.subplot(nlines, ncols, line + 2)
            Graph.hist(
                adiffs.values(),
                nbins,
                label=["%s,%s" % x for x in adiffs.keys()],
                g_xlabel="Absolute error",
                g_title="Absolute error for %s" % name,
            )
            Graph.legend(loc="upper left", bbox_to_anchor=(0.9, 1.0), ncol=1)
            # plt.hist(diffs.values(), stacked = True)
            # plt.xticks(bins, ["2^%s" % i for i in bins])
            # plt.hold(True)
            # plt.plot(steps_time, steps_val, 'r,-')
            #         plt.axis([0, 60, 0, 2000])
            # ax = plt.gca()
            # ax.yaxis.grid(True, linestyle = '-', which = 'major', color = 'lightgrey',
            #                alpha = 0.5)
            Graph.draw()
            line += ncols
        fig = Graph.gcf()
        fig.set_size_inches(20, 25)
        pdf.savefig(bbox_inches="tight")  #'checks/delay.pdf', format = 'pdf', )
        Graph.close()
Example #2
0
    def drawMethodsSummary(cls, nmethods, madiffs, mavgs, mdevs, methods,
                           mrdiffs, msteps, mts, pdf):

        line = 1
        ncols = 3
        nlines = nmethods
        nbins = 15
        # plot the data
        for name, method in methods.iteritems():
            ts = mts[name]
            devs = mdevs[name]
            avgs = mavgs[name]
            steps = msteps[name]
            rdiffs = mrdiffs[name]
            adiffs = madiffs[name]
            Graph.subplot(nlines, ncols, line)
            for pair in method['pairs']:
                Graph.errorbar(ts[pair.getPair()],
                               avgs[pair.getPair()],
                               yerr=devs[pair.getPair()],
                               fmt='.',
                               color=Graph.getColor(pair.getPair()),
                               label="%s,%s" % pair.getPair())
                Graph.hold = True
            for target, tsteps in steps.iteritems():
                Graph.step(tsteps[0],
                           tsteps[1],
                           'r',
                           where='post',
                           label=target,
                           color=Graph.getColor(target))
                Graph.hold = True
            Graph.decorate(g_xlabel='Time (s)',
                           g_ylabel='RTT time',
                           g_title='Measures for %s' % name)
            Graph.legend(loc=2)
            Graph.subplot(nlines, ncols, line + 1)
            n, bins, patches = Graph.hist(
                rdiffs.values(),
                nbins,
                normed=1,
                label=["%s,%s" % x for x in rdiffs.keys()],
                g_xlabel='Logarithmic Relative error',
                g_title='Logarithmic Relative error for %s' % name)
            Graph.legend(loc='upper left', bbox_to_anchor=(0.9, 1.0), ncol=1)
            # ax.set_xticklabels([lab.get_text() for lab in ax.get_xaxis().get_ticklabels()])
            Graph.subplot(nlines, ncols, line + 2)
            Graph.hist(adiffs.values(),
                       nbins,
                       label=["%s,%s" % x for x in adiffs.keys()],
                       g_xlabel='Absolute error',
                       g_title='Absolute error for %s' % name)
            Graph.legend(loc='upper left', bbox_to_anchor=(0.9, 1.0), ncol=1)
            # plt.hist(diffs.values(), stacked = True)
            # plt.xticks(bins, ["2^%s" % i for i in bins])
            # plt.hold(True)
            # plt.plot(steps_time, steps_val, 'r,-')
            #         plt.axis([0, 60, 0, 2000])
            # ax = plt.gca()
            # ax.yaxis.grid(True, linestyle = '-', which = 'major', color = 'lightgrey',
            #                alpha = 0.5)
            Graph.draw()
            line += ncols
        fig = Graph.gcf()
        fig.set_size_inches(20, 25)
        pdf.savefig(
            bbox_inches='tight')  #'checks/delay.pdf', format = 'pdf', )
        Graph.close()
Example #3
0
    def makeResults(cls, methods, checkName="bw", saveResults=True):
        """Make result to graphics
        :param methods : results to process
        :param checkName: name of the current check being processed
        :param saveResults : save results to json file ?"""
        if saveResults:
            try:
                fn = cls.saveResults(methods, checkName)
                info("Saved bandwidth results to file %s\n" % fn)
            except Exception as e:
                error("Could not save bandwidth results : %s\n" % e)

        import numpy as np
        from matplotlib.backends.backend_pdf import PdfPages

        try:
            for name, method in methods.iteritems():
                info("Result of measures for method %s:" % name)
                for pair in method["pairs"]:
                    info(pair.printAll())
                info("\n")
        except Exception as e:
            error("Could not print results %s\n" % e)

        nmethods = len(methods)
        gr = 1
        ncols = 3
        nlines = nmethods
        nbins = 15
        # dict(step : dict(method, data))
        # mboxes = {}
        try:
            fn = "checks/%s.pdf" % checkName
            pdf = PdfPages(fn)
            for name, method in methods.iteritems():
                avgs = {}
                ts = {}
                adiffs = {}
                rdiffs = {}
                steps = {"total": None}
                for target, tsteps in method["real_steps"].iteritems():
                    st = zip(*tsteps)
                    step_time = np.array((0,) + st[1])
                    step_values = np.array((0,) + st[0])
                    steps[target] = (step_time, step_values)
                    steps["total"] = (
                        (step_time, np.minimum(steps["total"][1], step_values))
                        if steps["total"] is not None
                        else (step_time, step_values)
                    )

                for pair in method["pairs"]:
                    avg = map(lambda measure: measure.bw / (1000 ** 2), pair.measures)
                    adiff = map(lambda measure: measure.bw / (1000 ** 2) - measure.step, pair.measures)
                    rdiff = map(
                        lambda measure: abs(measure.bw / (1000.0 ** 2) - measure.step) / float(measure.step),
                        pair.measures,
                    )
                    t = map(lambda measure: measure.timestamp, pair.measures)
                    avgs[pair.getPair()] = np.array(avg)
                    ts[pair.getPair()] = np.array(t)
                    adiffs[pair.getPair()] = np.array(adiff)
                    rdiffs[pair.getPair()] = np.array(rdiff)

                # plot the data
                Graph.subplot(nlines, ncols, gr)
                for pair in method["pairs"]:
                    Graph.scatter(
                        ts[pair.getPair()],
                        avgs[pair.getPair()],
                        color=Graph.getColor(pair.getPair()),
                        label="%s,%s" % pair.getPair(),
                    )
                    Graph.hold = True
                for target, tsteps in steps.iteritems():
                    Graph.step(tsteps[0], tsteps[1], "r", where="post", label=target, color=Graph.getColor(target))
                    Graph.hold = True

                Graph.decorate(
                    g_xlabel="Time (s)",
                    g_ylabel="BW estimation with %s (Mbps)" % name,
                    g_title="Measure for Bandwidth for tool %s" % name,
                )
                ax = Graph.gca()
                ax.set_yscale("log")
                Graph.legend(loc=2)

                Graph.draw()
                Graph.subplot(nlines, ncols, gr + 1)
                Graph.hist(
                    rdiffs.values(),
                    nbins,
                    label=["%s,%s" % x for x in rdiffs.keys()],
                    g_xlabel="Relative error",
                    g_title="Relative error for tool %s" % name,
                )
                Graph.legend(loc=2)
                # ax = Graph.gca()
                # ax.set_yscale('log')

                Graph.subplot(nlines, ncols, gr + 2)
                Graph.hist(
                    adiffs.values(),
                    nbins,
                    label=["%s,%s" % x for x in adiffs.keys()],
                    g_xlabel="Absolute error (Mbps)",
                    g_title="Absolute error for tool %s" % name,
                )
                Graph.legend(loc=2)

                gr += ncols
            fig = Graph.gcf()
            fig.set_size_inches(20, 30)
            pdf.savefig(bbox_inches="tight")  # 'checks/delay.pdf', format = 'pdf', )
            Graph.close()

            d = pdf.infodict()
            d["Title"] = "Bandwidth measurement"
            d["Author"] = u"Francois Espinet"
            d["Subject"] = "Bandwidth measurement"
            d["Keywords"] = "measurement bw bandwidth"
            d["ModDate"] = datetime.datetime.today()
        finally:
            pdf.close()
            info("Saved graphics to %s\n" % fn)
        Graph.show()
Example #4
0
    def makeResults(cls, methods, checkName='bw', saveResults=True):
        """Make result to graphics
        :param methods : results to process
        :param checkName: name of the current check being processed
        :param saveResults : save results to json file ?"""
        if saveResults:
            try:
                fn = cls.saveResults(methods, checkName)
                info("Saved bandwidth results to file %s\n" % fn)
            except Exception as e:
                error("Could not save bandwidth results : %s\n" % e)

        import numpy as np
        from matplotlib.backends.backend_pdf import PdfPages

        try:
            for name, method in methods.iteritems():
                info("Result of measures for method %s:" % name)
                for pair in method['pairs']:
                    info(pair.printAll())
                info("\n")
        except Exception as e:
            error("Could not print results %s\n" % e)

        nmethods = len(methods)
        gr = 1
        ncols = 3
        nlines = nmethods
        nbins = 15
        # dict(step : dict(method, data))
        # mboxes = {}
        try:
            fn = 'checks/%s.pdf' % checkName
            pdf = PdfPages(fn)
            for name, method in methods.iteritems():
                avgs = {}
                ts = {}
                adiffs = {}
                rdiffs = {}
                steps = {'total': None}
                for target, tsteps in method['real_steps'].iteritems():
                    st = zip(*tsteps)
                    step_time = np.array((0, ) + st[1])
                    step_values = np.array((0, ) + st[0])
                    steps[target] = (step_time, step_values)
                    steps['total'] = (
                        step_time, np.minimum(steps['total'][1], step_values)
                    ) if steps['total'] is not None else (step_time,
                                                          step_values)

                for pair in method['pairs']:
                    avg = map(lambda measure: measure.bw / (1000**2),
                              pair.measures)
                    adiff = map(
                        lambda measure: measure.bw / (1000**2) - measure.step,
                        pair.measures)
                    rdiff = map(
                        lambda measure: abs(measure.bw / (1000.0**2) - measure.
                                            step) / float(measure.step),
                        pair.measures)
                    t = map(lambda measure: measure.timestamp, pair.measures)
                    avgs[pair.getPair()] = np.array(avg)
                    ts[pair.getPair()] = np.array(t)
                    adiffs[pair.getPair()] = np.array(adiff)
                    rdiffs[pair.getPair()] = np.array(rdiff)

                # plot the data
                Graph.subplot(nlines, ncols, gr)
                for pair in method['pairs']:
                    Graph.scatter(ts[pair.getPair()],
                                  avgs[pair.getPair()],
                                  color=Graph.getColor(pair.getPair()),
                                  label="%s,%s" % pair.getPair())
                    Graph.hold = True
                for target, tsteps in steps.iteritems():
                    Graph.step(tsteps[0],
                               tsteps[1],
                               'r',
                               where='post',
                               label=target,
                               color=Graph.getColor(target))
                    Graph.hold = True

                Graph.decorate(g_xlabel='Time (s)',
                               g_ylabel='BW estimation with %s (Mbps)' % name,
                               g_title='Measure for Bandwidth for tool %s' %
                               name)
                ax = Graph.gca()
                ax.set_yscale('log')
                Graph.legend(loc=2)

                Graph.draw()
                Graph.subplot(nlines, ncols, gr + 1)
                Graph.hist(rdiffs.values(),
                           nbins,
                           label=["%s,%s" % x for x in rdiffs.keys()],
                           g_xlabel='Relative error',
                           g_title='Relative error for tool %s' % name)
                Graph.legend(loc=2)
                # ax = Graph.gca()
                # ax.set_yscale('log')

                Graph.subplot(nlines, ncols, gr + 2)
                Graph.hist(adiffs.values(),
                           nbins,
                           label=["%s,%s" % x for x in adiffs.keys()],
                           g_xlabel='Absolute error (Mbps)',
                           g_title='Absolute error for tool %s' % name)
                Graph.legend(loc=2)

                gr += ncols
            fig = Graph.gcf()
            fig.set_size_inches(20, 30)
            pdf.savefig(
                bbox_inches='tight')  # 'checks/delay.pdf', format = 'pdf', )
            Graph.close()

            d = pdf.infodict()
            d['Title'] = 'Bandwidth measurement'
            d['Author'] = u'Francois Espinet'
            d['Subject'] = 'Bandwidth measurement'
            d['Keywords'] = 'measurement bw bandwidth'
            d['ModDate'] = datetime.datetime.today()
        finally:
            pdf.close()
            info("Saved graphics to %s\n" % fn)
        Graph.show()