All, This is a brief rundown of a discussion that Paul, Cam, Mazi, and I had yesterday regarding the current state of the toolkit and proposed changes that we would like to discuss with the list.
We discussed adding a number of objects that should help simplify toolkit usage. Below is a high-level rundown of our discussion. -- Dataset: Simple container object for a dataset. Provides helpers for accessing relevant data (getLatsLons, getTime) and convenience functions (writeToFile()). DataSource: Provides the user with helper functions for grabbing the data that they want to evaluate. There's a RCMED module specifically for grabbing RCMED data and a Local module for grabbing local data. This could easily be expanded to include ESG and other data sources. DatasetProcessor: Any operation that needs to be run on datasets (that isn't the evaluation obviously) is found in the DatasetProcessor. It supports: - regridding (spatial and temporal) - masking/cleaning/filtering - subsetting (spatial and temporal) - ensemble generation - anything else that fits here. Evaluation: The Evaluation object is (surprise surprise) in charge of running Evaluations. It keeps track of the datasets (both 'reference' and the 'targets') that the user wants to use in the evaluation. It runs all the necessary evaluations and keeps the results nicely stored and readily accessible for the user. Metric: Metrics are added to an Evaluation and used during the run. All metrics inherit from the base Metric class. All you need to add new metrics is inherit from Metric and override the 'run' method. Plotter: The Plotter makes result visualization a breeze. If you give it an Evaluation object it will spit out plots of all the results. Give it a Dataset and it will spit out a plot. You can even have it return Matplotlib objects so you can make your results look exactly the way you'd like. -- Joyce
