def test_trim_messages(): view = nv.demo() view.remove_component(view[0]) assert view._ngl_msg_archive == [] view.add_component(nv.datafiles.ALA3) assert len(view._ngl_msg_archive) == 1 assert view._ngl_msg_archive[0]['methodName'] == 'loadFile' view = nv.demo() c = view.add_component(nv.datafiles.ALA3) view.remove_component(c) assert len(view._ngl_msg_archive) == 1 assert view._ngl_msg_archive[0]['methodName'] == 'loadFile'
def test_player_click_button(): """ test_player_click_button """ view = nv.demo(gui=True) view._ipython_display_() view._repr_dict = REPR_DICT view.player._create_all_widgets() view.player.widget_export_image = view.player._make_button_export_image() button_iter = chain.from_iterable([ view.player.widget_repr_control_buttons.children, view.player.widget_theme.children, view.player.widget_drag.children, [ view.player._show_download_image(), view.player._make_button_url("", ""), view.player._make_button_center(), view.player._make_button_qtconsole(), view.player.widget_export_image.children[0].children[0], view.player.widget_repr_add.children[0], ], view.player.widget_drag.children, [ w for w in view.player.widget_preference.children if isinstance(w, Button) ], ]) for button in button_iter: click(button)
def test_API_promise_to_have(): view = nv.demo() # Structure structure = nv.Structure() structure.get_structure_string nt.assert_true(hasattr(structure, 'id')) nt.assert_true(hasattr(structure, 'ext')) nt.assert_true(hasattr(structure, 'params')) # Widget nv.NGLWidget._set_coordinates nv.NGLWidget._set_initial_structure nv.NGLWidget.add_component nv.NGLWidget.add_trajectory nv.NGLWidget.coordinates_dict nv.NGLWidget.set_representations nv.NGLWidget.clear nv.NGLWidget.center nv._get_notebook_info() # display display.Javascript(jsutils.js_clean_error_output) display.display(view.player.repr_widget) view.player._display()
def test_layout_BoxNGL(): view = nv.demo() box = nv.widget_box.BoxNGL([view]) box._ipython_display_() box.layout = Layout() box._gui_style = 'row' box._gui_style = 'column' box._gui_style = 'row'
def test_representation_control(): view = nv.demo() repr_control = view._display_repr() repr_control.name = 'surface' repr_control.name = 'cartoon' repr_control.repr_index = 1 repr_control.component_index = 1
def test_fullscreen(): v = nv.demo() fs = nv.widget.Fullscreen(v, [v]) fs.fullscreen() with patch.object(v, 'handle_resize'): fs._fullscreen_changed(MagicMock(new=True, old=False)) assert v.handle_resize.called # just run the code fs._fullscreen_changed(MagicMock(new=True, old=False)) fs._fullscreen_changed(MagicMock(new=False, old=True))
def test_player_click_tab(): view = nv.demo() gui = view.player._display() assert isinstance(gui, ipywidgets.Tab) for i, child in enumerate(gui.children): try: gui.selected_index = i assert isinstance(child, ipywidgets.Box) except TraitError: pass
def test_just_runs_and_exits_gracefully(self): from matplotlib.widgets import AxesWidget from ipywidgets.widgets import HBox ifig = plt.figure() iax = plt.gca() nglwdg = nglview.demo() mplw = AxesWidget(iax) box_out = visualize._box_me((ifig, iax, nglwdg, mplw)) assert isinstance(box_out, HBox) assert None is visualize._box_me((ifig, iax, nglwdg, mplw, 1))
def test_widget_box(): # empty box = nv.widget_box.BoxNGL() try: box.layout = Layout() except traitlets.TraitError: pass box._update_size() view = nv.demo() box = nv.widget_box.BoxNGL([view]) box._update_size() box._is_beautified = True box._beautify() box._is_beautified = False box._beautify()
def test_viewer_control(): view = nv.demo() view mat = [11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44] vector = [0, 1, 2] view.control.align(mat) view.control.rotate(mat) view.control.translate(vector) view.control.apply_matrix(mat) view.control.center(vector) view.control.orient(mat) view.control.zoom(0.3) view.control.rotate(mat) view.control.spin(vector, 0.1)
def test_player_click_button(): """ test_player_click_button """ view = nv.demo(gui=True) view._ipython_display_() view._repr_dict = REPR_DICT view.player._create_all_widgets() view.player.widget_export_image = view.player._make_button_export_image() button_iter = chain.from_iterable([ view.player.widget_repr_control_buttons.children, view.player.widget_theme.children, view.player.widget_drag.children, [view.player._show_download_image(), view.player._make_button_url("", ""), view.player._make_button_center(), view.player._make_button_qtconsole(), view.player.widget_export_image.children[0].children[0], view.player.widget_repr_add.children[0], ], view.player.widget_drag.children, [w for w in view.player.widget_preference.children if isinstance(w, Button)], ]) for button in button_iter: click(button)
def test_layout_DraggableBox(): view = nv.demo() box = nv.widget_box.DraggableBox([view]) box._ipython_display_() box._dialog = 'on' box._dialog = 'off'
def test_player_picked(): view = nv.demo() s = dict(x=3) view.player.widget_picked = view.player._make_text_picked() view.picked = s assert view.player.widget_picked.value == '{"x": 3}'
def test_player_submit_text(): """ test_player_click_button """ view = nv.demo(gui=True) submit(view.player._make_command_box())
def test_add_new_shape(): view = nv.demo() view view.stage.set_parameters(mousePreset='default')
def test_color_scheme(): view = nv.demo() scheme = nv.color._ColorScheme([['red', '1-6'], ['yellow', '20-30']], 'what') view.clear() view.add_cartoon(color=scheme)
def test_API_promise_to_have(): # for Jupyter notebook extension nv._jupyter_nbextension_paths() view = nv.demo() # trigger _set_size with patch.object(view, '_remote_call') as mock_call: view.layout.width = '100px' view.layout.height = '500px' mock_call.assert_called_with('setSize', args=['', '500px'], target='Widget') # Structure structure = nv.Structure() structure.get_structure_string assert hasattr(structure, 'id') assert hasattr(structure, 'ext') assert hasattr(structure, 'params') # Widget nv.NGLWidget._set_coordinates nv.NGLWidget.add_component nv.NGLWidget.add_trajectory nv.NGLWidget._coordinates_dict nv.NGLWidget.set_representations nv.NGLWidget.clear nv.NGLWidget.center # add component view.add_component('rcsb://1tsu.pdb') view.add_pdbid('1tsu') # display js_utils.clean_error_output() display(view.player.widget_repr) view.player._display() view._display_image() # show try: nv.show_pdbid('1tsu') except: pass nv.show_url('https://dummy.pdb') # other backends will be tested in other sections # constructor ngl_traj = nv.PyTrajTrajectory(pt.datafiles.load_ala3()) nv.NGLWidget(ngl_traj, parameters=dict(background_color='black')) nv.NGLWidget(ngl_traj, representations=[dict(type='cartoon', params={})]) view.parameters view.camera view.camera = 'perspective' view._request_stage_parameters() view._ngl_repr_dict = REPR_DICT view._handle_repr_dict_changed(dict(new=dict(c0={}))) # dummy class DummWidget(): value = '' view.player.picked_widget = DummWidget() view._update_background_color(change=dict(new='blue')) tab = view.player._display() view.player.widget_repr = view.player._make_widget_repr() view._handle_n_components_changed(change=dict(new=2, old=1)) view._handle_n_components_changed(change=dict(new=1, old=1)) view._handle_n_components_changed(change=dict(new=1, old=0)) view.on_loaded(change=dict(new=True)) view.on_loaded(change=dict(new=False)) view._first_time_loaded = False view view._first_time_loaded = True view view._init_gui = True view view._theme = 'dark' view view.display(gui=True, style='ngl') view.display(gui=False) view.display(gui=True, style='ipywidgets') view._set_sync_camera([view]) view._set_unsync_camera([view]) view._set_selection('.CA') view.color_by('atomindex') representations = [dict(type='cartoon', params=dict())] view.representations = representations repr_parameters = dict(opacity=0.3, params=dict()) view.update_representation(parameters=repr_parameters) view._remove_representation() view.clear() view.add_representation('surface', selection='*', useWorker=True) view.add_representation('surface', selection='*', component=1) view.center() view._on_render_image(change=dict(new='xyz')) view.render_image() view.render_image(frame=2) view.download_image() assert view._dry_run(view._set_sync_camera, [view])['methodName'] == 'setSyncCamera' msg = dict(type='request_frame', data=dict()) view._ngl_handle_msg(view, msg=msg, buffers=[]) msg = dict(type='repr_parameters', data=dict(name='hello')) view._ngl_handle_msg(view, msg=msg, buffers=[]) view.loaded = True msg = dict(type='request_loaded', data=True) view._ngl_handle_msg(view, msg=msg, buffers=[]) view.loaded = False msg = dict(type='request_loaded', data=True) view._ngl_handle_msg(view, msg=msg, buffers=[]) msg = dict(type='all_reprs_info', data=REPR_DICT) view._ngl_handle_msg(view, msg=msg, buffers=[]) msg = dict(type='stage_parameters', data=dict()) view._ngl_handle_msg(view, msg=msg, buffers=[]) # test negative frame (it will be set to self.count - 1) view.frame = -1 msg = dict(type='request_frame', data=dict()) # async_message msg = {'type': 'async_message', 'data': 'ok'} view._ngl_handle_msg(view, msg, []) # render_image r = view.render_image() Widget.widgets[r.model_id] = r msg = {'type': 'image_data', 'ID': r.model_id, 'data': b'YmxhIGJsYQ=='} view._ngl_handle_msg(view, msg, []) view.loaded = True view.show_only([ 0, ]) view._js_console() view._get_full_params() # iter for c in view: assert isinstance(c, nv.widget.ComponentViewer)
def test_player_picked(): view = nv.demo() s = dict(x=3) view.player.widget_picked = view.player._make_text_picked() view.picked = s nt.assert_equal(view.player.widget_picked.value, '{"x": 3}')
def test_representation_control(): view = nv.demo() repr_control = view._display_repr()
# interact(f, x=10); # + # import nglview as np # from nglview.datafiles import ASE_Traj # ASE_Traj # + # import MDAnalysis as mda import nglview as nv from nglview.datafiles import PDB, XTC # u = mda.Universe(PDB, XTC) # protein = u.select_atoms('protein') # + # w = nv.ASEStructure(atoms) # nv.ASEStructure? # w # - nv.__version__ nv.show_ase(atoms) nv.demo()
def test_API_promise_to_have(): # for Jupyter notebook extension nv._jupyter_nbextension_paths() view = nv.demo() # Structure structure = nv.Structure() structure.get_structure_string assert hasattr(structure, 'id') assert hasattr(structure, 'ext') assert hasattr(structure, 'params') # Widget nv.NGLWidget._set_coordinates nv.NGLWidget.add_component nv.NGLWidget.add_trajectory nv.NGLWidget.coordinates_dict nv.NGLWidget.set_representations nv.NGLWidget.clear nv.NGLWidget.center # add component view.add_component('rcsb://1tsu.pdb') view.add_pdbid('1tsu') # display js_utils.clean_error_output() display.display(view.player.widget_repr) view.player._display() view._display_image() # show try: nv.show_pdbid('1tsu') except: pass nv.show_url('https://dummy.pdb') # other backends will be tested in other sections # constructor ngl_traj = nv.PyTrajTrajectory(pt.datafiles.load_ala3()) nv.NGLWidget(ngl_traj, parameters=dict(background_color='black')) nv.NGLWidget(ngl_traj, representations=[dict(type='cartoon')]) view.parameters view.camera view.camera = 'perspective' view._request_stage_parameters() view._repr_dict = REPR_DICT view._handle_repr_dict_changed(dict(new=dict(c0={}))) # dummy class DummWidget(): value = '' view.player.picked_widget = DummWidget() view._update_background_color(change=dict(new='blue')) view.on_update_dragged_file(change=dict(new=2, old=1)) view.on_update_dragged_file(change=dict(new=1, old=1)) tab = view.player._display() view.player.widget_repr = view.player._make_widget_repr() view._handle_n_components_changed(change=dict(new=2, old=1)) view._handle_n_components_changed(change=dict(new=1, old=1)) view._handle_n_components_changed(change=dict(new=1, old=0)) view.on_loaded(change=dict(new=True)) view.on_loaded(change=dict(new=False)) view._refresh_render() view.sync_view() view._first_time_loaded = False view._ipython_display_() view._first_time_loaded = True view._ipython_display_() view._init_gui = True view._ipython_display_() view._theme = 'dark' view._ipython_display_() view.display(gui=True) view.display(gui=False) view.display(gui=True, use_box=True) view._set_draggable(True) view._set_draggable(False) view._set_sync_frame() view._set_sync_camera() view._set_spin([0, 1, 0], 0.5) view._set_selection('.CA') view.color_by('atomindex') representations = [dict(type='cartoon', params=dict())] view.representations = representations repr_parameters = dict(opacity=0.3, params=dict()) view.update_representation(parameters=repr_parameters) view._remove_representation() view.clear() view.add_representation('surface', selection='*', useWorker=True) view.add_representation('surface', selection='*', component=1) view.center() view._hold_image = True view._on_render_image(change=dict(new=u'xyz')) view._hold_image = False view._on_render_image(change=dict(new=u'xyz')) view.render_image() view.render_image(frame=2) view.download_image() msg = dict(type='request_frame', data=dict()) view._ngl_handle_msg(view, msg=msg, buffers=[]) msg = dict(type='repr_parameters', data=dict(name='hello')) view._ngl_handle_msg(view, msg=msg, buffers=[]) view.loaded = True msg = dict(type='request_loaded', data=True) view._ngl_handle_msg(view, msg=msg, buffers=[]) view.loaded = False msg = dict(type='request_loaded', data=True) view._ngl_handle_msg(view, msg=msg, buffers=[]) msg = dict(type='all_reprs_info', data=REPR_DICT) view._ngl_handle_msg(view, msg=msg, buffers=[]) msg = dict(type='stage_parameters', data=dict()) view._ngl_handle_msg(view, msg=msg, buffers=[]) # test negative frame (it will be set to self.count - 1) view.frame = -1 msg = dict(type='request_frame', data=dict()) view.loaded = True view.show_only([ 0, ]) view._js_console() view._get_full_params() view.detach(split=False) view.detach(split=True) # view._set_place_proxy(HBox()) # iter for c in view: assert isinstance(c, nv.widget.ComponentViewer)
def test_API_promise_to_have(): # for Jupyter notebook extension nv._jupyter_nbextension_paths() view = nv.demo() # Structure structure = nv.Structure() structure.get_structure_string assert hasattr(structure, 'id') assert hasattr(structure, 'ext') assert hasattr(structure, 'params') # Widget nv.NGLWidget._set_coordinates nv.NGLWidget.add_component nv.NGLWidget.add_trajectory nv.NGLWidget.coordinates_dict nv.NGLWidget.set_representations nv.NGLWidget.clear nv.NGLWidget.center # add component view.add_component('rcsb://1tsu.pdb') view.add_pdbid('1tsu') # display js_utils.clean_error_output() display.display(view.player.widget_repr) view.player._display() view._display_image() # show try: nv.show_pdbid('1tsu') except: pass nv.show_url('https://dummy.pdb') # other backends will be tested in other sections # constructor ngl_traj = nv.PyTrajTrajectory(pt.datafiles.load_ala3()) nv.NGLWidget(ngl_traj, parameters=dict(background_color='black')) nv.NGLWidget(ngl_traj, representations=[dict(type='cartoon')]) view.parameters view.camera view.camera = 'perspective' view._request_stage_parameters() view._repr_dict = REPR_DICT view._handle_repr_dict_changed(dict(new=dict(c0={}))) # dummy class DummWidget(): value = '' view.player.picked_widget = DummWidget() view._update_background_color(change=dict(new='blue')) view.on_update_dragged_file(change=dict(new=2, old=1)) view.on_update_dragged_file(change=dict(new=1, old=1)) tab = view.player._display() view.player.widget_repr = view.player._make_widget_repr() view._handle_n_components_changed(change=dict(new=2, old=1)) view._handle_n_components_changed(change=dict(new=1, old=1)) view._handle_n_components_changed(change=dict(new=1, old=0)) view.on_loaded(change=dict(new=True)) view.on_loaded(change=dict(new=False)) view._refresh_render() view.sync_view() view._first_time_loaded = False view._ipython_display_() view._first_time_loaded = True view._ipython_display_() view._init_gui = True view._ipython_display_() view._theme = 'dark' view._ipython_display_() view.display(gui=True) view.display(gui=False) view.display(gui=True, use_box=True) view._set_draggable(True) view._set_draggable(False) view._set_sync_frame() view._set_sync_camera() view._set_spin([0, 1, 0], 0.5) view._set_selection('.CA') view.color_by('atomindex') representations = [dict(type='cartoon', params=dict())] view.representations = representations repr_parameters = dict(opacity=0.3, params=dict()) view.update_representation(parameters=repr_parameters) view._remove_representation() view.clear() view.add_representation('surface', selection='*', useWorker=True) view.add_representation('surface', selection='*', component=1) view.center() view._hold_image = True view._on_render_image(change=dict(new=u'xyz')) view._hold_image = False view._on_render_image(change=dict(new=u'xyz')) view.render_image() view.render_image(frame=2) view.download_image() msg = dict(type='request_frame', data=dict()) view._ngl_handle_msg(view, msg=msg, buffers=[]) msg = dict(type='repr_parameters', data=dict(name='hello')) view._ngl_handle_msg(view, msg=msg, buffers=[]) view.loaded = True msg = dict(type='request_loaded', data=True) view._ngl_handle_msg(view, msg=msg, buffers=[]) view.loaded = False msg = dict(type='request_loaded', data=True) view._ngl_handle_msg(view, msg=msg, buffers=[]) msg = dict(type='all_reprs_info', data=REPR_DICT) view._ngl_handle_msg(view, msg=msg, buffers=[]) msg = dict(type='stage_parameters', data=dict()) view._ngl_handle_msg(view, msg=msg, buffers=[]) # test negative frame (it will be set to self.count - 1) view.frame = -1 msg = dict(type='request_frame', data=dict()) view.loaded = True view.show_only([0,]) view._js_console() view._get_full_params() view.detach(split=False) view.detach(split=True) # view._set_place_proxy(HBox()) # iter for c in view: assert isinstance(c, nv.widget.ComponentViewer)