Opened 10 months ago

Last modified 6 months ago

#16520 assigned defect

Ribbon: Array argument has non-numeric values

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

Description

The following bug report has been submitted:
Platform:        Windows-10-10.0.19045-SP0
ChimeraX Version: 1.10.dev202412210820 (2024-12-21 08:20:18 UTC)
Description
Replace this text with list of actions that caused this problem to occur

Log:
Startup Messages  
---  
note | available bundle cache has not been initialized yet  
  
UCSF ChimeraX version: 1.10.dev202412210820 (2024-12-21)  
© 2016-2024 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open "C:\Users\future\Downloads\AF-O43513-F1-model_v4 (1).pdb" format pdb

AF-O43513-F1-model_v4 (1).pdb title:  
Alphafold monomer V2.0 prediction for mediator of RNA polymerase II
transcription subunit 7 (O43513) [more info...]  
  
Chain information for AF-O43513-F1-model_v4 (1).pdb #1  
---  
Chain | Description | UniProt  
A | mediator of RNA polymerase II transcription subunit 7 | MED7_HUMAN 1-233  
  
Computing secondary structure  
Traceback (most recent call last):  
File "C:\Program Files\ChimeraX 1.10.dev202412210820\bin\Lib\site-
packages\chimerax\core\triggerset.py", line 149, in invoke  
return self._func(self._name, data)  
~~~~~~~~~~^^^^^^^^^^^^^^^^^^  
File "C:\Program Files\ChimeraX 1.10.dev202412210820\bin\Lib\site-
packages\chimerax\atomic\structure.py", line 1906, in
_update_graphics_if_needed  
s[i].update_graphics_if_needed()  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^  
File "C:\Program Files\ChimeraX 1.10.dev202412210820\bin\Lib\site-
packages\chimerax\atomic\structure.py", line 363, in update_graphics_if_needed  
self._create_ribbon_graphics()  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^  
File "C:\Program Files\ChimeraX 1.10.dev202412210820\bin\Lib\site-
packages\chimerax\atomic\structure.py", line 673, in _create_ribbon_graphics  
ribbons_drawing.compute_ribbons(self)  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^  
File "C:\Program Files\ChimeraX 1.10.dev202412210820\bin\Lib\site-
packages\chimerax\atomic\ribbon.py", line 630, in compute_ribbons  
_make_ribbon_graphics(structure, self)  
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^  
File "C:\Program Files\ChimeraX 1.10.dev202412210820\bin\Lib\site-
packages\chimerax\atomic\ribbon.py", line 180, in _make_ribbon_graphics  
_ribbon_geometry(path, display_ranges, len(residues), xs_front, xs_back,
geometry,  
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
radial_scale=radial_scale)  
^^^^^^^^^^^^^^^^^^^^^^^^^^  
File "C:\Program Files\ChimeraX 1.10.dev202412210820\bin\Lib\site-
packages\chimerax\atomic\ribbon.py", line 477, in _ribbon_geometry  
_ribbons.ribbon_extrusions(centers, tangents, normals, ranges,  
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
num_res, xsf, xsb, geometry._geom_cpp, **radial_scale_kw)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
TypeError: Array argument has non-numeric values  
  
Error processing trigger "graphics update":  
TypeError: Array argument has non-numeric values  
  
File "C:\Program Files\ChimeraX 1.10.dev202412210820\bin\Lib\site-
packages\chimerax\atomic\ribbon.py", line 477, in _ribbon_geometry  
_ribbons.ribbon_extrusions(centers, tangents, normals, ranges,  
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
num_res, xsf, xsb, geometry._geom_cpp, **radial_scale_kw)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
  
See log for complete Python traceback.  
  




OpenGL version: 3.3.0 - Build 23.20.16.4973
OpenGL renderer: Intel(R) HD Graphics 520
OpenGL vendor: Intel

Python: 3.13.1
Locale: ar_SA.cp1256
Qt version: PyQt6 6.7.1, Qt 6.7.1
Qt runtime version: 6.7.3
Qt platform: windows

Manufacturer: Dell Inc.
Model: Inspiron 15-3567
OS: Microsoft Windows 10 Pro (Build 19045)
Memory: 4,068,872,192
MaxProcessMemory: 137,438,953,344
CPU: 4 Intel(R) Core(TM) i3-6006U CPU @ 2.00GHz
OSLanguage: en-US

Installed Packages:
    alabaster: 1.0.0
    anyio: 4.7.0
    appdirs: 1.4.4
    asttokens: 3.0.0
    auditwheel: 6.1.0
    babel: 2.16.0
    beautifulsoup4: 4.12.3
    blockdiag: 3.0.0
    blosc2: 3.0.0
    build: 1.2.1
    certifi: 2024.12.14
    cftime: 1.6.4.post1
    charset-normalizer: 3.4.0
    ChimeraX-AddCharge: 1.5.18
    ChimeraX-AddH: 2.2.6
    ChimeraX-AlignmentAlgorithms: 2.0.2
    ChimeraX-AlignmentHdrs: 3.5
    ChimeraX-AlignmentMatrices: 2.1
    ChimeraX-Alignments: 2.16.2
    ChimeraX-AlphaFold: 1.0.1
    ChimeraX-AltlocExplorer: 1.1.2
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.1
    ChimeraX-Atomic: 1.59
    ChimeraX-AtomicLibrary: 14.1.11
    ChimeraX-AtomSearch: 2.0.1
    ChimeraX-AxesPlanes: 2.4
    ChimeraX-BasicActions: 1.1.2
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 3.0.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.1
    ChimeraX-Clashes: 2.3
    ChimeraX-ColorActions: 1.0.5
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.8
    ChimeraX-CommandLine: 1.2.5
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0.1
    ChimeraX-Core: 1.10.dev202412210820
    ChimeraX-CoreFormats: 1.2
    ChimeraX-coulombic: 1.4.4
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0.1
    ChimeraX-DataFormats: 1.2.3
    ChimeraX-Dicom: 1.2.7
    ChimeraX-DistMonitor: 1.4.2
    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.4.1
    ChimeraX-Hbonds: 2.5
    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.5.1
    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.1.6
    ChimeraX-MCopy: 1.0
    ChimeraX-MDcrds: 2.7.2
    ChimeraX-MedicalToolbar: 1.1
    ChimeraX-Meeting: 1.0.1
    ChimeraX-MLP: 1.1.1
    ChimeraX-mmCIF: 2.14.2
    ChimeraX-MMTF: 2.2
    ChimeraX-ModelArchive: 1.0
    ChimeraX-Modeller: 1.5.18
    ChimeraX-ModelPanel: 1.5
    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
    ChimeraX-OrthoPick: 1.0.1
    ChimeraX-PDB: 2.7.7
    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.2
    ChimeraX-ProfileGrids: 1.0
    ChimeraX-PubChem: 2.2
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1.2
    ChimeraX-RemoteControl: 1.0
    ChimeraX-RenderByAttr: 1.6.2
    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.2
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0.1
    ChimeraX-Segmentations: 3.5.7
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.15
    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.1
    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.42.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.4
    ChimeraX-Zone: 1.0.1
    colorama: 0.4.6
    comm: 0.2.2
    comtypes: 1.4.5
    contourpy: 1.3.1
    coverage: 7.6.9
    cxservices: 1.2.3
    cycler: 0.12.1
    Cython: 3.0.10
    debugpy: 1.8.11
    decorator: 5.1.1
    docutils: 0.21.2
    executing: 2.1.0
    filelock: 3.15.4
    fonttools: 4.55.3
    funcparserlib: 2.0.0a0
    glfw: 2.8.0
    grako: 3.16.5
    h11: 0.14.0
    h5py: 3.12.1
    html2text: 2024.2.26
    httpcore: 1.0.7
    httpx: 0.28.1
    idna: 3.10
    ihm: 1.3
    imagecodecs: 2024.9.22
    imagesize: 1.4.1
    iniconfig: 2.0.0
    ipykernel: 6.29.5
    ipython: 8.26.0
    ipywidgets: 8.1.5
    jedi: 0.19.1
    Jinja2: 3.1.4
    jupyter_client: 8.6.2
    jupyter_core: 5.7.2
    jupyterlab_widgets: 3.0.13
    kiwisolver: 1.4.7
    line_profiler: 4.1.3
    lxml: 5.3.0
    lz4: 4.3.3
    MarkupSafe: 3.0.2
    matplotlib: 3.9.2
    matplotlib-inline: 0.1.7
    msgpack: 1.0.8
    ndindex: 1.9.2
    nest-asyncio: 1.6.0
    netCDF4: 1.7.2
    networkx: 3.3
    nibabel: 5.2.0
    numexpr: 2.10.2
    numpy: 2.2.0
    OpenMM: 8.2.0
    openvr: 1.26.701
    packaging: 23.2
    ParmEd: 4.2.2
    parso: 0.8.4
    pep517: 0.13.1
    pillow: 10.4.0
    pip: 24.2
    pkginfo: 1.11.1
    platformdirs: 4.3.6
    pluggy: 1.5.0
    prompt_toolkit: 3.0.48
    psutil: 6.0.0
    pure_eval: 0.2.3
    py-cpuinfo: 9.0.0
    pycollada: 0.8
    pydicom: 2.4.4
    pyelftools: 0.31
    Pygments: 2.18.0
    pynmrstar: 3.3.4
    pynrrd: 1.1.1
    PyOpenGL: 3.1.7
    PyOpenGL-accelerate: 3.1.7
    pyopenxr: 1.0.3401
    pyparsing: 3.2.0
    pyproject_hooks: 1.2.0
    PyQt6: 6.7.1
    PyQt6-Qt6: 6.7.3
    PyQt6-WebEngine: 6.7.0
    PyQt6-WebEngine-Qt6: 6.7.3
    PyQt6-WebEngineSubwheel-Qt6: 6.7.3
    PyQt6_sip: 13.8.0
    pytest: 8.3.4
    pytest-cov: 6.0.0
    python-dateutil: 2.9.0.post0
    pytz: 2024.2
    pywin32: 308
    pyzmq: 26.2.0
    qtconsole: 5.5.2
    QtPy: 2.4.2
    qtshim: 1.1
    RandomWords: 0.4.0
    requests: 2.32.3
    scipy: 1.14.1
    setuptools: 72.1.0
    sfftk-rw: 0.8.1
    six: 1.16.0
    sniffio: 1.3.1
    snowballstemmer: 2.2.0
    sortedcontainers: 2.4.0
    soupsieve: 2.6
    Sphinx: 8.0.2
    sphinx-autodoc-typehints: 2.2.3
    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.6.3
    tables: 3.10.2.dev0
    tcia_utils: 1.5.1
    tifffile: 2024.7.24
    tinyarray: 1.2.4
    tornado: 6.4.2
    traitlets: 5.14.3
    typing_extensions: 4.12.2
    tzdata: 2024.2
    urllib3: 2.2.3
    wcwidth: 0.2.13
    webcolors: 24.6.0
    wheel: 0.43.0
    wheel-filename: 1.4.1
    widgetsnbextension: 4.0.13
    WMI: 1.5.1

Change History (9)

comment:1 by pett, 10 months ago

Component: UnassignedDepiction
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionRibbon: Array argument has non-numeric values

comment:2 by Tom Goddard, 10 months ago

Cc: Tom Goddard added
Owner: changed from Tom Goddard to Zach Pearson

Probably due to updating numpy 1 to numpy 2. I'd suggest not releasing numpy 2 ChimeraX to users in daily builds until you have spent the weeks of time to debug the problems in your own development build.

comment:3 by Zach Pearson, 8 months ago

Resolution: can't reproduce
Status: assignedclosed

I went to the AlphaFold website and downloaded that entry's PDB file, which opened uneventfully on a fresh Python 3.13 build.

comment:4 by Zach Pearson, 8 months ago

Resolution: can't reproduce
Status: closedreopened

I actually did reproduce this on Windows.

comment:5 by Zach Pearson, 6 months ago

Cc: Zach Pearson added; Tom Goddard removed
Owner: changed from Zach Pearson to Tom Goddard
Status: reopenedassigned

I put in a temporary fix to get the techpreview working, which can be found here: https://github.com/RBVI/ChimeraX/commit/54fa90c7c737d21745f10ce2a0dfdbe8a89a5d3e

reassigning to Tom for a permanent fix

comment:6 by Tom Goddard, 6 months ago

That temporary fix to make the ribbon code past residues ranges as int32 to the C++ is ok. It doesn't handle the bigger problem introduced by numpy 2 that it will produce int64 numpy arrays when converting lists of Python integers. And the ChimeraX C++ numpy code does not handle 64-bit integer arrays, only 32-bit. On Mac and Linux even in numpy 1 this ribbon code passes a list of integers which the C++ converts to an int64 numpy array since the numpy 1 default to was to convert to long integers. But our C++ code sees that and casts it down to 32-bit integers. On Windows it instead gives an error because the 64-bit integers are not "long" which is 32-bits on Windows. The basic trouble is that numpy 1 used C type "long" as the default for making integer arrays while numpy 2 instead went to fixed bit length int64 as the default type (or longlong on Windows).

Our C++ code only uses int32 arrays, never int64. But I'm a bit uncertain whether the proper fix for numpy 2 is to make it still only use int32 and handle the special Windows situation, or whether it would be better to allow int64 arrays in C++ even though we are not currently using them. I could see a possibility where we might want to allow int64 arrays. We handle large volume data (3d arrays) with more than 2**32 grid points, and if we were to need a routine that took an array of integer indices into the flattened array then it would need to be 64-bit integers. So far we haven't needed that, but maybe in the future it will be desirable.

Last edited 6 months ago by Tom Goddard (previous) (diff)

comment:7 by Tom Goddard, 6 months ago

I think the best and simplest way to handle this is have the arrays module pythonarray.cpp code downcast the 64-bit integer arrays to 32-bit on Windows. Currently that is what it does on Mac/Linux because those are long arrays, but on Windows some slightly different code will be needed. Currently all the ChimeraX C++ working with numpy only handles integer arrays with int32 values. While I think it may be useful some day to handle int64 it is simplest to just stick with int32 for now until the need arises. I'll make the fix in the next week or so.

comment:8 by Zach Pearson, 6 months ago

In case it saves you some time, I think that's what https://github.com/RBVI/ChimeraX/pull/112 does.

comment:9 by Tom Goddard, 6 months ago

My plan is not to make Numeric_Array support long long because there are many C++ template functions that handle all the numeric types of Numeric_Array and I don't want to have to examine all those to see what they will do with long long. I have in mind a simpler fix that simply does a check in pythonarray.cpp array_from_python().

Note: See TracTickets for help on using tickets.