Re: [modeller_usage] Rigid bodies on the backbone only.
To: Gregoire Depret <>
Subject: Re: [modeller_usage] Rigid bodies on the backbone only.
From: Modeller Caretaker <>
Date: Wed, 18 Apr 2007 13:03:01 -0700
Cc:
Gregoire Depret wrote:
I would like to apply rigid bodies only on the mainchain of my model in order
to run molecular dynamics and conjuguate gradients.
I would not recommend doing it this way - why not just select only the
sidechain and pass that to your optimizers? Optimizers only move the
selected atoms (keeping others fixed) anyway.
I'm not sure that this would work, unless 56:A is actually before 48:A -
you would get a ValueError exception.
and just before the optimization start :
atmselall = selection(mdl)
atmsel = selection.only_mainchain(atmselall)
This could be written more concisely as
atmselall = selection(mdl)
atmsel = atmselall.only_mainchain()
or even
atmsel = selection(mdl).only_mainchain()
and then :
cg.optimize(atmsel, max_iterations=50, actions=actions.trace(5, trcfil))
It seems to me that this would only optimize the mainchain, which you
have already made rigid. So it's not clear to me exactly what it is you
want to do. If you want to repack sidechains, my first suggestion is
probably the most efficient way to do it.
But my model is destroyed by CG and MD which is not the case when rigid body
is applied on the whole chain.
Do you have any restraints? Without restraints any sort of optimization
will destroy your structure.
Maybe I can define "rigid_body" with "atom_range" in place of "residue_range"
and selecting all the atoms of the backbone (Ca, CO, N) for my residue range,
but I think there must be a better way to achieve this.
A rigid body object can take any collection of atoms, so yes, you could
use atom_range rather than residue_range, or pass in a selection object,
or even just an explicit list of all the atoms you want to keep rigid.