class_docstr: Raw object from 4D Neuroimaging MagnesWH3600 data.
  
  Parameters
  ----------
  pdf_fname : path-like
      Path to the processed data file (PDF).
  config_fname : path-like
      Path to system config file.
  head_shape_fname : path-like | None
      Path to the head shape file.
  rotation_x : float
      Degrees to tilt x-axis for sensor frame misalignment. Ignored
      if convert is True.
  translation : array-like, shape (3,)
      The translation to place the origin of coordinate system
      to the center of the head. Ignored if convert is True.
  convert : bool
      Convert to Neuromag coordinates or not.
  rename_channels : bool
      Whether to keep original 4D channel labels or not. Defaults to True.
  sort_by_ch_name : bool
      Reorder channels according to channel label. 4D channels don't have
      monotonically increasing numbers in their labels. Defaults to True.
  ecg_ch : str | None
      The 4D name of the ECG channel. If None, the channel will be treated
      as regular EEG channel.
  eog_ch : tuple of str | None
      The 4D names of the EOG channels. If None, the channels will be treated
      as regular EEG channels.
  %(preload)s
  
      .. versionadded:: 0.11
  
  %(verbose)s
class_docstr_tok: ["Raw","object","from","4D","Neuroimaging","MagnesWH3600","data",".","Parameters","--","--","--","--","--","pdf_fname",":","path-like","Path","to","the","processed","data","file","(","PDF",")",".","config_fname",":","path-like","Path","to","system","config","file",".","head_shape_fname",":","path-like","|","None","Path","to","the","head","shape","file",".","rotation_x",":","float","Degrees","to","tilt","x-axis","for","sensor","frame","misalignment",".","Ignored","if","convert","is","True",".","translation",":","array-like",",","shape","(","3",",",")","The","translation","to","place","the","origin","of","coordinate","system","to","the","center","of","the","head",".","Ignored","if","convert","is","True",".","convert",":","bool","Convert","to","Neuromag","coordinates","or","not",".","rename_channels",":","bool","Whether","to","keep","original","4D","channel","labels","or","not",".","Defaults","to","True",".","sort_by_ch_name",":","bool","Reorder","channels","according","to","channel","label",".","4D","channels","do","n't","have","monotonically","increasing","numbers","in","their","labels",".","Defaults","to","True",".","ecg_ch",":","str","|","None","The","4D","name","of","the","ECG","channel",".","If","None",",","the","channel","will","be","treated","as","regular","EEG","channel",".","eog_ch",":","tuple","of","str","|","None","The","4D","names","of","the","EOG","channels",".","If","None",",","the","channels","will","be","treated","as","regular","EEG","channels",".","%","(","preload",")","s","..","versionadded",":",":","0.11","%","(","verbose",")","s"]
code: def __init__(
      self,
      pdf_fname,
      config_fname="config",
      head_shape_fname="hs_file",
      rotation_x=0.0,
      translation=(0.0, 0.02, 0.11),
      convert=True,
      rename_channels=True,
      sort_by_ch_name=True,
      ecg_ch="E31",
      eog_ch=("E63", "E64"),
      preload=False,
      verbose=None,
  ):
      _validate_type(pdf_fname, ("path-like", BytesIO), "pdf_fname")
      info, bti_info = _get_bti_info(
          pdf_fname=pdf_fname,
          config_fname=config_fname,
          head_shape_fname=head_shape_fname,
          rotation_x=rotation_x,
          translation=translation,
          convert=convert,
          ecg_ch=ecg_ch,
          rename_channels=rename_channels,
          sort_by_ch_name=sort_by_ch_name,
          eog_ch=eog_ch,
      )
      bti_info["bti_ch_labels"] = [
          c["chan_label"] for c in bti_info["chs"]
      ]
      # make Raw repr work if we have a BytesIO as input
      filename = bti_info["pdf"]
      if isinstance(filename, BytesIO):
          filename = repr(filename)
      super().__init__(
          info,
          preload,
          filenames=[filename],
          raw_extras=[bti_info],
          last_samps=[bti_info["total_slices"] - 1],
          verbose=verbose,
      )
  
imports: import functools
  import os.path
  from io import BytesIO
  from itertools import count
  import numpy
  from ..._fiff._digitization import _make_bti_dig_points
  from ..._fiff.constants import FIFF
  from ..._fiff.meas_info import _empty_info
  from ..._fiff.tag import _coil_trans_to_loc, _loc_to_coil_trans
  from ..._fiff.utils import _mult_cal_one, read_str
  from ...transforms import Transform, combine_transforms, invert_transform
  from ...utils import _stamp_to_dt, _validate_type, logger, path_like, verbose
  from ..base import BaseRaw
  from .constants import BTI
  from .read import read_char, read_dev_header, read_double, read_double_matrix, read_float, read_float_matrix, read_int16, read_int16_matrix, read_int32, read_int64, read_transform, read_uint16, read_uint32
label_desc: Use image node_id 1 to create a new RawBTi object from inherited base classes: BaseRaw with example: obj = RawBTi(pdf_fname, config_fname, head_shape_fname, rotation_x, translation, convert, rename_channels, sort_by_ch_name, ecg_ch, eog_ch, preload, verbose)