Opened 4 weeks ago

Last modified 4 weeks ago

#19283 assigned defect

MemoryError processing surface

Reported by: chimerax-bug-report@… Owned by: Tom Goddard
Priority: normal Milestone:
Component: Graphics Version:
Keywords: Cc: Eric Pettersen
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Windows-10-10.0.26100
ChimeraX Version: 1.10.1 (2025-07-24 20:15:27 UTC)
Description
Replace this text with list of actions that caused this problem to occur

Log:
UCSF ChimeraX version: 1.10.1 (2025-07-24)  
© 2016-2025 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open "F:\\\PBMC SELEX\\\Results\\\MD
> simulation\\\apt5-CD35\\\apt5complex.pdb"

Summary of feedback from opening F:\\\PBMC SELEX\\\Results\\\MD
simulation\\\apt5-CD35\\\apt5complex.pdb  
---  
warnings | Ignored bad PDB record found on line 1  
REMARK Number: 3  
  
Ignored bad PDB record found on line 2  
REMARK Ligand: lig_68fc9bea19dfb.pdb  
  
Ignored bad PDB record found on line 3  
REMARK Contact: 0 0 0  
  
Ignored bad PDB record found on line 4  
REMARK Score: -289.02  
  
Ignored bad PDB record found on line 5  
REMARK RMSD: 135.73  
  
Chain information for apt5complex.pdb #1  
---  
Chain | Description  
? | No description available  
A | No description available  
  
Computing secondary structure  

> set bgColor white

> nucleotides fill

> style nucleic stick

Changed 1973 atom styles  

> nucleotides stubs

> nucleotides fill

> style nucleic stick

Changed 1973 atom styles  

> select /A

14975 atoms, 15427 bonds, 1945 residues, 1 model selected  

> coulombic sel

Using Amber 20 recommended default charges and atom types for standard
residues  
Coulombic values for apt5complex.pdb_A SES surface #1.1: minimum, -21.82, mean
-1.68, maximum 10.96  
To also show corresponding color key, enter the above coulombic command and
add key true  

> coulombic sel

Coulombic values for apt5complex.pdb_A SES surface #1.1: minimum, -21.82, mean
-1.68, maximum 10.96  
To also show corresponding color key, enter the above coulombic command and
add key true  

> coulombic sel

Coulombic values for apt5complex.pdb_A SES surface #1.1: minimum, -21.82, mean
-1.68, maximum 10.96  
To also show corresponding color key, enter the above coulombic command and
add key true  

> select add #1

16948 atoms, 17637 bonds, 2041 residues, 2 models selected  

> select subtract #1

1 model selected  

> select add #1

16948 atoms, 17637 bonds, 2041 residues, 2 models selected  

> hide #!1 models

> show #!1 models

Traceback (most recent call last):  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\chimerax\core\triggerset.py",
line 149, in invoke  
return self._func(self._name, data)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\chimerax\model_panel\tool.py",
line 214, in <lambda>  
lambda *args, ft=self._fill_tree, ar=always_rebuild: ft(always_rebuild=ar))  
^^^^^^^^^^^^^^^^^^^^^  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\chimerax\model_panel\tool.py",
line 255, in _fill_tree  
self._get_info(model, all_selected_models, part_selected_models)  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\chimerax\model_panel\tool.py",
line 356, in _get_info  
bg_color = self._model_color(obj)  
^^^^^^^^^^^^^^^^^^^^^^  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\chimerax\model_panel\tool.py",
line 401, in _model_color  
return model.overall_color  
^^^^^^^^^^^^^^^^^^^  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\chimerax\atomic\molsurf.py",
line 404, in _get_overall_color  
return self.color if vc is None or len(vc) == 0 else most_common_color(vc)  
^^^^^^^^^^^^^^^^^^^^^  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\chimerax\core\colors.py", line
825, in most_common_color  
unique, indices, counts = unique(as32, return_index=True, return_counts=True)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\numpy\lib\arraysetops.py", line
274, in unique  
ret = _unique1d(ar, return_index, return_inverse, return_counts,  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\numpy\lib\arraysetops.py", line
333, in _unique1d  
perm = ar.argsort(kind='mergesort' if return_index else 'quicksort')  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
MemoryError  
  
Error processing trigger "new frame":  
MemoryError  
  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\numpy\lib\arraysetops.py", line
333, in _unique1d  
perm = ar.argsort(kind='mergesort' if return_index else 'quicksort')  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
  
See log for complete Python traceback.  
  
An error occurred in drawing the scene. Redrawing graphics is now stopped to
avoid a continuous stream of error messages. To restart graphics use the
command "graphics restart" after changing the settings that caused the error.  
  
Unable to allocate 9.07 MiB for an array with shape (792276, 3) and data type
int32  
  
Traceback (most recent call last):  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\chimerax\core\updateloop.py",
line 84, in draw_new_frame  
view.draw(check_for_changes = False)  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\chimerax\graphics\view.py",
line 188, in draw  
self._draw_scene(camera, drawings)  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\chimerax\graphics\view.py",
line 259, in _draw_scene  
draw_opaque(r, opaque_drawings)  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\chimerax\graphics\drawing.py",
line 1559, in draw_opaque  
_draw_multiple(drawings, renderer, Drawing.OPAQUE_DRAW_PASS)  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\chimerax\graphics\drawing.py",
line 1572, in _draw_multiple  
d.draw(renderer, draw_pass)  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\chimerax\graphics\drawing.py",
line 784, in draw  
self.draw_self(renderer, draw_pass)  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\chimerax\graphics\drawing.py",
line 791, in draw_self  
self._draw_geometry(renderer, opaque_only = any_transp)  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\chimerax\graphics\drawing.py",
line 815, in _draw_geometry  
self._update_buffers()  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\chimerax\graphics\drawing.py",
line 942, in _update_buffers  
dss.update_element_buffer(ta, style, tmsel, em)  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\chimerax\graphics\drawing.py",
line 1788, in update_element_buffer  
e = self.masked_elements(triangles, style, triangle_mask, edge_mask)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File "D:\ChimeraX 1.10.1\bin\Lib\site-packages\chimerax\graphics\drawing.py",
line 1816, in masked_elements  
ta = ta[tmask, :]  
~~^^^^^^^^^^  
numpy.core._exceptions._ArrayMemoryError: Unable to allocate 9.07 MiB for an
array with shape (792276, 3) and data type int32  
  




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

Python: 3.11.4
Locale: zh_CN.cp936
Qt version: PyQt6 6.8.1, Qt 6.8.2
Qt runtime version: 6.8.2
Qt platform: windows

Installed Packages:
    alabaster: 1.0.0
    appdirs: 1.4.4
    asttokens: 3.0.0
    babel: 2.17.0
    beautifulsoup4: 4.13.3
    blockdiag: 3.0.0
    blosc2: 3.6.1
    build: 1.2.2.post1
    certifi: 2025.7.14
    cftime: 1.6.4.post1
    charset-normalizer: 3.4.2
    ChimeraX-AddCharge: 1.5.19
    ChimeraX-AddH: 2.2.7
    ChimeraX-AlignmentAlgorithms: 2.0.2
    ChimeraX-AlignmentHdrs: 3.6.1
    ChimeraX-AlignmentMatrices: 2.1
    ChimeraX-Alignments: 2.20.2
    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.19
    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.10.1
    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.2
    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.3
    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.2
    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
    comtypes: 1.4.10
    contourpy: 1.3.2
    coverage: 7.10.0
    cxservices: 1.2.3
    cycler: 0.12.1
    Cython: 3.0.12
    debugpy: 1.8.15
    decorator: 5.2.1
    docutils: 0.21.2
    executing: 2.2.0
    filelock: 3.18.0
    fonttools: 4.59.0
    funcparserlib: 2.0.0a0
    glfw: 2.9.0
    grako: 3.16.5
    h5py: 3.14.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.3.2
    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.11.0
    numpy: 1.26.4
    nvidia-nvjitlink-cu12: 12.9.86
    OpenMM: 8.2.0
    OpenMM-CUDA-12: 8.2.0
    openvr: 1.26.701
    packaging: 24.2
    ParmEd: 4.2.2
    parso: 0.8.4
    pep517: 0.13.1
    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
    pure_eval: 0.2.3
    py-cpuinfo: 9.0.0
    pycollada: 0.8
    pydicom: 2.4.4
    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.1
    pytest-cov: 6.2.1
    python-dateutil: 2.9.0.post0
    pytz: 2025.2
    pywin32: 310
    pyzmq: 27.0.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.1
    tzdata: 2025.2
    urllib3: 2.5.0
    wcwidth: 0.2.13
    webcolors: 24.11.1
    wheel: 0.45.1
    wheel-filename: 1.4.2
    widgetsnbextension: 4.0.14
    WMI: 1.5.1

Change History (6)

comment:1 by Eric Pettersen, 4 weeks ago

Cc: Eric Pettersen added
Component: UnassignedGraphics
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionMemoryError processing surface

It seems like an about 17K atom structure had a surface with 800K vertices? Does that seems right?

comment:2 by Tom Goddard, 4 weeks ago

Yes, 800,000 triangles is about right for 17000 atoms. For example, the solvent accessible surface area of 1a43 with ~17000 atoms is 50,000 square Angstroms. The surface calculation uses a grid spacing of 0.5 Angstroms, so about 8 triangles of 0.5 Angstrom edge length to cover 1 square Angstrom. But the method probably on average produces smaller triangles than that, say it needs twice as many so 16 triangles per square angstrom. Wala! 16 * 50,000 = 800,000.

The real mystery to me is why all the out of memory errors we get are on Windows. This one is trying to allocate just 9 Mbytes. Strangely the bug report does not include the amount of computer memory (I guess the query produced an error). Remember when we had some serious memory leak just opening atomic models on Windows? I'm not sure that was ever understood and fixed. With the modest size structures in this report I would not expect to run into memory problems unless the machine has just 4 GB.

comment:3 by Eric Pettersen, 4 weeks ago

The out-of-memory error when opening mmCIF files on Windows was indeed fixed by Greg several moons ago.

comment:4 by Tom Goddard, 4 weeks ago

This bug report only opens .pdb files. It is possible they have very little memory but seems unlikely with a relatively recent and somewhat expensive graphics card Nvidia 3070 Ti. Possibly there is something deficient about Windows memory management that causes all the out of memory errors to be on Windows.

comment:5 by Eric Pettersen, 4 weeks ago

Yeah, weird, normally you get a report of total system memory on all platforms, including Windows (e.g. #19281)

comment:6 by Tom Goddard, 4 weeks ago

I guess the call to get the system memory failed also due to insufficient memory.

Note: See TracTickets for help on using tickets.