Index: trunk/tests/test_extract_slp.py =================================================================== diff -u -r33 -r38 --- trunk/tests/test_extract_slp.py (.../test_extract_slp.py) (revision 33) +++ trunk/tests/test_extract_slp.py (.../test_extract_slp.py) (revision 38) @@ -4,7 +4,7 @@ from tests.TestUtils import TestUtils from netCDF4 import Dataset from SDToolBox import main as main -from SDToolBox import extract_sea_level_pressure_era5 +from SDToolBox import extract_data_era5 from SDToolBox import data_acquisition import numpy as np @@ -24,8 +24,8 @@ input_data = data_acquisition.InputData() input_data.coord_list = [(4.2, 2.4), (42, 2.4), (42, 24), (4.2, 24)] #2. When - extract_slp = extract_sea_level_pressure_era5.ExtractSeaLevelPressureERA5(input_data) + extract_slp = extract_data_era5.ExtractDataEra5(input_data) - dataset_list = extract_slp.subset_slp_era5(dir_test_data, 1981, 1982) + dataset_list = extract_slp.subset_sea_level_pressure(dir_test_data, 1981, 1982) #3. Then assert dataset_list is not None \ No newline at end of file Index: trunk/SDToolBox/extract_sea_level_pressure_EARTH.py =================================================================== diff -u -r33 -r38 --- trunk/SDToolBox/extract_sea_level_pressure_EARTH.py (.../extract_sea_level_pressure_EARTH.py) (revision 33) +++ trunk/SDToolBox/extract_sea_level_pressure_EARTH.py (.../extract_sea_level_pressure_EARTH.py) (revision 38) @@ -40,52 +40,53 @@ case_dataset_list = [] years = generate_years_array_slp(year_from, year_to) months_list = ['01', '02', '03', '04', '05', '06', '07', '08','09','10','11', '12'] - - for yearidx, year in enumerate(years) : - for month in months_list : - case_file_path = directory_path + 'RCP45_\\' + 'EC-Earth_RCP4.5_MSLP_' + str(year) + month + '.nc' - with Dataset(case_file_path, 'r', ds_format) as case_dataset: - # Find nearest point - # (considering we are only selecting a point) - lat_list = case_dataset.variables[self.__lat_key][:] - lon_list = case_dataset.variables[self.__lon_key][:] + for n_variable, variable_name in enumerate(variable_dict): + case_name_value = variable_dict[variable_name] + for yearidx, year in enumerate(years) : + for month in months_list : + case_file_path = directory_path + 'RCP45_\\' + 'EC-Earth_RCP4.5_MSLP_' + str(year) + month + '.nc' + with Dataset(case_file_path, 'r', ds_format) as case_dataset: + # Find nearest point + # (considering we are only selecting a point) + lat_list = case_dataset.variables[self.__lat_key][:] + lon_list = case_dataset.variables[self.__lon_key][:] - lon_list = rescale_input_area(lon_list, 180) # longitude has to be rescaled to -180:180 - corr_lon = [data_acquisition.get_nearest_neighbor(input_lon, lon_list) for input_lon in self.__input_lon] - corr_lat = [data_acquisition.get_nearest_neighbor(input_lat, lat_list) for input_lat in self.__input_lat] - - pos_lon1 = corr_lon[0] - pos_lon2 = corr_lon[-1] - pos_lat1 = corr_lat[0] - pos_lat2 = corr_lat[-1] - - # concatenates the data. Time has to be formatted accordingly + lon_list = rescale_input_area(lon_list, 180) # longitude has to be rescaled to -180:180 + corr_lon = [data_acquisition.get_nearest_neighbor(input_lon, lon_list) for input_lon in self.__input_lon] + corr_lat = [data_acquisition.get_nearest_neighbor(input_lat, lat_list) for input_lat in self.__input_lat] + + pos_lon1 = corr_lon[0] + pos_lon2 = corr_lon[-1] + pos_lat1 = corr_lat[0] + pos_lat2 = corr_lat[-1] + + # concatenates the data. Time has to be formatted accordingly - if(pos_lon1 < pos_lon2) & (pos_lat1 < pos_lat2) : - if (yearidx == 0) : - variable_subset = case_dataset.variables['var151'][:,corr_lat,corr_lon] - variable_subset = np.squeeze(variable_subset) - reftime = case_dataset['time'].units.split(' ') - datetime.strptime(reftime[2]+' '+reftime[3], '%Y-%m-%d %H:%M:%S.%f') - # reftime.append([datetime.strptime(reftime[2]+' '+reftime[3], '%Y-%m-%d %H:%M:%S.%f')+timedelta(hours=int(ti)) for ti in case_dataset['time'][:]]) + if(pos_lon1 < pos_lon2) & (pos_lat1 < pos_lat2) : + if (yearidx == 0) : + variable_subset = case_dataset.variables['var151'][:,corr_lat,corr_lon] + variable_subset = np.squeeze(variable_subset) + reftime = case_dataset['time'].units.split(' ') + datetime.strptime(reftime[2]+' '+reftime[3], '%Y-%m-%d %H:%M:%S.%f') + # reftime.append([datetime.strptime(reftime[2]+' '+reftime[3], '%Y-%m-%d %H:%M:%S.%f')+timedelta(hours=int(ti)) for ti in case_dataset['time'][:]]) + else : + variable_sub = np.concatenate(variable_sub, + case_dataset['var151'][:,corr_lat,corr_lon]) + #format the time + variable_sub = np.concatenate(variable_sub, + case_dataset['time'][:,corr_lat,corr_lon]) else : - variable_sub = np.concatenate(variable_sub, - case_dataset['var151'][:,corr_lat,corr_lon]) - #format the time - variable_sub = np.concatenate(variable_sub, - case_dataset['time'][:,corr_lat,corr_lon]) - else : - if (yearidx == 0) : - variable_subset = case_dataset.variables['var151'][:,corr_lat,corr_lon] - variable_subset = np.squeeze(variable_subset) - # variable_subset = np.concatenate(case_dataset.variables['time'][:,corr_lat,corr_lon]) - else : - variable_subset = case_dataset.variables['var151'][:,corr_lat,corr_lon] - variable_subset = np.squeeze(variable_subset) + if (yearidx == 0) : + variable_subset = case_dataset.variables['var151'][:,corr_lat,corr_lon] + variable_subset = np.squeeze(variable_subset) + # variable_subset = np.concatenate(case_dataset.variables['time'][:,corr_lat,corr_lon]) + else : + variable_subset = case_dataset.variables['var151'][:,corr_lat,corr_lon] + variable_subset = np.squeeze(variable_subset) - # Get variable subset - - case_dataset_list.append(variable_subset) + # Get variable subset + + case_dataset_list.append(variable_subset) return case_dataset_list Index: trunk/tests/test_extract_waves.py =================================================================== diff -u -r37 -r38 --- trunk/tests/test_extract_waves.py (.../test_extract_waves.py) (revision 37) +++ trunk/tests/test_extract_waves.py (.../test_extract_waves.py) (revision 38) @@ -5,7 +5,7 @@ from tests.TestUtils import TestUtils from netCDF4 import Dataset from SDToolBox import main as main -from SDToolBox import extract_waves +from SDToolBox import extract_data_era5 from SDToolBox import data_acquisition import numpy as np @@ -20,7 +20,7 @@ expected_error = 'No valid input data.' # 2. When with pytest.raises(IOError) as e_info: - output_result = extract_waves.ExtractWaves(input_data) + output_result = extract_data_era5.ExtractDataEra5(input_data) # 3. Then error_message = str(e_info.value) @@ -43,8 +43,8 @@ input_data.coord_list = [(4.2, 2.4),] # 2. When - extract_wave = extract_waves.ExtractWaves(input_data) - output_data = extract_wave.subset_era_5(dir_test_data, 1981, 1982) + extract_wave = extract_data_era5.ExtractDataEra5(input_data) + output_data = extract_wave.subset_waves(dir_test_data, 1981, 1982) # 3. Then assert output_data is not None @@ -67,8 +67,8 @@ input_data.coord_list = [(4.2, 2.4), (42, 2.4), (42, 24), (4.2, 24)] # 2. When - extract_wave = extract_waves.ExtractWaves(input_data) - dataset_list = extract_wave.subset_era_5(dir_test_data, 1981, 1982) + extract_wave = extract_data_era5.ExtractDataEra5(input_data) + dataset_list = extract_wave.subset_waves(dir_test_data, 1981, 1982) # 3. Then assert dataset_list is not None @@ -87,7 +87,7 @@ with Dataset(path, 'r', format='netCDF4') as case_dataset: input_data = data_acquisition.InputData() input_data.coord_list = [(4.2, 2.4)] - extractwaves = extract_waves.ExtractWaves(input_data) + extractwaves = extract_data_era5.ExtractDataEra5(input_data) #call result = extractwaves.check_for_longitude(longitude) @@ -106,7 +106,7 @@ with Dataset(path, 'r', format='netCDF4') as case_dataset: input_data = data_acquisition.InputData() input_data.coord_list = [(4.2, 2.4)] - extractwaves = extract_waves.ExtractWaves(input_data) + extractwaves = extract_data_era5.ExtractDataEra5(input_data) #call result = extractwaves.check_for_longitude(longitude) @@ -129,7 +129,7 @@ with Dataset(path, 'r', format='netCDF4') as case_dataset: input_data = data_acquisition.InputData() input_data.coord_list = [(4.2, 2.4)] - extractwaves = extract_waves.ExtractWaves(input_data) + extractwaves = extract_data_era5.ExtractDataEra5(input_data) #call result = extractwaves.generate_years_array(year1, yearN) #assert