modules/pymol/completing.py (277 lines of code) (raw):

cmd = __import__("sys").modules["pymol.cmd"] class ExprShortcut(cmd.Shortcut): ''' Expression shortcut for iterate/alter/label with "s." prefix setting autocompletion. ''' def interpret(self, kee, mode=0): if not kee.startswith('s.'): return cmd.Shortcut.interpret(self, kee, mode) v = cmd.setting.setting_sc.interpret(kee[2:]) if isinstance(v, str): return 's.' + v if isinstance(v, list): return ['s.' + v for v in v] return None expr_sc = ExprShortcut([ 'segi', 'chain', 'resn', 'resi', 'name', 'alt', 'elem', 'text_type', 'formal_charge', 'numeric_type', 'ID', 'q', 'b', 'partial_charge', 'vdw', 'p.', 's.', 'elec_radius', 'oneletter', ]) def fragments_sc(): import os import chempy return cmd.Shortcut([ f[:-4] for f in os.listdir(chempy.path + 'fragments') if f.endswith('.pkl') ]) def vol_ramp_sc(): from . import colorramping return cmd.Shortcut(colorramping.namedramps) names_sc = lambda: cmd.Shortcut(cmd.get_names('public')) aa_nam_e = [ names_sc , 'name' , '' ] aa_nam_s = [ names_sc , 'name' , ' ' ] aa_nam_c = [ names_sc , 'name' , ', ' ] aa_exp_e = [ expr_sc , 'expression' , '' ] aa_sel_e = [ cmd.selection_sc , 'selection' , '' ] aa_sel_c = [ cmd.selection_sc , 'selection' , ', ' ] aa_obj_e = [ cmd.object_sc , 'object' , '' ] aa_obj_s = [ cmd.object_sc , 'object' , ' ' ] aa_obj_c = [ cmd.object_sc , 'object' , ', ' ] aa_set_c = [ cmd.setting.setting_sc , 'setting' , ', ' ] aa_map_c = [ cmd.map_sc , 'map object' , ', ' ] aa_rep_c = [ cmd.repres_sc , 'representation' , ', ' ] aa_rem_c = [ cmd.repmasks_sc , 'representation' , ', ' ] aa_v_r_c = [ vol_ramp_sc , 'volume ramp' , ', ' ] aa_ali_e = [ cmd.Shortcut(['align', 'super', 'cealign']), 'alignment method', ''] def wizard_sc(): import os, pymol.wizard names_glob = [name[:-3] for p in pymol.wizard.__path__ for name in os.listdir(p) if name.endswith('.py')] return cmd.Shortcut(names_glob) def get_auto_arg_list(self_cmd=cmd): self_cmd = self_cmd._weakrefproxy aa_vol_c = [ lambda: cmd.Shortcut(self_cmd.get_names_of_type('object:volume')), 'volume', '' ] aa_ramp_c = [ lambda: cmd.Shortcut(self_cmd.get_names_of_type('object:ramp')), 'ramp', '' ] return [ # 1st { 'align' : aa_sel_c, 'alignto' : aa_obj_c, 'alter' : aa_sel_e, 'alphatoall' : aa_sel_c, 'api' : [ self_cmd.kwhash, 'command', '' ], 'assign_stereo' : aa_sel_e, 'bond' : aa_sel_e, 'as' : aa_rem_c, 'bg_color' : [ lambda c=self_cmd:c._get_color_sc(c), 'color' , '' ], 'button' : [ self_cmd.controlling.button_sc , 'button' , ', ' ], 'cartoon' : [ self_cmd.viewing.cartoon_sc , 'cartoon' , ', ' ], 'cache' : [ self_cmd.exporting.cache_action_sc , 'cache mode' , ', ' ], 'center' : aa_sel_e, 'cealign' : aa_sel_e, 'centerofmass' : aa_sel_e, 'color' : [ lambda c=self_cmd:c._get_color_sc(c), 'color' , ', ' ], 'config_mouse' : [ self_cmd.controlling.ring_dict_sc, 'mouse cycle' , '' ], 'clean' : aa_sel_c, 'clip' : [ self_cmd.viewing.clip_action_sc , 'clipping action' , ', ' ], 'copy' : aa_obj_c, 'copy_to' : aa_obj_c, 'count_atoms' : aa_sel_e, 'count_discrete' : aa_sel_e, 'create' : aa_obj_c, 'delete' : aa_nam_s, 'deprotect' : aa_sel_e, 'disable' : aa_obj_s, 'distance' : aa_obj_e, 'dss' : aa_sel_e, 'enable' : aa_obj_s, 'extra_fit' : aa_sel_e, 'extract' : aa_obj_e, 'feedback' : [ self_cmd.fb_action_sc , 'action' , ', ' ], 'fit' : aa_sel_e, 'flag' : [ self_cmd.editing.flag_sc , 'flag' , ', ' ], 'fragment' : [ fragments_sc , 'fragment name' , '' ], 'full_screen' : [ self_cmd.toggle_sc , 'option' , '' ], 'fuse' : aa_sel_e, 'get' : aa_set_c, 'get_area' : aa_sel_e, 'get_bond' : aa_set_c, 'get_chains' : aa_sel_e, 'get_extent' : aa_sel_e, 'get_property_list' : aa_obj_c, 'get_symmetry' : aa_obj_c, 'gradient' : [ self_cmd.object_sc , 'gradient' , ', ' ], 'group' : [ self_cmd.group_sc , 'group object' , ', ' ], 'help' : [ self_cmd.help_sc , 'selection' , '' ], 'help_setting' : [ self_cmd.setting.setting_sc , 'setting' , '' ], 'h_add' : aa_sel_e, 'hide' : aa_rem_c, 'isolevel' : [ self_cmd.contour_sc , 'contour' , ', ' ], 'iterate' : aa_sel_e, 'indicate' : aa_sel_e, 'intra_fit' : aa_sel_e, 'label' : aa_sel_e, 'map_set' : aa_map_c, 'mask' : aa_sel_e, 'mview' : [ self_cmd.moving.mview_action_sc , 'action' , '' ], 'map_double' : aa_map_c, 'map_halve' : aa_map_c, 'map_trim' : aa_map_c, 'matrix_copy' : aa_obj_c, 'matrix_reset' : aa_obj_c, 'mse2met' : aa_sel_e, 'order' : aa_nam_s, 'orient' : aa_sel_e, 'origin' : aa_sel_e, 'pair_fit' : aa_sel_c, 'protect' : aa_sel_e, 'pseudoatom' : aa_obj_c, 'ramp_new' : aa_ramp_c, 'ramp_update' : aa_ramp_c, 'rebuild' : aa_sel_e, 'reference' : [ self_cmd.editing.ref_action_sc , 'action' , ', ' ], 'remove' : aa_sel_e, 'reinitialize' : [ self_cmd.commanding.reinit_sc , 'option' , '' ], 'scene' : [ self_cmd._pymol._scene_dict_sc , 'scene' , '' ], 'sculpt_activate': aa_obj_e, 'set' : aa_set_c, 'set_bond' : aa_set_c, 'set_key' : [ lambda: cmd.Shortcut(cmd.key_mappings), 'key' , ', ' ], 'set_name' : aa_nam_c, 'set_title' : aa_obj_c, 'show' : aa_rem_c, 'smooth' : aa_sel_e, 'space' : [ self_cmd.space_sc , 'space' , '' ], 'spectrum' : aa_exp_e, 'split_chains' : aa_sel_e, 'split_states' : aa_obj_c, 'super' : aa_sel_c, 'stereo' : [ self_cmd.stereo_sc , 'option' , '' ], 'symmetry_copy' : aa_obj_c, 'toggle' : aa_rem_c, 'uniquify' : [ expr_sc , 'identifier' , ', ' ], 'unmask' : aa_sel_e, 'unset' : aa_set_c, 'unset_bond' : aa_set_c, 'unset_deep' : aa_set_c, 'update' : aa_sel_e, 'valence' : [ self_cmd.editing.order_sc , 'order' , ', ' ], 'volume_color' : aa_vol_c, 'volume_panel' : aa_vol_c, 'view' : [ self_cmd._pymol._view_dict_sc , 'view' , '' ], 'window' : [ self_cmd.window_sc , 'action' , ', ' ], 'wizard' : [ wizard_sc , 'wizard' , ', ' ], 'zoom' : aa_sel_e, }, # 2nd { 'align' : aa_sel_e, 'alignto' : aa_ali_e, 'alter' : aa_exp_e, 'alter_state' : aa_sel_e, 'alphatoall' : aa_exp_e, 'as' : aa_sel_e, 'bond' : aa_sel_e, 'button' : [ self_cmd.controlling.but_mod_sc , 'modifier' , ', ' ], 'cache' : [ self_cmd._pymol._scene_dict_sc , 'scene' , '' ], 'cealign' : aa_sel_e, 'clean' : aa_sel_e, 'color' : aa_sel_e, 'copy' : aa_obj_e, 'copy_to' : aa_sel_e, 'create' : aa_sel_c, 'distance' : aa_sel_e, 'extra_fit' : aa_obj_e, 'extract' : aa_sel_e, 'feedback' : [ self_cmd.fb_module_sc , 'module' , ', ' ], 'flag' : aa_sel_c, 'fuse' : aa_sel_e, 'get' : aa_obj_c, 'get_bond' : aa_sel_c, 'get_property' : aa_obj_c, 'gradient' : aa_map_c, 'group' : aa_nam_s, 'hide' : aa_sel_e, 'isomesh' : aa_map_c, 'isosurface' : aa_map_c, 'iterate' : aa_exp_e, 'iterate_state' : aa_sel_e, 'join_states' : aa_sel_e, 'volume' : aa_map_c, 'select' : aa_sel_e, 'save' : aa_sel_c, 'label' : aa_exp_e, 'load' : aa_sel_c, 'load_traj' : aa_obj_c, 'map_set' : [ self_cmd.editing.map_op_sc , 'operator' , ', ' ], 'map_new' : [ self_cmd.creating.map_type_sc , 'map type' , ', ' ], 'map_trim' : aa_sel_c, 'morph' : aa_sel_e, 'movie.produce' : [ self_cmd.movie.produce_mode_sc , 'render mode' , ', ' ], 'matrix_copy' : aa_obj_c, 'multifilesave' : aa_sel_c, 'order' : [ self_cmd.boolean_sc , 'sort' , ', ' ], 'pair_fit' : aa_sel_c, 'rebuild' : aa_rep_c, 'reference' : aa_sel_c, 'scene' : [ self_cmd.viewing.scene_action_sc, 'scene action' , ', ' ], 'set_name' : aa_nam_e, 'show' : aa_sel_e, 'slice_new' : aa_map_c, 'spectrum' : [ self_cmd.palette_sc , 'palette' , '' ], 'super' : aa_sel_e, 'symexp' : aa_obj_c, 'symmetry_copy' : aa_obj_c, 'toggle' : aa_sel_e, 'view' : [ self_cmd.viewing.view_sc , 'view action' , '' ], 'uniquify' : aa_sel_e, 'unset' : aa_sel_c, 'unset_bond' : aa_sel_c, 'unset_deep' : aa_obj_e, 'update' : aa_sel_e, 'ramp_new' : aa_map_c, 'valence' : aa_sel_c, 'volume_color' : aa_v_r_c, }, #3rd { 'alter_state' : aa_exp_e, 'button' : [ self_cmd.controlling.but_act_sc , 'button action' , '' ], 'callout' : aa_sel_e, 'distance' : aa_sel_e, 'extra_fit' : aa_ali_e, 'feedback' : [ self_cmd.fb_mask_sc , 'mask' , '' ], 'flag' : [ self_cmd.editing.flag_action_sc , 'flag action' , '' ], 'get_bond' : aa_sel_e, 'group' : [ self_cmd.creating.group_action_sc, 'group action' , '' ], 'iterate_state' : aa_exp_e, 'map_set' : [ self_cmd.map_sc , 'map' , ' ' ], 'morph' : aa_sel_e, 'order' : [ self_cmd.controlling.location_sc, 'location' , ', ' ], 'ramp_update' : [ self_cmd.creating.ramp_spectrum_sc , 'ramp color spectrum' , ', ' ], 'set' : aa_sel_c, 'set_bond' : aa_sel_c, 'set_property' : aa_obj_c, 'set_atom_property' : aa_sel_e, 'spectrum' : aa_sel_e, 'symexp' : aa_sel_c, 'uniquify' : aa_sel_e, 'unset_bond' : aa_sel_c, 'valence' : aa_sel_c, 'volume' : aa_v_r_c, }, #4th { 'ramp_new' : [ self_cmd.creating.ramp_spectrum_sc , 'ramp color spectrum' , ', ' ], 'map_new' : aa_sel_c, 'isosurface' : aa_sel_c, 'volume' : aa_sel_c, 'isomesh' : aa_sel_c, 'set_bond' : aa_sel_c, 'valence' : aa_sel_c, } ]