I have made some modification to the mutant script at the modeller wiki. The change may be seen as patch to the original file. I I whised to change residue 1M and 3P to 1T and E3 in 1B72 is this the way to go. Ca s.mutant be used to select two residues?
Knut J
--- mutant.py 2010-12-01 09:04:33.004206998 +0100 +++ mutant2.py 2010-12-01 13:09:02.334207000 +0100 @@ -65,7 +65,7 @@ spline_on_site=True)
#first argument -modelname, respos, restyp, chain, = sys.argv[1:] +modelname, respos, restyp, chain, respos2, restyp2, chain2 = sys.argv[1:]
log.verbose() @@ -98,6 +98,12 @@
#perform the mutate residue operation s.mutate(residue_type=restyp) + + +s1=selection(mdl1.chains[chain2].residues[respos2]) +s1.mutate(residue_type=restyp2) + + #get two copies of the sequence. A modeller trick to get things set up ali.append_model(mdl1, align_codes=modelname)
@@ -145,26 +151,30 @@ #residue, in second pass, include nonbonded neighboring atoms) #set up the mutate residue selection segment s = selection(mdl1.chains[chain].residues[respos]) - +s1=selection(mdl1.chains[chain2].residues[respos2]) mdl1.restraints.unpick_all() mdl1.restraints.pick(s)
s.energy() +s1.energy()
s.randomize_xyz(deviation=4.0) +s1.randomize_xyz(deviation=4.0)
mdl1.env.edat.nonbonded_sel_atoms=2 optimize(s, sched) +optimize(s1, sched)
#feels environment (energy computed on pairs that have at least one member #in the selected) mdl1.env.edat.nonbonded_sel_atoms=1 optimize(s, sched) +optimize(s1, sched)
s.energy() - +s1.energy() #give a proper name -mdl1.write(file=modelname+restyp+respos+'.pdb') +mdl1.write(file=modelname+restyp+respos+'_'+respos2+restyp2+'.pdb')
#delete the temporary file os.remove(modelname+restyp+respos+'.tmp')