code: def _make_morph_map(subject_from, subject_to, subjects_dir, xhemi):
      """Construct morph map from one subject to another.
  
      Note that this is close, but not exactly like the C version.
      For example, parts are more accurate due to double precision,
      so expect some small morph-map differences!
  
      Note: This seems easily parallelizable, but the overhead
      of pickling all the data structures makes it less efficient
      than just running on a single core :(
      """
      subjects_dir = get_subjects_dir(subjects_dir)
      if xhemi:
          reg = "%s.sphere.left_right"
          hemis = (("lh", "rh"), ("rh", "lh"))
      else:
          reg = "%s.sphere.reg"
          hemis = (("lh", "lh"), ("rh", "rh"))
  
      return [
          _make_morph_map_hemi(
              subject_from,
              subject_to,
              subjects_dir,
              reg % hemi_from,
              reg % hemi_to,
          )
          for hemi_from, hemi_to in hemis
      ]
  
file_path: mne-python/mne/morph_map.py
imports: import os
  import numpy
  from scipy.sparse import csr_matrix, eye
  from ._fiff.constants import FIFF
  from ._fiff.open import fiff_open
  from ._fiff.tag import find_tag
  from ._fiff.tree import dir_tree_find
  from ._fiff.write import end_block, start_and_end_file, start_block, write_float_sparse_rcs, write_int, write_string
  from .surface import _compute_nearest, _find_nearest_tri_pts, _get_tri_supp_geom, _normalize_vectors, _triangle_neighbors, read_surface
  from .utils import get_subjects_dir, logger, verbose, warn
label_desc: Use image node_id 5 for calling a global function with example usage: _make_morph_map(subject_from, subject_to, subjects_dir, xhemi) and returns: unknown