Opened 2 years ago

Closed 2 years ago

#10171 closed defect (fixed)

DICOM: Segmentations tool not happy if more than one medical image is present (e.g. 2 CTs)

Reported by: Elaine Meng Owned by: Zach Pearson
Priority: normal Milestone:
Component: DICOM 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-10.15.7-x86_64-i386-64bit
ChimeraX Version: 1.8.dev202311160224 (2023-11-16 02:24:18 UTC)
Description
started medical-image Segmentations tool, but slice views were blank

not sure how I got this traceback, was clicking around

Log:
Startup Messages  
---  
note | available bundle cache has not been initialized yet  
  

> open /Users/meng/Desktop/startup.cxc

> alias reset view orient; view initial

> alias start toolshed show $1

> alias whereprefs info path user unversioned config

> alias previewts toolshed url https://cxtoolshed-
> preview.rbvi.ucsf.edu;toolshed reload available

> alias normalts toolshed url https://cxtoolshed.rbvi.ucsf.edu;toolshed reload
> available

> alias btut open
> http://www.cgl.ucsf.edu/home/meng/chimerax/vdocs/user/tutorials/binding-
> sites.html

> alias segtest open 0557 from emdb; vol threshold #1 min 0; vol scale #2
> value uint8; open 6nzk

executed startup.cxc  
UCSF ChimeraX version: 1.8.dev202311160224 (2023-11-16)  
© 2016-2023 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open /Users/meng/Desktop/11-06-2014-1-96508 format dicom

Summary of feedback from opening /Users/meng/Desktop/11-06-2014-1-96508  
---  
notes | Opened 4 CT (No Description) as #1.1.1, grid size 512,512,236, pixel
0.576,0.576,1.24, shown at step 1, values int16  
Opened 8 CT (No Description) as #1.1.2, grid size 512,512,213, pixel
0.588,0.588,1.24, shown at step 1, values int16  
Opened 1000 SEG (QIN CT challenge: alg01 run1segmentation result) as #1.1.3,
grid size 512,512,236, pixel 0.576,0.576,1, shown at level 0.5, step 2, values
uint8  
Opened 1000 SEG (QIN CT challenge: alg01 run2segmentation result) as #1.1.4,
grid size 512,512,236, pixel 0.576,0.576,1, shown at level 0.5, step 2, values
uint8  
Opened 1000 SEG (QIN CT challenge: alg01 run3segmentation result) as #1.1.5,
grid size 512,512,236, pixel 0.576,0.576,1, shown at level 0.5, step 2, values
uint8  
Opened 1000 SEG (QIN CT challenge: alg02 run1segmentation result) as #1.1.6,
grid size 512,512,236, pixel 0.576,0.576,1, shown at level 0.5, step 2, values
uint8  
Opened 1000 SEG (QIN CT challenge: alg02 run2segmentation result) as #1.1.7,
grid size 512,512,236, pixel 0.576,0.576,1, shown at level 0.5, step 2, values
uint8  
4 messages similar to the above omitted  
  

> hide #!1.1.2 models

> close #1.1.6-11

> volume #1.1.3 style mesh

> hide #!1.1.4 models

> hide #!1.1.5 models

> volume #1.1.3 color #b2ffff64

> ui tool show Segmentations

> dicom view fourup

Traceback (most recent call last):  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/dicom/ui/orthoplanes.py", line 734, in mouseMoveEvent  
self.moveSegmentationPuck(x, y, record_seg = (b == Qt.MouseButton.LeftButton))  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/dicom/ui/orthoplanes.py", line 674, in moveSegmentationPuck  
rel_top, rel_bottom, rel_left, rel_right =
self.mousePercentOffsetsFromEdges(x, y)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/dicom/ui/orthoplanes.py", line 641, in
mousePercentOffsetsFromEdges  
percent_offset_from_bottom = (((self.scale * (self.view.window_size[1] - y)) -
bottom) / (top - bottom))  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~  
ZeroDivisionError: float division by zero  
  
ZeroDivisionError: float division by zero  
  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/dicom/ui/orthoplanes.py", line 641, in
mousePercentOffsetsFromEdges  
percent_offset_from_bottom = (((self.scale * (self.view.window_size[1] - y)) -
bottom) / (top - bottom))  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~  
  
See log for complete Python traceback.  
  
Traceback (most recent call last):  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/dicom/ui/orthoplanes.py", line 734, in mouseMoveEvent  
self.moveSegmentationPuck(x, y, record_seg = (b == Qt.MouseButton.LeftButton))  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/dicom/ui/orthoplanes.py", line 674, in moveSegmentationPuck  
rel_top, rel_bottom, rel_left, rel_right =
self.mousePercentOffsetsFromEdges(x, y)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/dicom/ui/orthoplanes.py", line 641, in
mousePercentOffsetsFromEdges  
percent_offset_from_bottom = (((self.scale * (self.view.window_size[1] - y)) -
bottom) / (top - bottom))  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~  
ZeroDivisionError: float division by zero  
  
ZeroDivisionError: float division by zero  
  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/dicom/ui/orthoplanes.py", line 641, in
mousePercentOffsetsFromEdges  
percent_offset_from_bottom = (((self.scale * (self.view.window_size[1] - y)) -
bottom) / (top - bottom))  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~  
  
See log for complete Python traceback.  
  
Traceback (most recent call last):  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/dicom/ui/orthoplanes.py", line 734, in mouseMoveEvent  
self.moveSegmentationPuck(x, y, record_seg = (b == Qt.MouseButton.LeftButton))  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/dicom/ui/orthoplanes.py", line 674, in moveSegmentationPuck  
rel_top, rel_bottom, rel_left, rel_right =
self.mousePercentOffsetsFromEdges(x, y)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/dicom/ui/orthoplanes.py", line 641, in
mousePercentOffsetsFromEdges  
percent_offset_from_bottom = (((self.scale * (self.view.window_size[1] - y)) -
bottom) / (top - bottom))  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~  
ZeroDivisionError: float division by zero  
  
ZeroDivisionError: float division by zero  
  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/dicom/ui/orthoplanes.py", line 641, in
mousePercentOffsetsFromEdges  
percent_offset_from_bottom = (((self.scale * (self.view.window_size[1] - y)) -
bottom) / (top - bottom))  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~  
  
See log for complete Python traceback.  
  
Traceback (most recent call last):  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/dicom/ui/orthoplanes.py", line 734, in mouseMoveEvent  
self.moveSegmentationPuck(x, y, record_seg = (b == Qt.MouseButton.LeftButton))  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/dicom/ui/orthoplanes.py", line 674, in moveSegmentationPuck  
rel_top, rel_bottom, rel_left, rel_right =
self.mousePercentOffsetsFromEdges(x, y)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/dicom/ui/orthoplanes.py", line 641, in
mousePercentOffsetsFromEdges  
percent_offset_from_bottom = (((self.scale * (self.view.window_size[1] - y)) -
bottom) / (top - bottom))  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~  
ZeroDivisionError: float division by zero  
  
ZeroDivisionError: float division by zero  
  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/dicom/ui/orthoplanes.py", line 641, in
mousePercentOffsetsFromEdges  
percent_offset_from_bottom = (((self.scale * (self.view.window_size[1] - y)) -
bottom) / (top - bottom))  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~  
  
See log for complete Python traceback.  
  
Traceback (most recent call last):  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/dicom/ui/orthoplanes.py", line 734, in mouseMoveEvent  
self.moveSegmentationPuck(x, y, record_seg = (b == Qt.MouseButton.LeftButton))  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/dicom/ui/orthoplanes.py", line 674, in moveSegmentationPuck  
rel_top, rel_bottom, rel_left, rel_right =
self.mousePercentOffsetsFromEdges(x, y)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/dicom/ui/orthoplanes.py", line 641, in
mousePercentOffsetsFromEdges  
percent_offset_from_bottom = (((self.scale * (self.view.window_size[1] - y)) -
bottom) / (top - bottom))  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~  
ZeroDivisionError: float division by zero  
  
ZeroDivisionError: float division by zero  
  
File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/dicom/ui/orthoplanes.py", line 641, in
mousePercentOffsetsFromEdges  
percent_offset_from_bottom = (((self.scale * (self.view.window_size[1] - y)) -
bottom) / (top - bottom))  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~  
  
See log for complete Python traceback.  
  




OpenGL version: 4.1 NVIDIA-14.0.32 355.11.11.10.10.143
OpenGL renderer: NVIDIA GeForce GTX 675MX OpenGL Engine
OpenGL vendor: NVIDIA Corporation

Python: 3.11.2
Locale: UTF-8
Qt version: PyQt6 6.3.1, Qt 6.3.1
Qt runtime version: 6.3.2
Qt platform: cocoa
Hardware:

    Hardware Overview:

      Model Name: iMac
      Model Identifier: iMac13,2
      Processor Name: Quad-Core Intel Core i5
      Processor Speed: 3.2 GHz
      Number of Processors: 1
      Total Number of Cores: 4
      L2 Cache (per Core): 256 KB
      L3 Cache: 6 MB
      Memory: 8 GB
      Boot ROM Version: 429.0.0.0.0
      SMC Version (system): 2.11f16

Software:

    System Software Overview:

      System Version: macOS 10.15.7 (19H2026)
      Kernel Version: Darwin 19.6.0
      Time since boot: 48 days 20:27

Graphics/Displays:

    NVIDIA GeForce GTX 675MX:

      Chipset Model: NVIDIA GeForce GTX 675MX
      Type: GPU
      Bus: PCIe
      PCIe Lane Width: x16
      VRAM (Total): 1 GB
      Vendor: NVIDIA (0x10de)
      Device ID: 0x11a2
      Revision ID: 0x00a2
      ROM Revision: 3707
      Metal: Supported, feature set macOS GPUFamily1 v4
      Displays:
        iMac:
          Display Type: LCD
          Resolution: 2560 x 1440 (QHD/WQHD - Wide Quad High Definition)
          UI Looks like: 2560 x 1440
          Framebuffer Depth: 24-Bit Color (ARGB8888)
          Main Display: Yes
          Mirror: Off
          Online: Yes
          Automatically Adjust Brightness: No
          Connection Type: Internal


Installed Packages:
    alabaster: 0.7.13
    appdirs: 1.4.4
    appnope: 0.1.3
    asttokens: 2.4.1
    Babel: 2.13.1
    backcall: 0.2.0
    beautifulsoup4: 4.11.2
    blockdiag: 3.0.0
    blosc2: 2.0.0
    build: 0.10.0
    certifi: 2022.12.7
    cftime: 1.6.3
    charset-normalizer: 3.3.2
    ChimeraX-AddCharge: 1.5.12
    ChimeraX-AddH: 2.2.5
    ChimeraX-AlignmentAlgorithms: 2.0.1
    ChimeraX-AlignmentHdrs: 3.4.1
    ChimeraX-AlignmentMatrices: 2.1
    ChimeraX-Alignments: 2.12.1
    ChimeraX-AlphaFold: 1.0
    ChimeraX-AltlocExplorer: 1.1.1
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.1
    ChimeraX-Atomic: 1.51
    ChimeraX-AtomicLibrary: 12.1.1
    ChimeraX-AtomSearch: 2.0.1
    ChimeraX-AxesPlanes: 2.3.2
    ChimeraX-BasicActions: 1.1.2
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 2.1.2
    ChimeraX-BondRot: 2.0.4
    ChimeraX-BugReporter: 1.0.1
    ChimeraX-BuildStructure: 2.10.5
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.2.2
    ChimeraX-ButtonPanel: 1.0.1
    ChimeraX-CageBuilder: 1.0.1
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.3.2
    ChimeraX-ChangeChains: 1.1
    ChimeraX-CheckWaters: 1.3.2
    ChimeraX-ChemGroup: 2.0.1
    ChimeraX-Clashes: 2.2.4
    ChimeraX-ColorActions: 1.0.3
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.5
    ChimeraX-CommandLine: 1.2.5
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0.1
    ChimeraX-Core: 1.8.dev202311160224
    ChimeraX-CoreFormats: 1.2
    ChimeraX-coulombic: 1.4.2
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0.1
    ChimeraX-DataFormats: 1.2.3
    ChimeraX-Dicom: 1.2
    ChimeraX-DistMonitor: 1.4
    ChimeraX-DockPrep: 1.1.2
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ESMFold: 1.0
    ChimeraX-FileHistory: 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.8
    ChimeraX-ListInfo: 1.2.1
    ChimeraX-Log: 1.1.6
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.9.1
    ChimeraX-Map: 1.1.4
    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.2
    ChimeraX-MCopy: 1.0
    ChimeraX-MDcrds: 2.6
    ChimeraX-MedicalToolbar: 1.0.2
    ChimeraX-Meeting: 1.0.1
    ChimeraX-MLP: 1.1.1
    ChimeraX-mmCIF: 2.12.1
    ChimeraX-MMTF: 2.2
    ChimeraX-Modeller: 1.5.12
    ChimeraX-ModelPanel: 1.4
    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-NRRD: 1.1
    ChimeraX-Nucleotides: 2.0.3
    ChimeraX-OpenCommand: 1.13
    ChimeraX-PDB: 2.7.2
    ChimeraX-PDBBio: 1.0.1
    ChimeraX-PDBLibrary: 1.0.2
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PickBlobs: 1.0.1
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.1
    ChimeraX-PubChem: 2.1
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1.2
    ChimeraX-RemoteControl: 1.0
    ChimeraX-RenderByAttr: 1.2
    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-SelInspector: 1.0
    ChimeraX-SeqView: 2.11
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0.1
    ChimeraX-Shortcuts: 1.1.1
    ChimeraX-ShowSequences: 1.0.2
    ChimeraX-SideView: 1.0.1
    ChimeraX-Smiles: 2.1.2
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.13
    ChimeraX-STL: 1.0.1
    ChimeraX-Storm: 1.0
    ChimeraX-StructMeasure: 1.1.2
    ChimeraX-Struts: 1.0.1
    ChimeraX-Surface: 1.0.1
    ChimeraX-SwapAA: 2.0.1
    ChimeraX-SwapRes: 2.2.2
    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.33.3
    ChimeraX-uniprot: 2.3
    ChimeraX-UnitCell: 1.0.1
    ChimeraX-ViewDockX: 1.3.2
    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.3
    ChimeraX-Zone: 1.0.1
    colorama: 0.4.6
    comm: 0.2.0
    contourpy: 1.2.0
    cxservices: 1.2.2
    cycler: 0.12.1
    Cython: 0.29.33
    debugpy: 1.8.0
    decorator: 5.1.1
    docutils: 0.19
    executing: 2.0.1
    filelock: 3.9.0
    fonttools: 4.44.3
    funcparserlib: 1.0.1
    glfw: 2.6.2
    grako: 3.16.5
    h5py: 3.10.0
    html2text: 2020.1.16
    idna: 3.4
    ihm: 0.38
    imagecodecs: 2023.9.18
    imagesize: 1.4.1
    ipykernel: 6.23.2
    ipython: 8.14.0
    ipython-genutils: 0.2.0
    ipywidgets: 8.1.1
    jedi: 0.18.2
    Jinja2: 3.1.2
    jupyter-client: 8.2.0
    jupyter-core: 5.5.0
    jupyterlab-widgets: 3.0.9
    kiwisolver: 1.4.5
    line-profiler: 4.0.2
    lxml: 4.9.2
    lz4: 4.3.2
    MarkupSafe: 2.1.3
    matplotlib: 3.7.2
    matplotlib-inline: 0.1.6
    msgpack: 1.0.4
    nest-asyncio: 1.5.8
    netCDF4: 1.6.2
    networkx: 3.1
    nibabel: 5.0.1
    nptyping: 2.5.0
    numexpr: 2.8.7
    numpy: 1.25.1
    openvr: 1.23.701
    packaging: 21.3
    ParmEd: 3.4.3
    parso: 0.8.3
    pep517: 0.13.0
    pexpect: 4.8.0
    pickleshare: 0.7.5
    Pillow: 10.0.1
    pip: 23.0
    pkginfo: 1.9.6
    platformdirs: 4.0.0
    prompt-toolkit: 3.0.41
    psutil: 5.9.5
    ptyprocess: 0.7.0
    pure-eval: 0.2.2
    py-cpuinfo: 9.0.0
    pycollada: 0.7.2
    pydicom: 2.3.0
    Pygments: 2.16.1
    pynrrd: 1.0.0
    PyOpenGL: 3.1.7
    PyOpenGL-accelerate: 3.1.7
    pyopenxr: 1.0.2801
    pyparsing: 3.0.9
    pyproject-hooks: 1.0.0
    PyQt6-commercial: 6.3.1
    PyQt6-Qt6: 6.3.2
    PyQt6-sip: 13.4.0
    PyQt6-WebEngine-commercial: 6.3.1
    PyQt6-WebEngine-Qt6: 6.3.2
    python-dateutil: 2.8.2
    pytz: 2023.3.post1
    pyzmq: 25.1.1
    qtconsole: 5.4.3
    QtPy: 2.4.1
    RandomWords: 0.4.0
    requests: 2.31.0
    scipy: 1.11.1
    setuptools: 67.4.0
    setuptools-scm: 7.0.5
    sfftk-rw: 0.7.3
    six: 1.16.0
    snowballstemmer: 2.2.0
    sortedcontainers: 2.4.0
    soupsieve: 2.5
    sphinx: 6.1.3
    sphinx-autodoc-typehints: 1.22
    sphinxcontrib-applehelp: 1.0.7
    sphinxcontrib-blockdiag: 3.0.0
    sphinxcontrib-devhelp: 1.0.5
    sphinxcontrib-htmlhelp: 2.0.4
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 1.0.6
    sphinxcontrib-serializinghtml: 1.1.9
    stack-data: 0.6.3
    superqt: 0.5.0
    tables: 3.8.0
    tcia-utils: 1.5.1
    tifffile: 2023.7.18
    tinyarray: 1.2.4
    tomli: 2.0.1
    tornado: 6.3.3
    traitlets: 5.9.0
    typing-extensions: 4.8.0
    tzdata: 2023.3
    urllib3: 2.1.0
    wcwidth: 0.2.10
    webcolors: 1.12
    wheel: 0.38.4
    wheel-filename: 1.4.1
    widgetsnbextension: 4.0.9

Change History (7)

comment:1 by Elaine Meng, 2 years ago

Component: UnassignedDICOM
Owner: set to Zach Pearson
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionDICOM: Segmentations tool not happy if more than one medical image is present (e.g. 2 CTs)

Now I have tried various situations and reproduced it: it happens when I have more than one medical image series open (e.g., more than one CT series) when Segmentations is started. The slice views are blank and then the traceback appears. Maybe you have to click something to get the traceback, not sure, but it was reproducible.

comment:2 by Zach Pearson, 2 years ago

This bug (mercifully) reveals itself even if you just open two datasets and change the layout, no tool needed.

comment:3 by Zach Pearson, 2 years ago

Cc: Eric Pettersen added

Hi Eric,

I'm ccing you because my proposed fix involves the ModelMenu widget you wrote in ui/src/widgets/composite.py

I discovered that when more than one dataset is open, the on-dataset-selected callback doesn't fire. I looked at the ModelMenu code, and ModelMenus use a ModelMenuButton from ui/src/widgets/item_chooser.py, which takes an autoselect argument.

That argument isn't exposed in ModelMenu. If I add it to ModelMenu's initializer so it can be passed down to ModelMenuButton, then setting autoselect='first' fixes this behavior.

Do you have any issues putting that in production?

comment:4 by Eric Pettersen, 2 years ago

Well, that seems fine, though you could just use ModelMenuButton directly (and add a label if needed). Nonetheless your proposed change seems fine. You might consider having ModelMenu take kw for the arguments that will be passed unchanged through to ModelMenuButton.

comment:5 by Zach Pearson, 2 years ago

I don't like either solution. Just adding the parameter clogs the arguments list and, to the caller, looks like something that matters for the class instead of just one of the classes it makes use of. But on the other end, **kwargs is totally useless to IDEs (if it's not explained in docstrings). I can't see the list of possible parameters without going and looking at the relevant subclass.

I guess kwargs is the better way to go because it's at least net zero -- the programmer isn't in a worse position than normal just having to look the parameter up, vs adding to the list of arguments which is confusing.

I've heard about parameter classes as a possible solution, but it sounds like ugly boilerplate to me. Argh!

comment:6 by Eric Pettersen, 2 years ago

I think as long as ModelMenu's doc string says that the keywords are being passed through to ModelMenuButton, that would be fine.

comment:7 by Zach Pearson, 2 years ago

Resolution: fixed
Status: assignedclosed
Note: See TracTickets for help on using tickets.