code: def read_vectorview_selection(
      name, fname=None, info=None, verbose=None
  ):
      """Read Neuromag Vector View channel selection from a file.
  
      Parameters
      ----------
      name : str | list of str
          Name of the selection. If a list, the selections are combined.
          Supported selections are: ``'Vertex'``, ``'Left-temporal'``,
          ``'Right-temporal'``, ``'Left-parietal'``, ``'Right-parietal'``,
          ``'Left-occipital'``, ``'Right-occipital'``, ``'Left-frontal'`` and
          ``'Right-frontal'``. Selections can also be matched and combined by
          spcecifying common substrings. For example, ``name='temporal`` will
          produce a combination of ``'Left-temporal'`` and ``'Right-temporal'``.
      fname : path-like
          Filename of the selection file (if ``None``, built-in selections are
          used).
      %(info)s Used to determine which channel naming convention to use, e.g.
          ``'MEG 0111'`` (with space) for old Neuromag systems and ``'MEG0111'``
          (without space) for new ones.
      %(verbose)s
  
      Returns
      -------
      sel : list of str
          List with channel names in the selection.
      """
      # convert name to list of string
      if not isinstance(name, (list, tuple)):
          name = [name]
      if isinstance(info, Info):
          picks = pick_types(info, meg=True, exclude=())
          if len(picks) > 0 and " " not in info["ch_names"][picks[0]]:
              spacing = "new"
          else:
              spacing = "old"
      elif info is not None:
          raise TypeError(
              f"info must be an instance of Info or None, not {type(info)}"
          )
      else:  # info is None
          spacing = "old"
  
      # use built-in selections by default
      if fname is None:
          fname = op.join(
              op.dirname(__file__), "..", "data", "mne_analyze.sel"
          )
  
      fname = str(
          _check_fname(fname, must_exist=True, overwrite="read")
      )
  
      # use this to make sure we find at least one match for each name
      name_found = {n: False for n in name}
      with open(fname) as fid:
          sel = []
          for line in fid:
              line = line.strip()
              # skip blank lines and comments
              if len(line) == 0 or line[0] == "#":
                  continue
              # get the name of the selection in the file
              pos = line.find(":")
              if pos < 0:
                  logger.info(
                      '":" delimiter not found in selections file, '
                      "skipping line"
                  )
                  continue
              sel_name_file = line[:pos]
              # search for substring match with name provided
              for n in name:
                  if sel_name_file.find(n) >= 0:
                      sel.extend(line[pos + 1 :].split("|"))
                      name_found[n] = True
                      break
  
      # make sure we found at least one match for each name
      for n, found in name_found.items():
          if not found:
              raise ValueError(
                  'No match for selection name "%s" found' % n
              )
  
      # make the selection a sorted list with unique elements
      sel = list(set(sel))
      sel.sort()
      if spacing == "new":  # "new" or "old" by now, "old" is default
          sel = [s.replace("MEG ", "MEG") for s in sel]
      return sel
  
imports: import os.path
  import string
  import sys
  from collections import OrderedDict
  from copy import deepcopy
  from dataclasses import dataclass
  from functools import partial
  from pathlib import Path
  from typing import Union
  import numpy
  from scipy.io import loadmat
  from scipy.sparse import csr_matrix, lil_matrix
  from scipy.spatial import Delaunay
  from scipy.stats import zscore
  from .._fiff.constants import FIFF
  from .._fiff.meas_info import Info, MontageMixin, _merge_info, _rename_comps, _unit2human, create_info
  from .._fiff.pick import _check_excludes_includes, _pick_data_channels, _picks_by_type, _picks_to_idx, _second_rules, channel_indices_by_type, channel_type, pick_channels, pick_info, pick_types
  from .._fiff.proj import setup_proj
  from .._fiff.reference import add_reference_channels, set_eeg_reference
  from .._fiff.tag import _rename_list
  from ..bem import _check_origin
  from ..defaults import HEAD_SIZE_DEFAULT, _handle_default
  from ..utils import _check_dict_keys, _check_fname, _check_option, _check_preload, _get_stim_channel, _on_missing, _validate_type, fill_doc, legacy, logger, verbose, warn
label_desc: Use image node_id 18 for calling a global function with example usage: read_vectorview_selection(name, fname, info, verbose) and returns: sel