Opened 4 years ago

Closed 3 years ago

#5822 closed defect (fixed)

ISOLDE: .cif does not appear to contain any valid residue templates

Reported by: kirk.n@… Owned by: Tristan Croll
Priority: normal Milestone:
Component: Third Party Version:
Keywords: Cc: Greg Couch
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        macOS-10.15.7-x86_64-i386-64bit
ChimeraX Version: 1.2.5 (2021-05-24 04:13:57 UTC)
Description
Attempted to load mmcif of AIB monomer from ccp4 library. Previously saved as mmCIF from monomer import in coot.

Log:
> alias mapPrep volume #1-100 step 1 level 0.05 ; set bgColor white ; lighting
> simple

> alias cartoons select all ; hide target a ; show target c

> alias isoPrep addh ; hide @hc

UCSF ChimeraX version: 1.2.5 (2021-05-24)  
© 2016-2021 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open
> "/Users/kirk.n/Desktop/Work/EliLilly_Project/maps/cryosparc_P18_J732_005_volume_map_sharp
> (1).mrc" format mrc

Opened cryosparc_P18_J732_005_volume_map_sharp (1).mrc as #1, grid size
400,400,400, pixel 1.06, shown at level 0.0145, step 2, values float32  

> open
> /Users/kirk.n/Desktop/Work/EliLilly_Project/Phenix/RealSpaceRefine_50/IM459_Final_noH_real_space_refined_050.pdb

Chain information for IM459_Final_noH_real_space_refined_050.pdb #2  
---  
Chain | Description  
A | No description available  
B | No description available  
C | No description available  
  

> mapPrep

> isoPrep

Summary of feedback from adding hydrogens to
IM459_Final_noH_real_space_refined_050.pdb #2  
---  
notes | No usable SEQRES records for
IM459_Final_noH_real_space_refined_050.pdb (#2) chain A; guessing termini
instead  
No usable SEQRES records for IM459_Final_noH_real_space_refined_050.pdb (#2)
chain B; guessing termini instead  
No usable SEQRES records for IM459_Final_noH_real_space_refined_050.pdb (#2)
chain C; guessing termini instead  
Chain-initial residues that are actual N termini: /A SER 1, /B CYS 304, /C GLY
5  
Chain-initial residues that are not actual N termini: /C GLU 154, /C ASN 168,
/C PHE 178, /C TYR 277, /C LEU 299  
Chain-final residues that are actual C termini: /C ASN 594  
Chain-final residues that are not actual C termini: /A LEU 31, /B ALA 592, /C
ASP 150, /C CYS 159, /C VAL 173, /C LYS 265, /C SER 296  
664 hydrogen bonds  
Adding 'H' to /C GLU 154  
Adding 'H' to /C ASN 168  
Adding 'H' to /C PHE 178  
Adding 'H' to /C TYR 277  
Adding 'H' to /C LEU 299  
/A LEU 31 is not terminus, removing H atom from 'C'  
/B ALA 592 is not terminus, removing H atom from 'C'  
6989 hydrogens added  
  

> cartoons

14138 atoms, 14327 bonds, 5 pseudobonds, 882 residues, 4 models selected  
/Applications/ChimeraX-1.2.5.app/Contents/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-
packages/simtk/openmm/app/desmonddmsfile.py:411: SyntaxWarning: "is" with a
literal. Did you mean "=="?  
if implicitSolvent is 'AGBNP3':  
/Applications/ChimeraX-1.2.5.app/Contents/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-
packages/simtk/openmm/app/desmonddmsfile.py:433: SyntaxWarning: "is" with a
literal. Did you mean "=="?  
if implicitSolvent is 'GVolSA':  
/Applications/ChimeraX-1.2.5.app/Contents/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-
packages/simtk/openmm/app/desmonddmsfile.py:440: SyntaxWarning: "is" with a
literal. Did you mean "=="?  
if implicitSolvent is 'AGBNP':  

> isolde start

> set selectionWidth 4

Chain information for IM459_Final_noH_real_space_refined_050.pdb  
---  
Chain | Description  
2.2/A | No description available  
2.2/B | No description available  
2.2/C | No description available  
  
Done loading forcefield  
Opened cryosparc_P18_J732_005_volume_map_sharp (1).mrc as #2.1.1.1, grid size
400,400,400, pixel 1.06, shown at step 1, values float32  

File /Users/kirk.n/Desktop/monomer-AIB.cif does not appear to contain any
valid residue templates.  

Traceback (most recent call last):  
File "/Users/kirk.n/Library/Application Support/ChimeraX/1.2/site-
packages/chimerax/isolde/isolde.py", line 1222, in _add_cif_template_files_gui  
load_cif_templates(self.session, files)  
File "/Users/kirk.n/Library/Application Support/ChimeraX/1.2/site-
packages/chimerax/isolde/atomic/template_utils.py", line 604, in
load_cif_templates  
raise RuntimeError('No files successfully loaded.')  
RuntimeError: No files successfully loaded.  
  
RuntimeError: No files successfully loaded.  
  
File "/Users/kirk.n/Library/Application Support/ChimeraX/1.2/site-
packages/chimerax/isolde/atomic/template_utils.py", line 604, in
load_cif_templates  
raise RuntimeError('No files successfully loaded.')  
  
See log for complete Python traceback.  
  




OpenGL version: 4.1 INTEL-14.7.20
OpenGL renderer: Intel Iris Pro OpenGL Engine
OpenGL vendor: Intel Inc.Hardware:

    Hardware Overview:

      Model Name: MacBook Pro
      Model Identifier: MacBookPro11,4
      Processor Name: Quad-Core Intel Core i7
      Processor Speed: 2.2 GHz
      Number of Processors: 1
      Total Number of Cores: 4
      L2 Cache (per Core): 256 KB
      L3 Cache: 6 MB
      Hyper-Threading Technology: Enabled
      Memory: 16 GB
      Boot ROM Version: 428.40.10.0.0
      SMC Version (system): 2.29f24

Software:

    System Software Overview:

      System Version: macOS 10.15.7 (19H1519)
      Kernel Version: Darwin 19.6.0
      Time since boot: 4 days 23:28

Graphics/Displays:

    Intel Iris Pro:

      Chipset Model: Intel Iris Pro
      Type: GPU
      Bus: Built-In
      VRAM (Dynamic, Max): 1536 MB
      Vendor: Intel
      Device ID: 0x0d26
      Revision ID: 0x0008
      Metal: Supported, feature set macOS GPUFamily1 v4
      Displays:
        Color LCD:
          Display Type: Built-In Retina LCD
          Resolution: 2880 x 1800 Retina
          Framebuffer Depth: 24-Bit Color (ARGB8888)
          Main Display: Yes
          Mirror: Off
          Online: Yes
          Automatically Adjust Brightness: No
          Connection Type: Internal

Locale: (None, 'UTF-8')
PyQt5 5.15.2, Qt 5.15.2
Installed Packages:
    alabaster: 0.7.12
    appdirs: 1.4.4
    appnope: 0.1.2
    Babel: 2.9.1
    backcall: 0.2.0
    blockdiag: 2.0.1
    certifi: 2020.12.5
    cftime: 1.5.0
    chardet: 3.0.4
    ChimeraX-AddCharge: 1.0.1
    ChimeraX-AddH: 2.1.6
    ChimeraX-AlignmentAlgorithms: 2.0
    ChimeraX-AlignmentHdrs: 3.2
    ChimeraX-AlignmentMatrices: 2.0
    ChimeraX-Alignments: 2.1
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.0
    ChimeraX-Atomic: 1.13.2
    ChimeraX-AtomicLibrary: 3.1.3
    ChimeraX-AtomSearch: 2.0
    ChimeraX-AtomSearchLibrary: 1.0
    ChimeraX-AxesPlanes: 2.0
    ChimeraX-BasicActions: 1.1
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 1.1
    ChimeraX-BondRot: 2.0
    ChimeraX-BugReporter: 1.0
    ChimeraX-BuildStructure: 2.5.2
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.1
    ChimeraX-ButtonPanel: 1.0
    ChimeraX-CageBuilder: 1.0
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.1
    ChimeraX-ChemGroup: 2.0
    ChimeraX-Clashes: 2.1
    ChimeraX-Clipper: 0.16.1
    ChimeraX-ColorActions: 1.0
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.2.1
    ChimeraX-CommandLine: 1.1.4
    ChimeraX-ConnectStructure: 2.0
    ChimeraX-Contacts: 1.0
    ChimeraX-Core: 1.2.5
    ChimeraX-CoreFormats: 1.0
    ChimeraX-coulombic: 1.1.1
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0
    ChimeraX-DataFormats: 1.1
    ChimeraX-Dicom: 1.0
    ChimeraX-DistMonitor: 1.1.3
    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.1
    ChimeraX-Help: 1.1
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.0
    ChimeraX-ImageFormats: 1.1
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.1
    ChimeraX-ISOLDE: 1.2.2
    ChimeraX-Label: 1.0
    ChimeraX-ListInfo: 1.1.1
    ChimeraX-Log: 1.1.2
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.8.1
    ChimeraX-Map: 1.0.2
    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.2.1
    ChimeraX-MDcrds: 2.2
    ChimeraX-MedicalToolbar: 1.0.1
    ChimeraX-Meeting: 1.0
    ChimeraX-MLP: 1.1
    ChimeraX-mmCIF: 2.3
    ChimeraX-MMTF: 2.1
    ChimeraX-Modeller: 1.0.1
    ChimeraX-ModelPanel: 1.0.1
    ChimeraX-ModelSeries: 1.0
    ChimeraX-Mol2: 2.0
    ChimeraX-Morph: 1.0
    ChimeraX-MouseModes: 1.1
    ChimeraX-Movie: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nucleotides: 2.0.1
    ChimeraX-OpenCommand: 1.5
    ChimeraX-PDB: 2.4.1
    ChimeraX-PDBBio: 1.0
    ChimeraX-PDBLibrary: 1.0.1
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-Phenix: 0.3
    ChimeraX-PickBlobs: 1.0
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.0.1
    ChimeraX-PubChem: 2.0.1
    ChimeraX-ReadPbonds: 1.0
    ChimeraX-Registration: 1.1
    ChimeraX-RemoteControl: 1.0
    ChimeraX-ResidueFit: 1.0
    ChimeraX-RestServer: 1.1
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 2.0
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.4
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0
    ChimeraX-SeqView: 2.3
    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.1
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.3.1
    ChimeraX-STL: 1.0
    ChimeraX-Storm: 1.0
    ChimeraX-Struts: 1.0
    ChimeraX-Surface: 1.0
    ChimeraX-SwapAA: 2.0
    ChimeraX-SwapRes: 2.1
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.0.1
    ChimeraX-ToolshedUtils: 1.2
    ChimeraX-Tug: 1.0
    ChimeraX-UI: 1.7.6
    ChimeraX-uniprot: 2.1
    ChimeraX-UnitCell: 1.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.21
    decorator: 5.0.9
    distlib: 0.3.1
    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.17
    imagecodecs: 2020.5.30
    imagesize: 1.2.0
    ipykernel: 5.3.4
    ipython: 7.18.1
    ipython-genutils: 0.2.0
    jedi: 0.17.2
    Jinja2: 2.11.2
    jupyter-client: 6.1.7
    jupyter-core: 4.7.1
    kiwisolver: 1.3.1
    line-profiler: 2.1.2
    lxml: 4.6.2
    lz4: 3.1.0
    MarkupSafe: 2.0.1
    matplotlib: 3.3.2
    matplotlib-inline: 0.1.2
    msgpack: 1.0.0
    netCDF4: 1.5.4
    networkx: 2.5
    numexpr: 2.7.3
    numpy: 1.19.2
    numpydoc: 1.1.0
    openvr: 1.14.1501
    packaging: 20.9
    ParmEd: 3.2.0
    parso: 0.7.1
    pexpect: 4.8.0
    pickleshare: 0.7.5
    Pillow: 7.2.0
    pip: 21.0.1
    pkginfo: 1.5.0.1
    prompt-toolkit: 3.0.18
    psutil: 5.7.2
    ptyprocess: 0.7.0
    pycollada: 0.7.1
    pydicom: 2.0.0
    Pygments: 2.7.1
    PyOpenGL: 3.1.5
    PyOpenGL-accelerate: 3.1.5
    pyparsing: 2.4.7
    PyQt5-commercial: 5.15.2
    PyQt5-sip: 12.8.1
    PyQtWebEngine-commercial: 5.15.2
    python-dateutil: 2.8.1
    pytz: 2021.1
    pyzmq: 22.0.3
    qtconsole: 4.7.7
    QtPy: 1.9.0
    RandomWords: 0.3.0
    requests: 2.24.0
    scipy: 1.5.2
    setuptools: 50.3.2
    sfftk-rw: 0.6.7.dev1
    six: 1.15.0
    snowballstemmer: 2.1.0
    sortedcontainers: 2.2.2
    Sphinx: 3.2.1
    sphinxcontrib-applehelp: 1.0.2
    sphinxcontrib-blockdiag: 2.0.0
    sphinxcontrib-devhelp: 1.0.2
    sphinxcontrib-htmlhelp: 2.0.0
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 1.0.3
    sphinxcontrib-serializinghtml: 1.1.5
    suds-jurko: 0.6
    tables: 3.6.1
    tifffile: 2020.9.3
    tinyarray: 1.2.3
    tornado: 6.1
    traitlets: 5.0.5
    urllib3: 1.25.11
    wcwidth: 0.2.5
    webcolors: 1.11.1
    wheel: 0.36.0
    wheel-filename: 1.3.0

Change History (4)

comment:1 by pett, 4 years ago

Cc: Greg Couch added
Component: UnassignedThird Party
Owner: set to Tristan Croll
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionISOLDE: .cif does not appear to contain any valid residue templates

Reported by Nicholas Kirk

comment:2 by Tristan Croll, 4 years ago

If I'm being honest, I'd completely forgotten I added that button (it's hidden by default, only accessible by switching to "advanced" mode).

The basic problem: the .cif format is really just a catch-all text-based database format that can contain all sorts of things (models, structure factors, residue definitions, residue *restraints*, ...) - and unfortunately the only way to determine what a given .cif file contains is to parse the thing with code that knows what it's looking for. In this case, what ISOLDE (actually, the ChimeraX .cif reader written by Greg) is looking for is a residue *definition* (i.e. as would be provided by the Chemical Components Dictionary, http://ligand-expo.rcsb.org/), which it uses to provide initial coordinates and element/bond information when adding a new residue to the model. My initial aim for this was to provide a mechanism via the existing framework for users to add templates for ligands that aren't already in the components dictionary... but it wasn't until *after* I added it that I realised there doesn't seem to be any publicly-accessible code for actually *writing* templates in that format, making it pretty useless.

What you've tried to load is a *restraints* template - a perfectly reasonable assumption on your part, but not something ISOLDE can do anything with (it uses the AMBER MD forcefield, not classic refinement restraints). Things get even messier with these, since there doesn't appear to be any agreed-upon standard - the files written by CCP4 are different from those written by Phenix (and I'm guessing those written by the Grade server, but I admit I haven't checked). Some of them contain coordinates, some of them don't - and of those that do, at least the Phenix ones use a completely different set of variable names to the official components dictionary files. It's a real mess, and I think a non-starter for ISOLDE's purposes.

What I *really* need to do is provide a framework allowing any loaded residue to become a template for ISOLDE's purposes, and replace this button with something like "use current residue as template" and/or "load template from file" (taking any valid coordinate file containing a single residue).

That covers the button itself. But I'm guessing what you really wanted to do here was load parameters to allow an AIB that's already in your model to be used in simulations. Unfortunately that's still going to be a bit tricky... if it were a noncovalent ligand it would be easy (just "isolde parameterise :AIB") - but unfortunately built-in parameterisation of residues with covalent bonds to other residues is still in the too-hard basket. I'm gradually working in that direction (and talking with people who have some interesting new developments that could make it much easier), but it will be a while before anything's ready.

That being said, it looks like AMBER parameters for alpha,alpha-dialkylated amino acids do exist (https://pubs.rsc.org/en/content/articlelanding/2013/cp/c3cp52721b). If I can track them down, I'll get them converted into OpenMM's format and add them to the built-in forcefield (and send you a copy so you can get it going for yourself).


in reply to:  3 ; comment:3 by kirk.n@…, 4 years ago

Thank you very much. Appreciate the detailed answer!

Best,
Nick.
________________________________
From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
Sent: Wednesday, 22 December 2021 7:53 AM
Cc: gregc@cgl.ucsf.edu <gregc@cgl.ucsf.edu>; Nicholas Kirk <kirk.n@wehi.edu.au>; Tristan Croll <tic20@cam.ac.uk>
Subject: Re: [ChimeraX] #5822: ISOLDE: .cif does not appear to contain any valid residue templates

#5822: ISOLDE: .cif does not appear to contain any valid residue templates
----------------------------------+---------------------------
          Reporter:  kirk.n@…     |      Owner:  Tristan Croll
              Type:  defect       |     Status:  assigned
          Priority:  normal       |  Milestone:
         Component:  Third Party  |    Version:
        Resolution:               |   Keywords:
        Blocked By:               |   Blocking:
Notify when closed:               |   Platform:  all
           Project:  ChimeraX     |
----------------------------------+---------------------------

Comment (by Tristan Croll):

 If I'm being honest, I'd completely forgotten I added that button (it's
 hidden by default, only accessible by switching to "advanced" mode).

 The basic problem: the .cif format is really just a catch-all text-based
 database format that can contain all sorts of things (models, structure
 factors, residue definitions, residue *restraints*, ...) - and
 unfortunately the only way to determine what a given .cif file contains is
 to parse the thing with code that knows what it's looking for. In this
 case, what ISOLDE (actually, the ChimeraX .cif reader written by Greg) is
 looking for is a residue *definition* (i.e. as would be provided by the
 Chemical Components Dictionary, http://ligand-expo.rcsb.org/), which it
 uses to provide initial coordinates and element/bond information when
 adding a new residue to the model. My initial aim for this was to provide
 a mechanism via the existing framework for users to add templates for
 ligands that aren't already in the components dictionary... but it wasn't
 until *after* I added it that I realised there doesn't seem to be any
 publicly-accessible code for actually *writing* templates in that format,
 making it pretty useless.

 What you've tried to load is a *restraints* template - a perfectly
 reasonable assumption on your part, but not something ISOLDE can do
 anything with (it uses the AMBER MD forcefield, not classic refinement
 restraints). Things get even messier with these, since there doesn't
 appear to be any agreed-upon standard - the files written by CCP4 are
 different from those written by Phenix (and I'm guessing those written by
 the Grade server, but I admit I haven't checked). Some of them contain
 coordinates, some of them don't - and of those that do, at least the
 Phenix ones use a completely different set of variable names to the
 official components dictionary files. It's a real mess, and I think a non-
 starter for ISOLDE's purposes.

 What I *really* need to do is provide a framework allowing any loaded
 residue to become a template for ISOLDE's purposes, and replace this
 button with something like "use current residue as template" and/or "load
 template from file" (taking any valid coordinate file containing a single
 residue).

 That covers the button itself. But I'm guessing what you really wanted to
 do here was load parameters to allow an AIB that's already in your model
 to be used in simulations. Unfortunately that's still going to be a bit
 tricky... if it were a noncovalent ligand it would be easy (just "isolde
 parameterise :AIB") - but unfortunately built-in parameterisation of
 residues with covalent bonds to other residues is still in the too-hard
 basket. I'm gradually working in that direction (and talking with people
 who have some interesting new developments that could make it much
 easier), but it will be a while before anything's ready.

 That being said, it looks like AMBER parameters for alpha,alpha-
 dialkylated amino acids do exist
 (https://pubs.rsc.org/en/content/articlelanding/2013/cp/c3cp52721b). If I
 can track them down, I'll get them converted into OpenMM's format and add
 them to the built-in forcefield (and send you a copy so you can get it
 going for yourself).

--
Ticket URL: <https://www.rbvi.ucsf.edu/trac/ChimeraX/ticket/5822#comment:2>
ChimeraX <https://www.rbvi.ucsf.edu/chimerax/>
ChimeraX Issue Tracker

comment:4 by Tristan Croll, 3 years ago

Resolution: fixed
Status: assignedclosed

Never did hear back about those templates, I'm afraid. Anyway, as of ISOLDE 1.4 the rebuilt GUI no longer includes the offending button. Won't be able to support the dialkylated amino acids for the time being, but there are some developments in the works that might make it possible in the medium-term future.

Note: See TracTickets for help on using tickets.