Opened 19 months ago
Closed 18 months ago
#14824 closed defect (fixed)
altloc submodel problems
| Reported by: | Tristan Croll | Owned by: | Eric Pettersen |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | Structure Analysis | Version: | |
| Keywords: | Cc: | ||
| Blocked By: | Blocking: | ||
| Notify when closed: | Platform: | all | |
| Project: | ChimeraX |
Description
The following bug report has been submitted:
Platform: macOS-14.2.1-arm64-arm-64bit
ChimeraX Version: 1.8.dev202403220040 (2024-03-22 00:40:30 UTC)
Description
Playing around with the new "altloc show" command. This promises to be super-useful for ISOLDE (the inability to see where altlocs are has been one of the big stumbling blocks holding me back from supporting them in model building), but I noticed a few issues:
- (not necessarily an issue with the viewer, but worth noting) if I open 8qe3 and add hydrogens *before* doing `altloc show`, the altloc A HG on Ser325 gets placed really badly (sitting almost on top of the CB)
- more problematically, if I use `addh` after doing `altloc show` then each of the altloc visualisations gets treated like its own standalone model, with three hydrogens added to the N and a spurious hydrogen on the C.
- (minor stylistic thing) the added hydrogens have the standard bond thickness rather than the thinner bonds chosen for the representation
- somewhat unsurprisingly, my current Clipper implementation doesn't play at all well with it - if the altlocs are shown *before* a model is initialised for Clipper, then each altloc model gets treated as an independent atomic structure and placed in its own symmetry visualisation.
I vaguely recall discussing this before, but I ran into similar issues (when is an AtomicStructure not an AtomicStructure?) when setting up ISOLDE's rotamer preview system way back when. I eventually opted to define a trivial subclass, effectively:
class _RotamerPreview(AtomicStructure):
pass
... so programmatic decisions could be made on the basis of:
if type(m)==AtomicStructure:
do_something(m)
Seems to have been a fairly robust approach so far. That way you could e.g. ensure that `addh` only acts on the parent structure, and then copy the added hydrogens on to any extant altloc visualisations via a callback. I think it would also make life easier when adapting Clipper to use them.
Log:
> isolde shorthand
Initialising ISOLDE-specific command aliases:
Alias Equivalent full command
-------------------------------------------------
st isolde step {arguments}
aw isolde add water {arguments}
awsf isolde add water {arguments} sim false
al isolde add ligand {arguments}
aa isolde add aa $1 sel {arguments}
ht isolde mod his sel {arguments}
so setattr sel atoms occupancy {arguments}
ab isolde adjust bfactors {arguments}
ss isolde sim start sel
rt isolde release torsions sel {arguments}
rd isolde release distances sel {arguments}
ra rd; rt
pf isolde pepflip sel
cf isolde cisflip sel
cbb color bfactor {arguments}
cbo color byattr occupancy {arguments}
cbc color {arguments} bychain; color {arguments} byhet
cs clipper set contourSensitivity {arguments}
UCSF ChimeraX version: 1.8.dev202403220040 (2024-03-22)
© 2016-2024 Regents of the University of California. All rights reserved.
How to cite UCSF ChimeraX
> open 8qe3
8qe3 title:
Crystal structure of human MAT2a bound to S-Adenosylmethionine and Compound 31
[more info...]
Chain information for 8qe3 #1
---
Chain | Description | UniProt
A | S-adenosylmethionine synthase isoform type-2 | METK2_HUMAN 1-395
Non-standard residues in 8qe3 #1
---
SAM — S-adenosylmethionine
U96 —
3-cyclopropyl-6-(2-methylindazol-5-yl)-4-(6-methylpyridin-3-yl)-2~{H}-pyrazolo[4,3-b]pyridin-5-one
8qe3 mmCIF Assemblies
---
1| author_and_software_defined_assembly
17 atoms have alternate locations. Control/examine alternate locations with
Altloc Explorer [start tool...] or the altlocs command.
> hide
> addh
Summary of feedback from adding hydrogens to 8qe3 #1
---
warning | Not adding hydrogens to /A GLU 14 CB because it is missing heavy-atom bond partners
notes | Termini for 8qe3 (#1) chain A determined from SEQRES records
Chain-initial residues that are actual N termini:
Chain-initial residues that are not actual N termini: /A GLU 14
Chain-final residues that are actual C termini: /A TYR 395
Chain-final residues that are not actual C termini:
1369 hydrogen bonds
Adding 'H' to /A GLU 14
3726 hydrogens added
> altlocs show #1
> view :325
> open 8qe3
8qe3 title:
Crystal structure of human MAT2a bound to S-Adenosylmethionine and Compound 31
[more info...]
Chain information for 8qe3 #2
---
Chain | Description | UniProt
A | S-adenosylmethionine synthase isoform type-2 | METK2_HUMAN 1-395
Non-standard residues in 8qe3 #2
---
SAM — S-adenosylmethionine
U96 —
3-cyclopropyl-6-(2-methylindazol-5-yl)-4-(6-methylpyridin-3-yl)-2~{H}-pyrazolo[4,3-b]pyridin-5-one
8qe3 mmCIF Assemblies
---
1| author_and_software_defined_assembly
17 atoms have alternate locations. Control/examine alternate locations with
Altloc Explorer [start tool...] or the altlocs command.
> hide #2
> altlocs show #2
> addh #2
Summary of feedback from adding hydrogens to multiple structures
---
warning | Not adding hydrogens to 8qe3 #!2/A GLU 14 CB because it is missing heavy-atom bond partners
notes | Termini for 8qe3 (#2) chain A determined from SEQRES records
Chain-initial residues that are actual N termini:
Chain-initial residues that are not actual N termini: 8qe3 #!2/A GLU 14
Chain-final residues that are actual C termini: 8qe3 #!2/A TYR 395
Chain-final residues that are not actual C termini:
1369 hydrogen bonds
Adding 'H' to 8qe3 #!2/A GLU 14
Chain-initial residues that are actual N termini:
Chain-initial residues that are not actual N termini:
Chain-final residues that are actual C termini:
Chain-final residues that are not actual C termini:
0 hydrogen bonds
Chain-initial residues that are actual N termini:
Chain-initial residues that are not actual N termini:
Chain-final residues that are actual C termini:
Chain-final residues that are not actual C termini:
0 hydrogen bonds
Chain-initial residues that are actual N termini:
Chain-initial residues that are not actual N termini:
Chain-final residues that are actual C termini:
Chain-final residues that are not actual C termini:
0 hydrogen bonds
Chain-initial residues that are actual N termini:
Chain-initial residues that are not actual N termini:
Chain-final residues that are actual C termini:
Chain-final residues that are not actual C termini:
0 hydrogen bonds
Chain-initial residues that are actual N termini:
Chain-initial residues that are not actual N termini:
Chain-final residues that are actual C termini:
Chain-final residues that are not actual C termini:
0 hydrogen bonds
Chain-initial residues that are actual N termini:
Chain-initial residues that are not actual N termini:
Chain-final residues that are actual C termini:
Chain-final residues that are not actual C termini:
0 hydrogen bonds
3790 hydrogens added
> show #2
> hide #!2 models
> show #1:325
> hide #1:325
> altlocs show #1
> show #!2 models
OpenGL version: 4.1 Metal - 88
OpenGL renderer: Apple M1 Pro
OpenGL vendor: Apple
Python: 3.11.4
Locale: UTF-8
Qt version: PyQt6 6.6.1, Qt 6.6.1
Qt runtime version: 6.6.2
Qt platform: cocoa
Hardware:
Hardware Overview:
Model Name: MacBook Pro
Model Identifier: MacBookPro18,1
Model Number: Z14Y000GFB/A
Chip: Apple M1 Pro
Total Number of Cores: 10 (8 performance and 2 efficiency)
Memory: 32 GB
System Firmware Version: 10151.101.3
OS Loader Version: 10151.61.4
Software:
System Software Overview:
System Version: macOS 14.2.1 (23C71)
Kernel Version: Darwin 23.2.0
Time since boot: 3 hours, 48 minutes
Graphics/Displays:
Apple M1 Pro:
Chipset Model: Apple M1 Pro
Type: GPU
Bus: Built-In
Total Number of Cores: 16
Vendor: Apple (0x106b)
Metal Support: Metal 3
Displays:
HP Z27k G3:
Resolution: 3840 x 2160 (2160p/4K UHD 1 - Ultra High Definition)
UI Looks like: 1920 x 1080 @ 60.00Hz
Main Display: Yes
Mirror: Off
Online: Yes
Rotation: Supported
Installed Packages:
alabaster: 0.7.16
appdirs: 1.4.4
appnope: 0.1.4
asttokens: 2.4.1
Babel: 2.14.0
beautifulsoup4: 4.12.3
blockdiag: 3.0.0
blosc2: 2.0.0
build: 1.1.1
certifi: 2023.11.17
cftime: 1.6.3
charset-normalizer: 3.3.2
ChimeraX-AddCharge: 1.5.16
ChimeraX-AddH: 2.2.5
ChimeraX-AlignmentAlgorithms: 2.0.1
ChimeraX-AlignmentHdrs: 3.4.3
ChimeraX-AlignmentMatrices: 2.1
ChimeraX-Alignments: 2.12.5
ChimeraX-AlphaFold: 1.0
ChimeraX-AltlocExplorer: 1.1.1
ChimeraX-AmberInfo: 1.0
ChimeraX-Arrays: 1.1
ChimeraX-Atomic: 1.56
ChimeraX-AtomicLibrary: 14.0.2
ChimeraX-AtomSearch: 2.0.1
ChimeraX-AxesPlanes: 2.4
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.12.1
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.4
ChimeraX-ChangeChains: 1.1
ChimeraX-CheckWaters: 1.4
ChimeraX-ChemGroup: 2.0.1
ChimeraX-Clashes: 2.2.4
ChimeraX-Clipper: 0.23.0
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.dev202403220040
ChimeraX-CoreFormats: 1.2
ChimeraX-coulombic: 1.4.3
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.2
ChimeraX-DockPrep: 1.1.3
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-ISOLDE: 1.8.dev0
ChimeraX-ItemsInspection: 1.0.1
ChimeraX-IUPAC: 1.0
ChimeraX-Label: 1.1.9
ChimeraX-ListInfo: 1.2.2
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.3
ChimeraX-MCopy: 1.0
ChimeraX-MDcrds: 2.7
ChimeraX-MedicalToolbar: 1.0.2
ChimeraX-Meeting: 1.0.1
ChimeraX-MLP: 1.1.1
ChimeraX-mmCIF: 2.14
ChimeraX-MMTF: 2.2
ChimeraX-Modeller: 1.5.15
ChimeraX-ModelPanel: 1.5
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-NMRSTAR: 1.0.2
ChimeraX-NRRD: 1.1
ChimeraX-Nucleotides: 2.0.3
ChimeraX-OpenCommand: 1.13.3
ChimeraX-PDB: 2.7.5
ChimeraX-PDBBio: 1.0.1
ChimeraX-PDBLibrary: 1.0.4
ChimeraX-PDBMatrices: 1.0
ChimeraX-PickBlobs: 1.0.1
ChimeraX-Positions: 1.0
ChimeraX-PresetMgr: 1.1.1
ChimeraX-PubChem: 2.1
ChimeraX-QScore: 1.1
ChimeraX-ReadPbonds: 1.0.1
ChimeraX-Registration: 1.1.2
ChimeraX-RemoteControl: 1.0
ChimeraX-RenderByAttr: 1.3
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-Segmentations: 1.0
ChimeraX-SelInspector: 1.0
ChimeraX-SeqView: 2.11.2
ChimeraX-Shape: 1.0.1
ChimeraX-Shell: 1.0.1
ChimeraX-Shortcuts: 1.1.1
ChimeraX-ShowSequences: 1.0.3
ChimeraX-SideView: 1.0.1
ChimeraX-Smiles: 2.1.2
ChimeraX-SmoothLines: 1.0
ChimeraX-SpaceNavigator: 1.0
ChimeraX-StdCommands: 1.16.3
ChimeraX-STL: 1.0.1
ChimeraX-Storm: 1.0
ChimeraX-StructMeasure: 1.2
ChimeraX-Struts: 1.0.1
ChimeraX-Surface: 1.0.1
ChimeraX-SwapAA: 2.0.1
ChimeraX-SwapRes: 2.5
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.37.1
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.2
contourpy: 1.2.0
cxservices: 1.2.2
cycler: 0.12.1
Cython: 3.0.9
debugpy: 1.8.1
decorator: 5.1.1
docutils: 0.20.1
executing: 2.0.1
filelock: 3.13.1
fonttools: 4.50.0
funcparserlib: 2.0.0a0
glfw: 2.7.0
grako: 3.16.5
h5py: 3.10.0
html2text: 2024.2.26
idna: 3.6
ihm: 0.43
imagecodecs: 2024.1.1
imagesize: 1.4.1
ipykernel: 6.29.2
ipython: 8.21.0
ipywidgets: 8.1.2
jedi: 0.19.1
Jinja2: 3.1.3
jupyter-client: 8.6.0
jupyter-core: 5.7.2
jupyterlab-widgets: 3.0.10
kiwisolver: 1.4.5
line-profiler: 4.1.2
lxml: 5.1.0
lz4: 4.3.3
MarkupSafe: 2.1.5
matplotlib: 3.8.3
matplotlib-inline: 0.1.6
msgpack: 1.0.8
ndindex: 1.8
nest-asyncio: 1.6.0
netCDF4: 1.6.5
networkx: 3.2.1
nibabel: 5.0.1
nptyping: 2.5.0
numexpr: 2.9.0
numpy: 1.26.4
openvr: 1.26.701
packaging: 23.2
ParmEd: 4.2.2
parso: 0.8.3
pep517: 0.13.1
pexpect: 4.9.0
pillow: 10.2.0
pip: 24.0
pkginfo: 1.10.0
platformdirs: 4.2.0
prompt-toolkit: 3.0.43
psutil: 5.9.8
ptyprocess: 0.7.0
pure-eval: 0.2.2
py-cpuinfo: 9.0.0
pycollada: 0.8
pydicom: 2.3.0
pygments: 2.17.2
pynmrstar: 3.3.4
pynrrd: 1.0.0
PyOpenGL: 3.1.7
PyOpenGL-accelerate: 3.1.7
pyopenxr: 1.0.3302
pyparsing: 3.1.2
pyproject-hooks: 1.0.0
PyQt6-commercial: 6.6.1
PyQt6-Qt6: 6.6.2
PyQt6-sip: 13.6.0
PyQt6-WebEngine-commercial: 6.6.0
PyQt6-WebEngine-Qt6: 6.6.2
python-dateutil: 2.9.0.post0
pytz: 2024.1
pyzmq: 25.1.2
qtconsole: 5.5.1
QtPy: 2.4.1
RandomWords: 0.4.0
requests: 2.31.0
scipy: 1.12.0
setuptools: 69.2.0
setuptools-scm: 8.0.4
sfftk-rw: 0.8.1
six: 1.16.0
snowballstemmer: 2.2.0
sortedcontainers: 2.4.0
soupsieve: 2.5
sphinx: 7.2.6
sphinx-autodoc-typehints: 2.0.0
sphinxcontrib-applehelp: 1.0.8
sphinxcontrib-blockdiag: 3.0.0
sphinxcontrib-devhelp: 1.0.6
sphinxcontrib-htmlhelp: 2.0.5
sphinxcontrib-jsmath: 1.0.1
sphinxcontrib-qthelp: 1.0.7
sphinxcontrib-serializinghtml: 1.1.10
stack-data: 0.6.3
superqt: 0.6.1
tables: 3.8.0
tcia-utils: 1.5.1
tifffile: 2024.1.30
tinyarray: 1.2.4
tornado: 6.4
traitlets: 5.14.1
typing-extensions: 4.10.0
tzdata: 2024.1
urllib3: 2.2.1
wcwidth: 0.2.13
webcolors: 1.13
wheel: 0.43.0
wheel-filename: 1.4.1
widgetsnbextension: 4.0.10
Change History (4)
comment:1 by , 19 months ago
| Component: | Unassigned → Structure Analysis |
|---|---|
| Owner: | set to |
| Platform: | → all |
| Project: | → ChimeraX |
| Status: | new → accepted |
| Summary: | ChimeraX bug report submission → altloc submodel problems |
comment:2 by , 19 months ago
comment:3 by , 18 months ago
Okay, fixed the second and third problems as well.
I did not resort to an AtomicStructure subclass, though I could if it would make your life easier for Clipper -- though maybe you would want to just skip structures that have other structures in their parent hierarchy, which would also work to exclude active rotamer models which otherwise will have the same problem...
comment:4 by , 18 months ago
| Resolution: | → fixed |
|---|---|
| Status: | accepted → closed |
Barring Tristan requesting a subclass instead of checking the parent hierarchy, fixed.
Note:
See TracTickets
for help on using tickets.
Fixed the first problem, where altloc A for SER 825 had bad hydrogen positioning