Opened 6 years ago

Closed 6 years ago

#2091 closed defect (fixed)

mmCIF not writing "exptl"/"exptl data" headers

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

Description

The following bug report has been submitted:
Platform:        Linux-3.10.0-957.12.2.el7.x86_64-x86_64-with-centos-7.6.1810-Core
ChimeraX Version: 0.9 (2019-06-06)
Description
First bug report since the ISOLDE release, and it's me reporting it. :)

Turns out that mmCIF files saved by ChimeraX are currently breaking my Clipper code, since they're not writing the "exptl"/"exptl data" headers that you'd find in an mmCIF downloaded from the PDB. The issue here is that I have to set cell and spacegroup parameters even for cryo-EM models (since that's what the Clipper API expects). If it's a cryo-EM model then these values are of course essentially meaningless, and it's customary to just specify a P1 box a few times larger than the model itself. The problem is in working out whether the model *is* actually a cryo-EM one. 

Reporting as a ChimeraX bug because this information really should be passed through to the output mmCIF, but in the meantime I'll have a think about what to do in Clipper (since it seems futile to expect that *every* mmCIF file will provide the "exptl" loop). Simply trusting the cell/spacegroup information provided without knowing if it's a crystal structure seems dangerous... people could be putting just about anything in there. My inclination is that if no 'exptl' info is given to just put it in the P1 box, and defer the assignment of real cell/spacegroup parameters to the loading of the first structure factor file into the model.

Log:
UCSF ChimeraX version: 0.9 (2019-06-06)  
© 2016-2019 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open 4v9o.cif

Summary of feedback from opening 4v9o.cif  
---  
warnings | Atom H1 is not in the residue template for MET #1 in chain AD  
Atom H1 is not in the residue template for MET #1 in chain AE  
Atom H1 is not in the residue template for MET #1 in chain AH  
Atom H1 is not in the residue template for MET #1 in chain AJ  
Atom H1 is not in the residue template for MET #1 in chain AK  
62 messages similar to the above omitted  
  
Chain information for 4v9o.cif #1  
---  
Chain | Description  
A0 C0 E0 G0 | 50S ribosomal protein L32  
A1 C1 E1 G1 | 50S ribosomal protein L33  
A2 C2 E2 G2 | 50S ribosomal protein L34  
A3 C3 E3 G3 | 50S ribosomal protein L35  
A4 C4 E4 G4 | 50S ribosomal protein L36  
A5 C5 E5 | 50S ribosomal protein L10  
A6 | 50S ribosomal protein L7/L12  
AA CA EA GA | 23S rRNA  
AB CB EB GB | 5S rRNA  
AC CC EC GC | 50S ribosomal protein L2  
AD CD ED GD | 50S ribosomal protein L3  
AE CE EE GE | 50S ribosomal protein L4  
AF CF EF GF | 50S ribosomal protein L5  
AG CG EG GG | 50S ribosomal protein L6  
AH CH EH GH | 50S ribosomal protein L9  
AI CI EI GI | 50S ribosomal protein L11  
AJ CJ EJ GJ | 50S ribosomal protein L13  
AK CK EK GK | 50S ribosomal protein L14  
AL CL EL GL | 50S ribosomal protein L15  
AM CM EM GM | 50S ribosomal protein L16  
AN CN EN GN | 50S ribosomal protein L17  
AO CO EO GO | 50S ribosomal protein L18  
AP CP EP GP | 50S ribosomal protein L19  
AQ CQ EQ GQ | 50S ribosomal protein L20  
AR CR ER GR | 50S ribosomal protein L21  
AS CS ES GS | 50S ribosomal protein L22  
AT CT ET GT | 50S ribosomal protein L23  
AU CU EU GU | 50S ribosomal protein L24  
AV CV EV GV | 50S ribosomal protein L25  
AW CW EW GW | 50S ribosomal protein L27  
AX CX EX GX | 50S ribosomal protein L28  
AY CY EY GY | 50S ribosomal protein L29  
AZ CZ EZ GZ | 50S ribosomal protein L30  
BA DA FA HA | 16S rRNA  
BB DB FB HB | 30S ribosomal protein S2  
BC DC FC HC | 30S ribosomal protein S3  
BD DD FD HD | 30S ribosomal protein S4  
BE DE FE HE | 30S ribosomal protein S5  
BF DF FF HF | 30S ribosomal protein S6  
BG DG FG HG | 30S ribosomal protein S7  
BH DH FH HH | 30S ribosomal protein S8  
BI DI FI HI | 30S ribosomal protein S9  
BJ DJ FJ HJ | 30S ribosomal protein S10  
BK DK FK HK | 30S ribosomal protein S11  
BL DL FL HL | 30S ribosomal protein S12  
BM DM FM HM | 30S ribosomal protein S13  
BN DN FN HN | 30S ribosomal protein S14  
BO DO FO HO | 30S ribosomal protein S15  
BP DP FP HP | 30S ribosomal protein S16  
BQ DQ FQ HQ | 30S ribosomal protein S17  
BR DR FR HR | 30S ribosomal protein S18  
BS DS FS HS | 30S ribosomal protein S19  
BT DT FT HT | 30S ribosomal protein S20  
BU DU FU HU | 30S ribosomal protein S21  
BV DV FV HV | Elongation factor G  
  
4v9o.cif mmCIF Assemblies  
---  
1| author_defined_assembly  
2| author_defined_assembly  
3| author_defined_assembly  
4| author_defined_assembly  
  

> open 4v9o.mtz structureModel #1

Traceback (most recent call last):  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-
packages/chimerax/cmd_line/tool.py", line 254, in execute  
cmd.run(cmd_text)  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-
packages/chimerax/core/commands/cli.py", line 2632, in run  
result = ci.function(session, **kw_args)  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-
packages/chimerax/core/commands/open.py", line 64, in open  
path_models = session.models.open(paths, format=format, name=name, **kw)  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/core/models.py",
line 601, in open  
session, filenames, format=format, name=name, **kw)  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/core/io.py",
line 477, in open_multiple_data  
models, status = open_data(session, fspec, format=format, name=name, **kw)  
File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/core/io.py",
line 433, in open_data  
models, status = open_func(*args, **kw)  
File "/home/tic20/.local/share/ChimeraX/0.9/site-
packages/chimerax/clipper/__init__.py", line 128, in open_file  
over_sampling=over_sampling)  
File "/home/tic20/.local/share/ChimeraX/0.9/site-
packages/chimerax/clipper/cmd.py", line 30, in open_structure_factors  
mmgr = get_map_mgr(structure_model, create=True)  
File "/home/tic20/.local/share/ChimeraX/0.9/site-
packages/chimerax/clipper/symmetry.py", line 166, in get_map_mgr  
sh = get_symmetry_handler(structure, create=create,
auto_add_to_session=auto_add_to_session)  
File "/home/tic20/.local/share/ChimeraX/0.9/site-
packages/chimerax/clipper/symmetry.py", line 151, in get_symmetry_handler  
sh = _get_symmetry_handler(structure, create)  
File "/home/tic20/.local/share/ChimeraX/0.9/site-
packages/chimerax/clipper/symmetry.py", line 162, in _get_symmetry_handler  
return Symmetry_Manager(structure)  
File "/home/tic20/.local/share/ChimeraX/0.9/site-
packages/chimerax/clipper/symmetry.py", line 458, in __init__  
self.cell, self.spacegroup, self.grid, self._has_symmetry = f(*args)  
File "/home/tic20/.local/share/ChimeraX/0.9/site-
packages/chimerax/clipper/symmetry.py", line 183, in
symmetry_from_model_metadata  
return symmetry_from_model_metadata_mmcif(model)  
File "/home/tic20/.local/share/ChimeraX/0.9/site-
packages/chimerax/clipper/symmetry.py", line 234, in
symmetry_from_model_metadata_mmcif  
if 'X-RAY DIFFRACTION' not in metadata['exptl data']:  
KeyError: 'exptl data'  
  
KeyError: 'exptl data'  
  
File "/home/tic20/.local/share/ChimeraX/0.9/site-
packages/chimerax/clipper/symmetry.py", line 234, in
symmetry_from_model_metadata_mmcif  
if 'X-RAY DIFFRACTION' not in metadata['exptl data']:  
  
See log for complete Python traceback.  
  

> toolshed show Shell

/opt/UCSF/ChimeraX/lib/python3.7/site-packages/IPython/core/history.py:226:
UserWarning: IPython History requires SQLite, your history will not be saved  
warn("IPython History requires SQLite, your history will not be saved")  




OpenGL version: 3.3.0 NVIDIA 415.27
OpenGL renderer: TITAN Xp/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation

Change History (7)

comment:1 by pett, 6 years ago

Component: UnassignedInput/Output
Owner: set to Greg Couch
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionmmCIF not writing "exptl"/"exptl data" headers

comment:2 by Greg Couch, 6 years ago

I don't see "exptl_data" as a known mmCIF category. The ones documented are: exptl, exptl_crystal, exptl_crystal_face, exptl_crystal_grow, exptl_crystal_grow_comp, pdbx_exptl_crystal_cryo_treatment, pdbx_exptl_crystal_grow_comp, and pdbx_exptl_crystal_grow_sol.

comment:3 by Greg Couch, 6 years ago

Ah. I think of "exptl"/"exptl data" as one table. Do you just want exptl or are others needed?

comment:4 by Greg Couch, 6 years ago

Anyway, I've added the exptl table to the ones that ChimeraX keeps in metadata.

comment:5 by Greg Couch, 6 years ago

Still need to add it to the tables that are written in mmCIF files.

in reply to:  6 ; comment:6 by tic20@…, 6 years ago

Sorry, yes - I meant just “exptl”. 
 

 


comment:7 by Greg Couch, 6 years ago

Resolution: fixed
Status: assignedclosed

exptl table is now in mmCIF output if it was in the input.

Note: See TracTickets for help on using tickets.