Opened 3 years ago

Closed 3 years ago

#7337 closed defect (fixed)

Selection demotion: Values array length does not match objects array length

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

Description

The following bug report has been submitted:
Platform:        macOS-10.16-x86_64-i386-64bit
ChimeraX Version: 1.3 (2021-12-08 23:08:33 UTC)
Description
(Describe the actions that caused this problem to occur here)

Log:
UCSF ChimeraX version: 1.3 (2021-12-08)  
© 2016-2021 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open /Users/mengqipan/Desktop/Isodle/28July_Nam_last_frame_rsr2.pdb

Chain information for 28July_Nam_last_frame_rsr2.pdb #1  
---  
Chain | Description  
A B C D E | No description available  
  

> open /Users/mengqipan/Desktop/Isodle/vol_combined_zflip.mrc

Opened vol_combined_zflip.mrc as #2, grid size 168,168,168, pixel 1.7, shown
at level 0.012, step 1, values float32  

> select #2

2 models selected  

> select #1

6380 atoms, 6525 bonds, 770 residues, 1 model selected  

> hide sel atoms

> show sel cartoons

> volume #2 level 0.02842

> volume #2 color #b2b2b281

> ~select #1

Nothing selected  

> dssp

> volume #2 level 0.03284

> dssp

> ui tool show ISOLDE

> set selectionWidth 4

ISOLDE: Checking and correcting nomenclature for (pseudo)symmetric side
chains...  
ISOLDE: Corrected atom nomenclature of 26 residues in model #1 to IUPAC-IUB
standards.  
Chain information for 28July_Nam_last_frame_rsr2.pdb  
---  
Chain | Description  
1.2/A 1.2/B 1.2/C 1.2/D 1.2/E | No description available  
  
Done loading forcefield  
Opened vol_combined_zflip.mrc as #1.1.1.1, grid size 168,168,168, pixel 1.7,
shown at step 1, values float32  

> clipper spotlight radius 40.00

[Repeated 1 time(s)]

> select up

8 atoms, 7 bonds, 1 residue, 1 model selected  

> select up

24 atoms, 23 bonds, 3 residues, 1 model selected  

> select up

1276 atoms, 1305 bonds, 154 residues, 1 model selected  
ISOLDE: stopped sim  

> addh

Summary of feedback from adding hydrogens to 28July_Nam_last_frame_rsr2.pdb
#1.2  
---  
notes | No usable SEQRES records for 28July_Nam_last_frame_rsr2.pdb (#1.2)
chain A; guessing termini instead  
No usable SEQRES records for 28July_Nam_last_frame_rsr2.pdb (#1.2) chain B;
guessing termini instead  
No usable SEQRES records for 28July_Nam_last_frame_rsr2.pdb (#1.2) chain C;
guessing termini instead  
No usable SEQRES records for 28July_Nam_last_frame_rsr2.pdb (#1.2) chain D;
guessing termini instead  
No usable SEQRES records for 28July_Nam_last_frame_rsr2.pdb (#1.2) chain E;
guessing termini instead  
Chain-initial residues that are actual N termini: /A PHE 78, /B PHE 78, /C PHE
78, /D PHE 78, /E PHE 78  
Chain-initial residues that are not actual N termini:  
Chain-final residues that are actual C termini: /A ARG 231, /B ARG 231, /C ARG
231, /D ARG 231, /E ARG 231  
Chain-final residues that are not actual C termini:  
587 hydrogen bonds  
6250 hydrogens added  
  

Populating font family aliases took 709 ms. Replace uses of missing font
family "Carlito" with one that exists to avoid this cost.  

ISOLDE: started sim  

> select up

12630 atoms, 12775 bonds, 770 residues, 1 model selected  

> hide sel atoms

> show sel cartoons

> select down

2526 atoms, 154 residues, 1 model selected  

> select down

Traceback (most recent call last):  
File
"/Users/mengqipan/Desktop/ChimeraX-1.3.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/ui/gui.py", line 563, in keyPressEvent  
self.session.ui.forward_keystroke(event)  
File
"/Users/mengqipan/Desktop/ChimeraX-1.3.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/ui/gui.py", line 323, in forward_keystroke  
run(self.session, 'select down')  
File
"/Users/mengqipan/Desktop/ChimeraX-1.3.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/core/commands/run.py", line 36, in run  
results = command.run(text, log=log, return_json=return_json)  
File
"/Users/mengqipan/Desktop/ChimeraX-1.3.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/core/commands/cli.py", line 2856, in run  
result = ci.function(session, **kw_args)  
File
"/Users/mengqipan/Desktop/ChimeraX-1.3.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/std_commands/select.py", line 138, in select_down  
session.selection.demote(session)  
File
"/Users/mengqipan/Desktop/ChimeraX-1.3.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/core/selection.py", line 64, in demote  
self._promotion.demote_selection()  
File
"/Users/mengqipan/Desktop/ChimeraX-1.3.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/core/selection.py", line 200, in demote_selection  
p.demote()  
File
"/Users/mengqipan/Desktop/ChimeraX-1.3.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/atomic/structure.py", line 1876, in demote  
s.atoms.selected = self._prev_atom_sel_mask  
File
"/Users/mengqipan/Desktop/ChimeraX-1.3.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/atomic/molc.py", line 210, in set_prop  
raise ValueError('Values array length %d does not match objects array length
%d'  
ValueError: Values array length 6380 does not match objects array length 12630  
  
ValueError: Values array length 6380 does not match objects array length 12630  
  
File
"/Users/mengqipan/Desktop/ChimeraX-1.3.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/atomic/molc.py", line 210, in set_prop  
raise ValueError('Values array length %d does not match objects array length
%d'  
  
See log for complete Python traceback.  
  




OpenGL version: 4.1 Metal - 76.3
OpenGL renderer: Apple M1
OpenGL vendor: AppleHardware:

    Hardware Overview:

      Model Name: MacBook Pro
      Model Identifier: MacBookPro17,1
      Processor Name: Unknown
      Processor Speed: 2.4 GHz
      Number of Processors: 1
      Total Number of Cores: 8
      L2 Cache: 8 MB
      Memory: 8 GB

Software:

    System Software Overview:

      System Version: macOS 12.4 (21F79)
      Kernel Version: Darwin 21.5.0
      Time since boot: 45 days 5:57

Graphics/Displays:

    Apple M1:

      Chipset Model: Apple M1
      Type: GPU
      Bus: Built-In
      Total Number of Cores: 8
      Vendor: Apple (0x106b)
      Metal Family: Supported, Metal GPUFamily Apple 7
      Displays:
        Color LCD:
          Display Type: Built-In Retina LCD
          Resolution: 2560 x 1600 Retina
          Main Display: Yes
          Mirror: Off
          Online: Yes
          Automatically Adjust Brightness: Yes
          Connection Type: Internal

Locale: (None, 'UTF-8')
PyQt5 5.15.2, Qt 5.15.2
Installed Packages:
    alabaster: 0.7.12
    appdirs: 1.4.4
    appnope: 0.1.2
    Babel: 2.9.1
    backcall: 0.2.0
    blockdiag: 2.0.1
    certifi: 2021.5.30
    cftime: 1.5.1.1
    charset-normalizer: 2.0.9
    ChimeraX-AddCharge: 1.2.2
    ChimeraX-AddH: 2.1.11
    ChimeraX-AlignmentAlgorithms: 2.0
    ChimeraX-AlignmentHdrs: 3.2
    ChimeraX-AlignmentMatrices: 2.0
    ChimeraX-Alignments: 2.2.3
    ChimeraX-AlphaFold: 1.0
    ChimeraX-AltlocExplorer: 1.0.1
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.0
    ChimeraX-Atomic: 1.31
    ChimeraX-AtomicLibrary: 4.2
    ChimeraX-AtomSearch: 2.0
    ChimeraX-AtomSearchLibrary: 1.0
    ChimeraX-AxesPlanes: 2.0
    ChimeraX-BasicActions: 1.1
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 2.0
    ChimeraX-BondRot: 2.0
    ChimeraX-BugReporter: 1.0
    ChimeraX-BuildStructure: 2.6.1
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.1
    ChimeraX-ButtonPanel: 1.0
    ChimeraX-CageBuilder: 1.0
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.2
    ChimeraX-ChemGroup: 2.0
    ChimeraX-Clashes: 2.2.2
    ChimeraX-Clipper: 0.17.0
    ChimeraX-ColorActions: 1.0
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5
    ChimeraX-CommandLine: 1.1.5
    ChimeraX-ConnectStructure: 2.0
    ChimeraX-Contacts: 1.0
    ChimeraX-Core: 1.3
    ChimeraX-CoreFormats: 1.1
    ChimeraX-coulombic: 1.3.2
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0
    ChimeraX-DataFormats: 1.2.2
    ChimeraX-Dicom: 1.0
    ChimeraX-DistMonitor: 1.1.5
    ChimeraX-DistUI: 1.0
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ExperimentalCommands: 1.0
    ChimeraX-FileHistory: 1.0
    ChimeraX-FunctionKey: 1.0
    ChimeraX-Geometry: 1.1
    ChimeraX-gltf: 1.0
    ChimeraX-Graphics: 1.1
    ChimeraX-Hbonds: 2.1.2
    ChimeraX-Help: 1.2
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.1
    ChimeraX-ImageFormats: 1.2
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.1
    ChimeraX-ISOLDE: 1.3
    ChimeraX-ItemsInspection: 1.0
    ChimeraX-Label: 1.1
    ChimeraX-ListInfo: 1.1.1
    ChimeraX-Log: 1.1.4
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.8.1
    ChimeraX-Map: 1.1
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0
    ChimeraX-MapFilter: 2.0
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.1
    ChimeraX-Markers: 1.0
    ChimeraX-Mask: 1.0
    ChimeraX-MatchMaker: 2.0.4
    ChimeraX-MDcrds: 2.6
    ChimeraX-MedicalToolbar: 1.0.1
    ChimeraX-Meeting: 1.0
    ChimeraX-MLP: 1.1
    ChimeraX-mmCIF: 2.4
    ChimeraX-MMTF: 2.1
    ChimeraX-Modeller: 1.2.6
    ChimeraX-ModelPanel: 1.2.1
    ChimeraX-ModelSeries: 1.0
    ChimeraX-Mol2: 2.0
    ChimeraX-Morph: 1.0
    ChimeraX-MouseModes: 1.1
    ChimeraX-Movie: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nucleotides: 2.0.2
    ChimeraX-OpenCommand: 1.7
    ChimeraX-PDB: 2.6.5
    ChimeraX-PDBBio: 1.0
    ChimeraX-PDBLibrary: 1.0.2
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PickBlobs: 1.0
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.0.1
    ChimeraX-PubChem: 2.1
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1
    ChimeraX-RemoteControl: 1.0
    ChimeraX-ResidueFit: 1.0
    ChimeraX-RestServer: 1.1
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 2.0.1
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.5
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.4.6
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0
    ChimeraX-Shortcuts: 1.1
    ChimeraX-ShowAttr: 1.0
    ChimeraX-ShowSequences: 1.0
    ChimeraX-SideView: 1.0
    ChimeraX-Smiles: 2.1
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.6.1
    ChimeraX-STL: 1.0
    ChimeraX-Storm: 1.0
    ChimeraX-Struts: 1.0
    ChimeraX-Surface: 1.0
    ChimeraX-SwapAA: 2.0
    ChimeraX-SwapRes: 2.1
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.1
    ChimeraX-ToolshedUtils: 1.2
    ChimeraX-Tug: 1.0
    ChimeraX-UI: 1.13.7
    ChimeraX-uniprot: 2.2
    ChimeraX-UnitCell: 1.0
    ChimeraX-ViewDockX: 1.0.1
    ChimeraX-VIPERdb: 1.0
    ChimeraX-Vive: 1.1
    ChimeraX-VolumeMenu: 1.0
    ChimeraX-VTK: 1.0
    ChimeraX-WavefrontOBJ: 1.0
    ChimeraX-WebCam: 1.0
    ChimeraX-WebServices: 1.0
    ChimeraX-Zone: 1.0
    colorama: 0.4.4
    cxservices: 1.1
    cycler: 0.11.0
    Cython: 0.29.24
    decorator: 5.1.0
    docutils: 0.17.1
    filelock: 3.0.12
    funcparserlib: 0.3.6
    grako: 3.16.5
    h5py: 3.6.0
    html2text: 2020.1.16
    idna: 3.3
    ihm: 0.21
    imagecodecs: 2021.4.28
    imagesize: 1.3.0
    ipykernel: 5.5.5
    ipython: 7.23.1
    ipython-genutils: 0.2.0
    jedi: 0.18.0
    Jinja2: 3.0.1
    jupyter-client: 6.1.12
    jupyter-core: 4.9.1
    kiwisolver: 1.3.2
    lxml: 4.6.3
    lz4: 3.1.3
    MarkupSafe: 2.0.1
    matplotlib: 3.4.3
    matplotlib-inline: 0.1.3
    msgpack: 1.0.2
    netCDF4: 1.5.7
    networkx: 2.6.3
    numexpr: 2.8.0
    numpy: 1.21.2
    openvr: 1.16.801
    packaging: 21.0
    ParmEd: 3.2.0
    parso: 0.8.3
    pexpect: 4.8.0
    pickleshare: 0.7.5
    Pillow: 8.3.2
    pip: 21.2.4
    pkginfo: 1.7.1
    prompt-toolkit: 3.0.23
    psutil: 5.8.0
    ptyprocess: 0.7.0
    pycollada: 0.7.1
    pydicom: 2.1.2
    Pygments: 2.10.0
    PyOpenGL: 3.1.5
    PyOpenGL-accelerate: 3.1.5
    pyparsing: 3.0.6
    PyQt5-commercial: 5.15.2
    PyQt5-sip: 12.8.1
    PyQtWebEngine-commercial: 5.15.2
    python-dateutil: 2.8.2
    pytz: 2021.3
    pyzmq: 22.3.0
    qtconsole: 5.1.1
    QtPy: 1.11.3
    RandomWords: 0.3.0
    requests: 2.26.0
    scipy: 1.7.1
    setuptools: 57.5.0
    sfftk-rw: 0.7.1
    six: 1.16.0
    snowballstemmer: 2.2.0
    sortedcontainers: 2.4.0
    Sphinx: 4.2.0
    sphinx-autodoc-typehints: 1.12.0
    sphinxcontrib-applehelp: 1.0.2
    sphinxcontrib-blockdiag: 2.0.0
    sphinxcontrib-devhelp: 1.0.2
    sphinxcontrib-htmlhelp: 2.0.0
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 1.0.3
    sphinxcontrib-serializinghtml: 1.1.5
    suds-jurko: 0.6
    tifffile: 2021.4.8
    tinyarray: 1.2.3
    tornado: 6.1
    traitlets: 5.1.1
    urllib3: 1.26.7
    wcwidth: 0.2.5
    webcolors: 1.11.1
    wheel: 0.37.0
    wheel-filename: 1.3.0

Change History (5)

comment:1 by Eric Pettersen, 3 years ago

Cc: Eric Pettersen added
Component: UnassignedCore
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionSelection demotion: Values array length does not match objects array length

comment:2 by Eric Pettersen, 3 years ago

Cc: Tristan Croll added

comment:3 by Tom Goddard, 3 years ago

Selection up/down arrow (and also undo) does not handle addition or deletion of atoms well. In this case some atoms were selected, then 6250 hydrogens were added, then select up (works), select (down) works, select (down) fails with an error. That is because all the selection history knows is an array of true/false values whose length is equals the number of atoms (a mask). So if the number of atoms changes the code no longer knows which atoms were selected.

I'll protect the code against this error. If it finds the remembered selection mask array has a length different from the number of atoms then it won't revert the selection. Might issue a warning too, but I doubt a user would ever notice such a warning or care too much.

comment:4 by Eric Pettersen, 3 years ago

Wouldn't it be better to save Atoms collections of the selected atoms at each level? When switching to that level clear the selection in all atoms and then set the selection in the atoms in the collection.

Last edited 3 years ago by Eric Pettersen (previous) (diff)

comment:5 by Tom Goddard, 3 years ago

Resolution: fixed
Status: assignedclosed

Fixed.

If the number of atoms has changed the select up/down will silently do nothing. I'm not sure why the selection code uses atom and bond masks instead of arrays of atoms and bonds. But it is not worth the risk of changing to make select up/down work in such an extremely rare case as this.

Note: See TracTickets for help on using tickets.