Hello, I have built a model and I want it to satisfy some CA-CA restraints. In order to do so, I've added some restraints with the command "rsr.add(forms.gaussian(group=physical.xy_distance,feature=features.distance(at['CA:893:C'],at['CA:184:B']),mean=10.0, stdev=0.1))" and some restraints on secondary structure to avoid unwinding of alpha helix. Actually these restraints caused kinks in alpha-helices that are known to span the membrane.
To avoid that kind of kinks I want to treat the helices as rigid bodies. First I tried to add rigid bodies in the same script
a = mymodel(env, alnfile = 'align.pir', # alignment filename knowns = '2OXS', # codes of the templates sequence = 'mytemplate ') # code of the target
r = rigid_body(a.residue_range('180:B', '200:B')) s = rigid_body(a.residue_range('890:C', '900:C')) a.restraints.rigid_bodies.append(r) a.restraints.rigid_bodies.append(s)
But in this case, MODELLER doesn't recognize the residue range, and raises the error "No such Residues 180:B". I have checked in previous models; the residues are there.
I also tried to start from an existing model and applied molecular dynamics on it, like it is described in optimize.py. I have succeeded in defining the rigid body on my initial model but the applied restraints aren't strong enough to move my intitial model. In addition the MD partially unwinds the secondary structure of my model.
Here is the script I used that differs from the manual.
# Keep residues 1-10 rigid: r = rigid_body(mdl.residue_range('277:B', '318:B')) s = rigid_body(mdl.residue_range('972:C', '1014:C')) mdl.restraints.rigid_bodies.append(r) mdl.restraints.rigid_bodies.append(s)
# Select all atoms: atmsel = selection(mdl)
# Generate the restraints: mdl.restraints.make(atmsel, restraint_type='stereo', spline_on_site=False) mdl.restraints.write(file=code+'.rsr') a = mdl.atoms mdl.restraints.add(forms.upper_bound(group=physical.xy_distance, feature=features.distance(a['CA:343:B'], a['CA:986:C']), mean=18., stdev=0.1))
Thus I have two questions : Is it possible, in the same script, to add rigid body restraints and then do the modelling or applying rigid bodies is only possible on an already existing model?
To satisfy my restraints which approach is the best : add my CA-CA restraint, my rigid body definition and make the homology modelling at the same time or do a MD on an existing model?
Suggestions are welcome. Many Thanks, Depret Grégoire
Gregoire Depret wrote: > To avoid that kind of kinks I want to treat the helices as rigid bodies. > First I tried to add rigid bodies in the same script > > a = mymodel(env, > alnfile = 'align.pir', # alignment filename > knowns = '2OXS', # codes of the templates > sequence = 'mytemplate ') # code of the target > > r = rigid_body(a.residue_range('180:B', '200:B')) > s = rigid_body(a.residue_range('890:C', '900:C')) > a.restraints.rigid_bodies.append(r) > a.restraints.rigid_bodies.append(s) > > But in this case, MODELLER doesn't recognize the residue range, and raises > the error "No such Residues 180:B". I have checked in previous models; the > residues are there.
You can't make restraints before you call a.make(), because the model coordinates don't exist at that point. To add any restraints (including rigid bodies), define the special_restraints routine: http://salilab.org/modeller/manual/node26.html
Ben Webb, Modeller Caretaker
participants (2)
-
Gregoire Depret
-
Modeller Caretaker