Opened 4 months ago

Closed 4 months ago

#18035 closed defect (fixed)

PAE matrix mismatch

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

Description

The following bug report has been submitted:
Platform:        Linux-6.8.0-59-generic-x86_64-with-glibc2.35
ChimeraX Version: 1.10.dev202504300222 (2025-04-30 02:22:20 UTC)
Description
Structure was predicted with multiple phospho-Ser/Thr residues... I'm guessing those are still treated as one token per residue rather than per atom?

Log:
> 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.10.dev202504300222 (2025-04-30)  
© 2016-2025 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open USP16_pan_phospho_model_0.cif

USP16_pan_phospho_model_0.cif title:  
. [more info...]  
  
Chain information for USP16_pan_phospho_model_0.cif #1  
---  
Chain | Description  
A | .  
  
Non-standard residues in USP16_pan_phospho_model_0.cif #1  
---  
ZN — (ZN)  
  

No chain in structure corresponds to chain ID given in local score info (chain
'B')  

Computing secondary structure  

> open USP16_pan_phospho_model_1.cif

USP16_pan_phospho_model_1.cif title:  
. [more info...]  
  
Chain information for USP16_pan_phospho_model_1.cif #2  
---  
Chain | Description  
A | .  
  
Non-standard residues in USP16_pan_phospho_model_1.cif #2  
---  
ZN — (ZN)  
  

No chain in structure corresponds to chain ID given in local score info (chain
'B')  

> open USP16_pan_phospho_model_2.cif

USP16_pan_phospho_model_2.cif title:  
. [more info...]  
  
Chain information for USP16_pan_phospho_model_2.cif #3  
---  
Chain | Description  
A | .  
  
Non-standard residues in USP16_pan_phospho_model_2.cif #3  
---  
ZN — (ZN)  
  

No chain in structure corresponds to chain ID given in local score info (chain
'B')  

> open USP16_pan_phospho_model_3.cif

USP16_pan_phospho_model_3.cif title:  
. [more info...]  
  
Chain information for USP16_pan_phospho_model_3.cif #4  
---  
Chain | Description  
A | .  
  
Non-standard residues in USP16_pan_phospho_model_3.cif #4  
---  
ZN — (ZN)  
  

No chain in structure corresponds to chain ID given in local score info (chain
'B')  

> open USP16_pan_phospho_model_4.cif

USP16_pan_phospho_model_4.cif title:  
. [more info...]  
  
Chain information for USP16_pan_phospho_model_4.cif #5  
---  
Chain | Description  
A | .  
  
Non-standard residues in USP16_pan_phospho_model_4.cif #5  
---  
ZN — (ZN)  
  

No chain in structure corresponds to chain ID given in local score info (chain
'B')  

Computing secondary structure  
[Repeated 3 time(s)]

> matchmaker #2-5 to #1

Parameters  
---  
Chain pairing | bb  
Alignment algorithm | Needleman-Wunsch  
Similarity matrix | BLOSUM-62  
SS fraction | 0.3  
Gap open (HH/SS/other) | 18/18/6  
Gap extend | 1  
SS matrix |  |  | H | S | O  
---|---|---|---  
H | 6 | -9 | -6  
S |  | 6 | -6  
O |  |  | 4  
Iteration cutoff | 2  
  
Matchmaker USP16_pan_phospho_model_0.cif, chain A (#1) with
USP16_pan_phospho_model_1.cif, chain A (#2), sequence alignment score = 4067.4  
RMSD between 384 pruned atom pairs is 0.742 angstroms; (across all 823 pairs:
37.205)  
  
Matchmaker USP16_pan_phospho_model_0.cif, chain A (#1) with
USP16_pan_phospho_model_2.cif, chain A (#3), sequence alignment score = 3855.3  
RMSD between 379 pruned atom pairs is 0.733 angstroms; (across all 823 pairs:
17.959)  
  
Matchmaker USP16_pan_phospho_model_0.cif, chain A (#1) with
USP16_pan_phospho_model_3.cif, chain A (#4), sequence alignment score = 3900  
RMSD between 335 pruned atom pairs is 0.628 angstroms; (across all 823 pairs:
30.996)  
  
Matchmaker USP16_pan_phospho_model_0.cif, chain A (#1) with
USP16_pan_phospho_model_4.cif, chain A (#5), sequence alignment score = 3889.5  
RMSD between 327 pruned atom pairs is 0.649 angstroms; (across all 823 pairs:
28.740)  
  

> hide #2 models

> hide #3 models

> hide #4 models

> hide #5 models

> show :SEP,TPO

> clipper init

> cofr centerOfView showPivot true

> camera ortho

> lighting simple

> rainbow

> color byhetero

> ui tool show "AlphaFold Error Plot"

> alphafold pae #1 file
> /media/tcroll/DATA/structure_dump/dublin/boltz1/usp16_phospho/predictions/USP16_pan_phospho/pae_USP16_pan_phospho_model_0.npz

Structure USP16_pan_phospho_model_0.cif #1 does not match PAE matrix size
827.The structure has 812 polymer residues and 116 non-polymer atoms  
  
This can happen if chains or atoms were deleted from the AlphaFold model or if
the PAE data was applied to a structure that was not the one predicted by
AlphaFold. Use the full-length AlphaFold model to show predicted aligned
error.  




OpenGL version: 3.3.0 NVIDIA 535.230.02
OpenGL renderer: NVIDIA GeForce RTX 3070/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation

Python: 3.11.4
Locale: en_GB.UTF-8
Qt version: PyQt6 6.8.1, Qt 6.8.2
Qt runtime version: 6.8.2
Qt platform: xcb

XDG_SESSION_TYPE=x11
DESKTOP_SESSION=ubuntu
XDG_SESSION_DESKTOP=ubuntu
XDG_CURRENT_DESKTOP=ubuntu:GNOME
DISPLAY=:1
Manufacturer: Dell Inc.
Model: XPS 8950
OS: Ubuntu 22.04
Architecture: 64bit ELF
Virtual Machine: none
CPU: 20 12th Gen Intel(R) Core(TM) i7-12700
Cache Size: 25600 KB
Memory:
	               total        used        free      shared  buff/cache   available
	Mem:            31Gi        20Gi       1.7Gi       637Mi       8.8Gi       9.4Gi
	Swap:          2.0Gi       2.0Gi       1.0Mi

Graphics:
	0000:01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA104 [GeForce RTX 3070 Lite Hash Rate] [10de:2488] (rev a1)	
	Subsystem: Dell GA104 [GeForce RTX 3070 Lite Hash Rate] [1028:c903]	
	Kernel driver in use: nvidia

Installed Packages:
    alabaster: 1.0.0
    appdirs: 1.4.4
    asttokens: 3.0.0
    auditwheel: 6.3.0
    babel: 2.17.0
    beautifulsoup4: 4.13.3
    blockdiag: 3.0.0
    blosc2: 3.3.1
    build: 1.2.2.post1
    certifi: 2025.4.26
    cftime: 1.6.4.post1
    charset-normalizer: 3.4.1
    ChimeraX-AddCharge: 1.5.18
    ChimeraX-AddH: 2.2.7
    ChimeraX-AlignmentAlgorithms: 2.0.2
    ChimeraX-AlignmentHdrs: 3.6.1
    ChimeraX-AlignmentMatrices: 2.1
    ChimeraX-Alignments: 2.20.1
    ChimeraX-AlphaFold: 1.0.1
    ChimeraX-AltlocExplorer: 1.1.2
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Aniso: 1.1.3
    ChimeraX-Arrays: 1.1
    ChimeraX-Atomic: 1.60.5
    ChimeraX-AtomicLibrary: 14.1.17
    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.0
    ChimeraX-BondRot: 2.0.4
    ChimeraX-BugReporter: 1.0.2
    ChimeraX-BuildStructure: 2.13.1
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.4.0
    ChimeraX-ButtonPanel: 1.0.1
    ChimeraX-CageBuilder: 1.0.1
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.4
    ChimeraX-ChangeChains: 1.1
    ChimeraX-CheckWaters: 1.4
    ChimeraX-ChemGroup: 2.0.2
    ChimeraX-Clashes: 2.3
    ChimeraX-Clipper: 0.25.0
    ChimeraX-ColorActions: 1.0.5
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.8
    ChimeraX-CommandLine: 1.2.6
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0.1
    ChimeraX-Core: 1.10.dev202504300222
    ChimeraX-CoreFormats: 1.2
    ChimeraX-coulombic: 1.4.5
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0.1
    ChimeraX-DataFormats: 1.2.4
    ChimeraX-Dicom: 1.2.7
    ChimeraX-DistMonitor: 1.4.2
    ChimeraX-DockPrep: 1.1.4
    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.1
    ChimeraX-Help: 1.3
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.1
    ChimeraX-ImageFormats: 1.2
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.3
    ChimeraX-ISOLDE: 1.10rc0
    ChimeraX-ItemsInspection: 1.0.1
    ChimeraX-IUPAC: 1.0
    ChimeraX-KVFinder: 1.6.1
    ChimeraX-Label: 1.1.14
    ChimeraX-LinuxSupport: 1.0.1
    ChimeraX-ListInfo: 1.2.2
    ChimeraX-Log: 1.2
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.9.1
    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-MatchMaker: 2.2.1
    ChimeraX-MCopy: 1.0
    ChimeraX-MDcrds: 2.10.1
    ChimeraX-MedicalToolbar: 1.1
    ChimeraX-Meeting: 1.0.1
    ChimeraX-MLP: 1.1.1
    ChimeraX-mmCIF: 2.16
    ChimeraX-MMTF: 2.2
    ChimeraX-ModelArchive: 1.0
    ChimeraX-Modeller: 1.5.19
    ChimeraX-ModelPanel: 1.5.1
    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-MutationScores: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nifti: 1.2
    ChimeraX-NMRSTAR: 1.0.2
    ChimeraX-NRRD: 1.2
    ChimeraX-Nucleotides: 2.0.3
    ChimeraX-OpenCommand: 1.14.1
    ChimeraX-OrthoPick: 1.0.1
    ChimeraX-PDB: 2.7.9
    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.3
    ChimeraX-ProfileGrids: 1.1.1
    ChimeraX-PubChem: 2.2
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1.2
    ChimeraX-RemoteControl: 1.0
    ChimeraX-RenderByAttr: 1.6.3
    ChimeraX-RenumberResidues: 1.1
    ChimeraX-ResidueFit: 1.0.1
    ChimeraX-RestServer: 1.3.1
    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.3
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0.1
    ChimeraX-Segmentations: 3.5.7
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.17.1
    ChimeraX-Shape: 1.1
    ChimeraX-Shell: 1.0.1
    ChimeraX-Shortcuts: 1.2.0
    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-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.19.1
    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.2
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-TaskManager: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.2.3
    ChimeraX-ToolshedUtils: 1.2.4
    ChimeraX-Topography: 1.0
    ChimeraX-ToQuest: 1.0
    ChimeraX-Tug: 1.0.1
    ChimeraX-UI: 1.45.1
    ChimeraX-Umap: 1.0
    ChimeraX-uniprot: 2.3.1
    ChimeraX-UnitCell: 1.0.1
    ChimeraX-ViewDockX: 1.4.4
    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.4
    ChimeraX-Zone: 1.0.1
    colorama: 0.4.6
    comm: 0.2.2
    contourpy: 1.3.2
    coverage: 7.8.0
    cxservices: 1.2.3
    cycler: 0.12.1
    Cython: 3.0.12
    debugpy: 1.8.14
    decorator: 5.2.1
    distro: 1.9.0
    docutils: 0.21.2
    executing: 2.2.0
    filelock: 3.18.0
    fonttools: 4.57.0
    funcparserlib: 2.0.0a0
    glfw: 2.9.0
    grako: 3.16.5
    h5py: 3.13.0
    html2text: 2024.2.26
    idna: 3.10
    ihm: 2.2
    imagecodecs: 2024.6.1
    imagesize: 1.4.1
    iniconfig: 2.1.0
    ipykernel: 6.29.5
    ipython: 8.26.0
    ipywidgets: 8.1.6
    jedi: 0.19.1
    Jinja2: 3.1.6
    jupyter_client: 8.6.3
    jupyter_core: 5.7.2
    jupyterlab_widgets: 3.0.14
    kiwisolver: 1.4.8
    line_profiler: 4.2.0
    lxml: 5.3.1
    lz4: 4.4.4
    MarkupSafe: 3.0.2
    matplotlib: 3.10.1
    matplotlib-inline: 0.1.7
    msgpack: 1.1.0
    ndindex: 1.9.2
    nest-asyncio: 1.6.0
    netCDF4: 1.6.5
    networkx: 3.3
    nibabel: 5.2.0
    nptyping: 2.5.0
    numexpr: 2.10.2
    numpy: 1.26.4
    OpenMM: 8.1.1
    OpenMM: 8.2.0
    openmm-cuda: 8.1.1.11.8
    openvr: 1.26.701
    packaging: 24.2
    ParmEd: 4.2.2
    parso: 0.8.4
    pep517: 0.13.1
    pexpect: 4.9.0
    pickleshare: 0.7.5
    pillow: 10.4.0
    pip: 25.0.1
    pkginfo: 1.11.1
    platformdirs: 4.3.7
    pluggy: 1.5.0
    prompt_toolkit: 3.0.51
    psutil: 7.0.0
    ptyprocess: 0.7.0
    pure_eval: 0.2.3
    py-cpuinfo: 9.0.0
    pycollada: 0.8
    pydicom: 2.4.4
    pyelftools: 0.32
    Pygments: 2.18.0
    pynmrstar: 3.3.5
    pynrrd: 1.0.0
    PyOpenGL: 3.1.9
    PyOpenGL-accelerate: 3.1.9
    pyopenxr: 1.1.4501
    pyparsing: 3.2.3
    pyproject_hooks: 1.2.0
    PyQt6: 6.8.1
    PyQt6-Qt6: 6.8.2
    PyQt6-WebEngine: 6.8.0
    PyQt6-WebEngine-Qt6: 6.8.2
    PyQt6_sip: 13.10.0
    pytest: 8.3.5
    pytest-cov: 6.1.1
    python-dateutil: 2.9.0.post0
    pytz: 2025.2
    pyzmq: 26.4.0
    qtconsole: 5.5.2
    QtPy: 2.4.3
    qtshim: 1.1
    RandomWords: 0.4.0
    rdkit: 2025.3.2
    requests: 2.32.3
    roman-numerals-py: 3.1.0
    scipy: 1.14.0
    setuptools: 78.1.0
    sfftk-rw: 0.8.1
    six: 1.16.0
    snowballstemmer: 2.2.0
    sortedcontainers: 2.4.0
    soupsieve: 2.7
    Sphinx: 8.2.3
    sphinx-autodoc-typehints: 3.1.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
    stack-data: 0.6.3
    superqt: 0.7.1
    tables: 3.10.2
    tcia_utils: 1.5.1
    tifffile: 2025.3.13
    tinyarray: 1.2.4
    tornado: 6.4.2
    traitlets: 5.14.3
    typing_extensions: 4.13.2
    tzdata: 2025.2
    urllib3: 2.4.0
    wcwidth: 0.2.13
    webcolors: 24.11.1
    wheel: 0.45.1
    wheel-filename: 1.4.2
    widgetsnbextension: 4.0.14

Change History (8)

comment:1 by pett, 4 months ago

Component: UnassignedStructure Prediction
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionPAE matrix mismatch

comment:2 by Tom Goddard, 4 months ago

Can you attach the prediction and PAE file? My understanding was that any modified residues have per-atom pae.

comment:3 by Tristan Croll, 4 months ago

I can’t attach *that* one, but I’ll make up a test case on Monday. If you
want something earlier, it was just protein + a handful of ZN, with about
half a dozen SER/THR modified to SEP or TPO respectively.

On Fri, 20 Jun 2025 at 18:27, ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
wrote:

>
>

comment:4 by Tom Goddard, 4 months ago

I tried AlphaFold 3 with a phosphoserine (using sequence of pdb 8rf4) and PAE worked fine.

But it looks like you used Boltz-1 for your prediction since boltz1 is in the directory name. I'll have to run a Boltz-1 test to see if it uses different conventions for residue and atom PAE.

comment:5 by Tom Goddard, 4 months ago

I tried boltz-2 with a phosphoserine (using sequence of pdb 8rf4) and I get the same kind of error trying to show PAE in ChimeraX that you report suggesting Boltz uses per-residue PAE for modified residues which differs from AlphaFold 3 which uses per-atom PAE for modified residues. Not sure how I will recognize this as a Boltz prediction since the mmCIF prediction does not include any metadata saying it came from Boltz and the PAE .npz file also is just a 2D array with no info about which residues or atoms the indices correspond to. Chai-1 also uses numpy files for PAE. Also don't know if it differs from AlphaFold 3 in whether atom or residue level PAE values are computed.

comment:6 by Tom Goddard, 4 months ago

Maybe the best solution is that if the PAE matrix size does not match what is expected for AF3 then we see if it matches the Boltz expected size and if so use that.

comment:7 by Tom Goddard, 4 months ago

I have a Boltz prediction interface in ChimeraX. But so far I have not added the ability to specify modified residues so this bug has not come up from Boltz predictions run within ChimeraX. I'll definitely need to fix it if I add support for modified residues in the ChimeraX Boltz command and GUI.

comment:8 by Tom Goddard, 4 months ago

Resolution: fixed
Status: assignedclosed

Fixed in daily build, not in 1.10.

I made the PAE code guess if the file is from Boltz as follows. If the file ends with .npz and the expected matrix size is too small using AlphaFold 3 PAE conventions the we check if using Boltz PAE conventions where modified residues have a single PAE matrix row matches the matrix size. If it does then the code assumes Boltz conventions.

Note: See TracTickets for help on using tickets.