Is there a way to do this in such a way that the rest of the view matrix changes appropriately, including clipping planes, etc.?  There is a handy pair of functions in Coot that do this:

    set_rotation_centre(x, y, z)
    set_zoom(30)

which has the advantage of adjusting the perspective and focusing on exactly the residue/molecule of interest.  I tried to emulate the first part in PyMOL:

  def recenter_and_zoom (self, x, y, z) :
    view = list(cmd.get_view())
    view[12] = x
    view[13] = y
    view[14] = z
    cmd.set_view(view)

which sets the center of rotation, but the perspective is screwy because the rest of the view matrix is unchanged.  I can figure out the equivalent 'zoom' command for the residue of interest if I really need to, but I already have the coordinates computed, so I'd rather try to figure out how to adjust the zoom level through the matrix instead.  (Sorry if this is a little incoherent - I still don't understand matrix arithmetic in OpenGL.)

thanks,
Nat