Hello all, I have a rotation + translation matrix. Let's say py> mtx array([[ 0.88302225, 0.11697778, 0.45451948, 5. ], [ 0.11697778, 0.88302225, -0.45451948, 10. ], [ -0.45451948, 0.45451948, 0.76604444, 20. ], [ 0. , 0. , 0. , 1. ]]) My usual way of transforming a set of coordinates with a 4x4 matrix is to use numpy: py> xyz_1 array([[ 5., 10., 15., 1.], [ 20., 15., 10., 1.]]) py> numpy.inner(xyz_1, mtx) array([[ 17.40268126, 12.59731919, 33.76326397, 1. ], [ 28.9603065 , 21.03969455, 25.38784698, 1. ]]) What is the equivalent in cctbx? Is there a way to avoid converting coordinates back and fourth between numpy arrays with atoms().extract_xyz() & .set_xyz() (as might be used from a iotbx_pdb_hierarchy_ext.root). Thank you for any help. James