code: def _rotate_locs(locs, idxs, new_z):
      new_z = new_z / np.linalg.norm(new_z)
      old_z = locs[idxs[0]][-3:]
      old_z = old_z / np.linalg.norm(old_z)
      rot = _find_vector_rotation(old_z, new_z)
      for ci in idxs:
          this_trans = _loc_to_coil_trans(locs[ci])
          this_trans[:3, :3] = np.dot(rot, this_trans[:3, :3])
          locs[ci][:] = _coil_trans_to_loc(this_trans)
          np.testing.assert_allclose(locs[ci][-3:], new_z, atol=1e-4)
  
imports: from collections import defaultdict
  from functools import partial
  import numpy
  from scipy.optimize import fmin_cobyla
  from .._fiff.pick import pick_info, pick_types
  from .._fiff.tag import _coil_trans_to_loc, _loc_to_coil_trans
  from ..bem import _check_origin
  from ..io import BaseRaw
  from ..transforms import _find_vector_rotation
  from ..utils import _check_fname, _check_option, _ensure_int, _pl, _reg_pinv, _validate_type, check_fname, logger, verbose
  from .maxwell import _col_norm_pinv, _get_grad_point_coilsets, _prep_fine_cal, _prep_mf_coils, _read_cross_talk, _trans_sss_basis
label_desc: Use image node_id 3 for calling a global function with example usage: _rotate_locs(locs, idxs, new_z) without return types