code: def _read_elp_besa(fname, head_size):
      # This .elp is not the same as polhemus elp. see _read_isotrak_elp_points
      dtype = np.dtype("S8, S8, f8, f8, f8")
      data = np.loadtxt(fname, dtype=dtype)
  
      ch_names = data["f1"].astype(str).tolist()
      az = data["f2"]
      horiz = data["f3"]
      radius = np.abs(az / 180.0)
      az = np.deg2rad(
          np.array(
              [h if a >= 0.0 else 180 + h for h, a in zip(horiz, az)]
          )
      )
      pol = radius * np.pi
      rad = data["f4"] / 100
      pos = _sph_to_cart(np.array([rad, az, pol]).T)
  
      if head_size is not None:
          pos *= head_size / np.median(np.linalg.norm(pos, axis=1))
  
      ch_pos = _check_dupes_odict(ch_names, pos)
  
      fid_names = ("Nz", "LPA", "RPA")
      # No one grants that the fid names actually exist.
      nasion, lpa, rpa = (ch_pos.pop(n, None) for n in fid_names)
  
      return make_dig_montage(
          ch_pos=ch_pos, nasion=nasion, lpa=lpa, rpa=rpa
      )
  
imports: import csv
  import os.path
  from collections import OrderedDict
  from functools import partial
  import numpy
  from .._freesurfer import get_mni_fiducials
  from ..transforms import _sph_to_cart
  from ..utils import _pl, _soft_import, warn
  from .None import __file__
  from .montage import make_dig_montage
label_desc: Use image node_id 13 for calling a global function with example usage: _read_elp_besa(fname, head_size) and returns: make_dig_montage