Exemple #1
0
class TestSubMenu(unittest.TestCase):
    def setUp(self):
        self.page = Page('test page')
        self.sub_menu = SubMenu('test submenu')

    def tearDown(self):
        self.page = Page('test page')
        self.sub_menu = SubMenu('test submenu')

    def test_add(self):
        self.sub_menu.add_page(self.page)
        self.assertIn(self.page, self.sub_menu)

    def test_add_non_page(self):
        with self.assertRaises(ValueError):
            self.sub_menu.add_page("oops")

    def test_location_empty(self):
        if len(self.sub_menu) == 0:
            self.assertFalse(self.sub_menu.location)

    def test_location(self):
        self.sub_menu.add_page(self.page)
        if len(self.sub_menu) == 1:
            self.assertEqual(self.sub_menu.location, self.page.location)

    def test_current_page_empty(self):
        if len(self.sub_menu) == 0:
            self.assertFalse(self.sub_menu.current_page)

    def test_current_page_first_elem(self):
        self.page.current_page = True
        self.sub_menu.add_page(self.page)
        self.assertTrue(self.sub_menu.current_page)
To prevent build failing because of backslashes, use a rawstring format by
adding `r` in front of the string.

You can read more about the input format
[here](http://docs.mathjax.org/en/latest/tex.html#).

Example:

`formula = Markdown(r'$$x_{1,2} = \frac{-b \pm \sqrt{b^2-4ac}}{2b}.$$')`

Renders out to this:

$$x_{1,2} = \frac{-b \pm \sqrt{b^2-4ac}}{2b}.$$
""")

ex3.add_content(Markdown(some_content))

submenu1 = SubMenu('Menu 1')
submenu2 = SubMenu('Menu 2')
submenu3 = SubMenu('Menu 3')

submenu1.add_page(ex1)
submenu2.add_page(ex2)
submenu3.add_page(ex3)

web.add(submenu1)
web.add(submenu2)
web.add(submenu3)

web.write_html("./webviz_example", overwrite=True, display=False)
Exemple #3
0
def add_webviz_tornadoplots(web, configfile):
    """
    Generating a set of TornadoPlots for webviz on webviz Pages

    Args:
        web: webportal where submenu should be added
        configfile(str): yaml configuration file for tornado calculations

    Returns:
        object: Set of webviz.Pages with tornado plots

    Example:
        >>> from fmu.tools.sensitivities import add_webviz_tornadoplots
        >>> from webviz import Webviz
        >>> html_foldername = './webportal_example'
        >>> title = 'Snorreberg'
        >>> web = Webviz(title)
        >>> configfile ='../input/config/config_filename.yaml'
        >>> add_webviz_tornadoplots(web, configfile)
        >>> web.write_html(html_foldername, overwrite=True, display=True)

    """
    if not HAS_WEBVIZ_STATIC:
        print("ERROR: Cannot make Tornado plots without Webviz static")
        return None
    print(WEBVIZ_STATIC_DEPRECIATION_WARNING)

    yamlfile = configfile

    # input
    inputfile = yconfig(yamlfile)
    config = yconfig_set_defaults(inputfile)

    # assign parameters from config
    designpath = config["design"]["designpath"]
    designname = config["design"]["designname"]
    designsheet = config["design"]["designsheet"]

    response = config["calculations"]["responses"]

    selections = OrderedDict(config["calculations"]["selections"])
    selectors = selections.keys()

    reference = str(config["tornadooptions"]["reference"])
    scale = config["tornadooptions"]["scale"]
    cutbyref = config["tornadooptions"]["cutbyref"]
    menuprefix = config["calculations"]["menuprefix"]

    # Option: results from single realisation csv files needs gathering first
    if config["results"]["gatherresults"]:
        results = gatherresults(config)

    # Default: concatenated result file already exists as csv
    if not config["results"]["gatherresults"]:
        resultpath = config["results"]["resultpath"]
        resultname = config["results"]["resultname"]
        resultfile = os.path.join(resultpath, resultname)
        results = pd.read_csv(resultfile)

    # Option: renaming of columns in resultfile, e.g. from CSV_EXPORT1
    if config["results"]["renamecolumns"]:
        results.rename(columns=config["results"]["renaming"], inplace=True)

    # Read design matrix and find realisation numbers for each sensitivity
    designname = os.path.join(designpath, designname)
    designtable = summarize_design(designname, designsheet)
    print("Summary of design matrix:")
    with pd.option_context("expand_frame_repr", False):
        print(designtable)

    # Find all combinations of selections to generate plots for
    comb = find_combinations(selections)

    # Grouping calculation of tornado plots per response.
    # One list of plots under each response
    for res in response:
        smn = SubMenu(menuprefix + " " + res)
        for cmb in comb:
            pagetitle = res
            for ksel in range(len(selections)):
                pagetitle += " ,  " + str(selections.keys()[ksel])
                pagetitle += "  =  " + str(cmb[ksel]).strip("[]")
            pge = Page(pagetitle)
            (tornadotable, ref_value) = calc_tornadoinput(
                designtable, results, res, selectors, cmb, reference, scale, cutbyref
            )
            print("For response and selections: ")
            print(pagetitle)
            print("reference average: ", ref_value)
            print(
                "Calculation settings: ",
                scale,
                ", Cut by reference: ",
                cutbyref,
                ",  Reference: ",
                reference,
            )
            with pd.option_context("expand_frame_repr", False):
                print(tornadotable)
            print("\n")
            # While waiting for webviz issues 84 and 85 to be solved
            # xlabel = make_xlabel(ref_value, scale, reference)
            # tornado_plot = \
            # tornado_plot = TornadoPlot(tornadotable, xlabel, pagetitle)
            tornado_plot = TornadoPlot(tornadotable)
            pge.add_content(tornado_plot)
            smn.add_page(pge)

        web.add(smn)
Exemple #4
0
class TestWebviz(unittest.TestCase):
    def setUp(self):
        self.page = Page('test page')
        self.submenu = SubMenu('test page')
        self.webviz = Webviz('test portal', theme='minimal')

    def test_non_theme(self):
        with self.assertRaises(ValueError):
            Webviz(title='bomb', theme=3.14)

    @patch('webviz._webviz.webbrowser')
    def test_display(self, webbrowser_mock):
        folder = tempfile.mkdtemp()
        self.webviz.write_html(folder, True, True)
        shutil.rmtree(folder)
        webbrowser_mock.open_new_tab.assert_called_once()

    def test_add_non_page(self):
        with self.assertRaises(ValueError):
            self.webviz.add('not a page or SubMenu')

    def test_add_page(self):
        self.webviz.add(self.page)
        self.assertIn(self.page, self.webviz.menu)

    def test_add_submenu(self):
        self.submenu.add_page(self.page)
        self.webviz.add(self.submenu)
        self.assertIn(self.submenu, self.webviz.menu)
        self.assertIn(self.page, self.webviz.pages)

    def test_render(self):
        self.submenu.add_page(self.page)
        self.webviz.add(self.submenu)

        folder = tempfile.mkdtemp()
        self.webviz.write_html(folder, overwrite=True)
        shutil.rmtree(folder)

    def test_overwrite(self):
        self.submenu.add_page(self.page)
        self.webviz.add(self.submenu)

        folder = tempfile.mkdtemp()
        self.webviz.write_html(folder, overwrite=True)

        with self.assertRaises(ValueError):
            self.webviz.write_html(folder, overwrite=False)

        self.webviz.write_html(folder, overwrite=True)

        shutil.rmtree(folder)

    def test_write_banner(self):
        self.submenu.add_page(self.page)
        (_, testbanner) = tempfile.mkstemp(suffix='.jpg')
        self.webviz = Webviz('test portal',
                             banner_image=testbanner,
                             theme='minimal')
        self.webviz.add(self.submenu)

        folder = tempfile.mkdtemp()
        self.webviz.write_html(folder, overwrite=True)

        absolute_banner_filename = os.path.join(folder,
                                                self.webviz.banner_filename)
        self.assertTrue(os.path.isfile(absolute_banner_filename))

        shutil.rmtree(folder)
Exemple #5
0
 def setUp(self):
     self.page = Page('test page')
     self.submenu = SubMenu('test page')
     self.webviz = Webviz('test portal', theme='minimal')
Exemple #6
0
from webviz import Webviz, Page, SubMenu

web = Webviz('Title', theme='default')

page = Page('Page')
menu = SubMenu('Menu')

menu.add_page(page)

web.add(menu)

web.write_html("./webviz_example", overwrite=True, display=False)
Exemple #7
0
 def setUp(self):
     self.page = Page('test page')
     self.sub_menu = SubMenu('test submenu')
Exemple #8
0
 def tearDown(self):
     self.page = Page('test page')
     self.sub_menu = SubMenu('test submenu')