#19400 closed enhancement (fixed)
Have Render By Attribute externally controllable
| Reported by: | Tom Goddard | Owned by: | Eric Pettersen |
|---|---|---|---|
| Priority: | blocker | Milestone: | |
| Component: | Structure Analysis | Version: | |
| Keywords: | Cc: | ||
| Blocked By: | Blocking: | ||
| Notify when closed: | Platform: | all | |
| Project: | ChimeraX |
Description
Allow other code to bring up Render By Attribute showing desired attribute/colors/etc.
Change History (13)
comment:1 by , 3 months ago
| Priority: | high → blocker |
|---|
comment:2 by , 3 months ago
comment:3 by , 3 months ago
The mutation scores scatter plot use of render by attribute is part of ticket #19403.
comment:4 by , 3 months ago
By "palette" do you literally mean a palette name, or do you mean a series of color values?
comment:6 by , 3 months ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
The Render/Select By Attribute tool now has a configure() method. I hope the method's doc string does a good enough job of explaining how it's used.
comment:7 by , 3 weeks ago
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
The level_info argument of the RenderByAttrTool.configure() method does not show the requested levels in the GUI. Instead it appears to set the default levels. I tested this with the MutationScatterPlot tool and I have code in that tool (ms_scatter_plot.py) commented out. That is probably not the easiest way to test since it requires mutation score data.
Another option that the MutationScatterPlot tool wants to set is the no value color and the no value checkbutton. That is not currently settable by the configure() function.
comment:8 by , 2 weeks ago
Fixed the color-configuration issue (worked if no 'models' were specified, but not if they were): https://github.com/RBVI/ChimeraX/commit/9b513971a3b0f752c4ddfe914710836ecbfb1996
Working on no-color configuration now.
comment:9 by , 2 weeks ago
| Resolution: | → fixed |
|---|---|
| Status: | reopened → closed |
Okay, you can configure the no-value controls via the no_value_info keyword, which takes a two-tuple/list consisting of a boolean and a value. The boolean controls whether the checkbox is checked.
Code change: https://github.com/RBVI/ChimeraX/commit/9c8d82c6bbfb85220adfe7ca590a531bfda34482
comment:10 by , 10 days ago
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
If I call configure() with models specified and render by attribute gui already showing and the specified models are already selected in the gui then the gui does not update.
Also when I then click on the models list in a blank space not on any model I get the following tracebacks:
raceback (most recent call last):
File "/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/chimerax/render_by_attr/tool.py", line 800, in _new_render_attr
self._update_render_histogram(attr_name)
File "/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/chimerax/render_by_attr/tool.py", line 1069, in _update_render_histogram
any_None = self._update_histogram(self.render_histogram, attr_name)
File "/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/chimerax/render_by_attr/tool.py", line 993, in _update_histogram
values, any_None = attr_info.values(attr_name, self.model_list.value)
File "/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/chimerax/atomic/init.py", line 297, in values
collections = concatenate(collections)
File "/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/chimerax/atomic/molarray.py", line 366, in concatenate
c = object_class(None)
TypeError: 'NoneType' object is not callable
TypeError: 'NoneType' object is not callable
File "/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/chimerax/atomic/molarray.py", line 366, in concatenate
c = object_class(None)
See log for complete Python traceback.
Traceback (most recent call last):
File "/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/chimerax/render_by_attr/tool.py", line 768, in _models_changed
self._finish_config(self._config_info)
File "/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/chimerax/render_by_attr/tool.py", line 491, in _finish_config
cur_min, cur_max, data = histogram.data_source
ValueError: too many values to unpack (expected 3)
ValueError: too many values to unpack (expected 3)
File "/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/chimerax/render_by_attr/tool.py", line 491, in _finish_config
cur_min, cur_max, data = histogram.data_source
See log for complete Python traceback.
comment:11 by , 8 days ago
| Resolution: | → fixed |
|---|---|
| Status: | reopened → closed |
Model-chooser widgets delay their initial callback until the event loop runs, as a convenience so that tools can set up their entire set of interface widgets before the callback occurs. Render by Attribute was doing some fancy footwork to ensure that the bulk of the configure() call occurred after the callback, in case the whole thing was executing in a script and therefore the event loop wouldn't run between creating the tool and calling its configure() method. I have ripped out that code and added a method to the chooser widget to request that the callback happen immediately, which the tool now calls after completely setting up its interface.
Fix: https://github.com/RBVI/ChimeraX/commit/5c3f4dfb7e8654f7d87290ed0a9f03ac79b6f5b1
comment:12 by , 7 days ago
Tried the latest in the mutation scores Coloring History tool and it is working. Thanks!
I added structure coloring controls to the mutation scatter plot gui yesterday that attempts to setup the Render by Attribute GUI (residues, specific structures, mutation score attribute, palette and levels). I used private methods of render by attribute in scatter plot function _show_render_by_attribute_gui() in code
It is not quite working because setting the render by attribute models causes a delayed callback that overwrites my render by attribute palette setting. So using a public API to set the render by attribute gui controls would be helpful.