Project

General

Profile

Leginon usability issue in GNOME Shell: uncloseable window

Added by Jason de la Cruz almost 11 years ago

While using Leginon under Fedora 19 with GNOME3 (of which GNOME Shell is the standard GUI), we've run into a case where a dialog box spawned by Leginon contains no obvious way to exit via mouse click. See attached screenshot. The main window is grayed-out, and actions can only be done on the active window. The only way to cleanly exit the window in this case is to press ALT+F4.


Replies (5)

RE: Leginon usability issue in GNOME Shell: uncloseable window - Added by Anchi Cheng almost 11 years ago

I can see that there are python error message on the terminal. Please forward us that, and the version of Python and wxPython Fedora 19 uses.

RE: Leginon usability issue in GNOME Shell: uncloseable window - Added by Jason de la Cruz almost 11 years ago

Python 2.7.5
wxPython 2.8.12.0-4

Terminal output at time of screenshot:

Leginon version:   pre3.0
Exception in thread Thread-71:
Traceback (most recent call last):
  File "/usr/lib64/python2.7/threading.py", line 811, in __bootstrap_inner
    self.run()
  File "/usr/lib64/python2.7/threading.py", line 764, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/usr/lib/python2.7/site-packages/leginon/corrector.py", line 106, in acquireDark
    imagedata = self.acquireReference(type='dark', channel=channel)
  File "/usr/lib/python2.7/site-packages/leginon/corrector.py", line 274, in acquireReference
    refimagedata = self.acquireSeriesAverage(n, type, channel)
  File "/usr/lib/python2.7/site-packages/leginon/corrector.py", line 215, in acquireSeriesAverage
    delta = imagearray - avg
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'

Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/leginon/gui/wx/Corrector.py", line 388, in onClearPixels
    self.setPlan({'pixels':[]})
  File "/usr/lib/python2.7/site-packages/leginon/gui/wx/Corrector.py", line 366, in setPlan
    self.stbadrowscount.SetLabel(str(len(self.plan['rows']))+' Bad rows')
KeyError: 'rows'
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/leginon/gui/wx/Corrector.py", line 384, in onGrabPixels
    self.setPlan({'pixels':pixels})
  File "/usr/lib/python2.7/site-packages/leginon/gui/wx/Corrector.py", line 366, in setPlan
    self.stbadrowscount.SetLabel(str(len(self.plan['rows']))+' Bad rows')
KeyError: 'rows'
storeMatrix None
storeMatrix None
storeMatrix None
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/leginon/gui/wx/MatrixCalibrator.py", line 295, in calcp1
    p1 = self.node.pixelToPixel(mag2, mag1, p2)
  File "/usr/lib/python2.7/site-packages/leginon/matrixcalibrator.py", line 282, in pixelToPixel
    p2 = stagecal.pixelToPixel(tem, cam, ht, mag1, mag2, p1)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 1264, in pixelToPixel
    matrix1 = self.retrieveMatrix(tem, ccdcamera, par, ht, mag1)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 534, in retrieveMatrix
    caldata = self.researchMatrix(tem, ccdcamera, caltype, ht, mag, probe)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 528, in researchMatrix
    raise NoMatrixCalibrationError(excstr, state=queryinstance)
leginon.calibrationclient.NoMatrixCalibrationError: no matrix for Tecnai, GatanK2Counting, stage position, 300000.0eV, Nonex
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/leginon/gui/wx/MatrixCalibrator.py", line 308, in calcp2
    p2 = self.node.pixelToPixel(mag1, mag2, p1)
  File "/usr/lib/python2.7/site-packages/leginon/matrixcalibrator.py", line 282, in pixelToPixel
    p2 = stagecal.pixelToPixel(tem, cam, ht, mag1, mag2, p1)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 1264, in pixelToPixel
    matrix1 = self.retrieveMatrix(tem, ccdcamera, par, ht, mag1)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 534, in retrieveMatrix
    caldata = self.researchMatrix(tem, ccdcamera, caltype, ht, mag, probe)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 528, in researchMatrix
    raise NoMatrixCalibrationError(excstr, state=queryinstance)
leginon.calibrationclient.NoMatrixCalibrationError: no matrix for Tecnai, GatanK2Counting, stage position, 300000.0eV, Nonex
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/leginon/gui/wx/MatrixCalibrator.py", line 308, in calcp2
    p2 = self.node.pixelToPixel(mag1, mag2, p1)
  File "/usr/lib/python2.7/site-packages/leginon/matrixcalibrator.py", line 282, in pixelToPixel
    p2 = stagecal.pixelToPixel(tem, cam, ht, mag1, mag2, p1)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 1264, in pixelToPixel
    matrix1 = self.retrieveMatrix(tem, ccdcamera, par, ht, mag1)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 534, in retrieveMatrix
    caldata = self.researchMatrix(tem, ccdcamera, caltype, ht, mag, probe)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 528, in researchMatrix
    raise NoMatrixCalibrationError(excstr, state=queryinstance)
leginon.calibrationclient.NoMatrixCalibrationError: no matrix for Tecnai, GatanK2Counting, stage position, 300000.0eV, Nonex
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/leginon/gui/wx/MatrixCalibrator.py", line 295, in calcp1
    p1 = self.node.pixelToPixel(mag2, mag1, p2)
  File "/usr/lib/python2.7/site-packages/leginon/matrixcalibrator.py", line 282, in pixelToPixel
    p2 = stagecal.pixelToPixel(tem, cam, ht, mag1, mag2, p1)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 1264, in pixelToPixel
    matrix1 = self.retrieveMatrix(tem, ccdcamera, par, ht, mag1)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 534, in retrieveMatrix
    caldata = self.researchMatrix(tem, ccdcamera, caltype, ht, mag, probe)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 528, in researchMatrix
    raise NoMatrixCalibrationError(excstr, state=queryinstance)
leginon.calibrationclient.NoMatrixCalibrationError: no matrix for Tecnai, GatanK2Counting, stage position, 300000.0eV, Nonex
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/leginon/gui/wx/MatrixCalibrator.py", line 308, in calcp2
    p2 = self.node.pixelToPixel(mag1, mag2, p1)
  File "/usr/lib/python2.7/site-packages/leginon/matrixcalibrator.py", line 282, in pixelToPixel
    p2 = stagecal.pixelToPixel(tem, cam, ht, mag1, mag2, p1)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 1264, in pixelToPixel
    matrix1 = self.retrieveMatrix(tem, ccdcamera, par, ht, mag1)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 534, in retrieveMatrix
    caldata = self.researchMatrix(tem, ccdcamera, caltype, ht, mag, probe)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 528, in researchMatrix
    raise NoMatrixCalibrationError(excstr, state=queryinstance)
leginon.calibrationclient.NoMatrixCalibrationError: no matrix for Tecnai, GatanK2Counting, stage position, 300000.0eV, Nonex
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/leginon/gui/wx/MatrixCalibrator.py", line 308, in calcp2
    p2 = self.node.pixelToPixel(mag1, mag2, p1)
  File "/usr/lib/python2.7/site-packages/leginon/matrixcalibrator.py", line 282, in pixelToPixel
    p2 = stagecal.pixelToPixel(tem, cam, ht, mag1, mag2, p1)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 1264, in pixelToPixel
    matrix1 = self.retrieveMatrix(tem, ccdcamera, par, ht, mag1)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 534, in retrieveMatrix
    caldata = self.researchMatrix(tem, ccdcamera, caltype, ht, mag, probe)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 528, in researchMatrix
    raise NoMatrixCalibrationError(excstr, state=queryinstance)
leginon.calibrationclient.NoMatrixCalibrationError: no matrix for Tecnai, GatanK2Counting, stage position, 300000.0eV, Nonex
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/leginon/gui/wx/MatrixCalibrator.py", line 295, in calcp1
    p1 = self.node.pixelToPixel(mag2, mag1, p2)
  File "/usr/lib/python2.7/site-packages/leginon/matrixcalibrator.py", line 282, in pixelToPixel
    p2 = stagecal.pixelToPixel(tem, cam, ht, mag1, mag2, p1)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 1264, in pixelToPixel
    matrix1 = self.retrieveMatrix(tem, ccdcamera, par, ht, mag1)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 534, in retrieveMatrix
    caldata = self.researchMatrix(tem, ccdcamera, caltype, ht, mag, probe)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 528, in researchMatrix
    raise NoMatrixCalibrationError(excstr, state=queryinstance)
leginon.calibrationclient.NoMatrixCalibrationError: no matrix for Tecnai, GatanK2Counting, stage position, 300000.0eV, 275x
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/leginon/gui/wx/MatrixCalibrator.py", line 308, in calcp2
    p2 = self.node.pixelToPixel(mag1, mag2, p1)
  File "/usr/lib/python2.7/site-packages/leginon/matrixcalibrator.py", line 282, in pixelToPixel
    p2 = stagecal.pixelToPixel(tem, cam, ht, mag1, mag2, p1)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 1264, in pixelToPixel
    matrix1 = self.retrieveMatrix(tem, ccdcamera, par, ht, mag1)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 534, in retrieveMatrix
    caldata = self.researchMatrix(tem, ccdcamera, caltype, ht, mag, probe)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 528, in researchMatrix
    raise NoMatrixCalibrationError(excstr, state=queryinstance)
leginon.calibrationclient.NoMatrixCalibrationError: no matrix for Tecnai, GatanK2Counting, stage position, 300000.0eV, Nonex
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/leginon/gui/wx/MatrixCalibrator.py", line 295, in calcp1
    p1 = self.node.pixelToPixel(mag2, mag1, p2)
  File "/usr/lib/python2.7/site-packages/leginon/matrixcalibrator.py", line 282, in pixelToPixel
    p2 = stagecal.pixelToPixel(tem, cam, ht, mag1, mag2, p1)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 1264, in pixelToPixel
    matrix1 = self.retrieveMatrix(tem, ccdcamera, par, ht, mag1)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 534, in retrieveMatrix
    caldata = self.researchMatrix(tem, ccdcamera, caltype, ht, mag, probe)
  File "/usr/lib/python2.7/site-packages/leginon/calibrationclient.py", line 528, in researchMatrix
    raise NoMatrixCalibrationError(excstr, state=queryinstance)
leginon.calibrationclient.NoMatrixCalibrationError: no matrix for Tecnai, GatanK2Counting, stage position, 300000.0eV, 275x

RE: Leginon usability issue in GNOME Shell: uncloseable window - Added by Anchi Cheng almost 11 years ago

First, none of the error seems directly related to wxPython (the gui toolkit we use to generate Leginon gui). All of these have to do with getting no results from attempt to acquire image/lack of calibration, etc. Therefore they are not helpful for this. Are you having problem even to acquire a raw image?

Second, the version of the python and wxpython has worked in other OS even if not with the same combination (CentOS 6 uses wxPython 2.8.12.0 built for Python 2.6; Ubuntu 12 used wxPython 2.8.12.1 built for Python 2.7; Mac OS 10.9 used wxPython 3.0.03 built for Python 2.7). We don't have a good reason to suspect that it does not work with Fedora 19. If the problem only appears when using GNOME, then I would suggest that you use other desktop flavor.

Instead of testing in Leginon, you can simply run the MatrixCalibrator.py gui matrix editing test. Just do

python /usr/lib/python2.7/site-packages/leginon/gui/wx/MatrixCalibrator.py

It should give something like this:

RE: Leginon usability issue in GNOME Shell: uncloseable window - Added by Jason de la Cruz almost 11 years ago

We have no problem obtaining images; the one on the screen (see screenshot attached) is an unbinned image from the K2 counting mode. Hopefully the errors will cease once the calibrations are complete.

I have run the MatrixCalibrator.py script as you mentioned (see screenshot attached) and it shows the "Test Edit Dialog" without the standard "close" button at top of the window. However, the "Save" and "Cancel" buttons are there, but those were probably hard-coded into the script. The omission of the "close window" button when drawing dialog boxes was probably done by design in GNOME Shell.

We have the KDE Plasma Desktop also installed, and I will test that when I get the chance.

RE: Leginon usability issue in GNOME Shell: uncloseable window - Added by Jason de la Cruz almost 11 years ago

We've confirmed that KDE Plasma desktop does not display the unique window behavior that GNOME has in newer versions of Fedora (see attachment for screenshot). KDE windows act as "normal" (similar to Windows), with minimize/maximize/close buttons and ability to move dialog boxes separate from their parent windows. It is likely that the GNOME behavior is by design; i.e., you should be familiar with the keyboard and mouse shortcuts in GNOME Shell. Otherwise, as Anchi suggested, you can use other desktop environments such as KDE.

    (1-5/5)