code: def run(self):
          import numpy as np
          query = self.session.query(models.NUTS2Region.key,
                                     models.NUTS2Region.id)
          region_ids = self.client.df_query(query).set_index('key')['id'].to_dict()
          data = next(self.requires()).load()
          nuts = NUTS2GeoJSONInputFile().load()
          indicator_ids = dict()
          t_data = dict()
          for season, suffix in CLIMATE_SEASON_SUFFIXES.items():
              indicator = models.ClimateIndicator(description=self.description + suffix)
              self.session.add(indicator)
              self.session.commit()
              indicator_ids[season] = indicator.id
              if season == 'summer':
                  t_data[season] = np.ma.average(data['data'][3:9, :, :], axis=0)
              else:
                  t_data[season] = np.ma.average(0.5 * (data['data'][0:3, :, :] + data['data'][9:12, :, :]), axis=0)
          objects = []
          current_value_id = models.ClimateValue.get_max_id(self.session)
          for feature in nuts:
              mask = geojson_polygon_to_mask(feature=feature,
                                             shape=t_data['summer'].shape,
                                             lat_idx=data['lat_idx'],
                                             lon_idx=data['lon_idx'])
              for season in list(CLIMATE_SEASON_SUFFIXES.keys()):
                  value = np.ma.average(t_data[season], weights=mask)
                  region_id = region_ids.get(feature.properties['NUTS_ID'], None)
                  if region_id is not None:
                      region_id = int(region_id)
                  current_value_id += 1
                  objects.append(models.ClimateValue(id=current_value_id,
                                                     value=value,
                                                     region_id=region_id,
                                                     indicator_id=indicator_ids[season]))
          self.session.bulk_save_objects(objects)
          self.session.commit()
          self.done()