def __init__(self, training_length=None, update_interval=100,
bar_length=50):
self._training_length = training_length
if training_length is not None:
self._init_status_template()
self._update_interval = update_interval
self._recent_timing = []
self._total_bar = FloatProgress(description='total',
min=0, max=1, value=0,
bar_style='info')
self._total_html = HTML()
self._epoch_bar = FloatProgress(description='this epoch',
min=0, max=1, value=0,
bar_style='info')
self._epoch_html = HTML()
self._status_html = HTML()
self._widget = VBox([HBox([self._total_bar, self._total_html]),
HBox([self._epoch_bar, self._epoch_html]),
self._status_html])
python类HTML的实例源码
def make_header(self):
img = io.open(os.path.join(mdt.PACKAGEPATH, '_static_data/img/banner.png'), 'r+b').read()
encoded = base64.b64encode(img).decode('ascii')
img = '<img style="max-width:100%" src=data:image/png;base64,'+('%s>'%encoded)
links = [self._makelink(*args) for args in
(("http://moldesign.bionano.autodesk.com/", 'About'),
("https://github.com/autodesk/molecular-design-toolkit/issues", 'Issues'),
("http://bionano.autodesk.com/MolecularDesignToolkit/explore.html",
"Tutorials"),
('http://autodesk.github.io/molecular-design-toolkit/', 'Documentation'),
('https://lifesciences.autodesk.com/', 'Adsk LifeSci')
)]
linkbar = ' '.join(links)
return ipy.HTML(("<span style='float:left;font-size:0.8em;font-weight:bold'>Version: "
"{version}</span>"
"<span style='float:right'>{linkbar}</span>"
"<p>{img}</p>").format(img=img, linkbar=linkbar, version=mdt.__version__))
visualization.py 文件源码
项目:notebook-molecular-visualization
作者: Autodesk
项目源码
文件源码
阅读 23
收藏 0
点赞 0
评论 0
def __init__(self, pyname, getversion=False):
self.displays = {}
self.pyname = pyname
self.getversion = getversion
self.nbv_display = VBox()
self.widgets_display = VBox()
self.warning = ipywidgets.HTML()
super().__init__()
children = [ipywidgets.HTML("<h4><center>%s</center></h4>" % self.pyname,
layout=ipywidgets.Layout(align_self='center')),
ipywidgets.HTML(self.HEADER)]
for location in install.nbextension_ordered_paths():
self.state = install.get_installed_versions(self.pyname, self.getversion)
props = self._get_props(location)
self.displays[location] = ExtensionInstallLocation(self, props)
children.append(self.displays[location])
children.append(self.warning)
self.children = children
self._highlight_active()
visualization.py 文件源码
项目:notebook-molecular-visualization
作者: Autodesk
项目源码
文件源码
阅读 22
收藏 0
点赞 0
评论 0
def __init__(self, parent, props):
super().__init__(layout=ipywidgets.Layout(align_items='flex-end'))
self.parent = parent
self.props = props
self.install_button = ipywidgets.Button()
self.install_button.add_class('nbv-table-row')
self.remove_button = ipywidgets.Button(description='remove')
self.remove_button.add_class('nbv-table-row')
self.html = ipywidgets.HTML()
if self.props['writable'] == 'INSTALLED':
self.chidlren = (self.html,)
else:
self.children = (self.html, self.install_button, self.remove_button)
self.install_button.on_click(self.install)
self.remove_button.on_click(self.uninstall)
self.rerender()
def __init__(self, image, client):
self._err = False
self._client = client
self.image = image
self.status = ipy.HTML(layout=ipy.Layout(width="20px"))
self.html = ipy.HTML(value=image, layout=ipy.Layout(width="400px"))
self.html.add_class('nbv-monospace')
self.msg = ipy.HTML(layout=ipy.Layout(width='300px'))
self.button = ipy.Button(layout=ipy.Layout(width='100px'))
if mdt.compute.config.devmode:
self.button.on_click(self.rebuild)
else:
self.button.on_click(self.pull)
self._reactivate_button()
self._set_status_value()
super().__init__(children=[self.status, self.html, self.button, self.msg])
def __init__(self, value=None, units=None, **kwargs):
kwargs.setdefault('display', 'flex')
kwargs.setdefault('flex_flow','row wrap')
super().__init__(layout=ipy.Layout(display='flex', flex_flow='row wrap'),
**process_widget_kwargs(kwargs))
self.textbox = ipy.Text()
self.textbox.observe(self._validate, 'value')
self._error_msg = None
if units is not None:
self.dimensionality = u.get_units(units).dimensionality
else:
self.dimensionality = None
self._validated_value = None
self.validated = ipy.HTML(self.INVALID)
self.children = [self.textbox, self.validated]
self._is_valid = False
if value is not None:
self.value = value
def _set_tool_state(self, *args):
""" Observes the `viewer.selected_atom_indices` list and updates the tool panel accordingly
Returns:
Tuple(ipywidgets.BaseWidget): children of the tool panel
"""
atoms = self.viewer.selected_atoms
with self.viewer.hold_trait_notifications():
for shape in self._widgetshapes.values():
if shape == '_axes':
self.viewer.draw_axes(False)
else:
self.viewer.remove(shape)
self._widgetshapes = {}
if len(atoms) == 1:
self._setup_atom_tools(atoms)
elif len(atoms) == 2:
self._setup_distance_tools(atoms)
elif len(atoms) == 3:
self._setup_angle_tools(atoms)
elif len(atoms) == 4:
self._setup_dihedral_tools(atoms)
else:
self.tool_holder.children = (ipy.HTML('Please click on 1-4 atoms'),)
def update(self, *args):
jobstat = self._job.status
status_display = StatusView(self._job)
if self._job.inputs:
input_browser = FileBrowser(self._job.inputs, margin=5, font_size=9)
else:
input_browser = ipy.HTML('No input files')
file_browser = ipy.Tab([input_browser])
file_browser.set_title(0, 'Input files')
if jobstat == status.FINISHED:
output_files = self._job.get_output()
if self._job.stdout:
output_files['Standard output'] = self._job.stdout
if self._job.stderr:
output_files['Standard error'] = self._job.stderr
output_browser = FileBrowser(output_files, margin=5, font_size=9)
file_browser.children = [input_browser, output_browser]
file_browser.set_title(1, 'Output files')
self.children = [status_display, file_browser]
else:
update_button = ipy.Button(description='Update')
update_button.on_click(self.update)
self.children = [status_display, update_button, file_browser]
def _update(self, box):
def on_click(b):
if b.description == 'up one level':
self.path = os.path.split(self.path)[0]
else:
self.path = self.path + "/" + b.description
self._update_files()
self._update(box)
buttons = []
# if self.files:
button = widgets.Button(description='up one level', background_color='#aaaaaa')
button.on_click(on_click)
buttons.append(button)
for f in self.dirs:
button = widgets.Button(description=f, background_color='#d0d0ff')
button.on_click(on_click)
buttons.append(button)
for f in self.files:
button = widgets.Button(description=f)
button.on_click(on_click)
buttons.append(button)
box.children = tuple([widgets.HTML("You have selected: <h3>%s</h3>" % (self.path,))] + buttons)
def _update(self, box):
def on_click(b):
if b.description == '..':
self.path = os.path.split(self.path)[0]
else:
self.path = os.path.join(self.path, b.description)
self._update_files()
self._update(box)
buttons = []
for f in self.dirs:
button = widgets.Button(description=f, background_color='#d0d0ff', layout=widgets.Layout(width='50%'))
button.on_click(on_click)
buttons.append(button)
for f in self.files:
button = widgets.Button(description=f, layout=widgets.Layout(width='50%'))
button.style.button_color = 'powderblue'
button.on_click(on_click)
buttons.append(button)
box.children = tuple([widgets.HTML("%s" % (self.path,))] + buttons)
# example usage:
# f = FileBrowser()
# f.widget()
# <interact with widget, select a path>
# in a separate cell:
# f.path # returns the selected path
def __init__(self, entries, log_report='LogReport'):
self._entries = entries
self._log_report = log_report
self._default_row = dict((e, None) for e in entries)
self._widget = HTML()
self.count = 0
self.update([])
def calc_G_options(self):
'''Widgets for method for computing soil heat flux'''
self.w_G_form = widgets.ToggleButtons(
description='Select method for soil heat flux',
options={
'Ratio of soil net radiation': 1,
'Constant or measured value': 0,
'Time dependent (Santanelo & Friedl)': 2},
value=self.G_form,
width=300)
self.w_Gratio = widgets.BoundedFloatText(
value=self.Gratio, min=0, max=1, description='G ratio (G/Rn)', width=80)
self.w_Gconstant = widgets.FloatText(
value=self.Gconstant, description='Value (W m-2)', width=80)
self.w_Gconstant.visible = False
self.w_Gconstanttext = widgets.HTML(
value="Set G value (W m-2), ignored if G is present in the input file")
self.w_Gconstanttext.visible = False
self.w_Gconstant.visible = False
self.w_G_amp = widgets.BoundedFloatText(
value=self.G_amp, min=0, max=1, description='Amplitude (G/Rn)', width=80)
self.w_G_amp.visible = False
self.w_G_phase = widgets.BoundedFloatText(
value=self.G_phase, min=-24, max=24, description='Time Phase (h)', width=80)
self.w_G_phase.visible = False
self.w_G_shape = widgets.BoundedFloatText(
value=self.G_shape, min=0, max=24, description='Time shape (h)', width=80)
self.w_G_shape.visible = False
trajectory_viewer.py 文件源码
项目:notebook-molecular-visualization
作者: Autodesk
项目源码
文件源码
阅读 27
收藏 0
点赞 0
评论 0
def make_controls(self):
self.playbutton = ipy.Play(value=0,
min=0,
max=self.traj.num_frames-1)
self.slider = ipy.IntSlider(value_selects='framenum', value=0,
description='Frame:', min=0, max=len(self.traj)-1,
readout=False)
self.readout = ipy.HTML(value='/%d' % (self.traj.num_frames - 1))
self.annotation = ipy.HTML()
traitlets.link((self.playbutton, 'value'), (self.slider, 'value'))
traitlets.link((self.slider, 'value'), (self, 'current_frame'))
return VBox((self.annotation,
HBox((self.playbutton, self.slider, self.readout))))
def __init__(self):
self.client = None
self.warning = ipy.HTML(description='<b>Engine status:</b>', value=SPINNER)
self.devmode_label = ipy.Label('Use local docker images (developer mode)',
layout=ipy.Layout(width='100%'))
self.devmode_button = ipy.Checkbox(value=mdt.compute.config.devmode,
layout=ipy.Layout(width='15px'))
self.devmode_button.observe(self.set_devmode, 'value')
self.engine_config_description = ipy.HTML('Docker host with protocol and port'
' (e.g., <code>http://localhost:2375</code>).'
' If blank, this'
' defaults to the docker engine configured at '
'your command line.',
layout=ipy.Layout(width='100%'))
self.engine_config_value = ipy.Text('blank', layout=ipy.Layout(width='100%'))
self.engine_config_value.add_class('nbv-monospace')
self.image_box = ipy.Box()
self._reset_config_button = ipy.Button(description='Reset',
tooltip='Reset to applied value')
self._apply_changes_button = ipy.Button(description='Apply',
tooltip='Apply for this session')
self._save_changes_button = ipy.Button(description='Make default',
tooltip='Make this the default for new sessions')
self._reset_config_button.on_click(self.reset_config)
self._apply_changes_button.on_click(self.apply_config)
self._save_changes_button.on_click(self.save_config)
self.children = [self.warning,
VBox([self.engine_config_description,
self.engine_config_value]),
HBox([self._reset_config_button,
self._apply_changes_button,
self._save_changes_button]),
HBox([self.devmode_button, self.devmode_label]),
self.image_box]
self.reset_config()
super().__init__(children=self.children)
self.connect_to_engine()
def __init__(self):
from pip._vendor.packaging import version
super().__init__()
self.version = ipy.HTML('<div class="nbv-loader"></div>')
self.textarea = ipy.Textarea(layout=ipy.Layout(width='700px', height='300px'))
threading.Thread(target=self.version_check).start()
p1 = os.path.join(mdt.PACKAGEPATH, "HISTORY.rst")
p2 = os.path.join(mdt.PACKAGEPATH, "..", "HISTORY.rst")
if os.path.exists(p1):
path = p1
elif os.path.exists(p2):
path = p2
else:
path = None
if path is not None:
with open(path, 'r') as infile:
self.textarea.value = infile.read()
else:
self.textarea.value = 'HISTORY.rst not found'
self.textarea.disabled = True
self.children = (self.version, self.textarea)
def __init__(self):
from moldesign.compute import packages
self.toggle = ipy.ToggleButtons(options=['Python libs', 'Executables'],
value='Python libs')
self.toggle.observe(self.switch_pane, 'value')
self.pyheader = ipy.HTML(
'<span class="nbv-table-header nbv-width-med">Package</span> '
'<span class="nbv-table-header nbv-width-sm">Local version</span> '
'<span class="nbv-table-header nbv-width-sm">Expected version</span>'
'<span class="nbv-width-sm"> </span>' # empty space
'<span class="nbv-table-header nbv-width-lg">'
' Run calculations...</span>'
'<span class="nbv-table-header nbv-width-med"> </span>')
self.python_libs = ipy.VBox([self.pyheader] + [PyLibConfig(p) for p in packages.packages])
self.exeheader = ipy.HTML(
'<span class="nbv-table-header nbv-width-med">Program</span> '
'<span class="nbv-table-header nbv-width-sm">Local version</span> '
'<span class="nbv-table-header nbv-width-sm">Docker version</span>'
'<span class="nbv-width-sm"> </span>' # empty space
'<span class="nbv-table-header nbv-width-lg">'
' Run calculations...</span>'
'<span class="nbv-table-header nbv-width-med"> </span>')
self.executables = ipy.VBox([self.exeheader] + [ExeConfig(p) for p in packages.executables])
self.children = [self.toggle, self.python_libs]
super().__init__(children=self.children)
def __init__(self, xface):
self.xface = xface
if xface.is_installed():
if xface.version_flag:
v = xface.get_installed_version()
else:
v = INSTALLED
else:
v = MISSING
self.maintext = ipy.HTML(
('<span class="nbv-table-row nbv-width-med nbv-monospace">'
' {xface.name}</span> '
'<span class="nbv-table-row nbv-monospace nbv-width-sm">'
' {localversion}</span> '
'<span class="nbv-table-row nbv-monospace nbv-width-sm">'
' {xface.expectedversion}</span>'
'<span class="nbv-width-sm nbv-table-row"> </span>' # empty space
)
.format(xface=xface, localversion=v))
self.selector = ipy.ToggleButtons(options=['in docker', 'locally'],
value='in docker',
button_style='info')
self.selector.add_class('nbv-width-lg')
self.selector.add_class("nbv-table-row")
self.selector.observe(self._toggle, 'value')
self.path = ipy.HTML(layout=ipy.Layout(width='150px', font_size='x-small'),
value=xface.path if xface.path is not None else '',)
self.save_button = ipy.Button(description='Make default', layout=ipy.Layout(width='100px'))
self.save_button.on_click(self.save_selection)
self.save_button.add_class('nbv-table-row')
children = [self.maintext, self.selector, self.save_button]
super().__init__(children=children,
layout=ipy.Layout(width='100%', align_items='flex-end'))
configurator.py 文件源码
项目:notebook-molecular-visualization
作者: Autodesk
项目源码
文件源码
阅读 35
收藏 0
点赞 0
评论 0
def __init__(self, paramlist, paramdefs, title=None):
super(Configurator, self).__init__(layout=ipy.Layout(display='flex',
flex_flow='column',
align_self='flex-start',
align_items='stretch',
max_width='100%'))
self.paramlist = paramlist
self.paramdefs = paramdefs
self.apply_button = ipy.Button(description='Apply')
self.apply_button.on_click(self.apply_values)
self.reset_button = ipy.Button(description='Reset')
self.reset_button.on_click(self.reset_values)
self.buttons = ipy.Box([self.reset_button, self.apply_button],
layout=ipy.Layout(align_self='center'))
self.selectors = collections.OrderedDict([(p.name, ParamSelector(p)) for p in paramdefs])
self.reset_values()
title = utils.if_not_none(title, 'Configuration')
self.title = ipy.HTML('<center><h4>%s</h4></center><hr>' % title,
align_self='center')
self.currentconfig = ipy.Textarea(description='<i>Current params</i>',
disabled=True,
value=self._pretty_print_config(),
layout=ipy.Layout(width='350px', min_height='300px',
max_height='500px',
display='flex', flex_flow='column'))
self.middle = HBox([VBox(list(self.selectors.values())), self.currentconfig])
self.children = [self.title, self.middle, self.buttons]
parameterization.py 文件源码
项目:notebook-molecular-visualization
作者: Autodesk
项目源码
文件源码
阅读 19
收藏 0
点赞 0
评论 0
def __init__(self, errormessages, molin, molout=None):
self.molin = molin
self.molout = molout
self.msg = errormessages
self.status = ipy.HTML('<h4>Forcefield assignment: %s</h4>' %
('Success' if molout else 'FAILED'))
self.listdesc = ipy.HTML('<b>Errors / warnings:</b>')
error_display = collections.OrderedDict((e.short, e) for e in self.msg)
if len(error_display) == 0:
error_display['No errors or warnings.'] = StructureOk()
self.errorlist = ipy.Select(options=error_display)
self.errmsg = ipy.HTML('-')
self.viewer = self.molin.draw3d()
self.viewer.ribbon(opacity=0.7)
if self.errorlist.value is not None:
self.switch_display({'old': self.errorlist.value, 'new': self.errorlist.value})
self.errorlist.observe(self.switch_display, 'value')
children = (self.status,
HBox([self.viewer, VBox([self.listdesc, self.errorlist])]),
self.errmsg)
super().__init__(children=children, layout=ipy.Layout(display='flex', flex_flow='column'))
def __init__(self, job, **kwargs):
kwargs.setdefault('orientation', 'vertical')
super(StatusView,self).__init__(**kwargs)
self._job = job
stat = job.status
statstring = self.STATUS_STRING % (job.name,
str(job.engine),
job.jobid,
job.image,
job.command,
stat)
try:
statstring += '<br><b>Exit code: </b> %s</br>' % job.exitcode
except JobStillRunning:
pass
text = ipy.HTML(statstring)
if stat == status.QUEUED:
bar_spec = dict(value=1, bar_style='danger')
elif stat == status.RUNNING:
bar_spec = dict(value=50, bar_style='info')
elif stat == status.FINISHED:
bar_spec = dict(value=100, bar_style='success')
else:
bar_spec = dict(value=100, bar_style='danger')
bar = ipy.FloatProgress(**bar_spec)
self.children = [text, bar]
def helptip(self,obj):
"""Return HTML code formatting a tooltip if help is available"""
helptext = obj.__doc__
return "" if (not self.p.tooltips or not helptext) else helptext
def my_iplot(figure_or_data, show_link=False, link_text='Export to plot.ly',
validate=True, image=None, filename='plot_image', image_width=800,
image_height=600) :
plot_html, plotdivid, width, height = _plot_html(
figure_or_data, show_link, link_text, validate,
'100%', 525, global_requirejs=True)
#display(HTML(plot_html))
wid = widgets.HTML(
value=plot_html,
placeholder='Some HTML',
description='Some HTML',
disabled=False
)
return (wid, plotdivid)
def fileSelector(self):
"""
:return: An ipython widget containing a file selector. If you simply have this method as the last
line of a notebook cell, you'll see it. otherwise you need to do IPython.display.display(fileSelector())
"""
params = get_default_params()
arrayed_analysis_default_filename = params['arrayed_analysis_default_filename']
myFiles = self.getFilelist()
myFiles.sort()
myFiles = [path.join(path.basename(path.dirname(p)),path.basename(p)) for p in myFiles]
fileSelector=ipywidgets.Select(options=myFiles, height=300,width=600)
if arrayed_analysis_default_filename in myFiles:
fileSelector.value = arrayed_analysis_default_filename
else:
fileSelector.value=myFiles[0]
title=ipywidgets.HTML(value="Pick the file you want to load here") #IPN2: HTMLWidget
#IPython.display.display(title)
#IPython.display.display(fileSelector)
def _fileSelector_updated(widget=None):
if(self.filename!=fileSelector.value):
self.filename=fileSelector.value
arrayed_analysis_default_filename = self.filename
params['arrayed_analysis_default_filename'] = arrayed_analysis_default_filename
update_default_params(params)
try:
fileSelector.observe(_fileSelector_updated)
except AttributeError:
fileSelector.on_trait_change(_fileSelector_updated)
_fileSelector_updated()
return ipywidgets.Box(children=(title,fileSelector))
def _default_html_widget(self):
return IPyWHTML(layout=self.layouts['html'])
def show_bars(self):
self._pbar = ipywidgets.IntProgress()
self._pbar_desc = ipywidgets.HTML(value=self._status_initial)
self._pbar_total = ipywidgets.IntProgress()
self._pbar_total_desc = ipywidgets.HTML(value=self._status_initial)
display(ipywidgets.VBox([ipywidgets.HBox([self._pbar_total, self._pbar_total_desc]),
ipywidgets.HBox([self._pbar, self._pbar_desc])]))
def define_site_description_image(self):
'''Widgets for site description parameters'''
self.w_latBut = widgets.Button(description='Browse Latitude Image')
self.w_lat = widgets.Text(
description='(Decimal degrees)', value='0', width=500)
self.w_lonBut = widgets.Button(description='Browse Longitude Image')
self.w_lon = widgets.Text(
description='(Decimal degrees):', value='0', width=500)
self.w_altBut = widgets.Button(description='Browse Altitude Image')
self.w_alt = widgets.Text(
description='(m):', value='0', width=500)
self.w_stdlon_But = widgets.Button(description='Browse Standard Longitude Image')
self.w_stdlon = widgets.Text(
description='(Decimal degrees):', value='0', width=500)
self.w_z_u_But = widgets.Button(description='Wind meas. height')
self.w_z_u = widgets.Text(
description='(m):', value=str(self.zu), width=500)
self.w_z_T_But = widgets.Button(description='Air temp. meas. height')
self.w_z_T = widgets.Text(
description='(m):', value=str(self.zt), width=500)
self.site_page = widgets.VBox([widgets.HTML('Select latitude image or type a constant value'),
widgets.HBox([self.w_latBut, self.w_lat]),
widgets.HTML('Select longitude image or type a constant value'),
widgets.HBox([self.w_lonBut, self.w_lon]),
widgets.HTML('Select altitude image or type a constant value'),
widgets.HBox([self.w_altBut, self.w_alt]),
widgets.HTML('Select standard longitude image or type a constant value'),
widgets.HBox([self.w_stdlon_But, self.w_stdlon]),
widgets.HTML('Select wind measurement height image or type a constant value'),
widgets.HBox([self.w_z_u_But, self.w_z_u]),
widgets.HTML('Select air temperature measurement height image or type a constant value'),
widgets.HBox([self.w_z_T_But, self.w_z_T])])
self.w_latBut.on_click(
lambda b: self._on_input_clicked(b, 'Latitude', self.w_lat))
self.w_lonBut.on_click(
lambda b: self._on_input_clicked(b, 'Longitude', self.w_lon))
self.w_altBut.on_click(
lambda b: self._on_input_clicked(b, 'Altitude', self.w_alt))
self.w_stdlon_But.on_click(
lambda b: self._on_input_clicked(b, 'Standard Longitude', self.w_stdlon))
self.w_z_u_But.on_click(
lambda b: self._on_input_clicked(b, 'Wind Measurement Height', self.w_z_u))
self.w_z_T_But.on_click(
lambda b: self._on_input_clicked(b, 'Air Temperature Measurement Height', self.w_z_T))
def surface_properties_time_series(self):
'''Widgets for canopy properties'''
self.w_PT = widgets.BoundedFloatText(
value=self.max_PT, min=0, description="Max. alphaPT", width=80)
self.w_LAD = widgets.BoundedFloatText(
value=self.x_LAD, min=0, description="LIDF param.", width=80)
self.w_LAD.visible = False
self.w_leafwidth = widgets.BoundedFloatText(
value=self.leaf_width, min=0.001, description="Leaf width", width=80)
self.w_zsoil = widgets.BoundedFloatText(
value=self.z0soil, min=0, description="soil roughness", width=80)
# Landcover classes and values come from IGBP Land Cover Type Classification
self.w_lc = widgets.Dropdown(
options={
'WATER': 0,
'CONIFER EVERGREEN': 1,
'BROADLEAVED EVERGREEN': 2,
'CONIFER DECIDUOUS': 3,
'BROADLEAVED DECIDUOUS': 4,
'FOREST MIXED': 5,
'SHRUB CLOSED': 6,
'SHRUB OPEN': 7,
'SAVANNA WOODY': 8,
'SAVANNA': 9,
'GRASS': 10,
'WETLAND': 11,
'CROP': 12,
'URBAN': 13,
'CROP MOSAIC': 14,
'SNOW': 15,
'BARREN': 16
},
value=self.landcover,
description="Land Cover Type",
width=200)
lcText = widgets.HTML(value='''Land cover information is used to estimate roughness. <BR>
For shrubs, conifers and broadleaves we use the model of <BR>
Schaudt & Dickinson (2000) Agricultural and Forest Meteorology. <BR>
For crops and grasses we use a fixed ratio of canopy heigh''', width=100)
self.calc_row_options()
self.veg_page = widgets.VBox([widgets.HBox([self.w_PT, self.w_LAD, self.w_leafwidth]),
widgets.HBox([self.w_zsoil, self.w_lc, lcText]),
widgets.HBox([self.w_row, self.w_rowaz])],
background_color='#EEE')
def surface_properties_image(self):
'''Widgets for canopy properties'''
self.w_PT_But = widgets.Button(
description='Browse Initial alphaPT Image')
self.w_PT = widgets.Text(description=' ', value=str(self.max_PT), width=500)
self.w_LAD_But = widgets.Button(
description='Browse Leaf Angle Distribution Image')
self.w_LAD = widgets.Text(description='(degrees)', value=str(self.x_LAD), width=500)
self.w_leafwidth_But = widgets.Button(
description='Browse Leaf Width Image')
self.w_leafwidth = widgets.Text(description='(m)', value=str(self.leaf_width), width=500)
self.w_zsoil_But = widgets.Button(
description='Browse Soil Roughness Image')
self.w_zsoil = widgets.Text(description='(m)', value=str(self.z0soil), width=500)
self.w_lc_But = widgets.Button(
description='Browse Land Cover Image')
# Landcover classes and values come from IGBP Land Cover Type Classification
self.w_lc = widgets.Dropdown(
options={
'CROP': 12,
'GRASS': 10,
'SHRUB': 6,
'CONIFER': 1,
'BROADLEAVED': 4},
value=self.landcover,
description=" ",
width=300)
lcText = widgets.HTML(value='''Land cover information is used to estimate roughness. <BR>
For shrubs, conifers and broadleaves we use the model of <BR>
Schaudt & Dickinson (2000) Agricultural and Forest Meteorology. <BR>
For crops and grasses we use a fixed ratio of canopy height<BR>''', width=600)
self.calc_row_options()
self.veg_page = widgets.VBox([widgets.HTML('Select alphaPT image or type a constant value'),
widgets.HBox([self.w_PT_But, self.w_PT]),
widgets.HTML('Select leaf angle distribution image or type a constant value'),
widgets.HBox([self.w_LAD_But, self.w_LAD]),
widgets.HTML('Select leaf width image or type a constant value'),
widgets.HBox([self.w_leafwidth_But, self.w_leafwidth]),
widgets.HTML('Select soil roughness image or type a constant value'),
widgets.HBox([self.w_zsoil_But, self.w_zsoil]),
widgets.HTML('Select landcover image or type a constant value'),
widgets.HBox([self.w_lc_But, self.w_lc]),
lcText,
widgets.HBox([self.w_row, self.w_rowaz])], background_color='#EEE')
self.w_PT_But.on_click(
lambda b: self._on_input_clicked(b, 'Initial alphaPT', self.w_PT))
self.w_LAD_But.on_click(
lambda b: self._on_input_clicked(b, 'Leaf Angle Distribution', self.w_LAD))
self.w_leafwidth_But.on_click(
lambda b: self._on_input_clicked(b, 'Leaf Width', self.w_leafwidth))
self.w_zsoil_But.on_click(
lambda b: self._on_input_clicked(b, 'Soil Roughness', self.w_zsoil))
self.w_lc_But.on_click(
lambda b: self._input_dropdown_clicked(b, 'Land Cover', self.w_lc))
def resistances_image(self):
'''Widgets for resistance model selection'''
self.w_res = widgets.ToggleButtons(
description='Select TSEB model to run:',
options={
'Kustas & Norman 1999': 0,
'Choudhury & Monteith 1988': 1,
'McNaughton & Van der Hurk': 2},
value=self.res,
width=300)
self.w_PT_But = widgets.Button(
description='Browse Initial alphaPT Image')
self.w_PT = widgets.Text(description=' ', value=str(self.max_PT), width=500)
self.w_KN_b_But = widgets.Button(
description = 'Browse Resistance Parameter b Image')
self.w_KN_b = widgets.Text(
value=str(self.KN_b), description=' ', width=500)
self.w_KN_c_But = widgets.Button(
description = ('Browse Resistance Parameter c image'))
self.w_KN_c = widgets.Text(
value=str(self.KN_c), description='(m s-1 K-1/3)', width=500)
self.w_KN_C_dash_But = widgets.Button(
description = ("Browse Resistance Parameter C' Image"))
self.w_KN_C_dash = widgets.Text(
value=str(self.KN_C_dash), description="s1/2 m-1", width=500)
self.KN_params_box = widgets.VBox([widgets.HTML('Select resistance parameter b image or type a constant value'),
widgets.HBox([self.w_KN_b_But, self.w_KN_b]),
widgets.HTML('Select resistance parameter c image or type a constant value'),
widgets.HBox([self.w_KN_c_But, self.w_KN_c]),
widgets.HTML('Select resistance parameter C\' image or type a constant value'),
widgets.HBox([self.w_KN_C_dash_But, self.w_KN_C_dash])], background_color='#EEE')
self.res_page = widgets.VBox([self.w_res, self.KN_params_box], background_color='#EEE')
self.w_KN_b_But.on_click(
lambda b: self._on_input_clicked(b, 'Resistance Parameter b', self.w_KN_b))
self.w_KN_c_But.on_click(
lambda b: self._on_input_clicked(b, 'Resistance Parameter c', self.w_KN_c))
self.w_KN_C_dash_But.on_click(
lambda b: self._on_input_clicked(b, 'Resistance Parameter C\'', self.w_KN_C_dash))
orbital_viewer.py 文件源码
项目:notebook-molecular-visualization
作者: Autodesk
项目源码
文件源码
阅读 23
收藏 0
点赞 0
评论 0
def _make_ui_pane(self, hostheight):
layout = ipy.Layout(width='325px',
height=str(int(hostheight.rstrip('px')) - 50) + 'px')
#element_height = str(int(hostheight.rstrip('px')) - 125) + 'px'
element_height = None
# NOTE - element_height was used for the listbox-style orblist.
# HOWEVER ipywidgets 6.0 only displays those as a dropdown.
# This is therefore disabled until we can display listboxes again. -- AMV 7/16
# Orbital set selector
self.status_element = ipy.HTML(layout=ipy.Layout(width='inherit', height='20px'))
orbtype_label = ipy.Label("Orbital set:")
self.type_dropdown = ipy.Dropdown(options=list(self.wfn.orbitals.keys()))
initialtype = 'canonical'
if initialtype not in self.type_dropdown.options:
initialtype = next(iter(self.type_dropdown.options.keys()))
self.type_dropdown.value = initialtype
self.type_dropdown.observe(self.new_orb_type, 'value')
# List of orbitals in this set
orblist_label = ipy.Label("Orbital:")
self.orblist = ipy.Dropdown(options={None: None},
layout=ipy.Layout(width=layout.width, height=element_height))
traitlets.link((self.orblist, 'value'), (self, 'current_orbital'))
# Isovalue selector
isoval_label = ipy.Label('Isovalue:')
self.isoval_selector = ipy.FloatSlider(min=0.0, max=0.075,
value=0.01, step=0.00075,
readout_format='.4f',
layout=ipy.Layout(width=layout.width))
traitlets.link((self.isoval_selector, 'value'), (self, 'isoval'))
# Opacity selector
opacity_label = ipy.Label('Opacity:')
self.opacity_selector = ipy.FloatSlider(min=0.0, max=1.0,
value=0.8, step=0.01,
readout_format='.2f',
layout=ipy.Layout(width=layout.width))
traitlets.link((self.opacity_selector, 'value'), (self, 'orb_opacity'))
# Resolution selector
resolution_label = ipy.Label("Grid resolution:", layout=ipy.Layout(width=layout.width))
self.orb_resolution = ipy.Text(layout=ipy.Layout(width='75px',
positioning='bottom'))
self.orb_resolution.value = str(self.numpoints)
self.resolution_button = ipy.Button(description='Update resolution')
self.resolution_button.on_click(self.change_resolution)
traitlets.directional_link((self, 'numpoints'), (self.orb_resolution, 'value'),
transform=str)
self.uipane = ipy.VBox([self.status_element,
orbtype_label, self.type_dropdown,
orblist_label, self.orblist,
isoval_label, self.isoval_selector,
opacity_label, self.opacity_selector,
resolution_label, self.orb_resolution, self.resolution_button])
self.new_orb_type()
self.type_dropdown.observe(self.new_orb_type, 'value')
return self.uipane