class_docstr: The base class for the FengYun4 AGRI and GHI readers.
class_docstr_tok: ["The","base","class","for","the","FengYun4","AGRI","and","GHI","readers","."]
docstr: Calibrate to Brightness Temperatures [K].
docstr_tok: ["Calibrate","to","Brightness","Temperatures","[","K","]","."]
code: def calibrate_to_bt(self, data, ds_info, ds_name):
      """Calibrate to Brightness Temperatures [K]."""
      logger.debug("Calibrating to brightness_temperature")
  
      if self.sensor not in ["GHI", "AGRI"]:
          raise ValueError("Error, sensor must be GHI or AGRI.")
  
      # The key is sometimes prefixes with `Calibration/` so we try both options here
      lut_key = ds_info.get("lut_key", ds_name)
      try:
          lut = self[lut_key]
      except KeyError:
          lut_key = f'Calibration/{ds_info.get("lut_key", ds_name)}'
          lut = self[lut_key]
  
      # the value of dn is the index of brightness_temperature
      data = self.apply_lut(data, lut)
      ds_info["valid_range"] = lut.attrs["valid_range"]
      return data
  
imports: import logging
  from datetime import datetime
  import dask.array
  import numpy
  import xarray
  from satpy._compat import cached_property
  from satpy.readers._geos_area import get_area_definition, get_area_extent
  from satpy.readers.hdf5_utils import HDF5FileHandler
label_desc: Use image node_id 8 for calling the FY4Base obj's underlying member method code with example usage: obj.calibrate_to_bt(data, ds_info, ds_name) and returns: data