
Hi Wen, There is not a Chimera command to print the transformation of one model relative to another. But you can get it with some Python code. Below is some Python code to add two keyboard shortcuts that print the transform of model 0 relative to model 1 or model 1 relative to model 0. The model numbers are shown in the Model Panel dialog (Tools/Inspectors or Favorites menu), 0 being the first model you opened. To use the keyboard shortcuts copy the Python code below to a file, say accel.py. Show the accelerator dialog, Tools/Keyboard/Accelerator List, and enter the path to the accelerator file and press Load. Also click the "Accelerators on" switch. After loading two models you can type x0 or x1 in the Chimera graphics window and it will print out the transform to the Chimera reply log (Favorites/Reply Log). The accelerator file is remembered so you only need to do this setup once. To have the accelerators be on whenever you start Chimera, set Accelerators On to "auto start" in Favorites/Preferences/Category Tools. The transformation matrix is a 3 by 4 matrix. The first 3 columns give the rotation, and the 4th column is a translation. The rotation is applied first, then the translation. Tom def print_transform(model_id_1, model_id_2): '''Print transformation matrix of model 1 relative to model 2.''' import chimera m1 = chimera.openModels.list(id = model_id_1)[0] # returns a list m2 = chimera.openModels.list(id = model_id_2)[0] xf1 = m1.openState.xform xf2 = m2.openState.xform xf2.invert() xf1.multiply(xf2) print xf1 def register_accelerators(): from Accelerators import standard_accelerators, add_accelerator standard_accelerators.register_accelerators() add_accelerator('x0', 'Print model 0 transform relative to model 1', lambda: print_transform(0,1)) add_accelerator('x1', 'Print model 1 transform relative to model 0', lambda: print_transform(1,0))
participants (1)
-
Thomas Goddard