Opened 2 months ago

Closed 2 months ago

Last modified 2 months ago

#18427 closed defect (fixed)

C++ structure position not always updated

Reported by: Tristan Croll Owned by: pett
Priority: normal Milestone:
Component: Core Version:
Keywords: Cc: Tom Goddard
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Windows-10-10.0.26100
ChimeraX Version: 1.10.1 (2025-07-24 20:15:27 UTC)
Description
Not sure exactly what happened here and not sure if I'll ever be able to reproduce it, but reporting it because it's weird and a bit worrisome... in brief:

- Opened a .sdf file containing a few different small molecules
- Used "move cofr" to move that model group to the current center of rotation
- Added hydrogens to one and did a bit of editing, then selected it from ISOLDE. This (a) removes that structure from the session; (b) sets the atom coordinates to the current scene coordinates and resets the position to identity; (c) reparents it under the ISOLDE "Data Manager" `Model` instance, and (d) adds the result back to the session.

First thing I noticed was the "Move atoms" right mouse mode misbehaving - for thsi specific model, right-click-and-drag would make the selected atoms immediately disappear somewhere offscreen. Probing around in the Python layer:

m = session.isolde.selected_model
m.position.matrix
array([[1., 0., 0., 0.],
       [0., 1., 0., 0.],
       [0., 0., 1., 0.]])

m.parent.position.matrix
array([[1., 0., 0., 0.],
       [0., 1., 0., 0.],
       [0., 0., 1., 0.]])

m.parent.parent.position.matrix
array([[1., 0., 0., 0.],
       [0., 1., 0., 0.],
       [0., 0., 1., 0.]])

... and yet:

m.atoms.coords - m.atoms.scene_coords
array([[  1.18199274,  39.7014109 , -24.12552742],
       [  1.18199274,  39.7014109 , -24.12552742],
       [  1.18199274,  39.7014109 , -24.12552742],
...

What eventually fixed it was when I used the "Move model" right mouse mode to shift the model just a fraction - after this the "Move atoms" mode worked correctly. Resetting the position to unity with:

from chimerax.geometry import Place
m.parent.position = Place()

... and checking again, now the coords and scene coords are identical as expected.

Best guess: when the structure was removed from its original parent, its C++ layer somehow retained a pointer to the parent's transform, and then using the "Move model" mouse mode triggered an update that removed it? But I'm just guessing here.

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.10.1 (2025-07-24)  
© 2016-2025 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open 8uf6 structureFactors true overSampling 2.5

Summary of feedback from opening 8uf6 fetched from pdb  
---  
warning | WARNING: multiple experimental reflection datasets found:  
F_meas_au, F_meas_sigma_au,  
intensity_meas, intensity_sigma  
Automatically choosing "F_meas_au, F_meas_sigma_au".  
notes | Resolution: 2.901009614977084  
Launching live xmap mgr took 1.315704107284546 seconds.  
  
Opened (LIVE) 2mFo-DFc as #1.1.1.2, grid size 46,46,46, pixel
0.558,0.549,0.545, shown at level 0.101, step 1, values float32  
Opened (LIVE) mFo-DFc as #1.1.1.3, grid size 46,46,46, pixel
0.558,0.549,0.545, shown at level -0.071,0.071, step 1, values float32  
Opened (LIVE) 2mFo-DFc_sharp_26 as #1.1.1.4, grid size 46,46,46, pixel
0.558,0.549,0.545, shown at level 0.305, step 1, values float32  
Opened (STATIC) pdbx_DELFWT, pdbx_DELPHWT as #1.1.1.5, grid size 46,46,46,
pixel 0.558,0.549,0.545, shown at level -0.226,0.226, step 1, values float32  
Opened (STATIC) pdbx_FWT, pdbx_PHWT as #1.1.1.6, grid size 46,46,46, pixel
0.558,0.549,0.545, shown at level -0.485,0.485, step 1, values float32  
8uf6 title:  
Structure of Trek-1(K2P2.1) with ML336 [more info...]  
  
Chain information for 8uf6  
---  
Chain | Description | UniProt  
1.2/A 1.2/B | Potassium channel subfamily K member 2 | KCNK2_MOUSE 35-321  
  
Non-standard residues in 8uf6 #1.2  
---  
16C — N-((E,2S,3R)-1,3-dihydroxyoctadec-4-en-2-yl)palmitamide (C16-ceramide;
N-palmitoyl-D-erythro-sphingosine;
(2S,3R,4E)-2-palmitoylaminooctadec-4-ene-1,3-diol;
(2S,3R,4E)-2-palmitoylamino-1,3-octadec-4-enediol)  
1PE — pentaethylene glycol (PEG400)  
CD — cadmium ion  
D10 — decane  
D12 — dodecane  
K — potassium ion  
OCT — N-octane  
R16 — hexadecane  
WRZ — N-[(2,4-dichlorophenyl)methyl]-4-propanamidobenzamide  
  

> close #1.1.1.5-6

> view /B:WRZ

> addh

Summary of feedback from adding hydrogens to 8uf6 #1.2  
---  
warnings | Not adding hydrogens to /A GLN 72 CB because it is missing heavy-atom bond partners  
Not adding hydrogens to /B GLN 76 CB because it is missing heavy-atom bond
partners  
Not adding hydrogens to /B VAL 192 CB because it is missing heavy-atom bond
partners  
Not adding hydrogens to /B THR 195 CB because it is missing heavy-atom bond
partners  
Not adding hydrogens to /B THR 211 CB because it is missing heavy-atom bond
partners  
2 messages similar to the above omitted  
notes | Termini for 8uf6 (#1.2) chain A determined from SEQRES records  
Termini for 8uf6 (#1.2) chain B determined from SEQRES records  
Chain-initial residues that are actual N termini: /B SER 35  
Chain-initial residues that are not actual N termini: /A LYS 43, /A SER 125  
Chain-final residues that are actual C termini: /A VAL 321  
Chain-final residues that are not actual C termini: /A GLY 113, /B GLU 316  
Missing OXT added to C-terminal residue /A VAL 321  
499 hydrogen bonds  
Adding 'H' to /A LYS 43  
Adding 'H' to /A SER 125  
/B GLU 316 is not terminus, removing H atom from 'C'  
4697 hydrogens added  
  

> isolde select #1

> set selectionWidth 4

ISOLDE: Checking and correcting nomenclature for (pseudo)symmetric side
chains...  
ISOLDE: Corrected atom nomenclature of 14 residues in model #1.2 to IUPAC-IUB
standards.  
Opened (LIVE) MDFF potential as #1.1.1.5, grid size 46,46,46, pixel
0.558,0.549,0.545, shown at level 0.268, step 1, values float32  
Done loading forcefield  

> isolde set simFidelityMode Highest/Slowest

ISOLDE: setting sim fidelity mode to Highest/Slowest  
nonbonded_cutoff_distance = 1.700000  
use_gbsa = True  
gbsa_cutoff = 2.000000  

> select up

38 atoms, 39 bonds, 1 residue, 1 model selected  

> show sel

> select clear

> select up

39 atoms, 40 bonds, 1 residue, 1 model selected  

> cd "C:/Users/Tristan
> Croll/Documents/Structures/trek-1_minispadin/8uf6_ml336"

Current working directory is: C:\Users\Tristan
Croll\Documents\Structures\trek-1_minispadin\8uf6_ml336  

> isolde parameterise sel

Running ANTECHAMBER command: C:/Program
Files/ChimeraX/bin/amber20/bin/antechamber -ek qm_theory='AM1', -i
C:\Users\TRISTA~1\AppData\Local\Temp\tmpyysyip8e\ante.in.mol2 -fi mol2 -o
C:\Users\TRISTA~1\AppData\Local\Temp\tmpyysyip8e\ante.out.mol2 -fo mol2 -c bcc
-nc 0 -j 5 -s 2 -dr n  
(WRZ) ``  
(WRZ) `Welcome to antechamber 20.0: molecular input file processor.`  
(WRZ) ``  
(WRZ) `Info: Finished reading file
(C:\Users\TRISTA~1\AppData\Local\Temp\tmpyysyip8e\ante.in.mol2); atoms read
(39), bonds read (40).`  
(WRZ) `Info: Determining atomic numbers from atomic symbols which are case
sensitive.`  
(WRZ) `Running: "C:/Program Files/ChimeraX/bin/amber20/bin/bondtype" -j part
-i ANTECHAMBER_BOND_TYPE.AC0 -o ANTECHAMBER_BOND_TYPE.AC -f ac`  
(WRZ) `bash.exe: warning: could not find /tmp, please create!`  
(WRZ) ``  
(WRZ) ``  
(WRZ) `Running: "C:/Program Files/ChimeraX/bin/amber20/bin/atomtype" -i
ANTECHAMBER_AC.AC0 -o ANTECHAMBER_AC.AC -p gaff`  
(WRZ) `bash.exe: warning: could not find /tmp, please create!`  
(WRZ) `Info: Total number of electrons: 182; net charge: 0`  
(WRZ) ``  
(WRZ) `Running: "C:/Program Files/ChimeraX/bin/amber20/bin/sqm" -O -i sqm.in
-o sqm.out`  
(WRZ) `bash.exe: warning: could not find /tmp, please create!`  
(WRZ) ``  
(WRZ) `Running: "C:/Program Files/ChimeraX/bin/amber20/bin/am1bcc" -i
ANTECHAMBER_AM1BCC_PRE.AC -o ANTECHAMBER_AM1BCC.AC -f ac -p "C:/Program
Files/ChimeraX/bin/amber20/dat/antechamber/BCCPARM.DAT" -s 2 -j 1`  
(WRZ) `bash.exe: warning: could not find /tmp, please create!`  
(WRZ) ``  
(WRZ) `Running: "C:/Program Files/ChimeraX/bin/amber20/bin/atomtype" -f ac -p
bcc -o ANTECHAMBER_AM1BCC.AC -i ANTECHAMBER_AM1BCC_PRE.AC`  
(WRZ) `bash.exe: warning: could not find /tmp, please create!`  
(WRZ) ``  
Charges for residue WRZ determined  
OpenMM ffXML file WRZ written to the current working directory.  
New template added to forcefield as USER_WRZ. This ligand should now work in
all remaining simulations for this session. To use in future sessions, load
the ffXML file with ISOLDE's Load Residue MD Definition(s) button.  
Loading residue template for 16C from internal database  
Loading residue template for 1PE from internal database  
Loading residue template for D10 from internal database  
Loading residue template for D12 from internal database  
Loading residue template for OCT from internal database  
Loading residue template for R16 from internal database  
Deleted the following atoms from residue WRZ A401: H14, H15, H7, H9, H12, H2,
H3, H10, H4, H5, H8, H11, H13, H1, H6  

> view /B:WRZ

> select #1

9189 atoms, 9281 bonds, 34 pseudobonds, 569 residues, 34 models selected  

> isolde sim start /A-B

ISOLDE: started sim  

> select clear

> isolde sim pause

> isolde sim resume

> isolde sim pause

> isolde sim resume

> isolde pepflip /B:113

[Repeated 1 time(s)]

> isolde pepflip /B:115

> isolde sim pause

> close

Sim termination reason: model deleted  
ISOLDE: model deleted during running simulation.  
Deleting Crystallographic maps(8uf6-sf.cif)  
Deleting (LIVE) 2mFo-DFc  
Deleting (LIVE) mFo-DFc  
Deleting (LIVE) 2mFo-DFc_sharp_26  
Deleting (LIVE) MDFF potential  

> open "C:/Users/Tristan
> Croll/Documents/Structures/trek-1_minispadin/8uf6/8uf6_noncovalent.cif"

Summary of feedback from opening C:/Users/Tristan
Croll/Documents/Structures/trek-1_minispadin/8uf6/8uf6_noncovalent.cif  
---  
warnings | Atom H1 is not in the residue template for WRZ /B:401  
Atom HH2 is not in the residue template for 1PE /B:402  
  
Chain information for 8uf6_noncovalent.cif #1  
---  
Chain | Description  
A B | Potassium channel subfamily K member 2  
  

> open "C:/Users/Tristan
> Croll/Documents/Structures/trek-1_minispadin/boltz1/trek1_dimer_ml335/predictions/trek1_dimer_ml335/trek1_dimer_ml335_model_0.cif"

trek1_dimer_ml335_model_0.cif title:  
. [more info...]  
  
Chain information for trek1_dimer_ml335_model_0.cif #2  
---  
Chain | Description  
A B | .  
  
Non-standard residues in trek1_dimer_ml335_model_0.cif #2  
---  
CLR — (CLR)  
K — (K)  
PLM — (PLM)  
Q6F — (Q6F)  
  

No chain in structure corresponds to chain ID given in local score info (chain
'C')  

Computing secondary structure  

> matchmaker #2/B to #1/B

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 8uf6_noncovalent.cif, chain B (#1) with
trek1_dimer_ml335_model_0.cif, chain B (#2), sequence alignment score = 1409.7  
RMSD between 240 pruned atom pairs is 0.735 angstroms; (across all 282 pairs:
1.632)  
  

> show

> hide HC

> open "C:/Users/Tristan
> Croll/Documents/Structures/trek-1_minispadin/trek1_minispadin_in_membrane_md_snapshot_no_solvent.cif"

Summary of feedback from opening C:/Users/Tristan
Croll/Documents/Structures/trek-1_minispadin/trek1_minispadin_in_membrane_md_snapshot_no_solvent.cif  
---  
warnings | Unknown polymer entity '1' on line 142  
Unknown polymer entity '2' on line 9904  
Missing or incorrect sequence information. Inferred polymer connectivity.  
Atom H is not in the residue template for LEU /A:1  
Atom H is not in the residue template for LEU /B:1  
Atom H is not in the residue template for GLY /C:1  
Atom H61 is not in the residue template for 4YB /G:1  
Atom H61 is not in the residue template for 4YB /H:1  
Atom H61 is not in the residue template for 4YB /I:1  
Atom H61 is not in the residue template for 4YB /J:1  
Atom N is not in the residue template for POP /K:400  
Atom N is not in the residue template for POP /K:401  
Atom N is not in the residue template for POP /K:402  
Atom N is not in the residue template for POP /K:403  
Atom N is not in the residue template for POP /K:177  
461 messages similar to the above omitted  
Atom C4 is not in the residue template for 0YB /G:2  
Atom C4 is not in the residue template for 0YB /H:2  
Atom C4 is not in the residue template for 0YB /I:2  
Atom C4 is not in the residue template for 0YB /J:2  
  
Chain information for trek1_minispadin_in_membrane_md_snapshot_no_solvent.cif
#3  
---  
Chain | Description  
A B | No description available  
C | No description available  
  

> matchmaker #3/B to #1/B

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 8uf6_noncovalent.cif, chain B (#1) with
trek1_minispadin_in_membrane_md_snapshot_no_solvent.cif, chain B (#3),
sequence alignment score = 1385.7  
RMSD between 149 pruned atom pairs is 0.837 angstroms; (across all 282 pairs:
16.896)  
  

> hide #!1 models

> show #!1 models

> open "C:/Users/Tristan
> Croll/Documents/Structures/trek-1_minispadin/8uf6/ml336_minispadin_merge.sdf"

> hide #!1 models

> hide #2 models

> hide #!3 models

> show #!1 models

> move cofr #3

Could not compute center of models since none are displayed  

> move cofr #4

> hide #4.2 models

> hide #4.1 models

> select up

46 atoms, 47 bonds, 1 residue, 1 model selected  

> addh #4.3

Summary of feedback from adding hydrogens to ml336_minispadin_merge.sdf #4.3  
---  
notes | 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  
41 hydrogens added  
  

> delete sel

[Repeated 1 time(s)]

> hide #!1 models

> delete sel

[Repeated 1 time(s)]

> select up

86 atoms, 87 bonds, 1 residue, 1 model selected  

> isolde select #4.3

ISOLDE: Checking and correcting nomenclature for (pseudo)symmetric side
chains...  

> cd "C:/Users/Tristan
> Croll/Documents/Structures/trek-1_minispadin/8uf6/ml336_minispadin_merge/merge_1"

Current working directory is: C:\Users\Tristan
Croll\Documents\Structures\trek-1_minispadin\8uf6\ml336_minispadin_merge\merge_1  

> isolde parameterise sel

Running ANTECHAMBER command: C:/Program
Files/ChimeraX/bin/amber20/bin/antechamber -ek qm_theory='AM1', -i
C:\Users\TRISTA~1\AppData\Local\Temp\tmpvb6e00ao\ante.in.mol2 -fi mol2 -o
C:\Users\TRISTA~1\AppData\Local\Temp\tmpvb6e00ao\ante.out.mol2 -fo mol2 -c bcc
-nc 0 -j 5 -s 2 -dr n  
(UNL) ``  
(UNL) `Welcome to antechamber 20.0: molecular input file processor.`  
(UNL) ``  
(UNL) `Info: Finished reading file
(C:\Users\TRISTA~1\AppData\Local\Temp\tmpvb6e00ao\ante.in.mol2); atoms read
(86), bonds read (87).`  
(UNL) `Info: Determining atomic numbers from atomic symbols which are case
sensitive.`  
(UNL) `Running: "C:/Program Files/ChimeraX/bin/amber20/bin/bondtype" -j part
-i ANTECHAMBER_BOND_TYPE.AC0 -o ANTECHAMBER_BOND_TYPE.AC -f ac`  
(UNL) `bash.exe: warning: could not find /tmp, please create!`  
(UNL) ``  
(UNL) ``  
(UNL) `Running: "C:/Program Files/ChimeraX/bin/amber20/bin/atomtype" -i
ANTECHAMBER_AC.AC0 -o ANTECHAMBER_AC.AC -p gaff`  
(UNL) `bash.exe: warning: could not find /tmp, please create!`  
(UNL) `Info: Total number of electrons: 358; net charge: 0`  
(UNL) ``  
(UNL) `Running: "C:/Program Files/ChimeraX/bin/amber20/bin/sqm" -O -i sqm.in
-o sqm.out`  
(UNL) `bash.exe: warning: could not find /tmp, please create!`  
(UNL) ``  
(UNL) `Running: "C:/Program Files/ChimeraX/bin/amber20/bin/am1bcc" -i
ANTECHAMBER_AM1BCC_PRE.AC -o ANTECHAMBER_AM1BCC.AC -f ac -p "C:/Program
Files/ChimeraX/bin/amber20/dat/antechamber/BCCPARM.DAT" -s 2 -j 1`  
(UNL) `bash.exe: warning: could not find /tmp, please create!`  
(UNL) ``  
(UNL) `Running: "C:/Program Files/ChimeraX/bin/amber20/bin/atomtype" -f ac -p
bcc -o ANTECHAMBER_AM1BCC.AC -i ANTECHAMBER_AM1BCC_PRE.AC`  
(UNL) `bash.exe: warning: could not find /tmp, please create!`  
(UNL) ``  
Charges for residue UNL determined  
OpenMM ffXML file UNL written to the current working directory.  
New template added to forcefield as USER_UNL. This ligand should now work in
all remaining simulations for this session. To use in future sessions, load
the ffXML file with ISOLDE's Load Residue MD Definition(s) button.  

> show #2 models

> color :Q6F brown

> color byhetero

> ui mousemode right "translate selected atoms"

> usage move

move axis [distance [frames]] [coordinateSystem a coordinate-system] [models a
models specifier] [atoms an atoms specifier]  
— move camera, models, or atoms  
axis: an axis vector  
distance: a number  
frames: an integer ≥ 1

move cofr models  
— move models to center of rotation  

> ui tool show Shell

0.01s - Debugger warning: It seems that frozen modules are being used, which
may  
0.00s - make the debugger miss breakpoints. Please pass -Xfrozen_modules=off  
0.00s - to python to disable frozen modules.  
0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to
disable this validation.  

> select

89099 atoms, 89018 bonds, 50 pseudobonds, 2543 residues, 22 models selected  

> close #4

> select up

86 atoms, 87 bonds, 1 residue, 1 model selected  

> select clear

> select #2

6924 atoms, 7078 bonds, 866 residues, 1 model selected  

> show #1

> hide #!5 models

> show #!5 models

> select #5

86 atoms, 87 bonds, 1 residue, 12 models selected  

> show #5

> select up

86 atoms, 87 bonds, 1 residue, 1 model selected  

> select clear

> select #2

6924 atoms, 7078 bonds, 866 residues, 1 model selected  

> ui mousemode right "translate selected models"

> select #5

86 atoms, 87 bonds, 1 residue, 12 models selected  

> view matrix models #5,1,0,0,-3.4694e-18,0,1,0,-4.3368e-19,0,0,1,-4.3368e-18

> ui mousemode right "translate selected atoms"




OpenGL version: 3.3.0 NVIDIA 576.57
OpenGL renderer: NVIDIA GeForce RTX 3070 Laptop GPU/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation

Python: 3.11.4
Locale: en_GB.cp1252
Qt version: PyQt6 6.8.1, Qt 6.8.2
Qt runtime version: 6.8.2
Qt platform: windows

Manufacturer: HP
Model: HP ZBook Studio 15.6 inch G8 Mobile Workstation PC
OS: Microsoft Windows 11 Pro (Build 26100)
Memory: 34,007,068,672
MaxProcessMemory: 137,438,953,344
CPU: 16 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz
OSLanguage: en-GB

Installed Packages:
    alabaster: 1.0.0
    appdirs: 1.4.4
    asteval: 1.0.6
    asttokens: 3.0.0
    babel: 2.17.0
    beautifulsoup4: 4.13.3
    blockdiag: 3.0.0
    blosc2: 3.6.1
    build: 1.2.2.post1
    certifi: 2025.7.14
    cftime: 1.6.4.post1
    charset-normalizer: 3.4.2
    ChimeraX-AddCharge: 1.5.19
    ChimeraX-AddH: 2.2.7
    ChimeraX-AlignmentAlgorithms: 2.0.2
    ChimeraX-AlignmentHdrs: 3.6.1
    ChimeraX-AlignmentMatrices: 2.1
    ChimeraX-Alignments: 2.20.2
    ChimeraX-AlphaFold: 1.0.1
    ChimeraX-AltlocExplorer: 1.1.2
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Aniso: 1.1.4
    ChimeraX-Arrays: 1.1
    ChimeraX-Atomic: 1.60.7
    ChimeraX-AtomicLibrary: 14.1.19
    ChimeraX-AtomSearch: 2.0.1
    ChimeraX-AxesPlanes: 2.4
    ChimeraX-BasicActions: 1.1.3
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 3.0.0
    ChimeraX-Boltz: 1.0
    ChimeraX-BondRot: 2.0.4
    ChimeraX-BugReporter: 1.0.2
    ChimeraX-BuildStructure: 2.13.1
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.5.1
    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.5
    ChimeraX-ChemGroup: 2.0.2
    ChimeraX-Clashes: 2.3
    ChimeraX-Clipper: 0.25.1
    ChimeraX-ColorActions: 1.0.5
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.8
    ChimeraX-CommandLine: 1.3
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0.1
    ChimeraX-Core: 1.10.1
    ChimeraX-CoreFormats: 1.2
    ChimeraX-coulombic: 1.4.5
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0.1
    ChimeraX-DataFormats: 1.2.4
    ChimeraX-Dicom: 1.2.7
    ChimeraX-DistMonitor: 1.4.2
    ChimeraX-DockPrep: 1.1.4
    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.4.1
    ChimeraX-Hbonds: 2.5.1
    ChimeraX-Help: 1.3
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.1
    ChimeraX-ImageFormats: 1.2
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.3
    ChimeraX-ISOLDE: 1.10.1
    ChimeraX-ItemsInspection: 1.0.1
    ChimeraX-IUPAC: 1.0
    ChimeraX-KVFinder: 1.6.2
    ChimeraX-Label: 1.1.14
    ChimeraX-ListInfo: 1.2.2
    ChimeraX-Log: 1.2
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.9.1
    ChimeraX-Map: 1.3
    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.2.2
    ChimeraX-MCopy: 1.0
    ChimeraX-MDcrds: 2.10.1
    ChimeraX-MedicalToolbar: 1.1
    ChimeraX-Meeting: 1.0.1
    ChimeraX-MLP: 1.1.1
    ChimeraX-mmCIF: 2.16
    ChimeraX-MMTF: 2.2
    ChimeraX-ModelArchive: 1.0
    ChimeraX-Modeller: 1.5.19
    ChimeraX-ModelPanel: 1.5.1
    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-MutationScores: 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.14.1
    ChimeraX-OrthoPick: 1.0.1
    ChimeraX-PDB: 2.7.10
    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.3
    ChimeraX-ProfileGrids: 1.1.3
    ChimeraX-PubChem: 2.2
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1.2
    ChimeraX-RemoteControl: 1.0
    ChimeraX-RenderByAttr: 1.6.3
    ChimeraX-RenumberResidues: 1.1
    ChimeraX-ResidueFit: 1.0.1
    ChimeraX-RestServer: 1.3.1
    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.3
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0.1
    ChimeraX-Segmentations: 3.5.7
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.17.1
    ChimeraX-Shape: 1.1
    ChimeraX-Shell: 1.0.1
    ChimeraX-Shortcuts: 1.2.1
    ChimeraX-ShowSequences: 1.0.3
    ChimeraX-SideView: 1.0.1
    ChimeraX-SimilarStructures: 1.0.1
    ChimeraX-Smiles: 2.1.2
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.19.1
    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.2
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-TaskManager: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.2.3
    ChimeraX-ToolshedUtils: 1.2.4
    ChimeraX-Topography: 1.0
    ChimeraX-ToQuest: 1.0
    ChimeraX-Tug: 1.0.1
    ChimeraX-UI: 1.45.2
    ChimeraX-Umap: 1.0
    ChimeraX-uniprot: 2.3.1
    ChimeraX-UnitCell: 1.0.1
    ChimeraX-ViewDockX: 1.4.4
    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.5
    ChimeraX-Zone: 1.0.1
    colorama: 0.4.6
    comm: 0.2.2
    comtypes: 1.4.10
    contourpy: 1.3.2
    coverage: 7.10.0
    cxservices: 1.2.3
    cycler: 0.12.1
    Cython: 3.0.12
    debugpy: 1.8.15
    decorator: 5.2.1
    dill: 0.4.0
    docutils: 0.21.2
    executing: 2.2.0
    filelock: 3.18.0
    fonttools: 4.59.0
    funcparserlib: 2.0.0a0
    glfw: 2.9.0
    grako: 3.16.5
    h5py: 3.14.0
    html2text: 2024.2.26
    idna: 3.10
    ihm: 2.2
    imagecodecs: 2024.6.1
    imagesize: 1.4.1
    iniconfig: 2.1.0
    ipykernel: 6.29.5
    ipython: 8.26.0
    ipywidgets: 8.1.7
    jedi: 0.19.1
    Jinja2: 3.1.6
    jupyter_client: 8.6.3
    jupyter_core: 5.8.1
    jupyterlab_widgets: 3.0.15
    kiwisolver: 1.4.8
    line_profiler: 4.2.0
    lmfit: 1.3.4
    lxml: 5.3.1
    lz4: 4.3.2
    MarkupSafe: 3.0.2
    matplotlib: 3.10.1
    matplotlib-inline: 0.1.7
    msgpack: 1.1.0
    ndindex: 1.10.0
    nest-asyncio: 1.6.0
    netCDF4: 1.6.5
    networkx: 3.3
    nibabel: 5.2.0
    nptyping: 2.5.0
    numdifftools: 0.9.41
    numexpr: 2.11.0
    numpy: 1.26.4
    nvidia-nvjitlink-cu12: 12.9.86
    OpenMM: 8.2.0
    OpenMM-CUDA-12: 8.2.0
    openvr: 1.26.701
    packaging: 24.2
    pandas: 2.3.1
    ParmEd: 4.2.2
    parso: 0.8.4
    pep517: 0.13.1
    pickleshare: 0.7.5
    pillow: 10.4.0
    pip: 25.0.1
    pkginfo: 1.11.1
    platformdirs: 4.3.8
    pluggy: 1.6.0
    prompt_toolkit: 3.0.51
    psutil: 7.0.0
    pure_eval: 0.2.3
    py-cpuinfo: 9.0.0
    pycollada: 0.8
    pydicom: 2.4.4
    Pygments: 2.18.0
    pynmrstar: 3.3.5
    pynrrd: 1.0.0
    PyOpenGL: 3.1.9
    PyOpenGL-accelerate: 3.1.9
    pyopenxr: 1.1.4501
    pyparsing: 3.2.3
    pyproject_hooks: 1.2.0
    PyQt6-commercial: 6.8.1
    PyQt6-Qt6: 6.8.2
    PyQt6-WebEngine-commercial: 6.8.0
    PyQt6-WebEngine-Qt6: 6.8.2
    PyQt6_sip: 13.10.0
    pytest: 8.4.1
    pytest-cov: 6.2.1
    python-dateutil: 2.9.0.post0
    pytz: 2025.2
    pywin32: 310
    pyzmq: 27.0.0
    qtconsole: 5.5.2
    QtPy: 2.4.3
    qtshim: 1.1
    RandomWords: 0.4.0
    requests: 2.32.3
    roman-numerals-py: 3.1.0
    scipy: 1.14.0
    setuptools: 78.1.0
    sfftk-rw: 0.8.1
    six: 1.16.0
    snowballstemmer: 3.0.1
    sortedcontainers: 2.4.0
    soupsieve: 2.7
    Sphinx: 8.2.3
    sphinx-autodoc-typehints: 3.1.0
    sphinxcontrib-applehelp: 2.0.0
    sphinxcontrib-blockdiag: 3.0.0
    sphinxcontrib-devhelp: 2.0.0
    sphinxcontrib-htmlhelp: 2.1.0
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 2.0.0
    sphinxcontrib-serializinghtml: 2.0.0
    stack-data: 0.6.3
    superqt: 0.7.1
    tables: 3.10.2
    tcia_utils: 1.5.1
    tifffile: 2025.3.13
    tinyarray: 1.2.4
    tornado: 6.5.1
    traitlets: 5.14.3
    typing_extensions: 4.14.1
    tzdata: 2025.2
    uncertainties: 3.2.3
    urllib3: 2.5.0
    wcwidth: 0.2.13
    webcolors: 24.11.1
    wheel: 0.45.1
    wheel-filename: 1.4.2
    widgetsnbextension: 4.0.14
    WMI: 1.5.1

Change History (6)

comment:1 by pett, 2 months ago

Cc: Tom Goddard added
Component: UnassignedCore
Owner: set to pett
Platform: all
Project: ChimeraX
Status: newaccepted
Summary: ChimeraX bug report submissionC++ structure position not always updated

comment:2 by pett, 2 months ago

The code that updates the C++ structure position when the structure is added to a session only does so if the incoming position is not the identity, which always is fine if the structure is only added to session once, but not in this unusual situation where the structure is withdrawn from the session and added back again.

You can temporarily work around the problem by changing the test against identity in Structure.added_to_session() to just 'if True:', but I don't think that's the best long term solution. It would be better to set the C++ position from Structure's position property. It might take a few days before I get around to that fix.

comment:3 by pett, 2 months ago

Resolution: fixed
Status: acceptedclosed

Fixed. If something wonky happens with moving models or adding/removing them from sessions in the daily build in the next few days, we know where to look first. I did do a few tests, but it's hard to cover all the possibilities.

Fix: https://github.com/RBVI/ChimeraX/commit/c107186eb500bbde2cad5b71021c0cb5ce773b0e

comment:4 by pett, 2 months ago

Resolution: fixed
Status: closedreopened

On the other hand, I don't think that fix is correct at all -- hold on.

comment:5 by pett, 2 months ago

Resolution: fixed
Status: reopenedclosed

Instead, made the workaround I suggested to Tristan the actual fix. Removed the optimization of not setting the C++ position if the model added to the session has the identity position, which is not always correct.

Fix: https://github.com/RBVI/ChimeraX/commit/de17c400d684d11193c6f00f23871e5c3de19b74

comment:6 by Tristan Croll, 2 months ago

OK, as a temporary workaround to work with ChimeraX 1.10 I can force the
call to `_cpp_notify_position()` when the parent model is added to the
session:
https://github.com/tristanic/chimerax-clipper/commit/099489436787e0de71c79616bfa03d7f25fb5600.
Will push patch builds out on Monday.



On Thu, Aug 14, 2025 at 12:38 AM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
wrote:

>
>
>
>
>
>
Note: See TracTickets for help on using tickets.