Opened 5 months ago
Closed 5 months ago
#17661 closed defect (fixed)
Opening IHM model "open 8zza": No mmCIF models found
Reported by: | Owned by: | Tom Goddard | |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | Input/Output | Version: | |
Keywords: | Cc: | pett, Greg Couch, ben@…, Elaine Meng | |
Blocked By: | Blocking: | ||
Notify when closed: | Platform: | all | |
Project: | ChimeraX |
Description
The following bug report has been submitted: Platform: macOS-15.4.1-arm64-arm-64bit ChimeraX Version: 1.11.dev202505062043 (2025-05-06 20:43:22 UTC) Description The PDB has incorporated integrative hybrid models (ihm) assigning them standard PDB ids, e.g. 8zza. Opening this PDB entry with ChimeraX "open 8zza" reports no mmCIF models found because it is a coarse grain model and is using an entirely different mmCIF dictionary. "open 8zza format ihm" does gives an error that "ihm" is not a supported format for database "pdb". Perhaps we should try to redirect these requests to open ihm models to our ihm reader. Log: UCSF ChimeraX version: 1.11.dev202505062043 (2025-05-06) © 2016-2025 Regents of the University of California. All rights reserved. How to cite UCSF ChimeraX > open 8zza Summary of feedback from opening 8zza fetched from pdb --- warning | No mmCIF models found. note | Fetching compressed mmCIF 8zza from http://files.rcsb.org/download/8zza.cif > open 8zza format ihm Format 'ihm' not supported for database 'pdb'. Supported formats are: mmcif, mmtf, or pdb OpenGL version: 4.1 Metal - 89.4 OpenGL renderer: Apple M2 Ultra OpenGL vendor: Apple Python: 3.11.4 Locale: en_US.UTF-8 Qt version: PyQt6 6.8.1, Qt 6.8.2 Qt runtime version: 6.8.2 Qt platform: cocoa Hardware: Hardware Overview: Model Name: Mac Studio Model Identifier: Mac14,14 Model Number: Z1800003VLL/A Chip: Apple M2 Ultra Total Number of Cores: 24 (16 performance and 8 efficiency) Memory: 64 GB System Firmware Version: 11881.101.1 OS Loader Version: 11881.101.1 Software: System Software Overview: System Version: macOS 15.4.1 (24E263) Kernel Version: Darwin 24.4.0 Time since boot: 14 days, 9 hours, 21 minutes Graphics/Displays: Apple M2 Ultra: Chipset Model: Apple M2 Ultra Type: GPU Bus: Built-In Total Number of Cores: 60 Vendor: Apple (0x106b) Metal Support: Metal 3 Displays: PHL 278B1: Resolution: 3840 x 2160 (2160p/4K UHD 1 - Ultra High Definition) UI Looks like: 1920 x 1080 @ 60.00Hz Main Display: Yes Mirror: Off Online: Yes Rotation: Supported Installed Packages: alabaster: 1.0.0 appdirs: 1.4.4 appnope: 0.1.4 asttokens: 3.0.0 auditwheel: 6.3.0 babel: 2.17.0 beautifulsoup4: 4.13.3 blockdiag: 3.0.0 blosc2: 3.3.2 build: 1.2.2.post1 certifi: 2023.11.17 cftime: 1.6.4.post1 charset-normalizer: 3.4.2 ChimeraX-AddCharge: 1.5.18 ChimeraX-AddH: 2.2.7 ChimeraX-AlignmentAlgorithms: 2.0.2 ChimeraX-AlignmentHdrs: 3.6.1 ChimeraX-AlignmentMatrices: 2.1 ChimeraX-Alignments: 2.20.1 ChimeraX-AlphaFold: 1.0.1 ChimeraX-AltlocExplorer: 1.1.2 ChimeraX-AmberInfo: 1.0 ChimeraX-Aniso: 1.1.3 ChimeraX-Arrays: 1.1 ChimeraX-Atomic: 1.60.5 ChimeraX-AtomicLibrary: 14.1.17 ChimeraX-AtomSearch: 2.0.1 ChimeraX-AxesPlanes: 2.4 ChimeraX-BasicActions: 1.1.3 ChimeraX-BILD: 1.0 ChimeraX-BlastProtein: 3.0.0 ChimeraX-Boltz: 1.0 ChimeraX-BondRot: 2.0.4 ChimeraX-BugReporter: 1.0.2 ChimeraX-BuildStructure: 2.13.1 ChimeraX-Bumps: 1.0 ChimeraX-BundleBuilder: 1.5.1 ChimeraX-ButtonPanel: 1.0.1 ChimeraX-CageBuilder: 1.0.1 ChimeraX-CellPack: 1.0 ChimeraX-Centroids: 1.4 ChimeraX-ChangeChains: 1.1 ChimeraX-CheckWaters: 1.4 ChimeraX-ChemGroup: 2.0.2 ChimeraX-Clashes: 2.3 ChimeraX-ColorActions: 1.0.5 ChimeraX-ColorGlobe: 1.0 ChimeraX-ColorKey: 1.5.8 ChimeraX-CommandLine: 1.2.6 ChimeraX-ConnectStructure: 2.0.1 ChimeraX-Contacts: 1.0.1 ChimeraX-Core: 1.11.dev202505062043 ChimeraX-CoreFormats: 1.2 ChimeraX-coulombic: 1.4.5 ChimeraX-Crosslinks: 1.0 ChimeraX-Crystal: 1.0 ChimeraX-CrystalContacts: 1.0.1 ChimeraX-DataFormats: 1.2.4 ChimeraX-Dicom: 1.2.7 ChimeraX-DistMonitor: 1.4.2 ChimeraX-DockPrep: 1.1.4 ChimeraX-Dssp: 2.0 ChimeraX-EMDB-SFF: 1.0 ChimeraX-ESMFold: 1.0 ChimeraX-FileHistory: 1.0.1 ChimeraX-FunctionKey: 1.0.1 ChimeraX-Geometry: 1.3 ChimeraX-gltf: 1.0 ChimeraX-Graphics: 1.4.1 ChimeraX-Hbonds: 2.5.1 ChimeraX-Help: 1.3 ChimeraX-HKCage: 1.3 ChimeraX-IHM: 1.1 ChimeraX-ImageFormats: 1.2 ChimeraX-IMOD: 1.0 ChimeraX-IO: 1.0.3 ChimeraX-ItemsInspection: 1.0.1 ChimeraX-IUPAC: 1.0 ChimeraX-KVFinder: 1.6.1 ChimeraX-Label: 1.1.14 ChimeraX-ListInfo: 1.2.2 ChimeraX-Log: 1.2 ChimeraX-LookingGlass: 1.1 ChimeraX-Maestro: 1.9.1 ChimeraX-Map: 1.3 ChimeraX-MapData: 2.0 ChimeraX-MapEraser: 1.0.1 ChimeraX-MapFilter: 2.0.1 ChimeraX-MapFit: 2.0 ChimeraX-MapSeries: 2.1.1 ChimeraX-Markers: 1.0.1 ChimeraX-Mask: 1.0.2 ChimeraX-MatchMaker: 2.2.1 ChimeraX-MCopy: 1.0 ChimeraX-MDcrds: 2.10.1 ChimeraX-MedicalToolbar: 1.1 ChimeraX-Meeting: 1.0.1 ChimeraX-MLP: 1.1.1 ChimeraX-mmCIF: 2.16 ChimeraX-MMTF: 2.2 ChimeraX-ModelArchive: 1.0 ChimeraX-Modeller: 1.5.19 ChimeraX-ModelPanel: 1.5.1 ChimeraX-ModelSeries: 1.0.1 ChimeraX-Mol2: 2.0.3 ChimeraX-Mole: 1.0 ChimeraX-Morph: 1.0.2 ChimeraX-MouseModes: 1.2 ChimeraX-Movie: 1.0 ChimeraX-MutationScores: 1.0 ChimeraX-Neuron: 1.0 ChimeraX-Nifti: 1.2 ChimeraX-NMRSTAR: 1.0.2 ChimeraX-NRRD: 1.2 ChimeraX-Nucleotides: 2.0.3 ChimeraX-OpenCommand: 1.14.1 ChimeraX-OrthoPick: 1.0.1 ChimeraX-PDB: 2.7.10 ChimeraX-PDBBio: 1.0.1 ChimeraX-PDBLibrary: 1.0.4 ChimeraX-PDBMatrices: 1.0 ChimeraX-PhenixUI: 1.3.7 ChimeraX-PickBlobs: 1.0.1 ChimeraX-Positions: 1.0 ChimeraX-PresetMgr: 1.1.3 ChimeraX-ProfileGrids: 1.1.2 ChimeraX-PubChem: 2.2 ChimeraX-ReadPbonds: 1.0.1 ChimeraX-Registration: 1.1.2 ChimeraX-RemoteControl: 1.0 ChimeraX-RenderByAttr: 1.6.3 ChimeraX-RenumberResidues: 1.1 ChimeraX-ResidueFit: 1.0.1 ChimeraX-RestServer: 1.3.1 ChimeraX-RNALayout: 1.0 ChimeraX-RotamerLibMgr: 4.0 ChimeraX-RotamerLibsDunbrack: 2.0 ChimeraX-RotamerLibsDynameomics: 2.0 ChimeraX-RotamerLibsRichardson: 2.0 ChimeraX-SaveCommand: 1.5.1 ChimeraX-SchemeMgr: 1.0 ChimeraX-SDF: 2.0.3 ChimeraX-Segger: 1.0 ChimeraX-Segment: 1.0.1 ChimeraX-Segmentations: 3.5.7 ChimeraX-SelInspector: 1.0 ChimeraX-SeqView: 2.17.1 ChimeraX-Shape: 1.1 ChimeraX-Shell: 1.0.1 ChimeraX-Shortcuts: 1.2.0 ChimeraX-ShowSequences: 1.0.3 ChimeraX-SideView: 1.0.1 ChimeraX-SimilarStructures: 1.0.1 ChimeraX-Smiles: 2.1.2 ChimeraX-SmoothLines: 1.0 ChimeraX-SpaceNavigator: 1.0 ChimeraX-StdCommands: 1.19.1 ChimeraX-STL: 1.0.1 ChimeraX-Storm: 1.0 ChimeraX-StructMeasure: 1.2.1 ChimeraX-Struts: 1.0.1 ChimeraX-Surface: 1.0.1 ChimeraX-SwapAA: 2.0.1 ChimeraX-SwapRes: 2.5.2 ChimeraX-TapeMeasure: 1.0 ChimeraX-TaskManager: 1.0 ChimeraX-Test: 1.0 ChimeraX-Toolbar: 1.2.3 ChimeraX-ToolshedUtils: 1.2.4 ChimeraX-Topography: 1.0 ChimeraX-ToQuest: 1.0 ChimeraX-Tug: 1.0.1 ChimeraX-UI: 1.45.1 ChimeraX-Umap: 1.0 ChimeraX-uniprot: 2.3.1 ChimeraX-UnitCell: 1.0.1 ChimeraX-ViewDockX: 1.4.4 ChimeraX-VIPERdb: 1.0 ChimeraX-Vive: 1.1 ChimeraX-VolumeMenu: 1.0.1 ChimeraX-vrml: 1.0 ChimeraX-VTK: 1.0 ChimeraX-WavefrontOBJ: 1.0 ChimeraX-WebCam: 1.0.2 ChimeraX-WebServices: 1.1.4 ChimeraX-Zone: 1.0.1 colorama: 0.4.6 comm: 0.2.2 contourpy: 1.3.2 coverage: 7.8.0 cxservices: 1.2.3 cycler: 0.12.1 Cython: 3.0.12 debugpy: 1.8.14 decorator: 5.2.1 docutils: 0.21.2 executing: 2.2.0 filelock: 3.18.0 fonttools: 4.57.0 funcparserlib: 2.0.0a0 glfw: 2.9.0 grako: 3.16.5 h5py: 3.13.0 html2text: 2024.2.26 idna: 3.10 ihm: 2.2 imagecodecs: 2024.6.1 imagesize: 1.4.1 iniconfig: 2.1.0 ipykernel: 6.29.5 ipython: 8.26.0 ipywidgets: 8.1.7 jedi: 0.19.1 Jinja2: 3.1.6 joblib: 1.5.0 jupyter_client: 8.6.3 jupyter_core: 5.7.2 jupyterlab_widgets: 3.0.15 kiwisolver: 1.4.8 line_profiler: 4.2.0 llvmlite: 0.44.0 lxml: 5.3.1 lz4: 4.4.4 MarkupSafe: 3.0.2 matplotlib: 3.10.1 matplotlib-inline: 0.1.7 msgpack: 1.1.0 ndindex: 1.9.2 nest-asyncio: 1.6.0 netCDF4: 1.6.5 networkx: 3.3 nibabel: 5.2.0 nptyping: 2.5.0 numba: 0.61.2 numexpr: 2.10.2 numpy: 1.26.4 OpenMM: 8.2.0 openvr: 1.26.701 packaging: 24.2 ParmEd: 4.2.2 parso: 0.8.4 pep517: 0.13.1 pexpect: 4.9.0 pickleshare: 0.7.5 pillow: 10.4.0 pip: 25.0.1 pkginfo: 1.11.1 platformdirs: 4.3.7 pluggy: 1.5.0 prompt_toolkit: 3.0.51 psutil: 7.0.0 ptyprocess: 0.7.0 pure_eval: 0.2.3 py-cpuinfo: 9.0.0 pycollada: 0.8 pydicom: 2.4.4 pyelftools: 0.32 Pygments: 2.18.0 pynmrstar: 3.3.5 pynndescent: 0.5.13 pynrrd: 1.0.0 PyOpenGL: 3.1.9 PyOpenGL-accelerate: 3.1.9 pyopenxr: 1.1.4501 pyparsing: 3.2.3 pyproject_hooks: 1.2.0 PyQt6: 6.8.1 PyQt6-Qt6: 6.8.2 PyQt6-WebEngine: 6.8.0 PyQt6-WebEngine-Qt6: 6.8.2 PyQt6_sip: 13.10.0 pytest: 8.3.5 pytest-cov: 6.1.1 python-dateutil: 2.9.0.post0 pytz: 2025.2 pyzmq: 26.4.0 qtconsole: 5.5.2 QtPy: 2.4.3 qtshim: 1.1 RandomWords: 0.4.0 requests: 2.32.3 roman-numerals-py: 3.1.0 scikit-learn: 1.6.1 scipy: 1.14.0 setuptools: 78.1.0 sfftk-rw: 0.8.1 six: 1.16.0 snowballstemmer: 2.2.0 sortedcontainers: 2.4.0 soupsieve: 2.7 Sphinx: 8.2.3 sphinx-autodoc-typehints: 3.1.0 sphinxcontrib-applehelp: 2.0.0 sphinxcontrib-blockdiag: 3.0.0 sphinxcontrib-devhelp: 2.0.0 sphinxcontrib-htmlhelp: 2.1.0 sphinxcontrib-jsmath: 1.0.1 sphinxcontrib-qthelp: 2.0.0 sphinxcontrib-serializinghtml: 2.0.0 stack-data: 0.6.3 superqt: 0.7.1 tables: 3.10.2 tcia_utils: 1.5.1 threadpoolctl: 3.6.0 tifffile: 2025.3.13 tinyarray: 1.2.4 tornado: 6.4.2 tqdm: 4.67.1 traitlets: 5.14.3 typing_extensions: 4.13.2 tzdata: 2025.2 umap-learn: 0.5.7 urllib3: 2.4.0 wcwidth: 0.2.13 webcolors: 24.11.1 wheel: 0.45.1 wheel-filename: 1.4.2 widgetsnbextension: 4.0.14
Change History (13)
comment:1 by , 5 months ago
Cc: | added |
---|---|
Component: | Unassigned → Input/Output |
Owner: | set to |
Platform: | → all |
Project: | → ChimeraX |
Status: | new → assigned |
Summary: | ChimeraX bug report submission → Opening IHM model "open 8zza": No mmCIF models found |
comment:2 by , 5 months ago
comment:3 by , 5 months ago
That's the idea. But the mmcif reader reads all the tables in C++. We don't want to slow down the atomic model mmcif parsing. So probably we would first read it as if it is mmcif. Then if no models are found look a the _audit_conform table to see if it is using the ihm dictionary. Here is what that table looks like for 8zza
loop_ _audit_conform.dict_location _audit_conform.dict_name _audit_conform.dict_version https://mmcif.wwpdb.org/dictionaries/ascii/mmcif_ihm_ext.dic mmcif_ihm_ext.dic 1.27 http://mmcif.wwpdb.org/dictionaries/ascii/mmcif_pdbx_v50.dic mmcif_pdbx.dic 5.399
If it sees mmcif_ihm_ext.dic then it can redirect the open request to the ChimeraX IHM reader.
comment:4 by , 5 months ago
A problem is that many IHM models have atomic coordinates, e.g. 8zzu. So the mmcif reader would need to always read the audit_conform table -- it is small and should not cause any slow down. But then if after reading the atomic models we find that it is actually an IHM file we probably need to close the structures it read and re-read as IHM so that the atomic model parts are correctly linked to the coarse grained parts and other stuff found in the IHM tables.
Another problem is that none of the open_mmcif() function keyword arguments are going to work as expected if the file is in fact IHM: auto_style=True, coordsets=False, atomic=True, max_models=None, log_info=True, extra_categories=(), combine_sym_atoms=True, slider=True, ignore_styling=False.
comment:5 by , 5 months ago
Another way to go is force the user to use "open 8zza format ihm". Currently that doesn't work but it would probably not be hard to make it work and go directly to the IHM reader. Also the user may only want the atomic model coordinates from the IHM model in which case "open 8zza" will be what they want.
comment:6 by , 5 months ago
By the way "open 8zza from pdbdev" works.
Seems like the EM map it loads is not aligned with the coarse grained model. This raises another consideration. The IHM reader in ChimeraX is a prototype that has not been developed since about 2018. The IHM PDB project was not able to get any funding for ChimeraX work and it would take a lot of work that never happened to make it handle IHM well. There are going to be plenty of problems if users try opening IHM models in ChimeraX. So we may not want to encourage them to use this prototype feature.
comment:7 by , 5 months ago
Cc: | added |
---|
Ben, do you know if the PDBDev web site https://pdb-dev.wwpdb.org is going away? I see it redirects to https://pdb-ihm.org. ChimeraX code is fetching from
and I should change that if the URL will cease to work soon. Do you know if
would be the right URL? Or are fetches supposed to use the mmCIF atomic model URL
comment:8 by , 5 months ago
Hmm. I see ihm model (8zza, 8zzi) are not found at the RCSB web site, if I type 8zza in the RCSB search it says no entries found. But the RCSB mmcif fetch
does return the IHM file.
So I guess the fact that "open 8zza" doesn't give an error in ChimeraX saying there is no such PDB id code is maybe an accident because the web site does not list any 8zza entry.
Ben, perhaps you can clarify whether 8zza is supposed to appear on the RCSB web site like other entries or whether it is thought of as belonging to a different database PDB-IHM.
comment:9 by , 5 months ago
Integrative models are also supposed to have _struct.pdbx_structure_determination_methodology integrative so that might be easier to look for. That's because the authors forgot what transformation they used (I asked). The IHMCIF dictionary does allow for a dataset transformation to be specified. Yes, for sure. It is not "development" any more, hence PDB-IHM, see https://www.rcsb.org/news/feature/677880ea44a8c95814022eb9 As for what URL to use, sure, you can use pdb-ihm.org or rcsb.org or even files.wwpdb.org. All the IHM structures going forward go through the wwpdb pipelines so all the wwpdb partners (RCSB, PDBe, PDBj...) should have them. Note that IHM structures, I'm told for technical reasons, live under https://files.wwpdb.org/pub/pdb_ihm/ rather than https://files.wwpdb.org/pub/pdb/ so that might be another way to check for an IHM structure. They are definitely considered to be "PDB" files though rather than "PDB-IHM". The files are in the raw archive but the web interface isn't quite done yet. There's various things that were written with single-state atomic models in mind and needed some tweaking to work with IHM structures. And many IHM structures needed remediation too. So this is still in beta at https://sierra.ihm.k8s.rcsb.org/ (if you see something broken there, Brinda would love to hear from you). It will be on the RCSB web site like other entries, just not yet (but soon, I think by the end of this month). Ben
comment:11 by , 5 months ago
Cc: | added |
---|
I updated the ChimeraX IHM fetching code to use https://pdb-ihm.org/cif/8zza.cif instead of the old pdb-dev URL. The recommended way to fetch the file in ChimeraX is now
open 8zza from pdbihm
Also the prefix form can be used
open pdbihm:8zza
For opening the file directly
open 8zza.cif format ihm
is the same as before.
The IHM web page FAQ says that the PDBDEV_00000010 identifiers will no longer be issued. ChimeraX will still handle those for backwards compatiblity
open 10 from pdbdev
open 00000010 from pdbdev
I did not find any reference to whether new style PDB accession codes pdb_00001abc will be supported for IHM models. The IHM FAQ only mentions 4 letter accession codes. The new style codes don't work (https://pdb-ihm.org/cif/pdb_00008zza.cif does not exist). So the new style long PDB accession codes will not work currently.
comment:12 by , 5 months ago
I'm not going to make "open 8zza" work at this point. It was a bad decision to put two very different and very complex kinds of data in files with .cif suffix. The IHM flavor 8zza.cif will fail to open correctly in all available software that handles mmCIF. The user will have to know this is a "special" .cif file to do anything with it. The poor choice of file suffix will prevent this format from being used beyond IHM experts. It is not worth adding the complexity to our atomic model mmCIF reader to introspect the file. The experts can use "open 8zza.cif format ihm" or "open 8zza from pdbihm" in ChimeraX.
comment:13 by , 5 months ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
In ChimeraX 1.10 or daily builds Use "open 8zza from pdbihm" or "open 8zza.cif format ihm".
I don't now how awkward it would be for the cif reader to check for whatever identifies the file as an IHM file and then call the corresponding "open" command and return its results instead of its own normal results.