Apache Open Climate Workbench Change Log
============================================


Release Notes - Apache Open Climate Workbench - Version 0.5

** Sub-task
    * [CLIMATE-43] - Update evaluation running code to use new re-grid options
    * [CLIMATE-44] - Update backend with ability to handle user-specified re-grid calls.
    * [CLIMATE-341] - Refactor "calcAnnualCycleMeans" metric from metrics_kyo.py
    * [CLIMATE-497] - Update OCW release management process documentation
    * [CLIMATE-519] - Fix ESGF directory structuring
    * [CLIMATE-520] - Add ESGF wrapper to setup.py
    * [CLIMATE-540] - Port 'calcBiasAveragedOverTimeAndDomain' method over to ocw/metrics.py module
    * [CLIMATE-541] - Port 'calcRootMeanSquareDifferenceAveragedOverTimeAndDomain' method over to ocw/metrics.py module
    * [CLIMATE-542] - Port 'calcTemporalCorrelation' method over to ocw/metrics.py module
    * [CLIMATE-543] - Port 'calcNashSutcliff' method over to ocw/metrics.py module
    * [CLIMATE-544] - Port 'calc_temporal_anom_cor' method to ocw/metrics.py
    * [CLIMATE-545] - Port 'calc_spatial_anom_cor' method over to ocw/metrics.py module
    * [CLIMATE-546] - Refactor 'calcPdf' method from metrics_kyo.py
    * [CLIMATE-549] - Minor updates to the SpatialMeanOfTemporalMeanBias and RMSError metrics

** Bug
    * [CLIMATE-487] - data_source.local returns bad error when incorrect file path is provided
    * [CLIMATE-530] - Include license acknowledgment for all mccsearch dependencies
    * [CLIMATE-548] - Vagrant references should not exist in easy-ocw ubuntu script
    * [CLIMATE-554] - Changed metric names break Sphinx build

** Improvement
    * [CLIMATE-265] -  Model Ensemble to RCMED Evaluation
    * [CLIMATE-340] - Transfer metrics from the original codebase over to ocw/metrics.py
    * [CLIMATE-371] - local.load_file should accept lat/lon/time variable names
    * [CLIMATE-372] - Data_sources should allow dataset naming
    * [CLIMATE-496] - Address discrepancies within 0.4 RC#1
    * [CLIMATE-533] - Revisit mccsearch README making updates as required
    * [CLIMATE-552] - Cleanup local.py data source
    * [CLIMATE-558] - Add better links to external documentation

** New Feature
    * [CLIMATE-38] - Add regrid options
    * [CLIMATE-39] - Add ability for user to select spatial re-grid options
    * [CLIMATE-523] - Integrate mccsearch module into master branch
    * [CLIMATE-538] - Allow selection of elevation level on dataset load

** Task
    * [CLIMATE-373] - Publish documentation build to Read The Docs
    * [CLIMATE-411] - Create Pyhton lib documentation
    * [CLIMATE-518] - Add ESGF data source
    * [CLIMATE-534] - Make sure everyone on OCW PMC has PMC permissions in Jira
    * [CLIMATE-535] - Update mccsearch files.py to use current replacement of toolkit.process function
    * [CLIMATE-536] - Update mccsearch files.py to use current replacement of utils.fortran function
    * [CLIMATE-537] - Update mccsearch files.py to use current replacement of utils.misc function
    * [CLIMATE-550] - Drop bottlemet.py from OCW UI Backend
    * [CLIMATE-551] - Drop old RCMET toolkit from code base
    * [CLIMATE-553] - Add an example for the ESGF datasource
    * [CLIMATE-555] - Update Sphinx documentation version number



Release Notes - Apache Open Climate Workbench - Version 0.4

** Sub-task
    * [CLIMATE-271] - Breaking down "run_rcmes_processing.py" code to more functions
    * [CLIMATE-328] - Add Helpers for converting NetCDF time data to Python datetimes
    * [CLIMATE-329] - Add tests for ocw.utils
    * [CLIMATE-330] - Remove datetime conversion code from ocw.data_sources.local
    * [CLIMATE-332] - Rewrite UI evaluation code with OCW
    * [CLIMATE-333] - Integrate OCW-UI with refactored backend
    * [CLIMATE-334] - Drop old OCW-UI front/back end code
    * [CLIMATE-335] - Add OCW-UI to documentation build
    * [CLIMATE-361] - Normalize datetime values in UI backend
    * [CLIMATE-394] - Remove inactive subregion file box
    * [CLIMATE-482] - Add non-rebinning version of StdDevRatio
    * [CLIMATE-483] - Add non-rebinning version of PatternCorrelation metric
    * [CLIMATE-497] - Update OCW release management process documentation
    * [CLIMATE-498] - Update OCW DOAP.rdf to accommodate recent releases
    * [CLIMATE-499] - Add directions to build documentation to README
    * [CLIMATE-500] - Determine actions and address DRAT reporting output.
    * [CLIMATE-502] - Transition frontend tests to new frontend
    * [CLIMATE-506] - Find temporal overlap between models and obervations
    * [CLIMATE-510] - Find spatial overlap between models and observations
    * [CLIMATE-511] - OCW cli should let user to pick target and reference dataset before run the evaluation
    * [CLIMATE-512] - Replace frontend-ui code with new Yeoman/Grunt/Bower powered frontend
    * [CLIMATE-513] - Document new UI features on Wiki



** Bug
    * [CLIMATE-49] - Add the 'obs' regrid option into toolkit.do_data_prep.prep_data function
    * [CLIMATE-298] - Remove external dependencies from test_local
    * [CLIMATE-320] - To make UI handle CMIP5 model outputs
    * [CLIMATE-321] - dataset_processor._get_subregion_slice_indices cannot handle imprecise subregion input
    * [CLIMATE-322] - dataset_processor._get_subregion_slice_indices cannot handle imprecise start and end time input
    * [CLIMATE-339] - Metrics.py has typo in Class TemporalStdDev, def Run (axi --> axis) + test_metrics.py need to be modified
    * [CLIMATE-344] - Temporal rebin doesn't propagate dataset name or variable name
    * [CLIMATE-345] - Spatial regrid doesn't propagate dataset name or variable name
    * [CLIMATE-346] - Subsetting must be performed after Temporal Rebin
    * [CLIMATE-350] - Access-Control-Allow-Origin is not set on response from UI backend
    * [CLIMATE-352] - Dataset.spatial_boundaries doesn't return proper data format
    * [CLIMATE-354] - ResultCtrl doesn't handle missing cache directory removal properly
    * [CLIMATE-363] - Backend processing doesn't parse temporal resolution properly
    * [CLIMATE-364] - Invalid metric names doesn't exclude ABCMeta
    * [CLIMATE-380] - Unary metric evaluation fails on reference dataset
    * [CLIMATE-382] - UI backend return types aren't recognized as JSON
    * [CLIMATE-387] - reStructuredText is malformed in UI backend
    * [CLIMATE-390] - OCW UI maps no longer display properly
    * [CLIMATE-391] - Date ranges for UI evaluation are not normalized
    * [CLIMATE-392] - OCW Dataset should shift lon values that range from 0-360
    * [CLIMATE-396] - RCMED Parameters are improperly parsed in UI backend
    * [CLIMATE-398] - OCW is unable to parse an acceptable date format
    * [CLIMATE-402] - Dataset bounds are not properly set in ParameterSelectCtrl
    * [CLIMATE-405] - UI backend documentation isn't building for /parameters/bounds
    * [CLIMATE-412] - Create README for OCW
    * [CLIMATE-414] - Overhaul OCW Wiki
    * [CLIMATE-416] - Clean up UI backend tests
    * [CLIMATE-420] - Download link to most recent release is broken
    * [CLIMATE-422] - easy-ocw install.sh still references svn code
    * [CLIMATE-423] - Evaluation Unary Metric is missing return resutls
    * [CLIMATE-435] - Fix easy-ocw path in VM build
    * [CLIMATE-437] - Remove provisioning from Vagrant VM build
    * [CLIMATE-440] - Remove local PATH_LEADER settings from test_directory_helpers
    * [CLIMATE-442] - Cannot have multiple nested directories that don't exist in UI backend tests
    * [CLIMATE-445] - Remove unneeded OCW checkout from easy-ocw Ubuntu script
    * [CLIMATE-449] - NetCDF4 is installed twice in easy-ocw Ubuntu install
    * [CLIMATE-451] - Getting Errors in virtualenv wrapper after running easy-ocw/install-osx.sh 
    * [CLIMATE-454] - VM Build does not copy dependency files to install directory
    * [CLIMATE-455] - utils.reshape_monthly_to_annually should modify a copy of the passed dataset
    * [CLIMATE-470] - utils.parse_time_base fails to handle time format
    * [CLIMATE-472] - Contour map colorbar labels overlap with large float values
    * [CLIMATE-481] - StddevRatio and PatternCorr metrics outputting bad values
    * [CLIMATE-503] - OCW-cli notification center is broken due to passing wrong argument
    * [CLIMATE-504] - OCW cli cannot get observation spatial resolution 
    * [CLIMATE-514] - Dependencies are missing from package.json
    * [CLIMATE-516] - Backend static file serving does not work
    * [CLIMATE-517] - Start and End day values overlap in dataset display


** Documentation
    * [CLIMATE-54] - Updating the docstrings in metrics.py


** Improvement
    * [CLIMATE-47] - precipFlag attribute within the Model class needs to be refactored
    * [CLIMATE-91] - Webapps directory restructure
    * [CLIMATE-241] - Make old docstrings in plotter.py sphinx compliant
    * [CLIMATE-261] - Consolidate Code that converts a String into a Datetime Object
    * [CLIMATE-262] - Develop simple examples of an End to End Evaluation using OCW API
    * [CLIMATE-270] - UI Back-End update 
    * [CLIMATE-309] - Add OpenDAP support to OCW
    * [CLIMATE-310] - Update setup.py version
    * [CLIMATE-311] - Add Sphinx doc building
    * [CLIMATE-312] - Add dataset.py to Sphinx build
    * [CLIMATE-313] - Add dataset_processor.py to Sphinx build
    * [CLIMATE-314] - Add evaluation.py to Sphinx build
    * [CLIMATE-315] - Add metrics.py to Sphinx build
    * [CLIMATE-317] - Fix plotter.py documentation
    * [CLIMATE-318] - Add plotter.py to the Sphinx build
    * [CLIMATE-319] - Add data sources to Sphinx build
    * [CLIMATE-324] - Reorganize OCW UI Code
    * [CLIMATE-325] - Reorganize OCW UI Backend Code
    * [CLIMATE-326] - Refactor OCW-UI backend services
    * [CLIMATE-331] - Make OCW-UI use OCW code instead of old RCMES backend
    * [CLIMATE-343] - Integrate utils.taylor into OCW
    * [CLIMATE-347] - UI backend grid shape calculations can result in widely imbalanced shapes
    * [CLIMATE-349] - Refactoring "reshapeMonthlyData" from rcmes/utils/misc.py 
    * [CLIMATE-351] - obs4MIPs data ingestion
    * [CLIMATE-358] - Truncate lat/lon values in DatasetDisplayCtrl
    * [CLIMATE-359] - Change wording of reference dataset selection to reflect new backend
    * [CLIMATE-360] - Fix subsetting in UI backend
    * [CLIMATE-370] - Update Easy-OCW
    * [CLIMATE-377] - Update UI to latest Angular version
    * [CLIMATE-378] - Setup proper build/dependency management for UI
    * [CLIMATE-395] - Add more unit tests for normalize_lat_lon_values() helper
    * [CLIMATE-397] - Switch UI backend over to safe_subset
    * [CLIMATE-399] - Use functions in numpy.testing for unit tests involving array comparisons
    * [CLIMATE-401] - Remove UnaryMetrics from UI settings menu
    * [CLIMATE-403] - Integrate /parameters/bounds endpoint into UI frontend
    * [CLIMATE-408] - Dataset select window should have a close button
    * [CLIMATE-427] - Make easy-ocw pip dependencies install from a requirements file
    * [CLIMATE-428] - Add versions to all the easy-ocw dependency installs
    * [CLIMATE-429] - Add sphinx doc building dependencies to easy-ocw
    * [CLIMATE-430] - Add link to relevant wiki documentation from easy-ocw install scripts
    * [CLIMATE-432] - Add wiki page for easy-ocw
    * [CLIMATE-433] - Add wiki page for Vagrant VM build
    * [CLIMATE-434] - Add README for Github
    * [CLIMATE-436] - Pull VM OCW code from ASF repo
    * [CLIMATE-438] - adding new time format to data_source/local.py
    * [CLIMATE-439] - Refactoring 'calcClimYear' function to OCW API
    * [CLIMATE-441] - easy-ocw needs to check if a previous 'ocw' virtualenv exists
    * [CLIMATE-443] - move calcSpatialStdevRatio to OCW metrics
    * [CLIMATE-444] - move calcPatternCorrelation to OCW metrics
    * [CLIMATE-446] - easy-ocw Anaconda download should point to an archive link
    * [CLIMATE-447] - ocw.tests lacks __init__.py
    * [CLIMATE-450] - OCW examples download remote netCDF files without checking if they exist
    * [CLIMATE-452] - Add Ubuntu Unity desktop install option to OCW VM build
    * [CLIMATE-453] - Add Taylor Diagram example
    * [CLIMATE-456] - Update DAP tests to use setupClass method for initialization
    * [CLIMATE-457] - Clean up after Easy-OCW install on Ubuntu
    * [CLIMATE-458] - Add OCW UI setup to VM build
    * [CLIMATE-462] - Move Ubuntu Easy OCW install leftovers cleanup into VM build
    * [CLIMATE-464] - Move calcClimSeason to utils
    * [CLIMATE-468] - Add helpful links to the OCW-VM build
    * [CLIMATE-471] - Add seasonal versions of SpatialStdDevRatio and SeasonalPatternCorrelation
    * [CLIMATE-473] - Add a gitignore
    * [CLIMATE-474] - Make colorbar labels not use scientific notation
    * [CLIMATE-475] - Make metric imports in ocw.tests not explicit
    * [CLIMATE-476] - OCW objects should implement __str__
    * [CLIMATE-477] - Add nose-exclude as a development dependency
    * [CLIMATE-479] - Clean up return type documentation in toolkit
    * [CLIMATE-489] - Improve dataset_processor.subset()'s ValueError Message
    * [CLIMATE-492] - Move OCW-UI over to Yeomann, Bower, and Grunt
    * [CLIMATE-496] - Address discrepancies within 0.4 RC#1

** New Feature
    * [CLIMATE-137] - OCW refactoring code
    * [CLIMATE-327] - Add OCW Utils module
    * [CLIMATE-336] - test (Unit Test) for Class BIAS on metrics.py
    * [CLIMATE-337] - test (Unit Test) for Class TemporalStdDev on metrics.py
    * [CLIMATE-386] - Add NetCDF writer to Dataset Processor
    * [CLIMATE-393] - Add less strict subsetting functionality
    * [CLIMATE-404] - OCW Command Line Tool
    * [CLIMATE-425] - Example of Temporal STD Metric with Contour Map plot
    * [CLIMATE-463] - refactoring calcBiasAveragedOverTime metric
    * [CLIMATE-505] - OCW cli to support multi observations and multi models

** Task
    * [CLIMATE-2] - Refactor source code to use ASF package names
    * [CLIMATE-127] - Easy-RCMET changes after transition
    * [CLIMATE-171] - Preparing daily TRMM data to evaluate NARCCAP models
    * [CLIMATE-259] - Create branch to refactor updates to ui/services to support multiple metrics/plotting
    * [CLIMATE-342] - utils.taylor lacks proper licensing
    * [CLIMATE-355] - Update UI frontend tests
    * [CLIMATE-356] - Pull metric names from backend for UI dropdowns
    * [CLIMATE-357] - ParameterSelectCtrl should only allow users to select values on a integer grid
    * [CLIMATE-368] - Add JIRA labels for issue difficulty estimation
    * [CLIMATE-369] - Setup automatic VM build
    * [CLIMATE-381] - Update setup.py to reflect the change from Incubating to Top Level Project
    * [CLIMATE-384] - Clean new git repo's pack file
    * [CLIMATE-385] - Copyright dates need updated
    * [CLIMATE-415] - Create a *Contributing to OCW* wiki page 
    * [CLIMATE-417] - Backend UI tests are missing ASF Header
    * [CLIMATE-431] - Add ASF header to easy-ocw install scripts
    * [CLIMATE-460] - Drop old RCMET Webapp
    * [CLIMATE-461] - Drop old RCMET VM
    * [CLIMATE-469] - Add ASF headers to OCW example files
    * [CLIMATE-484] - Remove rebinning metrics
    * [CLIMATE-485] - Ensure all metrics are included in Sphinx build
    * [CLIMATE-490] - Drop DISCLAIMER.txt
    * [CLIMATE-491] - Add author note to TaylorDiagram


Release Notes - Apache Open Climate Workbench - Version 0.3-incubating

** Sub-task
    * [CLIMATE-190] - test_local.py
    * [CLIMATE-227] - OCW rcmed.py code
    * [CLIMATE-228] - test_rcmed.py
    * [CLIMATE-235] - Migrate Temporal Binning Functionality to dataset_processor module
    * [CLIMATE-236] - Add Dataset Ensemble Support to the ocw.dataset_processor module
    * [CLIMATE-237] - Add Subset Generation function to dataset_processor module
    * [CLIMATE-263] - Create local netCDF to local netCDF Evaluation Example using OCW Core API
    * [CLIMATE-264] - Local NetCDF File to RCMED Evaluation (temporal and spatial regridding of data)
    * [CLIMATE-266] - local.py and associated tests import code one level below the ocw folder
    * [CLIMATE-268] - local.py returns a Dataset Object with a 4-D Array for the Dataset.values
    * [CLIMATE-280] - Add OnBlur directive tests
    * [CLIMATE-281] - Evaluation Class methods need 'self' added to them
    * [CLIMATE-285] - Create UnaryMetric base class
    * [CLIMATE-286] - Create BinaryMetric base class
    * [CLIMATE-287] - Remove Metric Base Class
    * [CLIMATE-289] - Update Bias to use BinaryMetric
    * [CLIMATE-290] - Update TemporalStdDev to use UnaryMetric
    * [CLIMATE-291] - Update Metric handling in Evaluation
    * [CLIMATE-294] - Move existing normalization code over from RCMES toolkit
    * [CLIMATE-307] - Update OCW example runs to pull NC files from external source

** Bug
    * [CLIMATE-19] - Easy-RCMET fails on on copying py modules
    * [CLIMATE-225] - Add subplot functionality to draw_taylor_diagram
    * [CLIMATE-233] - Update UI to allow user to select file for subregions
    * [CLIMATE-240] - PredictiveFileBrowserInput doesn't update ng-model when user selects autocomplete option
    * [CLIMATE-250] - Variable Name error means 'ENS-MODEL' is not a choice within the rcmet/cli code
    * [CLIMATE-251] - Fix dataset selector pop up
    * [CLIMATE-252] - Redirect user to correct result page
    * [CLIMATE-253] - Easy_OCW tells the user to source an incorrect file
    * [CLIMATE-254] - Add Subregion Object to OCW
    * [CLIMATE-260] - decode_model_times chokes if time representation contains .0 after seconds
    * [CLIMATE-267] - Dataset doesn't validate input parameters on init
    * [CLIMATE-269] - Evaluation improperly imports other ocw package modules
    * [CLIMATE-272] - Local Cache in RCMES doesn't work properly
    * [CLIMATE-273] - test_local uses invalid import for data_source.local
    * [CLIMATE-275] - Timeline is not working with the new UI routing
    * [CLIMATE-277] - service '/static/evalResults/' should take a path 
    * [CLIMATE-278] - clean up UI 
    * [CLIMATE-283] - data_source.rcmed module doesn't properly mask data from the database
    * [CLIMATE-292] - Subregion Evaluation encloses results in an extra list
    * [CLIMATE-293] - Dataset processor needs to handle normalizing Dataset time values
    * [CLIMATE-299] - test_rcmed breaks if run outside of the tests directory
    * [CLIMATE-308] - test_local depends on NetCDF file in examples folder

** Improvement
    * [CLIMATE-12] - Update map drawing routine to draw dataset's actual bounds
    * [CLIMATE-31] - New RCMES Command line interface 
    * [CLIMATE-113] - Improve unit test coverage
    * [CLIMATE-149] - Update unit tests for directives
    * [CLIMATE-152] - New UI layout
    * [CLIMATE-214] - Add evaluation.py to OCW
    * [CLIMATE-238] - Allow users to set strings for colormaps in plotting functions
    * [CLIMATE-245] - Service to return list of images 
    * [CLIMATE-247] - Make the AngularJS UI easily skinnable
    * [CLIMATE-255] - Use Bounds object in dataset_processor.subset
    * [CLIMATE-256] - Use Bounds object in Evaluation
    * [CLIMATE-257] - Add Property for Evaluation.ref_dataset
    * [CLIMATE-258] - Improve Evaluation documentation
    * [CLIMATE-274] - Make the exception that the Dataset class throws more descriptive
    * [CLIMATE-276] - Refactor the dataset_processor.py code to no depend on toolkit.process
    * [CLIMATE-279] - rcmed.py returns a Dataset Object with a 4-D Array for the Dataset.values 
    * [CLIMATE-282] - Merge changes from CLIMATE-259 (RefactorPlots branch) into trunk
    * [CLIMATE-284] - Create separate Base Classes for metric.py
    * [CLIMATE-288] - Use parameter_id instead of logname to select observation in knmi_to_cru31_full_bias.py
    * [CLIMATE-295] - Change loggers so they don't use the root logger
    * [CLIMATE-296] - Log exception raises in dataset module
    * [CLIMATE-297] - test_local breaks if run outside of the tests directory
    * [CLIMATE-300] - Setup packaging
    * [CLIMATE-306] - Remove large OCW example NetCDF files

** New Feature
    * [CLIMATE-215] - Create new Plotter class for OCW refactoring
    * [CLIMATE-224] - Update the OCW UI with the AngularUI UI-Router
    * [CLIMATE-242] - Update run_rcmes_processing to support history
    * [CLIMATE-243] - Add capability to return a list of evaluation directories 
    * [CLIMATE-244] - Service to return list of images
    * [CLIMATE-249] - Add results/history page

** Task
    * [CLIMATE-20] - Easy-RCMET install requests JPL username / password for software dist
    * [CLIMATE-136] - Remove RCMET references from Easy-RCMET
    * [CLIMATE-213] - Create the dataset_processor.py module within the ocw folder
    * [CLIMATE-217] - Add metrics.py for OCW refactoring
    * [CLIMATE-218] - Update metric handling in Evaluation to coincide with new Metric definition
    * [CLIMATE-219] - Add name attribute to Dataset
    * [CLIMATE-239] - Remove Plotter class from plotter.py
    * [CLIMATE-301] - Fix licenses in obs4MIPs code
    * [CLIMATE-302] - Move obs4MIPs copyright headers
    * [CLIMATE-303] - Integrate obs4MIPs into OCW
    * [CLIMATE-304] - Add obs4MIPs JIRA component
    * [CLIMATE-305] - Update obs4MIPs setup.py with OCW related information
** Test
    * [CLIMATE-220] - implement unit tests for plotter.py



Release Notes - Apache Open Climate Workbench - Version 0.2-incubating

** Sub-task
    * [CLIMATE-139] - OCW dataset.py code
    * [CLIMATE-142] - OCW local.py code
    * [CLIMATE-185] - test_dataset.py

** Bug
    * [CLIMATE-140] - creating new "ocw"  directory in trunk
    * [CLIMATE-189] - PreviewMap directive assigns incorrect color to maps
    * [CLIMATE-191] - getResultDirInfo returns improper options
    * [CLIMATE-199] - Globe image import breaks on deploy
    * [CLIMATE-200] - Result.html needs to include angular-ui
    * [CLIMATE-201] - LeafletMap overlays aren't duplicated when the user scrolls the map
    * [CLIMATE-202] - Leaflet overlays aren't duplicated when user scrolls PreviewMaps
    * [CLIMATE-204] - Remove overlay display in the World Map
    * [CLIMATE-221] - checkLatLon in files.py doesn't work if lons are in the domain (180, 360)
    * [CLIMATE-226] - radmax parameter in __init__ is broken in utils.taylor.TaylorDiagram
    * [CLIMATE-229] - Formatting issue for monthly time series plots
    * [CLIMATE-232] - evaluation does not redirect to correct path

** Improvement
    * [CLIMATE-182] - Remove gray-ing of buttons in modal headers/footers
    * [CLIMATE-183] - Remove scrolling capability from timeline
    * [CLIMATE-184] - Add directive for adding thumbnail maps to dataset
    * [CLIMATE-187] - Add thumbnail map to dataset display
    * [CLIMATE-188] - Draw overlap border and user selected region on map
    * [CLIMATE-193] - Don't display dataset preview map when dataset is global
    * [CLIMATE-194] - Uncompiled Angular templating code is briefly present when page loads
    * [CLIMATE-195] - Timeline doesn't redraw when the window is resized
    * [CLIMATE-196] - "Powered by Leaflet" attribute on main map overlaps jQuery datepicker
    * [CLIMATE-197] - Add Angular-UI
    * [CLIMATE-198] - Add tooltips to UI buttons
    * [CLIMATE-205] - Improve user selected region display
    * [CLIMATE-206] - Add tooltip to dataset remove button
    * [CLIMATE-207] - Add background to settings modal
    * [CLIMATE-208] - Remove overlay color box from Dataset Display
    * [CLIMATE-209] - Set all PreviewMap overlays to the same color
    * [CLIMATE-210] - Move dataset re-grid option to Settings modal
    * [CLIMATE-211] - Clean up dataset display
    * [CLIMATE-222] - Update PredictiveFileBrowserInput.js to handle more then one case
    * [CLIMATE-223] - Update result.html to follow index.html style
    * [CLIMATE-234] - Make plotting functions consisted with new API documentation

** New Feature
    * [CLIMATE-128] - Adding Taylor Diagram support to plots
    * [CLIMATE-192] - creating new 'tests' directory under /trunk/ocw 
    * [CLIMATE-216] - Add new plotting functions to repository
    * [CLIMATE-231] - Add ability for plotter to process generic plotting functions


Release Notes - Apache Open Climate Workbench - Version 0.1-incubating

** Sub-task
    * [CLIMATE-11] - Move region-select parameters to a service
    * [CLIMATE-35] - Update dataset additions to include new display attribute
    * [CLIMATE-36] - Add checkbox to dataset display panels for toggling display attribute state
    * [CLIMATE-37] - Update map drawing routine to make drawing dataset overlays optional
    * [CLIMATE-40] - Add new re-gridding field when adding a dataset using the selectedDatasetInformation service
    * [CLIMATE-41] - Add re-gridding logic to the DatasetDisplayCtrl
    * [CLIMATE-42] - Add sliders for selecting lat/lon degree steps
    * [CLIMATE-46] - Add temporal re-grid to evaluation settings modal
    * [CLIMATE-48] - Update runEvaluation to use temporal re-grid option
    * [CLIMATE-57] - Add service for sharing evaluation settings
    * [CLIMATE-59] - Add modal for evaluation settings
    * [CLIMATE-60] - Add and wire-in SettingsCtrl
    * [CLIMATE-61] - Use new evaluation settings in runEvaluation
    * [CLIMATE-62] - Add checkbox for selecting re-grid options
    * [CLIMATE-63] - Add jQuery UI
    * [CLIMATE-65] - Add temporal regridding options to evaluationSettings service
    * [CLIMATE-69] - Add AngularUI date directive support
    * [CLIMATE-70] - Add new start and end datepickers
    * [CLIMATE-76] - Add parameter checks when user adjusts values in ParameterSelectCtrl
    * [CLIMATE-78] - WorldMapCtrl should allow for overlay redraw to be triggered via an event
    * [CLIMATE-80] - Trigger redraw of map overlays when user is finished typing.
    * [CLIMATE-81] - Don't watch region parameter changes to trigger map redraws
    * [CLIMATE-83] - Change ParameterSelectCtrl layout
    * [CLIMATE-84] - Hide UI control buttons instead of disabling them
    * [CLIMATE-85] - Evaluation button doesn't display properly when running an evaluation
    * [CLIMATE-94] - Move services in app.js to services.js
    * [CLIMATE-95] - Split up controllers.js
    * [CLIMATE-96] - Split up directives.js
    * [CLIMATE-98] - Remove filters.js
    * [CLIMATE-99] - Split up services.js
    * [CLIMATE-102] - Move services over to separate module
    * [CLIMATE-103] - Move directives over to a separate module
    * [CLIMATE-104] - Move controllers over to new module
    * [CLIMATE-109] - Get rid of useless boilerplate files
    * [CLIMATE-115] - Remove controllersSpec.js
    * [CLIMATE-116] - Add tests for ParameterSelectCtrl
    * [CLIMATE-120] - Make run/rcmes endpoint JSONP compatible
    * [CLIMATE-121] - Add tests for SettingsCtrl
    * [CLIMATE-122] - Add tests for DatasetDisplayCtrl
    * [CLIMATE-123] - Add tests for RcmedSelectionCtrl
    * [CLIMATE-130] - Add tests for ObservationSelectCtrl
    * [CLIMATE-131] - Add tests for WorldMapCtrl
    * [CLIMATE-133] - Remove unneeded timeline files
    * [CLIMATE-134] - Move timeline css file into appropriate lib folder
    * [CLIMATE-145] - Remove serviceSpec.js
    * [CLIMATE-146] - Add tests for EvaluationSettings service
    * [CLIMATE-147] - Add tests for RegionSelectParams service
    * [CLIMATE-148] - Add tests for SelectedDatasetInformation
    * [CLIMATE-150] - Remove directivesSpec.js
    * [CLIMATE-151] - Update BootstrapModal directive tests
    * [CLIMATE-154] - Remove filtersSpec.js
    * [CLIMATE-172] - Display evaluation results in a separate view
    * [CLIMATE-173] - Add service to return list of figures in work directory

** Bug
    * [CLIMATE-1] - Replace longName with longname to match the new JPL Webservice
    * [CLIMATE-5] - misc.py tried to import SubRegion when rcmet.py already has
    * [CLIMATE-14] - directory_helpers.py should prevent users from accessing arbitrary directories
    * [CLIMATE-18] - Easy-RCMET installs incorrect binary versions
    * [CLIMATE-21] - RCMES UI is unable to communicate with backend properly when directory access is limited
    * [CLIMATE-25] - bootstrap-modal keyboard escape doesn't work when an element isn't in focus
    * [CLIMATE-51] - Add style guide and information for new users
    * [CLIMATE-52] - Disable Parameter input boxes when the user hasn't selected a valid number of datasets
    * [CLIMATE-53] - db.extractData function should not change dir
    * [CLIMATE-58] - bootstrapModalOpen directive doesn't handle attributes correctly
    * [CLIMATE-64] - User is unable to uncheck regrid box
    * [CLIMATE-71] - Adding model dataset doesn't handle time values correctly
    * [CLIMATE-77] - User selected region is redrawn as the user types
    * [CLIMATE-79] - regionParameter changes cause a race condition when drawing map overlays
    * [CLIMATE-82] - checkParameters doesn't properly handle value comparisons
    * [CLIMATE-86] - Website - Update the Wiki link under Documentation 
    * [CLIMATE-87] - Easy-RCMET pulls repo from JPL instead of ASF
    * [CLIMATE-106] - requests module not installed by easy_rcmet
    * [CLIMATE-110] - Pull the 'raw_input' functions out of the metrics.calcPdf function
    * [CLIMATE-111] - Switch tests over to Karma
    * [CLIMATE-112] - Unit tests no longer work
    * [CLIMATE-118] - Update ParameterSelectCtrl datasets $watch to prevent call to undefined variable
    * [CLIMATE-126] - deprecated function is used in process.py
    * [CLIMATE-135] - zlib not installed to /usr/local
    * [CLIMATE-138] - calc_bias is undefined in metrics
    * [CLIMATE-141] - matplotlib is not imported in plots
    * [CLIMATE-158] - Basemap.cm is imported incorrectly in do_rcmes_processing_sub.py
    * [CLIMATE-159] - do_rcmes_procressing_sub breaks when graphing
    * [CLIMATE-167] - NetCDF4 change breaks list_vars service
    * [CLIMATE-168] - Refactored Functions in metrics.py return a different number of variables
    * [CLIMATE-169] - critical bugs in metrics.py and plots.py
    * [CLIMATE-170] - VM image does not work on AMD CPU based PC
    * [CLIMATE-175] - WorldMapCtrlTest is broken after addition of zooming map
    * [CLIMATE-177] - Update misc.select_metrics function to prevent user selection of incomplete metrics
    * [CLIMATE-181] - Timeline options don't work
    * [CLIMATE-186] - RCMES cannot handle NCEP reanalysis and GCM data 

** Documentation
    * [CLIMATE-157] - Replace PYTHON_PATH with PYTHONPATH in Easy-RCMET docs

** Improvement
    * [CLIMATE-9] - Move rootScope datasets object over to a service
    * [CLIMATE-10] - Move map-specific code to WorldMapCtrl
    * [CLIMATE-13] - Parameter selection in selectObservation.html needs to use proper databinding.
    * [CLIMATE-15] - Show upload confirmation when user submits local file to UI.
    * [CLIMATE-16] - Provide feedback when a dataset is submitted by the user
    * [CLIMATE-17] - Update bootstrap-modal directive to allow for animated open/closing
    * [CLIMATE-23] - bootstrap-modal and bootstrap-modal-open need refactored
    * [CLIMATE-24] - Mouse scroll needs to be disabled on the UI map
    * [CLIMATE-26] - Display the number of datasets currently queued for evaluation when the user is selecting datasets.
    * [CLIMATE-27] - Filter out invalid variable options in selectObservation
    * [CLIMATE-28] - Adjust how variable selection drop down boxes are displayed to the user depending on number of options
    * [CLIMATE-29] - Provide reasonable default options for drop downs to user when pulling datasets from RCMED
    * [CLIMATE-32] - Factor out host component of URLs for backend calls 
    * [CLIMATE-55] - Updating any modules using PyNgl and PyNio
    * [CLIMATE-66] - Clean up ParameterSelectCtrl
    * [CLIMATE-68] - Switch Start and End field over to jQuery UI DatePicker
    * [CLIMATE-72] - Adjust input parameter boxes display properties
    * [CLIMATE-73] - Remove Update button from ParameterSelectCtrl
    * [CLIMATE-74] - Add on-blur directive
    * [CLIMATE-75] - Parameter select input boxes need to reject invalid input
    * [CLIMATE-88] - Performance improvements for metrics.py
    * [CLIMATE-92] - Overhaul to plots.py
    * [CLIMATE-93] - Split up UI files for a more manageable code base
    * [CLIMATE-97] - Rename Leaflet Map directive
    * [CLIMATE-100] - Clean up JavaScript folder and imports
    * [CLIMATE-101] - Define controllers, directives, and services under separate modules
    * [CLIMATE-105] - Remove RCMES references in UI code
    * [CLIMATE-107] - All source files need ASF licence text
    * [CLIMATE-114] - Update unit tests for controllers
    * [CLIMATE-117] - updates to regridding
    * [CLIMATE-119] - Make ParameterSelectCtrl runEvaluation use Angular HTTP instead of jQuery
    * [CLIMATE-124] - Define RcmedSelectionCtrl.getObservations on scope instead of locally
    * [CLIMATE-125] - Define RcmedSelectionCtrl.getObservationTimeRange on scope
    * [CLIMATE-132] - Move JavaScript libs into appropriate folder
    * [CLIMATE-144] - Update unit tests for services
    * [CLIMATE-153] - Add filter for converting ISO dates to US dates
    * [CLIMATE-174] - Map should zoom to the overlap region of selected datasets
    * [CLIMATE-176] - Fix WorldMapCtrl indentation
    * [CLIMATE-178] - Fix TimelineCtrl indentation
    * [CLIMATE-180] - Timeline changes for new UI design
    * [CLIMATE-203] - Deprecate read_lolaT_from_file() in files.py
    * [CLIMATE-222] - Update PredictiveFileBrowserInput.js to handle more then one case
	* [CLIMATE-223] - Update results.html to follow index.html style 

** New Feature
    * [CLIMATE-33] - Add modal for metric selection
    * [CLIMATE-34] - Add ability to toggle dataset overlays
    * [CLIMATE-45] - Add ability for user to select temporal re-gridding options
    * [CLIMATE-67] - Add functionality to ingest locally stored hourly infrared temperature satellite data
    * [CLIMATE-89] - Implement a timeline widget 

** Task
    * [CLIMATE-3] - Purge Unnecessary JPL Internal Development Files/Folders
    * [CLIMATE-4] - Push latest code changes from JPL svn to Apache
    * [CLIMATE-6] - Add the Interactive Mode back into rcmet.py
    * [CLIMATE-108] - Clean up UI CSS files
    * [CLIMATE-129] - Create a KEYS files for GPG Code Signatures in trunk
    * [CLIMATE-155] - Update FontAwesome


Regional Climate Model Evaluation System
JIRA located here: https://oodt.jpl.nasa.gov/jira/browse/RCMES


Release Notes - RCMES Project - Version 1.1.0 - 08/09/2012

** The project has been renamed from Water Resource Management to Regional Climate Model Evaluation System


** Bug
    * [RCMES-59] - Drop Down Menu Lists are Broken @ http://rcmes.jpl.nasa.gov/
	* [RCMES-58] - set group ownership to 'daemon' for rcmes puny content
 	* [RCMES-46] - wrm_merra_slp - Database is being written to extremely slowly
 	* [RCMES-10] - Fix the MySQL/PHP Timeout for Database Query Web Service
 	* [RCMES-8] - AIRSL3NetCDF extractor should not extract 'data points' for parameter definitions
 	* [RCMES-7] - Granule Segments coming into the Catalog are being counted as new Granules
 	* [RCMES-6] - Update the Query API page to include datasetId
 	* [RCMES-4] - Catalog needs to insert the variable name into shortName instead of longName (parameter TABLE)
 	* [RCMES-3] - Granule Segments coming into the Catalog are being counted as new Datasets
 	* [RCMES-1] - ISO timestamp support in WRM means we need to change the TYPE of all time columns to VARCHAR20


** Improvement
    * [RCMES-42] - Rebrand SVN home for RCMES away from WRM
    * [RCMES-38] - Deploy RCMED under new URL
    * [RCMES-37] - Get PAR for RCMES
    * [RCMES-34] - Move mailing lists from wrm-general, wrm-dev, wrm-commits to rcmes-general, rcmes-dev and rcmes-commits
    * [RCMES-32] - Deploy RCMES main portal
    * [RCMES-31] - Drop un-used Tables from WRM_PROD database
 
 
 ** New Feature
    * [RCMES-13] - Create a met extractor for AIRS NetCDF files
    * [RCMES-12] - Python Query API for controlled access to the WRM infrastructure via Python scripts


** Task
 	* [RCMES-49] - 17 more Databases Needed for the RCMED
 	* [RCMES-48] - Create 10 more Databases
 	* [RCMES-44] - Create A set of Databases for the MERRA dataset
 	* [RCMES-28] - Schema and supporting doc. checked into SVN
 	* [RCMES-26] - File Manager Policy checked into SVN
 	* [RCMES-24] - Each Parameter needs a TIMESTEP Metadata Key with a single value from a restricted list.
 	* [RCMES-20] - Update - Python GRIB Extractor to read all variables in a file
 	* [RCMES-18] - Enable GRIB Extractor to take in Command Line Arguments
 	* [RCMES-17] - Set up basic website that provides information about the contents of the WRM databse
 	* [RCMES-16] - Develop metadata extractor for sample data


WRM Regional Climate Model Evaluation Database
JIRA located here:  http://oodt.jpl.nasa.gov/jira/browse/WRM


Release Notes - Water Resource Management Infrastructure - Version 1.0.0 - 09/24/2010


** Bug
    * [WRM-9] - AIRSL3NetCDF extractor should not extract 'data points' for parameter definitions
    * [WRM-13] - Granule Segments coming into the Catalog are being counted as new Granules
    * [WRM-14] - Granule Segments coming into the Catalog are being counted as new Datasets
    * [WRM-15] - ISO timestamp support in WRM means we need to change the TYPE of all time columns to VARCHAR20
    * [WRM-16] - Catalog needs to insert the variable name into shortName instead of longName (parameter TABLE)


** New Feature
    * [WRM-8] - Create a met extractor for AIRS NetCDF files
    * [WRM-10] - Python Query API for controlled access to the WRM infrastructure via Python scripts

** Task
    * [WRM-1] - File Manager Policy checked into SVN
    * [WRM-2] - Schema and supporting doc. checked into SVN
    * [WRM-3] - Develop metadata extractor for sample data
    * [WRM-4] - Develop a config script for running the ExternMetExtractor
    * [WRM-5] - Create JIRA Components to represent the different aspects of the WRM project
    * [WRM-6] - Create a development structure in SVN that reflects all aspects of project effort
    * [WRM-7] - Create a deployment process that makes it easy to quickly build a working production environment
    * [WRM-12] - Enable GRIB Extractor to take in Command Line Arguments
    * [WRM-17] - Set up basic website that provides information about the contents of the WRM databse

