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: | 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 , 4 years ago
| Cc: | added |
|---|---|
| Component: | Unassigned → Third Party |
| Owner: | set to |
| Platform: | → all |
| Project: | → ChimeraX |
| Status: | new → assigned |
| Summary: | ChimeraX bug report submission → ISOLDE: .cif does not appear to contain any valid residue templates |
comment:2 by , 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).
follow-up: 3 comment:3 by , 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 , 3 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
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.
Reported by Nicholas Kirk