Opened 5 months ago

Closed 5 months ago

Last modified 5 months ago

#17890 closed defect (fixed)

Foldseek: index is out of bounds

Reported by: michelle.christie@… Owned by: Tom Goddard
Priority: normal Milestone:
Component: Structure Comparison Version:
Keywords: Cc:
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        macOS-13.6-arm64-arm-64bit
ChimeraX Version: 1.10rc202505310246 (2025-05-31 02:46:39 UTC)
Description
This happens with certain PDB's on the similarity search. 

Log:
UCSF ChimeraX version: 1.10rc202505310246 (2025-05-31)  
© 2016-2025 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open 8g33 fromDatabase pdb format mmcif

8g33 title:  
Activated form of a CDCL long protein [more info...]  
  
Chain information for 8g33 #1  
---  
Chain | Description | UniProt  
A | Hemolysin | A0A1T3IZT7_9FLAO 24-516  
  

> ui tool show "Similar Structures"

> foldseek /A

Found 49 similar structures to 8g33 #1/A in pdb database using foldseek, name
fs1  

> foldseek /A database afdb50

Found 1000 similar structures to 8g33 #1/A in afdb database using foldseek,
name fs2  

> close #1

> open 7n52 fromDatabase pdb format mmcif

Summary of feedback from opening 7n52 fetched from pdb  
---  
note | Fetching compressed mmCIF 7n52 from http://files.rcsb.org/download/7n52.cif  
  
7n52 title:  
Structure of a bacterial gasdermin from Runella zeae [more info...]  
  
Chain information for 7n52 #1  
---  
Chain | Description  
A B C D | Gasdermin  
  
7n52 mmCIF Assemblies  
---  
1| author_defined_assembly  
2| author_defined_assembly  
3| author_defined_assembly  
4| author_defined_assembly  
  

> foldseek /A database afdb50

Found 1000 similar structures to 7n52 #1/A in afdb database using foldseek,
name fs1  
Traceback (most recent call last):  
File
"/Applications/ChimeraX-1.10-rc2025.06.03.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/core/triggerset.py", line 149, in invoke  
return self._func(self._name, data)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File
"/Applications/ChimeraX-1.10-rc2025.06.03.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/similarstructures/foldseek_search.py", line 215, in <lambda>  
lambda *args, q=result_queue: self._check_for_results_from_thread(q))  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File
"/Applications/ChimeraX-1.10-rc2025.06.03.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/similarstructures/foldseek_search.py", line 238, in
_check_for_results_from_thread  
self.report_results(r)  
File
"/Applications/ChimeraX-1.10-rc2025.06.03.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/similarstructures/foldseek_search.py", line 94, in
report_results  
show_similar_structures_table(self.session, results)  
File
"/Applications/ChimeraX-1.10-rc2025.06.03.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/similarstructures/gui.py", line 497, in
show_similar_structures_table  
ssp.show_results(results)  
File
"/Applications/ChimeraX-1.10-rc2025.06.03.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/similarstructures/gui.py", line 261, in show_results  
results.compute_rmsds(self.alignment_cutoff_distance)  
File
"/Applications/ChimeraX-1.10-rc2025.06.03.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/similarstructures/simstruct.py", line 206, in compute_rmsds  
p, rms, npairs = align_xyz_transform(hxyz[hi], query_xyz[qi],  
~~~~~~~~~^^^^  
IndexError: index 249 is out of bounds for axis 0 with size 249  
  
Error processing trigger "new frame":  
IndexError: index 249 is out of bounds for axis 0 with size 249  
  
File
"/Applications/ChimeraX-1.10-rc2025.06.03.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/similarstructures/simstruct.py", line 206, in compute_rmsds  
p, rms, npairs = align_xyz_transform(hxyz[hi], query_xyz[qi],  
~~~~~~~~~^^^^  
  
See log for complete Python traceback.  
  




OpenGL version: 4.1 Metal - 83.1
OpenGL renderer: Apple M1 Max
OpenGL vendor: Apple

Python: 3.11.4
Locale: UTF-8
Qt version: PyQt6 6.8.1, Qt 6.8.2
Qt runtime version: 6.8.2
Qt platform: cocoa
Hardware:

    Hardware Overview:

      Model Name: Mac Studio
      Model Identifier: Mac13,1
      Model Number: Z14J0006UX/A
      Chip: Apple M1 Max
      Total Number of Cores: 10 (8 performance and 2 efficiency)
      Memory: 32 GB
      System Firmware Version: 10151.1.1
      OS Loader Version: 8422.141.2

Software:

    System Software Overview:

      System Version: macOS 13.6 (22G120)
      Kernel Version: Darwin 22.6.0
      Time since boot: 14 days, 11 hours, 23 minutes

Graphics/Displays:

    Apple M1 Max:

      Chipset Model: Apple M1 Max
      Type: GPU
      Bus: Built-In
      Total Number of Cores: 24
      Vendor: Apple (0x106b)
      Metal Support: Metal 3
      Displays:
        PHL 273B9:
          Resolution: 1920 x 1080 (1080p FHD - Full High Definition)
          UI Looks like: 1920 x 1080 @ 75.00Hz
          Main Display: Yes
          Mirror: Off
          Online: Yes
          Rotation: Supported


Installed Packages:
    alabaster: 1.0.0
    appdirs: 1.4.4
    appnope: 0.1.4
    asttokens: 3.0.0
    auditwheel: 6.4.0
    babel: 2.17.0
    beautifulsoup4: 4.13.3
    blockdiag: 3.0.0
    blosc2: 3.3.4
    build: 1.2.2.post1
    certifi: 2023.11.17
    cftime: 1.6.4.post1
    charset-normalizer: 3.4.2
    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.4
    ChimeraX-Arrays: 1.1
    ChimeraX-Atomic: 1.60.7
    ChimeraX-AtomicLibrary: 14.1.18
    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.5.1
    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.5
    ChimeraX-ChemGroup: 2.0.2
    ChimeraX-Clashes: 2.3
    ChimeraX-ColorActions: 1.0.5
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.8
    ChimeraX-CommandLine: 1.3
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0.1
    ChimeraX-Core: 1.10rc202505310246
    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-ItemsInspection: 1.0.1
    ChimeraX-IUPAC: 1.0
    ChimeraX-KVFinder: 1.6.2
    ChimeraX-Label: 1.1.14
    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.10
    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.2
    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.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-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.5
    ChimeraX-Zone: 1.0.1
    colorama: 0.4.6
    comm: 0.2.2
    contourpy: 1.3.2
    coverage: 7.8.2
    cxservices: 1.2.3
    cycler: 0.12.1
    Cython: 3.0.12
    debugpy: 1.8.14
    decorator: 5.2.1
    docutils: 0.21.2
    executing: 2.2.0
    filelock: 3.18.0
    fonttools: 4.58.1
    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.7
    jedi: 0.19.1
    Jinja2: 3.1.6
    jupyter_client: 8.6.3
    jupyter_core: 5.8.1
    jupyterlab_widgets: 3.0.15
    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.10.0
    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.2.0
    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.8
    pluggy: 1.6.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-commercial: 6.8.1
    PyQt6-Qt6: 6.8.2
    PyQt6-WebEngine-commercial: 6.8.0
    PyQt6-WebEngine-Qt6: 6.8.2
    PyQt6_sip: 13.10.0
    pytest: 8.4.0
    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
    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: 3.0.1
    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.5.1
    traitlets: 5.14.3
    typing_extensions: 4.14.0
    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 (5)

comment:1 by pett, 5 months ago

Component: UnassignedStructure Comparison
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionFoldseek: index is out of bounds

comment:2 by Tom Goddard, 5 months ago

This error is because the P1L residue in 7n52 used to be ignored by Foldseek as an unknown non-standard residue but newer Foldseek does not ignore it. ChimeraX had a table of the residue Foldseek ignored which is now incorrect.

It appears that the Foldseek server was updated to use a newer Foldseek which includes this code change from Nov 28, 2024 that changes the Foldseek's treatment of non-standard amino acids:

https://github.com/steineggerlab/foldseek/commit/b43e63d7a0b5a0d5efec68bdc80d6bf75d70b364#diff-7439cb9223589a676dcecf46f13b18f061310b1b79f36def6094a356cbfa7241

My reading of this change is that while before Foldseek excluded from the sequence and search any amino acids not recognized by GemmiWrapper. GemmiWrapper had a list of 69 3-letter residue codes it accepted. ChimeraX used that list to interpret the sequence alignments returned by foldseek. After the above change all amino acid residues are used if they are part of atom or hetatm records and are either polymer or unknown entity types. I suspect this means all amino acids in the query will be used now. I'm not sure because I don't know how the Gemmi library determines entity type.

comment:3 by Tom Goddard, 5 months ago

Here is the Foldseek github issue which led to this change

https://github.com/steineggerlab/foldseek/issues/387

comment:4 by Tom Goddard, 5 months ago

Resolution: fixed
Status: assignedclosed

Fixed.

I updated ChimeraX to assume new Foldseek server results include all amino acids. Also made it still handle old saved foldseek results (ChimeraX .sms files) with the former exclusion of unknown non-standard residues. What a mess.

comment:5 by michelle.christie@…, 5 months ago

Thank you. I appreciate the effort.

Kind regards
Michelle


\ufeffOn 5/6/2025, 9:39 am, "ChimeraX" <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote:

    External email: Please exercise caution
    
    #17890: Foldseek: index is out of bounds
    -------------------------------------------+-------------------------
              Reporter:  michelle.christie@\u2026   |      Owner:  Tom Goddard
                  Type:  defect                |     Status:  closed
              Priority:  normal                |  Milestone:
             Component:  Structure Comparison  |    Version:
            Resolution:  fixed                 |   Keywords:
            Blocked By:                        |   Blocking:
    Notify when closed:                        |   Platform:  all
               Project:  ChimeraX              |
    -------------------------------------------+-------------------------
    Changes (by Tom Goddard):
    
     * resolution:   => fixed
     * status:  assigned => closed
    
    Comment:
    
     Fixed.
    
     I updated ChimeraX to assume new Foldseek server results include all amino
     acids.  Also made it still handle old saved foldseek results (ChimeraX
     .sms files) with the former exclusion of unknown non-standard residues.
     What a mess.
    -- 
    Ticket URL: <https://www.rbvi.ucsf.edu/trac/ChimeraX/ticket/17890#comment:4>
    ChimeraX <https://www.rbvi.ucsf.edu/chimerax>
    ChimeraX Issue Tracker
    
Note: See TracTickets for help on using tickets.