Opened 12 months ago

Closed 12 months ago

Last modified 12 months ago

#16152 closed defect (fixed)

'sym' problems

Reported by: guillaume.gaullier@… 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

sym-bug.cxc

Attachments (1)

sym-bug.cxc (1012 bytes ) - added by guillaume.gaullier@… 12 months ago.
Added by email2trac

Download all attachments as: .zip

Change History (6)

by guillaume.gaullier@…, 12 months ago

Attachment: sym-bug.cxc added

Added by email2trac

comment:1 by Eric Pettersen, 12 months ago

Component: UnassignedHigher-Order Structure
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submission'sym' problems

comment:2 by Tom Goddard, 12 months ago

Cc: Tom Goddard Greg Couch added
Owner: changed from Tom Goddard to Eric Pettersen

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 guillaume.gaullier@…, 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 Eric Pettersen, 12 months ago

Resolution: fixed
Status: assignedclosed

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 Tom Goddard, 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.

Note: See TracTickets for help on using tickets.