class_docstr: VIRR Level 1b reader.
class_docstr_tok: ["VIRR","Level","1b","reader","."]
code: def _calibrate_emissive(self, data, band_index):
      slope = self._correct_slope(
          self[self.l1b_prefix + "Emissive_Radiance_Scales"].data[
              :, band_index
          ][:, np.newaxis]
      )
      intercept = self[
          self.l1b_prefix + "Emissive_Radiance_Offsets"
      ].data[:, band_index][:, np.newaxis]
      # Converts cm^-1 (wavenumbers) and (mW/m^2)/(str/cm^-1) (radiance data)
      # to SI units m^-1, mW*m^-3*str^-1.
      wave_number = self["/attr/" + self.wave_number][band_index] * 100
      bt_data = rad2temp(
          wave_number, (data.data * slope + intercept) * 1e-5
      )
      if isinstance(bt_data, np.ndarray):
          # old versions of pyspectral produce numpy arrays
          data.data = da.from_array(bt_data, chunks=data.data.chunks)
      else:
          # new versions of pyspectral can do dask arrays
          data.data = bt_data
  
file_path: satpy/satpy/readers/virr_l1b.py
imports: import logging
  from datetime import datetime
  import dask.array
  import numpy
  from pyspectral.blackbody import blackbody_wn_rad2temp
  from satpy.readers.hdf5_utils import HDF5FileHandler
label_desc: Use image node_id 4 for calling the VIRR_L1B obj's underlying member method code with example usage: obj._calibrate_emissive(data, band_index) without return types