コード例 #1
0
    def test_create_with_defaults(self):
        "test creating with default values"

        footer = widgets.Button()
        header = widgets.Button()
        center = widgets.Button()
        left_sidebar = widgets.Button()
        right_sidebar = widgets.Button()

        box = widgets.AppLayout(footer=footer,
                                header=header,
                                center=center,
                                left_sidebar=left_sidebar,
                                right_sidebar=right_sidebar)

        assert box.layout.grid_template_areas == (
            '"header header header"\n' +
            '"left-sidebar center right-sidebar"\n' + '"footer footer footer"')
        assert box.footer.layout.grid_area == 'footer'
        assert box.header.layout.grid_area == 'header'
        assert box.center.layout.grid_area == 'center'
        assert box.left_sidebar.layout.grid_area == 'left-sidebar'
        assert box.right_sidebar.layout.grid_area == 'right-sidebar'

        assert len(box.get_state()['children']) == 5

        # empty layout should produce no effects

        box = widgets.AppLayout()
        assert box.layout.grid_template_areas is None
        assert box.layout.grid_template_columns is None
        assert box.layout.grid_template_rows is None
        assert len(box.get_state()['children']) == 0
コード例 #2
0
ファイル: qframe.py プロジェクト: krzyzanowskik/grizly
 def build_subquery(self, qf, subquery, database):
     self.database = database
     self.subquery = subquery
     try:
         self.qf = qf.read_json(self.store_path, subquery=subquery)
         self.schema.value = self.qf.data["select"]["schema"]
         self.table.value = self.qf.data["select"]["table"]
         self.engine.value = self.qf.data["select"]["engine"]
     except KeyError:
         data = {
             "select": {
                 "fields": {"sample_field": {"type": "dim"}},
                 "schema": "sample_schema",
                 "table": "sample_table",
             }
         }
         self.qf = qf.read_dict(data=data)
     self.output = w.AppLayout(
         left_sidebar=w.VBox([self.schema, self.table, self.engine, self.button]),
         center=None,
         right_sidebar=None,
         pane_widths=[2, 3, 3],
         pane_heights=[1, 5, 1],
     )
     self.button.on_click(self._btn_build_subquery_step_2)
     return self.output
コード例 #3
0
    def test_set_pane_widths_heights(self):

        footer = widgets.Button()
        header = widgets.Button()
        center = widgets.Button()
        left_sidebar = widgets.Button()
        right_sidebar = widgets.Button()

        box = widgets.AppLayout(header=header,
                                footer=footer,
                                left_sidebar=left_sidebar,
                                right_sidebar=left_sidebar,
                                center=center)

        with pytest.raises(traitlets.TraitError):
            box.pane_widths = ['1fx', '1fx', '1fx', '1fx']
        with pytest.raises(traitlets.TraitError):
            box.pane_widths = ['1fx', '1fx']

        with pytest.raises(traitlets.TraitError):
            box.pane_heights = ['1fx', '1fx', '1fx', '1fx']
        with pytest.raises(traitlets.TraitError):
            box.pane_heights = ['1fx', '1fx']

        assert box.layout.grid_template_rows == "1fr 3fr 1fr"
        assert box.layout.grid_template_columns == "1fr 2fr 1fr"

        box.pane_heights = ['3fr', '100px', 20]
        assert box.layout.grid_template_rows == "3fr 100px 20fr"
        assert box.layout.grid_template_columns == "1fr 2fr 1fr"

        box.pane_widths = [3, 3, 1]
        assert box.layout.grid_template_rows == "3fr 100px 20fr"
        assert box.layout.grid_template_columns == "3fr 3fr 1fr"
コード例 #4
0
    def __initApp(self):
        header = widgets.HTML("<h1>Melissa Dashboard</h1><hr/>", layout=widgets.Layout(height='auto'))
        header.style.text_align='center'

        self.app = widgets.AppLayout(header=header,
                                    left_sidebar=None,
                                    center=widgets.VBox([self.__plots, self.__studyInfo]),
                                    right_sidebar=self.__studyStatus,
                                    footer=self.__footerOutput)
コード例 #5
0
    def test_size_to_css(self):

        box = widgets.AppLayout()
        assert box._size_to_css("100px") == '100px'
        assert box._size_to_css("1fr") == '1fr'
        assert box._size_to_css("2.5fr") == '2.5fr'
        assert box._size_to_css('2.5') == '2.5fr'
        assert box._size_to_css('25%') == '25%'

        with pytest.raises(TypeError):
            box._size_to_css('this is not correct size')
コード例 #6
0
def main():
    configure()

    app_layout = widgets.AppLayout(
        header=get_header(),
        left_sidebar=get_sidebar(),
        center=get_center(),
        right_sidebar=widgets.Output(),
        pane_widths=[2, "1400px", 1],
        pane_heights=["75px", 1, "75px"],
    )

    ip.display(app_layout)
コード例 #7
0
ファイル: geostacks.py プロジェクト: geostacks/GeoStacks
    def gen_ui(self, spatial_index=None):
        if self.spatial_index is None:
            self.spatial_index = spatial_index

        self.init_panelleft()
        self.init_map()

        self.marker.observe(self._on_location_changed, 'location')
        self.menuleft.observe(self._on_menuleft_selection_changed,
                              names='value')
        leftside = iwg.VBox([self.ui_title, self.menuleft])
        leftside.layout.align_items = 'center'
        return iwg.AppLayout(left_sidebar=leftside, center=self.mainmap)
コード例 #8
0
ファイル: start.py プロジェクト: krzyzanowskik/grizly
    def __init__(self, store_path):
        self.subquery = ""
        self.database = ""
        self.store_path = store_path
        self.label = w.Label('Build Your Subquery')

        self.btn_subquery = w.Button(description="Create Query")
        self.btn_subquery.on_click(self._btn_create_query)

        self.output = w.AppLayout(left_sidebar=w.VBox([self.btn_subquery]),
                                  center=None,
                                  right_sidebar=None,
                                  pane_widths=[2, 3, 3],
                                  pane_heights=[1, 5, 1])
コード例 #9
0
def interactive_progress_graph(timespan, progress_data_func):
    
    # Para renderizar LaTeX
    # ce.typeset()
    
    # Se obtienen los datos originales
    x_data = timespan
    y_data = progress_data_func(x_data, 22.7, 0)
    
    def update(a):
        
        plt.figure(dpi=150)
        plt.title("Variación de la concentración de producto por unidad de tiempo")
        plt.xlabel("Tiempo (min)")
        plt.ylabel("Producto (uM)")
        
        # Update temp parameters
        MicMent_progress = np.add(np.multiply(x_data, a), 0)

        plt.scatter(x_data, y_data, c="r", label="a: {}".format(500), s=8.0)
        plt.scatter(x_data, MicMent_progress, c="b", label="a modificada: {}".format(a), s=8.0)
        plt.plot(x_data, y_data, c="r", lw=2.0, alpha=0.5)
        plt.plot(x_data, MicMent_progress, c="b", lw=2.0, alpha=0.5)
        plt.legend(bbox_to_anchor=(1.05, 0.5), loc='center left')
        
    a_slider = widgets.FloatSlider(value=22.7, min=0, max=100.0, step=0.5, continuous_update=True, description="a", layout=widgets.Layout(width='auto', height='auto'), style={'description_width': 'initial'})

    output_graph = widgets.interactive_output(update, {'a':a_slider})
    header = widgets.HTML(value="<H1><center>Gráfico Interactivo Curva Progreso - Enzimas</center></H1>", layout=widgets.Layout(width='auto', grid_area='header'))
    footer = widgets.HTML(value="<H1><center>A continuación se realizarán algunas actividades relacionadas con las curvas de progreso y su utilidad en la cinética enzimática</center></H1>", layout=widgets.Layout(width='auto', grid_area='header'))
    equation = widgets.HTMLMath(value="", layout=widgets.Layout(width='auto', grid_area='header'))
    sliders = widgets.VBox([a_slider])

    final_output = widgets.AppLayout(header=header,
            left_sidebar=sliders,
            center=output_graph,
            footer=footer,
            right_sidebar=None,
            align_items='center',
            pane_widths=[3, 3, 1],
            pane_heights=[1, 5, '60px'])
    
    return final_output
コード例 #10
0
ファイル: mcq.py プロジェクト: GiuntaJ/How_people_learn
def display_explanation(answer, explanation, explanation_gif):
    expl = widgets.HTML(
        value='<p style="text-align:justify;font-size:16px;margin-right:5px">'
        + explanation + '</p>',
        placeholder='',
        description='')
    expl.layout.align_content = 'center'
    file = open(explanation_gif, "rb")
    image = file.read()
    gif = widgets.Image(value=image,
                        format=explanation[-3:],
                        layout=widgets.Layout(width='auto', height='auto'))
    gif.layout.width = '100%'
    output = widgets.AppLayout(header=answer,
                               left_sidebar=expl,
                               center=None,
                               right_sidebar=gif,
                               footer=None,
                               width="100%",
                               pane_widths=[2, 0, 3],
                               pane_heights=[1, 5, 0])
    display(output)
コード例 #11
0
ファイル: eztrack.py プロジェクト: whyjz/EZ-FeatureTrack
 def gen_ui(self, spatial_index=None, ft_params=None):
     if self.spatial_index is None:
         self.spatial_index = spatial_index
         
     if ft_params is None:
         self.init_ft_params()
     else:
         self.ft_params = ft_params
     
     self.init_panelleft()
     self.init_panelright()
     self.init_map()
     
     self.marker.observe(self._on_location_changed, 'location')
     self.menuleft.observe(self._on_menuleft_selection_changed, names='value')
     self.datesearch_btn.on_click(self._on_searchbutton_clicked)
     self.runft_btn.on_click(self._on_ftbutton_clicked)
     
     leftside = iwg.VBox([self.ui_title, self.menuleft, self.kernelselection, self.datesearch_btn])
     leftside.layout.align_items = 'center'
     rightside = iwg.VBox([self.menuright, self.bandselection, self.runft_btn])
     rightside.layout.align_items = 'center'
     return iwg.AppLayout(left_sidebar=leftside, center=self.mainmap, right_sidebar=rightside)
コード例 #12
0
def interactive_ph_graph(ph_range, ph_data_func):
    
    # Para renderizar LaTeX
    # ce.typeset()
    
    # Se obtienen los datos originales
    ph_range = ph_range
    x_data = np.power(10, np.multiply(ph_range, -1))
    y_data = ph_data_func(x_data, 5.3, 8.8, 500, 4.3E-3/250)
    
    def update(a, b, c, d, e, f):
        
        plt.figure(dpi=150)
        plt.title("Variación de la velocidad de reaccion frente a cambios en pKa")
        plt.xlabel("pH")
        plt.ylabel("Tasa de Reaccion (uM/min)")
        
        # Update pH parameters
        ka_e1 = 10**-a
        ka_e2 = 10**-b
        ka_ea1 = 10**-c
        ka_ea2 = 10**-d
        substrate_conc = e
        initial_enzyme = f
        
        ph_dependant_km_numerator = np.multiply(np.add(np.add(np.divide(x_data, ka_e1), np.divide(ka_e2, x_data)), 1), 450)
        ph_dependant_km_denominator = np.add(np.add(np.divide(x_data, ka_ea1), np.divide(ka_ea2, x_data)), 1)
        ph_dependant_km = np.divide(ph_dependant_km_numerator, ph_dependant_km_denominator)

        ph_dependant_vmax_numerator = 8606*(initial_enzyme)
        ph_dependant_vmax_denominator = np.add(np.add(np.divide(x_data, ka_ea1), np.divide(ka_ea2, x_data)), 1)
        ph_dependant_vmax = np.divide(ph_dependant_vmax_numerator, ph_dependant_vmax_denominator)

        MicMent_ph = np.multiply(np.divide(np.multiply(ph_dependant_vmax, substrate_conc), np.add(ph_dependant_km, substrate_conc)), 60)

        plt.scatter(ph_range, y_data, c="r", label="pKa_E 1 original: {}\npKa_E 2 original: {}\npKa_ES 1 original: {}\npKa_ES 2 original: {}\nConcentración de sustrato: {}\nConcentración de enzima: {}".format(5.3, 8.8, 6.0, 9.8, 500, 4.3E-3/250), s=8.0)
        plt.scatter(ph_range, MicMent_ph, c="b", label="pKa_E 1 modificado: {}\npKa_E 2 modificado: {}\npKa_ES 1 modificado: {}\npKa_ES 2 modificado: {}\nConcentración de sustrato modificada: {}\nConcentración de enzima modificada: {}".format(a, b, c, d, e, f), s=8.0)
        plt.plot(ph_range, y_data, c="r", lw=2.0, alpha=0.5)
        plt.plot(ph_range, MicMent_ph, c="b", lw=2.0, alpha=0.5)
        plt.legend(bbox_to_anchor=(1.05, 0.5), loc='center left')
        
    pka1_slider = widgets.FloatSlider(value=5.3, min=1.0, max=13.0, step=0.1, continuous_update=True, description="pKa enzima 1", layout=widgets.Layout(width='auto', height='auto'), style={'description_width': 'initial'})
    pka2_slider = widgets.FloatSlider(value=8.8, min=1.0, max=13.0, step=0.1, continuous_update=True, description="pKa enzima 2", layout=widgets.Layout(width='auto', height='auto'), style={'description_width': 'initial'})
    pka1_es_slider = widgets.FloatSlider(value=6.0, min=1.0, max=13.0, step=0.1, continuous_update=True, description="pKa enzima-sustrato 1", layout=widgets.Layout(width='auto', height='auto'), style={'description_width': 'initial'})
    pka2_es_slider = widgets.FloatSlider(value=9.8, min=1.0, max=13.0, step=0.1, continuous_update=True, description="pKa enzima-sustrato 2", layout=widgets.Layout(width='auto', height='auto'), style={'description_width': 'initial'})
    substrate_slider = widgets.FloatSlider(value=500, min=500.0, max=10000.0, step=100, continuous_update=True, description="Concentracion de sustrato", layout=widgets.Layout(width='auto', height='auto'), style={'description_width': 'initial'})
    enzyme_dropdown = widgets.Dropdown(options=[round(num, 8) for num in list(np.concatenate((np.linspace((4.3E-3/10000), (4.3E-3/1000), 50), np.linspace((4.3E-3/1000), 4.3E-3, 50))))], value=4.3E-3/1000, description='Concentracion de enzima:', disabled=False, layout=widgets.Layout(width='auto', height='auto'), style={'description_width': 'initial'})

    output_graph = widgets.interactive_output(update, {'a':pka1_slider, 'b':pka2_slider, 'c':pka1_es_slider, 'd':pka2_es_slider, 'e':substrate_slider, 'f':enzyme_dropdown})
    header = widgets.HTML(value="<H1><center>Gráfico Interactivo pH - Enzimas</center></H1>", layout=widgets.Layout(width='auto', grid_area='header'))
    footer = widgets.HTML(value="<H1><center>A continuación se realizarán algunas actividades relacionadas con el efecto del pH en las enzimas</center></H1>", layout=widgets.Layout(width='auto', grid_area='header'))
    equation = widgets.HTMLMath(value="", layout=widgets.Layout(width='auto', grid_area='header'))
    sliders = widgets.VBox([pka1_slider, pka2_slider, pka1_es_slider, pka2_es_slider, substrate_slider, enzyme_dropdown])

    final_output = widgets.AppLayout(header=header,
            left_sidebar=sliders,
            center=output_graph,
            footer=footer,
            right_sidebar=None,
            align_items='center',
            pane_widths=[3, 3, 1],
            pane_heights=[1, 5, '60px'])
    
    return final_output
コード例 #13
0
# Withdraw tokens functionality - remains hidden until contract is finalized
account_box = widgets.VBox([withdraw_account], 
                           layout = widgets.Layout(align_items='center'),
                           width = '100%'
                          )
withdraw_box = widgets.VBox([withdraw_key_input, withdraw_button], 
                            layout = widgets.Layout(align_items='center')
                           )
token_balance_box = widgets.VBox([token_balance, token_balance_button], 
                                 layout = widgets.Layout(align_items='center')
                                )
after_sale_box = widgets.AppLayout(
    header = account_box,
    left_sidebar = withdraw_box,
    center = None,
    right_sidebar = token_balance_box,
    footer = None,
    width = '100%'
    #align_items = 'center'
)

post_sale_box = widgets.VBox([after_sale_box, trading_app_dash])


post_sale_box.layout.visibility = 'hidden'

    
coins_purchased_box = widgets.VBox([cons_coin, cons_coin_supply])
coins_box = widgets.VBox([purchase_box, coins_purchased_box])
    
コード例 #14
0
    def test_merge_empty_cells(self):
        "test if cells are correctly merged"

        footer = widgets.Button()
        header = widgets.Button()
        center = widgets.Button()
        left_sidebar = widgets.Button()
        right_sidebar = widgets.Button()

        # merge all if only one widget
        box = widgets.AppLayout(center=center)

        assert box.layout.grid_template_areas == ('"center center center"\n' +
                                                  '"center center center"\n' +
                                                  '"center center center"')
        assert box.center.layout.grid_area == 'center'

        assert len(box.get_state()['children']) == 1

        box = widgets.AppLayout(left_sidebar=left_sidebar)

        assert box.layout.grid_template_areas == (
            '"left-sidebar left-sidebar left-sidebar"\n' +
            '"left-sidebar left-sidebar left-sidebar"\n' +
            '"left-sidebar left-sidebar left-sidebar"')
        assert box.left_sidebar.layout.grid_area == 'left-sidebar'

        assert len(box.get_state()['children']) == 1

        # merge left and right sidebars with center

        box = widgets.AppLayout(header=header,
                                footer=footer,
                                left_sidebar=left_sidebar,
                                center=center)

        assert box.layout.grid_template_areas == (
            '"header header header"\n' + '"left-sidebar center center"\n' +
            '"footer footer footer"')
        assert box.footer.layout.grid_area == 'footer'
        assert box.header.layout.grid_area == 'header'
        assert box.center.layout.grid_area == 'center'
        assert box.left_sidebar.layout.grid_area == 'left-sidebar'
        assert len(box.get_state()['children']) == 4

        box = widgets.AppLayout(header=header,
                                footer=footer,
                                right_sidebar=right_sidebar,
                                center=center)

        assert box.layout.grid_template_areas == (
            '"header header header"\n' + '"center center right-sidebar"\n' +
            '"footer footer footer"')
        assert box.footer.layout.grid_area == 'footer'
        assert box.header.layout.grid_area == 'header'
        assert box.center.layout.grid_area == 'center'
        assert box.right_sidebar.layout.grid_area == 'right-sidebar'
        assert len(box.get_state()['children']) == 4

        box = widgets.AppLayout(header=header, footer=footer, center=center)

        assert box.layout.grid_template_areas == ('"header header header"\n' +
                                                  '"center center center"\n' +
                                                  '"footer footer footer"')
        assert box.footer.layout.grid_area == 'footer'
        assert box.header.layout.grid_area == 'header'
        assert box.center.layout.grid_area == 'center'
        assert len(box.get_state()['children']) == 3

        # if only center missing, remove it from view
        box = widgets.AppLayout(header=header,
                                footer=footer,
                                center=None,
                                left_sidebar=left_sidebar,
                                right_sidebar=right_sidebar)

        assert box.layout.grid_template_areas == (
            '"header header"\n' + '"left-sidebar right-sidebar"\n' +
            '"footer footer"')
        assert box.footer.layout.grid_area == 'footer'
        assert box.header.layout.grid_area == 'header'
        assert box.left_sidebar.layout.grid_area == 'left-sidebar'
        assert box.right_sidebar.layout.grid_area == 'right-sidebar'
        assert box.center is None
        assert len(box.get_state()['children']) == 4

        # center and one sidebar missing -> 3 row arrangement
        box = widgets.AppLayout(header=header,
                                footer=footer,
                                center=None,
                                left_sidebar=None,
                                right_sidebar=right_sidebar)

        assert box.layout.grid_template_areas == (
            '"header header"\n' + '"right-sidebar right-sidebar"\n' +
            '"footer footer"')
        assert box.footer.layout.grid_area == 'footer'
        assert box.header.layout.grid_area == 'header'
        assert box.left_sidebar is None
        assert box.right_sidebar.layout.grid_area == 'right-sidebar'
        assert box.center is None
        assert len(box.get_state()['children']) == 3

        # remove middle row is both sidebars and center missing
        box = widgets.AppLayout(header=header,
                                footer=footer,
                                center=None,
                                left_sidebar=None,
                                right_sidebar=None)

        assert box.layout.grid_template_areas == ('"header"\n' + '"footer"')
        assert box.footer.layout.grid_area == 'footer'
        assert box.header.layout.grid_area == 'header'
        assert box.center is None
        assert box.left_sidebar is None
        assert box.right_sidebar is None
        assert len(box.get_state()['children']) == 2

        # do not merge if merge=False
        box = widgets.AppLayout(header=header,
                                footer=footer,
                                center=center,
                                merge=False)

        assert box.layout.grid_template_areas == (
            '"header header header"\n' +
            '"left-sidebar center right-sidebar"\n' + '"footer footer footer"')
        assert box.footer.layout.grid_area == 'footer'
        assert box.header.layout.grid_area == 'header'
        assert box.center.layout.grid_area == 'center'
        assert box.left_sidebar is None
        assert box.right_sidebar is None
        assert len(box.get_state()['children']) == 3

        # merge header and footer simply removes it from view
        box = widgets.AppLayout(footer=footer,
                                center=center,
                                left_sidebar=left_sidebar,
                                right_sidebar=right_sidebar)

        assert box.layout.grid_template_areas == (
            '"left-sidebar center right-sidebar"\n' + '"footer footer footer"')
        assert box.center.layout.grid_area == 'center'
        assert box.left_sidebar.layout.grid_area == 'left-sidebar'
        assert box.right_sidebar.layout.grid_area == 'right-sidebar'
        assert box.footer.layout.grid_area == 'footer'
        assert box.header is None
        assert len(box.get_state()['children']) == 4

        box = widgets.AppLayout(header=header,
                                center=center,
                                left_sidebar=left_sidebar,
                                right_sidebar=right_sidebar)

        assert box.layout.grid_template_areas == (
            '"header header header"\n' + '"left-sidebar center right-sidebar"')
        assert box.center.layout.grid_area == 'center'
        assert box.left_sidebar.layout.grid_area == 'left-sidebar'
        assert box.right_sidebar.layout.grid_area == 'right-sidebar'
        assert box.header.layout.grid_area == 'header'
        assert box.footer is None
        assert len(box.get_state()['children']) == 4

        box = widgets.AppLayout(center=center,
                                left_sidebar=left_sidebar,
                                right_sidebar=right_sidebar)

        assert box.layout.grid_template_areas == '"left-sidebar center right-sidebar"'
        assert box.center.layout.grid_area == 'center'
        assert box.left_sidebar.layout.grid_area == 'left-sidebar'
        assert box.right_sidebar.layout.grid_area == 'right-sidebar'
        assert box.footer is None
        assert box.header is None
        assert len(box.get_state()['children']) == 3

        # merge all if only one widget
        box = widgets.AppLayout(center=center)

        assert box.layout.grid_template_areas == ('"center center center"\n' +
                                                  '"center center center"\n' +
                                                  '"center center center"')
        assert box.center.layout.grid_area == 'center'

        assert len(box.get_state()['children']) == 1
コード例 #15
0
def compare(image1,
            image2,
            link_cmap=False,
            link_gradient_opacity=False,
            **viewer_kwargs):
    """Compare two images by visualizing them side by side.

    Visualization traits, e.g. the view mode, camera, etc., are linked
    between the viewers. Optional trait linking can be enabled in widget's
    user interface.
    """

    viewer1 = Viewer(image=image1, **viewer_kwargs)
    # Collapse the second viewer's user interface by default.
    if 'ui_collapsed' not in viewer_kwargs:
        viewer_kwargs['ui_collapsed'] = True
    viewer2 = Viewer(image=image2, **viewer_kwargs)

    widgets.jslink((viewer1, 'mode'), (viewer2, 'mode'))
    widgets.jslink((viewer1, 'camera'), (viewer2, 'camera'))
    widgets.jslink((viewer1, 'roi'), (viewer2, 'roi'))
    widgets.jslink((viewer1, 'rotate'), (viewer2, 'rotate'))
    widgets.jslink((viewer1, 'annotations'), (viewer2, 'annotations'))
    widgets.jslink((viewer1, 'x_slice'), (viewer2, 'x_slice'))
    widgets.jslink((viewer1, 'y_slice'), (viewer2, 'y_slice'))
    widgets.jslink((viewer1, 'z_slice'), (viewer2, 'z_slice'))
    widgets.jslink((viewer1, 'slicing_planes'), (viewer2, 'slicing_planes'))

    link_widgets = []
    link_widgets.append(widgets.Label('Link:'))

    class UpdateLink(object):
        def __init__(self, enable, name):
            self.link = None
            self.name = name
            if enable:
                self.link = widgets.jslink((viewer1, name), (viewer2, name))

        def __call__(self, change):
            if change.new:
                self.link = widgets.jslink((viewer1, self.name),
                                           (viewer2, self.name))
            else:
                self.link.unlink()

    link_cmap_widget = widgets.Checkbox(description='cmap', value=link_cmap)
    update_cmap_link = UpdateLink(link_cmap, 'cmap')
    link_cmap_widget.observe(update_cmap_link, 'value')
    link_widgets.append(link_cmap_widget)

    link_gradient_opacity_widget = widgets.Checkbox(
        description='gradient_opacity', value=link_gradient_opacity)
    update_gradient_opacity_link = UpdateLink(link_gradient_opacity,
                                              'gradient_opacity')
    link_gradient_opacity_widget.observe(update_gradient_opacity_link, 'value')
    link_widgets.append(link_gradient_opacity_widget)

    link_widget = widgets.HBox(link_widgets)

    widget = widgets.AppLayout(header=None,
                               left_sidebar=viewer1,
                               center=None,
                               right_sidebar=viewer2,
                               footer=link_widget,
                               pane_heights=[1, 6, 1])
    return widget
コード例 #16
0
def interactive_conveyor_belt(conveyorBelt=None,
                              numsys: int = 8,
                              nbins: int = 100,
                              steps: int = 100):
    """
    This provides a nice widget for jupyter notebooks to play around with the conveyor belt.

    Parameters
    ----------
    conveyorBelt
    numsys
    nbins
    steps

    Returns
    -------

    """
    # if none given build cvb
    if (isinstance(conveyorBelt, type(None))):
        lam = np.linspace(0, 1, nbins)
        ene = lam * np.sin(lam * np.pi) + lam**2
    else:

        (cvb_traj, systrajs) = conveyorBelt.get_trajs()

        if (len(cvb_traj) == 0):
            raise IOError(
                "Could not find any conveyor belt simulation in conveyorbelt traj. Please simulate first."
            )

        bins = np.zeros(nbins)
        dhdlbins = np.zeros(nbins)
        for i in systrajs:
            for j in range(systrajs[i].shape[0]):
                index = int(np.floor(systrajs[i].lam[j] / nbins))
                if index == nbins:
                    index = nbins - 1
                bins[index] += 1
                dhdlbins[index] += systrajs[i].dhdlam[j]
        for i, b in enumerate(bins):
            if b > 0:
                dhdlbins[i] /= b
        ene = np.cumsum(dhdlbins) / nbins

        lam = np.linspace(0, 1, nbins)

    def redraw(CapLam, M):
        plotEnsembler(lam, ene, CapLam=np.deg2rad(CapLam), M=M)

    # build layout and components

    player = ipywidgets.Play(value=0,
                             min=0,
                             max=360,
                             step=1,
                             description="rotate")
    capLam_slider = ipywidgets.IntSlider(value=0,
                                         min=0,
                                         max=360,
                                         step=1,
                                         orientation='vertical',
                                         description="Capital Lambda",
                                         continous_update=True)
    nReplicas_slider = ipywidgets.IntSlider(value=8,
                                            min=2,
                                            max=20,
                                            step=1,
                                            orientation='vertical',
                                            description="number of Replicas")

    ipywidgets.jslink((capLam_slider, 'value'), (player, 'value'))

    interactive_plot = ipywidgets.interactive_output(redraw, {
        'CapLam': capLam_slider,
        'M': nReplicas_slider
    })

    controls = ipywidgets.VBox(
        [player, ipywidgets.HBox([capLam_slider, nReplicas_slider])])

    app = ipywidgets.AppLayout(header=None,
                               left_sidebar=controls,
                               center=interactive_plot,
                               right_sidebar=None,
                               footer=None,
                               align_items="center")

    return app
    """
    This provides a nice widget for jupyter notebooks to play around with the conveyor belt.

    Parameters
    ----------
    conveyorBelt
    numsys
    nbins
    steps

    Returns
    -------

    """
    # if none given build cvb
    if (isinstance(conveyorBelt, type(None))):
        lam = np.linspace(0, 1, nbins)
        ene = lam * np.sin(lam * np.pi) + lam**2
    else:

        (cvb_traj, systrajs) = conveyorBelt.get_trajs()

        if (len(cvb_traj) == 0):
            raise IOError(
                "Could not find any conveyor belt simulation in conveyorbelt traj. Please simulate first."
            )

        bins = np.zeros(nbins)
        dhdlbins = np.zeros(nbins)
        for i in systrajs:
            for j in range(systrajs[i].shape[0]):
                index = int(np.floor(systrajs[i].lam[j] / nbins))
                if index == nbins:
                    index = nbins - 1
                bins[index] += 1
                dhdlbins[index] += systrajs[i].dhdlam[j]
        for i, b in enumerate(bins):
            if b > 0:
                dhdlbins[i] /= b
        ene = np.cumsum(dhdlbins) / nbins

        lam = np.linspace(0, 1, nbins)

    def redraw(CapLam, M):
        plotEnsembler(lam, ene, CapLam=np.deg2rad(CapLam), M=M)

    # build layout and components

    player = ipywidgets.Play(value=0,
                             min=0,
                             max=360,
                             step=1,
                             description="rotate")
    capLam_slider = ipywidgets.IntSlider(value=0,
                                         min=0,
                                         max=360,
                                         step=1,
                                         orientation='vertical',
                                         description="Capital Lambda",
                                         continous_update=True)
    nReplicas_slider = ipywidgets.IntSlider(value=8,
                                            min=2,
                                            max=20,
                                            step=1,
                                            orientation='vertical',
                                            description="number of Replicas")

    ipywidgets.jslink((capLam_slider, 'value'), (player, 'value'))

    interactive_plot = ipywidgets.interactive_output(redraw, {
        'CapLam': capLam_slider,
        'M': nReplicas_slider
    })

    controls = ipywidgets.VBox(
        [player, ipywidgets.HBox([capLam_slider, nReplicas_slider])])

    app = ipywidgets.AppLayout(header=None,
                               left_sidebar=controls,
                               center=interactive_plot,
                               right_sidebar=None,
                               footer=None,
                               align_items="center")

    return app
コード例 #17
0
    def __init__(self, tag='Turtles', name='Turtle Team', n=[0]):
        ## Set the widgets and display them
        top_header = widgets.HTML(
            value=
            '<h1 style="font-size:20px;">HeroesLounge-TeamStats Dashboard</h1>'
            +
            '<p>Enter team info and click "Check team", select seasons and click "Submit and run" button. '
            +
            'Wait for the data to be collected from heroeslounge.gg and then click "Display figures".</p>'
            +
            '<p>Source code is available at https://github.com/Anteb-Turtle/HeroesLounge-TeamStats</p>'
        )
        tag_label = widgets.Label(value='Team tag:')
        self.team_tag = widgets.Text(tag)
        self.team_label = widgets.Label(
            value="Tag can be found in the team's URL on heroeslounge.gg")
        self.w_seasons = widgets.SelectMultiple(
            options=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
            value=n,
            description='seasons',
            disabled=True)
        button0 = widgets.Button(description="Check team")
        self.button1 = widgets.Button(description="Submit and run",
                                      disabled=True)
        self.button2 = widgets.Button(description="Display figures",
                                      disabled=True)
        self.label0 = widgets.Label(value='')
        self.label1 = widgets.Label(value='')
        self.label2 = widgets.Label(value='')
        self.label_error = widgets.Label(value='')
        self.progress = widgets.IntProgress(value=0,
                                            min=0,
                                            max=10,
                                            bar_style='')

        self.out1, self.out2, self.out3, self.out4 = widgets.Output(
        ), widgets.Output(), widgets.Output(), widgets.Output()

        buttonlabel0 = widgets.HBox([button0, self.label0])
        buttonlabel1 = widgets.HBox([self.button1, self.label1])
        buttonlabel2 = widgets.HBox([self.button2, self.label2])
        left_side = widgets.VBox([
            tag_label, self.team_tag, self.team_label, buttonlabel0,
            self.w_seasons, buttonlabel1, self.progress, buttonlabel2,
            self.label_error
        ])
        right_side = widgets.Tab()
        right_side.children = [self.out1, self.out2, self.out3, self.out4]
        right_side_titles = [
            'All players scatter plot', 'All maps scatter plot',
            'Individual player stats', 'Individual map stats'
        ]
        for i in range(len(right_side.children)):
            right_side.set_title(i, right_side_titles[i])

        box = widgets.AppLayout(header=top_header,
                                left_sidebar=left_side,
                                center=right_side,
                                right_sidebar=None,
                                footer=None)

        button0.on_click(self.instantiate)
        self.button1.on_click(self.submit_input)
        self.button2.on_click(self.plotter)

        display(box)
コード例 #18
0
def fetch_result(jobid):
    command = [service_cmd, '--polljob', '--jobid', jobid]
    command = append_outfile(command, jobid)
    proc = subprocess.Popen(command, stdout=subprocess.PIPE, shell=False)
    (out, err) = proc.communicate()
    print(out.decode('UTF-8'))


# Module template file overwrites this thus the final module can extend the number of checks applied.
def run_checks():
    return True


submit.on_click(submit_job)
clearOutput_button.on_click(clear_output)

# Define layout
mandatory_options = widgets.VBox(
    [mandatory_label, email_input, seq_file_input, submit, clearOutput_button])
optional_options = widgets.VBox([optional_label, output_file_name, output_dir])
center_container = widgets.HBox([mandatory_options, optional_options])
mandatory_options.layout = fixed_width_layout
optional_options.layout = fixed_width_layout

app_layout = widgets.AppLayout(header=app_label,
                               left=None,
                               center=center_container,
                               right=None,
                               footer=None)
コード例 #19
0
    def __init__(self, cflname, X=3, Y=3):

        # Read data
        self.cflname = cflname
        self.im = cfl.readcfl(self.cflname)
        self.im_unsqueeze_shape = np.where(np.array(self.im.shape) > 1)[0]
        self.im = self.im.squeeze()

        # Reorder image
        self.Ndims = len(self.im.shape)
        self.order = np.r_[:self.Ndims]
        self.im_ordered = self.im
        self.order3 = np.array([0, 1, 1])

        # Slice image
        self.slice_num = np.zeros(self.Ndims, dtype="int")
        self.im_shape = self.im_ordered.shape
        self.im_slice = self.im_ordered[(slice(None), slice(None)) +
                                        tuple(self.slice_num[2:])]

        # Create figure
        self.fig = plt.figure(facecolor='black', figsize=(X, Y))
        self.fig.subplots_adjust(left=0.0, bottom=0.0, right=1.0, top=1.0)
        self.fig.canvas.set_window_title(self.cflname)

        # Show image
        self.immax = np.max(abs(self.im))
        self.l = plt.imshow(abs(self.im_slice),
                            cmap="gray",
                            vmin=0,
                            vmax=self.immax)
        self.ax = plt.gca()
        self.asp = self.im_ordered.shape[1] / self.im_ordered.shape[0]
        self.aspect = 1
        self.ax.set_aspect(1)
        plt.axis('off')

        radios = []
        buttons = []
        sliders = []

        # Create Radio Buttons for X Y Dimensions
        dims = self.im_unsqueeze_shape[self.order].astype(str)
        for i in range(0, len(dims)):
            dims[i] = "Dim " + dims[i]
        up_down = widgets.RadioButtons(options=dims,
                                       description="Up/Down",
                                       disabled=False)
        radios.append(up_down)

        left_right = widgets.RadioButtons(options=dims,
                                          description="Left/Right",
                                          disabled=False)
        radios.append(left_right)

        # Create Radio buttoms for mosaic
        self.mosaic_valid = False
        mosaic = widgets.RadioButtons(options=dims,
                                      description="Mosaic",
                                      disabled=False)
        radios.append(mosaic)

        # create flip buttons
        self.flipx = 1
        flipx_button = widgets.Button(description="Flip Up/Down")
        buttons.append(flipx_button)

        self.flipy = 1
        flipy_button = widgets.Button(description="Flip Left/Right")
        buttons.append(flipy_button)

        # Create Refresh buttons
        refresh_button = widgets.Button(description="Refresh")
        buttons.append(refresh_button)

        # Create Save Button
        save_button = widgets.Button(description="Export to PNG")
        buttons.append(save_button)

        # create magnitude/phase radio button
        self.magnitude = True
        magnitude_radios = widgets.RadioButtons(options=["Mag", "Phase"])
        #radios.append(magnitude_radios)

        # create aspect sliders
        aspect_slider = widgets.FloatSlider(min=0.25,
                                            max=4,
                                            step=0.05,
                                            value=1.0,
                                            description="Aspect Ratio")
        sliders.append(aspect_slider)

        # Create contrast sliders
        self.vmin = 0
        vmin_slider = widgets.FloatSlider(min=0,
                                          max=1,
                                          step=0.01,
                                          value=0,
                                          description="Contrast Min")
        sliders.append(vmin_slider)

        self.vmax = 1
        vmax_slider = widgets.FloatSlider(min=0,
                                          max=1,
                                          step=0.01,
                                          value=1,
                                          description="Contrast Max")
        sliders.append(vmax_slider)

        # Create sliders for choosing a slice
        dim_slider_dict = {}
        dim_slider_list = []
        for d in np.r_[:self.Ndims]:
            slice_slider = widgets.IntSlider(min=0, max=self.im_shape[d]-1, step=1, \
                                             value=self.slice_num[d], description=f'Dim {self.im_unsqueeze_shape[d]} Slice')
            dim_slider_dict[d] = slice_slider
            dim_slider_list.append(slice_slider)

        # Display widgets
        controls = radios + buttons + sliders + dim_slider_list

        radio_box = widgets.VBox(radios)
        button_box = widgets.VBox(buttons + [magnitude_radios])
        slider_box = widgets.VBox(sliders + dim_slider_list)

        layout = widgets.AppLayout(header=None,
                                   left_sidebar=radio_box,
                                   center=slider_box,
                                   right_sidebar=button_box)

        display(layout)

        # Functionality
        up_down.observe(self.update_orderx, names='value')
        left_right.observe(self.update_ordery, names='value')
        mosaic.observe(self.update_mosaic, names='value')

        flipx_button.on_click(self.update_flipx)
        flipy_button.on_click(self.update_flipy)

        refresh_button.on_click(self.update_refresh)
        save_button.on_click(self.save)

        magnitude_radios.observe(self.update_magnitude, names='value')

        aspect_slider.observe(self.update_aspect, names='value')

        vmin_slider.observe(self.update_vmin, names='value')
        vmax_slider.observe(self.update_vmax, names='value')

        for dim_slider in dim_slider_dict:
            curr_slider = dim_slider_dict[dim_slider]
            dim = int(dim_slider)
            curr_slider.observe(partial(self.update_slice, dim), names='value')

        plt.show()
コード例 #20
0
ファイル: common.py プロジェクト: fastscape-lem/ipyfastscape
    def reset_app(self):
        """Clear output and reset the whole application."""
        self._output.clear_output()
        self._canvas_output.clear_output()

        output_height = self._canvas_height

        if self.dataset._widgets.time_dim is not None:
            # add margin + header
            output_height += 10 + 30

        self._output.layout = widgets.Layout(height=str(output_height) + 'px')

        self.components['canvas'] = self._reset_canvas()
        self.canvas.layout = widgets.Layout(
            width='100%',
            height=str(self._canvas_height) + 'px',
            overflow='hidden',
        )
        self.canvas_output.layout = widgets.Layout(
            width='100%',
            height=str(self._canvas_height) + 'px',
            overflow='hidden',
            margin='0',
            border='solid 1px #bbb',
        )

        # header
        header_elements = []

        menu_button = widgets.ToggleButton(
            value=True,
            tooltip='Show/Hide sidebar',
            icon='bars',
            layout=widgets.Layout(width='50px', height='auto', margin='0 10px 0 0'),
        )

        header_elements.append(menu_button)

        if self.dataset._widgets.time_dim is not None:
            timestepper = TimeStepper(self.dataset, canvas_callback=self._redraw_canvas)
            self.components['timestepper'] = timestepper
            header_elements.append(timestepper.widget)

        # left pane
        accordion_elements = []
        accordion_titles = []

        if len(self.dataset._widgets.extra_dims):
            dim_explorer = DimensionExplorer(self.dataset, canvas_callback=self._redraw_canvas)
            self.components['dimensions'] = dim_explorer
            accordion_elements.append(dim_explorer.widget)
            accordion_titles.append('Dimensions')

        display_properties = self._get_display_properties()
        self.components.update(display_properties)
        display_properties_box = widgets.VBox([dp.widget for dp in display_properties.values()])
        accordion_elements.append(display_properties_box)
        accordion_titles.append('Display properties')

        left_pane = widgets.Accordion(accordion_elements)

        for pos, title in enumerate(accordion_titles):
            left_pane.set_title(pos, title)

        left_pane.layout = widgets.Layout(
            width='400px',
            height='95%',
            margin='0 10px 0 0',
            flex='0 0 auto',
        )

        def toggle_left_pane(change):
            if change['new']:
                left_pane.layout.display = 'block'
                self._resize_canvas()
            else:
                left_pane.layout.display = 'none'
                self._resize_canvas()

        menu_button.observe(toggle_left_pane, names='value')

        with self._canvas_output:
            display(self.canvas)

        # app
        app = widgets.AppLayout(
            header=widgets.HBox(header_elements),
            left_sidebar=None,
            right_sidebar=None,
            center=widgets.HBox([left_pane, self._canvas_output]),
            footer=None,
            pane_heights=['30px', str(self._canvas_height) + 'px', 0],
            grid_gap='10px',
            width='100%',
            overflow='hidden',
        )

        with self._output:
            display(app)
コード例 #21
0
def interactive_conveyor_belt(conveyorBelt=None, numsys:int=8, nbins:int=100, steps:int=100):
    
    #if none given build cvb
    if(isinstance(conveyorBelt, type(None))):
        import ensembler.potentials.OneD as pot
        import ensembler.system.perturbed_system as system
        import ensembler.ensemble.replicas_dynamic_parameters as cvb
        import ensembler.integrator as integ

        integrat = integ.stochastic.metropolisMonteCarloIntegrator()
        potential = pot.linearCoupledPotentials(Va=pot.harmonicOscillator(k=1.0), Vb=pot.harmonicOscillator(k=2.0))
        syst = system.perturbedSystem(potential=potential , integrator=integrat)
        conveyorBelt=cvb.ConveyorBelt(0.0, 8, system=syst, build=False)
        conveyorBelt.simulate(steps)

    (cvb_traj, systrajs) = conveyorBelt.get_trajs()

    if(len(cvb_traj)==0):
        raise IOError("Could not find any conveyor belt simulation in conveyorbelt traj. Please simulate first.")

    bins=np.zeros(nbins)
    dhdlbins=np.zeros(nbins)
    for i in systrajs:
        for j in range(systrajs[i].shape[0]):
            index=int(np.floor(systrajs[i].lam[j]*nbins))
            if index == nbins:
                index=nbins-1
            bins[index]+=1
            dhdlbins[index]+=systrajs[i].dhdlam[j]
    dhdlbins/=bins
    ene = np.cumsum(dhdlbins)/nbins

    lam = np.linspace(0, 1, nbins)
    nReps=conveyorBelt.nReplicas
    
    def redraw(CapLam, M):
        plotEnsembler(lam, ene, CapLam=np.deg2rad(CapLam), M=M)
        

    #build layout and components
 
    
    player = ipywidgets.Play(value=0, min=0, max=360, step=1,
                            description="rotate")
    capLam_slider = ipywidgets.IntSlider(value=0, min=0, max=360, step=1, 
                                         orientation='vertical',
                                         description="Capital Lambda", 
                                         continous_update=True)
    nReplicas_slider = ipywidgets.IntSlider(value=8, min=2, max=20, step=1, 
                                            orientation='vertical',
                                            description="number of Replicas")

    ipywidgets.jslink((capLam_slider, 'value'), (player, 'value'))

    interactive_plot = ipywidgets.interactive_output(redraw, 
                                   {'CapLam':capLam_slider, 
                                   'M':nReplicas_slider})

    controls = ipywidgets.VBox([player, ipywidgets.HBox([capLam_slider, nReplicas_slider])])
    
    app = ipywidgets.AppLayout(header=None,
          left_sidebar=controls,
          center=interactive_plot,
          right_sidebar=None,
          footer=None,
          align_items="center")
          
    
    display(app)
    return app
コード例 #22
0
def interactive_temp_graph(temp_range, temp_data_func):
    
    # Para renderizar LaTeX
    # ce.typeset()
    
    # Se obtienen los datos originales
    x_data = temp_range
    y_data = temp_data_func(x_data, 500, 450, 4.3E-3/250)
    
    def update(a, b, c, d, e, f):
        
        plt.figure(dpi=150)
        plt.title("Variación de la velocidad de reaccion frente a cambios en la temperatura")
        plt.xlabel("Temperatura (K)")
        plt.ylabel("Tasa de Reaccion (uM/min)")
        
        # Update temp parameters
        # For observed rate
        k_cat_observed = np.multiply(np.divide(np.multiply(1.380E-23, x_data), 6.626E-34), np.exp(-(np.divide(a, np.multiply(8.314, x_data)))))

        # For observed inactivation rate
        k_inactivation_observed = np.multiply(np.divide(np.multiply(1.380E-23, x_data), 6.626E-34), np.exp(-(np.divide(b, np.multiply(8.314, x_data)))))

        # Equilibrium temperature
        k_temp_equilibrium = np.exp(np.multiply(np.divide(c, 8.314), np.subtract(np.divide(1, d), np.divide(1, x_data))))
        inactivation_parameter = np.exp(np.divide(np.multiply(np.multiply(k_temp_equilibrium, 1), k_inactivation_observed), np.add(1, k_temp_equilibrium)))

        # Calculation of temperature-dependant Vmax
        temperature_dependant_vmax =  np.divide(np.multiply(np.multiply(k_cat_observed, f), inactivation_parameter), np.add(1, k_temp_equilibrium))

        MicMent_temp = np.multiply(np.divide(np.multiply(temperature_dependant_vmax, e), np.add(450, e)), 60)

        plt.scatter(x_data, y_data, c="r", label="$\Delta G_a$: {}\n$\Delta G_i$: {}\n$\Delta H_e$: {}\nTemperatura Equilibrio: {}\nConcentracion de sustrato: {}\nConcentracion de enzima: {}".format(50000, 94000, 150000, 313, 500, 4.3E-3/250), s=8.0)
        plt.scatter(x_data, MicMent_temp, c="b", label="$\Delta G_a$ modificado: {}\n$\Delta G_i$ modificado: {}\n$\Delta H_e$ modificado: {}\n$T_e$ modificada: {}\nConcentracion de sustrato modificada: {}\nConcentracion de enzima modificada: {}".format(a, b, c, d, e, f), s=8.0)
        plt.plot(x_data, y_data, c="r", lw=2.0, alpha=0.5)
        plt.plot(x_data, MicMent_temp, c="b", lw=2.0, alpha=0.5)
        plt.legend(bbox_to_anchor=(1.05, 0.5), loc='center left')
        
    delta_g_act_slider = widgets.FloatSlider(value=50000.0, min=25000.0, max=75000.0, step=1000.0, continuous_update=True, description="dG de activacion", layout=widgets.Layout(width='auto', height='auto'), style={'description_width': 'initial'})
    delta_g_inact_slider = widgets.FloatSlider(value=94000.0, min=50000.0, max=150000.0, step=1000.0, continuous_update=True, description="dG de inactivacion", layout=widgets.Layout(width='auto', height='auto'), style={'description_width': 'initial'})
    delta_h_eq_slider = widgets.FloatSlider(value=150000.0, min=125000.0, max=400000.0, step=1000.0, continuous_update=True, description="dH de equilibrio", layout=widgets.Layout(width='auto', height='auto'), style={'description_width': 'initial'})
    temp_eq_slider = widgets.FloatSlider(value=313.0, min=283.0, max=383.0, step=1, continuous_update=True, description="T de equilibrio", layout=widgets.Layout(width='auto', height='auto'), style={'description_width': 'initial'})
    substrate_slider = widgets.FloatSlider(value=500.0, min=500.0, max=10000.0, step=100, continuous_update=True, description="Concentracion de sustrato", layout=widgets.Layout(width='auto', height='auto'), style={'description_width': 'initial'})
    enzyme_dropdown = widgets.Dropdown(options=[round(num, 8) for num in list(np.concatenate((np.linspace((4.3E-3/10000), (4.3E-3/1000), 50), np.linspace((4.3E-3/1000), 4.3E-3, 50))))], value=4.3E-3/1000, description='Concentracion de enzima:', disabled=False, layout=widgets.Layout(width='auto', height='auto'), style={'description_width': 'initial'})

    output_graph = widgets.interactive_output(update, {'a':delta_g_act_slider, 'b':delta_g_inact_slider, 'c':delta_h_eq_slider, 'd':temp_eq_slider, 'e':substrate_slider, 'f':enzyme_dropdown})
    header = widgets.HTML(value="<H1><center>Gráfico Interactivo Temperatura - Enzimas</center></H1>", layout=widgets.Layout(width='auto', grid_area='header'))
    footer = widgets.HTML(value="<H1><center>A continuación se realizarán algunas actividades relacionadas con el efecto de la temperatura en las enzimas</center></H1>", layout=widgets.Layout(width='auto', grid_area='header'))
    equation = widgets.HTMLMath(value="", layout=widgets.Layout(width='auto', grid_area='header'))
    sliders = widgets.VBox([delta_g_act_slider, delta_g_inact_slider, delta_h_eq_slider, temp_eq_slider, substrate_slider, enzyme_dropdown])

    final_output = widgets.AppLayout(header=header,
            left_sidebar=sliders,
            center=output_graph,
            footer=footer,
            right_sidebar=None,
            align_items='center',
            pane_widths=[3, 3, 1],
            pane_heights=[1, 5, '60px'])
    
    return final_output
コード例 #23
0
ファイル: widgets.py プロジェクト: paulemms/LCA
def get_sets(spec, lookups, model_sets_file_name):
    """
    Low-level Jupyter widget to get sets for optimisation

    :param Specification spec: object
    :param dict lookups: lookup tables
    :param str model_sets_file_name: filename
    :return: Tab widget
    """

    # main widget
    tab = widgets.Tab()

    # sets that don't need a lookup table
    non_lookups = spec.user_defined_sets.keys() - lookups.keys()

    # lists for widget content
    lookup_name = list(lookups.keys())
    lookup_dfr = list(lookups.values())
    tab_contents = []
    out_dfr = []
    add_buttons = []
    remove_buttons = []
    out_qgs = []
    in_qgs = []

    # get current user data from file
    user_data = spec.get_default_sets()
    with open(model_sets_file_name) as p:
        user_data.update(json.load(p))

    # callbacks for events
    def add_element(b, out_qg):
        current_df = out_qg.get_changed_df()  # what is currently visible
        new_row = pd.DataFrame({'Name': [""]})
        df = current_df.append(new_row, ignore_index=True)
        out_qg.df = df

    def add_element_from_lookup(b, out_qg, in_qg):
        df = out_qg.df.append(in_qg.get_selected_df())
        out_qg.change_selection([])
        out_qg.df = df

    def remove_element(b, out_qg):
        current_df = out_qg.get_changed_df()  # what is currently visible
        rows = out_qg.get_selected_rows()
        if len(rows) > 0:
            new_df = current_df.drop(out_qg.df.index[rows])
            out_qg.df = new_df

    def save_configuration(b):
        out_dict = {}
        for j in range(len(lookup_name)):
            out_dict[lookup_name[j]] = out_qgs[j].df.index.to_list()
        for l in non_lookups:
            j += 1
            current_df = out_qgs[j].get_changed_df()  # what is currently visible
            out_dict[l] = current_df['Name'].to_list()
        with open(model_sets_file_name, 'w') as fp:
            json.dump(out_dict, fp)
        print("Model sets saved to", model_sets_file_name, out_dict)

    # build tab_content for each lookup tab
    for i in range(len(lookup_dfr)):
        if lookup_name[i] in user_data:
            dfr = lookups[lookup_name[i]].loc[user_data[lookup_name[i]], :]
            out_dfr.append(dfr)
        else:
            out_dfr.append(pd.DataFrame())
        add_buttons.append(widgets.Button(description='Add to set'))
        remove_buttons.append(widgets.Button(description='Remove from set'))
        out_qgs.append(qgrid.show_grid(out_dfr[i], grid_options={'maxVisibleRows': 5}))
        in_qgs.append(qgrid.show_grid(lookup_dfr[i], grid_options={'maxVisibleRows': 10}))
        tab_content = widgets.AppLayout(
            header=None,
            left_sidebar=widgets.VBox([add_buttons[i], remove_buttons[i]]),
            center=widgets.VBox([out_qgs[i], in_qgs[i]]),
            right_sidebar=None,
            footer=None)
        tab_contents.append(tab_content)

        # add callbacks
        add_buttons[i].on_click(functools.partial(add_element_from_lookup, out_qg=out_qgs[i], in_qg=in_qgs[i]))
        remove_buttons[i].on_click(functools.partial(remove_element, out_qg=out_qgs[i]))

        # set tab name
        tab.set_title(i, lookup_name[i])

    # build tab content for non-lookup sets
    for k in non_lookups:
        i += 1
        if k in user_data.keys():
            df = pd.DataFrame({'Name': user_data[k]})
        else:
            pd.DataFrame({'Name': [""]})
        add_buttons.append(widgets.Button(description='Add to set'))
        remove_buttons.append(widgets.Button(description='Remove from set'))
        out_qgs.append(qgrid.show_grid(df, grid_options={'maxVisibleRows': 10}))
        tab_content = widgets.AppLayout(
            header=None,
            left_sidebar=widgets.VBox([add_buttons[i], remove_buttons[i]]),
            center=widgets.Box([out_qgs[i]]),
            right_sidebar=None,
            footer=None)
        tab_contents.append(tab_content)

        # add callbacks
        add_buttons[i].on_click(functools.partial(add_element, out_qg=out_qgs[i]))
        remove_buttons[i].on_click(functools.partial(remove_element, out_qg=out_qgs[i]))

        # set tab name
        tab.set_title(i, k)

    # build tab widget
    save_button = widgets.Button(description="Save configuration")
    save_button.on_click(save_configuration)
    v_box = widgets.VBox([save_button, tab])
    tab.children = tab_contents

    return v_box, tab