#15514 closed defect (fixed)

Collection slices incorrectly updated

Reported by: goddard@… Owned by: Tom Goddard
Priority: normal Milestone:
Component: Core Version:
Keywords: Cc: Eric Pettersen
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        macOS-14.5-arm64-arm-64bit
ChimeraX Version: 1.9.dev202405090425 (2024-05-09 04:25:54 UTC)
Description
Slicing atomic collections e.g. residues[10:20] then deleting residues that are in the original unsliced array but not in the sliced array causes havoc.

While debugging new code for a foldseek tool I ran into an alarming bug that has existed forever in ChimeraX and could cause hard to fathom errors in calculations.  I don't see a way for it to cause crashes but I think it would create impossible to debug errors.

Slicing an atomic Collection (e.g Residues instance) causes it to make a new Collection using a slice of the original numpy array of pointers to the C++ residues.  The trouble is that slice is just a view on the original numpy array.  So if residues get deleted and removed from the original numpy array which is done in place, it shifts the residues and the view in the sliced array changes.  But the sliced array may not have contained any of the deleted residues and should not change.  In the case I hit the sliced array remained the same size and all the entries moved down one and the last residue pointer was duplicated.  Took hours to debug.


Log:
UCSF ChimeraX version: 1.9.dev202405090425 (2024-05-09)  
© 2016-2024 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  




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

Python: 3.11.4
Locale: UTF-8
Qt version: PyQt6 6.6.1, Qt 6.6.1
Qt runtime version: 6.6.3
Qt platform: cocoa
Hardware:

   Hardware Overview:

     Model Name: MacBook Pro
     Model Identifier: MacBookPro18,2
     Model Number: MK1H3LL/A
     Chip: Apple M1 Max
     Total Number of Cores: 10 (8 performance and 2 efficiency)
     Memory: 32 GB
     System Firmware Version: 10151.121.1
     OS Loader Version: 10151.121.1

Software:

   System Software Overview:

     System Version: macOS 14.5 (23F79)
     Kernel Version: Darwin 23.5.0
     Time since boot: 36 days, 3 hours, 2 minutes

Graphics/Displays:

   Apple M1 Max:

     Chipset Model: Apple M1 Max
     Type: GPU
     Bus: Built-In
     Total Number of Cores: 32
     Vendor: Apple (0x106b)
     Metal Support: Metal 3
     Displays:
       Color LCD:
         Display Type: Built-in Liquid Retina XDR Display
         Resolution: 3456 x 2234 Retina
         Main Display: Yes
         Mirror: Off
         Online: Yes
         Automatically Adjust Brightness: No
         Connection Type: Internal


Installed Packages:
   alabaster: 0.7.16
   appdirs: 1.4.4
   appnope: 0.1.4
   asttokens: 2.4.1
   Babel: 2.15.0
   beautifulsoup4: 4.12.3
   blockdiag: 3.0.0
   blosc2: 2.0.0
   build: 1.2.1
   certifi: 2023.11.17
   cftime: 1.6.3
   charset-normalizer: 3.3.2
   ChimeraX-AddCharge: 1.5.17
   ChimeraX-AddH: 2.2.6
   ChimeraX-AlignmentAlgorithms: 2.0.2
   ChimeraX-AlignmentHdrs: 3.5
   ChimeraX-AlignmentMatrices: 2.1
   ChimeraX-Alignments: 2.12.6
   ChimeraX-AlphaFold: 1.0
   ChimeraX-AltlocExplorer: 1.1.1
   ChimeraX-AmberInfo: 1.0
   ChimeraX-Arrays: 1.1
   ChimeraX-Atomic: 1.57
   ChimeraX-AtomicLibrary: 14.0.3
   ChimeraX-AtomSearch: 2.0.1
   ChimeraX-AxesPlanes: 2.4
   ChimeraX-BasicActions: 1.1.2
   ChimeraX-BILD: 1.0
   ChimeraX-BlastProtein: 2.4.6
   ChimeraX-BondRot: 2.0.4
   ChimeraX-BugReporter: 1.0.1
   ChimeraX-BuildStructure: 2.12.1
   ChimeraX-Bumps: 1.0
   ChimeraX-BundleBuilder: 1.2.3
   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.2.4
   ChimeraX-ColorActions: 1.0.4
   ChimeraX-ColorGlobe: 1.0
   ChimeraX-ColorKey: 1.5.6
   ChimeraX-CommandLine: 1.2.5
   ChimeraX-ConnectStructure: 2.0.1
   ChimeraX-Contacts: 1.0.1
   ChimeraX-Core: 1.9.dev202405090425
   ChimeraX-CoreFormats: 1.2
   ChimeraX-coulombic: 1.4.3
   ChimeraX-Crosslinks: 1.0
   ChimeraX-Crystal: 1.0
   ChimeraX-CrystalContacts: 1.0.1
   ChimeraX-DataFormats: 1.2.3
   ChimeraX-Dicom: 1.2
   ChimeraX-DiffPlot: 1.0
   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-Foldseek: 1.0.1
   ChimeraX-FunctionKey: 1.0.1
   ChimeraX-Geometry: 1.3
   ChimeraX-gltf: 1.0
   ChimeraX-Graphics: 1.1.1
   ChimeraX-Hbonds: 2.4
   ChimeraX-Help: 1.2.2
   ChimeraX-HKCage: 1.3
   ChimeraX-IHM: 1.1
   ChimeraX-ImageFormats: 1.2
   ChimeraX-IMOD: 1.0
   ChimeraX-IO: 1.0.1
   ChimeraX-ItemsInspection: 1.0.1
   ChimeraX-IUPAC: 1.0
   ChimeraX-Label: 1.1.9
   ChimeraX-ListInfo: 1.2.2
   ChimeraX-Log: 1.1.6
   ChimeraX-LookingGlass: 1.1
   ChimeraX-Maestro: 1.9.1
   ChimeraX-Map: 1.2
   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.3
   ChimeraX-MCopy: 1.0
   ChimeraX-MDcrds: 2.7
   ChimeraX-MedicalToolbar: 1.0.2
   ChimeraX-Meeting: 1.0.1
   ChimeraX-MLP: 1.1.1
   ChimeraX-mmCIF: 2.14.1
   ChimeraX-MMTF: 2.2
   ChimeraX-Modeller: 1.5.15
   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-Neuron: 1.0
   ChimeraX-Nifti: 1.1
   ChimeraX-NIHPresets: 1.1.18
   ChimeraX-NMRSTAR: 1.0.2
   ChimeraX-NRRD: 1.1
   ChimeraX-Nucleotides: 2.0.3
   ChimeraX-OpenCommand: 1.13.4
   ChimeraX-OrthoPick: 1.0.1
   ChimeraX-PDB: 2.7.5
   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.1
   ChimeraX-PubChem: 2.2
   ChimeraX-ReadPbonds: 1.0.1
   ChimeraX-Registration: 1.1.2
   ChimeraX-RemoteControl: 1.0
   ChimeraX-RenderByAttr: 1.4.1
   ChimeraX-RenumberResidues: 1.1
   ChimeraX-ResidueFit: 1.0.1
   ChimeraX-RestServer: 1.2
   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: 1.3.0
   ChimeraX-SelInspector: 1.0
   ChimeraX-SeqView: 2.11.2
   ChimeraX-Shape: 1.0.1
   ChimeraX-Shell: 1.0.1
   ChimeraX-Shortcuts: 1.1.1
   ChimeraX-ShowSequences: 1.0.3
   ChimeraX-SideView: 1.0.1
   ChimeraX-Smiles: 2.1.2
   ChimeraX-SmoothLines: 1.0
   ChimeraX-SpaceNavigator: 1.0
   ChimeraX-StdCommands: 1.16.4
   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
   ChimeraX-TapeMeasure: 1.0
   ChimeraX-TaskManager: 1.0
   ChimeraX-Test: 1.0
   ChimeraX-Toolbar: 1.1.2
   ChimeraX-ToolshedUtils: 1.2.4
   ChimeraX-Topography: 1.0
   ChimeraX-ToQuest: 1.0
   ChimeraX-Tug: 1.0.1
   ChimeraX-UI: 1.39.1
   ChimeraX-uniprot: 2.3
   ChimeraX-UnitCell: 1.0.1
   ChimeraX-ViewDockX: 1.4.1
   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.2.1
   cxservices: 1.2.2
   cycler: 0.12.1
   Cython: 3.0.10
   debugpy: 1.8.1
   decorator: 5.1.1
   docutils: 0.20.1
   executing: 2.0.1
   filelock: 3.13.4
   fonttools: 4.51.0
   funcparserlib: 2.0.0a0
   glfw: 2.7.0
   grako: 3.16.5
   h5py: 3.11.0
   html2text: 2024.2.26
   idna: 3.7
   ihm: 1.0
   imagecodecs: 2024.1.1
   imagesize: 1.4.1
   ipykernel: 6.29.2
   ipython: 8.21.0
   ipywidgets: 8.1.2
   jedi: 0.19.1
   jinja2: 3.1.4
   jupyter-client: 8.6.0
   jupyter-core: 5.7.2
   jupyterlab-widgets: 3.0.10
   kiwisolver: 1.4.5
   line-profiler: 4.1.2
   lxml: 5.2.1
   lz4: 4.3.3
   MarkupSafe: 2.1.5
   matplotlib: 3.8.4
   matplotlib-inline: 0.1.7
   msgpack: 1.0.8
   nest-asyncio: 1.6.0
   netCDF4: 1.6.5
   networkx: 3.3
   nibabel: 5.2.0
   nptyping: 2.5.0
   numexpr: 2.10.0
   numpy: 1.26.4
   openvr: 1.26.701
   packaging: 23.2
   ParmEd: 4.2.2
   parso: 0.8.4
   pep517: 0.13.1
   pexpect: 4.9.0
   pillow: 10.3.0
   pip: 24.0
   pkginfo: 1.10.0
   platformdirs: 4.2.1
   prompt-toolkit: 3.0.43
   psutil: 5.9.8
   ptyprocess: 0.7.0
   pure-eval: 0.2.2
   py-cpuinfo: 9.0.0
   pycollada: 0.8
   pydicom: 2.4.4
   pygments: 2.17.2
   pynmrstar: 3.3.4
   pynrrd: 1.0.0
   PyOpenGL: 3.1.7
   PyOpenGL-accelerate: 3.1.7
   pyopenxr: 1.0.3401
   pyparsing: 3.1.2
   pyproject-hooks: 1.1.0
   PyQt6: 6.6.1
   PyQt6-Qt6: 6.6.3
   PyQt6-sip: 13.6.0
   PyQt6-WebEngine: 6.6.0
   PyQt6-WebEngine-Qt6: 6.6.3
   python-dateutil: 2.9.0.post0
   pytz: 2024.1
   pyzmq: 26.0.3
   qtconsole: 5.5.1
   QtPy: 2.4.1
   RandomWords: 0.4.0
   requests: 2.31.0
   scipy: 1.13.0
   setuptools: 69.5.1
   setuptools-scm: 8.0.4
   sfftk-rw: 0.8.1
   six: 1.16.0
   snowballstemmer: 2.2.0
   sortedcontainers: 2.4.0
   soupsieve: 2.5
   sphinx: 7.2.6
   sphinx-autodoc-typehints: 2.0.1
   sphinxcontrib-applehelp: 1.0.8
   sphinxcontrib-blockdiag: 3.0.0
   sphinxcontrib-devhelp: 1.0.6
   sphinxcontrib-htmlhelp: 2.0.5
   sphinxcontrib-jsmath: 1.0.1
   sphinxcontrib-qthelp: 1.0.7
   sphinxcontrib-serializinghtml: 1.1.10
   stack-data: 0.6.3
   superqt: 0.6.3
   tables: 3.8.0
   tcia-utils: 1.5.1
   tifffile: 2024.1.30
   tinyarray: 1.2.4
   tornado: 6.4
   traitlets: 5.14.2
   typing-extensions: 4.11.0
   tzdata: 2024.1
   urllib3: 2.2.1
   wcwidth: 0.2.13
   webcolors: 1.13
   wheel: 0.43.0
   wheel-filename: 1.4.1
   widgetsnbextension: 4.0.10

Change History (3)

comment:1 by Eric Pettersen, 16 months ago

Cc: Eric Pettersen added
Component: UnassignedCore
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionCollection slices incorrectly updated

comment:2 by Eric Pettersen, 16 months ago

Yes, it took two rebuilds of the ChimeraX Trac database to get bug-report submissions working correctly again.

comment:3 by Tom Goddard, 16 months ago

Resolution: fixed
Status: assignedclosed

Fixed.

Made slicing collections copy the numpy array of C++ pointers.

Note: See TracTickets for help on using tickets.