Exemplo n.º 1
0
    def trigger_param(event):
        """Trigger a parameter"""
        pipeline = state.get_user_state().get(app, {}).get("pipeline")
        if not pipeline:
            raise ValueError("No pipeline is available")

        pipeline.param.trigger(trigger)
    def __init__(self, report_from_set_up, initial_values):
        """Set initial values based on previous stage"""

        # Add elements as parameters
        for label, element in ELEMENT_OPTIONS.items():
            self.param._add_parameter(
                element, param.Integer(0, label=label, bounds=(0, 100)))
            self.param._add_parameter(
                f"{element}_quality",
                param.Selector(QUALITY_OPTIONS, label=f"{label} Quality"),
            )
        super().__init__()

        # Initialize parameter values
        self.report_from_set_up = report_from_set_up
        self.model_result = None
        self._state = state.get_user_state().setdefault(APP, {})
        self.element_widgets = self.layout_element_widgets()
        self.visible_elements = {}

        self._initialize_qualities(
            reservoir_quality={
                ELEMENT_OPTIONS[k]: initial_values["reservoir_quality"]
                for k in initial_values["composition"]
            },
            default=initial_values["reservoir_quality"],
        )
        self._initialize_composition(
            composition={
                ELEMENT_OPTIONS[k]: v
                for k, v in initial_values["composition"].items()
            })
Exemplo n.º 3
0
    def __init__(self, initial_filter_classes, report_from_composition,
                 net_gross):
        """Set initial values based on previous stage"""

        # Add filter classes as parameters
        for bblock, filter_classes in FILTER_CLASS_PARAMS.items():
            for fclass, values in filter_classes.values():
                for label, param_name in values.items():
                    if label.startswith("Ignore "):
                        self.param._add_parameter(
                            param_name, param.Boolean(False, label=label))
                    else:
                        value = initial_filter_classes[bblock][fclass].get(
                            label, 0)
                        self.param._add_parameter(
                            param_name,
                            param.Integer(value, label=label, bounds=(0, 100)),
                        )
        super().__init__()

        # Set up other parameters
        self.model_result = None
        self._state = state.get_user_state().setdefault(APP, {})
        self.report_from_composition = report_from_composition
        self.estimate_net_gross()
 def __init__(self, scenario_names, *args, **kwargs):
     """Initialize values of stage"""
     super().__init__()
     self._report_cfg = config.app.report[CFG.report]
     self._state = state.get_user_state().setdefault(APP, {})
     self.scenario_names = scenario_names
     self.scenario_selector = pn.widgets.CrossSelector(
         name="Choose scenarios",
         value=self.scenario_names,
         options=self.scenario_names,
         definition_order=False,
     )
     self.scenarios = self._state["scenarios"].copy()
def view():
    """Add stages defined in config to a workflow pipeline"""
    stages_cfg = config.app.stages[APP]
    pipeline = pn.pipeline.Pipeline(debug=logger.is_dev)
    state.get_user_state().setdefault(APP, {})["pipeline"] = pipeline
    for stage in CFG.stages:
        pipeline.add_stage(
            stages_cfg[stage].label,
            stages.get_stage(APP, stage),
            **stages.get_params(APP, stage),
        )

    # Use pipeline.layout to render the default layout or use pipeline.title,
    # .buttons, .network, .stage etc to create a custom layout
    return [pn.layout.Spacer(height=30), pipeline.error, pipeline.stage]
Exemplo n.º 6
0
    def __init__(self, report_from_set_up, initial_values):
        """Set initial values based on previous stage"""

        # Add elements as parameters
        for label, element in ELEMENT_OPTIONS.items():
            self.param._add_parameter(
                element, param.Integer(0, label=label, bounds=(0, 100)))
        super().__init__()

        self.report_from_set_up = report_from_set_up
        self._state = state.get_user_state().setdefault(APP, {})
        self._initial_filter_classes = initial_values["filter_classes"]
        for building_block_type, value in initial_values["composition"].items(
        ):
            setattr(self, building_block_type.replace(" ", "_").lower(), value)
def _update_view_factory(header_canvas,
                         view_canvas,
                         sidebar_menu,
                         app,
                         view,
                         button=None):
    """Create a callback that can update the canvas"""
    if button is not None:
        (state.get_user_state().setdefault(app,
                                           {}).setdefault("update_view",
                                                          {})[view]) = button

    def update_view(event):
        """Update canvas to show the given app/view"""
        header_canvas.object = f"#### {CFG[app].label}"
        sidebar_menu.active = [sidebar_menu._names.index(CFG[app].label)]
        view_canvas[:] = get_view(app=app, view=view)

    return update_view
Exemplo n.º 8
0
    def __init__(self, report_from_composition, net_gross):
        """Set initial values based on previous stage"""
        super().__init__()
        self._state = state.get_user_state().setdefault(APP, {})
        self._state.setdefault("scenarios", {})
        self._current_scenario_name = None
        self.net_gross = net_gross
        self.report_from_composition = report_from_composition
        self.scenario_name = f"Scenario {len(self._state['scenarios']) + 1}"
        self.data = charts.data_as_dataframe(report_from_composition, CFG.columns)

        try:
            session_id = pn.state.curdoc.session_context.id
            logger.insights(f"New result: {self.net_gross}, SessionID: {session_id}")
            logger.insights(
                f"SessionID: {session_id}, Choices: {report_from_composition}"
            )
        except AttributeError as e:
            logger.error(f"SessionID not available: {e}")
            logger.insights(f"New result: {self.net_gross}")
            logger.insights(f"Choices: {report_from_composition}")