Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
	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	
Exemplo n.º 5
0
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()
Exemplo n.º 6
0
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()
Exemplo n.º 7
0
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()