Opened 23 months ago
Last modified 23 months ago
#10282 assigned enhancement
Surface transparency not preserved when playing trajectory
Reported by: | Owned by: | Tom Goddard | |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | Surface | Version: | |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Notify when closed: | jmsstarlight@gmail.com | Platform: | all |
Project: | ChimeraX |
Description
The following bug report has been submitted: Platform: macOS-13.6.1-x86_64-i386-64bit ChimeraX Version: 1.8.dev202311100228 (2023-11-10 02:28:59 UTC) Description Per-atom surface transparency is lost when playing a trajectory where the surface changes each frame. Reported on ChimeraX mailing list by Enrico Martinez. Log: Could not find tool "Tabbed Toolbar" UCSF ChimeraX version: 1.8.dev202311100228 (2023-11-10) © 2016-2023 Regents of the University of California. All rights reserved. How to cite UCSF ChimeraX > open 1plx format mmcif fromDatabase pdb coordsets true 1plx title: NMR structure of Methionine-Enkephalin in fast tumbling Bicelles/DMPG [more info...] Chain information for 1plx #1 --- Chain | Description | UniProt A | Met-enkephalin 1 | PENK_HUMAN 1-5 1plx has 80 coordinate sets > surface > transparency :TYR 80 > coordset #1 OpenGL version: 4.1 ATI-4.14.1 OpenGL renderer: AMD Radeon Pro 580 OpenGL Engine OpenGL vendor: ATI Technologies Inc. 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: 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: 522.0.0.0.0 OS Loader Version: 577.140.2~15 SMC Version (system): 2.41f2 Software: System Software Overview: System Version: macOS 13.6.1 (22G313) Kernel Version: Darwin 22.6.0 Time since boot: 4 days, 22 hours, 5 minutes 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 Support: Metal 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.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.dev202311100228 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.14.1 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.0 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.40 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: 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: 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.9 webcolors: 1.12 wheel: 0.38.4 wheel-filename: 1.4.1 widgetsnbextension: 4.0.9
Change History (5)
comment:1 by , 23 months ago
Component: | Unassigned → Surface |
---|---|
Notify when closed: | → jmsstarlight@gmail.com |
Owner: | set to |
Platform: | → all |
Project: | → ChimeraX |
Status: | new → assigned |
Summary: | ChimeraX bug report submission → Surface transparency not preserved when playing trajectory |
comment:2 by , 23 months ago
The fact that ChimeraX loses the surface transparency when you play the trajectory is a bug. I'll look at whether that is easy to fix. But for now you can set the transparency each frame using command the perframe command. Here's the example from Elaine's email using perframe.
open 1plx coordset true
perframe "coord #1 $1 ; surf close ; surf update false ; transparency :TYR 75" frames 80
The perfame command runs the sequence of commands separated by semicolons. So it first sets which time point of the trajectory is shown. The $1 is replaced with the frame number 1, then 2, then 3, up to 80 in this example. Then the commands close the previous surface and create a new one with "update false" which means don't recompute the surface when the atoms move. And the last command sets the transparency. This sequence is run 80 times, before each frame is drawn. The two surface commands are needed because of an obscure technical issue. The molecular surface normally gets recomputed when the atoms move just before the frame is drawn, which would be after the transparency command and that would undo the transparency. So we need the "surface update false" to prevent that from happening, and since we are no longer updating the surface we need the "surface close" to remove the old non-updating surface.
comment:3 by , 23 months ago
The current molecular surface code keeps an array of per-atom surface colors (_atom_patch_colors) and a mask (_atom_patch_color_mask) saying which atom patches have had their surface color changed. I'm not sure what use cases the mask is intended to allow for. It seems some parts of the surface can be continuously per-vertex colored while others are colored by atom patches. That seems rarely useful. Adding the same support for transparency with an atom_patch_transparency_mask gets pretty complicated. Already the color remembering code is perhaps 100 lines and not easy to follow. So I am reluctant to add more complexity to support rare use cases (some parts of surface transparent and other parts opaque).
comment:4 by , 23 months ago
Updating surface coloring also does not update during a trajectory for continuous coloring (e.g. radial, or by map value). The molecular surface code sets the vertex coloring which disables the auto-color callback. So the surface reverts to single color.
A single color surface with transparency correctly preserves the transparency playing a trajectory.
An opaque surface colored by atom patches preserves its per-atom-patch coloring during a trajectory.
If an surface is colored by hetero-atom type then made 50% transparent playing the trajectory reverts to the opaque hetero-atom coloring but keeps the transparent carbon coloring!
Surprisingly it is possible to get part of the surface as a single color and transparent and other parts colored opaque by atom patch and have it update during the trajectory. The trick is to make the surface single color transparent, then set the atom-patch colors of just some atoms. Because the atom-patch colors are remembered just for specific atoms (due to the patch color mask), the transparent part keeps the single color with transparency. Here's an example of that.
open 1plx coordsets true
surface
color #1 lightgray surface transp 80
color :1-3 pink surface transp 0
coordset #1
comment:5 by , 23 months ago
Type: | defect → enhancement |
---|
The surface code was not designed to try to restore per-atom transparency. While that would be nice it is sufficiently complicated and seldom used that it is a feature that might never get implemented.
From: Enrico Martinez via ChimeraX-users <chimerax-users@…>
Subject: [chimerax-users] Surphace representation of multi-model pdb and moovie recording
Date: December 4, 2023 at 3:32:22 AM PST
To: ChimeraX Users Help <chimerax-users@…>
Reply-To: Enrico Martinez
Dear Chimera-X users !
I am working on molecular visualization of membrane system from the md
trajectory loaded in the Chimera-x using the open coordset true
command.
The issue is with the surface representation of the membrane:
transparency :OL,PA,PE,PC 80 target s
which are applied only on the current frame (not on the whole trajectory).
Also when I try to make a movie of the system the presence of the
surface does slow down everything. Which options could be useful e.g.
to decrease the quality of the surface representation ?
Many thanks in advance
Enrico