Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#2930 closed defect (not a bug)

"preframe" off by 1 during recorded morph

Reported by: charles.sindelar@… Owned by: Tom Goddard
Priority: normal Milestone:
Component: Structure Comparison Version:
Keywords: Cc:
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Darwin-17.7.0-x86_64-i386-64bit
ChimeraX Version: 0.92 (2020-03-06)
Description
During movie recording of morphed protein conformations, the "perframe" command lags behind by one frame. The following sequence can produce the bug; you can see how the ADP is following the opening and closing of kinesin's nucleotide pocket, but it starts moving one frame after the morphed ribbon starts moving, and it stops moving one frame after the morphed ribbon stops moving:

open 1mkj
open 1bg2
align #2/A:260-290@CA,N,C,O to #1/A:260-290@CA,N,C,O
morph #1,2 wrap t
alias dragadp align #1/A:85-92@ca,n,c,o toAtoms #3/A:85-92@ca,n,c,o 
show #1 target m
~show #1 target r
~show #1 target a
show #1:adp
movie reset; movie record; perframe "dragadp" frames 7; coordset #3 1,21,5; wait 7; movie stop; movie encode "~/Desktop/test3.mov" 

Log:
Startup Messages  
---  
note | available bundle cache has not been initialized yet  
  
UCSF ChimeraX version: 0.92 (2020-03-06)  
© 2016-2020 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

Error opening /Users/charlessindelar/chimerax_start/chimerax_start.py:  
invalid syntax (chimerax_start.py, line 1)  

> open
> /Users/charlessindelar/Workworkwork/Talks/20_nih_job_talk/chimx_movies/chimx_kin_movie.cxs

opened ChimeraX session  

> select up

Nothing selected  

> select up

Nothing selected  

> select down

Nothing selected  

> select down

Nothing selected  

> select down

Nothing selected  

> select down

Nothing selected  

> movie record

> perframe dragadp frames 7

> coordset #21 21,1,-5

> wait 7

RMSD between 32 atom pairs is 0.247 angstroms  
RMSD between 32 atom pairs is 0.000 angstroms  
RMSD between 32 atom pairs is 0.063 angstroms  
RMSD between 32 atom pairs is 0.125 angstroms  
RMSD between 32 atom pairs is 0.186 angstroms  
RMSD between 32 atom pairs is 0.247 angstroms  
RMSD between 32 atom pairs is 0.247 angstroms  

> movie stop

> movie encode /Users/charlessindelar/Desktop/test.mov

Movie saved to /Users/charlessindelar/Desktop/test.mov  
  

> close session

> open 1mkj

1mkj title:  
Human Kinesin Motor Domain With Docked Neck Linker [more info...]  
  
Chain information for 1mkj #1  
---  
Chain | Description  
A | kinesin heavy chain  
  
Non-standard residues in 1mkj #1  
---  
ADP — adenosine-5'-diphosphate  
MG — magnesium ion  
SO4 — sulfate ion  
  
  

> open 1bg2

1bg2 title:  
Human ubiquitous kinesin motor domain [more info...]  
  
Chain information for 1bg2 #2  
---  
Chain | Description  
A | kinesin  
  
Non-standard residues in 1bg2 #2  
---  
ACT — acetate ion  
ADP — adenosine-5'-diphosphate  
MG — magnesium ion  
  
  

> alias dragadp align #1/A:85-92@ca,n,c,o toAtoms #0/A:85-92@ca,n,c,o

> view name begin

> move x 5 1

> view begin

> movie record

> perframe dragadp frames 7

> move x 1 5

> wait 7

Error executing per-frame command 'dragadp': Unequal number of atoms to pair,
32 and 0  

> movie stop

> movie encode /Users/charlessindelar/Desktop/test2.mov

Movie saved to /Users/charlessindelar/Desktop/test2.mov  
  

> view begin

> movie reset

No movie being recorded.  

> movie reset

No movie being recorded.  

> movie record

> perframe dragadp frames 7

> move x 1 5

> wait 7

Error executing per-frame command 'dragadp': Unequal number of atoms to pair,
32 and 0  

> movie stop

> movie encode /Users/charlessindelar/Desktop/test2.mov

Movie saved to /Users/charlessindelar/Desktop/test2.mov  
  

Unknown command: dragaddp  

> dragadp

Unequal number of atoms to pair, 32 and 0  

> select #1/A:85-92@ca,n,c,o

32 atoms, 31 bonds, 1 model selected  

> select #0/A:85-92@ca,n,c,o

Nothing selected  

> select #0:85-92@ca,n,c,o

Nothing selected  

> alias dragadp align #2/A:85-92@ca,n,c,o toAtoms #1/A:85-92@ca,n,c,o

> view begin

> view begin

> movie reset

No movie being recorded.  

> movie record

> perframe dragadp frames 7

> move x 1 5

> wait 7

RMSD between 32 atom pairs is 0.130 angstroms  
RMSD between 32 atom pairs is 0.130 angstroms  
RMSD between 32 atom pairs is 0.130 angstroms  
RMSD between 32 atom pairs is 0.130 angstroms  
RMSD between 32 atom pairs is 0.130 angstroms  
RMSD between 32 atom pairs is 0.130 angstroms  
RMSD between 32 atom pairs is 0.130 angstroms  

> movie stop

> movie encode /Users/charlessindelar/Desktop/test2.mov

Movie saved to /Users/charlessindelar/Desktop/test2.mov  
  

> align #2/A:260-290@CA,N,C,O toAtoms #1/A:260-290@CA,N,C,O

RMSD between 124 atom pairs is 0.709 angstroms  

> morph #1,2 wrap true

Computed 41 frame morph #3  

> coordset #3 1,41

> alias dragadp align #1/A:85-92@ca,n,c,o toAtoms #1/A:85-92@ca,n,c,o

> show #!1 models

> ~show #1 target r

> ~show #1 target a

> show #1:adp

> coordset #3 10

> dragadp

RMSD between 32 atom pairs is 0.000 angstroms  

> alias dragadp align #1/A:85-92@ca,n,c,o toAtoms #3/A:85-92@ca,n,c,o

> dragadp

RMSD between 32 atom pairs is 0.059 angstroms  

> view begin

> movie reset

No movie being recorded.  

> movie record

> perframe dragadp frames 7

> coordset #3 1,21,5

> wait 7

RMSD between 32 atom pairs is 0.059 angstroms  
RMSD between 32 atom pairs is 0.000 angstroms  
RMSD between 32 atom pairs is 0.033 angstroms  
RMSD between 32 atom pairs is 0.065 angstroms  
RMSD between 32 atom pairs is 0.098 angstroms  
RMSD between 32 atom pairs is 0.130 angstroms  
RMSD between 32 atom pairs is 0.130 angstroms  

> movie stop

> movie encode /Users/charlessindelar/Desktop/test3.mov

Movie saved to /Users/charlessindelar/Desktop/test3.mov  
  

Expected a keyword  

> help perframe

> perframe dragadp frames 10

RMSD between 32 atom pairs is 0.117 angstroms  
RMSD between 32 atom pairs is 0.124 angstroms  
RMSD between 32 atom pairs is 0.130 angstroms  
RMSD between 32 atom pairs is 0.124 angstroms  
RMSD between 32 atom pairs is 0.117 angstroms  
RMSD between 32 atom pairs is 0.111 angstroms  
RMSD between 32 atom pairs is 0.104 angstroms  
RMSD between 32 atom pairs is 0.098 angstroms  
RMSD between 32 atom pairs is 0.091 angstroms  
RMSD between 32 atom pairs is 0.085 angstroms  

> help molmap

> molmap #3 6 gridSpacing 1

> color #4 1,0,0,.5

> color #4 1,0,0,50

> color #4 1,0,0,10

> color #4 50,0,0,10

> lighting full

> material transparentCastShadows true

> material transparentCastShadows false

> lighting simple

> lighting soft

> lighting full

> lighting soft

> lighting full

> lighting soft

> lighting full

> molmap #3 12 gridSpacing 1

> color #4 50,0,0,10

> help molmap

> close #4

> close all

> open 1mkj

1mkj title:  
Human Kinesin Motor Domain With Docked Neck Linker [more info...]  
  
Chain information for 1mkj #1  
---  
Chain | Description  
A | kinesin heavy chain  
  
Non-standard residues in 1mkj #1  
---  
ADP — adenosine-5'-diphosphate  
MG — magnesium ion  
SO4 — sulfate ion  
  
  

> open 1mkj

1mkj title:  
Human Kinesin Motor Domain With Docked Neck Linker [more info...]  
  
Chain information for 1mkj #2  
---  
Chain | Description  
A | kinesin heavy chain  
  
Non-standard residues in 1mkj #2  
---  
ADP — adenosine-5'-diphosphate  
MG — magnesium ion  
SO4 — sulfate ion  
  
  

Missing or invalid "axis" argument: Axis argument requires 2 atoms, got 2707
atoms  

> move x 10 1 models #2

> morph #1,2 wrap true

Computed 41 frame morph #3  

> coordset #3 1,41

> movie record

> movie encode /Users/charlessindelar/Desktop/movie.mp4 framerate 25.0

Movie saved to /Users/charlessindelar/Desktop/movie.mp4  
  

> ~show #3

> show #1

> show #1 target m

> ~show #1 target r

> ~show #1 target a

> show #1:adp

> alias dragadp align #1/A:85-92@ca,n,c,o toAtoms #3/A:85-92@ca,n,c,o

> perframe dragadp frames 10

RMSD between 32 atom pairs is 0.000 angstroms  
RMSD between 32 atom pairs is 0.000 angstroms  
RMSD between 32 atom pairs is 0.000 angstroms  
RMSD between 32 atom pairs is 0.000 angstroms  
RMSD between 32 atom pairs is 0.000 angstroms  
RMSD between 32 atom pairs is 0.000 angstroms  
RMSD between 32 atom pairs is 0.000 angstroms  
RMSD between 32 atom pairs is 0.000 angstroms  
RMSD between 32 atom pairs is 0.000 angstroms  
RMSD between 32 atom pairs is 0.000 angstroms  

> movie reset

No movie being recorded.  

> movie record

> perframe dragadp frames 7

> move x 1 5

> wait 7

RMSD between 32 atom pairs is 0.000 angstroms  
RMSD between 32 atom pairs is 0.000 angstroms  
RMSD between 32 atom pairs is 0.000 angstroms  
RMSD between 32 atom pairs is 0.000 angstroms  
RMSD between 32 atom pairs is 0.000 angstroms  
RMSD between 32 atom pairs is 0.000 angstroms  
RMSD between 32 atom pairs is 0.000 angstroms  

> movie stop

> movie encode /Users/charlessindelar/Desktop/test3.mov

Movie saved to /Users/charlessindelar/Desktop/test3.mov  
  

> show #!2 models

> show #1 target r

> coordset #3 1

> coordset #3 21

> coordset #3 1

> coordset #3 21

> coordset #3 1

> coordset #3 2

> coordset #3 10

> coordset #3 8

> coordset #3 7

> coordset #3 7,21,1

> coordset #3 21,7,-1

> coordset #3 21,41,1

> close session

> open 1mkj

1mkj title:  
Human Kinesin Motor Domain With Docked Neck Linker [more info...]  
  
Chain information for 1mkj #1  
---  
Chain | Description  
A | kinesin heavy chain  
  
Non-standard residues in 1mkj #1  
---  
ADP — adenosine-5'-diphosphate  
MG — magnesium ion  
SO4 — sulfate ion  
  
  

> open 1bg2

1bg2 title:  
Human ubiquitous kinesin motor domain [more info...]  
  
Chain information for 1bg2 #2  
---  
Chain | Description  
A | kinesin  
  
Non-standard residues in 1bg2 #2  
---  
ACT — acetate ion  
ADP — adenosine-5'-diphosphate  
MG — magnesium ion  
  
  

> alias dragadp align #1/A:85-92@ca,n,c,o toAtoms #3/A:85-92@ca,n,c,o

> dragadp

Unequal number of atoms to pair, 32 and 0  

> align #2/A:260-290@CA,N,C,O toAtoms #1/A:260-290@CA,N,C,O

RMSD between 124 atom pairs is 0.709 angstroms  

> morph #1,2 wrap true

Computed 41 frame morph #3  

> coordset #3 1,41

> alias dragadp align #1/A:85-92@ca,n,c,o toAtoms #3/A:85-92@ca,n,c,o

> show #1 target m

> ~show #1 target r

> ~show #1 target a

> show #1:adp

> movie reset

No movie being recorded.  

> movie record

> perframe dragadp frames 7

> coordset #3 1,21,5

> wait 7

RMSD between 32 atom pairs is 0.000 angstroms  
RMSD between 32 atom pairs is 0.000 angstroms  
RMSD between 32 atom pairs is 0.033 angstroms  
RMSD between 32 atom pairs is 0.065 angstroms  
RMSD between 32 atom pairs is 0.098 angstroms  
RMSD between 32 atom pairs is 0.130 angstroms  
RMSD between 32 atom pairs is 0.130 angstroms  

> movie stop

> movie encode /Users/charlessindelar/Desktop/test3.mov

Movie saved to /Users/charlessindelar/Desktop/test3.mov  
  




OpenGL version: 4.1 INTEL-10.36.19
OpenGL renderer: Intel(R) Iris(TM) Plus Graphics 655
OpenGL vendor: Intel Inc.
File attachment: test3.mov

test3.mov

Attachments (1)

test3.mov (655.7 KB ) - added by charles.sindelar@… 6 years ago.
Added by email2trac

Download all attachments as: .zip

Change History (4)

by charles.sindelar@…, 6 years ago

Attachment: test3.mov added

Added by email2trac

comment:1 by Eric Pettersen, 6 years ago

Component: UnassignedStructure Comparison
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submission"preframe" off by 1 during recorded morph

comment:2 by Tom Goddard, 6 years ago

Resolution: not a bug
Status: assignedclosed

The problem is that you are doing two things at each frame, you running your dragadp alias using perframe, and you are going to the next morph time step using the coordset command. Your dragadp alias aligns the ADP to the morph.

movie reset; movie record; perframe "dragadp" frames 7; coordset #3 1,21,5; wait 7; movie stop; movie encode "~/Desktop/test3.mov"

The trouble is first you align ADP to #3 and then you change the #3 coordinates, so the ADP is not matched to the coordinates, the coordinates are advanced by one frame. You need to first advance the coordinates, and then align. So reverse the order of your perframe and coordset commands:

movie reset; movie record; coordset #3 1,21,5; perframe "dragadp" frames 7; wait 7; movie stop; movie encode "~/Desktop/test3.mov"

Commands that act over many frames in general do their action each frame in the order the original commands were run. So if the order matters as it does in this case then the commands need to be in the right order in the command script.

I'd also suggest you save the movie as test3.mp4 which uses the most widely used H.264 encoding which will give better quality for file size and better supported by movie players. than test3.mov.

in reply to:  4 comment:3 by charles.sindelar@…, 6 years ago

Thanks Tom- now I think I understand. So both "coordset" and "perframe" are basically using the same event handler. That makes sense. I was wondering whether it might be something like that, but I never quite put it together... I somehow thought that "perframe" was a subsidiary of "coordset", like it is in Chimera..

On 3/9/20, 6:58 PM, "ChimeraX" <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote:

    #2930: "preframe" off by 1 during recorded morph
    -------------------------------------------+-------------------------
              Reporter:  charles.sindelar@…    |      Owner:  Tom Goddard
                  Type:  defect                |     Status:  closed
              Priority:  normal                |  Milestone:
             Component:  Structure Comparison  |    Version:
            Resolution:  not a bug             |   Keywords:
            Blocked By:                        |   Blocking:
    Notify when closed:                        |   Platform:  all
               Project:  ChimeraX              |
    -------------------------------------------+-------------------------
    Changes (by Tom Goddard):
    
     * status:  assigned => closed
     * resolution:   => not a bug
    
    
    Comment:
    
     The problem is that you are doing two things at each frame, you running
     your dragadp alias using perframe, and you are going to the next morph
     time step using the coordset command.  Your dragadp alias aligns the ADP
     to the morph.
    
     movie reset; movie record; perframe "dragadp" frames 7; coordset #3
     1,21,5; wait 7; movie stop; movie encode "~/Desktop/test3.mov"
    
     The trouble is first you align ADP to #3 and then you change the #3
     coordinates, so the ADP is not matched to the coordinates, the coordinates
     are advanced by one frame.  You need to first advance the coordinates, and
     then align.  So reverse the order of your perframe and coordset commands:
    
     movie reset; movie record; coordset #3 1,21,5; perframe "dragadp" frames
     7; wait 7; movie stop; movie encode "~/Desktop/test3.mov"
    
     Commands that act over many frames in general do their action each frame
     in the order the original commands were run.  So if the order matters as
     it does in this case then the commands need to be in the right order in
     the command script.
    
     I'd also suggest you save the movie as test3.mp4 which uses the most
     widely used H.264 encoding which will give better quality for file size
     and better supported by movie players. than test3.mov.
    
    --
    Ticket URL: <https://nam05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fplato.cgl.ucsf.edu%2Ftrac%2FChimeraX%2Fticket%2F2930%23comment%3A2&amp;data=02%7C01%7Ccharles.sindelar%40yale.edu%7Ca05ef197c4d5438fcff908d7c47d5a3d%7Cdd8cbebb21394df8b4114e3e87abeb5c%7C0%7C0%7C637193914887283186&amp;sdata=bG9QovyflOgNgE%2B1e6FntLztubZPBxN%2FX%2FLI7WIWh28%3D&amp;reserved=0>
    ChimeraX <https://nam05.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.rbvi.ucsf.edu%2Fchimerax%2F&amp;data=02%7C01%7Ccharles.sindelar%40yale.edu%7Ca05ef197c4d5438fcff908d7c47d5a3d%7Cdd8cbebb21394df8b4114e3e87abeb5c%7C0%7C0%7C637193914887283186&amp;sdata=9cP3Qust0l88hM0dm9iiVFsmbx4bcdD8z7%2FzpKkkcII%3D&amp;reserved=0>
    ChimeraX Issue Tracker
    

Note: See TracTickets for help on using tickets.