Opened 10 months ago
Last modified 6 months ago
#16520 assigned defect
Ribbon: Array argument has non-numeric values
Reported by: | 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 , 10 months ago
Component: | Unassigned → Depiction |
---|---|
Owner: | set to |
Platform: | → all |
Project: | → ChimeraX |
Status: | new → assigned |
Summary: | ChimeraX bug report submission → Ribbon: Array argument has non-numeric values |
comment:2 by , 10 months ago
Cc: | added |
---|---|
Owner: | changed from | to
comment:3 by , 8 months ago
Resolution: | → can't reproduce |
---|---|
Status: | assigned → closed |
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 , 8 months ago
Resolution: | can't reproduce |
---|---|
Status: | closed → reopened |
I actually did reproduce this on Windows.
comment:5 by , 6 months ago
Cc: | added; removed |
---|---|
Owner: | changed from | to
Status: | reopened → assigned |
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 , 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.
comment:7 by , 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 , 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 , 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().
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.