code: def _read_bad_chans(directory, info):
      """Read Bad channel list and match to internal names."""
      fname = op.join(directory, "BadChannels")
      if not op.exists(fname):
          return []
      mapping = dict(
          zip(_clean_names(info["ch_names"]), info["ch_names"])
      )
      with open(fname) as fid:
          bad_chans = [mapping[f.strip()] for f in fid.readlines()]
      return bad_chans
  
imports: import os.path
  from calendar import timegm
  from time import strptime
  import numpy
  from ..._fiff.constants import FIFF
  from ..._fiff.ctf_comp import _add_kind, _calibrate_comp
  from ..._fiff.meas_info import _empty_info
  from ..._fiff.write import get_new_file_id
  from ...annotations import Annotations
  from ...transforms import _coord_frame_name, apply_trans, combine_transforms, invert_transform
  from ...utils import _clean_names, logger, warn
  from .constants import CTF
label_desc: Use image node_id 14 for calling a global function with example usage: _read_bad_chans(directory, info) and returns: bad_chans, list