#16152 closed defect (fixed)
'sym' problems
| Reported by: | Owned by: | Eric Pettersen | |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | Higher-Order Structure | Version: | |
| Keywords: | Cc: | Tom Goddard, Greg Couch | |
| Blocked By: | Blocking: | ||
| Notify when closed: | Platform: | all | |
| Project: | ChimeraX |
Description
The following bug report has been submitted:
Platform: macOS-12.7.6-x86_64-i386-64bit
ChimeraX Version: 1.8 (2024-06-10 23:15:52 UTC)
Description
Hello,
It is possible that I still don't understand the sym command correctly... But this session is a minimal replicable example of what seems to me like a bug. I attached a cxc file recapitulating this (with comments), in case it is more convenient than extracting all the commands from this session's Log.
By the end of this session, I expect to have the entire assembly reconstituted. The actual result is that chain B is systematically missing in all symmetry-related copies of the asymmetric unit.
I get the same behavior with ChimeraX 1.8 on Linux.
Let me know if I can help with anything.
Cheers,
Guillaume
Log:
Startup Messages
---
note | available bundle cache has not been initialized yet
UCSF ChimeraX version: 1.8 (2024-06-10)
© 2016-2024 Regents of the University of California. All rights reserved.
How to cite UCSF ChimeraX
> open emdb:18049
Opened emdb 18049 as #1, grid size 152,152,152, pixel 1.15, shown at level
0.046, step 1, values float32, fit PDB 8q04
> open 8q04
8q04 title:
Chlorella sorokiniana Rubisco: D4 symmetry imposed [more info...]
Chain information for 8q04 #2
---
Chain | Description | UniProt
A B D F H J L N | Ribulose bisphosphate carboxylase large chain | W8SUA8_CHLSO 1-475
C E G I K M O P | Ribulose bisphosphate carboxylase small subunit, chloroplastic | A0A2P6U2H5_CHLSO -42-140
> open alphafold:A0A8A2F5Y7
Chain information for AlphaFold A0A8A2F5Y7 #3
---
Chain | Description | UniProt
A | Large subunit of Rubisco | A0A8A2F5Y7_CHLVU 1-475
Color AlphaFold A0A8A2F5Y7 by residue attribute pLDDT_score
> open alphafold:Q33BU5
Chain information for AlphaFold Q33BU5 #4
---
Chain | Description | UniProt
A | RuBisCO small subunits | Q33BU5_AUXPY 1-124
Color AlphaFold Q33BU5 by residue attribute pLDDT_score
> mmaker #3 to #2/a
Parameters
---
Chain pairing | bb
Alignment algorithm | Needleman-Wunsch
Similarity matrix | BLOSUM-62
SS fraction | 0.3
Gap open (HH/SS/other) | 18/18/6
Gap extend | 1
SS matrix | | | H | S | O
---|---|---|---
H | 6 | -9 | -6
S | | 6 | -6
O | | | 4
Iteration cutoff | 2
Matchmaker 8q04, chain A (#2) with AlphaFold A0A8A2F5Y7, chain A (#3),
sequence alignment score = 2308.7
RMSD between 402 pruned atom pairs is 0.640 angstroms; (across all 420 pairs:
1.061)
> mmaker #4 to #2/c
Parameters
---
Chain pairing | bb
Alignment algorithm | Needleman-Wunsch
Similarity matrix | BLOSUM-62
SS fraction | 0.3
Gap open (HH/SS/other) | 18/18/6
Gap extend | 1
SS matrix | | | H | S | O
---|---|---|---
H | 6 | -9 | -6
S | | 6 | -6
O | | | 4
Iteration cutoff | 2
Matchmaker 8q04, chain C (#2) with AlphaFold Q33BU5, chain A (#4), sequence
alignment score = 556.5
RMSD between 109 pruned atom pairs is 0.817 angstroms; (across all 118 pairs:
1.098)
> close #2
> combine #3,4
Remapping chain ID 'A' in AlphaFold Q33BU5 #4 to 'B'
> close #3,4
> fitmap #2 inMap #1
Fit molecule combination (#2) to map emdb 18049 (#1) using 4694 atoms
average map value = 0.06668, steps = 48
shifted from previous position = 0.0997
rotated from previous position = 0.556 degrees
atoms outside contour = 1798, contour level = 0.046
Position of combination (#2) relative to emdb 18049 (#1) coordinates:
Matrix rotation and translation
-0.57107355 0.19056273 -0.79847408 53.02359714
-0.52337910 -0.83387016 0.17531363 94.58405841
-0.63241547 0.51802162 0.57593774 75.58241154
Axis 0.42353639 -0.20522388 -0.88232652
Axis point 54.41510988 28.92434838 0.00000000
Rotation angle (degrees) 156.13524268
Shift along axis -63.64185047
> hide #2 models
> view orient
> sym #2 D4 center cofr addMmcifAssembly true
Made 8 copies for combination symmetry D4
> close #3
> save /tmp/d4-ASU-model.cif models #2
> open /tmp/d4-ASU-model.cif
Chain information for d4-ASU-model.cif #3
---
Chain | Description
A | Large subunit of Rubisco
B | RuBisCO small subunits
d4-ASU-model.cif mmCIF Assemblies
---
1| author defined symmetry
> sym #3 assembly 1
Made 8 copies for d4-ASU-model.cif assembly 1
> select #4/a
29568 atoms, 30288 bonds, 3800 residues, 8 models selected
> select #4/b
Nothing selected
> ui dockable false "Bug Reporter"
OpenGL version: 4.1 INTEL-18.8.16
OpenGL renderer: Intel(R) Iris(TM) Graphics 6100
OpenGL vendor: Intel Inc.
Python: 3.11.4
Locale: UTF-8
Qt version: PyQt6 6.6.1, Qt 6.6.1
Qt runtime version: 6.6.3
Qt platform: cocoa
Hardware:
Hardware Overview:
Model Name: MacBook Pro
Model Identifier: MacBookPro12,1
Processor Name: Dual-Core Intel Core i7
Processor Speed: 3,1 GHz
Number of Processors: 1
Total Number of Cores: 2
L2 Cache (per Core): 256 KB
L3 Cache: 4 MB
Hyper-Threading Technology: Enabled
Memory: 16 GB
System Firmware Version: 489.0.0.0.0
OS Loader Version: 540.120.3~37
SMC Version (system): 2.28f7
Software:
System Software Overview:
System Version: macOS 12.7.6 (21H1320)
Kernel Version: Darwin 21.6.0
Time since boot: 26 days 9:51
Graphics/Displays:
Intel Iris Graphics 6100:
Chipset Model: Intel Iris Graphics 6100
Type: GPU
Bus: Built-In
VRAM (Dynamic, Max): 1536 MB
Vendor: Intel
Device ID: 0x162b
Revision ID: 0x0009
Metal Family: Supported, Metal GPUFamily macOS 1
Displays:
Color LCD:
Display Type: Built-In Retina LCD
Resolution: 2560 x 1600 Retina
Framebuffer Depth: 24-Bit Color (ARGB8888)
Main Display: Yes
Mirror: Off
Online: Yes
Automatically Adjust Brightness: Yes
Connection Type: Internal
Installed Packages:
alabaster: 0.7.16
appdirs: 1.4.4
appnope: 0.1.4
asttokens: 2.4.1
Babel: 2.15.0
beautifulsoup4: 4.12.3
blockdiag: 3.0.0
blosc2: 2.0.0
build: 1.2.1
certifi: 2023.11.17
cftime: 1.6.4
charset-normalizer: 3.3.2
ChimeraX-AddCharge: 1.5.17
ChimeraX-AddH: 2.2.6
ChimeraX-AlignmentAlgorithms: 2.0.2
ChimeraX-AlignmentHdrs: 3.5
ChimeraX-AlignmentMatrices: 2.1
ChimeraX-Alignments: 2.12.7
ChimeraX-AlphaFold: 1.0
ChimeraX-AltlocExplorer: 1.1.1
ChimeraX-AmberInfo: 1.0
ChimeraX-Arrays: 1.1
ChimeraX-Atomic: 1.57.1
ChimeraX-AtomicLibrary: 14.0.6
ChimeraX-AtomSearch: 2.0.1
ChimeraX-AxesPlanes: 2.4
ChimeraX-BasicActions: 1.1.2
ChimeraX-BILD: 1.0
ChimeraX-BlastProtein: 2.4.6
ChimeraX-BondRot: 2.0.4
ChimeraX-BugReporter: 1.0.1
ChimeraX-BuildStructure: 2.12.1
ChimeraX-Bumps: 1.0
ChimeraX-BundleBuilder: 1.2.7
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.1
ChimeraX-ColorActions: 1.0.5
ChimeraX-ColorGlobe: 1.0
ChimeraX-ColorKey: 1.5.6
ChimeraX-CommandLine: 1.2.5
ChimeraX-ConnectStructure: 2.0.1
ChimeraX-Contacts: 1.0.1
ChimeraX-Core: 1.8
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.4
ChimeraX-DiffPlot: 1.0
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
ChimeraX-ItemsInspection: 1.0.1
ChimeraX-IUPAC: 1.0
ChimeraX-Label: 1.1.10
ChimeraX-ListInfo: 1.2.2
ChimeraX-Log: 1.1.6
ChimeraX-LookingGlass: 1.1
ChimeraX-Maestro: 1.9.1
ChimeraX-Map: 1.2
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.1
ChimeraX-MedicalToolbar: 1.0.3
ChimeraX-Meeting: 1.0.1
ChimeraX-MLP: 1.1.1
ChimeraX-mmCIF: 2.14.1
ChimeraX-MMTF: 2.2
ChimeraX-Modeller: 1.5.17
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.2
ChimeraX-NMRSTAR: 1.0.2
ChimeraX-NRRD: 1.2
ChimeraX-Nucleotides: 2.0.3
ChimeraX-OpenCommand: 1.13.5
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.2
ChimeraX-QScore: 1.1
ChimeraX-ReadPbonds: 1.0.1
ChimeraX-Registration: 1.1.2
ChimeraX-RemoteControl: 1.0
ChimeraX-RenderByAttr: 1.4.1
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: 3.0.15
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.5
ChimeraX-STL: 1.0.1
ChimeraX-Storm: 1.0
ChimeraX-StructMeasure: 1.2.1
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.39.1
ChimeraX-uniprot: 2.3
ChimeraX-UnitCell: 1.0.1
ChimeraX-ViewDockX: 1.4.3
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.4
ChimeraX-Zone: 1.0.1
colorama: 0.4.6
comm: 0.2.2
contourpy: 1.2.1
cxservices: 1.2.2
cycler: 0.12.1
Cython: 3.0.10
debugpy: 1.8.1
decorator: 5.1.1
docutils: 0.20.1
executing: 2.0.1
filelock: 3.13.4
fonttools: 4.53.0
funcparserlib: 2.0.0a0
glfw: 2.7.0
grako: 3.16.5
h5py: 3.11.0
html2text: 2024.2.26
idna: 3.7
ihm: 1.0
imagecodecs: 2024.1.1
imagesize: 1.4.1
ipykernel: 6.29.2
ipython: 8.21.0
ipywidgets: 8.1.3
jedi: 0.19.1
jinja2: 3.1.4
jupyter-client: 8.6.0
jupyter-core: 5.7.2
jupyterlab-widgets: 3.0.11
kiwisolver: 1.4.5
line-profiler: 4.1.2
lxml: 5.2.1
lz4: 4.3.3
MarkupSafe: 2.1.5
matplotlib: 3.8.4
matplotlib-inline: 0.1.7
msgpack: 1.0.8
nest-asyncio: 1.6.0
netCDF4: 1.6.5
networkx: 3.3
nibabel: 5.2.0
nptyping: 2.5.0
numexpr: 2.10.0
numpy: 1.26.4
openvr: 1.26.701
packaging: 23.2
ParmEd: 4.2.2
parso: 0.8.4
pep517: 0.13.1
pexpect: 4.9.0
pillow: 10.3.0
pip: 24.0
pkginfo: 1.10.0
platformdirs: 4.2.2
prompt-toolkit: 3.0.47
psutil: 5.9.8
ptyprocess: 0.7.0
pure-eval: 0.2.2
py-cpuinfo: 9.0.0
pycollada: 0.8
pydicom: 2.4.4
pygments: 2.17.2
pynmrstar: 3.3.4
pynrrd: 1.0.0
PyOpenGL: 3.1.7
PyOpenGL-accelerate: 3.1.7
pyopenxr: 1.0.3401
pyparsing: 3.1.2
pyproject-hooks: 1.1.0
PyQt6-commercial: 6.6.1
PyQt6-Qt6: 6.6.3
PyQt6-sip: 13.6.0
PyQt6-WebEngine-commercial: 6.6.0
PyQt6-WebEngine-Qt6: 6.6.3
python-dateutil: 2.9.0.post0
pytz: 2024.1
pyzmq: 26.0.3
qtconsole: 5.5.1
QtPy: 2.4.1
RandomWords: 0.4.0
requests: 2.31.0
scipy: 1.13.0
setuptools: 69.5.1
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.1
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.3
tables: 3.8.0
tcia-utils: 1.5.1
tifffile: 2024.1.30
tinyarray: 1.2.4
tornado: 6.4.1
traitlets: 5.14.2
typing-extensions: 4.12.2
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.11
File attachment: sym-bug.cxc
Attachments (1)
Change History (6)
by , 12 months ago
| Attachment: | sym-bug.cxc added |
|---|
comment:1 by , 12 months ago
| Component: | Unassigned → Higher-Order Structure |
|---|---|
| Owner: | set to |
| Platform: | → all |
| Project: | → ChimeraX |
| Status: | new → assigned |
| Summary: | ChimeraX bug report submission → 'sym' problems |
comment:2 by , 12 months ago
| Cc: | added |
|---|---|
| Owner: | changed from to |
This is a bug. The trouble is with the combine command. You combined two AlphaFold models, each had a single chain A. In the combined model the combine command changed one of the chains to B. But it kept an internal attribute called mmcif_chain_id as A for both of the chains. In mmCIF format their are mmcif chain ids and author chain ids and ChimeraX usually displays and uses author chain ids, but it remembers the mmcif chain ids because those are used in all the mmcif meta data tables, for example in the assemblies table. When the sym command tries to write your assembly information it sees that both chains have mmcif_chain_id A and so it writes that into the table. Both chains can't have the same chain id and when your write that out as mmCIF our mmCIF writer fixes it and makes the mmCIF chain ids A and B, but the assembly table is wrong because it called both chains A.
I think the right solution in our code is the combine command should eliminate the mmcif_chain_id attribute since I don't think combine preserves any of the mmCIF table meta data. If combine removed the invalid mmcif_chain_id from both chains then the sym command will put the author chain ids into the assembly table (A and B) and I believe the mmCIF writer would use the author chain ids as the mmcif chain ids.
I'm reassigning to Eric since he wrote the combine command.
Guillaume, there are two ways you can fix this before Eric fixes it. You can edit the assembly table in the mmCIF file you wrote
/tmp/d4-ASU-model.cif
changing this line
_pdbx_struct_assembly_gen.asym_id_list A
to
_pdbx_struct_assembly_gen.asym_id_list A,B
Then the assembly will include chain B.
Another approach is to write out the combined model to a temporary mmCIF file and read it back in -- then it won't have the wrong mmcif_chain_id attributes and the sym command will put the correct information into the assembly table.
comment:3 by , 12 months ago
Thank you. The workaround of saving a cif file after combine and re-opening it gave the expected result, thank you! It\u2019s easy enough and I will use this until the bug is fixed. Cheers, Guillaume > > > > > > > > > > > > > > > > När du har kontakt med oss på Uppsala universitet med e-post så innebär det att vi behandlar dina personuppgifter. För att läsa mer om hur vi gör det kan du läsa här: http://www.uu.se/om-uu/dataskydd-personuppgifter/ E-mailing Uppsala University means that we will process your personal data. For more information on how this is performed, please read here: http://www.uu.se/en/about-uu/data-protection-policy
comment:4 by , 12 months ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
mmcif_chain_id is a C++ attribute, so I know of no way to "eliminate" the mmcif_chain_id attribute. What I did do is:
1) Since I know of no way to sensibly combine metadata from two models, if models are being combined then the metadata is cleared
2) If combining models requires remapping chain IDs, the mmcif_chain_ids are also remapped to the same values.
This fixes the script that was provided. A possible future enhancement to "combine" would be to allow the user to specify one of the two sets of metadata to retain.
Fix: https://github.com/RBVI/ChimeraX/commit/154bcaba1487ed08b68bb5e7241ab5b16fc375f3
comment:5 by , 12 months ago
That fix sounds good. I don't think there is a need to keep mmcif metadata when combining models. That sounds impossible since the metadata is tables that have chain ids in them and since combine changes chain ids it would have to know how to fix any and all metadata tables.
Making the mmcif chain ids match the ChimeraX chain ids is a good fix.
Added by email2trac