exclude clashes for non-symmetry contacts
Is there some way to make phenix.refine to ignore clashes for specific pair(s) of chains? I am dealing with a rare case of twinning where same protein molecule exists in two orientations in the same unit cell. I tried just to duplicate the molecule and set initial occupancy to 0.5, but refinement fails (as I expected) saying that there are too many close contacts. Ideally, I would like to proceed with ignoring close contacts between, say, chains A/B. I am aware that one can exclude groups of residues from symmetry clashes, but these two copies are in the same cell. I guess I could try shifting one into the next unit cell and then excluding symmetry clashes, but even assuming that will work it is a rather ugly hack. The alternative is probably to define the second orientation as an alternative conformation. Aside from aesthetic objections, I don't want to lose the ability to restrain NCS - I need two orientations to be identical structures, and I am not sure yet whether I can use NCS groups defined via alternative conformers. Cheers, Ed.
Dear Edwin,
The alternative is probably to define the second orientation as an alternative conformation. Aside from aesthetic objections, I don't want to lose the ability to restrain NCS - I need two orientations to be identical structures, and I am not sure yet whether I can use NCS groups defined via alternative conformers.
I think this would be the easiest way forward and it looks like a very natural use of alternative conformations. You can definitely define NCS groups and even automatic search works. I'm attaching a small dummy example I experimented on. Two overlapping helices: chain A with altloc A and occupancy 0.5, chain B with altloc B and occupancy 0.5. Nothing prevents you from defining NCS groups using "altloc A" and it should work, but I imagine there should always be equivalent selection in terms of "chain A". Best regards, Oleg Sobolev.
Thanks - we could have an argument about what is "natural" here, but that's
philosophical.
The only option that works for me so far is to move the other model to the
neighboring unit cell and disable symmetry clashes. As I said, it's an
ugly hack, but it seems to work. I do run into further issues because omit
map calculation fails complaining about clashes, but that's a problem for
another day.
Problem with alternate conformer based approach is that it's pain to merge
the two models - by hand it would take too long, but I do have reasonable
coding abilities so I wrote a little tool that merges two pdb files into
one and marks models with altlocs. However, phenix.refine fails when
trying to read my NCS definitions even though it appears to have validated
them just fine (see log file excerpt below). Any suggestions - am I maybe
defining NCS groups wrong?
Validating user-supplied NCS groups...
Validating:
ncs_group {
reference = "altloc A"
selection = "altloc B"
}
OK. All atoms were included in validated selection.
...
==================== Process input NCS or/and find new NCS
====================
Number of NCS groups: 1
Traceback (most recent call last):
File
"/ibbr/phenix-1.14-3228/build/../modules/phenix/phenix/command_line/refine.py",
line 11, in <module>
command_line.run(command_name="phenix.refine", args=sys.argv[1:])
File
"/ibbr/phenix-1.14-3228/modules/phenix/phenix/refinement/command_line.py",
line 106, in run
log=log)
File "/ibbr/phenix-1.14-3228/modules/phenix/phenix/refinement/driver.py",
line 450, in __init__
ncs_groups_as_phil = iotbx.phil.parse(ncs_groups_str)
File "/ibbr/phenix-1.14-3228/modules/cctbx_project/iotbx/phil.py", line
81, in parse
process_includes=process_includes)
File
"/ibbr/phenix-1.14-3228/modules/cctbx_project/libtbx/phil/__init__.py",
line 2178, in parse
primary_parent_scope=result)
File
"/ibbr/phenix-1.14-3228/modules/cctbx_project/libtbx/phil/parser.py", line
120, in collect_objects
scope_extract_call_proxy_cache=scope_extract_call_proxy_cache)
File
"/ibbr/phenix-1.14-3228/modules/cctbx_project/libtbx/phil/parser.py", line
134, in collect_objects
words=collect_assigned_words(word_iterator, lead_word),
File
"/ibbr/phenix-1.14-3228/modules/cctbx_project/libtbx/phil/parser.py", line
31, in collect_assigned_words
str(lead_word), lead_word.where_str()))
RuntimeError: Missing value for selection (input line 3)
On Thu, Nov 1, 2018 at 7:50 PM Oleg Sobolev
Dear Edwin,
The alternative is probably to define the second orientation as an alternative conformation. Aside from aesthetic objections, I don't want to lose the ability to restrain NCS - I need two orientations to be identical structures, and I am not sure yet whether I can use NCS groups defined via alternative conformers.
I think this would be the easiest way forward and it looks like a very natural use of alternative conformations. You can definitely define NCS groups and even automatic search works. I'm attaching a small dummy example I experimented on. Two overlapping helices: chain A with altloc A and occupancy 0.5, chain B with altloc B and occupancy 0.5. Nothing prevents you from defining NCS groups using "altloc A" and it should work, but I imagine there should always be equivalent selection in terms of "chain A".
Best regards, Oleg Sobolev.
Hi Edwin,
Looks like something is wrong with inputs, most likely parameter file. Can
you please share the inputs (model, ligands - if any, additional parameter
files) off-list so we can reproduce and fix the issue. Do you use GUI or
command-line? Do you use GUI atom selection editor to define NCS groups?
Everything will be kept confidential.
Best regards,
Oleg Sobolev.
On Fri, Nov 2, 2018 at 9:56 AM, Edwin Pozharski
Thanks - we could have an argument about what is "natural" here, but that's philosophical.
The only option that works for me so far is to move the other model to the neighboring unit cell and disable symmetry clashes. As I said, it's an ugly hack, but it seems to work. I do run into further issues because omit map calculation fails complaining about clashes, but that's a problem for another day.
Problem with alternate conformer based approach is that it's pain to merge the two models - by hand it would take too long, but I do have reasonable coding abilities so I wrote a little tool that merges two pdb files into one and marks models with altlocs. However, phenix.refine fails when trying to read my NCS definitions even though it appears to have validated them just fine (see log file excerpt below). Any suggestions - am I maybe defining NCS groups wrong?
Validating user-supplied NCS groups... Validating: ncs_group { reference = "altloc A" selection = "altloc B" } OK. All atoms were included in validated selection. ...
==================== Process input NCS or/and find new NCS ====================
Number of NCS groups: 1
Traceback (most recent call last): File "/ibbr/phenix-1.14-3228/build/../modules/phenix/phenix/command_line/refine.py", line 11, in <module> command_line.run(command_name="phenix.refine", args=sys.argv[1:]) File "/ibbr/phenix-1.14-3228/modules/phenix/phenix/refinement/command_line.py", line 106, in run log=log) File "/ibbr/phenix-1.14-3228/modules/phenix/phenix/refinement/driver.py", line 450, in __init__ ncs_groups_as_phil = iotbx.phil.parse(ncs_groups_str) File "/ibbr/phenix-1.14-3228/modules/cctbx_project/iotbx/phil.py", line 81, in parse process_includes=process_includes) File "/ibbr/phenix-1.14-3228/modules/cctbx_project/libtbx/phil/__init__.py", line 2178, in parse primary_parent_scope=result) File "/ibbr/phenix-1.14-3228/modules/cctbx_project/libtbx/phil/parser.py", line 120, in collect_objects scope_extract_call_proxy_cache=scope_extract_call_proxy_cache) File "/ibbr/phenix-1.14-3228/modules/cctbx_project/libtbx/phil/parser.py", line 134, in collect_objects words=collect_assigned_words(word_iterator, lead_word), File "/ibbr/phenix-1.14-3228/modules/cctbx_project/libtbx/phil/parser.py", line 31, in collect_assigned_words str(lead_word), lead_word.where_str())) RuntimeError: Missing value for selection (input line 3)
On Thu, Nov 1, 2018 at 7:50 PM Oleg Sobolev
wrote: Dear Edwin,
The alternative is probably to define the second orientation as an alternative conformation. Aside from aesthetic objections, I don't want to lose the ability to restrain NCS - I need two orientations to be identical structures, and I am not sure yet whether I can use NCS groups defined via alternative conformers.
I think this would be the easiest way forward and it looks like a very natural use of alternative conformations. You can definitely define NCS groups and even automatic search works. I'm attaching a small dummy example I experimented on. Two overlapping helices: chain A with altloc A and occupancy 0.5, chain B with altloc B and occupancy 0.5. Nothing prevents you from defining NCS groups using "altloc A" and it should work, but I imagine there should always be equivalent selection in terms of "chain A".
Best regards, Oleg Sobolev.
As follow up, the best solution to this problem that I found at the moment
is as follows (thanks to Oleg for suggestions/fixes).
1. Set occupancy of the first orientation to 0.5.
2. Set altloc of the first orientation to 1.
3. Set occupancy of the second orientation to 0.5.
4. Set altloc of the second orientation to 2.
5. Rename all the chain IDs of the second orientation (I used lowercase -
i.e. A->a, B->b, etc).
6. If you need to keep two orientations close (I do in this case), define
NCS groups as follows
refinement.pdb_interpretation.ncs_group {
reference = chain A
selection = chain a
}
7. Also, define the occupancy groups as
refinement {
refine {
occupancies {
constrained_group {
selection = chain A
selection = chain a
}
}
}
}
This works with phenix.refine. I've seen some adverse effects with coot -
basically, LSQ/SSM no longer works. Obviously, splitting the full model
into separate orientations helps. And finally, lowercase chains probably
need to be renamed back to uppercase for PDB deposition.
Cheers,
Ed.
On Thu, Nov 1, 2018 at 2:15 PM Edwin Pozharski
Is there some way to make phenix.refine to ignore clashes for specific pair(s) of chains? I am dealing with a rare case of twinning where same protein molecule exists in two orientations in the same unit cell. I tried just to duplicate the molecule and set initial occupancy to 0.5, but refinement fails (as I expected) saying that there are too many close contacts. Ideally, I would like to proceed with ignoring close contacts between, say, chains A/B.
I am aware that one can exclude groups of residues from symmetry clashes, but these two copies are in the same cell. I guess I could try shifting one into the next unit cell and then excluding symmetry clashes, but even assuming that will work it is a rather ugly hack.
The alternative is probably to define the second orientation as an alternative conformation. Aside from aesthetic objections, I don't want to lose the ability to restrain NCS - I need two orientations to be identical structures, and I am not sure yet whether I can use NCS groups defined via alternative conformers.
Cheers,
Ed.
participants (2)
-
Edwin Pozharski
-
Oleg Sobolev