Exemple #1
0
 def get_html(self, d=None, tooltip=None):
     if not self.output_fns:
         return
     if d is not None and self.output_fns:
         d["figure"] = self.output_fns
         d["tooltip"] = tooltip
     return figure_to_html(self.output_fns)
Exemple #2
0
 def get_html(self, d=None, tooltip=None):
     if d is not None:
         d["tooltip"] = tooltip
         for plot_tuple in self.name_plots:
             key = "%s" % (plot_tuple[0])
             d[key] = {"figure": plot_tuple[1]}
     return figure_to_html(self.get_plots(), max_in_a_row=3, true_break_between_rows=True)
Exemple #3
0
 def get_jupyter(self):
     from IPython.core.display import HTML, display
     display(
         HTML(
             figure_to_html(self.get_plots(),
                            max_in_a_row=3,
                            true_break_between_rows=True)))
Exemple #4
0
 def get_html(self, d=None, tooltip=None):
     if d is not None:
         d["tooltip"] = tooltip
         d["Table"] = {"table": self.get_table().to_html()}
         for p in self.plots:
             name = os.path.splitext(os.path.basename(p))[0]
             d[name] = {"figure": p}
     return self.get_table().to_html() + figure_to_html(self.get_plots())
Exemple #5
0
 def get_jupyter(self):
     from IPython.core.display import HTML, display
     display(
         HTML(
             figure_to_html(self.get_plots(),
                            max_in_a_row=3,
                            true_break_between_rows=True)))
     if self.runscontainer.analyzing_options[
             'Parameter Importance'].getboolean('whisker_quantiles_plot'):
         output_notebook()
         show(self.plot_whiskers())
Exemple #6
0
 def get_jupyter(self):
     from IPython.core.display import HTML, display
     # Show table
     display(HTML(self.get_table()))
     # Show plots
     display(
         HTML(
             figure_to_html(list(self.single_plots.values()) +
                            list(self.pairwise_plots.values()),
                            max_in_a_row=3,
                            true_break_between_rows=True)))
Exemple #7
0
    def add_layer(self,
                  layer_name,
                  data_dict: OrderedDict,
                  is_tab: bool = False):
        '''
        add a further layer of top data_dict keys

        Parameters
        ----------
        layer_name: str
            name of the layer
        data_dict : OrderedDict
            see constructor
        is_tab: bool
            if True, don't use accordion but tab-structure to wrap content

        Returns
        -------
        (script, div): (str, str)
            script goes into header, div goes into body
        '''
        script, div = "", ""

        if layer_name is None:
            layer_name = ""
        unique_layer_name = layer_name + self.get_unique_id()

        # Add tooltip, if possible
        tooltip = data_dict.get("tooltip", None)
        if tooltip is not None:
            tooltip = "<div class=\"help-tip\"><p>{}</p></div>".format(tooltip)
        # TODO elif is obsolete / can be merged into first option (simplify!)
        elif get_tooltip(
                layer_name):  # if no tooltip is parsed, try to look it up
            tooltip = "<div class=\"help-tip\"><p>{}</p></div>".format(
                get_tooltip(layer_name))
        else:
            tooltip = ""

        # Start accordion-panel
        if not is_tab:
            div += "<div class=\"accordion\">{0} {1}</div>\n".format(
                layer_name, tooltip)
            div += "<div class=\"panel\">\n"

        # If this layer represents budgets, add tabs for this layer, add tabs-code
        sublayer_names = [
            k for k, v in data_dict.items() if isinstance(v, dict)
        ]
        use_tabs = False
        if len(sublayer_names) >= 1 and all(
            [sn.lower().startswith('budget') for sn in sublayer_names]):
            use_tabs = True

        if use_tabs:
            div += "<div class=\"tab\">\n"
            tabs_names = [
                k.replace('_', ' ') for k, v in data_dict.items()
                if isinstance(v, dict)
            ]

            default_open_id = "defaultOpen" + self.get_unique_id()
            div += "  <button class=\"tablinks\" onclick=\"openTab(event, '{0}', '{1}')\" "\
                   "id=\"{2}\">{1}</button>\n".format(unique_layer_name, tabs_names[0], default_open_id)
            for name in tabs_names[1:]:
                div += "  <button class=\"tablinks\" onclick=\"openTab(event, '{0}', '{1}')\">{1}</button>\n".format(
                    unique_layer_name, name)
            div += "</div>\n"

        for k, v in data_dict.items():
            if k == "tooltip":
                continue
            if k.startswith('budget'):
                self.budget = k[7:]
            if not v:
                if isinstance(v, dict):
                    continue
                else:
                    return '', ''
            elif isinstance(v, dict):
                if use_tabs:
                    div += "<div id=\"{0}\" class=\"tabcontent\">\n".format(
                        unique_layer_name + k.replace('_', ' '))
                    div += "<div class=\"pane\">\n"
                add_script, add_div = self.add_layer(k, v, is_tab=use_tabs)
                script += add_script
                div += add_div
                if use_tabs:  # close div
                    div += "</div>\n"
                    div += "</div>\n"
            elif k == "figure":
                div += figure_to_html(v, prefix=self.output_dn)
            elif k == "figure_x2":
                div += figure_to_html(v, prefix=self.output_dn, max_in_a_row=2)
            elif k == "table":
                div += "<div style=\"overflow-x: auto\" align=\"center\">\n{}\n</div>\n".format(
                    v)
            elif k == "html":
                div += ("<div align=\"center\">\n<a href='{}'>Interactive "
                        "Plot</a>\n</div>\n".format(
                            v[len(self.output_dn):].lstrip("/")))
            elif k == "bokeh":
                # Escape path for URL (remove spaces, slashes and single quotes)
                path_script = os.path.join(
                    self.relative_content_js, '_'.join([
                        layer_name, self.budget,
                        self.get_unique_id(), 'script.js'
                    ]))
                path_script = path_script.translate(
                    {ord(c): None
                     for c in ' \''})

                # Write script to file
                if self.output_dn:
                    with open(os.path.join(self.output_dn, path_script),
                              'w') as fn:
                        js_code = re.sub('<.*?>', '',
                                         v[0].strip())  # Remove script-tags
                        fn.write(js_code)
                    script += "<script src=\"" + path_script + "\"></script>\n"
                else:
                    script += v[0]
                div += "<div align=\"center\">\n{}\n</div>\n".format(v[1])
            else:
                try:
                    div += v
                except Exception as err:
                    self.logger.warning(
                        "Failed on interpreting: %s, %s, %s (Error: %s)",
                        str(layer_name),
                        str(k),
                        str(v),
                        err,
                        exc_info=1)

        if use_tabs:  # close tab with selecting first element by default
            div += "<script> \n"
            div += "// Get the element with id=\"{}\" and click on it \n".format(
                default_open_id)
            div += "document.getElementById(\"{}\").click(); \n".format(
                default_open_id)
            div += "</script> \n"

        if not is_tab:
            div += "</div>"
        return script, div
Exemple #8
0
 def get_html(self, d=None, tooltip=None):
     if d is not None:
         d["figure"] = self.cluster_plot
         d["tooltip"] = tooltip
     return figure_to_html(self.get_plots())
Exemple #9
0
 def get_jupyter(self):
     from IPython.core.display import HTML, display
     display(HTML(figure_to_html(self.plots)))
Exemple #10
0
 def get_html(self, d=None, tooltip=None):
     if d is not None:
         d["figure"] = self.plots
         d["tooltip"] = tooltip
     return figure_to_html(self.plots)
Exemple #11
0
 def get_html(self, d=None, tooltip=None):
     if d is not None:
         d["tooltip"] = tooltip
         for param, plot in self.plots.items():
             d[param] = {"figure": plot}
     return figure_to_html(self.get_plots())