Opened 6 years ago

Last modified 6 years ago

#2279 accepted defect

Apparent race condition in remove-model trigger handling — at Version 3

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

Description (last modified by Eric Pettersen)

The following bug report has been submitted:
Platform:        Darwin-18.6.0-x86_64-i386-64bit
ChimeraX Version: 0.91 (2019-07-10)
Description
(Describe the actions that caused this problem to occur here)

Log:
Startup Messages  
---  
warning | 'clip' is a prefix of an existing command 'clipper'  
  
UCSF ChimeraX version: 0.91 (2019-07-10)  
© 2016-2019 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open /Users/nadiariera/Downloads/cryosparc_P11_J33_004_volume_map.mrc

Opened cryosparc_P11_J33_004_volume_map.mrc, grid size 400,400,400, pixel
0.834, shown at level 0.106, step 2, values float32  

> set bgColor white

> lighting full

> toolshed show "Segment Map"

Segmenting cryosparc_P11_J33_004_volume_map.mrc, density threshold 0.120577  
Showing cryosparc_P11_J33_004_volume_map.seg - 0 regions, 0 surfaces  
Showing 23 region surfaces  
30 watershed regions, grouped to 23 regions  

> select

3 models selected  
Segmenting cryosparc_P11_J33_004_volume_map.mrc, density threshold 0.119804  
Showing cryosparc_P11_J33_004_volume_map.seg - 0 regions, 0 surfaces  
Showing 23 region surfaces  
30 watershed regions, grouped to 23 regions  

> select clear

Segmenting cryosparc_P11_J33_004_volume_map.mrc, density threshold 0.119804  
Showing cryosparc_P11_J33_004_volume_map.seg - 0 regions, 0 surfaces  
Only showing 20 of 23 regions.  
Showing 20 of 23 region surfaces  
30 watershed regions, grouped to 23 regions  
Segmenting cryosparc_P11_J33_004_volume_map.mrc, density threshold 0.119804  
Showing cryosparc_P11_J33_004_volume_map.seg - 0 regions, 0 surfaces  
Showing 2 region surfaces  
30 watershed regions, grouped to 2 regions  
Segmenting cryosparc_P11_J33_004_volume_map.mrc, density threshold 0.119804  
Showing cryosparc_P11_J33_004_volume_map.seg - 0 regions, 0 surfaces  
Only showing 10 of 23 regions.  
Showing 10 of 23 region surfaces  
30 watershed regions, grouped to 23 regions  

> lighting simple

Smoothing and grouping, standard deviation 5 voxels  
Only showing 10 of 21 regions.  
Showing 10 of 21 region surfaces  
Got 21 regions after smoothing 5 voxels.  

> select ~sel

2 models selected  

> hide #!1 models

> select ~sel

Nothing selected  

> save "/Users/nadiariera/Desktop/S2C2 Project
submission/Segmented_nanodisc_from_P11_J33_004.mrc" models #1

> hide #!2 models

Traceback (most recent call last):  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/triggerset.py", line 130, in invoke  
return self._func(self._name, data)  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/segger/segment_dialog.py", line 1178, in model_closed_cb  
if self.chosen_map in mlist:  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/segger/segment_dialog.py", line 420, in _get_chosen_map  
return self._map_menu.value  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/ui/widgets/item_chooser.py", line 255, in value  
return self.item_map[text]  
KeyError: 'cryosparc_P11_J33_004_volume_map.mrc #1'  
  
Error processing trigger "remove models":
'cryosparc_P11_J33_004_volume_map.mrc #1':  
KeyError: 'cryosparc_P11_J33_004_volume_map.mrc #1'  
  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/ui/widgets/item_chooser.py", line 255, in value  
return self.item_map[text]  
  
See log for complete Python traceback.  
  
Traceback (most recent call last):  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/triggerset.py", line 130, in invoke  
return self._func(self._name, data)  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/ui/widgets/item_chooser.py", line 287, in _items_change  
prev_value = self.value  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/ui/widgets/item_chooser.py", line 255, in value  
return self.item_map[text]  
KeyError: 'cryosparc_P11_J33_004_volume_map.mrc #1'  
  
Error processing trigger "remove models":
'cryosparc_P11_J33_004_volume_map.mrc #1':  
KeyError: 'cryosparc_P11_J33_004_volume_map.mrc #1'  
  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/ui/widgets/item_chooser.py", line 255, in value  
return self.item_map[text]  
  
See log for complete Python traceback.  
  
Traceback (most recent call last):  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/triggerset.py", line 130, in invoke  
return self._func(self._name, data)  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/segger/segment_dialog.py", line 1178, in model_closed_cb  
if self.chosen_map in mlist:  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/segger/segment_dialog.py", line 420, in _get_chosen_map  
return self._map_menu.value  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/ui/widgets/item_chooser.py", line 255, in value  
return self.item_map[text]  
KeyError: 'cryosparc_P11_J33_004_volume_map.mrc #1'  
  
Error processing trigger "remove models":
'cryosparc_P11_J33_004_volume_map.mrc #1':  
KeyError: 'cryosparc_P11_J33_004_volume_map.mrc #1'  
  

[removed a bunch of these]


File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/ui/widgets/item_chooser.py", line 255, in value  
return self.item_map[text]  
  
See log for complete Python traceback.  
  
Traceback (most recent call last):  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/triggerset.py", line 130, in invoke  
return self._func(self._name, data)  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/ui/widgets/item_chooser.py", line 287, in _items_change  
prev_value = self.value  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/ui/widgets/item_chooser.py", line 255, in value  
return self.item_map[text]  
KeyError: 'cryosparc_P11_J33_004_volume_map.mrc #1'  
  
Error processing trigger "remove models":
'cryosparc_P11_J33_004_volume_map.mrc #1':  
KeyError: 'cryosparc_P11_J33_004_volume_map.mrc #1'  
  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/ui/widgets/item_chooser.py", line 255, in value  
return self.item_map[text]  
  
See log for complete Python traceback.  
  
Traceback (most recent call last):  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/triggerset.py", line 130, in invoke  
return self._func(self._name, data)  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/segger/segment_dialog.py", line 1178, in model_closed_cb  
if self.chosen_map in mlist:  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/segger/segment_dialog.py", line 420, in _get_chosen_map  
return self._map_menu.value  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/ui/widgets/item_chooser.py", line 255, in value  
return self.item_map[text]  
KeyError: 'cryosparc_P11_J33_004_volume_map.mrc #1'  
  
Error processing trigger "remove models":
'cryosparc_P11_J33_004_volume_map.mrc #1':  
KeyError: 'cryosparc_P11_J33_004_volume_map.mrc #1'  
  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/ui/widgets/item_chooser.py", line 255, in value  
return self.item_map[text]  
  
See log for complete Python traceback.  
  
Traceback (most recent call last):  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/triggerset.py", line 130, in invoke  
return self._func(self._name, data)  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/ui/widgets/item_chooser.py", line 287, in _items_change  
prev_value = self.value  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/ui/widgets/item_chooser.py", line 255, in value  
return self.item_map[text]  
KeyError: 'cryosparc_P11_J33_004_volume_map.mrc #1'  
  
Error processing trigger "remove models":
'cryosparc_P11_J33_004_volume_map.mrc #1':  
KeyError: 'cryosparc_P11_J33_004_volume_map.mrc #1'  
  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/ui/widgets/item_chooser.py", line 255, in value  
return self.item_map[text]  
  
See log for complete Python traceback.  
  
Traceback (most recent call last):  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/triggerset.py", line 130, in invoke  
return self._func(self._name, data)  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/segger/segment_dialog.py", line 1178, in model_closed_cb  
if self.chosen_map in mlist:  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/segger/segment_dialog.py", line 420, in _get_chosen_map  
return self._map_menu.value  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/ui/widgets/item_chooser.py", line 255, in value  
return self.item_map[text]  
KeyError: 'cryosparc_P11_J33_004_volume_map.mrc #1'  
  
Error processing trigger "remove models":
'cryosparc_P11_J33_004_volume_map.mrc #1':  
KeyError: 'cryosparc_P11_J33_004_volume_map.mrc #1'  
  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/ui/widgets/item_chooser.py", line 255, in value  
return self.item_map[text]  
  
See log for complete Python traceback.  
  
Traceback (most recent call last):  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/core/triggerset.py", line 130, in invoke  
return self._func(self._name, data)  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/ui/widgets/item_chooser.py", line 287, in _items_change  
prev_value = self.value  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/ui/widgets/item_chooser.py", line 255, in value  
return self.item_map[text]  
KeyError: 'cryosparc_P11_J33_004_volume_map.mrc #1'  
  
Error processing trigger "remove models":
'cryosparc_P11_J33_004_volume_map.mrc #1':  
KeyError: 'cryosparc_P11_J33_004_volume_map.mrc #1'  
  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/chimerax/ui/widgets/item_chooser.py", line 255, in value  
return self.item_map[text]  
  
See log for complete Python traceback.  
  




OpenGL version: 4.1 INTEL-12.9.22
OpenGL renderer: Intel(R) Iris(TM) Plus Graphics 650
OpenGL vendor: Intel Inc.

Change History (3)

comment:1 by Eric Pettersen, 6 years ago

Cc: Eric Pettersen added
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionApparent race condition in remove-model trigger handling

I _think_ you have to change your code to delay your processing enough to allow the menu to update itself. I haven't looked at your code, but if what you're trying to do is handle the case where the closed model was the one chosen in the menu, you should get a callback from the menu that the value has changed once it processes its handler.

comment:2 by Tom Goddard, 6 years ago

Cc: Tom Goddard added; Eric Pettersen removed
Owner: changed from Tom Goddard to Eric Pettersen

This seems like a bug in class ModelMenuButton in chimerax.ui.widgets. The Segger code is simply calling using "menu.value" and it raises an error. Surely that has to always work, possibly returning None?

comment:3 by Eric Pettersen, 6 years ago

Description: modified (diff)

The menu is waiting to update its state using the same trigger you're using. I'm not sure it _can_ work if you use it between the time the model closes and it receives the 'model closed' trigger if it was showing the closed model as the menu choice. I'll look into it.

Note: See TracTickets for help on using tickets.