Opened 3 weeks ago

Last modified 2 weeks ago

#20815 accepted defect

Bad IDATM typing

Reported by: Tristan Croll Owned by: Eric Pettersen
Priority: normal Milestone:
Component: Structure Analysis Version:
Keywords: Cc:
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Windows-11-10.0.26200-SP0
ChimeraX Version: 1.13.dev202608021548 (2026-08-02 15:48:26 UTC)
Description
New `idatm_type` assignment failure: in COD 2214833, the planar N=CH2 is typed as N3+ - C3

Log:
> clipper init

> cofr centerOfView showPivot true

> camera ortho

> lighting simple

> isolde shorthand
    
    
    Initialising ISOLDE-specific command aliases:
    Alias	Equivalent full command
    -------------------------------------------------
    st	isolde step {arguments}
    aw	isolde add water {arguments}
    awsf	isolde add water {arguments} sim false
    al	isolde add ligand {arguments}
    aa	isolde add aa $1 sel {arguments}
    ht	isolde mod his sel {arguments}
    so	setattr sel atoms occupancy {arguments}
    ab	isolde adjust bfactors {arguments}
    ss	isolde sim start sel
    rt	isolde release torsions sel {arguments}
    rd	isolde release distances sel {arguments}
    ra	rd; rt
    pf	isolde pepflip sel
    cf	isolde cisflip sel
    cbb	color bfactor {arguments}
    cbo	color byattr occupancy {arguments}
    cbc	color {arguments} bychain; color {arguments} byhet
    cs	clipper set contourSensitivity {arguments}
    

  
UCSF ChimeraX version: 1.13.dev202608021548 (2026-08-02)  
© 2016-2026 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open 2214833 fromDatabase cod

2214833 title:  
diethylmethyleneammonium chloride [more info...]  
  
7 atoms have anisotropic B-factors. Depict anisotropic information with
Thermal Ellipsoids [start tool...] or the aniso command.  

> label #1 atoms text {0.idatm_type} height 0.3




OpenGL version: 3.3.0 NVIDIA 610.62
OpenGL renderer: NVIDIA GeForce RTX 5070 Ti Laptop GPU/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation

Python: 3.14.6
Locale: en_GB.cp1252
Qt version: PyQt6 6.10.2, Qt 6.10.0
Qt runtime version: 6.10.2
Qt platform: windows

Manufacturer: LENOVO
Model: 83LU
OS: Microsoft Windows 11 Pro (Build 26200.8875)
Memory: 33,752,997,888
MaxProcessMemory: 137,438,953,344
CPU: 24 Intel(R) Core(TM) Ultra 9 275HX
OSLanguage: en-US

Installed Packages:
    accessible-pygments: 0.0.5
    aiohappyeyeballs: 2.7.1
    aiohttp: 3.14.3
    aiosignal: 1.4.0
    alabaster: 1.0.0
    annotated-types: 0.8.0
    anyio: 4.14.2
    appdirs: 1.4.4
    asttokens: 3.0.2
    attrs: 26.1.0
    autocommand: 2.2.2
    babel: 2.18.0
    backports.tarfile: 1.2.0
    beautifulsoup4: 4.15.0
    blockdiag: 3.0.0
    blosc2: 4.9.1
    build: 1.5.0
    certifi: 2026.7.22
    cffi: 2.1.0
    cftime: 1.6.5
    charset-normalizer: 3.4.9
    ChimeraX-AddCharge: 1.5.20
    ChimeraX-AddH: 2.3.1
    ChimeraX-AlignmentAlgorithms: 2.0.2
    ChimeraX-AlignmentHdrs: 3.6.2
    ChimeraX-AlignmentMatrices: 2.1
    ChimeraX-Alignments: 3.2.2
    ChimeraX-AlphaFold: 1.0.1
    ChimeraX-AltlocExplorer: 1.2
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Animations: 1.0
    ChimeraX-Aniso: 1.3.2
    ChimeraX-Arrays: 1.1
    ChimeraX-Atomic: 1.71
    ChimeraX-AtomicLibrary: 14.4.2
    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.1
    ChimeraX-BondRot: 2.0.4
    ChimeraX-BugReporter: 1.0.2
    ChimeraX-BuildStructure: 2.13.1
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.6.0
    ChimeraX-ButtonPanel: 1.0.1
    ChimeraX-CageBuilder: 1.0.1
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.4.1
    ChimeraX-ChangeChains: 1.1
    ChimeraX-CheckWaters: 1.5.1
    ChimeraX-ChemComp: 0.1.0
    ChimeraX-ChemGroup: 2.0.2
    ChimeraX-ChemSearch: 0.1.0
    ChimeraX-Clashes: 2.4
    ChimeraX-Clipper: 0.28.dev0
    ChimeraX-Cluster: 1.0
    ChimeraX-ColorActions: 1.0.5
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.8
    ChimeraX-CommandLine: 1.3.1
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0.1
    ChimeraX-Core: 1.13.dev202608021548
    ChimeraX-CoreFormats: 1.2
    ChimeraX-coulombic: 1.4.6
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0.1
    ChimeraX-DataFormats: 1.3
    ChimeraX-DistMonitor: 1.4.2
    ChimeraX-DockPrep: 1.2.2
    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.4
    ChimeraX-Help: 1.3
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.1
    ChimeraX-ImageFormats: 1.2
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.4
    ChimeraX-ISOLDE: 1.13.dev0
    ChimeraX-ItemsInspection: 1.0.1
    ChimeraX-IUPAC: 1.0
    ChimeraX-KVFinder: 1.8.5
    ChimeraX-Label: 1.5
    ChimeraX-LightingGUI: 1.0
    ChimeraX-ListInfo: 1.3.1
    ChimeraX-Log: 1.2.2
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.9.3
    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-MatchAlign: 1.2.1
    ChimeraX-MatchMaker: 2.4.1
    ChimeraX-MCopy: 1.0
    ChimeraX-MCPServer: 0.2.0
    ChimeraX-MDcrds: 2.20
    ChimeraX-Meeting: 1.0.1
    ChimeraX-Minimize: 1.4.4
    ChimeraX-MLP: 1.1.1
    ChimeraX-mmCIF: 2.17
    ChimeraX-MMTF: 2.2
    ChimeraX-ModelArchive: 1.0
    ChimeraX-Modeller: 1.5.24
    ChimeraX-ModelPanel: 1.6.1
    ChimeraX-ModelSeries: 1.0.1
    ChimeraX-Mol2: 2.0.4
    ChimeraX-Mole: 1.0
    ChimeraX-Morph: 1.0.2
    ChimeraX-MouseModes: 1.2
    ChimeraX-Movie: 1.0.1
    ChimeraX-MutationScores: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-NMRSTAR: 1.0.2
    ChimeraX-Nucleotides: 2.0.3
    ChimeraX-OpenCommand: 1.16.2
    ChimeraX-OpenFold: 1.0
    ChimeraX-OrthoPick: 1.0.1
    ChimeraX-PDB: 2.7.13
    ChimeraX-PDBBio: 1.0.1
    ChimeraX-PDBLibrary: 1.0.5
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PickBlobs: 1.0.1
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.1.4
    ChimeraX-ProfileGrids: 1.12
    ChimeraX-PubChem: 2.2
    ChimeraX-QScore: 1.2
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1.2
    ChimeraX-RemoteControl: 1.0
    ChimeraX-RenderByAttr: 1.8.3
    ChimeraX-RenumberResidues: 1.1
    ChimeraX-ResidueFit: 1.0.1
    ChimeraX-RestServer: 1.3.3
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 4.0
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.5.3
    ChimeraX-Scenes: 0.3.1
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0.3
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0.1
    ChimeraX-Segmentations: 3.5.12
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.19.1
    ChimeraX-Shape: 1.1
    ChimeraX-Shell: 1.0.1
    ChimeraX-Shortcuts: 1.2.1
    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-SNFG: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.20
    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.3
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-TaskManager: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.2.4
    ChimeraX-ToolshedUtils: 1.2.4
    ChimeraX-Topography: 1.0
    ChimeraX-ToQuest: 1.0
    ChimeraX-Tug: 1.0.1
    ChimeraX-UI: 1.55
    ChimeraX-Umap: 1.0
    ChimeraX-uniprot: 2.3.2
    ChimeraX-UnitCell: 1.0.1
    ChimeraX-ViewDock: 1.6.5
    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.5
    ChimeraX-Zone: 1.0.1
    click: 8.4.2
    colorama: 0.4.6
    comm: 0.2.3
    comtypes: 1.4.16
    contourpy: 1.3.3
    coverage: 7.15.3
    cryptography: 50.0.0
    cxservices: 1.2.3
    cycler: 0.12.1
    Cython: 3.2.9
    debugpy: 1.8.21
    decorator: 5.3.1
    dimorphite_dl: 2.0.2
    docutils: 0.22
    executing: 2.2.1
    filelock: 3.32.0
    fonttools: 4.63.0
    frozenlist: 1.8.0
    funcparserlib: 2.0.0a0
    glfw: 2.10.2
    grako: 3.16.5
    h11: 0.16.0
    h2: 4.4.0
    h5py: 3.16.0
    hpack: 4.2.0
    html2text: 2025.4.15
    httpcore: 1.0.9
    httpx: 0.28.1
    httpx-sse: 0.4.3
    hyperframe: 6.1.0
    idna: 3.18
    ihm: 2.2
    imagecodecs: 2026.6.26
    imagesize: 2.0.0
    importlib_metadata: 8.7.1
    iniconfig: 2.3.0
    ipykernel: 7.3.0
    ipython: 9.14.1
    ipython_pygments_lexers: 1.1.1
    jaraco.classes: 3.4.0
    jaraco.context: 6.1.2
    jaraco.context: 6.1.0
    jaraco.functools: 4.6.0
    jaraco.functools: 4.4.0
    jaraco.text: 4.0.0
    jedi: 0.20.0
    Jinja2: 3.1.6
    jsonschema: 4.26.0
    jsonschema-specifications: 2025.9.1
    jupyter_client: 8.9.1
    jupyter_core: 5.9.1
    keyring: 25.7.0
    kiwisolver: 1.5.0
    line_profiler: 5.0.2
    loguru: 0.7.3
    lxml: 6.1.1
    lz4: 4.4.5
    Markdown: 3.10.2
    markdown-it-py: 4.2.0
    MarkupSafe: 3.0.3
    matplotlib: 3.10.7
    matplotlib-inline: 0.2.2
    mcp: 1.28.1
    mdurl: 0.1.2
    more-itertools: 11.1.0
    more-itertools: 10.8.0
    msgpack: 1.2.1
    multidict: 6.7.1
    ndindex: 1.10.1
    nest-asyncio2: 1.7.2
    netCDF4: 1.7.4
    networkx: 3.3
    numexpr: 2.14.2
    numpy: 2.4.6
    nvidia-nvjitlink-cu12: 12.9.86
    OpenMM: 8.4.0
    OpenMM-CUDA-12: 8.4.0
    openvr: 1.26.701
    packaging: 26.2
    packaging: 26.0
    ParmEd: 4.2.2
    parso: 0.8.7
    pep517: 0.13.1
    pickleshare: 0.7.5
    pillow: 12.3.0
    pip: 26.1.2
    pkginfo: 1.12.1.2
    platformdirs: 4.11.0
    platformdirs: 4.4.0
    pluggy: 1.6.0
    prompt_toolkit: 3.0.53
    propcache: 0.5.2
    psutil: 7.2.2
    pure_eval: 0.2.3
    py-cpuinfo: 9.0.0
    pybind11: 3.0.4
    pycollada: 0.8
    pycparser: 3.0
    pydantic: 2.13.4
    pydantic-settings: 2.14.2
    pydantic_core: 2.46.4
    pydata-sphinx-theme: 0.20.0
    Pygments: 2.20.0
    PyJWT: 2.13.0
    pynmrstar: 3.5.1
    PyOpenGL: 3.1.10
    PyOpenGL-accelerate: 3.1.10
    pyopenxr: 1.1.4501
    pyparsing: 3.3.2
    pyproject_hooks: 1.2.0
    PyQt6-commercial: 6.10.2
    PyQt6-Qt6: 6.10.2
    PyQt6-WebEngine-commercial: 6.10.0
    PyQt6-WebEngine-Qt6: 6.10.2
    PyQt6_sip: 13.10.3
    pytest: 9.1.1
    pytest-cov: 7.1.0
    python-dateutil: 2.9.0.post0
    python-dotenv: 1.2.2
    python-multipart: 0.0.32
    pywin32: 312
    pywin32-ctypes: 0.2.3
    pyzmq: 27.1.0
    qtconsole: 5.7.2
    QtPy: 2.4.3
    qtshim: 1.2.2
    RandomWords: 0.4.0
    rdkit: 2025.9.6
    referencing: 0.37.0
    requests: 2.34.2
    rich: 15.0.0
    roman-numerals: 4.1.0
    rpds-py: 2026.6.3
    scipy: 1.18.0
    setuptools: 83.0.0
    sfftk-rw: 0.8.1
    six: 1.17.0
    snowballstemmer: 3.1.1
    sortedcontainers: 2.4.0
    soupsieve: 2.9.1
    Sphinx: 9.1.0
    sphinx-autodoc-typehints: 3.13.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
    sse-starlette: 3.4.6
    stack-data: 0.6.3
    starlette: 1.3.1
    superqt: 0.8.1
    tables: 3.11.1
    threadpoolctl: 3.6.0
    tifffile: 2026.7.14
    tinyarray: 1.2.5
    tomli: 2.4.0
    tornado: 6.5.7
    tqdm: 4.70.0
    traitlets: 5.15.1
    typing-inspection: 0.4.2
    typing_extensions: 4.16.0
    urllib3: 2.7.0
    uvicorn: 0.52.1
    wcwidth: 0.8.2
    webcolors: 25.10.0
    wheel: 0.47.0
    wheel: 0.46.3
    wheel-filename: 1.4.2
    win32_setctime: 1.2.0
    WMI: 1.5.1
    yarl: 1.24.5
    zipp: 3.23.0

Attachments (4)

252640398.mol2 (2.7 KB ) - added by Tristan Croll 3 weeks ago.
Added by email2trac
phenolate.mol2 (1.2 KB ) - added by Eric Pettersen 2 weeks ago.
typing works
estimate_net_charge_failures.cxs (126.8 KB ) - added by Tristan Croll 2 weeks ago.
Added by email2trac
estimate_net_charge_failures_README.md (4.9 KB ) - added by Tristan Croll 2 weeks ago.
Added by email2trac

Download all attachments as: .zip

Change History (10)

comment:1 by Tristan Croll, 3 weeks ago

More generally: I've been steadily whittling down the COD to a core corpus
of high-quality structures to use for force field training. It's been
proving fruitful ground for finding new edge cases where
`estimate_net_charge` gets the wrong answer... while some are damn near
impossible to infer from the model alone, quite a few are salvageable (and
the nice thing is, most entries come with `_chemical_formula_iupac` and
`_chemical_formula_moiety` entries which provide ground truth net charges
(well... most of them, anyway - people always find ways to mangle things).
For now I've been having Claude work on an expanded set of
charge-assignment rules to catch as much as possible, and fall back to the
ground-truth values when all else fails... if you're interested, I could
share that code - or just a set of example cases.

On Tue, Aug 4, 2026 at 10:02 AM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
wrote:

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

comment:2 by Eric Pettersen, 3 weeks ago

Component: UnassignedStructure Analysis
Owner: set to Eric Pettersen
Platform: all
Project: ChimeraX
Status: newaccepted
Summary: ChimeraX bug report submissionBad IDATM typing

comment:3 by Tristan Croll, 3 weeks ago

Another case that fits under the same heading: as far as I can tell,
there's currently no way to open a phenolate from any coordinate file that
will yield correct atom typing - the O- gets perceived as O2, which breaks
kekulization around the aromatic ring leaving all the carbons as C2.

On Tue, Aug 4, 2026 at 5:15 PM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
wrote:

>
>
>

comment:4 by Tristan Croll, 3 weeks ago

... and another interesting case. When this molecule is saved to .cxs and
repeatedly restored, the N6 atom sometimes comes back as Npl and sometimes
as N2.

On Thu, Aug 6, 2026 at 3:55 PM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
wrote:

>
>
>
>

252640398.mol2

by Tristan Croll, 3 weeks ago

Attachment: 252640398.mol2 added

Added by email2trac

comment:5 by Eric Pettersen, 2 weeks ago

Hi Tristan,

I have committed a fix for the COD 2214833 issue. For charge-estimation problems, I would prefer examples -- I'd rather fix my own code than try to maintain Claude's.
My simple test of a phenol worked fine -- the oxygen was typed as O3. Is the ring-oxygen bond length exceptionally short in the cases you're trying? I'm attaching the file I used that worked.
I'll look into the on again / off again N6 atom issue soon.

--Eric

by Eric Pettersen, 2 weeks ago

Attachment: phenolate.mol2 added

typing works

comment:6 by Tristan Croll, 2 weeks ago

First up: a *mea culpa* on the phenolate point. Turns out it's limited to
cases where a larger molecule has a phenolate *group. *Two cases at the
bottom of the attached .cxs (both QM-minimised from the SPICE dataset - in
both cases the C-O bond length ends up a bit below your single/double
cutoff.

Apart from the SPICE group, the rest of the .cxs is example cases from COD
entries, with ASUs symmetry-completed out to whole molecules and each
residue given a `net_charge` property matching the charge declared for the
matching formula in the .cif's _chemical_formula_moiety entry (as a
built-in double-check, crystals that come out to an overall non-zero net
charge in the unit cell are excluded).

On Tue, Aug 11, 2026 at 1:40 AM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
wrote:

>
>
>

estimate_net_charge_failures.cxs

estimate_net_charge_failures_README.md

by Tristan Croll, 2 weeks ago

Added by email2trac

by Tristan Croll, 2 weeks ago

Added by email2trac

Note: See TracTickets for help on using tickets.