def indicate(selection="(all)",_self=cmd): ''' DESCRIPTION "indicate" shows a visual representation of an atom selection. USAGE indicate (selection) PYMOL API cmd.count(string selection) ''' r = DEFAULT_ERROR # preprocess selection selection = selector.process(selection) # try: _self.lock(_self) r = _cmd.select(_self._COb,"indicate","("+str(selection)+")",1,-1,'') if is_error(r): _self.delete("indicate") else: _self.enable("indicate") finally: _self.unlock(r,_self) if _self._raising(r,_self): raise pymol.CmdException return r
def x(st): print st cmd.set("raise_exceptions",0) valu = eval(st) print valu if cmd.is_error(valu): cmd.set("raise_exceptions",1) try: print eval(st) except pymol.CmdException: print "CmdException raised." except cmd.QuietException: print "QuietException raised."
def get_session(names='', partial=0, quiet=1, compress=-1, cache=-1, _self=cmd): session = {} r = DEFAULT_SUCCESS cache = int(cache) compress = int(compress) if cache: cache_opt = int(_self.get('session_cache_optimize')) if cache != 0: cache_mode = int(_self.get('cache_mode')) if ((cache_mode > 0) and (cache_opt != 0)) or (cache_opt == 1): _self.cache('optimize') for a in _self._pymol._session_save_tasks: if a == None: try: _self.lock(_self) r = _cmd.get_session(_self._COb, session, str(names), int(partial), int(quiet)) finally: _self.unlock(r, _self) try: session['session'] = copy.deepcopy(_self._pymol.session) if cache and hasattr(_self._pymol, '_cache'): session['cache'] = _self._pymol._cache except: traceback.print_exc() else: try: if is_error(apply(a, (session, ), {'_self': _self})): r = DEFAULT_ERROR except: traceback.print_exc() print "Error: An error occurred when trying to generate session." print "Error: The resulting session file may be incomplete." if is_ok(r): if (compress < 0): compress = _self.get_setting_boolean('session_compression') if (compress): import zlib session = zlib.compress(io.pkl.toString(session)) return session elif _self._raising(r, _self): raise QuietException return r
def get_type(name,quiet=1,_self=cmd): ''' DESCRIPTION "get_type" returns a string describing the named object or selection or the string "nonexistent" if the name in unknown. PYMOL API cmd.get_type(string object-name) NOTES Possible return values are "object:molecule" "object:map" "object:mesh" "object:slice" "object:surface" "object:measurement" "object:cgo" "object:group" "object:volume" "selection" SEE ALSO get_names ''' r = DEFAULT_ERROR try: _self.lock(_self) r = _cmd.get_type(_self._COb,str(name)) finally: _self.unlock(r,_self) if is_error(r): if not quiet and _feedback(fb_module.cmd,fb_mask.errors,_self): print "Cmd-Error: unrecognized name." elif not quiet: print r if _raising(r,_self): raise pymol.CmdException return r
def get_session(names='', partial=0, quiet=1, compress=-1, cache=-1, _self=cmd): session = {} r = DEFAULT_SUCCESS cache = int(cache) compress = int(compress) if cache: cache_opt = int(_self.get('session_cache_optimize')) if cache != 0: cache_mode = int(_self.get('cache_mode')) if ((cache_mode > 0) and (cache_opt != 0)) or (cache_opt==1): _self.cache('optimize') for a in _self._pymol._session_save_tasks: if a==None: try: _self.lock(_self) r = _cmd.get_session(_self._COb,session,str(names), int(partial),int(quiet)) finally: _self.unlock(r,_self) try: session['session'] = copy.deepcopy(_self._pymol.session) if cache and hasattr(_self._pymol,'_cache'): session['cache'] = _self._pymol._cache except: traceback.print_exc() else: try: if is_error(apply(a,(session,),{'_self':_self})): r = DEFAULT_ERROR except: traceback.print_exc() print "Error: An error occurred when trying to generate session." print "Error: The resulting session file may be incomplete." if is_ok(r): if(compress<0): compress = _self.get_setting_boolean('session_compression') if(compress): import zlib session = zlib.compress(io.pkl.toString(session)) return session elif _self._raising(r,_self): raise QuietException return r
def get_type(name, quiet=1, _self=cmd): ''' DESCRIPTION "get_type" returns a string describing the named object or selection or the string "nonexistent" if the name in unknown. PYMOL API cmd.get_type(string object-name) NOTES Possible return values are "object:molecule" "object:map" "object:mesh" "object:slice" "object:surface" "object:measurement" "object:cgo" "object:group" "object:volume" "selection" SEE ALSO get_names ''' r = DEFAULT_ERROR try: _self.lock(_self) r = _cmd.get_type(_self._COb, str(name)) finally: _self.unlock(r, _self) if is_error(r): if not quiet and _feedback(fb_module.cmd, fb_mask.errors, _self): print "Cmd-Error: unrecognized name." elif not quiet: print r if _raising(r, _self): raise pymol.CmdException return r
def create(name, selection, source_state=0, target_state=0, discrete=0, zoom=-1, quiet=1, singletons=0, extract=None, copy_properties=False, _self=cmd): ''' DESCRIPTION "create" creates a new molecule object from a selection. It can also be used to create states in an existing object. USAGE create name, selection [,source_state [,target_state ] ] ARGUMENTS name = string: name of object to create or modify selection = string: atoms to include in the new object source_state = integer: {default: 0 -- copy all states} target_state = integer: -1 appends after last state {default: 0} PYMOL API cmd.create(string name, string selection, int state, int target_state, int discrete) NOTES If the source and target states are zero (default), then all states will be copied. Otherwise, only the indicated states will be copied. SEE ALSO load, copy, extract ''' r = DEFAULT_ERROR target_state = int(target_state) if target_state == -1: target_state = _self.count_states('?' + name) + 1 if copy_properties: print ' Warning: properties are not supported in Open-Source PyMOL' # preprocess selection selection = selector.process(selection) # try: _self.lock(_self) if name==None: name = _self.get_unused_name("obj") r = _cmd.create(_self._COb,str(name),"("+str(selection)+")", int(source_state)-1,int(target_state)-1, int(discrete),int(zoom),int(quiet),int(singletons)) finally: _self.unlock(r,_self) if not is_error(r): # temporary inefficient implementation if extract not in (None, 0, '0'): if extract not in (1, '1'): extract = selector.process(extract) else: extract = selection _self.remove("(("+extract+") in (%s)) and not (%s)"%(name,name)) if _self._raising(r,_self): raise pymol.CmdException return r
def set_key(key, fn, arg=(), kw={}, _self=cmd): ''' DESCRIPTION "set_key" binds a specific python function to a key press. New in PyMOL 1.6.1: second argument can also be a string in PyMOL command syntax. USAGE set_key key, command EXAMPLE set_key F1, as cartoon, polymer; as sticks, organic PYMOL API (ONLY) cmd.set_key( string key, function fn, tuple arg=(), dict kw={}) PYTHON EXAMPLE from pymol import cmd def color_blue(object): cmd.color("blue",object) cmd.set_key( 'F1' , color_blue, ( "object1" ) ) // would turn object1 blue when the F1 key is pressed and cmd.set_key( 'F2' , color_blue, ( "object2" ) ) // would turn object2 blue when the F2 key is pressed. cmd.set_key( 'CTRL-C' , cmd.zoom ) cmd.set_key( 'ALT-A' , cmd.turn, ('x',90) ) KEYS WHICH CAN BE REDEFINED F1 to F12 left, right, pgup, pgdn, home, insert CTRL-A to CTRL-Z ALT-0 to ALT-9, ALT-A to ALT-Z SEE ALSO button, alias ''' r = DEFAULT_ERROR if isinstance(fn, basestring): if arg or kw: raise ValueError('arg and kw must be empty if fn is string') arg = (fn, ) fn = cmd.do if key[0:5] == 'CTRL-': pat = key[5:] if len(pat) > 1: # ctrl-special key if pat[0] != 'F': pat = string.lower(pat) for a in _self.ctrl_special.keys(): if _self.ctrl_special[a][0] == pat: _self.ctrl_special[a][1] = fn _self.ctrl_special[a][2] = arg _self.ctrl_special[a][3] = kw r = DEFAULT_SUCCESS else: # std. ctrl key for a in _self.ctrl.keys(): if a == pat: _self.ctrl[a][0] = fn _self.ctrl[a][1] = arg _self.ctrl[a][2] = kw r = DEFAULT_SUCCESS elif key[0:4] == 'ALT-': pat = key[4:] if len(pat) > 1: # alt-special key if pat[0] != 'F': pat = string.lower(pat) for a in _self.alt_special.keys(): if _self.alt_special[a][0] == pat: _self.alt_special[a][1] = fn _self.alt_special[a][2] = arg _self.alt_special[a][3] = kw r = DEFAULT_SUCCESS else: # std. alt key pat = string.lower(pat) for a in _self.alt.keys(): if a == pat: _self.alt[a][0] = fn _self.alt[a][1] = arg _self.alt[a][2] = kw r = DEFAULT_SUCCESS elif key[0:5] == 'SHFT-': pat = key[5:] if len(pat) > 1: # shft-special key if pat[0] != 'F': pat = string.lower(pat) for a in _self.shft_special.keys(): if _self.shft_special[a][0] == pat: _self.shft_special[a][1] = fn _self.shft_special[a][2] = arg _self.shft_special[a][3] = kw r = DEFAULT_SUCCESS else: if key[0] != 'F': pat = string.lower(key) else: pat = key for a in _self.special.keys(): if _self.special[a][0] == pat: _self.special[a][1] = fn _self.special[a][2] = arg _self.special[a][3] = kw r = DEFAULT_SUCCESS if is_error(r): print "Error: special '%s' key not found." % key if _self._raising(r, _self): raise pymol.CmdException return r
def create(name, selection, source_state=0, target_state=0, discrete=0, zoom=-1, quiet=1, singletons=0, extract=None, _self=cmd): ''' DESCRIPTION "create" creates a new molecule object from a selection. It can also be used to create states in an existing object. USAGE create name, selection [,source_state [,target_state ] ] ARGUMENTS name = string: name of object to create or modify selection = string: atoms to include in the new object source_state = integer: {default: 0 -- copy all states} target_state = integer: {default: 0} PYMOL API cmd.create(string name, string selection, int state, int target_state, int discrete) NOTES If the source and target states are zero (default), then all states will be copied. Otherwise, only the indicated states will be copied. SEE ALSO load, copy, extract ''' r = DEFAULT_ERROR # preprocess selection selection = selector.process(selection) # try: _self.lock(_self) if name==None: avoid = {} for obj in cmd.get_names("all"): avoid[obj] = 1 sel_cnt = _cmd.get(_self._COb,"sel_counter") while 1: sel_cnt = sel_cnt + 1.0 name = "obj%02.0f" % sel_cnt if not avoid.has_key(name): _cmd.legacy_set(_self._COb,"sel_counter","%1.0f" % sel_cnt) break r = _cmd.create(_self._COb,str(name),"("+str(selection)+")", int(source_state)-1,int(target_state)-1, int(discrete),int(zoom),int(quiet),int(singletons)) finally: _self.unlock(r,_self) if not is_error(r): # temporary inefficient implementation if extract not in (None, 0, '0'): if extract not in (1, '1'): extract = selector.process(extract) else: extract = selection _self.remove("(("+extract+") in (%s)) and not (%s)"%(name,name)) if _self._raising(r,_self): raise pymol.CmdException return r
def set_key(key,fn,arg=(),kw={},_self=cmd): ''' DESCRIPTION "set_key" binds a specific python function to a key press. PYMOL API (ONLY) cmd.set_key( string key, function fn, tuple arg=(), dict kw={}) PYTHON EXAMPLE from pymol import cmd def color_blue(object): cmd.color("blue",object) cmd.set_key( 'F1' , color_blue, ( "object1" ) ) // would turn object1 blue when the F1 key is pressed and cmd.set_key( 'F2' , color_blue, ( "object2" ) ) // would turn object2 blue when the F2 key is pressed. cmd.set_key( 'CTRL-C' , cmd.zoom ) cmd.set_key( 'ALT-A' , cmd.turn, ('x',90) ) KEYS WHICH CAN BE REDEFINED F1 to F12 left, right, pgup, pgdn, home, insert CTRL-A to CTRL-Z ALT-0 to ALT-9, ALT-A to ALT-Z SEE ALSO button ''' r = DEFAULT_ERROR if key[0:5]=='CTRL-': pat=key[5:] if len(pat)>1: # ctrl-special key if pat[0]!='F': pat=string.lower(pat) for a in _self.ctrl_special.keys(): if _self.ctrl_special[a][0]==pat: _self.ctrl_special[a][1]=fn _self.ctrl_special[a][2]=arg _self.ctrl_special[a][3]=kw r = DEFAULT_SUCCESS else: # std. ctrl key for a in _self.ctrl.keys(): if a==pat: _self.ctrl[a][0]=fn _self.ctrl[a][1]=arg _self.ctrl[a][2]=kw r = DEFAULT_SUCCESS elif key[0:4]=='ALT-': pat=key[4:] if len(pat)>1: # alt-special key if pat[0]!='F': pat=string.lower(pat) for a in _self.alt_special.keys(): if _self.alt_special[a][0]==pat: _self.alt_special[a][1]=fn _self.alt_special[a][2]=arg _self.alt_special[a][3]=kw r = DEFAULT_SUCCESS else: # std. alt key pat=string.lower(pat) for a in _self.alt.keys(): if a==pat: _self.alt[a][0]=fn _self.alt[a][1]=arg _self.alt[a][2]=kw r = DEFAULT_SUCCESS elif key[0:5]=='SHFT-': pat=key[5:] if len(pat)>1: # shft-special key if pat[0]!='F': pat=string.lower(pat) for a in _self.shft_special.keys(): if _self.shft_special[a][0]==pat: _self.shft_special[a][1]=fn _self.shft_special[a][2]=arg _self.shft_special[a][3]=kw r = DEFAULT_SUCCESS else: if key[0]!='F': pat=string.lower(key) else: pat=key for a in _self.special.keys(): if _self.special[a][0]==pat: _self.special[a][1]=fn _self.special[a][2]=arg _self.special[a][3]=kw r = DEFAULT_SUCCESS if is_error(r): print "Error: special '%s' key not found."%key if _self._raising(r,_self): raise pymol.CmdException return r
def set_key(key,fn,arg=(),kw={},_self=cmd): ''' DESCRIPTION "set_key" binds a specific python function to a key press. New in PyMOL 1.6.1: second argument can also be a string in PyMOL command syntax. USAGE set_key key, command EXAMPLE set_key F1, as cartoon, polymer; as sticks, organic PYMOL API (ONLY) cmd.set_key( string key, function fn, tuple arg=(), dict kw={}) PYTHON EXAMPLE from pymol import cmd def color_blue(object): cmd.color("blue",object) cmd.set_key( 'F1' , color_blue, ( "object1" ) ) // would turn object1 blue when the F1 key is pressed and cmd.set_key( 'F2' , color_blue, ( "object2" ) ) // would turn object2 blue when the F2 key is pressed. cmd.set_key( 'CTRL-C' , cmd.zoom ) cmd.set_key( 'ALT-A' , cmd.turn, ('x',90) ) KEYS WHICH CAN BE REDEFINED F1 to F12 left, right, pgup, pgdn, home, insert CTRL-A to CTRL-Z ALT-0 to ALT-9, ALT-A to ALT-Z SEE ALSO button, alias ''' r = DEFAULT_ERROR if isinstance(fn, basestring): if arg or kw: raise ValueError('arg and kw must be empty if fn is string') arg = (fn,) fn = cmd.do if key[0:5]=='CTRL-': pat=key[5:] if len(pat)>1: # ctrl-special key if pat[0]!='F': pat=string.lower(pat) for a in _self.ctrl_special.keys(): if _self.ctrl_special[a][0]==pat: _self.ctrl_special[a][1]=fn _self.ctrl_special[a][2]=arg _self.ctrl_special[a][3]=kw r = DEFAULT_SUCCESS else: # std. ctrl key for a in _self.ctrl.keys(): if a==pat: _self.ctrl[a][0]=fn _self.ctrl[a][1]=arg _self.ctrl[a][2]=kw r = DEFAULT_SUCCESS elif key[0:4]=='ALT-': pat=key[4:] if len(pat)>1: # alt-special key if pat[0]!='F': pat=string.lower(pat) for a in _self.alt_special.keys(): if _self.alt_special[a][0]==pat: _self.alt_special[a][1]=fn _self.alt_special[a][2]=arg _self.alt_special[a][3]=kw r = DEFAULT_SUCCESS else: # std. alt key pat=string.lower(pat) for a in _self.alt.keys(): if a==pat: _self.alt[a][0]=fn _self.alt[a][1]=arg _self.alt[a][2]=kw r = DEFAULT_SUCCESS elif key[0:5]=='SHFT-': pat=key[5:] if len(pat)>1: # shft-special key if pat[0]!='F': pat=string.lower(pat) for a in _self.shft_special.keys(): if _self.shft_special[a][0]==pat: _self.shft_special[a][1]=fn _self.shft_special[a][2]=arg _self.shft_special[a][3]=kw r = DEFAULT_SUCCESS else: if key[0]!='F': pat=string.lower(key) else: pat=key for a in _self.special.keys(): if _self.special[a][0]==pat: _self.special[a][1]=fn _self.special[a][2]=arg _self.special[a][3]=kw r = DEFAULT_SUCCESS if is_error(r): print "Error: special '%s' key not found."%key if _self._raising(r,_self): raise pymol.CmdException return r
def create(name, selection, source_state=0, target_state=0, discrete=0, zoom=-1, quiet=1, singletons=0, extract=None, _self=cmd): ''' DESCRIPTION "create" creates a new molecule object from a selection. It can also be used to create states in an existing object. USAGE create name, selection [,source_state [,target_state ] ] ARGUMENTS name = string: name of object to create or modify selection = string: atoms to include in the new object source_state = integer: {default: 0 -- copy all states} target_state = integer: -1 appends after last state {default: 0} PYMOL API cmd.create(string name, string selection, int state, int target_state, int discrete) NOTES If the source and target states are zero (default), then all states will be copied. Otherwise, only the indicated states will be copied. SEE ALSO load, copy, extract ''' r = DEFAULT_ERROR target_state = int(target_state) if target_state == -1: target_state = _self.count_states('?' + name) + 1 # preprocess selection selection = selector.process(selection) # try: _self.lock(_self) if name == None: name = _self.get_unused_name("obj") r = _cmd.create(_self._COb, str(name), "(" + str(selection) + ")", int(source_state) - 1, int(target_state) - 1, int(discrete), int(zoom), int(quiet), int(singletons)) finally: _self.unlock(r, _self) if not is_error(r): # temporary inefficient implementation if extract not in (None, 0, '0'): if extract not in (1, '1'): extract = selector.process(extract) else: extract = selection _self.remove("((" + extract + ") in (%s)) and not (%s)" % (name, name)) if _self._raising(r, _self): raise pymol.CmdException return r
def set_key(key, fn, arg=(), kw={}, _self=cmd): ''' DESCRIPTION "set_key" binds a specific python function to a key press. PYMOL API (ONLY) cmd.set_key( string key, function fn, tuple arg=(), dict kw={}) PYTHON EXAMPLE from pymol import cmd def color_blue(object): cmd.color("blue",object) cmd.set_key( 'F1' , color_blue, ( "object1" ) ) // would turn object1 blue when the F1 key is pressed and cmd.set_key( 'F2' , color_blue, ( "object2" ) ) // would turn object2 blue when the F2 key is pressed. cmd.set_key( 'CTRL-C' , cmd.zoom ) cmd.set_key( 'ALT-A' , cmd.turn, ('x',90) ) KEYS WHICH CAN BE REDEFINED F1 to F12 left, right, pgup, pgdn, home, insert CTRL-A to CTRL-Z ALT-0 to ALT-9, ALT-A to ALT-Z SEE ALSO button ''' r = DEFAULT_ERROR if key[0:5] == 'CTRL-': pat = key[5:] if len(pat) > 1: # ctrl-special key if pat[0] != 'F': pat = string.lower(pat) for a in _self.ctrl_special.keys(): if _self.ctrl_special[a][0] == pat: _self.ctrl_special[a][1] = fn _self.ctrl_special[a][2] = arg _self.ctrl_special[a][3] = kw r = DEFAULT_SUCCESS else: # std. ctrl key for a in _self.ctrl.keys(): if a == pat: _self.ctrl[a][0] = fn _self.ctrl[a][1] = arg _self.ctrl[a][2] = kw r = DEFAULT_SUCCESS elif key[0:4] == 'ALT-': pat = key[4:] if len(pat) > 1: # alt-special key if pat[0] != 'F': pat = string.lower(pat) for a in _self.alt_special.keys(): if _self.alt_special[a][0] == pat: _self.alt_special[a][1] = fn _self.alt_special[a][2] = arg _self.alt_special[a][3] = kw r = DEFAULT_SUCCESS else: # std. alt key pat = string.lower(pat) for a in _self.alt.keys(): if a == pat: _self.alt[a][0] = fn _self.alt[a][1] = arg _self.alt[a][2] = kw r = DEFAULT_SUCCESS elif key[0:5] == 'SHFT-': pat = key[5:] if len(pat) > 1: # shft-special key if pat[0] != 'F': pat = string.lower(pat) for a in _self.shft_special.keys(): if _self.shft_special[a][0] == pat: _self.shft_special[a][1] = fn _self.shft_special[a][2] = arg _self.shft_special[a][3] = kw r = DEFAULT_SUCCESS else: if key[0] != 'F': pat = string.lower(key) else: pat = key for a in _self.special.keys(): if _self.special[a][0] == pat: _self.special[a][1] = fn _self.special[a][2] = arg _self.special[a][3] = kw r = DEFAULT_SUCCESS if is_error(r): print "Error: special '%s' key not found." % key if _self._raising(r, _self): raise pymol.CmdException return r