Opened 3 years ago
Closed 3 years ago
#7563 closed enhancement (fixed)
Improve labels' contrast with background
Reported by: | Tony Schaefer | Owned by: | Eric Pettersen |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | Depiction | Version: | |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Notify when closed: | Platform: | all | |
Project: | ChimeraX |
Description
The following bug report has been submitted: Platform: Windows-10-10.0.22000 ChimeraX Version: 1.4 (2022-06-03 23:39:42 UTC) Description really just a very minor improvement suggestion I think the default 3D label text color (black/white) could be slightly improved. There are some guidelines out there for web pages to select a text color that contrasts well with a particular background color. ChimeraX's current formula for determining if a label should be black or white uses the background color. It weights the red, green, and blue channels equally. I use a formula released by the W3 group a while ago whenever I need a to determine if black or white contrasts more. The code for that is here: https://github.com/QChASM/SEQCROW/blob/be1ff418d86bcfccc76d2e4b1b6765c32f56fb0a/src/utils.py#L6 Basically, the formula accounts for blue generally being darker than red and red being darker than green. As is often the case with standards, I'm sure there are many other methods for determining if black text or white text should be used. I guess APCA is another one. In the attached pictures of periodic tables, the text is colored using the foruma in SEQCROW (W3) and the ChimeraX one for 3D atom labels (sum(element_color[:3]) > 1.5 * 255). To my eyes, the W3 formula is not perfect, but it is generally better than the ChimeraX colors. To some extent, what looks better depends on your monitor and personal preference. However, I think most people will say that black text looks better than white on a green (#00ff00) background. All that being said, I think most people stick to reasonable background colors, so the current formula is probably fine. Log: > cd C:\Users\ajs99778/Desktop Current working directory is: C:\Users\ajs99778\Desktop > graphics selection width 4 UCSF ChimeraX version: 1.4 (2022-06-03) © 2016-2022 Regents of the University of California. All rights reserved. How to cite UCSF ChimeraX > open C:\Users\ajs99778\Desktop\ts-opt-freq.log format log > ui tool show "Visualize Normal Modes" Opened ts-opt-freq.log as a Gaussian output file > ui tool show "Build QM Input" > set bgColor rgb(121,121,121) > label #1 atoms attribute name Failed to send bug report. Bug report server www.rbvi.ucsf.edu is unavailable QMainWindowLayout::tabPosition called with out-of-bounds value '0' [Repeated 1 time(s)] > close #1.3 > close > open asdf.xyz Opened asdf.xyz as an XYZ file > close > open asdf.xyz Opened asdf.xyz as an XYZ file > close > open "C:/Users/ajs99778/Desktop/M06 def2-SVP pcm > hexane/traj_001_51914492.xyz" Opened traj_001_51914492.xyz as an XYZ file > coordset slider #1 > close > open "C:/Users/ajs99778/Desktop/M06 def2-SVP pcm > hexane/traj_002_51914493.xyz" Opened traj_002_51914493.xyz as an XYZ file > coordset slider #1 > ui mousemode right tsbond > ui mousemode right bond > close > open "C:/Users/ajs99778/Desktop/M06 def2-SVP pcm > hexane/traj_003_51914494.xyz" Opened traj_003_51914494.xyz as an XYZ file > coordset slider #1 > close > open "C:/Users/ajs99778/Desktop/M06 def2-SVP pcm > hexane/traj_004_51914495.xyz" Opened traj_004_51914495.xyz as an XYZ file > coordset slider #1 > open "C:/Users/ajs99778/Desktop/M06 def2-SVP pcm > hexane/traj_003_51914494.xyz" Opened traj_003_51914494.xyz as an XYZ file > close #2 > close > open "C:/Users/ajs99778/Desktop/M06 def2-SVP pcm > hexane/traj_005_51914496.xyz" Opened traj_005_51914496.xyz as an XYZ file > coordset slider #1 > close > open asdf.xyz Opened asdf.xyz as an XYZ file > close > open asdf.xyz Opened asdf.xyz as an XYZ file > open asdf.xyz Opened asdf.xyz as an XYZ file > rename #1 gas > rename #2 pcm(hexane) > hide #!1 models > ui mousemode right distance > distance #2/a:1@C10 #2/a:1@H9 Distance between pcm(hexane) #2/a UNK 1 C10 and H9: 1.36Å > distance #2/a:1@H9 #2/a:1@C1 Distance between pcm(hexane) #2/a UNK 1 H9 and C1: 1.29Å > distance #2/a:1@C5 #2/a:1@C12 Distance between pcm(hexane) #2/a UNK 1 C5 and C12: 3.19Å > show #!1 models > hide #!2 models > distance #1/a:1@C10 #1/a:1@H9 Distance between gas #1/a UNK 1 C10 and H9: 1.37Å > distance #1/a:1@H9 #1/a:1@C1 Distance between gas #1/a UNK 1 H9 and C1: 1.28Å > distance #1/a:1@C5 #1/a:1@C12 Distance between gas #1/a UNK 1 C5 and C12: 3.21Å > show #!2 models > tile 3 models tiled > ui mousemode right tsbond > tsbond #1/a:1@C10 #1/a:1@H9 radius 0.160 > tsbond #1/a:1@C1#1/a:1@H9 > tsbond #2/a:1@C10#2/a:1@H9 > tsbond #2/a:1@C1#2/a:1@H9 > ui mousemode right distance > distance #2/a:1@C10 #2/a:1@C1 Distance between pcm(hexane) #2/a UNK 1 C10 and C1: 2.59Å > distance #1/a:1@C10 #1/a:1@C1 Distance between gas #1/a UNK 1 C10 and C1: 2.58Å > close #3#1-2 > open asdf.xyz Opened asdf.xyz as an XYZ file > close > open asdf.xyz Opened asdf.xyz as an XYZ file > set bgColor color rgb(126,126,126) Invalid "bgColor" argument: Invalid color name or specifier > set bgColor rgb(126,126,126) > set bgColor #7e7e7e00 > label #1 atoms attribute name > set bgColor rgb(128,128,128) > set bgColor #80808000 > set bgColor rgb(126,126,126) > set bgColor #7e7e7e00 > set bgColor white > set bgColor #ffffff00 > set bgColor black > set bgColor transparent > set bgColor rgb(126,126,126) > set bgColor #7e7e7e00 > set bgColor rgb(0,255,0) > set bgColor #00ff0000 > set bgColor rgb(0,0,255) > set bgColor #0000ff00 > close #1 > ui tool show Shell OpenGL version: 3.3.0 - Build 30.0.101.1002 OpenGL renderer: Intel(R) UHD Graphics 770 OpenGL vendor: Intel Python: 3.9.11 Locale: en_US.cp1252 Qt version: PyQt6 6.3.0, Qt 6.3.0 Qt runtime version: 6.3.0 Qt platform: windows Manufacturer: Dell Inc. Model: OptiPlex 7000 OS: Microsoft Windows 11 Enterprise (Build 22000) Memory: 16,853,479,424 MaxProcessMemory: 137,438,953,344 CPU: 20 12th Gen Intel(R) Core(TM) i7-12700 OSLanguage: en-US Installed Packages: alabaster: 0.7.12 appdirs: 1.4.4 Babel: 2.10.1 backcall: 0.2.0 blockdiag: 3.0.0 certifi: 2022.5.18.1 cftime: 1.6.0 charset-normalizer: 2.0.12 ChimeraX-AddCharge: 1.2.3 ChimeraX-AddH: 2.1.11 ChimeraX-AlignmentAlgorithms: 2.0 ChimeraX-AlignmentHdrs: 3.2.1 ChimeraX-AlignmentMatrices: 2.0 ChimeraX-Alignments: 2.4.3 ChimeraX-AlphaFold: 1.0 ChimeraX-AltlocExplorer: 1.0.2 ChimeraX-AmberInfo: 1.0 ChimeraX-Arrays: 1.0 ChimeraX-Atomic: 1.39.1 ChimeraX-AtomicLibrary: 7.0 ChimeraX-AtomSearch: 2.0.1 ChimeraX-AxesPlanes: 2.1 ChimeraX-BasicActions: 1.1 ChimeraX-BILD: 1.0 ChimeraX-BlastProtein: 2.1.1 ChimeraX-BondRot: 2.0 ChimeraX-BugReporter: 1.0 ChimeraX-BuildStructure: 2.7 ChimeraX-Bumps: 1.0 ChimeraX-BundleBuilder: 1.1 ChimeraX-ButtonPanel: 1.0 ChimeraX-CageBuilder: 1.0 ChimeraX-CellPack: 1.0 ChimeraX-Centroids: 1.2 ChimeraX-ChemGroup: 2.0 ChimeraX-Clashes: 2.2.4 ChimeraX-ColorActions: 1.0 ChimeraX-ColorGlobe: 1.0 ChimeraX-ColorKey: 1.5.1 ChimeraX-CommandLine: 1.2.3 ChimeraX-ConnectStructure: 2.0.1 ChimeraX-Contacts: 1.0 ChimeraX-Core: 1.4 ChimeraX-CoreFormats: 1.1 ChimeraX-coulombic: 1.3.2 ChimeraX-Crosslinks: 1.0 ChimeraX-Crystal: 1.0 ChimeraX-CrystalContacts: 1.0 ChimeraX-DataFormats: 1.2.2 ChimeraX-Dicom: 1.1 ChimeraX-DistMonitor: 1.1.5 ChimeraX-Dssp: 2.0 ChimeraX-EMDB-SFF: 1.0 ChimeraX-ExperimentalCommands: 1.0 ChimeraX-FileHistory: 1.0 ChimeraX-FunctionKey: 1.0 ChimeraX-Geometry: 1.2 ChimeraX-gltf: 1.0 ChimeraX-Graphics: 1.1 ChimeraX-Hbonds: 2.1.2 ChimeraX-Help: 1.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 ChimeraX-Label: 1.1.1 ChimeraX-ListInfo: 1.1.1 ChimeraX-Log: 1.1.5 ChimeraX-LookingGlass: 1.1 ChimeraX-Maestro: 1.8.1 ChimeraX-Map: 1.1 ChimeraX-MapData: 2.0 ChimeraX-MapEraser: 1.0 ChimeraX-MapFilter: 2.0 ChimeraX-MapFit: 2.0 ChimeraX-MapSeries: 2.1 ChimeraX-Markers: 1.0 ChimeraX-Mask: 1.0 ChimeraX-MatchMaker: 2.0.6 ChimeraX-MDcrds: 2.6 ChimeraX-MedicalToolbar: 1.0.1 ChimeraX-Meeting: 1.0 ChimeraX-MLP: 1.1 ChimeraX-mmCIF: 2.7 ChimeraX-MMTF: 2.1 ChimeraX-Modeller: 1.5.5 ChimeraX-ModelPanel: 1.3.2 ChimeraX-ModelSeries: 1.0 ChimeraX-Mol2: 2.0 ChimeraX-Morph: 1.0 ChimeraX-MouseModes: 1.1 ChimeraX-Movie: 1.0 ChimeraX-Neuron: 1.0 ChimeraX-Nucleotides: 2.0.2 ChimeraX-OpenCommand: 1.9 ChimeraX-PDB: 2.6.6 ChimeraX-PDBBio: 1.0 ChimeraX-PDBLibrary: 1.0.2 ChimeraX-PDBMatrices: 1.0 ChimeraX-PickBlobs: 1.0 ChimeraX-Positions: 1.0 ChimeraX-PresetMgr: 1.1 ChimeraX-PubChem: 2.1 ChimeraX-ReadPbonds: 1.0.1 ChimeraX-Registration: 1.1 ChimeraX-RemoteControl: 1.0 ChimeraX-ResidueFit: 1.0 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.6 ChimeraX-Shape: 1.0.1 ChimeraX-Shell: 1.0 ChimeraX-Shortcuts: 1.1 ChimeraX-ShowAttr: 1.0 ChimeraX-ShowSequences: 1.0 ChimeraX-SideView: 1.0 ChimeraX-Smiles: 2.1 ChimeraX-SmoothLines: 1.0 ChimeraX-SpaceNavigator: 1.0 ChimeraX-StdCommands: 1.8 ChimeraX-STL: 1.0 ChimeraX-Storm: 1.0 ChimeraX-StructMeasure: 1.0.1 ChimeraX-Struts: 1.0.1 ChimeraX-Surface: 1.0 ChimeraX-SwapAA: 2.0 ChimeraX-SwapRes: 2.1.1 ChimeraX-TapeMeasure: 1.0 ChimeraX-Test: 1.0 ChimeraX-Toolbar: 1.1.1 ChimeraX-ToolshedUtils: 1.2.1 ChimeraX-Tug: 1.0 ChimeraX-UI: 1.18.3 ChimeraX-uniprot: 2.2 ChimeraX-UnitCell: 1.0 ChimeraX-ViewDockX: 1.1.2 ChimeraX-VIPERdb: 1.0 ChimeraX-Vive: 1.1 ChimeraX-VolumeMenu: 1.0 ChimeraX-VTK: 1.0 ChimeraX-WavefrontOBJ: 1.0 ChimeraX-WebCam: 1.0 ChimeraX-WebServices: 1.1.0 ChimeraX-Zone: 1.0 colorama: 0.4.4 comtypes: 1.1.10 cxservices: 1.2 cycler: 0.11.0 Cython: 0.29.26 debugpy: 1.6.0 decorator: 5.1.1 docutils: 0.17.1 entrypoints: 0.4 filelock: 3.4.2 fonttools: 4.33.3 funcparserlib: 1.0.0 grako: 3.16.5 h5py: 3.7.0 html2text: 2020.1.16 idna: 3.3 ihm: 0.27 imagecodecs: 2021.11.20 imagesize: 1.3.0 ipykernel: 6.6.1 ipython: 7.31.1 ipython-genutils: 0.2.0 jedi: 0.18.1 Jinja2: 3.0.3 jupyter-client: 7.1.0 jupyter-core: 4.10.0 kiwisolver: 1.4.2 line-profiler: 3.4.0 lxml: 4.7.1 lz4: 3.1.10 MarkupSafe: 2.1.1 matplotlib: 3.5.1 matplotlib-inline: 0.1.3 msgpack: 1.0.3 nest-asyncio: 1.5.5 netCDF4: 1.5.8 networkx: 2.6.3 numexpr: 2.8.1 numpy: 1.22.1 openvr: 1.16.802 packaging: 21.3 ParmEd: 3.4.3 parso: 0.8.3 pickleshare: 0.7.5 Pillow: 9.0.1 pip: 21.3.1 pkginfo: 1.8.2 prompt-toolkit: 3.0.29 psutil: 5.9.0 pycollada: 0.7.2 pydicom: 2.2.2 Pygments: 2.11.2 PyOpenGL: 3.1.5 PyOpenGL-accelerate: 3.1.5 pyparsing: 3.0.9 PyQt6-commercial: 6.3.0 PyQt6-Qt6: 6.3.0 PyQt6-sip: 13.3.1 PyQt6-WebEngine-commercial: 6.3.0 PyQt6-WebEngine-Qt6: 6.3.0 python-dateutil: 2.8.2 pytz: 2022.1 pywin32: 303 pyzmq: 23.1.0 qtconsole: 5.3.0 QtPy: 2.1.0 RandomWords: 0.3.0 requests: 2.27.1 scipy: 1.7.3 Send2Trash: 1.8.0 SEQCROW: 1.5.2 setuptools: 59.8.0 sfftk-rw: 0.7.2 six: 1.16.0 snowballstemmer: 2.2.0 sortedcontainers: 2.4.0 Sphinx: 4.3.2 sphinx-autodoc-typehints: 1.15.2 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 suds-community: 1.0.0 tables: 3.7.0 tifffile: 2021.11.2 tinyarray: 1.2.4 tornado: 6.1 traitlets: 5.1.1 urllib3: 1.26.9 wcwidth: 0.2.5 webcolors: 1.11.1 wheel: 0.37.1 wheel-filename: 1.3.0 WMI: 1.5.1 File attachment: periodic tables.zip
Attachments (1)
Change History (3)
by , 3 years ago
Attachment: | periodic tables.zip added |
---|
comment:1 by , 3 years ago
Component: | Unassigned → Depiction |
---|---|
Owner: | set to |
Platform: | → all |
Project: | → ChimeraX |
Status: | new → accepted |
Summary: | ChimeraX bug report submission → Improve labels' contrast with background |
Type: | defect → enhancement |
chimerax.core.colors has a more sophisticated function for deciding on the contrast color. I will switch 3D labels to use it.
comment:2 by , 3 years ago
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
Note:
See TracTickets
for help on using tickets.
Added by email2trac