#576 closed enhancement (fixed)
Use SSBOND records
| Reported by: | Owned by: | Eric Pettersen | |
|---|---|---|---|
| Priority: | major | Milestone: | 0.5 |
| Component: | Input/Output | Version: | |
| Keywords: | Cc: | ||
| Blocked By: | Blocking: | ||
| Notify when closed: | Platform: | all | |
| Project: | ChimeraX |
Description (last modified by )
As per Tristan: "Phenix does not write out CONECT records for disulfide bonds - but it *does* write out SSBOND records giving the two bonded residues."
So, process SSBOND records after CONECT records and form the disulphide bond if it's missing (check that the bond is between atoms in the same symmetry partner).
Attachments (1)
Change History (7)
comment:1 by , 9 years ago
| Description: | modified (diff) |
|---|---|
| Reporter: | changed from to |
comment:2 by , 9 years ago
| Milestone: | → Beta Release |
|---|---|
| Priority: | blocker → major |
comment:3 by , 8 years ago
| Status: | assigned → feedback |
|---|
follow-up: 4 comment:4 by , 8 years ago
Hi Eric,
The attached (1PMX, with all models past the first removed along with
CONECT cards, but retaining the SSBOND cards) still fails to form
disulfides on open. I've been routinely using the below method (written
some time back -it can undoubtedly be done more neatly) to fill them in
as necessary - it does so correctly in this case, so the SSBONDs are
being loaded into the metadata dict correctly.
Cheers,
Tristan
{{{
def add_disulfides_from_model_metadata(model):
m_id = model.id_string()
from chimerax.core.commands import atomspec
metadata = model.metadata
try:
disulfide_list = metadata['SSBOND']
except KeyError:
return
for disulfide in disulfide_list:
sym1 = None
sym2 = None
d = disulfide.split()
chain1, res1 = d[3], d[4]
chain2, res2 = d[6], d[7]
if len(d) > 8:
sym1, sym2 = d[8], d[9]
if sym1 is not None and sym1 != sym2:
# Disulfide across a symmetry interface. Ignore for now.
continue
arg = atomspec.AtomSpecArg('ss')
thearg = '#{}/{}:{}@{}|#{}/{}:{}@{}'.format(
m_id, chain1, res1, 'SG', m_id, chain2, res2, 'SG')
aspec = arg.parse(thearg, model.session)
atoms = aspec[0].evaluate(model.session).atoms
bonds = atoms.intra_bonds
if not len(bonds):
a1, a2 = atoms
b = model.new_bond(a1, a2)
}}}
On 2017-11-22 19:20, ChimeraX wrote:
comment:5 by , 8 years ago
| Resolution: | → fixed |
|---|---|
| Status: | feedback → closed |
The SSBONDs were being processed immediately, before any ATOM records. Processing now delayed in the same way as LINK records.
Note:
See TracTickets
for help on using tickets.
Hi Tristan,
--Eric