Opened 21 months ago

Last modified 21 months ago

#14498 assigned defect

ISOLDE: possible error in MD template

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

Description

The following bug report has been submitted:
Platform:        Linux-6.2.0-39-generic-x86_64-with-glibc2.35
ChimeraX Version: 1.7.1 (2024-01-23 01:58:08 UTC)
Description
ChimeraX (1.6, 1.6.1, 1.7.1). Load map and PDB structure. Start ISOLDE. Open Unparameterised Residues tool. Select a SER residue. Attempt to parameterise with default (SER). Error thrown:

"Failed to add atoms ['HB2', 'HB3'] to atom C because this will lead to having 5 atoms attached, which is more than its assigned geometry can support. This is probably due to an error in the MD template (SER). If this template is built into ISOLDE, please report this using Help/Report a bug"

This only started happening recently. Occurs on multiple systems, at different sites (work/home).

OpenGL version: 3.3.0 NVIDIA 535.154.05
OpenGL renderer: NVIDIA RTX A4000/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation

Python: 3.11.2
Locale: en_US.UTF-8
Qt version: PyQt6 6.3.1, Qt 6.3.1
Qt runtime version: 6.3.2
Qt platform: xcb

XDG_SESSION_TYPE=x11
DESKTOP_SESSION=cinnamon
XDG_SESSION_DESKTOP=cinnamon
XDG_CURRENT_DESKTOP=X-Cinnamon
DISPLAY=:0
Manufacturer: Gigabyte Technology Co., Ltd.
Model: B550M AORUS PRO-P
OS: Linux Mint 21.2 Victoria
Architecture: 64bit ELF
Virtual Machine: none
CPU: 16 AMD Ryzen 7 5700G with Radeon Graphics
Cache Size: 512 KB
Memory:
	               total        used        free      shared  buff/cache   available
	Mem:            62Gi       9.7Gi        41Gi       151Mi        10Gi        51Gi
	Swap:          2.0Gi          0B       2.0Gi

Graphics:
	01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA104GL [RTX A4000] [10de:24b0] (rev a1)	
	Subsystem: NVIDIA Corporation GA104GL [RTX A4000] [10de:14ad]	
	Kernel driver in use: nvidia

Installed Packages:
   alabaster: 0.7.16
   appdirs: 1.4.4
   asttokens: 2.4.1
   Babel: 2.14.0
   backcall: 0.2.0
   beautifulsoup4: 4.11.2
   blockdiag: 3.0.0
   blosc2: 2.0.0
   build: 0.10.0
   certifi: 2023.11.17
   cftime: 1.6.3
   charset-normalizer: 3.3.2
   ChimeraX-AddCharge: 1.5.13
   ChimeraX-AddH: 2.2.5
   ChimeraX-AlignmentAlgorithms: 2.0.1
   ChimeraX-AlignmentHdrs: 3.4.1
   ChimeraX-AlignmentMatrices: 2.1
   ChimeraX-Alignments: 2.12.2
   ChimeraX-AlphaFold: 1.0
   ChimeraX-AltlocExplorer: 1.1.1
   ChimeraX-AmberInfo: 1.0
   ChimeraX-Arrays: 1.1
   ChimeraX-Atomic: 1.49.1
   ChimeraX-AtomicLibrary: 12.1.5
   ChimeraX-AtomSearch: 2.0.1
   ChimeraX-AxesPlanes: 2.3.2
   ChimeraX-BasicActions: 1.1.2
   ChimeraX-BILD: 1.0
   ChimeraX-BlastProtein: 2.1.2
   ChimeraX-BondRot: 2.0.4
   ChimeraX-BugReporter: 1.0.1
   ChimeraX-BuildStructure: 2.10.5
   ChimeraX-Bumps: 1.0
   ChimeraX-BundleBuilder: 1.2.2
   ChimeraX-ButtonPanel: 1.0.1
   ChimeraX-CageBuilder: 1.0.1
   ChimeraX-CellPack: 1.0
   ChimeraX-Centroids: 1.3.2
   ChimeraX-ChangeChains: 1.1
   ChimeraX-CheckWaters: 1.3.2
   ChimeraX-ChemGroup: 2.0.1
   ChimeraX-Clashes: 2.2.4
   ChimeraX-Clipper: 0.22.4
   ChimeraX-ColorActions: 1.0.3
   ChimeraX-ColorGlobe: 1.0
   ChimeraX-ColorKey: 1.5.5
   ChimeraX-CommandLine: 1.2.5
   ChimeraX-ConnectStructure: 2.0.1
   ChimeraX-Contacts: 1.0.1
   ChimeraX-Core: 1.7.1
   ChimeraX-CoreFormats: 1.2
   ChimeraX-coulombic: 1.4.2
   ChimeraX-Crosslinks: 1.0
   ChimeraX-Crystal: 1.0
   ChimeraX-CrystalContacts: 1.0.1
   ChimeraX-DataFormats: 1.2.3
   ChimeraX-Dicom: 1.2
   ChimeraX-DistMonitor: 1.4
   ChimeraX-DockPrep: 1.1.3
   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.1.1
   ChimeraX-Hbonds: 2.4
   ChimeraX-Help: 1.2.2
   ChimeraX-HKCage: 1.3
   ChimeraX-IHM: 1.1
   ChimeraX-ImageFormats: 1.2
   ChimeraX-IMOD: 1.0
   ChimeraX-IO: 1.0.1
   ChimeraX-ISOLDE: 1.7.1
   ChimeraX-ItemsInspection: 1.0.1
   ChimeraX-IUPAC: 1.0
   ChimeraX-Label: 1.1.8
   ChimeraX-LinuxSupport: 1.0.1
   ChimeraX-ListInfo: 1.2.2
   ChimeraX-Log: 1.1.6
   ChimeraX-LookingGlass: 1.1
   ChimeraX-Maestro: 1.9.1
   ChimeraX-Map: 1.1.4
   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.1.2
   ChimeraX-MCopy: 1.0
   ChimeraX-MDcrds: 2.6.1
   ChimeraX-MedicalToolbar: 1.0.2
   ChimeraX-Meeting: 1.0.1
   ChimeraX-MLP: 1.1.1
   ChimeraX-mmCIF: 2.12.1
   ChimeraX-MMTF: 2.2
   ChimeraX-Modeller: 1.5.14
   ChimeraX-ModelPanel: 1.4
   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-Neuron: 1.0
   ChimeraX-Nifti: 1.1
   ChimeraX-NRRD: 1.1
   ChimeraX-Nucleotides: 2.0.3
   ChimeraX-OpenCommand: 1.13.1
   ChimeraX-PDB: 2.7.3
   ChimeraX-PDBBio: 1.0.1
   ChimeraX-PDBLibrary: 1.0.4
   ChimeraX-PDBMatrices: 1.0
   ChimeraX-PickBlobs: 1.0.1
   ChimeraX-Positions: 1.0
   ChimeraX-PresetMgr: 1.1
   ChimeraX-PubChem: 2.1
   ChimeraX-ReadPbonds: 1.0.1
   ChimeraX-Registration: 1.1.2
   ChimeraX-RemoteControl: 1.0
   ChimeraX-RenderByAttr: 1.1
   ChimeraX-RenumberResidues: 1.1
   ChimeraX-ResidueFit: 1.0.1
   ChimeraX-RestServer: 1.2
   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.2
   ChimeraX-Segger: 1.0
   ChimeraX-Segment: 1.0.1
   ChimeraX-SelInspector: 1.0
   ChimeraX-SeqView: 2.11
   ChimeraX-Shape: 1.0.1
   ChimeraX-Shell: 1.0.1
   ChimeraX-Shortcuts: 1.1.1
   ChimeraX-ShowSequences: 1.0.2
   ChimeraX-SideView: 1.0.1
   ChimeraX-Smiles: 2.1.2
   ChimeraX-SmoothLines: 1.0
   ChimeraX-SpaceNavigator: 1.0
   ChimeraX-StdCommands: 1.12.4
   ChimeraX-STL: 1.0.1
   ChimeraX-Storm: 1.0
   ChimeraX-StructMeasure: 1.1.2
   ChimeraX-Struts: 1.0.1
   ChimeraX-Surface: 1.0.1
   ChimeraX-SwapAA: 2.0.1
   ChimeraX-SwapRes: 2.2.2
   ChimeraX-TapeMeasure: 1.0
   ChimeraX-TaskManager: 1.0
   ChimeraX-Test: 1.0
   ChimeraX-Toolbar: 1.1.2
   ChimeraX-ToolshedUtils: 1.2.4
   ChimeraX-Topography: 1.0
   ChimeraX-ToQuest: 1.0
   ChimeraX-Tug: 1.0.1
   ChimeraX-UI: 1.33.3
   ChimeraX-uniprot: 2.3
   ChimeraX-UnitCell: 1.0.1
   ChimeraX-ViewDockX: 1.3.2
   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.3
   ChimeraX-Zone: 1.0.1
   colorama: 0.4.6
   comm: 0.2.1
   contourpy: 1.2.0
   cxservices: 1.2.2
   cycler: 0.12.1
   Cython: 0.29.33
   debugpy: 1.8.0
   decorator: 5.1.1
   distro: 1.7.0
   docutils: 0.19
   executing: 2.0.1
   filelock: 3.9.0
   fonttools: 4.47.2
   funcparserlib: 2.0.0a0
   glfw: 2.6.4
   grako: 3.16.5
   h5py: 3.10.0
   html2text: 2020.1.16
   idna: 3.6
   ihm: 0.38
   imagecodecs: 2023.9.18
   imagesize: 1.4.1
   ipykernel: 6.23.2
   ipython: 8.14.0
   ipython-genutils: 0.2.0
   ipywidgets: 8.1.1
   jedi: 0.18.2
   Jinja2: 3.1.2
   jupyter-client: 8.2.0
   jupyter-core: 5.7.1
   jupyterlab-widgets: 3.0.9
   kiwisolver: 1.4.5
   line-profiler: 4.0.2
   lxml: 4.9.2
   lz4: 4.3.2
   MarkupSafe: 2.1.4
   matplotlib: 3.7.2
   matplotlib-inline: 0.1.6
   msgpack: 1.0.4
   nest-asyncio: 1.6.0
   netCDF4: 1.6.2
   networkx: 3.1
   nibabel: 5.0.1
   nptyping: 2.5.0
   numexpr: 2.8.8
   numpy: 1.25.1
   openvr: 1.23.701
   packaging: 23.2
   ParmEd: 3.4.3
   parso: 0.8.3
   pep517: 0.13.0
   pexpect: 4.9.0
   pickleshare: 0.7.5
   pillow: 10.2.0
   pip: 23.0
   pkginfo: 1.9.6
   platformdirs: 4.1.0
   prompt-toolkit: 3.0.43
   psutil: 5.9.5
   ptyprocess: 0.7.0
   pure-eval: 0.2.2
   py-cpuinfo: 9.0.0
   pycollada: 0.7.2
   pydicom: 2.3.0
   Pygments: 2.16.1
   pynrrd: 1.0.0
   PyOpenGL: 3.1.7
   PyOpenGL-accelerate: 3.1.7
   pyopenxr: 1.0.2801
   pyparsing: 3.0.9
   pyproject-hooks: 1.0.0
   PyQt6-commercial: 6.3.1
   PyQt6-Qt6: 6.3.2
   PyQt6-sip: 13.4.0
   PyQt6-WebEngine-commercial: 6.3.1
   PyQt6-WebEngine-Qt6: 6.3.2
   python-dateutil: 2.8.2
   pytz: 2023.3.post1
   pyzmq: 25.1.2
   qtconsole: 5.4.3
   QtPy: 2.4.1
   RandomWords: 0.4.0
   requests: 2.31.0
   scipy: 1.11.1
   setuptools: 67.4.0
   sfftk-rw: 0.7.3
   six: 1.16.0
   snowballstemmer: 2.2.0
   sortedcontainers: 2.4.0
   soupsieve: 2.5
   sphinx: 6.1.3
   sphinx-autodoc-typehints: 1.22
   sphinxcontrib-applehelp: 1.0.8
   sphinxcontrib-blockdiag: 3.0.0
   sphinxcontrib-devhelp: 1.0.6
   sphinxcontrib-htmlhelp: 2.0.5
   sphinxcontrib-jsmath: 1.0.1
   sphinxcontrib-qthelp: 1.0.7
   sphinxcontrib-serializinghtml: 1.1.10
   stack-data: 0.6.3
   superqt: 0.5.0
   tables: 3.8.0
   tcia-utils: 1.5.1
   tifffile: 2023.7.18
   tinyarray: 1.2.4
   tomli: 2.0.1
   tornado: 6.4
   traitlets: 5.9.0
   typing-extensions: 4.9.0
   tzdata: 2023.4
   urllib3: 2.1.0
   wcwidth: 0.2.13
   webcolors: 1.12
   wheel: 0.38.4
   wheel-filename: 1.4.1
   widgetsnbextension: 4.0.9


Attachments (2)

ExampleChains.pdb (64.8 KB ) - added by ray@… 21 months ago.
Added by email2trac
edited.pdb (64.8 KB ) - added by Eric Pettersen 21 months ago.
Added by email2trac

Download all attachments as: .zip

Change History (15)

comment:1 by Eric Pettersen, 21 months ago

Component: UnassignedThird Party
Owner: set to Tristan Croll
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionISOLDE: possible error in MD template

comment:2 by Tristan Croll, 21 months ago

OK, that one’s really weird. Would it be possible to share a minimal
example I can use as a test case? Just select the offending residue plus a
few either side, then do e.g. “save test.pdb #1 sel true”, and attach the
result to a reply email.

On Tue, 30 Jan 2024 at 03:00, ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
wrote:

>
>
>

comment:3 by Tristan Croll, 21 months ago

OK, I can see how this _could_ happen (although so far I can't seem to make it _actually_ happen for myself). The residue-rebuilding code is based on matching simple graph representations of the incomplete residue, the PDB template and the MD template (atoms are nodes, bonds are unlabelled edges). Under that representation, the backbone "arm" (CA-C-O) looks identical to the sidechain (CA-CB-OG). Your error message suggests it's matching the wrong arms, leading it to try to add the CB hydrogens to the C. I'll try to make this smarter, but I also have to ask: are you sure you need to be using the Unparameterised Residues widget in this instance? It's typically only used for fixing residual issues after you've already added hydrogens with the "addh" command. The workflow you describe doesn't mention doing that?

comment:4 by ray@…, 21 months ago

Hi Tristan (and ChimeraX developers),

Sorry to bother you, and thanks for looking into this. I've also been 
looking at this, since I've been working my way through more than two 
dozen models in the last two months and this only happened with one of 
them (coincidentally, the penultimate model I was working on).

I'm still trying to work out _why_, but the chains which were throwing 
this error have every residue code as "SERU", "GLYU", "TYRU", "ALAU" 
etc. I'm not sure when or how that happened, need to investigate.

This was triggering the unparameterised residue widget, rather than just 
adding hydrogens (as the other chains without this issue did successfully).

But the only residue which would not rebuild and re-parameterise is 
serine. All the others re-parameterised correctly, which made me think 
bug rather than issue with the chains (although I was a little confused 
why it was needed).

More investigation tonight (now 11:30pm) revealed the above. Would you 
still like the fragment you request in the last message? Although I 
think you can mark this one as solved.

My apologies for the trouble.

Thanks and best wishes,
Ray



On 2024/01/30 21:30, ChimeraX wrote:

comment:5 by Tristan Croll, 21 months ago

Hi Ray,

This sounds like that file might have been saved in Phenix’s Hybrid-36
format, which uses the “spare” column between residue and chain ID to make
2-character chain IDs. Problem is that the CHARMM36 format uses the same
column to make 4-character residue IDs. Both aimed at hacking around the
limitations of the fixed-width PDB format, causing obvious challenges in
parsing.

Anyway, I’d be grateful if you could still share a test example - even if
it’s rarely triggered, this feels like something I should address.

Best,
Tristan

On Tue, 30 Jan 2024 at 15:32, ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
wrote:

>
>
>
>
>
>
>
>
>
>
>
>

comment:6 by Eric Pettersen, 21 months ago

The PDB parser tries to handle this by looking at that "spare" column and if it's consistently the same character for all the residues of a chain then it assumes the column is part of a two-character chain ID. Otherwise, it's assumed to be part of a 4-character residue name.

comment:7 by Eric Pettersen, 21 months ago

Cc: Eric Pettersen added

comment:8 by ray@…, 21 months ago

Hi Tristan,

Thanks for the explanation regarding file formatting and workarounds, 
that makes sense.

I've attached a segment of the models - two loops, one from a good chain 
and one from a buggy one. It displays as expected in Chimera, but the 
buggy chain does not display correctly in ChimeraX. This is different to 
the whole structure, where the buggy chain displays OK.

If needs be, I might be able to share the full chain depending on 
collaborator agreement.

Best wishes,
Ray

On 2024/01/31 04:17, ChimeraX wrote:

ExampleChains.pdb

by ray@…, 21 months ago

Attachment: ExampleChains.pdb added

Added by email2trac

comment:9 by Eric Pettersen, 21 months ago

Standard polypeptide chains are supposed to be in ATOM records, not HETATM records.  Editing your file to replace the HETATMs with ATOMs produces two chains, A and U8, with the residues in both chains having their normal 3-character names.

--Eric

edited.pdb

by Eric Pettersen, 21 months ago

Attachment: edited.pdb added

Added by email2trac

comment:10 by ray@…, 21 months ago

Hi Eric,

Curious. Why would it save like that? I'll check the original .cif file, 
which came from Model Angelo. It might be related to the map I was 
carrying out a test of Model Angelo in; it's part of a giant virus 
capsid and even a small block generates over 1,000 chains.

Not sure of the limits of the .cif format on that point and didn't go 
looking for issues like this as nothing else in Chimera/(X) and PHENIX 
complained or looked out of place.

Why did all residues except SER rebuild OK?

It's only going to get more difficult as the asymmetric unit is going to 
be at least that many chains... will have to break it into even smaller 
sections, as at a couple of hundred both Chimera and ChimeraX struggle.

It's good to know to look out for this, though, thanks!

Best,
Ray

On 2024/02/01 07:24, Eric Pettersen wrote:

comment:11 by Eric Pettersen, 21 months ago

So are you saying that the PDB file was saved from ChimeraX, based on a .cif input file from Model Angelo?

comment:12 by ray@…, 21 months ago

Yes, that's correct.

On 2/2/24 07:50, ChimeraX wrote:

comment:13 by Eric Pettersen, 21 months ago

Cc: Greg Couch added

The fact that ChimeraX writes out chain U8 in HETATM records means that ChimeraX's mmCIF reader did not recognize that chain as a standard polypeptide chain. I've added the author of our mmCIF reader, Greg Couch, to this ticket so that he could possibly comment on why that would be.

Note: See TracTickets for help on using tickets.