class_docstr: Montage for digitized electrode and headshape position data.
  
  .. warning:: Montages are typically created using one of the helper
               functions in the ``See Also`` section below instead of
               instantiating this class directly.
  
  Parameters
  ----------
  dig : list of dict
      The object containing all the dig points.
  ch_names : list of str
      The names of the EEG channels.
  
  See Also
  --------
  read_dig_captrak
  read_dig_dat
  read_dig_egi
  read_dig_fif
  read_dig_hpts
  read_dig_localite
  read_dig_polhemus_isotrak
  make_dig_montage
  
  Notes
  -----
  .. versionadded:: 0.9.0
class_docstr_tok: ["Montage","for","digitized","electrode","and","headshape","position","data",".","..","warning",":",":","Montages","are","typically","created","using","one","of","the","helper","functions","in","the","``","See","Also","``","section","below","instead","of","instantiating","this","class","directly",".","Parameters","--","--","--","--","--","dig",":","list","of","dict","The","object","containing","all","the","dig","points",".","ch_names",":","list","of","str","The","names","of","the","EEG","channels",".","See","Also","--","--","--","--","read_dig_captrak","read_dig_dat","read_dig_egi","read_dig_fif","read_dig_hpts","read_dig_localite","read_dig_polhemus_isotrak","make_dig_montage","Notes","--","--","-","..","versionadded",":",":","0.9.0"]
docstr: Add two DigMontages in place.
  
  Notes
  -----
  Two DigMontages can only be added if there are no duplicated ch_names
  and if fiducials are present they should share the same coordinate
  system and location values.
code: def __iadd__(self, other):
      """Add two DigMontages in place.
  
      Notes
      -----
      Two DigMontages can only be added if there are no duplicated ch_names
      and if fiducials are present they should share the same coordinate
      system and location values.
      """
  
      def is_fid_defined(fid):
          return not (
              fid.nasion is None and fid.lpa is None and fid.rpa is None
          )
  
      # Check for none duplicated ch_names
      ch_names_intersection = set(self.ch_names).intersection(
          other.ch_names
      )
      if ch_names_intersection:
          raise RuntimeError(
              (
                  "Cannot add two DigMontage objects if they contain duplicated"
                  " channel names. Duplicated channel(s) found: {}."
              ).format(
                  ", ".join(
                      ["%r" % v for v in sorted(ch_names_intersection)]
                  )
              )
          )
  
      # Check for unique matching fiducials
      self_fid, self_coord = _get_fid_coords(self.dig)
      other_fid, other_coord = _get_fid_coords(other.dig)
  
      if is_fid_defined(self_fid) and is_fid_defined(other_fid):
          if self_coord != other_coord:
              raise RuntimeError(
                  "Cannot add two DigMontage objects if "
                  "fiducial locations are not in the same "
                  "coordinate system."
              )
  
          for kk in self_fid:
              if not np.array_equal(self_fid[kk], other_fid[kk]):
                  raise RuntimeError(
                      "Cannot add two DigMontage objects if "
                      "fiducial locations do not match "
                      "(%s)" % kk
                  )
  
          # keep self
          self.dig = _format_dig_points(
              self.dig
              + [
                  d
                  for d in other.dig
                  if d["kind"] != FIFF.FIFFV_POINT_CARDINAL
              ]
          )
      else:
          self.dig = _format_dig_points(self.dig + other.dig)
  
      self.ch_names += other.ch_names
      return self
  
imports: import os.path
  import re
  from collections import OrderedDict
  from copy import deepcopy
  from dataclasses import dataclass
  import numpy
  from .._fiff._digitization import _coord_frame_const, _count_points_by_type, _ensure_fiducials_head, _format_dig_points, _get_data_as_dict_from_dig, _get_dig_eeg, _get_fid_coords, _make_dig_points, _read_dig_fif, write_dig
  from .._fiff.constants import CHANNEL_LOC_ALIASES, FIFF
  from .._fiff.meas_info import create_info
  from .._fiff.open import fiff_open
  from .._fiff.pick import _picks_to_idx, channel_type, pick_types
  from .._freesurfer import get_mni_fiducials
  from ..defaults import HEAD_SIZE_DEFAULT
  from ..transforms import Transform, _ensure_trans, _fit_matched_points, _frame_to_str, _quat_to_affine, _sph_to_cart, _topo_to_sph, _verbose_frames, apply_trans, get_ras_to_neuromag_trans
  from ..utils import _check_fname, _check_option, _on_missing, _pl, _validate_type, copy_function_doc_to_method_doc, fill_doc, verbose, warn
  from ..utils.docs import docdict
  from ..viz import plot_montage
  from ._dig_montage_utils import _parse_brainvision_dig_montage, _read_dig_montage_egi
label_desc: Use image node_id 6 for calling the DigMontage obj's underlying member method code with example usage: obj.__iadd__(other) and returns: self, unknown