Opened 6 years ago
Closed 6 years ago
#2091 closed defect (fixed)
mmCIF not writing "exptl"/"exptl data" headers
| Reported by: | 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 , 6 years ago
| Component: | Unassigned → Input/Output |
|---|---|
| Owner: | set to |
| Platform: | → all |
| Project: | → ChimeraX |
| Status: | new → assigned |
| Summary: | ChimeraX bug report submission → mmCIF not writing "exptl"/"exptl data" headers |
comment:2 by , 6 years ago
comment:3 by , 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 , 6 years ago
Anyway, I've added the exptl table to the ones that ChimeraX keeps in metadata.
comment:7 by , 6 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
exptl table is now in mmCIF output if it was in the input.
Note:
See TracTickets
for help on using tickets.
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.