Opened 4 years ago
Closed 4 years ago
#4812 closed enhancement (fixed)
Selection Inspector: make bfactor/occupancy editable
| Reported by: | Tristan Croll | Owned by: | Eric Pettersen |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | General Controls | Version: | |
| Keywords: | Cc: | Elaine Meng | |
| Blocked By: | Blocking: | ||
| Notify when closed: | Platform: | all | |
| Project: | ChimeraX |
Description
The following bug report has been submitted:
Platform: Linux-3.10.0-1160.25.1.el7.x86_64-x86_64-with-glibc2.14
ChimeraX Version: 1.3.dev202106210544 (2021-06-21 05:44:33 UTC)
Description
Really like the new Selection Inspector widget! For ISOLDE's purposes, it would be really nice to have the option to make the B-factor and Occupancy fields editable. The way I'd envisage it is that typing a value would set all selected atoms to that value (clamped to a suitable range, of course); clicking the up/down arrows would increment/decrement the values for selected atoms.
OpenGL version: 3.3.0 NVIDIA 465.19.01
OpenGL renderer: NVIDIA TITAN Xp/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation
Manufacturer: Dell Inc.
Model: Precision T5600
OS: CentOS Linux 7 Core
Architecture: 64bit ELF
Virutal Machine: none
CPU: 32 Intel(R) Xeon(R) CPU E5-2687W 0 @ 3.10GHz
Cache Size: 20480 KB
Memory:
total used free shared buff/cache available
Mem: 62G 12G 38G 437M 12G 49G
Swap: 4.9G 0B 4.9G
Graphics:
03:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP102 [TITAN Xp] [10de:1b02] (rev a1)
Subsystem: NVIDIA Corporation Device [10de:11df]
Kernel driver in use: nvidia
Locale: ('en_GB', 'UTF-8')
PyQt5 5.15.2, Qt 5.15.2
Installed Packages:
alabaster: 0.7.12
appdirs: 1.4.4
Babel: 2.9.1
backcall: 0.2.0
blockdiag: 2.0.1
certifi: 2021.5.30
cftime: 1.5.0
chardet: 4.0.0
ChimeraX-AddCharge: 1.1.4
ChimeraX-AddH: 2.1.7
ChimeraX-AlignmentAlgorithms: 2.0
ChimeraX-AlignmentHdrs: 3.2
ChimeraX-AlignmentMatrices: 2.0
ChimeraX-Alignments: 2.1
ChimeraX-AmberInfo: 1.0
ChimeraX-Arrays: 1.0
ChimeraX-Atomic: 1.23
ChimeraX-AtomicLibrary: 3.3
ChimeraX-AtomSearch: 2.0
ChimeraX-AtomSearchLibrary: 1.0
ChimeraX-AxesPlanes: 2.0
ChimeraX-BasicActions: 1.1
ChimeraX-BILD: 1.0
ChimeraX-BlastProtein: 1.1.1
ChimeraX-BondRot: 2.0
ChimeraX-BugReporter: 1.0
ChimeraX-BuildStructure: 2.5.2
ChimeraX-Bumps: 1.0
ChimeraX-BundleBuilder: 1.1
ChimeraX-ButtonPanel: 1.0
ChimeraX-CageBuilder: 1.0
ChimeraX-CellPack: 1.0
ChimeraX-Centroids: 1.1
ChimeraX-ChemGroup: 2.0
ChimeraX-Clashes: 2.1
ChimeraX-Clipper: 0.17.0
ChimeraX-ColorActions: 1.0
ChimeraX-ColorGlobe: 1.0
ChimeraX-ColorKey: 1.3.2
ChimeraX-CommandLine: 1.1.4
ChimeraX-ConnectStructure: 2.0
ChimeraX-Contacts: 1.0
ChimeraX-Core: 1.3.dev202106210544
ChimeraX-CoreFormats: 1.0
ChimeraX-coulombic: 1.3
ChimeraX-Crosslinks: 1.0
ChimeraX-Crystal: 1.0
ChimeraX-CrystalContacts: 1.0
ChimeraX-DataFormats: 1.2
ChimeraX-Dicom: 1.0
ChimeraX-DistMonitor: 1.1.4
ChimeraX-DistUI: 1.0
ChimeraX-Dssp: 2.0
ChimeraX-EMDB-SFF: 1.0
ChimeraX-ExperimentalCommands: 1.0
ChimeraX-FileHistory: 1.0
ChimeraX-FunctionKey: 1.0
ChimeraX-Geometry: 1.1
ChimeraX-gltf: 1.0
ChimeraX-Graphics: 1.1
ChimeraX-Hbonds: 2.1
ChimeraX-Help: 1.1
ChimeraX-HKCage: 1.3
ChimeraX-IHM: 1.1
ChimeraX-ImageFormats: 1.1
ChimeraX-IMOD: 1.0
ChimeraX-IO: 1.0.1
ChimeraX-ISOLDE: 1.3.dev8
ChimeraX-ItemsInspection: 1.0
ChimeraX-Label: 1.1
ChimeraX-LinuxSupport: 1.0
ChimeraX-ListInfo: 1.1.1
ChimeraX-Log: 1.1.4
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: 1.2.1
ChimeraX-MDcrds: 2.3
ChimeraX-MedicalToolbar: 1.0.1
ChimeraX-Meeting: 1.0
ChimeraX-MLP: 1.1
ChimeraX-mmCIF: 2.3
ChimeraX-MMTF: 2.1
ChimeraX-Modeller: 1.0.2
ChimeraX-ModelPanel: 1.1
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.6
ChimeraX-PDB: 2.4.2
ChimeraX-PDBBio: 1.0
ChimeraX-PDBLibrary: 1.0.1
ChimeraX-PDBMatrices: 1.0
ChimeraX-PickBlobs: 1.0
ChimeraX-Positions: 1.0
ChimeraX-PresetMgr: 1.0.1
ChimeraX-PubChem: 2.1
ChimeraX-ReadPbonds: 1.0
ChimeraX-Registration: 1.1
ChimeraX-RemoteControl: 1.0
ChimeraX-ResidueFit: 1.0
ChimeraX-RestServer: 1.1
ChimeraX-RNALayout: 1.0
ChimeraX-RotamerLibMgr: 2.0
ChimeraX-RotamerLibsDunbrack: 2.0
ChimeraX-RotamerLibsDynameomics: 2.0
ChimeraX-RotamerLibsRichardson: 2.0
ChimeraX-SaveCommand: 1.4
ChimeraX-SchemeMgr: 1.0
ChimeraX-SDF: 2.0
ChimeraX-Segger: 1.0
ChimeraX-Segment: 1.0
ChimeraX-SelInspector: 1.0
ChimeraX-SeqView: 2.4.1
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.6
ChimeraX-STL: 1.0
ChimeraX-Storm: 1.0
ChimeraX-Struts: 1.0
ChimeraX-Surface: 1.0
ChimeraX-SwapAA: 2.0
ChimeraX-SwapRes: 2.1
ChimeraX-TapeMeasure: 1.0
ChimeraX-Test: 1.0
ChimeraX-Toolbar: 1.1
ChimeraX-ToolshedUtils: 1.2
ChimeraX-Tug: 1.0
ChimeraX-UI: 1.10
ChimeraX-uniprot: 2.1
ChimeraX-UnitCell: 1.0
ChimeraX-ViewDockX: 1.0.1
ChimeraX-Vive: 1.1
ChimeraX-VolumeMenu: 1.0
ChimeraX-VTK: 1.0
ChimeraX-WavefrontOBJ: 1.0
ChimeraX-WebCam: 1.0
ChimeraX-WebServices: 1.0
ChimeraX-Zone: 1.0
colorama: 0.4.4
comtypes: 1.1.10
cxservices: 1.0
cycler: 0.10.0
Cython: 0.29.23
decorator: 4.4.2
distlib: 0.3.1
distro: 1.5.0
docutils: 0.17.1
filelock: 3.0.12
funcparserlib: 0.3.6
grako: 3.16.5
h5py: 3.2.1
html2text: 2020.1.16
idna: 2.10
ihm: 0.20
imagecodecs: 2021.4.28
imagesize: 1.2.0
ipykernel: 5.5.5
ipython: 7.23.1
ipython-genutils: 0.2.0
jedi: 0.18.0
Jinja2: 2.11.3
jupyter-client: 6.1.12
jupyter-core: 4.7.1
kiwisolver: 1.3.1
line-profiler: 3.3.0
lxml: 4.6.3
lz4: 3.1.3
MarkupSafe: 1.1.1
matplotlib: 3.4.2
matplotlib-inline: 0.1.2
msgpack: 1.0.2
netCDF4: 1.5.6
networkx: 2.5.1
numexpr: 2.7.3
numpy: 1.20.3
numpydoc: 1.1.0
openvr: 1.16.801
packaging: 20.9
ParmEd: 3.2.0
parso: 0.8.2
pexpect: 4.8.0
pickleshare: 0.7.5
Pillow: 8.2.0
pip: 21.1.1
pkginfo: 1.7.0
prompt-toolkit: 3.0.19
psutil: 5.8.0
ptyprocess: 0.7.0
pycollada: 0.7.1
pydicom: 2.1.2
Pygments: 2.9.0
PyOpenGL: 3.1.5
PyOpenGL-accelerate: 3.1.5
pyparsing: 2.4.7
PyQt5-commercial: 5.15.2
PyQt5-sip: 12.8.1
PyQtWebEngine-commercial: 5.15.2
python-dateutil: 2.8.1
pytz: 2021.1
pyzmq: 22.1.0
qtconsole: 5.1.0
QtPy: 1.9.0
RandomWords: 0.3.0
requests: 2.25.1
scipy: 1.6.3
setuptools: 57.0.0
sfftk-rw: 0.7.0.post1
six: 1.16.0
snowballstemmer: 2.1.0
sortedcontainers: 2.4.0
Sphinx: 4.0.1
sphinxcontrib-applehelp: 1.0.2
sphinxcontrib-blockdiag: 2.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-jurko: 0.6
tables: 3.6.1
tifffile: 2021.4.8
tinyarray: 1.2.3
tornado: 6.1
traitlets: 5.0.5
urllib3: 1.26.5
wcwidth: 0.2.5
webcolors: 1.11.1
wheel: 0.36.2
wheel-filename: 1.3.0
Change History (8)
comment:1 by , 4 years ago
| Cc: | added |
|---|---|
| Component: | Unassigned → General Controls |
| Owner: | set to |
| Platform: | → all |
| Project: | → ChimeraX |
| Status: | new → accepted |
| Summary: | ChimeraX bug report submission → Selection Inspector: make bfactor/occupancy editable |
| Type: | defect → enhancement |
comment:2 by , 4 years ago
| Resolution: | → fixed |
|---|---|
| Status: | accepted → closed |
follow-up: 3 comment:3 by , 4 years ago
Thanks! It's also fairly standard practice to clamp B-factors to [0..500] - because negative B-factors are evil, and past a value of a few hundred further increases become meaningless. At least, when the B-factor column is actually being used for B-factors...
Increments seem like reasonable defaults. Might be nice to have the ability to set them?
________________________________
From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
Sent: 23 June 2021 18:46
Cc: meng@cgl.ucsf.edu <meng@cgl.ucsf.edu>; pett@cgl.ucsf.edu <pett@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk>
Subject: Re: [ChimeraX] #4812: Selection Inspector: make bfactor/occupancy editable
#4812: Selection Inspector: make bfactor/occupancy editable
---------------------------------------+----------------------------
Reporter: Tristan Croll | Owner: Eric Pettersen
Type: enhancement | Status: closed
Priority: normal | Milestone:
Component: General Controls | Version:
Resolution: fixed | Keywords:
Blocked By: | Blocking:
Notify when closed: | Platform: all
Project: ChimeraX |
---------------------------------------+----------------------------
Changes (by Eric Pettersen):
* status: accepted => closed
* resolution: => fixed
Comment:
Glad you like it! Okay, made bfactor/occupancy editable, with occupancy
clamped to the range 0-1. The arrows increment the values by 0.5/0.1
respectively. Let me know if you felt other increment values were better.
Available in tomorrow's build.
--
Ticket URL: <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/4812#comment:2>
ChimeraX <http://www.rbvi.ucsf.edu/chimerax/>
ChimeraX Issue Tracker
comment:4 by , 4 years ago
Yeah, the trick is that many, many programs use the bfactor column for their own nefarious purposes and it isn't wise to assume that the value there is in fact a bfactor. Not too jazzed about making the increment size customizable. I can't think of any good way to make it obvious how to set the increment, and remembering the increment would be fairly complicated to code and would get in the way of higher priorities. I would prefer to just set a reasonable default increment and otherwise forget about it.
comment:5 by , 4 years ago
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
Found a bug in this: when more than one atom is selected, attempting to increment the B-factors via the inspector sets all values to a Very Large Negative Number (-2.14748e9 in my case... not sure if that's consistent).
comment:6 by , 4 years ago
| Status: | reopened → feedback |
|---|
Hi Tristan,
So for now I have turned this into a LimitationError that a range of values can't be incremented.
How important really is incrementing a range of values to you, because it would be a bit of work to implement. The underlying option widget would have to support a new callback to notify the upper layer that an increment was requested (the widget has no idea a range is being shown, it's just text at that layer). The setattr command would have to be extended to support increments, since that's the command that the Selection Inspector uses to change all values. Plus glue code between the callback and the setattr call.
I think that in the long run I will do it because it's the right thing to do, but it's a matter of prioritizing it against all the other things that need doing, so getting an idea of whether it would just be a "nice thing to have" or actually reasonably important to you will help me slot it in my to-do list.
follow-up: 7 comment:7 by , 4 years ago
Oh, it’s not hugely important to me - I have a command defined in ISOLDE that can do the same thing. In this case it was an accident - can’t remember if I accidentally clicked in exactly the wrong place or scrolled while the cursor was over it.
comment:8 by , 4 years ago
| Resolution: | → fixed |
|---|---|
| Status: | feedback → closed |
Thanks for clarifying. I won't add this to any to-do list until someone actually wants it! :-)
--Eric
Glad you like it! Okay, made bfactor/occupancy editable, with occupancy clamped to the range 0-1. The arrows increment the values by 0.5/0.1 respectively. Let me know if you felt other increment values were better.
Available in tomorrow's build.