[phenixbb] positional restraints in real_space_refine?
Tristan Croll
tic20 at cam.ac.uk
Tue Oct 8 08:47:08 PDT 2019
As promised, here's a quick run-down of how you can currently implement
bulk positional targets in ISOLDE. This requires a combination of
commands via the ChimeraX command line (the bar under the main GUI
window) and the Python shell (accessible via Tools/General/Shell).
Eventually this will all be doable via the command line, but not quite
yet. The instructions assume that your main model is model #1 and is
ready to go in ISOLDE, and each rigid-body docked fragment corresponds
exactly to some part of your main model.
Best regards,
Tristan
# Preliminaries on the command line: apply adaptive distance restraints
# to keep the overall geometry controlled: "isolde restrain distances
#1"
# Preliminaries in the shell:
m = session.isolde.selected_model
from chimerax.atomic import selected_atoms
from chimerax.isolde import session_extensions as sx
prm = sx.get_position_restraint_mgr(m)
# Now, in the GUI or via the command line, select the first set of atoms
# you want to move - e.g. "select #1/A:1-100 at CA" to select all CA atoms
# in residues 1 to 100 of chain A in model #1.
# in the shell:
tomove_1 = selected_atoms(session)
# on the command line, select the *exactly* corresponding atoms from
your
# first rigid-body docked fragment - this will most likely be as simple
as
# changing the model number in the previous command
target_1 = selected_atoms(session)
prs_1 = prm.add_restraints(tomove_1)
prs_1.targets = target_1.scene_coords
prs_1.spring_constants = 100
# Units here are in kJ/mol/nm^2. This value is very weak, and is a good
starting
# point when your starting coordinates are far from the target. As the
simulation
# converges you might consider increasing these 10-fold or so - you can
change
# them at any time using 'prs_1.spring_constants = {new value}' and
they'll
# automatically update in the simulation. The restraints themselves
mostly act
# as simple harmonic potentials, but switch to constant force beyond a
(quite high,
# but still stable) cut-off. In general, as long as you're also using
the
# adaptive distance restraints they should be well-behaved even if your
target is
# many tens of Angstroms from the starting coordinates.
prs_1.enableds = True
# Each target position will appear as a yellow pin in the main GUI,
connected to
# its atom by a yellow dotted line.
# Now repeat the above for each other docked fragment. Once done, you
can close
# the docked fragment models if you wish. Select your model and press
ISOLDE's
# play button. If you wish to monitor some numeric indicator of
convergence as
# well as simply watching, you can get the mean difference between
current and
# target positions for a set of restraints with a little Numpy:
import numpy
numpy.mean(numpy.abs(numpy.linalg.norm(prs_1.targets-prs_1.atoms.coords,
axis=1)), axis=0)
# Once you're happy with the result, stop the simulation. You can
disable the
# position restraints using:
prs_1.enableds = False
# ... but if you intend to continue in this modelling session, it's a
little more
# efficient to delete them entirely (disabled position restraints are
still
# present in simulations, in case you want to re-enable them).
# WARNING: you MUST ensure the simulation is stopped (not just paused)
before doing
# this. If you forget, you'll still be able to save your coordinates but
your ISOLDE
# session will be otherwise fried.
# This can be done via the model panel or in the shell. on the model
panel,
# expand the entry corresponding to the model itself (this will have the
name of
# the original coordinates file, and in most circumstances will be model
#1.3),
# find the "Position Restraints" entry, select it and press the "Close"
button.
# Do the same for the "Adaptive Distance Restraints" entry. In the
shell:
session.models.remove([prm])
adrm = sx.get_adaptive_distance_restraint_mgr(m)
session.models.remove([adrm])
On 2019-10-07 17:14, Tristan Croll wrote:
> Ok. I've been a bit tied up today, but will try to get them together
> tomorrow. If you have access to a powerful enough GPU machine and the
> changes aren't *too* large, you could try the following right now:
>
> - Load your model/map in ChimeraX, start ISOLDE and associate the
> model with the map, ready to go
> - Add hydrogens if you haven't already using the 'addh' command on the
> ChimeraX command line
> - Assuming your model is #1 (check the Models panel if you're not
> sure), do 'isolde restrain distances #1' to set up a web of distance
> restraints
> - On the ISOLDE 'Sim settings' tab, increase the mask radius to the
> approximate distance necessary to cover the biggest move you expect
> - Click the 'Show map settings dialogue' button and reduce the Weight
> term to about half (generally when you're doing big moves you want the
> map to pull quite weakly)
> - Start a simulation covering the whole model ('select #1', then press
> ISOLDE's play button)
> - Reduce the display to a backbone trace by hiding everything but the
> CA and P atoms: 'hide ~@CA,P'
> - select the atoms you want to tug on (e.g. 'select /A:20-30')
> - click the 'tug selected atoms' button (third from bottom left on the
> ISOLDE panel)
> - Now, clicking and dragging with the right mouse button will tug on
> the selection - line it up so the direction you want to pull is in the
> plane of the screen, and go for it. I find that tugging in short
> bursts rather than one continuous pull yields the best results. The
> distance restraints are designed to restrain local geometry while
> allowing large conformational changes, so in general things should
> remain under control. If you need to (i.e. in places where the
> conformation *really* changes) you can release the restraints on some
> atoms by selecting them, then typing the command, 'isolde release
> distances sel'.
>
> Best regards,
>
> Tristan
>
> On 2019-10-07 10:09, Daniel Larsson wrote:
>> Tristan, it would be very nice if you could write it up. Thank you so
>> much!
>>
>> Regards,
>> Daniel
>>
>>
>>
>>> On 2019-10-04, at 23:09, Tristan Croll <tic20 at cam.ac.uk> wrote:
>>>
>>> I’ve done something quite like this in ISOLDE with a fair bit of
>>> success: rigid-body docked individual domains into density, then
>>> using these to define target positions for flexible fitting of the
>>> unbroken complete model from a markedly different configuration. This
>>> currently requires a little work in the ChimeraX shell to set up, but
>>> is fairly straightforward. Let me know if you’re interested and I can
>>> write up some instructions.
>>>
>>>
>>>
>>> Tristan Croll
>>> Research Fellow
>>> Cambridge Institute for Medical Research
>>> University of Cambridge CB2 0XY
>>>
>>>
>>>
>>>
>>>> On 3 Oct 2019, at 11:24, Daniel Larsson <daniel.larsson at icm.uu.se>
>>>> wrote:
>>>>
>>>> Hi all,
>>>>
>>>> I'm working on a cryo-EM reconstruction where I have some flexible
>>>> low-resolution elements (RNA double helices). They have different
>>>> orientations relative to my reference model, but I would like to
>>>> model them in the approximately correct position. I've tried
>>>> real_space_refine with morphing and simulated annealing, but neither
>>>> accomplish what I want. Now I'm thinking of cutting out these
>>>> helices and manually position them approximately where I want them.
>>>> But I fear that this will case headache at the "joint". Is it
>>>> possible to use the manual positions as a reference for positional
>>>> restraints, but use the original model as the reference for the
>>>> torsion angles. Is this possible with real_space_refine? Or is there
>>>> a better way of refining this structure?
>>>>
>>>> Regards,
>>>> Daniel
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> När du har kontakt med oss på Uppsala universitet med e-post så
>>>> innebär det att vi behandlar dina personuppgifter. För att läsa mer
>>>> om hur vi gör det kan du läsa här:
>>>> http://www.uu.se/om-uu/dataskydd-personuppgifter/
>>>>
>>>> E-mailing Uppsala University means that we will process your
>>>> personal data. For more information on how this is performed, please
>>>> read here: http://www.uu.se/en/about-uu/data-protection-policy
>>>>
>>>> _______________________________________________
>>>> phenixbb mailing list
>>>> phenixbb at phenix-online.org
>>>> http://phenix-online.org/mailman/listinfo/phenixbb
>>>> Unsubscribe: phenixbb-leave at phenix-online.org
>>>
>
>
> _______________________________________________
> phenixbb mailing list
> phenixbb at phenix-online.org
> http://phenix-online.org/mailman/listinfo/phenixbb
> Unsubscribe: phenixbb-leave at phenix-online.org
More information about the phenixbb
mailing list