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: | 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 )
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 , 6 years ago
| Cc: | added |
|---|---|
| Owner: | set to |
| Platform: | → all |
| Project: | → ChimeraX |
| Status: | new → assigned |
| Summary: | ChimeraX bug report submission → Apparent race condition in remove-model trigger handling |
comment:2 by , 6 years ago
| Cc: | added; removed |
|---|---|
| Owner: | changed from to |
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 , 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.
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.