Opened 6 years ago

Closed 6 years ago

#2572 closed defect (fixed)

Atom matching occurring in input order rather than name order

Reported by: andrei@… Owned by: Conrad Huang
Priority: normal Milestone:
Component: Command Line Version:
Keywords: Cc: Eric Pettersen
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Darwin-19.0.0-x86_64-i386-64bit
ChimeraX Version: 0.91 (2019-11-09)
Description
There is a problem with the alignment of the small molecules. 
It seems that the command "align #1 to #2" selects the two atom groups based on the order they appear in the input files and does not take into account the atom names. This leads to incorrect alignment of the two GLU residues in the attached file.
If the two atom groups are explicitly given ("align #1@c,ca,cb,cg,cd,o,oe1,oe2,n to #2@c,ca,cb,cg,cd,o,oe1,oe2,n") than it works correctly. 


Log:
UCSF ChimeraX version: 0.91 (2019-11-09)  
© 2016-2019 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open
/Users/andrei/tmp/test/glu_superimpose/glu-184-D-10077_residue_shift.cif

Summary of feedback from opening
/Users/andrei/tmp/test/glu_superimpose/glu-184-D-10077_residue_shift.cif  
---  
warnings | Unknown polymer entity '1' near line 88  
Missing or incomplete entity_poly_seq table. Inferred polymer connectivity.  
  

> open /Users/andrei/tmp/test/glu_superimpose/glu-189-A-9918_residue_shift.cif

Summary of feedback from opening
/Users/andrei/tmp/test/glu_superimpose/glu-189-A-9918_residue_shift.cif  
---  
warnings | Unknown polymer entity '1' near line 24  
Missing or incomplete entity_poly_seq table. Inferred polymer connectivity.  
  

> align #8@c* toAtoms #5@c*

No atoms paired for alignment  

> align #1@c* toAtoms #2@c*

RMSD between 5 atom pairs is 1.943 angstroms  

> align #1 toAtoms #2

RMSD between 9 atom pairs is 2.595 angstroms  

> align #1 toAtoms #2

RMSD between 9 atom pairs is 2.595 angstroms  

> align #1 toAtoms #2

RMSD between 9 atom pairs is 2.595 angstroms  

> align #1@ca,cb,cd toAtoms #2@ca,cb,cd

RMSD between 3 atom pairs is 0.020 angstroms  

> align #1 toAtoms #2

RMSD between 9 atom pairs is 2.595 angstroms  

> label #1

> label #1@ca

> ~label #1

> label #1@ca

> label #1@ca

> label #1@cb

> select #1@cb

1 atom, 1 model selected  

> label #1@cb

> align #1@c* toAtoms #2@c*

RMSD between 5 atom pairs is 1.943 angstroms  

> align #1@c,ca,cb,cg,cd toAtoms #2@c,ca,cb,cg,cd

RMSD between 5 atom pairs is 0.075 angstroms  

> align #1@c,ca,cb,cg,cd toAtoms #2@c,ca,cb,cg,cd

RMSD between 5 atom pairs is 0.075 angstroms  

> align #1@c,ca,cb,cg,cd,o toAtoms #2@c,ca,cb,cg,cd,o

RMSD between 6 atom pairs is 0.494 angstroms  

> align #1@c,ca,cb,cg,cd,o,oe1,oe2 toAtoms #2@c,ca,cb,cg,cd,o,oe1,oe2

RMSD between 8 atom pairs is 1.177 angstroms  

> select

18 atoms, 16 bonds, 3 models selected  

> select #2@c,ca,cb,cg,cd,o,oe1,oe2

8 atoms, 7 bonds, 1 model selected  

> align #1@c,ca,cb,cg,cd,o,oe1,oe2,n toAtoms #2@c,ca,cb,cg,cd,o,oe1,oe2,n

RMSD between 9 atom pairs is 1.120 angstroms  

> align #1 toAtoms #2

RMSD between 9 atom pairs is 2.595 angstroms  

> align #1 toAtoms #2

RMSD between 9 atom pairs is 2.595 angstroms  

> align #1@n,c,ca,cb,cg,cd,o,oe1,oe2 toAtoms #2@c,ca,cb,cg,cd,o,oe1,oe2,n

RMSD between 9 atom pairs is 2.730 angstroms  

> close session

> open
/Users/andrei/tmp/test/glu_superimpose/glu-184-D-10077_residue_shift.cif

Summary of feedback from opening
/Users/andrei/tmp/test/glu_superimpose/glu-184-D-10077_residue_shift.cif  
---  
warnings | Unknown polymer entity '1' near line 26  
Missing or incomplete entity_poly_seq table. Inferred polymer connectivity.  
  

> open /Users/andrei/tmp/test/glu_superimpose/glu-189-A-9918_residue_shift.cif

Summary of feedback from opening
/Users/andrei/tmp/test/glu_superimpose/glu-189-A-9918_residue_shift.cif  
---  
warnings | Unknown polymer entity '1' near line 24  
Missing or incomplete entity_poly_seq table. Inferred polymer connectivity.  
  

> align #1@n,c,ca,cb,cg,cd,o,oe1,oe2 toAtoms #2@c,ca,cb,cg,cd,o,oe1,oe2,n

RMSD between 9 atom pairs is 2.730 angstroms  

> align #1 toAtoms #2

RMSD between 9 atom pairs is 2.595 angstroms  

> align #1@c,ca,cb,cg,cd,o,oe1,oe2,n toAtoms #2@c,ca,cb,cg,cd,o,oe1,oe2,n

RMSD between 9 atom pairs is 1.120 angstroms  

> matchmaker #1@c,ca,cb,cg,cd,o,oe1,oe2,n to #2@c,ca,cb,cg,cd,o,oe1,oe2,n

Reference and/or match model contains no nucleic or amino acid chains.  
Use the command-line 'match' command to superimpose small molecules/ligands.  

> matchmaker #1 to #2

Reference and/or match model contains no nucleic or amino acid chains.  
Use the command-line 'match' command to superimpose small molecules/ligands.  

> matchmaker #1@c,ca,cb,cg,cd,o,oe1,oe2,n to #2@c,ca,cb,cg,cd,o,oe1,oe2,n

Reference and/or match model contains no nucleic or amino acid chains.  
Use the command-line 'match' command to superimpose small molecules/ligands.  

> align #1@c,ca,cb,cg,cd,o,oe1,oe2,n toAtoms #2@c,ca,cb,cg,cd,o,oe1,oe2,n

RMSD between 9 atom pairs is 1.120 angstroms  

> align #1@c,ca,cb,cg,cd,o,oe1,oe2,n toAtoms #2@c,ca,cb,cg,cd,o,oe1,oe2,n

RMSD between 9 atom pairs is 1.120 angstroms  




OpenGL version: 4.1 ATI-3.0.68
OpenGL renderer: AMD Radeon Pro 560 OpenGL Engine
OpenGL vendor: ATI Technologies Inc.
File attachment: glu.zip

glu.zip

Attachments (1)

glu.zip (2.3 KB ) - added by andrei@… 6 years ago.
Added by email2trac

Download all attachments as: .zip

Change History (4)

by andrei@…, 6 years ago

Attachment: glu.zip added

Added by email2trac

comment:1 by Eric Pettersen, 6 years ago

Cc: Eric Pettersen added
Component: UnassignedCommand Line
Owner: set to Conrad Huang
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionAtom matching occurring in input order rather than name order

Like Chimera, ChimeraX needs to sort atoms by name when the atom names haven't been given explicitly.

Reported by Andrei Istrate

comment:2 by Eric Pettersen, 6 years ago

I looked into what is needed here. AtomSpec.evaluate() would need to accept a 'ordered' boolean (default False) which would eventually be passed around to Structure.atomspec_atoms (well, Model.atomspec_atoms from AtomSpec's point of view). That way I can implement an OrderedAtomsArg that uses the boolean when it calls evaluate().

I could have Structure.atomspec_atoms *always* returned the sorted order, but that varies from very expensive to mildly expensive performance-wise in the general case, depending on how much effort is expended on the sort implementation.

comment:3 by Eric Pettersen, 6 years ago

Resolution: fixed
Status: assignedclosed

"align" command now asks for the implied atoms to be sorted.

Note: See TracTickets for help on using tickets.