#4325 closed defect (fixed)
Problems with MMTF bondAtomList
| 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-5.4.0-65-generic-x86_64-with-debian-bullseye-sid
ChimeraX Version: 1.1 (2020-09-09 22:22:27 UTC)
Description
I created this file using the chemfiles library and I'm certain bondAtomList is present in this file. Here's the output from the mmtf python library, when I parse "sal.mmtf" and check its bond_atom_list attribute:
array([ 80, 82, 99, 101, 118, 120, 129, 131, 153, 155, 172,
174, 196, 198, 218, 220, 242, 244, 257, 259, 271, 273,
290, 292, 301, 303, 320, 322, 341, 343, 353, 355, 375,
377, 394, 396, 401, 403, 441, 443, 451, 453, 470, 472,
485, 487, 501, 503, 517, 519, 533, 535, 548, 550, 560,
562, 580, 582, 601, 603, 617, 619, 641, 643, 657, 659,
676, 678, 686, 688, 698, 700, 710, 712, 727, 729, 746,
748, 757, 759, 767, 769, 787, 789, 807, 809, 818, 820,
825, 827, 839, 841, 853, 855, 870, 872, 881, 883, 905,
907, 924, 926, 946, 948, 953, 955, 975, 977, 992, 994,
1008, 1010, 1023, 1025, 1043, 1045, 1063, 1065, 1073, 1075, 1083,
1085, 1093, 1095, 1112, 1114, 1119, 1121, 1126, 1128, 1140, 1142,
1155, 1157, 1169, 1171, 1190, 1192, 1204, 1206, 1211, 1213, 1221,
1223, 1235, 1237, 1252, 1254, 1274, 1276, 1291, 1293, 1341, 1343,
1348, 1350, 1372, 1374, 1379, 1381, 1398, 1400, 1412, 1414, 1483,
1485, 1494, 1496, 1513, 1515, 1529, 1531, 1539, 1541, 1583, 1585,
1593, 1595, 1605, 1607, 1615, 1617, 1634, 1636, 1648, 1650, 1658,
1660, 1668, 1670, 1675, 1677, 1691, 1693, 1705, 1707, 1716, 1718,
1731, 1733, 1745, 1747, 1764, 1766, 1778, 1780, 1793, 1795, 1812,
1814, 1831, 1833, 1838, 1840, 1854, 1856, 1873, 1875, 1883, 1885,
1897, 1899, 1916, 1918, 1926, 1928, 1942, 1944, 1954, 1956, 1970,
1972], dtype=int32)
In addition bondAtomList is an optional field according to https://github.com/rcsb/mmtf/blob/master/spec.md.
Let me know if there's anything I can do.
Log:
UCSF ChimeraX version: 1.1 (2020-09-09)
© 2016-2020 Regents of the University of California. All rights reserved.
How to cite UCSF ChimeraX
> open /home/pbarletta/labo/20/grilla/sal.mmtf
Traceback (most recent call last):
File "/usr/lib/ucsf-chimerax/lib/python3.7/site-
packages/chimerax/open_command/dialog.py", line 150, in _qt_safe
if data_format is None else " format " +
StringArg.unparse(data_format.nicknames[0])))
File "/usr/lib/ucsf-chimerax/lib/python3.7/site-
packages/chimerax/core/commands/run.py", line 31, in run
results = command.run(text, log=log)
File "/usr/lib/ucsf-chimerax/lib/python3.7/site-
packages/chimerax/core/commands/cli.py", line 2805, in run
result = ci.function(session, **kw_args)
File "/usr/lib/ucsf-chimerax/lib/python3.7/site-
packages/chimerax/open_command/cmd.py", line 100, in cmd_open
return Command(session, registry=registry).run(provider_cmd_text, log=log)
File "/usr/lib/ucsf-chimerax/lib/python3.7/site-
packages/chimerax/core/commands/cli.py", line 2805, in run
result = ci.function(session, **kw_args)
File "/usr/lib/ucsf-chimerax/lib/python3.7/site-
packages/chimerax/open_command/cmd.py", line 154, in provider_open
name or model_name_from_path(fi.file_name)), provider_kw)
File "/usr/lib/ucsf-chimerax/lib/python3.7/site-
packages/chimerax/open_command/cmd.py", line 389, in collated_open
return func(*func_args, **func_kw)
File "/usr/lib/ucsf-chimerax/lib/python3.7/site-
packages/chimerax/mmtf/__init__.py", line 33, in open
return mmtf.open_mmtf(session, data, file_name, **kw)
File "/usr/lib/ucsf-chimerax/lib/python3.7/site-
packages/chimerax/mmtf/mmtf.py", line 49, in open_mmtf
pointers = _mmtf.parse_MMTF_file(filename, session.logger, coordsets)
RuntimeError: MsgPack MAP does not contain required entry bondAtomList
RuntimeError: MsgPack MAP does not contain required entry bondAtomList
File "/usr/lib/ucsf-chimerax/lib/python3.7/site-
packages/chimerax/mmtf/mmtf.py", line 49, in open_mmtf
pointers = _mmtf.parse_MMTF_file(filename, session.logger, coordsets)
See log for complete Python traceback.
OpenGL version: 4.6 (Core Profile) Mesa 20.2.6
OpenGL renderer: Mesa Intel(R) HD Graphics 630 (KBL GT2)
OpenGL vendor: Intel
Manufacturer: Dell Inc.
Model: XPS 15 9560
OS: KDE neon 20.04 focal
Architecture: 64bit ELF
CPU: 8 Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
Cache Size: 6144 KB
Memory:
total used free shared buff/cache available
Mem: 30Gi 12Gi 841Mi 2.4Gi 17Gi 15Gi
Swap: 34Gi 106Mi 33Gi
Graphics:
00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 630 [8086:591b] (rev 04)
DeviceName: Onboard IGD
Subsystem: Dell HD Graphics 630 [1028:07be]
PyQt version: 5.12.3
Compiled Qt version: 5.12.4
Runtime Qt version: 5.12.9
Installed Packages:
alabaster: 0.7.12
appdirs: 1.4.4
Babel: 2.8.0
backcall: 0.2.0
blockdiag: 2.0.1
certifi: 2020.6.20
chardet: 3.0.4
ChimeraX-AddH: 2.1.1
ChimeraX-AlignmentAlgorithms: 2.0
ChimeraX-AlignmentHdrs: 3.2
ChimeraX-AlignmentMatrices: 2.0
ChimeraX-Alignments: 2.1
ChimeraX-Arrays: 1.0
ChimeraX-Atomic: 1.6.1
ChimeraX-AtomSearch: 2.0
ChimeraX-AxesPlanes: 2.0
ChimeraX-BasicActions: 1.1
ChimeraX-BILD: 1.0
ChimeraX-BlastProtein: 1.0.1
ChimeraX-BondRot: 2.0
ChimeraX-BugReporter: 1.0
ChimeraX-BuildStructure: 2.0
ChimeraX-Bumps: 1.0
ChimeraX-BundleBuilder: 1.0
ChimeraX-ButtonPanel: 1.0
ChimeraX-CageBuilder: 1.0
ChimeraX-CellPack: 1.0
ChimeraX-Centroids: 1.1
ChimeraX-ChemGroup: 2.0
ChimeraX-Clashes: 2.0
ChimeraX-ColorActions: 1.0
ChimeraX-ColorGlobe: 1.0
ChimeraX-CommandLine: 1.1.3
ChimeraX-ConnectStructure: 2.0
ChimeraX-Contacts: 1.0
ChimeraX-Core: 1.1
ChimeraX-CoreFormats: 1.0
ChimeraX-coulombic: 1.0.1
ChimeraX-Crosslinks: 1.0
ChimeraX-Crystal: 1.0
ChimeraX-DataFormats: 1.0
ChimeraX-Dicom: 1.0
ChimeraX-DistMonitor: 1.1
ChimeraX-DistUI: 1.0
ChimeraX-Dssp: 2.0
ChimeraX-EMDB-SFF: 1.0
ChimeraX-ExperimentalCommands: 1.0
ChimeraX-FileHistory: 1.0
ChimeraX-FunctionKey: 1.0
ChimeraX-Geometry: 1.1
ChimeraX-gltf: 1.0
ChimeraX-Graphics: 1.0
ChimeraX-Hbonds: 2.0
ChimeraX-Help: 1.0
ChimeraX-HKCage: 1.0
ChimeraX-IHM: 1.0
ChimeraX-ImageFormats: 1.0
ChimeraX-IMOD: 1.0
ChimeraX-IO: 1.0
ChimeraX-Label: 1.0
ChimeraX-LinuxSupport: 1.0
ChimeraX-ListInfo: 1.0
ChimeraX-Log: 1.1.1
ChimeraX-LookingGlass: 1.1
ChimeraX-Map: 1.0.1
ChimeraX-MapData: 2.0
ChimeraX-MapEraser: 1.0
ChimeraX-MapFilter: 2.0
ChimeraX-MapFit: 2.0
ChimeraX-MapSeries: 2.0
ChimeraX-Markers: 1.0
ChimeraX-Mask: 1.0
ChimeraX-MatchMaker: 1.1
ChimeraX-MDcrds: 2.0
ChimeraX-MedicalToolbar: 1.0.1
ChimeraX-Meeting: 1.0
ChimeraX-MLP: 1.0
ChimeraX-mmCIF: 2.2
ChimeraX-MMTF: 2.0
ChimeraX-Modeller: 1.0
ChimeraX-ModelPanel: 1.0
ChimeraX-ModelSeries: 1.0
ChimeraX-Mol2: 2.0
ChimeraX-Morph: 1.0
ChimeraX-MouseModes: 1.0
ChimeraX-Movie: 1.0
ChimeraX-Neuron: 1.0
ChimeraX-Nucleotides: 2.0
ChimeraX-OpenCommand: 1.2.1
ChimeraX-PDB: 2.1
ChimeraX-PDBBio: 1.0
ChimeraX-PickBlobs: 1.0
ChimeraX-Positions: 1.0
ChimeraX-PresetMgr: 1.0
ChimeraX-PubChem: 2.0
ChimeraX-Read-Pbonds: 1.0
ChimeraX-Registration: 1.1
ChimeraX-RemoteControl: 1.0
ChimeraX-ResidueFit: 1.0
ChimeraX-RestServer: 1.0
ChimeraX-RNALayout: 1.0
ChimeraX-RotamerLibMgr: 2.0
ChimeraX-RotamerLibsDunbrack: 2.0
ChimeraX-RotamerLibsDynameomics: 2.0
ChimeraX-RotamerLibsRichardson: 2.0
ChimeraX-SaveCommand: 1.2
ChimeraX-SchemeMgr: 1.0
ChimeraX-SDF: 2.0
ChimeraX-Segger: 1.0
ChimeraX-Segment: 1.0
ChimeraX-SeqView: 2.2
ChimeraX-Shape: 1.0.1
ChimeraX-Shell: 1.0
ChimeraX-Shortcuts: 1.0
ChimeraX-ShowAttr: 1.0
ChimeraX-ShowSequences: 1.0
ChimeraX-SideView: 1.0
ChimeraX-Smiles: 2.0
ChimeraX-SmoothLines: 1.0
ChimeraX-SpaceNavigator: 1.0
ChimeraX-StdCommands: 1.0.4
ChimeraX-STL: 1.0
ChimeraX-Storm: 1.0
ChimeraX-Struts: 1.0
ChimeraX-Surface: 1.0
ChimeraX-SwapAA: 2.0
ChimeraX-SwapRes: 2.0
ChimeraX-TapeMeasure: 1.0
ChimeraX-Test: 1.0
ChimeraX-Toolbar: 1.0
ChimeraX-ToolshedUtils: 1.0
ChimeraX-Tug: 1.0
ChimeraX-UI: 1.2.3
ChimeraX-uniprot: 2.0
ChimeraX-ViewDockX: 1.0
ChimeraX-Vive: 1.1
ChimeraX-VolumeMenu: 1.0
ChimeraX-VTK: 1.0
ChimeraX-WavefrontOBJ: 1.0
ChimeraX-WebCam: 1.0
ChimeraX-WebServices: 1.0
ChimeraX-Zone: 1.0
colorama: 0.4.3
comtypes: 1.1.7
cxservices: 1.0
cycler: 0.10.0
Cython: 0.29.20
decorator: 4.4.2
distlib: 0.3.1
distro: 1.5.0
docutils: 0.16
filelock: 3.0.12
funcparserlib: 0.3.6
grako: 3.16.5
h5py: 2.10.0
html2text: 2020.1.16
idna: 2.10
ihm: 0.16
imagecodecs: 2020.5.30
imagecodecs-lite: 2020.1.31
imagesize: 1.2.0
ipykernel: 5.3.0
ipython: 7.15.0
ipython-genutils: 0.2.0
jedi: 0.17.2
Jinja2: 2.11.2
jupyter-client: 6.1.3
jupyter-core: 4.6.3
kiwisolver: 1.2.0
line-profiler: 2.1.2
lxml: 4.5.1
MarkupSafe: 1.1.1
matplotlib: 3.2.1
msgpack: 1.0.0
netifaces: 0.10.9
networkx: 2.4
numexpr: 2.7.1
numpy: 1.18.5
numpydoc: 1.0.0
openvr: 1.12.501
packaging: 20.4
parso: 0.7.1
pexpect: 4.8.0
pickleshare: 0.7.5
Pillow: 7.1.2
pip: 20.2.2
pkginfo: 1.5.0.1
prompt-toolkit: 3.0.7
psutil: 5.7.0
ptyprocess: 0.6.0
pycollada: 0.7.1
pydicom: 2.0.0
Pygments: 2.6.1
PyOpenGL: 3.1.5
PyOpenGL-accelerate: 3.1.5
pyparsing: 2.4.7
PyQt5-commercial: 5.12.3
PyQt5-sip: 4.19.19
PyQtWebEngine-commercial: 5.12.1
python-dateutil: 2.8.1
pytz: 2020.1
pyzmq: 19.0.2
qtconsole: 4.7.4
QtPy: 1.9.0
RandomWords: 0.3.0
requests: 2.24.0
scipy: 1.4.1
setuptools: 49.4.0
sfftk-rw: 0.6.6.dev0
six: 1.15.0
snowballstemmer: 2.0.0
sortedcontainers: 2.2.2
Sphinx: 3.1.1
sphinxcontrib-applehelp: 1.0.2
sphinxcontrib-blockdiag: 2.0.0
sphinxcontrib-devhelp: 1.0.2
sphinxcontrib-htmlhelp: 1.0.3
sphinxcontrib-jsmath: 1.0.1
sphinxcontrib-qthelp: 1.0.3
sphinxcontrib-serializinghtml: 1.1.4
suds-jurko: 0.6
tables: 3.6.1
tifffile: 2020.6.3
tinyarray: 1.2.2
tornado: 6.0.4
traitlets: 5.0.4
urllib3: 1.25.10
wcwidth: 0.2.5
webcolors: 1.11.1
wheel: 0.34.2
File attachment: sal.mmtf
Attachments (1)
Change History (14)
by , 5 years ago
comment:1 by , 5 years ago
| Component: | Unassigned → Input/Output |
|---|---|
| Owner: | set to |
| Platform: | → all |
| Project: | → ChimeraX |
| Status: | new → assigned |
| Summary: | ChimeraX bug report submission → Problems with MMTF bondAtomList |
Reported by Patricio Barletta
comment:2 by , 5 years ago
FYI, I rebuilt the mmtf extension with the latest mmtf-cpp source and now it crashes with a segmentation fault when I try to open sal.mmtf. Updating msgpack didn't help. I'll look at little deeper there. I'm also considering trying to resurrect the all Python version of the mmtf reader. We switched to the mmtf C++ code because the Python code was too slow.
comment:3 by , 5 years ago
Thanks for the update. You're right, the problem is in mmtf.
I'm debugging the mmtf header files, particularly *msgpack_decoder.hpp *and*
map_decoder.hpp*. My sample file has issues with the groupList attribute,
but for some reason, mmtf complains about the bondAtomList parameter. If I
comment out this line in *msgpack_decoder.hpp*:
md.decode("groupList", true, data.groupList);
MMTF is able to read this *sal.mmtf* example, although it does complain
that the *groupList* attribute wasn't parsed.
I'm going to keep looking into it and open an issue in the mmtf cpp repo.
They don't seem to pay much attention to it, perhaps I should look into
other formats.
Thanks!
On Fri, Mar 5, 2021 at 4:11 AM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
wrote:
follow-up: 3 comment:4 by , 5 years ago
Scratch that. I was using the last release. I cloned from github and now it works, I don't get any segmentation fault from mmtf and the hasConsistentData mmtf functinon returns *True*, so your error might come from Chimera itself. On Fri, Mar 5, 2021 at 11:53 AM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote:
follow-up: 4 comment:5 by , 5 years ago
So just to confirm that we're using the same mmtf-cpp repository, I used https://github.com/rcsb/mmtf-cpp. Is that the one you used? And which version of msgpack are you using? I tried the version that was current when we first made the mmtf bundle (msgpack-c had msgpack.hpp) and the 3.3.0 msgpack-cpp version that requires boost.
And an aside about MMTF. ChimeraX's mmCIF reader is very fast and mmCIF files have more metadata in them that the MMTF files. So for many purposes, you're better off use mmCIF.
comment:6 by , 5 years ago
So ChimeraX is segfaulting when it tries to compare entity.type with a string. Is your mmtf file missing the entity's type?
comment:7 by , 5 years ago
Yes, that's the mmtf I'm using and the msgpack version is 3.3.0, the latest release. Yes, it's missing. Although that too is an optional field. On Fri, Mar 5, 2021 at 3:30 PM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote:
follow-up: 7 comment:8 by , 5 years ago
The entityList is optional. The entity type isn't optional. But the only case where the entity type currently matters in ChimeraX is if it is a polymer. Because, if it is a polymer, then the entity sequence is important metadata.
comment:9 by , 5 years ago
mmm..., *entityList* is an array and* type *is one of the elements. Given that *entityList* is marked as an optional field, I take that type is optional. Anyway, I'll add the type so I don't get into trouble. Thanks. On Fri, Mar 5, 2021 at 3:46 PM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote:
follow-up: 9 comment:10 by , 5 years ago
Looking the spec, https://github.com/rcsb/mmtf/blob/master/spec.md#entitylist, it shows that the entityList is optional. It is an arrays of entity objects. None of the items in an entity object are listed as optional.
comment:11 by , 5 years ago
I see that the "bug" is in the ChimeraX reader. There are no entities in the sal.mmtf file, and that confuses ChimeraX. Every chain should have an associated entity. I'll see if I can relax that requirement or generate an error message. It shouldn't crash.
comment:12 by , 5 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
I've updated ChimeraX to use the latest mmtf-cpp source code and made it handle missing entityList gracefully.
Looking at your data, it would really benefit from entity information. Is it really two chains or one? And if it is one, then there are clearly missing residues that should be in the entity's sequence. Otherwise, it should be two distinct chains (and two entities). It would also help if you gave a chain identifier to the chain. All mmCIF files from the PDB have non-empty chain identifiers -- typically A for a single chain.
comment:13 by , 5 years ago
Will do. Thanks again for your help. On Fri, Mar 5, 2021, 5:13 PM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote:
Added by email2trac