code: def read_band(self, key, info):
          
          # Read data
          tic = datetime.now()
          with open(self.filename, "rb") as fp_:
              header = self._read_header(fp_)
              res = self._read_data(fp_, header)
          res = self._mask_invalid(data=res, header=header)
          self._header = header
          logger.debug("Reading time " + str(datetime.now() - tic))
  
          # Calibrate
          res = self.calibrate(res, key.calibration)
  
          # Update metadata
          new_info = dict(units=info['units'],
                          standard_name=info['standard_name'],
                          wavelength=info['wavelength'],
                          resolution='resolution',
                          id=key,
                          name=key.name,
                          scheduled_time=self.scheduled_time,
                          platform_name=self.platform_name,
                          sensor=self.sensor,
                          satellite_longitude=float(
                              self.nav_info['SSP_longitude']),
                          satellite_latitude=float(
                              self.nav_info['SSP_latitude']),
                          satellite_altitude=float(self.nav_info['distance_earth_center_to_satellite'] -
                                                   self.proj_info['earth_equatorial_radius']) * 1000)
          res = xr.DataArray(res, attrs=new_info, dims=['y', 'x'])
  
          # Mask space pixels
          if self.mask_space:
              res = self._mask_space(res)
  
          return res
docs: Read the data.