#576 closed enhancement (fixed)
Use SSBOND records
Reported by: | Owned by: | pett | |
---|---|---|---|
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