Opened 5 months ago

Closed 5 months ago

#17661 closed defect (fixed)

Opening IHM model "open 8zza": No mmCIF models found

Reported by: goddard@… 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 Tom Goddard, 5 months ago

Cc: pett Greg Couch added
Component: UnassignedInput/Output
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionOpening IHM model "open 8zza": No mmCIF models found

comment:2 by pett, 5 months ago

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.

comment:3 by Tom Goddard, 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 Tom Goddard, 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 Tom Goddard, 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 Tom Goddard, 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 Tom Goddard, 5 months ago

Cc: ben@… 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

https://pdb-dev.wwpdb.org/cif/8zzi.cif

and I should change that if the URL will cease to work soon. Do you know if

https://pdb-ihm.org/cif/8zzi.cif

would be the right URL? Or are fetches supposed to use the mmCIF atomic model URL

http://files.rcsb.org/download/8zzi.cif

comment:8 by Tom Goddard, 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

https://files.rcsb.org/download/8zza.cif

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 Ben Webb, 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:10 by Tom Goddard, 5 months ago

Thanks Ben for all the info about PDB IHM.

comment:11 by Tom Goddard, 5 months ago

Cc: Elaine Meng 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.

Last edited 5 months ago by Tom Goddard (previous) (diff)

comment:12 by Tom Goddard, 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 Tom Goddard, 5 months ago

Resolution: fixed
Status: assignedclosed

In ChimeraX 1.10 or daily builds Use "open 8zza from pdbihm" or "open 8zza.cif format ihm".

Note: See TracTickets for help on using tickets.