Use symmetry information in Isolde

Hello I have a naive question about using Isolde to build a model into a cryoEM map generated with symmetry (ie. D4). Basically I don't understand how to rebuild a chain and have the changes reflected in the symmetry related chains when using a cryoEM map. Is it possible to use, for example, a NCS file (like symmetry_from_map.ncs_spec) generated by phenix in order to get Isolde to build simultaneously the NCS related chains? Or is there another way build symmetry related chains into a symmetrical cryoEM map? Thanks for any tips you have.

This is one of many things that has a preliminary implementation in ISOLDE, but is not yet exposed to the main interface. You can get to it via the Python shell, though (Tools/General/Shell). To reimpose strict symmetry: assuming you have your model initialised in ISOLDE, save your session in case of trouble ("save session.cxs"), prune your model down to one asymmetric unit (e.g. "sel /A,B; del ~sel"), then in the shell: m = session.isolde.selected_model from chimerax.isolde.phenix.map_symmetry import parse_map_symmetry_file symmetry_map = parse_map_symmetry_file('symmetry_from_map.ncs_spec') from chimerax.isolde.atomic.building.ncs import create_all_ncs_copies create_all_ncs_copies(m, symmetry_map[0]) One known bug is that any bonds between different chains will be lost - if present, you'll need to re-add them manually. That extreme approach should only be necessary if you make really big changes, though (e.g. shifting a segment in register, major movement of bulky sidechains). For smaller changes it may be easier to just use your "working" ASU as a template for torsion restraints on the remaining chains. A bit repetitive doing it via the command line, e.g.: isolde restrain torsions #1/C template #1/A angleRange 180 ... and repeat for each matching NCS copy, one chain at a time. This will restrain the NCS copies to the current geometry of your template ASU - you'll need to repeat the command later if you make further changes. If you have many chains, you could save yourself some time by setting up a simple loop in the shell, e.g.: def reimpose_symmetry(session): ncs_map = { "A": ["C","E","G"], "B": ["D","F","H"] } from chimerax.core.commands import run for template, ncs_list in ncs_map.items(): for ncs_chain in ncs_list: run(session, "isolde restrain torsions #1/{} template #1/{} angleRange 180".format(ncs_chain, template)) reimpose_symmetry(session) ... and then re-run reimpose_symmetry(session) every time you want to update the restraints. Of course, you'll need to actually run a simulation encompassing the whole model for these restraints to take effect. Hope this helps! I do hope to flesh out this tool as time permits. -- Tristan ________________________________ From: ChimeraX-users <chimerax-users-bounces@cgl.ucsf.edu> on behalf of Sean Connell <sean.connell@gmail.com> Sent: 06 April 2021 08:44 To: chimerax-users@cgl.ucsf.edu <chimerax-users@cgl.ucsf.edu> Subject: [chimerax-users] Use symmetry information in Isolde Hello I have a naive question about using Isolde to build a model into a cryoEM map generated with symmetry (ie. D4). Basically I don't understand how to rebuild a chain and have the changes reflected in the symmetry related chains when using a cryoEM map. Is it possible to use, for example, a NCS file (like symmetry_from_map.ncs_spec) generated by phenix in order to get Isolde to build simultaneously the NCS related chains? Or is there another way build symmetry related chains into a symmetrical cryoEM map? Thanks for any tips you have. _______________________________________________ ChimeraX-users mailing list ChimeraX-users@cgl.ucsf.edu Manage subscription: https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users

Thanks Tristan, I will try this out and if I have any more questions get back to you. Sean
On 6 Apr 2021, at 10:28, Tristan Croll <tic20@cam.ac.uk> wrote:
This is one of many things that has a preliminary implementation in ISOLDE, but is not yet exposed to the main interface. You can get to it via the Python shell, though (Tools/General/Shell). To reimpose strict symmetry: assuming you have your model initialised in ISOLDE, save your session in case of trouble ("save session.cxs"), prune your model down to one asymmetric unit (e.g. "sel /A,B; del ~sel"), then in the shell:
m = session.isolde.selected_model from chimerax.isolde.phenix.map_symmetry import parse_map_symmetry_file symmetry_map = parse_map_symmetry_file('symmetry_from_map.ncs_spec')
from chimerax.isolde.atomic.building.ncs import create_all_ncs_copies create_all_ncs_copies(m, symmetry_map[0])
One known bug is that any bonds between different chains will be lost - if present, you'll need to re-add them manually. That extreme approach should only be necessary if you make really big changes, though (e.g. shifting a segment in register, major movement of bulky sidechains). For smaller changes it may be easier to just use your "working" ASU as a template for torsion restraints on the remaining chains. A bit repetitive doing it via the command line, e.g.:
isolde restrain torsions #1/C template #1/A angleRange 180
... and repeat for each matching NCS copy, one chain at a time. This will restrain the NCS copies to the current geometry of your template ASU - you'll need to repeat the command later if you make further changes. If you have many chains, you could save yourself some time by setting up a simple loop in the shell, e.g.:
def reimpose_symmetry(session): ncs_map = { "A": ["C","E","G"], "B": ["D","F","H"] } from chimerax.core.commands import run for template, ncs_list in ncs_map.items(): for ncs_chain in ncs_list: run(session, "isolde restrain torsions #1/{} template #1/{} angleRange 180".format(ncs_chain, template)) reimpose_symmetry(session)
... and then re-run reimpose_symmetry(session) every time you want to update the restraints. Of course, you'll need to actually run a simulation encompassing the whole model for these restraints to take effect.
Hope this helps! I do hope to flesh out this tool as time permits.
-- Tristan
From: ChimeraX-users <chimerax-users-bounces@cgl.ucsf.edu> on behalf of Sean Connell <sean.connell@gmail.com> Sent: 06 April 2021 08:44 To: chimerax-users@cgl.ucsf.edu <chimerax-users@cgl.ucsf.edu> Subject: [chimerax-users] Use symmetry information in Isolde
Hello I have a naive question about using Isolde to build a model into a cryoEM map generated with symmetry (ie. D4). Basically I don't understand how to rebuild a chain and have the changes reflected in the symmetry related chains when using a cryoEM map. Is it possible to use, for example, a NCS file (like symmetry_from_map.ncs_spec) generated by phenix in order to get Isolde to build simultaneously the NCS related chains? Or is there another way build symmetry related chains into a symmetrical cryoEM map?
Thanks for any tips you have. _______________________________________________ ChimeraX-users mailing list ChimeraX-users@cgl.ucsf.edu <mailto:ChimeraX-users@cgl.ucsf.edu> Manage subscription: https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users <https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users>
participants (2)
-
Sean Connell
-
Tristan Croll