Opened 5 years ago

Closed 6 months ago

#3637 closed defect (limitation)

Problems writing mmCIF of partial structure

Reported by: Tristan Croll Owned by: Greg Couch
Priority: normal Milestone:
Component: Input/Output Version:
Keywords: Cc: pett
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description (last modified by Greg Couch)

The following bug report has been submitted:
Platform:        Windows-10-10.0.18362
ChimeraX Version: 1.0 (2020-06-04 23:15:07 UTC)
Description
Forwarded this to chimerax-bugs by email, but it's not showing up, so reporting via ChimeraX to ensure it doesn't get eaten by the system. The attached model was created from a larger model by:
- selecting all residues within a given radius from a point
- splitting into a temporary model using chimerax.std_commands.split.molecule_from_atoms
- moving all atoms by an offset
- writing to mmcif with provider_save()

The result fails to open in Phenix. Looks like the problem is that single-residue "helices" don't get annotated properly - their _struct_conf.beg_label_seq_id and _struct_conf.end_label_seq_id are each '.'.

Not a high priority for me - for this particular purpose the secondary structure is superfluous, so I can just clear it before writing.



OpenGL version: 3.3.0 NVIDIA 426.00
OpenGL renderer: GeForce GTX 1070/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation
Manufacturer: ASUSTeK COMPUTER INC.
Model: GL502VS
OS: Microsoft Windows 10 Home (Build 18362)
Memory: 34,292,408,320
MaxProcessMemory: 137,438,953,344
CPU: 8 Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz"
PyQt version: 5.12.3
Compiled Qt version: 5.12.4
Runtime Qt version: 5.12.8
File attachment: surrounding_model.cif

surrounding_model.cif

Attachments (2)

surrounding_model.cif (84.8 KB ) - added by Tristan Croll 5 years ago.
Added by email2trac
cif_bug.cxs (320.1 KB ) - added by Tristan Croll 5 years ago.
session containing partial model fragment

Download all attachments as: .zip

Change History (8)

by Tristan Croll, 5 years ago

Attachment: surrounding_model.cif added

Added by email2trac

comment:1 by pett, 5 years ago

Cc: pett added
Component: UnassignedInput/Output
Owner: set to Greg Couch
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionProblems writing mmCIF of partial structure

Tristan

The previous report you sent went to chimeras-bugs-admin, so check what your mail app auto-completes addresses to! I don't know if you want to include all the email back-and-forth that was in that report, but glancing over it I should alert you that ChimeraX does write Hybrid-36 PDB files, including two-character chain IDs (the latter only in daily builds).

--Eric

in reply to:  3 comment:2 by Tristan Croll, 5 years ago

Ah - thanks for the heads-up (on both counts)! Turns out in this case 
the main problem holding things back was somewhat more trivial, and on 
the Phenix side: json.loads() reconstitutes strings as UTF-8, and 
various load-file methods in Phenix's current Python 2.7 implementation 
don't know what to do with that. A problem that should disappear once 
they formally switch to Python 3 in a few months.

On 2020-08-20 21:46, ChimeraX wrote:

comment:3 by Greg Couch, 5 years ago

If you save a session with just the temporary model, can I reproduce this bug by doing "save model.cif"?

by Tristan Croll, 5 years ago

Attachment: cif_bug.cxs added

session containing partial model fragment

comment:4 by Tristan Croll, 5 years ago

Yep - in the attached session, model #2 was created using molecule_from_atoms() from a selection containing a whole strand, a whole helix, a single residue from another strand, and a single residue from another helix. Both single-residue secondary structure elements end up with empty .._seq_id fields:

HELX1 HELX_P ALA D . ALA D .  A 133 ? A 133 ? 
HELX2 HELX_P ASP A 7 GLY A 27 A 166 ? A 186 ? 

...

? 1 THR A 1 ILE A 6 1_555 A 89  ? A 94  ? 
? 2 ILE D . ILE D . 1_555 A 160 ? A 160 ? 

comment:5 by Greg Couch, 3 years ago

Status: assignedfeedback

So this is by design because ChimeraX does not keep track of the sheet information. So its mmCIF output for the strands says that the sheet is unknown. This could be "fixed" by creating a separate sheet for each strand.

Another "fix" for this is the new "computedSheets" option to mmCIF saving, which will do a DSSP computation and use the computed sheet and strand information in the mmCIF output.

Thoughts?

comment:6 by Greg Couch, 6 months ago

Description: modified (diff)
Resolution: limitation
Status: feedbackclosed
Note: See TracTickets for help on using tickets.