def local_defaults(pdbfile,target_residues,recalc_intpka): """ # Set the parameters that are the same for all mutations """ import pKa.Design_pKa as Design_pKa defaults=Design_pKa.get_defaults() # PDB file defaults['pdb'][0]=pdbfile # # pKa calculation parameters # defaults['pHstart'][0]=0.1 defaults['pHstop'][0]=12.0 defaults['pHstep'][0]=0.25 defaults['pKMCsteps'][0]=200000 # # Design settings # # Target # target_residues=target_residues.split(',') target_text='' for target in target_residues: target_text=target_text+target+'=0.0,' # Dummy pKa value defaults['pKas'][0]=target_text[:-1] # # Method # defaults['MC'][0]=1 defaults['tabulated'][0]=1 defaults['MCsteps'][0]=0 # # Be not-so-noisy # defaults['verbose'][0]=3 # # Minimum distance between target and mutation # #defaults['min_target_dist'][0]=min_dist # # Do not save the solutions # defaults['save_solutions'][0]=None # # defaults['recalc_intpka'][0]=recalc_intpka defaults['recalc_intpka_dist'][0]=10.0 defaults['use_titration_curves'][0]=1 defaults['calc_dpka'][0]=1 defaults['generate_mutations'][0]=False defaults['ligands'][0]=[] defaults['allow_unknown_atoms'][0]=1 defaults['unknown_rad'][0]=0.0 return defaults
def local_defaults(pdbfile, target_residues, recalc_intpka): """ # Set the parameters that are the same for all mutations """ import pKa.Design_pKa as Design_pKa defaults = Design_pKa.get_defaults() # PDB file defaults['pdb'][0] = pdbfile # # pKa calculation parameters # defaults['pHstart'][0] = 0.1 defaults['pHstop'][0] = 12.0 defaults['pHstep'][0] = 0.25 defaults['pKMCsteps'][0] = 200000 # # Design settings # # Target # target_residues = target_residues.split(',') target_text = '' for target in target_residues: target_text = target_text + target + '=0.0,' # Dummy pKa value defaults['pKas'][0] = target_text[:-1] # # Method # defaults['MC'][0] = 1 defaults['tabulated'][0] = 1 defaults['MCsteps'][0] = 0 # # Be not-so-noisy # defaults['verbose'][0] = 3 # # Minimum distance between target and mutation # #defaults['min_target_dist'][0]=min_dist # # Do not save the solutions # defaults['save_solutions'][0] = None # # defaults['recalc_intpka'][0] = recalc_intpka defaults['recalc_intpka_dist'][0] = 10.0 defaults['use_titration_curves'][0] = 1 defaults['calc_dpka'][0] = 1 defaults['generate_mutations'][0] = False defaults['ligands'][0] = [] defaults['allow_unknown_atoms'][0] = 1 defaults['unknown_rad'][0] = 0.0 return defaults
def local_defaults(pdbfile,target_residues,recalc_intpka): """ # Set the parameters that are the same for all mutations """ import pKa.Design_pKa as Design_pKa defaults=Design_pKa.get_defaults() # PDB file defaults['pdb'][0]=pdbfile # # pKa calculation parameters # #defaults['pHstart'][0]=0.1 #defaults['pHstop'][0]=12.0 defaults['pHstep'][0]=0.01 defaults['pKMCsteps'][0]=200000 # # Design settings # # Target # #target_residues=target_residues.split(',') target_text='' for target in target_residues: target_text=target_text+target+'=0.0,' # Dummy pKa value defaults['pKas'][0]=target_text[:-1] # # Method # defaults['dpKa_method']=['MC','junk'] defaults['tabulated'][0]=0 defaults['MCsteps'][0]=0 defaults['stability_mode']=[False,'junk'] defaults['PBEsolver']=['DelPhi','junk'] # # Be not-so-noisy # defaults['verbose'][0]=5 # # Minimum distance between target and mutation # #defaults['min_target_dist'][0]=min_dist # # Do not save the solutions # defaults['save_solutions'][0]=None # # defaults['recalc_intpka'][0]=options.recalc_intpka defaults['recalc_intpka_dist'][0]=options.recalc_intpka_dist defaults['use_titration_curves'][0]=1 defaults['calc_dpka'][0]=1 defaults['generate_mutations'][0]=False defaults['mutation_quality'][0]=0.5 return defaults
def designPKAOptions(self): '''Returns the options for the scan calculation in the format used by Design_pKa.run_opt Exceptions Raises an Exceptions.EnvironmentError if the pKa modules cannot be found''' try: import pKa.Design_pKa as Design_pKa except ImportError: raise Exceptions.ConfigurationError, "Cannot located Design_pKa module. Check correct path specified in configuration" #Get the default options defaults = Design_pKa.get_defaults() #Go through sections and set values for section in Configuration.scanSections: for option in self.configuration.options(section): #print option #print defaults[option] #Do some translating if self.configuration.get(section, option) == 'None': defaults[option][0] = None #print 'None conversion - Changed value of %s to %s' % (option, defaults[option]) elif type(defaults[option][0]) == float: defaults[option][0] = float(self.configuration.get(section, option)) #print 'Float conversion - Changed value of %s to %s' % (option, defaults[option]) elif type(defaults[option][0]) == int: defaults[option][0] = int(self.configuration.get(section, option)) #print 'Int conversion - Chaged value of %s to %s' % (option, defaults[option]) elif type(defaults[option][0]) == bool: confValue = self.configuration.get(section, option) #Accepts 1,0, True and False if confValue == 'True': confValue = True elif confValue == 'False': confValue = False else: confValue = bool(int(confValue)) defaults[option][0] = confValue #print 'Bool - Changed value of ', option, ' to ', defaults[option] else: defaults[option][0] = self.configuration.get(section, option) #print 'No conversion - Changed value of %s to %s' % (option, defaults[option]) return defaults
def main(): """Load the PDB file, make all Ala mutations and calculate dpKa for the target residues""" try: import sys pdbfile=sys.argv[1] target_residues=sys.argv[2] except: print print 'Usage: pKa_alascan.py <pdbfile> <target residues>' print 'Example: pKa_alascan.py 2lzt.pdb :0035:GLU,:0052:ASP' print 'This command will perform a full Alanine scan and report the effect of each mutation on the pKa values of Glu 35 and Asp 52' print 'If ALL is supplied instead of a list of target residues, then dpKas will be calculated for all residues' print raise Exception,'Incorrect usage' # # Start the work # import Protool P=Protool.structureIO() P.readpdb(pdbfile) residues=P.residues.keys() residues.sort() # # All titgroups? # if target_residues=='ALL': titgroups=P.get_titratable_groups() import string target_residues=string.join(titgroups,',') # # Start looping # results={} import pickle, os for residue in residues: # # Define result filename # resultfile=os.path.join(os.getcwd(),'alascan_%s.result' %residue) if os.path.isfile(resultfile): fd=open(resultfile) results[residue]=pickle.load(fd) fd.close() else: if P.resname(residue)=='ALA' or P.resname(residue)=='GLY' or not P.isaa(residue): print 'Skipping',residue,P.resname(residue) continue print 'Calculating for residue',residue,P.resname(residue) recalc_intpka=1 defaults=local_defaults(pdbfile,target_residues,recalc_intpka) # # Set the mutations # defaults['mutations'][0]='%s:%s:%s' %(residue,P.resname(residue),'ALA') import pKa.Design_pKa as Design_pKa # # Calculate the dpKas # solutions,pKd_dict=Design_pKa.run_opt(defaults) results[residue]=solutions.copy() # # Save this result # fd=open(resultfile,'w') pickle.dump(results[residue],fd) fd.close() # # Save all # name='%s.alascan.pickle' %pdbfile fd=open(name,'w') import pickle pickle.dump(results,fd) fd.close()
def main(): """Load the PDB file, make all Ala mutations and calculate dpKa for the target residues""" try: import sys pdbfile = sys.argv[1] target_residues = sys.argv[2] except: print print 'Usage: pKa_alascan.py <pdbfile> <target residues>' print 'Example: pKa_alascan.py 2lzt.pdb :0035:GLU,:0052:ASP' print 'This command will perform a full Alanine scan and report the effect of each mutation on the pKa values of Glu 35 and Asp 52' print 'If ALL is supplied instead of a list of target residues, then dpKas will be calculated for all residues' print raise Exception, 'Incorrect usage' # # Start the work # import Protool P = Protool.structureIO() P.readpdb(pdbfile) residues = P.residues.keys() residues.sort() # # All titgroups? # if target_residues == 'ALL': titgroups = P.get_titratable_groups() import string target_residues = string.join(titgroups, ',') # # Start looping # results = {} import pickle, os for residue in residues: # # Define result filename # resultfile = os.path.join(os.getcwd(), 'alascan_%s.result' % residue) if os.path.isfile(resultfile): fd = open(resultfile) results[residue] = pickle.load(fd) fd.close() else: if P.resname(residue) == 'ALA' or P.resname( residue) == 'GLY' or not P.isaa(residue): print 'Skipping', residue, P.resname(residue) continue print 'Calculating for residue', residue, P.resname(residue) recalc_intpka = 1 defaults = local_defaults(pdbfile, target_residues, recalc_intpka) # # Set the mutations # defaults['mutations'][0] = '%s:%s:%s' % (residue, P.resname(residue), 'ALA') import pKa.Design_pKa as Design_pKa # # Calculate the dpKas # solutions, pKd_dict = Design_pKa.run_opt(defaults) results[residue] = solutions.copy() # # Save this result # fd = open(resultfile, 'w') pickle.dump(results[residue], fd) fd.close() # # Save all # name = '%s.alascan.pickle' % pdbfile fd = open(name, 'w') import pickle pickle.dump(results, fd) fd.close()
def main(options,args): """Load the PDB file and the list of mutations""" import sys pdbfile=args[0] target_residues=options.target_groups # # Load the PDB file # import Protool P=Protool.structureIO() P.readpdb(pdbfile) residues=P.residues.keys() residues.sort() if not options.allmutations: # # Load the mutations # mutfile=args[1] fd=open(mutfile) mutlines=fd.readlines() fd.close() else: mutlines=[] aas=P.trueaminoacids.keys() aas.sort() count=1 for residue in residues: for aa in aas: if aa==P.resname(residue): continue mutlines.append('clone%d,%s:%s:%s' %(count,residue,P.resname(residue),aa)) count=count+1 print 'Created %d mutant proteins each containing 1 mutation' %len(mutlines) # # Make the resultdir # import os resultdir=os.path.join(os.getcwd(),'pKa_mutscan_results') if not os.path.isdir(resultdir): os.mkdir(resultdir) # # which target residues # if target_residues==[] or target_residues==['ALL']: target_residues=P.get_titratable_groups() import string target_residues=string.join(target_residues,',') results={} import pickle, os for mline in mutlines: import string if mline[0]=='#' or mline[:2]=='//': continue # line=string.strip(mline) sp_line=line.split(',') variant_name=sp_line[0] mutation=sp_line[1] print 'Variant: %s, mutations: %s' %(variant_name,mutation) if mutation.find('insert')!=-1: print 'Skipping insertions' continue # # Define result filename # resultfile=os.path.join(resultdir,'mutscan_%s.result' %variant_name) if os.path.isfile(resultfile): fd=open(resultfile) results[variant_name]=pickle.load(fd) fd.close() #print 'Already did',mutation else: recalc_intpka=1 defaults=local_defaults(pdbfile,target_residues,recalc_intpka) # # Set the mutations # import string defaults['mutations'][0]=string.strip(mutation) print 'Calculating for',mutation import pKa.Design_pKa as Design_pKa # # Set other parameters # defaults['ion'][0]=options.ion # # Calculate the dpKas # #try: solutions=Design_pKa.run_opt(defaults) #except Exception,inst: # if str(inst).find('Cannot model mutant')!=-1: # solutions='Cannot model mutant' # raise Exception('Cannot model mutant') # elif str(inst).find('We cannot model insertions')!=-1: # solutions='Skipping insertions' # else: # print inst # raise Exception(str(inst)) print print print 'Results are ',solutions results[variant_name]=solutions # # Save this result # print 'Saving',results[variant_name],'in',resultfile import os if len(os.path.split(resultfile)[1])>80: continue fd=open(resultfile,'w') pickle.dump(results[variant_name],fd) print '*********************' fd.close() # # Save all # name=os.path.join(os.getcwd(),'%s.mutscan.pickle' %pdbfile) fd=open(name,'w') import pickle pickle.dump(results,fd) fd.close()