def test_read_meta_data(): """Test whether the meta data parser function works properly.""" # Test function relevant imports from helpers import data_io meta_data = data_io.read_meta_data( 'fc', '167', 'schiphol', '0', file_path=MOCK_DATA_PATH) assert meta_data['latitude'] == [52.25, 52.25, 52.38, 52.38] assert meta_data['longitude'] == [4.88, 4.75, 4.88, 4.75] assert meta_data['distance'] == [9.29, 7.78, 8.76, 7.15]
def test_read_meta_data(): """Test whether the meta data parser function works properly.""" # Test function relevant imports from helpers import data_io meta_data = data_io.read_meta_data('fc', '167', 'schiphol', '0', file_path=MOCK_DATA_PATH) assert meta_data['latitude'] == [52.25, 52.25, 52.38, 52.38] assert meta_data['longitude'] == [4.88, 4.75, 4.88, 4.75] assert meta_data['distance'] == [9.29, 7.78, 8.76, 7.15]
def load_and_interpolate_forecast(model, element_name, station_name, issue): """Load a given dataset of forecast data with interpolated values. parameters ---------- model: str, name of model element_name: str, string representation of the provided parameter station_name: str, canonical name of the station issue: str, string representation of the model issue hour """ # Forecast columns: 1 to 4 forecast_cols = ['value' + str(x) for x in range(1, 5)] # Station location station_lat, station_lon = data_io.get_station_location(station_name) # Read in forecast element_id = data_io.get_element_id(element_name, model) forecast_data = data_io.read_forecast_data( model, element_id, station_name, issue) # Check whether to do any interpolation empty_columns = \ forecast_data.ix[:, forecast_cols].isnull().values.any(axis=0) if empty_columns.sum() == 3: # Just a single column provided. Don't do interpolation. logging.debug( "Not interpolating for model '%s', element '%s', station '%s'" % (model, str(element_id), station_name)) # Select non-empty column non_empty_col = forecast_cols[(~empty_columns).nonzero()[0][0]] interpolated_forecast = forecast_data[non_empty_col] else: # Do interpolation using meta-data meta_data = \ data_io.read_meta_data(model, element_id, station_name, issue) interpolated_forecast = interpolate( station_lat, station_lon, forecast_data.ix[:, forecast_cols], meta_data['latitude'], meta_data['longitude'], meta_data['distance'] ) forecast_data['interpolated_forecast'] = interpolated_forecast # Drop grid point data. forecast_data.drop(forecast_cols, axis=1, inplace=True) # Transform EPS data from row format to column format forecast_data = \ transform_forecast_group_data(forecast_data, model, element_name) return forecast_data