Hi All,
Monday this week Cam, Mike and me had a 30 min talk about the refactoring RCMES
code and coming with a code structure.
On the wiki page [1] there are two code structures , structure A and B.
Structure (B) was the one we came up with on Mondays talk.
Since then I was trying to make some improvements on that and came up with
structure (A).
Most of the improvements were on trying to make naming more easy understudying
for user and a simpler structure.
For example:
(B) (A)
misc.Dataset = Data.content
DataSource.local = Data.retrieve.local
DatasetProcessor = Data.process
Here are some "import" examples we can have with the new structure:
import Data.content
import Datat.process
import Data.retrieve.local
import Data.retrieve.rcmed
The Review Board for these python codes will come up soon.
Thoughts?
Best,
Mazi
[1]:
https://cwiki.apache.org/confluence/display/CLIMATE/Open+Climate+Workbench+API+summary
On Jun 6, 2013, at 9:31 AM, Boustani, Maziyar (398F) wrote:
> Hi All,
>
> Regarding to the RCMES refactoring API codes (Toolkit), I thought is good to
> have a wiki page that summarize the API we are going to have for RCMES in
> future.
> This is not the actual document we will have later for RCMES code, but it
> just the list of classes, modules, methods and functions we may need to
> develop.
> It would be great if you guys help me to complete this wiki before we start
> the refactoring toolkit's codes.
>
> https://cwiki.apache.org/confluence/display/CLIMATE/Open+Climate+Workbench+API+summary
>
> Best,
> Mazi
>
>
> On Jun 5, 2013, at 7:40 AM, Michael Joyce wrote:
>
>> +1 for cutting 0.1-incubating and starting these changes in 0.2.
>>
>>
>> -- Joyce
>>
>>
>> On Wed, Jun 5, 2013 at 7:19 AM, Mattmann, Chris A (398J) <
>> [email protected]> wrote:
>>
>>> This sounds like a good path to proceed down to me.
>>>
>>> I would formulate the below into a set of JIRA issues,
>>> then proceed by incrementally evolving the toolkit to
>>> support this.
>>>
>>> The only catch is that many of these could potentially
>>> be API back compat. Since we haven't really talked or
>>> suggested about the impact of this; nee made a release,
>>> it's certainly possible to do this in trunk.
>>>
>>> My suggestion though since trunk represents what we
>>> all believe to be RCMET 2.0 API compat, we should probably
>>> create a branch for this. Or, better yet:
>>>
>>> 1. Close out current JIRA issues for 0.1-incubating.
>>> 2. Cut a 0.1-incubating RC/release process.
>>> 3. Start to implement the below in 0.2-incubating.
>>>
>>> Thoughts?
>>>
>>> Cheers,
>>> Chris
>>>
>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>> Chris Mattmann, Ph.D.
>>> Senior Computer Scientist
>>> NASA Jet Propulsion Laboratory Pasadena, CA 91109 USA
>>> Office: 171-266B, Mailstop: 171-246
>>> Email: [email protected]
>>> WWW: http://sunset.usc.edu/~mattmann/
>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>> Adjunct Assistant Professor, Computer Science Department
>>> University of Southern California, Los Angeles, CA 90089 USA
>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>
>>>
>>>
>>>
>>>
>>>
>>> -----Original Message-----
>>> From: Michael Joyce <[email protected]>
>>> Reply-To: "[email protected]"
>>> <[email protected]>
>>> Date: Wednesday, June 5, 2013 6:56 AM
>>> To: dev <[email protected]>
>>> Subject: Proposed Toolkit Refactoring
>>>
>>>> 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
>>>
>>>
>