Opened 21 months ago
Last modified 21 months ago
#14498 assigned defect
ISOLDE: possible error in MD template
| Reported by: | 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)
Change History (15)
comment:1 by , 21 months ago
| Component: | Unassigned → Third Party |
|---|---|
| Owner: | set to |
| Platform: | → all |
| Project: | → ChimeraX |
| Status: | new → assigned |
| Summary: | ChimeraX bug report submission → ISOLDE: possible error in MD template |
comment:3 by , 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 , 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 , 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 , 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 , 21 months ago
| Cc: | added |
|---|
comment:8 by , 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:
comment:9 by , 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
comment:10 by , 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 , 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:13 by , 21 months ago
| Cc: | 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.