On Tue, Mar 26, 2013 at 10:42 AM, Pavel Afonine
a hint: look how rotate/translate is implemented in : ... This is just an example of a possible way of doing it. I guess there are many more.
A more general method (not dependent on xray.structure): from scitbx import matrix rt = matrix.rt(([0.88302225, 0.11697778, 0.45451948, 0.11697778, 0.88302225, -0.45451948, -0.45451948, 0.45451948, 0.76604444], [5,10,20])) sites = atoms.extract_xyz() atoms.set_xyz(rt.r.elems * sites + rt.t.elems) Internally these are simply tuples - so if you multiply a flex.vec3_double array with a 9-element tuple, it is assumed to be a 3x3 rotation matrix, and adding a 3-element tuple to the array is assumed to be a translation. But since these operations are frequently coupled we usually package the two matrices together. -Nat