Opened 3 years ago

Last modified 15 months ago

#8183 assigned enhancement

Volume image opacity is too sensitive where brightness curve is near top of histogram

Reported by: goddard@… Owned by: Tom Goddard
Priority: normal Milestone:
Component: Volume Data Version:
Keywords: Cc: Zach Pearson, olibclarke@…
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description (last modified by Zach Pearson)

The following bug report has been submitted:
Platform:        macOS-12.6-x86_64-i386-64bit
ChimeraX Version: 1.6.dev202211082330 (2022-11-08 23:30:49 UTC)
Description

Opacity changes  in image style volume rendering are too sensitive when many planes are shown (e.g. 100) and the transfer function is near 1 (top of histogram).  It goes from rather transparent to fully opaque with just a tiny change of height of the brightness curve on the histogram.

The per-plane opacity is determined as alpha_plane = 1 - (1-alpha_curve)**(1/nplanes).  The nplanes equals the number of displayed planes times the transparency depth parameter (default 0.5).  If nplanes = 100 and alpha_curve = 0.99 then alpha_plane =  0.045.  To get alpha_plane close to 1 requires an absurdly close alpha_curve value to 1, for instance alpha_curve = 1 - 1e-30 gives alpha_plane = 0.5.

The interactive adjustment of the brightness curve height works very poorly to control opacity near height 1.


Log:
Could not find tool "Tabbed Toolbar"  
UCSF ChimeraX version: 1.6.dev202211082330 (2022-11-08)  
© 2016-2022 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open /Users/goddard/ucsf/data/isonet/neuron/synapse-bin4-5i-demo.rec format
> imodmap

Opened synapse-bin4-5i-demo.rec as #1, grid size 530,831,214, pixel 4, shown
at level 66, step 2, values int8  

> volume #1 style image region 0,0,106,529,830,106 step 1 showOutlineBox true

> volume #1 level 46,0 level 68,0.8 level 115,1

> volume #1 level 46,0 level 65.26,0.9853 level 115,1

> ui mousemode right "crop volume"

> volume #1 region 0,0,106,529,830,132

> volume #1 level 46,0 level 61.76,0.7941 level 115,1

> volume #1 level 46,0 level 63.51,0.1471 level 115,1

> volume #1 level 46,0 level 63.51,0.9853 level 115,1

> volume #1 region 0,0,106,529,830,195

> volume #1 level 46,0 level 61.8,1 level 115,1

> volume #1 level 46,0 level 61.8,0.8971 level 115,1

> volume #1 level 46,0 level 61.12,0.8971 level 115,1

> volume #1 level 46,0 level 61.46,0.8824 level 115,1

> volume #1 transparencydepth 0.1

Expected a keyword  

> help volume

> volume #1 transparency .1

> volume #1 level 46,0 level 63.17,0.6912 level 115,1

> volume #1 level 46,0 level 61.8,0.9265 level 115,1

> volume #1 transparency .5

> volume #1 transparency .1

> volume #1 level 55.89,0 level 61.8,0.9265 level 115,1

> volume #1 level 55.89,0 level 62.83,1 level 115,1

> volume #1 level 54.53,0.02941 level 62.83,1 level 115,1

> volume #1 transparency 1

> volume #1 level 54.53,0.02941 level 64.53,0.9706 level 115,1

> volume #1 level 44.64,0.05882 level 64.53,0.9706 level 115,1




OpenGL version: 4.1 ATI-4.8.101
OpenGL renderer: AMD Radeon Pro 580 OpenGL Engine
OpenGL vendor: ATI Technologies Inc.

Python: 3.9.11
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: iMac18,3
      Processor Name: Quad-Core Intel Core i7
      Processor Speed: 4.2 GHz
      Number of Processors: 1
      Total Number of Cores: 4
      L2 Cache (per Core): 256 KB
      L3 Cache: 8 MB
      Hyper-Threading Technology: Enabled
      Memory: 32 GB
      System Firmware Version: 451.140.1.0.0
      OS Loader Version: 540.120.3~22
      SMC Version (system): 2.41f2

Software:

    System Software Overview:

      System Version: macOS 12.6 (21G115)
      Kernel Version: Darwin 21.6.0
      Time since boot: 83 days 23:08

Graphics/Displays:

    Radeon Pro 580:

      Chipset Model: Radeon Pro 580
      Type: GPU
      Bus: PCIe
      PCIe Lane Width: x16
      VRAM (Total): 8 GB
      Vendor: AMD (0x1002)
      Device ID: 0x67df
      Revision ID: 0x00c0
      ROM Revision: 113-D000AA-931
      VBIOS Version: 113-D0001A1X-025
      EFI Driver Version: 01.00.931
      Metal Family: Supported, Metal GPUFamily macOS 2
      Displays:
        iMac:
          Display Type: Built-In Retina LCD
          Resolution: Retina 5K (5120 x 2880)
          Framebuffer Depth: 30-Bit Color (ARGB2101010)
          Main Display: Yes
          Mirror: Off
          Online: Yes
          Automatically Adjust Brightness: Yes
          Connection Type: Internal


Installed Packages:
    alabaster: 0.7.12
    appdirs: 1.4.4
    appnope: 0.1.3
    asttokens: 2.0.8
    Babel: 2.10.3
    backcall: 0.2.0
    blockdiag: 3.0.0
    build: 0.8.0
    certifi: 2022.9.24
    cftime: 1.6.2
    charset-normalizer: 2.1.1
    ChimeraX-AddCharge: 1.4
    ChimeraX-AddH: 2.2
    ChimeraX-AlignmentAlgorithms: 2.0
    ChimeraX-AlignmentHdrs: 3.2.2
    ChimeraX-AlignmentMatrices: 2.1
    ChimeraX-Alignments: 2.7
    ChimeraX-AlphaFold: 1.0
    ChimeraX-AltlocExplorer: 1.0.3
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.0
    ChimeraX-Atomic: 1.43.4
    ChimeraX-AtomicLibrary: 8.0.4
    ChimeraX-AtomSearch: 2.0.1
    ChimeraX-AxesPlanes: 2.3
    ChimeraX-BasicActions: 1.1.2
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 2.1.2
    ChimeraX-BondRot: 2.0.1
    ChimeraX-BugReporter: 1.0.1
    ChimeraX-BuildStructure: 2.7.1
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.2
    ChimeraX-ButtonPanel: 1.0.1
    ChimeraX-CageBuilder: 1.0.1
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.3.1
    ChimeraX-ChangeChains: 1.0.2
    ChimeraX-CheckWaters: 1.3
    ChimeraX-ChemGroup: 2.0
    ChimeraX-Clashes: 2.2.4
    ChimeraX-ColorActions: 1.0.3
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.2
    ChimeraX-CommandLine: 1.2.4
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0.1
    ChimeraX-Core: 1.6.dev202211082330
    ChimeraX-CoreFormats: 1.1
    ChimeraX-coulombic: 1.3.2
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0.1
    ChimeraX-DataFormats: 1.2.2
    ChimeraX-Dicom: 1.1
    ChimeraX-DistMonitor: 1.3
    ChimeraX-DockPrep: 1.0
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ESMFold: 1.0
    ChimeraX-ExperimentalCommands: 1.0
    ChimeraX-FileHistory: 1.0.1
    ChimeraX-FunctionKey: 1.0.1
    ChimeraX-Geometry: 1.2
    ChimeraX-gltf: 1.0
    ChimeraX-Graphics: 1.1
    ChimeraX-Hbonds: 2.4
    ChimeraX-Help: 1.2.1
    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-Label: 1.1.7
    ChimeraX-ListInfo: 1.1.1
    ChimeraX-Log: 1.1.5
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.8.2
    ChimeraX-Map: 1.1.3
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0.1
    ChimeraX-MapFilter: 2.0
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.1.1
    ChimeraX-Markers: 1.0.1
    ChimeraX-Mask: 1.0.1
    ChimeraX-MatchMaker: 2.0.9
    ChimeraX-MDcrds: 2.6
    ChimeraX-MedicalToolbar: 1.0.2
    ChimeraX-Meeting: 1.0.1
    ChimeraX-MLP: 1.1
    ChimeraX-mmCIF: 2.9
    ChimeraX-MMTF: 2.2
    ChimeraX-Modeller: 1.5.6
    ChimeraX-ModelPanel: 1.3.6
    ChimeraX-ModelSeries: 1.0.1
    ChimeraX-Mol2: 2.0
    ChimeraX-Mole: 1.0
    ChimeraX-Morph: 1.0.1
    ChimeraX-MouseModes: 1.1.1
    ChimeraX-Movie: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nucleotides: 2.0.3
    ChimeraX-OpenCommand: 1.9.1
    ChimeraX-PDB: 2.6.8
    ChimeraX-PDBBio: 1.0
    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.1
    ChimeraX-RemoteControl: 1.0
    ChimeraX-RenderByAttr: 1.0
    ChimeraX-RenumberResidues: 1.1
    ChimeraX-ResidueFit: 1.0.1
    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.1
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.7.3
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0.1
    ChimeraX-Shortcuts: 1.1.1
    ChimeraX-ShowSequences: 1.0.1
    ChimeraX-SideView: 1.0.1
    ChimeraX-Smiles: 2.1
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.10.1
    ChimeraX-STL: 1.0
    ChimeraX-Storm: 1.0
    ChimeraX-StructMeasure: 1.1
    ChimeraX-Struts: 1.0.1
    ChimeraX-Surface: 1.0
    ChimeraX-SwapAA: 2.0.1
    ChimeraX-SwapRes: 2.1.3
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.1.2
    ChimeraX-ToolshedUtils: 1.2.1
    ChimeraX-Topography: 1.0
    ChimeraX-Tug: 1.0.1
    ChimeraX-UI: 1.24.2
    ChimeraX-uniprot: 2.2.1
    ChimeraX-UnitCell: 1.0.1
    ChimeraX-ViewDockX: 1.1.3
    ChimeraX-VIPERdb: 1.0
    ChimeraX-Vive: 1.1
    ChimeraX-VolumeMenu: 1.0.1
    ChimeraX-VTK: 1.0
    ChimeraX-WavefrontOBJ: 1.0
    ChimeraX-WebCam: 1.0.1
    ChimeraX-WebServices: 1.1.0
    ChimeraX-Zone: 1.0.1
    colorama: 0.4.5
    contourpy: 1.0.6
    cxservices: 1.2
    cycler: 0.11.0
    Cython: 0.29.32
    debugpy: 1.6.3
    decorator: 5.1.1
    docutils: 0.19
    entrypoints: 0.4
    executing: 1.1.1
    filelock: 3.7.1
    fonttools: 4.37.4
    funcparserlib: 1.0.0
    grako: 3.16.5
    h5py: 3.7.0
    html2text: 2020.1.16
    idna: 3.4
    ihm: 0.35
    imagecodecs: 2022.9.26
    imagesize: 1.4.1
    importlib-metadata: 5.0.0
    ipykernel: 6.15.3
    ipython: 8.4.0
    ipython-genutils: 0.2.0
    jedi: 0.18.1
    Jinja2: 3.1.2
    jupyter-client: 7.3.4
    jupyter-core: 4.11.2
    kiwisolver: 1.4.4
    line-profiler: 3.5.1
    lxml: 4.9.1
    lz4: 4.0.2
    MarkupSafe: 2.1.1
    matplotlib: 3.6.2
    matplotlib-inline: 0.1.6
    msgpack: 1.0.4
    nest-asyncio: 1.5.6
    netCDF4: 1.6.0
    networkx: 2.8.8
    numexpr: 2.8.3
    numpy: 1.23.5
    openvr: 1.23.701
    opt-einsum: 3.3.0
    packaging: 21.3
    ParmEd: 3.4.3
    parso: 0.8.3
    pep517: 0.13.0
    pexpect: 4.8.0
    pickleshare: 0.7.5
    Pillow: 9.3.0
    pip: 22.2.2
    pkginfo: 1.8.3
    prompt-toolkit: 3.0.31
    psutil: 5.9.4
    ptyprocess: 0.7.0
    pure-eval: 0.2.2
    pycollada: 0.7.2
    pydicom: 2.3.0
    Pygments: 2.12.0
    PyOpenGL: 3.1.5
    PyOpenGL-accelerate: 3.1.5
    pyparsing: 3.0.9
    PyQt6: 6.3.1
    PyQt6-Qt6: 6.3.2
    PyQt6-sip: 13.4.0
    PyQt6-WebEngine: 6.3.1
    PyQt6-WebEngine-Qt6: 6.3.2
    python-dateutil: 2.8.2
    pytz: 2022.5
    pyzmq: 24.0.1
    qtconsole: 5.3.1
    QtPy: 2.2.1
    RandomWords: 0.4.0
    requests: 2.28.1
    scipy: 1.9.3
    setuptools: 65.1.1
    setuptools-scm: 7.0.5
    sfftk-rw: 0.7.2
    six: 1.16.0
    snowballstemmer: 2.2.0
    sortedcontainers: 2.4.0
    Sphinx: 5.1.1
    sphinx-autodoc-typehints: 1.19.1
    sphinxcontrib-applehelp: 1.0.2
    sphinxcontrib-blockdiag: 3.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
    stack-data: 0.5.1
    tables: 3.7.0
    tifffile: 2022.10.10
    tinyarray: 1.2.4
    tomli: 2.0.1
    tornado: 6.2
    traitlets: 5.3.0
    typing-extensions: 4.4.0
    urllib3: 1.26.12
    wcwidth: 0.2.5
    webcolors: 1.12
    wheel: 0.37.1
    wheel-filename: 1.4.1
    zipp: 3.9.0

Change History (3)

comment:1 by Tom Goddard, 3 years ago

Component: UnassignedVolume Data
Description: modified (diff)
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionVolume image opacity is too sensitive where brightness curve is near top of histogram
Type: defectenhancement

Setting the transparency depth to be a smaller fraction of the total thickness (default is 0.5)

volume #1 transparency 0.1

has the bad effect of making the linear part of the brightness curve ramping from 0 up to 1 much more opaque. Also almost no user is aware of this parameter so having them directly modify it is not feasible.

comment:2 by Tom Goddard, 3 years ago

I don't have a good idea about how to improve the opacity sensitivity when many planes are shown (> 30). It needs to both handle the high opacity region and also give useful opacity variation in linear ramps from 0 to 1. It will need more study. Also if the user switches from subsampling step 4 to 2 to 1 it should give similar appearances. The thickness of objects in the 3D image and other properties of the image data are likely to influence what the best opacity curve interpretation is.

If I come up with a better way to interpret the brightness/opacity curve there is the additional issue of how to allow past sessions to still reproduce the old behavior while new sessions give the improved behavior.

Last edited 3 years ago by Tom Goddard (previous) (diff)

comment:3 by Zach Pearson, 15 months ago

Cc: Zach Pearson olibclarke@… added
Description: modified (diff)
Note: See TracTickets for help on using tickets.