code: def _fit_coil_order_dev_head_trans(dev_pnts, head_pnts, bias=True):
      """Compute Device to Head transform allowing for permutiatons of points."""
      id_quat = np.zeros(6)
      best_order = None
      best_g = -999
      best_quat = id_quat
      for this_order in itertools.permutations(
          np.arange(len(head_pnts))
      ):
          head_pnts_tmp = head_pnts[np.array(this_order)]
          this_quat, g = _fit_chpi_quat(dev_pnts, head_pnts_tmp)
          assert np.linalg.det(quat_to_rot(this_quat[:3])) > 0.9999
          if bias:
              # For symmetrical arrangements, flips can produce roughly
              # equivalent g values. To avoid this, heavily penalize
              # large rotations.
              rotation = _angle_between_quats(
                  this_quat[:3], np.zeros(3)
              )
              check_g = g * max(1.0 - rotation / np.pi, 0) ** 0.25
          else:
              check_g = g
          if check_g > best_g:
              out_g = g
              best_g = check_g
              best_order = np.array(this_order)
              best_quat = this_quat
  
      # Convert Quaterion to transform
      dev_head_t = _quat_to_affine(best_quat)
      return dev_head_t, best_order, out_g
  
imports: import copy
  import itertools
  from functools import partial
  import numpy
  from scipy.linalg import orth
  from scipy.optimize import fmin_cobyla
  from scipy.spatial.distance import cdist
  from ._fiff.constants import FIFF
  from ._fiff.meas_info import Info, _simplify_info
  from ._fiff.pick import _picks_to_idx, pick_channels, pick_channels_regexp, pick_info, pick_types
  from ._fiff.proj import Projection, setup_proj
  from .channels.channels import _get_meg_system
  from .cov import compute_whitener, make_ad_hoc_cov
  from .dipole import _make_guesses
  from .event import find_events
  from .fixes import jit
  from .forward import _concatenate_coils, _create_meg_coils, _magnetic_dipole_field_vec
  from .io import BaseRaw
  from .io.ctf.trans import _make_ctf_coord_trans_set
  from .io.kit.constants import KIT
  from .io.kit.kit import RawKIT
  from .preprocessing.maxwell import _get_mf_picks_fix_mags, _prep_mf_coils, _regularize_out, _sss_basis
  from .transforms import _angle_between_quats, _fit_matched_points, _quat_to_affine, als_ras_trans, apply_trans, invert_transform, quat_to_rot, rot_to_quat
  from .utils import ProgressBar, _check_fname, _check_option, _on_missing, _pl, _validate_type, _verbose_safe_false, logger, use_log_level, verbose, warn
label_desc: Use image node_id 14 for calling a global function with example usage: _fit_coil_order_dev_head_trans(dev_pnts, head_pnts, bias) and returns: dev_head_t,  best_order,  out_g