# Path: soap/logger.py
# class levels():
# def set_context(**kwargs):
# def get_context():
# def header(s, l=levels.info):
# def format(*args):
# def log(*args, **kwargs):
# def line(*args, **kwargs):
# def rewrite(*args, **kwargs):
# def persistent(name, *args, **kwargs):
# def unpersistent(*args):
# def local_context(**kwargs):
# def log_level(l):
#     def wrapper(f):
#         def wrapped(*args, **kwargs):
# def log_enable(l):
#     def wrapper(f):
#         def wrapped(*args, **kwargs):
# def log_context(l):
#     def wrapper():
# def _init_level():
# 
# Path: soap/analysis/core.py
# def pareto_frontier(points, ignore_last=True):
#     frontier = _pareto_frontier(points, ignore_last)[0]
#     return frontier


import itertools
import matplotlib
from matplotlib import rc, pyplot
from mpl_toolkits.mplot3d import Axes3D
from soap import logger
from soap.analysis.core import pareto_frontier
        self._add_projection_lines(xmin, ymin, zmin)
        ax3d.set_xlim(xmin, xmax)
        ax3d.set_ylim(ymin, ymax)
        ax3d.set_zlim(zmin, zmax)

    def _set_labels(self):
        """Set names for axes.  """
        ax3d = self.ax3d
        ax3d.set_xlabel('Resources (LUTs)')
        ax3d.xaxis.get_major_formatter().set_scientific(True)
        ax3d.xaxis.get_major_formatter().set_powerlimits((-3, 3))
        ax3d.set_ylabel('Error')
        ax3d.yaxis.get_major_formatter().set_scientific(True)
        ax3d.yaxis.get_major_formatter().set_powerlimits((-3, 4))
        ax3d.set_zlabel('Latency')

    def _add_legend(self):
        legends = []
        proxies = []
        for color, marker, legend in self.legends:
            proxy = matplotlib.lines.Line2D(
                [0], [0], linestyle="none", color=color, marker=marker)
            proxies.append(proxy)
            legends.append(legend)
        self.ax3d.legend(proxies, legends, numpoints=1)

    def finalize(self):
        if self.is_finalized:
            return
        self.is_finalized = True

# Path: soap/logger.py
# class levels():
# def set_context(**kwargs):
# def get_context():
# def header(s, l=levels.info):
# def format(*args):
# def log(*args, **kwargs):
# def line(*args, **kwargs):
# def rewrite(*args, **kwargs):
# def persistent(name, *args, **kwargs):
# def unpersistent(*args):
# def local_context(**kwargs):
# def log_level(l):
#     def wrapper(f):
#         def wrapped(*args, **kwargs):
# def log_enable(l):
#     def wrapper(f):
#         def wrapped(*args, **kwargs):
# def log_context(l):
#     def wrapper():
# def _init_level():
# 
# Path: soap/analysis/core.py
# def pareto_frontier(points, ignore_last=True):
#     frontier = _pareto_frontier(points, ignore_last)[0]
#     return frontier


# Path: soap/analysis/plot.py
import itertools
import matplotlib
from matplotlib import rc, pyplot
from mpl_toolkits.mplot3d import Axes3D
from soap import logger
from soap.analysis.core import pareto_frontier

        self._add_projection_lines(xmin, ymin, zmin)
        ax3d.set_xlim(xmin, xmax)
        ax3d.set_ylim(ymin, ymax)
        ax3d.set_zlim(zmin, zmax)

    def _set_labels(self):
        """Set names for axes.  """
        ax3d = self.ax3d
        ax3d.set_xlabel('Resources (LUTs)')
        ax3d.xaxis.get_major_formatter().set_scientific(True)
        ax3d.xaxis.get_major_formatter().set_powerlimits((-3, 3))
        ax3d.set_ylabel('Error')
        ax3d.yaxis.get_major_formatter().set_scientific(True)
        ax3d.yaxis.get_major_formatter().set_powerlimits((-3, 4))
        ax3d.set_zlabel('Latency')

    def _add_legend(self):
        legends = []
        proxies = []
        for color, marker, legend in self.legends:
            proxy = matplotlib.lines.Line2D(
                [0], [0], linestyle="none", color=color, marker=marker)
            proxies.append(proxy)
            legends.append(legend)
        self.ax3d.legend(proxies, legends, numpoints=1)

    def finalize(self):
        if self.is_finalized:
            return
        self.is_finalized = True

        logger.debug('Finalizing plot...')