Пример #1
0
def lpm_models():
    a0, b0, c0 = [2.2e-3, 1.1e-1, 6.8e-3]
    dlog = 0.1
    a = FloatLogSlider(value=a0,
                       base=10,
                       description=r'$a$',
                       min=np.log10(a0) - dlog,
                       max=np.log10(a0) + dlog,
                       step=dlog / 10,
                       continuous_update=False)
    b = FloatLogSlider(value=b0,
                       base=10,
                       description=r'$b$',
                       min=np.log10(b0) - dlog,
                       max=np.log10(b0) + dlog,
                       step=dlog / 10,
                       continuous_update=False)
    dlog *= 5
    c = FloatLogSlider(value=c0,
                       base=10,
                       description=r'$c$',
                       min=np.log10(c0) - dlog,
                       max=np.log10(c0) + dlog,
                       step=dlog / 10,
                       continuous_update=False)
    io = interactive_output(plot_lpm_models, {'a': a, 'b': b, 'c': c})
    return VBox([HBox([a, b, c]), io])
Пример #2
0
def interactive_res_model():
    app = interactive(
        plot_res_model,
        lay1=FloatSlider(
            min=zmin,
            max=zmax,
            step=1.,
            value=30.,
            continuous_update=True,
            description="$layer2_{top}$",
        ),
        lay2=FloatSlider(
            min=zmin,
            max=zmax,
            value=100.,
            step=1.,
            continuous_update=True,
            description="$layer2_{bottom}$",
        ),
        rho_half=FloatLogSlider(
            base=10,
            min=np.log10(rhomin),
            max=np.log10(rhomax),
            value=50.,
            step=0.1,
            continuous_update=True,
            description=r"$\rho_{background}$",
        ),
        rho1=FloatLogSlider(
            base=10,
            min=np.log10(rhomin),
            max=np.log10(rhomax),
            value=100.,
            step=0.1,
            continuous_update=True,
            description=r"$\rho_{1}$",
        ),
        rho2=FloatLogSlider(
            base=10,
            min=np.log10(rhomin),
            max=np.log10(rhomax),
            value=10.,
            step=0.1,
            continuous_update=True,
            description=r"$\rho_{2}$",
        )
    )
    return app
Пример #3
0
def recharge_source():
    Q = FloatSlider(value=1000,
                    description=r'$Q$ [m$^3$/day]',
                    min=500,
                    max=1500,
                    step=500,
                    continuous_update=False)
    t = FloatLogSlider(value=1.0,
                       description=r'$t$ [day]',
                       base=10,
                       min=-1,
                       max=2,
                       step=0.2,
                       continuous_update=False)
    r = FloatSlider(value=200,
                    description=r'$r$ [m]',
                    min=100,
                    max=500,
                    step=100,
                    continuous_update=False)
    T = FloatSlider(value=300,
                    description=r'$T$ [m$^2$/day]',
                    min=100,
                    max=500,
                    step=100,
                    continuous_update=False)
    image = Checkbox(value=False, description='image well')
    io = interactive_output(show_theis_image2, {
        'Q': Q,
        't': t,
        'r': r,
        'T': T,
        'image': image
    })
    return VBox([HBox([Q, t, image]), HBox([T, r]), io])
Пример #4
0
def show(x, y):
    C = FloatLogSlider(value=0,
                       base=10,
                       min=-1,
                       max=2,
                       step=1,
                       readout_format='.3f',
                       description='$C$',
                       continuous_update=False)
    gamma = FloatLogSlider(value=0,
                           base=10,
                           min=-3,
                           max=2,
                           step=0.5,
                           readout_format='.3f',
                           description='$\gamma$',
                           continuous_update=False)
    interact(plot, C=C, gamma=gamma, x=fixed(x), y=fixed(y))
Пример #5
0
def show(x, y):
    C = FloatLogSlider(value=0,
                       base=10,
                       min=-0.5,
                       max=3,
                       step=0.5,
                       description='$C$',
                       readout_format='.1f',
                       continuous_update=False)
    interact(plot, C=C, x=fixed(x), y=fixed(y))
    def add_controls(volume, name, color=None):
        """
        """
        level = FloatLogSlider(
            base=10, min=-0.5, max=0, step=0.0002, description=f"{name} level:"
        )
        opacity = FloatLogSlider(
            base=10, min=-2, max=1.0, step=0.01, description=f"{name} opacity:"
        )
        jslink((volume.tf, "level1"), (level, "value"))
        jslink((volume.tf, "level2"), (level, "value"))
        jslink((volume.tf, "level3"), (level, "value"))
        jslink((volume, "opacity_scale"), (opacity, "value"))

        button = Button(description=name)
        if color is not None:
            button.style.button_color = color
        controls = HBox([button, level, opacity])
        widgets.append(controls)
Пример #7
0
def leaky_aquifer():
    Q = FloatSlider(value=1000,
                    description=r'$Q$ [m$^3$/day]',
                    min=500,
                    max=1500,
                    step=500,
                    continuous_update=False)
    t = FloatLogSlider(value=1.0,
                       description=r'$t$ [day]',
                       base=10,
                       min=-1,
                       max=2,
                       step=0.2,
                       continuous_update=False)
    r = FloatSlider(value=200,
                    description=r'$r$ [m]',
                    min=100,
                    max=500,
                    step=100,
                    continuous_update=False)
    T = FloatSlider(value=300,
                    description=r'$T$ [m$^2$/day]',
                    min=100,
                    max=500,
                    step=100,
                    continuous_update=False)
    c = FloatLogSlider(value=1.e5,
                       description=r'$c$ [day]',
                       base=10,
                       min=2,
                       max=6,
                       step=1,
                       continuous_update=False)
    io = interactive_output(show_hantushjacob, {
        'Q': Q,
        't': t,
        'r': r,
        'T': T,
        'c': c
    })
    return VBox([HBox([Q, t, c]), HBox([T, r]), io])
Пример #8
0
def show():
    style = dict(description_width='initial')
    interact(plot,
             lambda_=FloatLogSlider(value=0.5,
                                    base=10,
                                    min=-1,
                                    max=1,
                                    step=0.25,
                                    description='単位時間あたり平均回数:',
                                    continuous_update=False,
                                    readout_format='.1f',
                                    style=style))
Пример #9
0
    def build_widget(self):
        widget = []
        
        # dropdown for system selection
        # checkbox for showing/hiding unmodified data
        self.select = Dropdown(options=self.df_all.index.values,description='System:')
        
        # slider array for trimming datapoints
        vbox1 = [HBox([Label('Trim-Lo')],layout={'justify_content':'center'}) ]
        vbox2 = [HBox([Label('Trim-Hi')],layout={'justify_content':'center'}) ]
        self.apply_bg = Checkbox(value=False,description='Subtract BG?')
        vbox3 = [HBox([self.apply_bg],layout={'justify_content':'center'}) ]
        for config in self.df_all.columns:
            sl1 = IntSlider(min=0,max=25,value=7,description='{}'.format(config))
            sl1.style.handle_color = self.df_colors.loc[config]
            vbox1.append(sl1)
            
            sl2 = IntSlider(min=0,max=100,value=15,description='{}'.format(config))
            sl2.style.handle_color = self.df_colors.loc[config]
            vbox2.append(sl2)

            # sl3 = FloatSlider(min=0.001,max=1,value=0.5,description='{}'.format(config))
            sl3 = FloatLogSlider(min=-3,max=0,value=0.5,description='{}'.format(config))
            sl3.style.handle_color = self.df_colors.loc[config]
            vbox3.append(sl3)
        widget.append(HBox([VBox(vbox1), VBox(vbox2)]))
        
        ## store slider objects in dataframe
        self.df_slider = pd.DataFrame(np.transpose([vbox1[1:],vbox2[1:],vbox3[1:]]),index=self.df_all.columns,columns=['Lo','Hi','bgLoc'])
        # self.df_bgslider = pd.DataFrame(np.transpose(vbox3[1:]),index=self.df_all.columns,columns=['Lo','Hi'])
        
        # dropdown for shift-configuration selection
        ops = ['None']
        ops += [str(i) for i in self.df_all.columns.values]
        self.shift_config = Dropdown(options=ops,description='Shift-To:')
        self.shift_factors_out = Output()
        self.show_original = Checkbox(value=True,description='Show Original Data')
        vbox4 = [VBox([self.shift_config,self.show_original]),self.shift_factors_out]

        # widget.append(HBox([VBox(vbox3),VBox(vbox4)]))
        self.bg_out = Output()
        widget.append(HBox([VBox(vbox3),self.bg_out]))
        widget.append(HBox(vbox4))
        
        tabs = Tab(widget)
        tabs.set_title(0,'Data Trimming')
        tabs.set_title(1,'Subtract BG')
        tabs.set_title(2,'Curve Shift')

        self.debug_out = Output()
        return VBox([self.select,tabs,self.debug_out])
Пример #10
0
def show(x, y):
    kernel = Dropdown(options={
        '線形カーネル': 'linear',
        'ガウシアンカーネル': 'rbf'
    },
                      value='linear',
                      description='カーネル')
    C = FloatLogSlider(value=0,
                       base=10,
                       min=-1,
                       max=2,
                       step=1,
                       readout_format='.3f',
                       description='$C$',
                       continuous_update=False)
    gamma = FloatLogSlider(value=0,
                           base=10,
                           min=-3,
                           max=2,
                           step=0.5,
                           readout_format='.3f',
                           description='$\gamma$ (gamma)',
                           continuous_update=False)
    interact(plot, kernel=kernel, C=C, gamma=gamma, x=fixed(x), y=fixed(y))
Пример #11
0
def create_widget(A, G, default_horizon=1000):	

    from ipywidgets import FloatLogSlider, interactive, fixed

    slider = FloatLogSlider(
        value=default_horizon,
        base=10,
        min=1, # max exponent of base
        max=5, # min exponent of base
        step=1, # exponent step
        description='time-horizon ($n$)',
        readout_format='d'
    )

    return interactive(run_widget, {'manual' : True, 'manual_name' : 'Run Simulation'}, A=fixed(A), g=G, horizon=slider)
Пример #12
0
def show():
    interact(plot,
             mu=FloatSlider(value=0,
                            min=-1,
                            max=1,
                            step=0.5,
                            description='平均:',
                            continuous_update=False,
                            readout_format='.1f'),
             sigma=FloatLogSlider(value=1,
                                  base=10,
                                  min=-0.25,
                                  max=0.25,
                                  step=0.125,
                                  description='標準偏差:',
                                  continuous_update=False,
                                  readout_format='.1f'))
Пример #13
0
def lpm_prediction(sa, sb, sc):
    Nmods = FloatLogSlider(value=64,
                           base=4,
                           description='samples',
                           min=0,
                           max=5,
                           step=1,
                           continuous_update=False)
    reveal = Checkbox(value=False, description='reveal future!')
    io = interactive_output(
        plot_lpm_prediction, {
            'Nmods': Nmods,
            'reveal': reveal,
            'sa': fixed(sa),
            'sb': fixed(sb),
            'sc': fixed(sc)
        })
    return VBox([HBox([Nmods, reveal]), io])
Пример #14
0
 def setup_lift_slider(self):
     name = "lift"
     setattr(
         self,
         f"slider_{name}",
         FloatLogSlider(
             value=getattr(self, f"min_{name}"),
             min=-0.5,
             max=1.5,
             step=0.05,
             base=10,
             description=f"min_{name}",
             disabled=False,
             continuous_update=False,
             orientation="horizontal",
             readout=True,
             readout_format=".3f",
         ),
     )
     getattr(self, f"slider_{name}").observe(self.set_slider_value, "value")
Пример #15
0
def streamflow_depletion():
    Q = FloatSlider(value=1000,
                    description=r'$Q$ [m$^3$/day]',
                    min=500,
                    max=1500,
                    step=500,
                    continuous_update=False)
    t = FloatLogSlider(value=1.0,
                       description=r'$t$ [day]',
                       base=10,
                       min=-1,
                       max=2,
                       step=0.2,
                       continuous_update=False)
    r = FloatSlider(value=200,
                    description=r'$r$ [m]',
                    min=100,
                    max=500,
                    step=100,
                    continuous_update=False)
    T = FloatSlider(value=300,
                    description=r'$T$ [m$^2$/day]',
                    min=100,
                    max=500,
                    step=100,
                    continuous_update=False)
    H = FloatSlider(value=2,
                    description=r'$b$ [m]',
                    min=2,
                    max=5,
                    step=1.5,
                    continuous_update=False)
    io = interactive_output(show_hunt2003, {
        'Q': Q,
        't': t,
        'r': r,
        'T': T,
        'H': H
    })
    return VBox([HBox([Q, t, H]), HBox([T, r]), io])
Пример #16
0
def confined_aquifer(analysis=False):
    approx = Checkbox(value=True, description='approx.')
    semilog = Checkbox(value=False, description='SemiLog')
    Q = FloatSlider(value=1000,
                    description=r'$Q$ [m$^3$/day]',
                    min=500,
                    max=1500,
                    step=500,
                    continuous_update=False)
    t = FloatLogSlider(value=1.0,
                       description=r'$t$ [day]',
                       base=10,
                       min=-1,
                       max=2,
                       step=0.2,
                       continuous_update=False)
    r = FloatSlider(value=200,
                    description=r'$r$ [m]',
                    min=100,
                    max=500,
                    step=100,
                    continuous_update=False)
    T = FloatSlider(value=300,
                    description=r'$T$ [m$^2$/day]',
                    min=100,
                    max=500,
                    step=100,
                    continuous_update=False)
    io = interactive_output(
        show_theis, {
            'Q': Q,
            't': t,
            'r': r,
            'T': T,
            'approx': approx,
            'semilog': semilog,
            'analysis': fixed(analysis)
        })
    return VBox([HBox([Q, t, approx]), HBox([T, r, semilog]), io])
Пример #17
0
def observation_error():
    #out = Output()
    seed = 13
    rolldice = Button(description='ROLL THE DICE',
                      tooltip='randomise the random number generator')
    Nsldr = IntSlider(value=5,
                      description='$N_{obs}$',
                      min=2,
                      max=10,
                      step=1,
                      continuous_update=False)
    trueModel = Checkbox(value=False, description='True Process')
    bestModel = Checkbox(value=False, description='Best (LSQ) Model')
    varsldr = FloatLogSlider(value=0.1,
                             base=10,
                             description='$\sigma_i^2$',
                             min=-2,
                             max=0,
                             step=1,
                             continuous_update=False)
    sdf = fixed(seed)

    np.random.seed(13)

    def on_button_clicked(b):
        sdf.value = int(time.time())

    rolldice.on_click(on_button_clicked)
    io = interactive_output(
        plot_observations, {
            'N_obs': Nsldr,
            'trueModel': trueModel,
            'bestModel': bestModel,
            'var': varsldr,
            'seed': sdf
        })

    return VBox([HBox([Nsldr, bestModel, trueModel, rolldice, varsldr]), io])
Пример #18
0
def lpm_posterior():
    a0, b0, c0 = [2.2e-3, 1.1e-1, 6.8e-3]
    dlog = 0.1
    sa = FloatSlider(value=dlog * a0 / 2,
                     description=r'$\sigma_a$',
                     min=0.,
                     max=dlog * a0,
                     step=dlog * a0 / 10.,
                     continuous_update=False)
    sb = FloatSlider(value=dlog * b0 / 2,
                     description=r'$\sigma_b$',
                     min=0.,
                     max=dlog * b0,
                     step=dlog * b0 / 10.,
                     continuous_update=False)
    dlog *= 5
    sc = FloatSlider(value=dlog * c0 / 2,
                     description=r'$\sigma_c$',
                     min=0.,
                     max=dlog * c0,
                     step=dlog * c0 / 10.,
                     continuous_update=False)
    Nmods = FloatLogSlider(value=4,
                           base=2,
                           description='samples',
                           min=0,
                           max=8,
                           step=1,
                           continuous_update=False)
    io = interactive_output(plot_lpm_posterior, {
        'sa': sa,
        'sb': sb,
        'sc': sc,
        'Nmods': Nmods
    })
    return VBox([HBox([sa, sb, sc, Nmods]), io])
Пример #19
0
def prediction(var):
    mtrue, ctrue = [2, 3]
    cmin, c0, cmax = [2.55, 3.05, 3.55]
    mmin, m0, mmax = [1.3, 2.1, 2.9]
    cmin, c0, cmax = [1.55, 3.05, 4.55]
    mmin, m0, mmax = [0.3, 2.1, 4.9]
    p = Posterior(cmin=cmin,
                  cmax=cmax,
                  Nc=101,
                  mmin=mmin,
                  mmax=mmax,
                  Nm=101,
                  ctrue=ctrue,
                  mtrue=mtrue,
                  var=var)
    zoom = Checkbox(value=False, description='zoom')
    Nsamples = FloatLogSlider(value=16,
                              base=4,
                              description='samples',
                              min=0,
                              max=5,
                              step=1,
                              continuous_update=False)
    xf = FloatSlider(value=3,
                     description=r'$x_f$',
                     min=2,
                     max=5,
                     step=0.5,
                     continuous_update=False)
    io = interactive_output(plot_predictions, {
        'zoom': zoom,
        'N': Nsamples,
        'xf': xf,
        'p': fixed(p)
    })
    return VBox([HBox([zoom, Nsamples, xf]), io])
Пример #20
0
class CostWidget(object):
    def __init__(self, model):

        self._model = model

    @property
    def app(self):

        app_params = self._model._params.copy()
        cost = self._model.compute().values["Total Cost [$/tCO2]"]

        rsliders = {}
        esliders = {}
        all_sliders = {}

        labels = {
            "Scale [tCO2/year]": "Scale [tCO2/year]",
            "DAC Capacity Factor": "DAC Capacity Factor",
            "DAC Section Lead Time [years]": "DAC Section Lead Time [years]",
            "Total Capex [$]": "Overnight Capex [M$] *",
            "Electric Power Requierement [MW]":
            "Electric Power Requierement [MW] *",
            "Thermal [GJ/tCO2]": "Thermal [GJ/tCO2] *",
            "Fixed O+M Costs [$/tCO2]": "Fixed O+M Costs [$/tCO2]*",
            "Varible O+M Cost [$/tCO2]": "Varible O+M Cost [$/tCO2] *",
            "Economic Lifetime [years]": "Economic Lifetime [years]",
            "WACC [%]": "WACC [%]",
            "Natural Gas Cost [$/mmBTU]": "Natural Gas Cost [$/mmBTU]",
        }

        # --------- callbacks --------- #
        def update_cost(app_params):
            cost = self._model.compute().values["Total Cost [$/tCO2]"]
            result.value = f"<h1>${cost:0.2f}<h1/>"

        def on_value_change(param, change):
            app_params[param] = change["new"]
            update_cost(app_params)

        def set_defaults(change):
            case = change["new"]
            p = default_params(case.lower())  # TODO
            app_params.update(p)
            for k, v in app_params.items():
                if k in all_sliders:
                    all_sliders[k].value = v

        # --------- callbacks --------- #

        header = HTML("""
        <h1> DAC Cost Estimator </h1>

        <b>By NOAH MCQUEEN and JOE HAMMAN</b>

        <div style="width:800px"
            <p>
                How much does it cost to build a Direct Air Capture facility? To help answer this question, we've built a calculator that takes the most important variables that drive the cost of building and operating a DAC plant. To find out more about the fundementals and assumptions in the calcuator, check out Noah's paper...
            </p>
        </div>
        """)

        # presets
        presets = Dropdown(description="Preset Scenario",
                           options=["Low", "High"],
                           value="Low")
        presets.observe(set_defaults, names="value")

        # report data

        result = HTML(value=f"<h1>${cost:0.2f}<h1/>")
        right = VBox(
            [HTML("<b>You can build this DAC plant for ... </b>"), result])

        rsliders["Scale [tCO2/year]"] = FloatLogSlider(
            min=1, max=12, step=0.1, value=app_params["Scale [tCO2/year]"])
        rsliders["DAC Capacity Factor"] = FloatSlider(
            min=0,
            max=1,
            step=0.01,
            readout_format=".2%",
            value=app_params["DAC Capacity Factor"])
        rsliders["DAC Section Lead Time [years]"] = IntSlider(
            min=1, max=6, value=app_params["DAC Section Lead Time [years]"])
        rsliders["Total Capex [$]"] = FloatSlider(
            value=app_params["Total Capex [$]"])
        rsliders["Electric Power Requierement [MW]"] = FloatSlider(
            value=app_params["Electric Power Requierement [MW]"])
        rsliders["Thermal [GJ/tCO2]"] = FloatSlider(
            value=app_params["Thermal [GJ/tCO2]"])
        rsliders["Fixed O+M Costs [$/tCO2]"] = FloatSlider(
            value=app_params["Fixed O+M Costs [$/tCO2]"])
        rsliders["Varible O+M Cost [$/tCO2]"] = FloatSlider(
            value=app_params["Varible O+M Cost [$/tCO2]"])

        for key, slider in rsliders.items():
            slider.observe(functools.partial(on_value_change, key),
                           names="value")

        details = HTML("""
        <h2>Report Data</h2>

        <p>Parameters from the <em>Report Data</em> worksheet...</p>
        """)
        report_data = VBox([details] + [
            HBox([Label(labels[k], layout={"width": "250px"}), s])
            for k, s in rsliders.items()
        ])

        details = HTML("""
        <h2>Economic Data</h2>

        <p>Parameters from the <em>Economic Parameters</em> worksheet...</p>
        """)

        # economic parameters
        esliders["Economic Lifetime [years]"] = IntSlider(
            min=1, max=50, value=app_params["Economic Lifetime [years]"])
        esliders["WACC [%]"] = FloatSlider(min=0,
                                           max=1,
                                           step=0.01,
                                           readout_format=".2%",
                                           value=app_params["WACC [%]"])
        esliders["Natural Gas Cost [$/mmBTU]"] = FloatSlider(
            min=0,
            max=10,
            step=0.1,
            value=app_params["Natural Gas Cost [$/mmBTU]"])

        for key, slider in esliders.items():
            slider.observe(functools.partial(on_value_change, key),
                           names="value")

        econ_data = VBox([details] + [
            HBox([Label(labels[k], layout={"width": "250px"}), s])
            for k, s in esliders.items()
        ])

        all_sliders = {**rsliders, **esliders}

        center = VBox([presets, report_data, econ_data])

        return AppLayout(header=header,
                         center=center,
                         right_sidebar=right,
                         width="900px")
Пример #21
0
def all_options(analysis=True):
    options = Dropdown(options={
        'confined': 1,
        'leaky aquifer': 2,
        'flow barrier': 3,
        'recharge source': 4,
        'unconfined': 5
    },
                       value=1,
                       description='Aquifer type')
    approx = Checkbox(value=True, description='approx.')
    semilog = Checkbox(value=False, description='SemiLog')
    image = Checkbox(value=False, description='image')
    Q = FloatSlider(value=1000,
                    description=r'$Q$ [m$^3$/day]',
                    min=500,
                    max=1500,
                    step=500,
                    continuous_update=False)
    t = FloatLogSlider(value=1.0,
                       description=r'$t$ [day]',
                       base=10,
                       min=-1,
                       max=2,
                       step=0.2,
                       continuous_update=False)
    r = FloatSlider(value=200,
                    description=r'$r$ [m]',
                    min=100,
                    max=500,
                    step=100,
                    continuous_update=False)
    T = FloatSlider(value=300,
                    description=r'$T$ [m$^2$/day]',
                    min=100,
                    max=500,
                    step=100,
                    continuous_update=False)
    c = FloatLogSlider(value=1.e5,
                       description=r'$c$ [day]',
                       base=10,
                       min=2,
                       max=6,
                       step=1,
                       continuous_update=False)
    H = FloatSlider(value=2,
                    description=r'$b$ [m]',
                    min=2,
                    max=5,
                    step=1.5,
                    continuous_update=False)
    io = interactive_output(
        plot_theis, {
            'Q': Q,
            't': t,
            'r': r,
            'T': T,
            'approx': approx,
            'semilog': semilog,
            'itest': options,
            'image': image,
            'c': c,
            'H': H,
            'analysis': fixed(analysis)
        })
    return VBox([
        HBox([options]),
        HBox([Q, t, approx]),
        HBox([T, r, semilog]),
        HBox([H, c, image]), io
    ])
Пример #22
0
def draw_roaming_ui():
    global iter_slider, reset_button, color_it_button, juliabrot_button, canvases
    global drawing, uly_select, ulx_select, color_list, picker1, picker2, bump_ud_slider, hue_slider, sat_slider, val_slider
    global lry_select, lrx_select, color_it, modulo_slider, picker3, bump_lr_slider, zoom_slider, save_button

    # This establishes the size of the preview gui
    drawing = False
    color_it = True
    uly_select = 0
    ulx_select = 0
    lry_select = jgrid.settings.sizeY
    lrx_select = jgrid.settings.sizeX
    canvases = MultiCanvas(3,
                           width=jgrid.settings.sizeX * 2.5,
                           height=jgrid.settings.sizeY + 75)
    canvases[drawing_layer].font = '25px serif'
    canvases[drawing_layer].fill_style = '#aaaaaa'
    canvases[drawing_layer].line_width = 3
    canvases[interaction_layer].font = '35px serif'
    canvases[interaction_layer].fill_style = '#eee800'
    canvases[interaction_layer].stroke_style = '#ffffff'
    canvases[interaction_layer].line_width = 3
    iter_slider = FloatLogSlider(description='Iterations:',
                                 base=10,
                                 value=jgrid.settings.max_iterations,
                                 min=1,
                                 max=7,
                                 step=.01,
                                 continuous_update=False)
    iter_slider.observe(handler=iter_slider_handler, names='value')
    max_lr_bump = jgrid.settings.sizeX
    max_ud_bump = jgrid.settings.sizeY
    bump_ud_slider = IntSlider(description='Bump UD pix:',
                               value=1,
                               min=0,
                               max=max_ud_bump,
                               step=1,
                               continuous_update=False)
    bump_lr_slider = IntSlider(description='Bump LR pix:',
                               value=1,
                               min=0,
                               max=max_lr_bump,
                               step=1,
                               continuous_update=False)
    zoom_slider = FloatSlider(description='Zoom:',
                              value=2.0,
                              min=0.0,
                              max=1000.0,
                              step=.001,
                              continuous_update=False)
    #zoom_slider.observe(handler=zoom_button_handler, names='value')
    hue_slider = FloatSlider(description='Hue :',
                             value=jgrid.settings.hue,
                             min=0.0,
                             max=1.0,
                             step=.001,
                             continuous_update=False)
    sat_slider = FloatSlider(description='Sat:',
                             value=jgrid.settings.sat,
                             min=0.0,
                             max=1.0,
                             step=.01,
                             continuous_update=False)
    val_slider = FloatSlider(description='Val:',
                             value=jgrid.settings.val,
                             min=0.0,
                             max=1.0,
                             step=.02,
                             continuous_update=False)
    hue_slider.observe(handler=hue_slider_handler, names='value')
    sat_slider.observe(handler=sat_slider_handler, names='value')
    val_slider.observe(handler=val_slider_handler, names='value')
    modulo_slider = IntSlider(description='Modulo:',
                              value=jgrid.settings.modulo,
                              min=1,
                              max=1000000,
                              step=1,
                              continuous_update=False)
    modulo_slider.observe(handler=modulo_slider_handler, names='value')
    canvases[interaction_layer].on_mouse_down(on_mouse_down)
    canvases[interaction_layer].on_mouse_move(on_mouse_move)
    reset_button = Button(description='Zoom',
                          disabled=False,
                          button_style='',
                          tooltip='Click to use zoom slider setting for zoom',
                          icon='')
    reset_button.on_click(zoom_button_handler)
    save_button = Button(description='Save',
                         disabled=False,
                         button_style='',
                         tooltip='Click to save as JSON settings file',
                         icon='')
    save_button.on_click(save_button_handler)
    color_it_button = Button(description='Color/BW',
                             disabled=False,
                             button_style='',
                             tooltip='Click for BW or Color',
                             icon='')
    color_it_button.on_click(color_button_handler)
    juliabrot_button = Button(description='JM Mode',
                              disabled=False,
                              button_style='',
                              tooltip='Click for Julia or Mandelbrot',
                              icon='')
    juliabrot_button.on_click(juliabrot_button_handler)
    undo_button = Button(description='Undo',
                         disabled=False,
                         button_style='',
                         tooltip='Click to revert to last view',
                         icon='')
    undo_button.on_click(undo_button_handler)
    bleft_button = Button(description='Bump L',
                          disabled=False,
                          button_style='',
                          tooltip='Click to nudge left num bump LR pixels',
                          icon='')
    bleft_button.on_click(bleft_button_handler)
    bright_button = Button(description='Bump R',
                           disabled=False,
                           button_style='',
                           tooltip='Click to nudge right num bump LR pixels',
                           icon='')
    bright_button.on_click(bright_button_handler)
    bup_button = Button(description='Bump U',
                        disabled=False,
                        button_style='',
                        tooltip='Click to nudge up num bump UD pixels',
                        icon='')
    bup_button.on_click(bup_button_handler)
    bdown_button = Button(description='Bump D',
                          disabled=False,
                          button_style='',
                          tooltip='Click to nudge down bump UD pixels',
                          icon='')
    bdown_button.on_click(bdown_button_handler)
    picker1 = ColorPicker(description='M Color:', value=jgrid.settings.m_color)
    #picker2 = ColorPicker(description='Color 1:', value='#fff800')
    #picker3 = ColorPicker(description='Color 2:', value='#fff800')
    picker1.observe(color_picker1_handler, names='value')
    #picker2.observe(color_picker2_handler, names='value')
    #picker3.observe(color_picker3_handler, names='value')
    color_list = Dropdown(disabled=False,
                          options=[('Rainbow', 1), ('Classic', 2), ('Log', 3),
                                   ('RGB Max Iter', 4), ('Rainbow 2', 5)],
                          value=jgrid.settings.color_mode,
                          description='Color Mode:',
                          tooltip='Select built-in coloring options')
    color_list.observe(color_select_handler, names='value')
    draw_fractal(canvases, jgrid.tile_list)
    display_info(canvases, jgrid)
    return AppLayout(center=canvases,
                     header=HBox((iter_slider, bump_ud_slider, bump_lr_slider,
                                  zoom_slider)),
                     right_sidebar=VBox(
                         (picker1, color_list, hue_slider, sat_slider,
                          val_slider, modulo_slider)),
                     footer=HBox(
                         (bleft_button, bright_button, bup_button,
                          bdown_button, color_it_button, juliabrot_button,
                          reset_button, undo_button, save_button)))
Пример #23
0
    rho=IntSlider(value=3300.,
                  min=1000.,
                  max=3700.,
                  step=100.,
                  description='Density of Planet (kg/m$^3$)',
                  continuous_update=True,
                  readout=True,
                  readout_format='.0f',
                  style=style,
                  layout=layout),
    M_Earth=FloatLogSlider(value=5.97219e24,
                           base=10,
                           min=22,
                           max=27,
                           step=1,
                           description='Mass of Planet (kg)',
                           continuous_update=False,
                           readout=True,
                           readout_format='.1e',
                           style=style,
                           layout=layout))
output = interactive_plot.children[-1]
interactive_plot

# <i>Caption</i>. Earth-mass, uniformly-dense silicate body. Many of the finer details about a body's interior structure are complicated, so this calculation is simplified and assumes we have a "homogeneous" spherical body [same material (no separation of a mantle and core), density, and temperature throughout]. For reference, Earth's present-day mass is 6.0 x 10$^{24}$ kg, and the average density of a rock (silicate) under standard conditions is 3300 kg/m$^3$.

# ## Weighing Dependencies of the Corotation Limit on Planet Density and Mass
# In addition to increasing the rotation rate of a body, decreasing the density of a material also helps a body exceed the corotation limit. Decreasing the density of the material can indicate that the material is hotter. It is easier to exceed the corotation limit when the body is warmer.
#
# However, it is easiest to cross the threshold between planet and synestia when decreasing the length of day for the planet (the time it takes for a planet to complete one rotation) as opposed to changing the planet's mass or density. The corotation limit is most sensitive to the rate of rotation of a body. The faster a planet spins, the more likely it will transition into a synestia. This is why it is easier for planets with greater angular momentum, particularly those involved in giant impacts, to become synestias.
Пример #24
0
    def __init__(self, layer_state):

        self.state = layer_state

        self.widget_lighting = Checkbox(description='lighting',
                                        value=self.state.lighting)
        link((self.state, 'lighting'), (self.widget_lighting, 'value'))

        render_methods = 'NORMAL MAX_INTENSITY'.split()
        self.widget_render_method = Dropdown(options=render_methods,
                                             value=self.state.render_method,
                                             description='method')
        link((self.state, 'render_method'),
             (self.widget_render_method, 'value'))

        self.size_options = [32, 64, 128, 128 + 64, 256, 256 + 128, 512]
        options = [(str(k), k) for k in self.size_options]
        self.widget_max_resolution = Dropdown(options=options,
                                              value=128,
                                              description='max resolution')
        link((self.state, 'max_resolution'),
             (self.widget_max_resolution, 'value'))

        if self.state.vmin is None:
            self.state.vmin = 0

        self.widget_data_min = FloatSlider(description='min',
                                           min=0,
                                           max=1,
                                           value=self.state.vmin,
                                           step=0.001)
        link((self.state, 'vmin'), (self.widget_data_min, 'value'))
        dlink((self.state, 'data_min'), (self.widget_data_min, 'min'))
        dlink((self.state, 'data_max'), (self.widget_data_min, 'max'))

        if self.state.vmax is None:
            self.state.vmax = 1

        self.widget_data_max = FloatSlider(description='max',
                                           min=0,
                                           max=1,
                                           value=self.state.vmax,
                                           step=0.001)
        link((self.state, 'vmax'), (self.widget_data_max, 'value'))
        dlink((self.state, 'data_min'), (self.widget_data_max, 'min'))
        dlink((self.state, 'data_max'), (self.widget_data_max, 'max'))

        self.widget_clamp_min = Checkbox(description='clamp minimum',
                                         value=self.state.clamp_min)
        link((self.state, 'clamp_min'), (self.widget_clamp_min, 'value'))

        self.widget_clamp_max = Checkbox(description='clamp maximum',
                                         value=self.state.clamp_max)
        link((self.state, 'clamp_max'), (self.widget_clamp_max, 'value'))

        self.widget_color = ColorPicker(value=self.state.color,
                                        description='color')
        link((self.state, 'color'), (self.widget_color, 'value'), color2hex)

        if self.state.alpha is None:
            self.state.alpha = 1

        self.widget_opacity = FloatSlider(description='opacity',
                                          min=0,
                                          max=1,
                                          value=self.state.alpha,
                                          step=0.001)
        link((self.state, 'alpha'), (self.widget_opacity, 'value'))

        self.widget_opacity_scale = FloatLogSlider(
            description='opacity scale',
            base=10,
            min=-3,
            max=3,
            value=self.state.opacity_scale,
            step=0.01)
        link((self.state, 'opacity_scale'),
             (self.widget_opacity_scale, 'value'))

        # FIXME: this should be fixed
        # self.widget_reset_zoom = Button(description="Reset zoom")
        # self.widget_reset_zoom.on_click(self.state.viewer_state.reset_limits)

        super().__init__([
            self.widget_render_method,
            self.widget_lighting,
            self.widget_data_min,
            self.widget_data_max,
            self.widget_clamp_min,
            self.widget_clamp_max,
            self.widget_max_resolution,  # self.widget_reset_zoom,
            self.widget_color,
            self.widget_opacity,
            self.widget_opacity_scale
        ])
Пример #25
0
label_dict = {
    0: 'threshold',
    1: 'prior strength',
    2: '1 star ratings (#1)',
    3: '2 star ratings (#1)',
    4: '3 star ratings (#1)',
    5: '4 star ratings (#1)',
    6: '5 star ratings (#1)',
    7: '1 star ratings (#2)',
    8: '2 star ratings (#2)',
    9: '3 star ratings (#2)',
    10: '4 star ratings (#2)',
    11: '5 star ratings (#2)'
}
interactive_plot.children = [
    i if k != 1 else FloatLogSlider(value=1, base=10, min=-2, max=2)
    for k, i in enumerate(interactive_plot.children)
]
style = {'description_width': 'initial'}
for k, child in enumerate(interactive_plot.children):
    if k == 12:
        continue
    child.description = label_dict[k]
    child.style = style
    #help(child)
    #print(k,child)

order = [0, 1, 2, 7, 3, 8, 4, 9, 5, 10, 6, 11, 12]
interactive_plot.children = [interactive_plot.children[k] for k in order]
g = GridBox(children=interactive_plot.children[:-1],
            layout=Layout(width='100%',