diff --git a/CHANGELOG b/CHANGELOG index 3006f6c730a14b317631a3fc9303ab243f580d35..be9f9a01160a807e6e2dc865497b236f5a8aa670 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,11 @@ CHANGELOG +## 0.1.4 - 2025/06/23 - Frequency by average and gridded format + +### Features +- Data can be saved in a "gridded" format inside the netCDF files, so that it can be easily read and opened in ncview or Panoply +- Number of observations are added in the netCDF +- Average by frequency implementation +- Naming convention for plots updated ## 0.1.3 - 2025/03/07 - Logging implemented diff --git a/mapies/mapies.py b/mapies/mapies.py index a944162c9f945e781b23be0293003038a1934cea..6bfa496d63cd20923d0694ce67f178d118ce6342 100644 --- a/mapies/mapies.py +++ b/mapies/mapies.py @@ -519,7 +519,6 @@ class MAPIES: @logger.catch def plot_2D_observations( self, - months: List[int] = [0], filename: str = None, outdir: str = None ): @@ -527,7 +526,7 @@ class MAPIES: Mapies main plotting function for 2d surface obs """ - if months == [0]: + if hasattr(self, "obs"): try: lon_values = self.lon lat_values = self.lat @@ -536,7 +535,9 @@ class MAPIES: logger.error(f"Error plotting all data: {e}") return title = f"Observation 2D plot from {self.start_date} to {self.end_date}" - filename = filename or f"{self.datatype}_2D_obs_from_{self.start_date}_to_{self.end_date}.png" + start_date_obj = self.start_date.strftime("%Y%m%d%H%M") + end_date_obj = self.end_date.strftime("%Y%m%d%H%M") + filename = filename or f"{self.datatype}_2D_obs_from_{start_date_obj}_to_{end_date_obj}.png" self.plotter.plot_2D_obs_custom( lon_values=lon_values, lat_values=lat_values, @@ -547,14 +548,16 @@ class MAPIES: filename=filename, ) return - elif months == [1]: + elif hasattr(self, "avg_results") and len(self.avg_results) > 0: for i, (date, lon_values, lat_values, obs_values, count_obs) in enumerate(self.avg_results): # if obs_values is None or len(obs_values) == 0: # continue logger.debug(f"Plotting date: {date}, average {i}") date_obj = datetime.strptime(date, "%Y%m%d%H%M") title = f"Observation 2D plot - {date_obj}, average {i}" - filename = f"{self.datatype}_2D_obs_from_{self.start_date}_to_{self.end_date}_{date}_average_{i}.png" + start_date_obj = self.start_date.strftime("%Y%m%d%H%M") + end_date_obj = self.end_date.strftime("%Y%m%d%H%M") + filename = f"{self.datatype}_2D_obs_from_{start_date_obj}_to_{end_date_obj}_{date}_average_{i}.png" self.plotter.plot_2D_obs_custom( lon_values=lon_values, @@ -565,15 +568,15 @@ class MAPIES: title=title, filename=filename, ) + return else: - logger.error("Error: months can be either [0] for all data, [1] for averages by frequency.") + logger.error("Nothing to plot: neither full observations nor frequency-averaged results are available.") return def plot_2D_num_obs( - self, - months: List[int] = [0], + self, filename: str = None, outdir: str = None ): @@ -581,7 +584,7 @@ class MAPIES: Mapies main plotting function for observation counts at the surface """ - if months == [0]: + if hasattr(self, "obs"): try: lon_values = self.lon lat_values = self.lat @@ -590,7 +593,9 @@ class MAPIES: logger.error(f"Error plotting all data: {e}") return title = f"Plot of the number of valid observations from {self.start_date} to {self.end_date}" - filename = f"{self.datatype}_2D_obs_count_from_{self.start_date}_to_{self.end_date}.png" + start_date_obj = self.start_date.strftime("%Y%m%d%H%M") + end_date_obj = self.end_date.strftime("%Y%m%d%H%M") + filename = filename or f"{self.datatype}_2D_obs_count_from_{start_date_obj}_to_{end_date_obj}.png" self.plotter.plot_2D_num_obs_custom( lon_values=lon_values, lat_values=lat_values, @@ -601,11 +606,13 @@ class MAPIES: ) return - elif months == [1]: + elif hasattr(self, "avg_results") and len(self.avg_results) > 0: for i, (date, lon_values, lat_values, obs_values, count_obs) in enumerate(self.avg_results): date_obj = datetime.strptime(date, "%Y%m%d%H%M") title = f"Plot of the number of valid observations - {date_obj}, average {i}" - filename = filename or f"{self.datatype}_2D_obs_count_from_{self.start_date}_to_{self.end_date}_{date}_average_{i}.png" + start_date_obj = self.start_date.strftime("%Y%m%d%H%M") + end_date_obj = self.end_date.strftime("%Y%m%d%H%M") + filename = f"{self.datatype}_2D_obs_count_from_{start_date_obj}_to_{end_date_obj}_{date}_average_{i}.png" self.plotter.plot_2D_num_obs_custom( lon_values=lon_values, lat_values=lat_values, @@ -614,9 +621,9 @@ class MAPIES: title=title, filename=filename, ) - + return else: - logger.error("Error: months can be either [0] for all data, [1] for averages by frequency.") + logger.error("Nothing to plot: neither full observations nor frequency-averaged results are available.") return @staticmethod diff --git a/run/run_viirs.py b/run/run_viirs.py index ed9eb22c167d71ff9e1587c89012f082cf41ca63..dad0be22cf7bc9170542fa066eebc9fe13dee0fd 100644 --- a/run/run_viirs.py +++ b/run/run_viirs.py @@ -32,8 +32,8 @@ if __name__ == "__main__": # c.plot_2D_observations(months=[0], filename="plot_10062025.png", outdir=outdir) # c.plot_2D_observations(months=[1], outdir=outdir) - - c.plot_2D_num_obs(months=[1], outdir=outdir) + c.plot_2D_observations(filename='Trial1', outdir=outdir) + c.plot_2D_num_obs(filename='Trial1_count', outdir=outdir) # c.process_lazy_data(apply_qa=True, save=True) diff --git a/setup.py b/setup.py index 68f1e785346fe91df5340844dc5466716640282d..a1499a1093b1783330fedf2f6ba983f7209a1d19 100644 --- a/setup.py +++ b/setup.py @@ -12,7 +12,7 @@ from setuptools import find_packages from setuptools import setup # Could update this using versioneer -version="0.1.3" +version="0.1.4" setup( name="mapies",