コード例 #1
0
ファイル: widgets.py プロジェクト: caizikun/labcore
def get_widget(name, trait):
    name = name.title().replace("_" ," " ).title()
    kw = dict(description = name, value = trait.get_default_value())
    if hasattr(trait, 'values'):
        values = trait.values
        if not isinstance(values, Mapping):
            values = {str(val): val for val in values}
        if trait.allow_none:
            values[""] = None
        kw['values'] = values
    if 'widget' in trait._metadata:
        widget = trait._metadata['widget']
        if inspect.isclass(widget):
            widget = widget(**kw)
    elif 'choices' in trait._metadata:
        choices = {str(item): item for item in trait._metadata['choices']}
        kw['values'] = choices
        widget = widgets.DropdownWidget(**kw)
    elif 'choose_from' in trait._metadata:
        choices = trait._metadata['choose_from']()
        if trait.allow_none:
            choices[""] = None
        kw['values'] = choices
        widget = widgets.DropdownWidget(**kw)
    else:
        widget = widget_mapping[type(trait)](**kw)
    return widget
コード例 #2
0
 def get_widget(self, name, trait, value):
     description = name.title().replace("_" ," " ).title()
     kw = dict(description = description, value = value)
     if hasattr(trait, 'values'):
         values = trait.values
         if not isinstance(values, Mapping):
             values = {str(val): val for val in values}
         if trait.allow_none:
             values[""] = None
         kw['values'] = values
     if 'widget' in trait._metadata:
         widget = trait._metadata['widget']
         if inspect.isclass(widget):
             widget = widget(**kw)
     elif 'choices' in trait._metadata:
         choices = {str(item): item for item in trait._metadata['choices']}
         kw['values'] = choices
         widget = widgets.DropdownWidget(**kw)
     elif 'choose_from' in trait._metadata:
         choices = trait._metadata['choose_from']()
         if trait.allow_none:
             choices[""] = None
         kw['values'] = choices
         widget = widgets.DropdownWidget(**kw)
     elif (isinstance(trait, List) and trait._trait):
         if isinstance(trait._trait, Instance):
             trait._trait._resolve_classes()
         if issubclass(trait._trait.klass, HasTraits):
             widget = ListWidget(trait._trait.klass, **kw)
     else:
         widget = self.widget_mapping[type(trait)](**kw)
     return widget
コード例 #3
0
ファイル: svgwidgets.py プロジェクト: nworbmot/svgwidgets
    def __init__(self, **kwargs):
        super(self.__class__, self).__init__(**kwargs)

        colours = [
            "black", "red", "orange", "yellow", "green", "blue", "magenta",
            "cyan"
        ]

        # allow toggling of SVG draw mode
        draw_toggle_values = [
            "select", "rect", "circle", "ellipse", "line", "path"
        ]
        self.draw_toggle = widgets.ToggleButtonsWidget(
            values=draw_toggle_values, description="Choose drawing tool:")

        # set up the stroke controls
        self.stroke_picker = widgets.DropdownWidget(
            values=colours, description="Stroke colour:")
        self.stroke_width_slider = widgets.FloatSliderWidget(
            min=0, max=20, value=3, description="Stroke width:")

        self.stroke_container = HorizontalContainerWidget()
        self.stroke_container.children = [
            self.stroke_picker, self.stroke_width_slider
        ]

        # set up the fill controls
        self.fill_picker = widgets.DropdownWidget(values=["none"] + colours,
                                                  description="Fill colour:")
        self.fill_opacity_slider = widgets.FloatSliderWidget(
            min=0, max=1, value=0.5, description="Fill opacity:")

        self.fill_container = HorizontalContainerWidget()
        self.fill_container.children = [
            self.fill_picker, self.fill_opacity_slider
        ]

        # the main SVG
        self.svg = SVGWidget()

        # border the SVG
        self.svg.set_css('border', '1px solid black')

        # link the control widgets to the SVG control variables
        self.mode_link = traitlets.link((self.draw_toggle, 'value'),
                                        (self.svg, 'mode'))
        self.stroke_link = traitlets.link((self.stroke_picker, 'value'),
                                          (self.svg, 'stroke'))
        self.stroke_width_link = traitlets.link(
            (self.stroke_width_slider, 'value'), (self.svg, 'stroke_width'))
        self.fill_link = traitlets.link((self.fill_picker, 'value'),
                                        (self.svg, 'fill'))
        self.fill_opacity_link = traitlets.link(
            (self.fill_opacity_slider, 'value'), (self.svg, 'fill_opacity'))

        # define the main container's children
        self.children = [
            self.draw_toggle, self.stroke_container, self.fill_container,
            self.svg
        ]
コード例 #4
0
    def userControls(self):
        # Button to select new storm from StormSelector
        self.selectStorm = widgets.ButtonWidget(description="Select New Storm",
                                                visible=True)
        self.selectStorm.on_click(selectNewStorm)

        # Model selection widgets and controls to change model
        self.modelSelection = widgets.DropdownWidget(
            values=self.forecast.groupby(["Group"]).groups.keys(), value="NHC")
        self.modelSelection.on_trait_change(self.onChangeModel, 'value')
        # Slider widget to move plots through time
        self.frameNumber = widgets.IntSliderWidget(min=0,
                                                   max=1,
                                                   value=0,
                                                   step=1,
                                                   description="Time")

        # Button widgets to advance and retract time frames
        add = widgets.ButtonWidget(description="+")
        subtract = widgets.ButtonWidget(description="-")
        add.on_click(self.advanceFrame)
        subtract.on_click(self.subtractFrame)

        # Checkbox to add multiple tracks to plot
        clearAll = widgets.ButtonWidget(description="Clear Plot")
        clearAll.on_click(self.clearPlot)
        self.check = widgets.CheckboxWidget(description="Add multiple tracks:",
                                            value=False)
        # Widgets to tracks to plot
        self.newTrackMenu = widgets.DropdownWidget(
            values=self.forecast.groupby(["Group"]).groups.keys())
        self.addTrackButton = widgets.ButtonWidget(description="Add New Track")
        self.plotMultiTrackButton = widgets.ButtonWidget(
            description="Plot New Tracks")
        # Container that holds multiple track widgets
        self.addNewTrack = widgets.ContainerWidget(
            visible=False,
            children=[
                self.newTrackMenu, self.addTrackButton,
                self.plotMultiTrackButton, clearAll
            ])
        # Adding actions to control frameNumber slider widget
        self.addTrackButton.on_click(self.addingNewTrack)
        self.plotMultiTrackButton.on_click(self.plottingTracks)
        self.check.on_trait_change(self.addTracks, 'value')

        if self.container is None:
            # Container that holds all widgets
            self.container = widgets.ContainerWidget(children=[
                self.selectStorm, self.frameNumber, add, subtract,
                self.modelSelection, self.check, self.addNewTrack
            ])
            display(self.container)

        self.container.visible = True
コード例 #5
0
    def distributionSelector(self, directoryName):
        info = self.distributionInfo(directoryName)
        time = widgets.DropdownWidget(description="Time",
                                      values=info["times"],
                                      value=info["times"][-1])
        line = widgets.DropdownWidget(description="Sample line",
                                      values=info["lines"])
        varName = widgets.TextWidget(description="Variable Name")
        storeButton = widgets.ButtonWidget(description="Store to",
                                           disabled=True)

        def varname_change(name, value):
            storeButton.description = "Store to " + value
            if len(value) == 0:
                storeButton.disabled = True
            else:
                dis = False
                if not value[0].isalpha():
                    dis = True
                storeButton.disabled = dis

        varName.on_trait_change(varname_change, 'value')

        def store_clicked(b):
            l = line.value
            v = varName.value
            name = self.__getObjectName(self)
            store = self.__getStorageName()
            t = time.value
            print_("Storing distribution at t=", t, "on line", l, "from",
                   directoryName, "in", self.path, "to variable", v)
            cmd = "%s.distribution('%s','%s','%s')" % (name, directoryName, l,
                                                       t)
            if store:
                sname, sval = store
                create_code_cell("%s=%s('%s',lambda:%s)" % (v, sname, v, cmd),
                                 "below")
                val = sval(v, lambda: self.distribution(directoryName, l, t))
            else:
                create_code_cell("%s=%s" % (v, cmd), "below")
                val = self.distribution(directoryName, l, t)
            get_ipython().push({v: val})
            varName.value = ""

        storeButton.on_click(store_clicked)
        total = widgets.ContainerWidget(
            children=[line, time, varName, storeButton])
        total.add_class("vbox")
        display(total)
コード例 #6
0
    def __init__(self):
        self.stormStuff = StormNameData().splitStormInfo()
        years = sorted(self.stormStuff.groupby(["Year"]).groups.keys())

        # Slider to select year for file
        self.menuYears = widgets.IntSliderWidget(min=1851,
                                                 max=2014,
                                                 step=1,
                                                 value=2014,
                                                 description="Year")
        self.menuNames = widgets.DropdownWidget()
        self.menuNames.on_trait_change(self._createUrl, 'value')

        # Button to create dropdown menu of storms for the selected year
        self.buttonName = widgets.ButtonWidget(
            description="Get Storm Names")  #, value = menuYears.value)
        self.buttonName.on_click(self._updateNames)

        # Button to call the plotting class and other necessary classes
        self.plottingButton = widgets.ButtonWidget(
            description="Plot Selected Storm", disabled=True)

        # Container widget to hold storm selection widgets
        self.stormSelector = widgets.ContainerWidget(children=[
            self.menuYears, self.buttonName, self.menuNames,
            self.plottingButton
        ],
                                                     visible=True)

        # Container widget to hold both storm selectign widgets and plotting button
        self.form = widgets.ContainerWidget()
        self.form.children = [self.stormSelector]
        display(self.form)
コード例 #7
0
ファイル: metabohunter.py プロジェクト: mfitzp/metabohunter
        def __init__(self, *args, **kwargs):
            
            self.defaults = dict(
                  metabotype=METABOTYPE_ALL,
                  database=DATABASE_HMDB,
                  ph=SAMPLE_PH7_10,
                  solvent=SOLVENT_WATER,
                  frequency=FREQUENCY_600,
                  method=METHOD_HIGHEST_NUMBER_NEIGHBOURHOOD,
                  noise=DEFAULT_NOISE_THRESHOLD,
                  confidence=DEFAULT_CONFIDENCE_THRESHOLD,
                  tolerance=DEFAULT_TOLERANCE
            )
            
            # Overwrite the settings using kwargs passed on create
            self.settings = dict( self.defaults.items() + kwargs.items() )

            # Set up widgets
            self.form = widgets.ContainerWidget()
            self.form.set_css({'width':'20ex'}, selector='.widget-hlabel')
            
            w_metabotype = widgets.DropdownWidget(description="Metabotype:", value=self.settings['metabotype'], values=METABOTYPES)
            w_metabotype.on_trait_change(lambda t, value: self.set_value('metabotype', value), 'value' )
            
            w_database = widgets.DropdownWidget(description="Database:", value=self.settings['database'], values=DATABASES)
            w_database.on_trait_change(lambda t, value: self.set_value('database', value), 'value' )
            
            w_ph = widgets.DropdownWidget(description="pH:", value=self.settings['ph'], values=SAMPLE_PHS)
            w_ph.on_trait_change(lambda t, value: self.set_value('ph', value), 'value' )

            w_solvent = widgets.DropdownWidget(description="Solvent:", value=self.settings['solvent'], values=SOLVENTS)
            w_solvent.on_trait_change(lambda t, value: self.set_value('solvent', value), 'value' )
            
            w_frequency = widgets.DropdownWidget(description="Frequency MHz:", value=self.settings['frequency'], values=FREQUENCIES)
            w_frequency.on_trait_change(lambda t, value: self.set_value('frequency', value), 'value' )
            
            w_method = widgets.DropdownWidget(description="Method:", value=self.settings['method'], values=METHODS)
            w_method.on_trait_change(lambda t, value: self.set_value('method', value), 'value' )
            
            w_noise = widgets.FloatSliderWidget(description="Noise threshold:", value=self.settings['noise'], min=0., max=10., step=0.01)
            w_noise.on_trait_change(lambda t, value: self.set_value('noise', value), 'value' )

            w_confidence = widgets.FloatSliderWidget(description="Confidence threshold:", value=self.settings['confidence'], min=0., max=1., step=0.1)
            w_confidence.on_trait_change(lambda t, value: self.set_value('confidence', value), 'value' )

            w_tolerance = widgets.FloatSliderWidget(description="Shift tolerance:", value=self.settings['tolerance'], min=0., max=10., step=0.01)
            w_tolerance.on_trait_change(lambda t, value: self.set_value('tolerance', value), 'value' )

            self.form.children = [ w_metabotype, w_database, w_ph, w_solvent, w_frequency, 
                                   w_method, w_noise, w_confidence, w_tolerance]
コード例 #8
0
    def pickledDataSelector(self):
        pData = widgets.DropdownWidget(description="Pickled data file",
                                       values=self.sol.pickledData,
                                       value=self.sol.pickledData[0])
        varName = widgets.TextWidget(description="Variable Name")
        storeButton = widgets.ButtonWidget(description="Store to",
                                           disabled=True)

        def varname_change(name, value):
            storeButton.description = "Store to " + value
            if len(value) == 0:
                storeButton.disabled = True
            else:
                dis = False
                if not value[0].isalpha():
                    dis = True
                storeButton.disabled = dis

        varName.on_trait_change(varname_change, 'value')

        def store_clicked(b):
            p = pData.value
            v = varName.value
            name = self.__getObjectName(self)
            store = self.__getStorageName()
            print_("Storing Pickled Data from", p, "to variable", v)
            cmd = "%s.pickledData('%s')" % (name, p)
            if store:
                sname, sval = store
                create_code_cell("%s=%s('%s',lambda:%s)" % (v, sname, v, cmd),
                                 "below")
                val = sval(v, lambda: self.pickledData(p))
            else:
                create_code_cell("%s=%s" % (v, cmd), "below")
                val = self.pickledData(p)
            get_ipython().push({v: val})
            varName.value = ""

        storeButton.on_click(store_clicked)
        total = widgets.ContainerWidget(children=[pData, varName, storeButton])
        total.add_class("vbox")
        display(total)
コード例 #9
0
ファイル: p0067.py プロジェクト: ravish0007/patterns
from IPython.html import widgets
from IPython.display import display

options = {
    'first value': 0,
    'second value': 1,
    'third value': 2,
}

s = widgets.SelectWidget()
s.values = options
display(s)

d = widgets.DropdownWidget()
d.values = options
display(d)
コード例 #10
0
    def sampleSelector(self, directoryName):
        info = self.sampleInfo(directoryName)
        mode = widgets.ToggleButtonsWidget(description="Mode",
                                           values=["Time", "Field"])
        field = widgets.DropdownWidget(description="Field",
                                       values=info["values"])
        time = widgets.DropdownWidget(description="Time",
                                      values=info["times"],
                                      value=info["times"][-1])
        line = widgets.DropdownWidget(description="Sample line",
                                      values=info["lines"])
        varName = widgets.TextWidget(description="Variable Name")
        storeButton = widgets.ButtonWidget(description="Store to",
                                           disabled=True)

        def mode_changed(name, value):
            if value == "Time":
                time.disabled = False
                field.disabled = True
            else:
                time.disabled = True
                field.disabled = False

        mode.on_trait_change(mode_changed, 'value')
        mode_changed('value', mode.value)

        def varname_change(name, value):
            storeButton.description = "Store to " + value
            if len(value) == 0:
                storeButton.disabled = True
            else:
                dis = False
                if not value[0].isalpha():
                    dis = True
                storeButton.disabled = dis

        varName.on_trait_change(varname_change, 'value')

        def store_clicked(b):
            l = line.value
            v = varName.value
            name = self.__getObjectName(self)
            store = self.__getStorageName()
            if mode.value == "Time":
                t = time.value
                print_("Storing fields at t=", t, "on line", l, "from",
                       directoryName, "in", self.path, "to variable", v)
                cmdBase = "%s.sampleTime('%s','%s','%s')" % (
                    name, directoryName, l, t)
                if store:
                    sname, sval = store
                    cmd = "%s=%s('%s',lambda:%s)" % (v, sname, v, cmdBase)
                    val = sval(v, lambda: self.sampleTime(directoryName, l, t))
                else:
                    cmd = "%s=%s" % (v, cmdBase)
                    val = self.sampleTime(directoryName, l, t)
            elif mode.value == "Field":
                f = field.value
                print_("Storing fields", f, " at all times on line", l, "from",
                       directoryName, "in", self.path, "to variable", v)
                cmdBase = "%s.sampleField('%s','%s','%s')" % (
                    name, directoryName, l, f)
                if store:
                    sname, sval = store
                    cmd = "%s=%s('%s',lambda:%s)" % (v, sname, v, cmdBase)
                    val = sval(v,
                               lambda: self.sampleField(directoryName, l, f))
                else:
                    cmd = "%s=%s" % (v, cmdBase)
                    val = self.sampleField(directoryName, l, f)
            else:
                print_("Unknown mode", mode)
                return
            create_code_cell(cmd, "below")
            get_ipython().push({v: val})
            varName.value = ""

        storeButton.on_click(store_clicked)
        total = widgets.ContainerWidget(
            children=[mode, line, field, time, varName, storeButton])
        total.add_class("vbox")
        display(total)
コード例 #11
0
    )

    if show_javascript:
        display(widgets.PopupWidget(children=(widgets.HTMLWidget(value='<div style="width:600px; height: 400px; overflow:scroll;"><pre>{}</pre></div>'.format(rendered_template)),)))
    
    display(Javascript(rendered_template))


# In[30]:

i = interact(
    display_chart_chartjs,
    sc_est2012_sex=widgets.fixed(sc_est2012_sex),
    show_javascript=widgets.Widget(CheckboxWidget(value=False),
    show=widgets.DropdownWidget(
        values={'By Region':'by_region', 'By Division': 'by_division', 'By State': 'by_state'},
        value='by_region'
    ),
    div=widgets.HTMLWidget(value='<canvas width=800 height=400 id="chart_chartjs"></canvas>')
)


# The library generates an beautiful and simple animated column chart. There's not much in terms of customization of the Chart.js charts, but that makes it very easy to use.

# ## Part 3 - Embedding HighCharts

# Somewhat in between Charts.js and D3 is [HighCharts](http://www.highcharts.com/). It can produce beautiful and professional looking animated charts without much coding and it can be customized if needed. This time we'll plot the age of the population by region and division. We're going to show one data series per bucket of 20 years. Before we can begin, we need to declare the requirement:

# In[ ]:

get_ipython().run_cell_magic(u'javascript', u'', u"require.config({\n    paths: {\n        highcharts: '//cdnjs.cloudflare.com/ajax/libs/highcharts/4.0.1/highcharts'\n    }\n});")
コード例 #12
0
ファイル: widgets.py プロジェクト: sberkseth/brawl4d
    def __init__(
        self, panels, lma_ctrl, scatter_ctrl, charge_lasso, d
    ):  #, station_number_selection, charge_lasso_widget, draw_lasso_widget, color_field_widget, animation_time_widget, animate_button, label, LMA_Controlsa, LMA_Controlsb, tools_popup, number_of_stations):
        self.panels = panels
        self.lma_ctrl = lma_ctrl
        self.d = d
        self.scatter_ctrl = scatter_ctrl
        self.charge_lasso = charge_lasso

        #Max Chi2 Value:
        chi2_selection = widgets.BoundedFloatTextWidget(
            description='Max Chi2:', min='0.0', max='1000.0', value='1')
        chi2_selection.set_css({
            'max-width': '30px',
        })
        chi2_selection.on_trait_change(self.max_chi2, 'value')

        #Station Number Selection:
        station_number_selection = widgets.DropdownWidget(
            description='Number of Stations:',
            values=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
            value=7)
        station_number_selection.set_css({
            'background-dropdown': '#888888',
            'color': 'white',
        })
        station_number_selection.on_trait_change(self.number_of_stations,
                                                 'value')

        #Charge Lasso and Draw Button:
        charge_lasso_widget = widgets.RadioButtonsWidget(
            description='Charge Selection:',
            values=["-1", "0", "1"],
            value="-1")
        charge_lasso_widget.on_trait_change(self.change_lasso_charge, 'value')

        draw_lasso_widget = widgets.ButtonWidget(description='Draw')
        draw_lasso_widget.set_css({
            'background': '#888888',
            'color': 'white',
        })
        draw_lasso_widget.on_click(self.lasso_button)

        #Color Field Selection:
        color_field_widget = widgets.RadioButtonsWidget(
            description='Color By:',
            values=["chi2", "time", "charge"],
            value="time")
        color_field_widget.on_trait_change(self.change_color_field, 'value')

        #Animate (Slider and Button) Optional Manual Numerical Input commented out:
        animation_time_widget = widgets.IntSliderWidget(
            description='Animation Time:', min='0', max='30')
        animation_time_widget.value = '5'
        # animation_time_widget = widgets.TextWidget(Description='Animation Time')
        # animation_time_widget.placeholder = "value"
        animate_button = widgets.ButtonWidget(description="Animate")
        animate_button.set_css({
            'display': 'flex',
            'align-content': 'flex-end',
            'background': '#888888',
            'color': 'white',
        })
        animate_button.on_click(self.run_animation_button)

        #FOR CONTAINERS AND POPUP
        label = widgets.LatexWidget(value='LMA Tools')
        label.set_css({
            'font-size': '20px',
            'font-weight': 'bold',
            'align-self': 'center',
            'padding': '15px',
            'background': 'd8d8d8',
        })

        LMA_Controlsa = widgets.ContainerWidget()
        LMA_Controlsa.children = [
            station_number_selection, charge_lasso_widget, draw_lasso_widget,
            chi2_selection
        ]
        LMA_Controlsa.set_css({
            'display': 'flex',
            'flex-direction': 'column',
            # 'max-width': '300px',
            'flex-flow': 'row wrap',
            'align-content': 'flex-start',
            'padding': '10px',
            'background': '#e8e8e8',
            'font-weight': 'bold',
        })
        LMA_Controlsa.remove_class('vbox')
        LMA_Controlsa.add_class('hbox')

        LMA_Controlsb = widgets.ContainerWidget()
        LMA_Controlsb.children = [
            color_field_widget, animation_time_widget, animate_button
        ]
        LMA_Controlsb.set_css({
            'display': 'flex',
            'flex-flow': 'wrap',
            'align-items': 'right',
            'columns': '1',
            'padding': '10px',
            'background': '#e8e8e8',
            'font-weight': 'bold',
        })
        LMA_Controlsb.remove_class('vbox')
        LMA_Controlsb.add_class('hbox')

        tools_popup = widgets.PopupWidget(description='LMA Control Hub')
        tools_popup.set_css({
            'font-size': '14px',
            'align-self': 'center',
            'padding': '15px',
            'border': '5px ridge #989898',
            'background': '#e8e8e8',
        })
        tools_popup.children = [label, LMA_Controlsa, LMA_Controlsb]

        self.chi2_selection = chi2_selection
        self.station_number_selection = station_number_selection
        self.charge_lasso_widget = charge_lasso_widget
        self.draw_lasso_widget = draw_lasso_widget
        self.color_field_widget = color_field_widget
        self.animation_time_widget = animation_time_widget
        self.animate_button = animate_button
        self.label = label
        self.LMA_Controlsa = LMA_Controlsa
        self.LMA_Controlsb = LMA_Controlsb
        self.tools_popup = tools_popup