コード例 #1
0
    def test_copy_plot_limits(self):
        plot_limits = PlotLimits()
        plot_limits.value_limits = 1, 2
        plot_limits.index_limits = 3, 4
        plot_limits.count_limits = 5, 6
        plot_limits.depth_limits = 7, 8
        plot_limits.density_limits = 9, 10
        plot_limits.date_limits = datetime.date(1999, 1, 1), datetime.date(
            1999, 12, 31)

        copy_of_plot_limits = PlotLimits()

        copy_of_plot_limits.copyLimitsFrom(plot_limits)

        self.assertEqual(copy_of_plot_limits, plot_limits)

        self.assertEqual(copy_of_plot_limits.value_limits, (1, 2))
        self.assertEqual(copy_of_plot_limits.index_limits, (3, 4))
        self.assertEqual(copy_of_plot_limits.count_limits, (5, 6))
        self.assertEqual(copy_of_plot_limits.depth_limits, (7, 8))
        self.assertEqual(copy_of_plot_limits.density_limits, (9, 10))
        self.assertEqual(
            copy_of_plot_limits.date_limits,
            (datetime.date(1999, 1, 1), datetime.date(1999, 12, 31)),
        )
コード例 #2
0
    def test_plot_limits_construction(self):
        plot_limits = PlotLimits()
        self.assertEqual(plot_limits.value_minimum, None)
        self.assertEqual(plot_limits.value_maximum, None)
        self.assertEqual(plot_limits.value_limits, (None, None))

        self.assertEqual(plot_limits.index_minimum, None)
        self.assertEqual(plot_limits.index_maximum, None)
        self.assertEqual(plot_limits.index_limits, (None, None))

        self.assertEqual(plot_limits.count_minimum, None)
        self.assertEqual(plot_limits.count_maximum, None)
        self.assertEqual(plot_limits.count_limits, (None, None))

        self.assertEqual(plot_limits.density_minimum, None)
        self.assertEqual(plot_limits.density_maximum, None)
        self.assertEqual(plot_limits.density_limits, (None, None))

        self.assertEqual(plot_limits.depth_minimum, None)
        self.assertEqual(plot_limits.depth_maximum, None)
        self.assertEqual(plot_limits.depth_limits, (None, None))

        self.assertEqual(plot_limits.date_minimum, None)
        self.assertEqual(plot_limits.date_maximum, None)
        self.assertEqual(plot_limits.date_limits, (None, None))
コード例 #3
0
ファイル: plot_config.py プロジェクト: stefoss23/ert-1
    def __init__(self, plot_settings, title="Unnamed", x_label=None, y_label=None):
        self._title = title
        self._plot_settings = plot_settings
        if self._plot_settings is None:
            raise ValueError('PlotConfig needs a non-None plot settings.')
        self._line_color_cycle_colors = ["#000000"]
        self._line_color_cycle = itertools.cycle(self._line_color_cycle_colors) #Black
        # Blueish, Greenlike, Beigeoid, Pinkness, Orangy-Brown
        self.setLineColorCycle(["#386CB0", "#7FC97F", "#FDC086", "#F0027F", "#BF5B17"])
        # alternative color cycle:
        # ["#e41a1c", "#377eb8", "#4daf4a", "#984ea3", "#ff7f00", "#ffff33",
        #  "#a65628", "#f781bf" ,"#386CB0", "#7FC97F", "#FDC086", "#F0027F", "#BF5B17"]

        self._legend_items = []
        self._legend_labels = []

        self._x_label = x_label
        self._y_label = y_label

        self._limits = PlotLimits()

        self._default_style = PlotStyle(name="Default", color=None, alpha=0.8)

        self._refcase_style = PlotStyle(name="Refcase", alpha=0.8, line_style="--", marker="", width=2.0,
                                        enabled=self._plot_settings["SHOW_REFCASE"])

        self._history_style = PlotStyle(name="History", alpha=0.8, marker=".", width=2.0,
                                        enabled=self._plot_settings["SHOW_HISTORY"])

        self._observs_style = PlotStyle(name="Observations", line_style="-", alpha=0.8,
                                        marker=".", width=1.0, color="#000000")

        self._histogram_style = PlotStyle(name="Histogram", width=2.0)
        self._distribution_style = PlotStyle(name="Distribution", line_style="", marker="o", alpha=0.5, size=10.0)
        self._distribution_line_style = PlotStyle(name="Distribution Lines", line_style="-", alpha=0.25, width=1.0)
        self._distribution_line_style.setEnabled(False)
        self._current_color = None

        self._legend_enabled = True
        self._grid_enabled = True


        self._statistics_style = {
            "mean": PlotStyle("Mean", line_style=""),
            "p50": PlotStyle("P50", line_style=""),
            "min-max": PlotStyle("Min/Max", line_style=""),
            "p10-p90": PlotStyle("P10-P90", line_style=""),
            "p33-p67": PlotStyle("P33-P67", line_style=""),
            "std": PlotStyle("Std dev", line_style="")
        }

        self._std_dev_factor = 1 # sigma 1 is default std dev
コード例 #4
0
ファイル: test_plot_style.py プロジェクト: stefoss23/ert
    def test_plot_config(self):
        ps = PlotSettings()
        plot_config = PlotConfig(ps, "Golden Sample", x_label="x", y_label="y")

        limits = PlotLimits()
        limits.count_limits = 1, 2
        limits.depth_limits = 3, 4
        limits.density_limits = 5, 6
        limits.date_limits = datetime.date(2005, 2,
                                           5), datetime.date(2006, 2, 6)
        limits.index_limits = 7, 8
        limits.value_limits = 9.0, 10.0

        plot_config.limits = limits
        self.assertEqual(plot_config.limits, limits)

        plot_config.setDistributionLineEnabled(True)
        plot_config.setLegendEnabled(False)
        plot_config.setGridEnabled(False)
        plot_config.setRefcaseEnabled(False)
        plot_config.setObservationsEnabled(False)

        style = PlotStyle("test_style",
                          line_style=".",
                          marker="g",
                          width=2.5,
                          size=7.5)

        plot_config.setDefaultStyle(style)
        plot_config.setRefcaseStyle(style)
        plot_config.setStatisticsStyle("mean", style)
        plot_config.setStatisticsStyle("min-max", style)
        plot_config.setStatisticsStyle("p50", style)
        plot_config.setStatisticsStyle("p10-p90", style)
        plot_config.setStatisticsStyle("p33-p67", style)
        plot_config.setStatisticsStyle("std", style)

        copy_of_plot_config = PlotConfig(ps, "Copy of Golden Sample")
        copy_of_plot_config.copyConfigFrom(plot_config)

        self.assertEqual(plot_config.isLegendEnabled(),
                         copy_of_plot_config.isLegendEnabled())
        self.assertEqual(plot_config.isGridEnabled(),
                         copy_of_plot_config.isGridEnabled())
        self.assertEqual(plot_config.isObservationsEnabled(),
                         copy_of_plot_config.isObservationsEnabled())
        self.assertEqual(plot_config.isDistributionLineEnabled(),
                         copy_of_plot_config.isDistributionLineEnabled())

        self.assertEqual(plot_config.refcaseStyle(),
                         copy_of_plot_config.refcaseStyle())
        self.assertEqual(plot_config.observationsStyle(),
                         copy_of_plot_config.observationsStyle())

        self.assertEqual(plot_config.histogramStyle(),
                         copy_of_plot_config.histogramStyle())
        self.assertEqual(plot_config.defaultStyle(),
                         copy_of_plot_config.defaultStyle())
        self.assertEqual(plot_config.currentColor(),
                         copy_of_plot_config.currentColor())

        self.assertEqual(plot_config.getStatisticsStyle("mean"),
                         copy_of_plot_config.getStatisticsStyle("mean"))
        self.assertEqual(plot_config.getStatisticsStyle("min-max"),
                         copy_of_plot_config.getStatisticsStyle("min-max"))
        self.assertEqual(plot_config.getStatisticsStyle("p50"),
                         copy_of_plot_config.getStatisticsStyle("p50"))
        self.assertEqual(plot_config.getStatisticsStyle("p10-p90"),
                         copy_of_plot_config.getStatisticsStyle("p10-p90"))
        self.assertEqual(plot_config.getStatisticsStyle("p33-p67"),
                         copy_of_plot_config.getStatisticsStyle("p33-p67"))
        self.assertEqual(plot_config.getStatisticsStyle("std"),
                         copy_of_plot_config.getStatisticsStyle("std"))

        self.assertEqual(plot_config.title(), copy_of_plot_config.title())

        self.assertEqual(plot_config.limits, copy_of_plot_config.limits)

        plot_config.currentColor()  # cycle state will not be copied
        plot_config.nextColor()

        copy_of_plot_config = PlotConfig(ps, "Another Copy of Golden Sample")
        copy_of_plot_config.copyConfigFrom(plot_config)

        self.assertEqual(plot_config.refcaseStyle(),
                         copy_of_plot_config.refcaseStyle())
        self.assertEqual(plot_config.observationsStyle(),
                         copy_of_plot_config.observationsStyle())

        self.assertNotEqual(plot_config.histogramStyle(),
                            copy_of_plot_config.histogramStyle())
        self.assertNotEqual(plot_config.defaultStyle(),
                            copy_of_plot_config.defaultStyle())
        self.assertNotEqual(plot_config.currentColor(),
                            copy_of_plot_config.currentColor())

        self.assertNotEqual(plot_config.getStatisticsStyle("mean"),
                            copy_of_plot_config.getStatisticsStyle("mean"))
        self.assertNotEqual(plot_config.getStatisticsStyle("min-max"),
                            copy_of_plot_config.getStatisticsStyle("min-max"))
        self.assertNotEqual(plot_config.getStatisticsStyle("p50"),
                            copy_of_plot_config.getStatisticsStyle("p50"))
        self.assertNotEqual(plot_config.getStatisticsStyle("p10-p90"),
                            copy_of_plot_config.getStatisticsStyle("p10-p90"))
        self.assertNotEqual(plot_config.getStatisticsStyle("p33-p67"),
                            copy_of_plot_config.getStatisticsStyle("p33-p67"))
        self.assertNotEqual(plot_config.getStatisticsStyle("std"),
                            copy_of_plot_config.getStatisticsStyle("std"))
コード例 #5
0
 def limits(self):
     """@rtype: PlotLimits"""
     limits = PlotLimits()
     limits.copyLimitsFrom(self._limits)
     return limits
コード例 #6
0
    def test_plot_limits(self):
        plot_limits = PlotLimits()
        limit_names = ["value", "index", "count", "density", "depth", "date"]

        non_numbers = [
            "string",
            datetime.date(2001, 1, 1), "3.0", "1e-5", "-5.5", "-.5"
        ]

        positive_floats = [1.0, 1.5, 3.1415, 1e10, 5.2e-7]
        negative_floats = [-1.0, -1.5, -3.1415, -1e10, -5.2e-7]
        positive_ints = [1, 5, 1000]
        negative_ints = [-1, -5, -1000]

        non_dates = ["string", "3.4", "2001-01-01", datetime.time()]
        dates = [datetime.date(2001, 1, 1), datetime.datetime(2010, 3, 3)]

        setter_should_fail_values = {
            "value": non_numbers + dates,
            "index": non_numbers + positive_floats + negative_floats + dates,
            "depth":
            non_numbers + negative_floats + negative_ints + negative_ints,
            "count":
            non_numbers + negative_ints + negative_floats + positive_floats,
            "density": non_numbers + negative_floats + negative_ints,
            "date": non_dates
        }

        setter_should_succeed_values = {
            "value":
            positive_floats + negative_floats + positive_ints + negative_ints,
            "index": positive_ints,
            "depth": positive_floats + positive_ints,
            "count": positive_ints,
            "density": positive_floats + positive_ints,
            "date": dates
        }

        for attribute_name in limit_names:
            self.assertIsNone(
                getattr(plot_limits, "%s_minimum" % attribute_name))
            self.assertIsNone(
                getattr(plot_limits, "%s_maximum" % attribute_name))
            self.assertTupleEqual(
                getattr(plot_limits, "%s_limits" % attribute_name),
                (None, None))

            with self.assertNotRaises():
                setattr(plot_limits, "%s_minimum" % attribute_name, None)
                setattr(plot_limits, "%s_maximum" % attribute_name, None)
                setattr(plot_limits, "%s_limits" % attribute_name,
                        (None, None))

            with self.assertRaises(TypeError):
                setattr(plot_limits, "%s_limits" % attribute_name, None)

            for value in setter_should_fail_values[attribute_name]:
                with self.assertRaises((TypeError, ValueError)):
                    setattr(plot_limits, "%s_minimum" % attribute_name, value)

                with self.assertRaises((TypeError, ValueError)):
                    setattr(plot_limits, "%s_maximum" % attribute_name, value)

                self.assertTupleEqual(
                    getattr(plot_limits, "%s_limits" % attribute_name),
                    (None, None))

            for value in setter_should_succeed_values[attribute_name]:
                with self.assertNotRaises():
                    setattr(plot_limits, "%s_minimum" % attribute_name, value)
                    setattr(plot_limits, "%s_maximum" % attribute_name, value)

                minimum = getattr(plot_limits, "%s_minimum" % attribute_name)
                maximum = getattr(plot_limits, "%s_maximum" % attribute_name)

                self.assertEqual(minimum, value)
                self.assertEqual(maximum, value)

                self.assertTupleEqual(
                    getattr(plot_limits, "%s_limits" % attribute_name),
                    (minimum, maximum))
コード例 #7
0
    def __init__(self, title="Unnamed", x_label=None, y_label=None):
        super(PlotConfig, self).__init__()
        self._title = title

        self._line_color_cycle_colors = ["#000000"]
        self._line_color_cycle = itertools.cycle(
            self._line_color_cycle_colors)  #Black
        # Blueish, Greenlike, Beigeoid, Pinkness, Orangy-Brown
        self.setLineColorCycle(
            ["#386CB0", "#7FC97F", "#FDC086", "#F0027F", "#BF5B17"])

        self._legend_items = []
        self._legend_labels = []

        self._x_label = x_label
        self._y_label = y_label

        self._limits = PlotLimits()

        self._default_style = PlotStyle(name="Default", color=None, alpha=0.8)
        self._refcase_style = PlotStyle(name="Refcase",
                                        alpha=0.8,
                                        marker="x",
                                        width=2.0)
        self._history_style = PlotStyle(name="History",
                                        alpha=0.8,
                                        marker="D",
                                        width=2.0)

        # Insanely ugly implementation of user preferences.
        if os.getenv("ERT_SHOW_HISTORY_VECTORS"):
            self._history_style.setEnabled(True)
        else:
            self._history_style.setEnabled(False)

        self._observation_style = PlotStyle(name="Observations")
        self._histogram_style = PlotStyle(name="Histogram", width=2.0)
        self._distribution_style = PlotStyle(name="Distribution",
                                             line_style="",
                                             marker="o",
                                             alpha=0.5,
                                             size=10.0)
        self._distribution_line_style = PlotStyle(name="Distribution Lines",
                                                  line_style="-",
                                                  alpha=0.25,
                                                  width=1.0)
        self._distribution_line_style.setEnabled(False)
        self._current_color = None

        self._legend_enabled = True
        self._grid_enabled = True

        self._statistics_style = {
            "mean": PlotStyle("Mean", line_style=""),
            "p50": PlotStyle("P50", line_style=""),
            "min-max": PlotStyle("Min/Max", line_style=""),
            "p10-p90": PlotStyle("P10-P90", line_style=""),
            "p33-p67": PlotStyle("P33-P67", line_style=""),
            "std": PlotStyle("Std dev", line_style="")
        }

        self._std_dev_factor = 1  # sigma 1 is default std dev