def UIBased(categoryList, cmdList, undo_steps): os.system('clear') # CLEAR SCREEN UIBasedHelp() while True: userInput = raw_input("Please enter a command: ") # Reading the user input step_count = len(undo_steps) os.system('clear') # CLEAR SCREEN userCommand = cmd.getCommand(userInput) # Extracting the COMMAND from the user input remainderAfterCommand = cmd.getRemainder(userInput) # Extracting the remainder after the command files.checkIntegrityOfTheFiles(categoryList) # Checking that the files are in good condition if userCommand == "exit": # In case the user wants to terminate the program, this allows him to do so return elif userCommand == "add": sum, category = UIAdd(categoryList) userInput = str(userCommand) + " " + str(sum) + " " + str(category) print cmd.add(userInput, categoryList, undo_steps, step_count) elif userCommand == "insert": day, sum, category = UIInsert(categoryList) userInput = str(userCommand) + " " + str(day) + " " + str(sum) + " " + str(category) print cmd.insert(userInput, categoryList, undo_steps, 1, step_count) elif userCommand == "remove": userInput = str(userCommand) + " " + UIRemove(categoryList) print cmd.remove(userInput, categoryList, undo_steps, step_count) elif userCommand == "list": userInput = str(userCommand) + " " + UIList(categoryList) cmd.printFunc(cmd.list(userInput, categoryList)) elif userCommand == "sum": userInput = str(userCommand) + " " + UISum(categoryList) print cmd.suma(userInput, categoryList) elif userCommand == "max": userInput = str(userCommand) + " " + UIMax() print cmd.maxi(userInput, categoryList) elif userCommand == "sort": userInput = str(userCommand) + " " + UISort(categoryList) cmd.printFunc(cmd.sort(userInput, categoryList)) elif userCommand == "filter": userInput = str(userCommand) + " " + UIFilter(categoryList) print cmd.filter(userInput, categoryList, undo_steps, step_count) elif userCommand == "undo": print cmd.undo(userInput, categoryList, undo_steps, step_count) elif userCommand == "help": cmd.userHelp(cmdList) elif userCommand == "clear": os.system('clear') else: print(" '" + userInput + "' not recognized. \"~:help\"")
def protein_assign_charges_and_radii(obj_name,_self=cmd): pymol=_self._pymol cmd=_self from chempy.champ import assign # apply a few kludges # convent Seleno-methionine to methionine cmd.alter(obj_name+"///MSE/SE","elem='S';name='SD'",quiet=1) cmd.alter(obj_name+"///MSE/","resn='MET'",quiet=1) cmd.flag("ignore",obj_name,"clear") # remove alternate conformers cmd.remove(obj_name+" and not alt ''+A") cmd.alter(obj_name,"alt=''") cmd.sort(obj_name) cmd.fix_chemistry(obj_name,obj_name,1) # make sure all atoms are included... cmd.alter(obj_name,"q=1.0",quiet=1) print " Util: Fixing termini and assigning formal charges..." assign.missing_c_termini(obj_name,quiet=1,_self=_self) while not assign.formal_charges(obj_name,quiet=1,_self=_self): print " WARNING: unrecognized or incomplete residues are being deleted:" cmd.iterate("(byres ("+obj_name+" and flag 23)) and flag 31", 'print " "+model+"/"+segi+"/"+chain+"/"+resn+"`"+resi+"/"',quiet=1) cmd.remove("byres ("+obj_name+" and flag 23)") # get rid of residues that weren't assigned assign.missing_c_termini(obj_name,quiet=1,_self=_self) print " Util: Assigning Amber 99 charges and radii..." cmd.h_add(obj_name) if not assign.amber99(obj_name,quiet=1,_self=_self): print " WARNING: some unassigned atoms are being deleted:" cmd.iterate("byres ("+obj_name+" and flag 23)", 'print " "+model+"/"+segi+"/"+chain+"/"+resn+"`"+resi+"/"+name+"? ["+elem+"]"',quiet=1) cmd.remove(obj_name+" and flag 23") # get rid of any atoms that weren't assigned # show the user what the net charges are... formal = sum_formal_charges(obj_name,quiet=0,_self=_self) partial = sum_partial_charges(obj_name,quiet=0,_self=_self) if round(formal)!=round(partial): print " WARNING: formal and partial charge sums don't match -- there is a problem!"
def _fab(input,name,mode,resi,chain,segi,state,dir,hydro,ss,quiet,_self=cmd): r = DEFAULT_ERROR code = _fab_codes.get(mode,None) quiet = int(quiet) resi = int(resi) state = int(state) dir = int(dir) hydro = int(hydro) if hydro < 0: hydro = not _self.get_setting_boolean("auto_remove_hydrogens") seq_len = 0 if (mode == 'peptide') and is_string(input): # '123/ ADC B/234/ AFCD' to [ '123/','A','D','C','B/234/','F','C','D' ] frags = input.split() input = [] for frag in frags: if '/' in frag: input.append(frag) else: seq_len = seq_len + len(frag) input.extend(list(frag)) input.append("/") # breaks chain if name == None: name = _self.get_unused_name("obj") # if mode in [ 'smiles' ]: # small molecule (FUTURE) # from chempy.champ import Champ # ch = Champ() # ch.insert_pattern_string(input) if mode in [ 'peptide' ]: # polymers if (seq_len>99) and not quiet: print " Generating a %d residue peptide from sequence..."%seq_len input.reverse() sequence = input if code != None: while len(sequence): while len(sequence) and '/' in sequence[-1]: part = sequence.pop().split('/') if len(part)>1: if len(part[-2]): resi = int(part[-2]) if len(part)>2: chain = part[-3] if len(part)>3: segi = part[-4] if len(sequence) and not _self.count_atoms("?pk1"): # new polymer segment tmp_obj = _self.get_unused_name() first = sequence.pop() _self.fragment(code[first], tmp_obj) if not hydro: cmd.remove(tmp_obj + ' and hydro') _self.alter(tmp_obj,'resi="""%s""";chain="""%s""";segi="""%s"""'%(resi,chain,segi)) _self.create(name,tmp_obj+" or ?"+name,1,1,zoom=0) tmp_sel = _self.get_unused_name() if mode == 'peptide': if dir>0: _self.select(tmp_sel,"name c and "+tmp_obj) resi = resi + 1 else: _self.select(tmp_sel,"name n and "+tmp_obj) resi = resi - 1 _self.edit(name+" in "+tmp_sel) # set the editor's pk1 selection _self.delete(tmp_sel+" "+tmp_obj) if mode == 'peptide': while len(sequence): if '/' in sequence[-1]: _self.unpick() # break chain at this point break if not _self.count_atoms("?pk1"): break else: attach_amino_acid("pk1",code[sequence.pop()],animate=0,ss=ss,hydro=hydro,_self=_self) if dir>0: resi = resi + 1 else: resi = resi - 1 if not len(sequence): r = DEFAULT_SUCCESS
def _fab(input,name,mode,resi,chain,segi,state,dir,hydro,ss,quiet,_self=cmd): r = DEFAULT_ERROR code = _fab_codes.get(mode,None) quiet = int(quiet) resi = int(resi) state = int(state) dir = int(dir) hydro = int(hydro) if hydro < 0: hydro = not _self.get_setting_boolean("auto_remove_hydrogens") seq_len = 0 if (mode == 'peptide') and is_string(input): # '123/ ADC B/234/ AFCD' to [ '123/','A','D','C','B/234/','F','C','D' ] frags = input.split() input = [] for frag in frags: if '/' in frag: input.append(frag) else: seq_len = seq_len + len(frag) input.extend(list(frag)) input.append("/") # breaks chain if name == None: name = _self.get_unused_name("obj") # if mode in [ 'smiles' ]: # small molecule (FUTURE) # from chempy.champ import Champ # ch = Champ() # ch.insert_pattern_string(input) if mode in [ 'peptide' ]: # polymers if (seq_len>99) and not quiet: print " Generating a %d residue peptide from sequence..."%seq_len input.reverse() sequence = input if code != None: while len(sequence): while len(sequence) and '/' in sequence[-1]: part = sequence.pop().split('/') if len(part)>1: if len(part[-2]): resi = int(part[-2]) if len(part)>2: chain = part[-3] if len(part)>3: segi = part[-4] if len(sequence) and not _self.count_atoms("?pk1"): # new polymer segment tmp_obj = _self.get_unused_name() first = sequence.pop() _self.fragment(code[first], tmp_obj) if not hydro: cmd.remove(tmp_obj + ' and hydro') _self.alter(tmp_obj,'resi="""%s""";chain="""%s""";segi="""%s"""'%(resi,chain,segi)) _self.create(name,tmp_obj+" or ?"+name,1,state,zoom=0) tmp_sel = _self.get_unused_name() if mode == 'peptide': if dir>0: _self.select(tmp_sel,"name c and "+tmp_obj) resi = resi + 1 else: _self.select(tmp_sel,"name n and "+tmp_obj) resi = resi - 1 _self.edit(name+" in "+tmp_sel) # set the editor's pk1 selection _self.delete(tmp_sel+" "+tmp_obj) if mode == 'peptide': while len(sequence): if '/' in sequence[-1]: _self.unpick() # break chain at this point break if not _self.count_atoms("?pk1"): break else: attach_amino_acid("pk1",code[sequence.pop()],animate=0,ss=ss,hydro=hydro,_self=_self) if dir>0: resi = resi + 1 else: resi = resi - 1 if not len(sequence): r = DEFAULT_SUCCESS