Giter VIP home page Giter VIP logo

e3sm_diags's People

Contributors

ambrad avatar chengzhuzhang avatar doutriaux1 avatar forsyth2 avatar golaz avatar mahf708 avatar tomvothecoder avatar xylar avatar zshaheen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

e3sm_diags's Issues

multiple json stopped working properly

acme_diags_driver only runs for the last json file attached:
i.e.:
acme_diags_driver.py -p mydiags_v1.py -d driver/lat_lon_ACME.json -d driver/cosp_histogram_AMWG_default.json
only runs for cosp_histogram_AMWG_default.json

This worked on Friday's master though

Change names of the drivers and plotting scripts

Instead of setX_driver.py, vcs/set3.py and cartopy/set3.py, have something less obscure.
Some ideas:

  • set3_driver.py -> zonal_mean_xy_driver.py
  • set4_driver.py -> zonal_mean_2d_driver.py
  • set5_driver.py -> lat_lon_driver.py
  • set7_driver.py -> polar_driver.py
  • cosp_histogram_driver.py is good

And for the plotting

  • set3.py -> zonal_mean_xy_plot.py
  • set4.py -> zonal_mean_2d_plot.py
  • set5.py -> lat_lon_plot.py
  • set7.py -> polar_plot.py
  • set13 -> cosp_histogram_plot.py

Also have a good interface from going to numbered parameters <-> detailed parameters.

Add command line arguments

So that this can easily be used in the ACME Workflow.
Maybe we don't need to add all of the arguments, just the ones that are defined in ACMEParameter.

Allow user to just run diags with .json only

Though this would be tedious for a user to do, it should still be able to be done. It makes it easy for some people who don't quite understand the point of the Python script.

Support for multiple jsons and parameters

This should be implemented into cdp.
Something like this:

$ acme_diags_driver.py -p myparams.py -d mydiags1.json mydiags2.json
$ acme_diags_driver.py -p myparams.py myotherparams.py -d mydiags1.json mydiags2.json

Add scripts to start workers and scheduler

Add scripts to this package to get the worker and scheduler/head nodes up and running.
Make sure to edit setup.py so users within an env can just do:

# scheduler.sh
# worker.sh 8

HadISST sea ice is not masked out

hadisst_pi-sst-ann-global

On the observation panel, sea-ice areas show up with a negative temperature instead of missing values. There might be something wrong in the dataset itself.

Order in viewer should match json files

The order in which the viewer displays plot sets, and variables within plot sets should match the order in input json files. A user could therefore customize the order to their liking by simply editing json files describing the plots.

Clean up drivers

  • Make sure entire repo passes flake8, possibly make a flake8 unit test
  • Clean print statements of drivers, also maybe use logger module instead of print()
  • Change mv1 and mv2 variable names to something related to ref and test
  • Probably more

Implement a basic testing framework

By August 24, implement a basic testing framework where Jill, Chris, and Jerry can easily create batch jobs against the latest code and view the results.

Ex: Any Python parameter script (something.py) with the correspondingly named diag files (something1.cfg, something2.json, etc) will automatically be ran at a certain time. The user can manually trigger these runs as well.

Output numerical diags results

Output stuff like the min, max, mean and other metrics (rmse, corr, more) to something like a json. This will allow us to easily view the non-rounded values and compare to the AMWG diagnostics when needed.

Update the documentation

Some stuff to do:

  • Update the examples so the new keywords are used
  • Expand on the install instructions
  • Update the quick guide to use v1.0.0

Adding ncclimo to diags?

A long time ago, some people mentioned that we should add ncclimo into our diagnostics, so users don't have to do that preprocessing beforehand. However, this is already handled by the ACME Workbench. What are your thoughts @chengzhuzhang?

Add CERES-EBAF 2.8 TOA

Sine there are large differences between CERES-EBAF TOA 2.8 and 4.0, we should include both datasets.

Give a useful error message when the user doesn't give parameters

When they run the driver without a parameters file:

$ acme_diags_driver.py

they get:

  File "/export/baldwin32/anaconda2/envs/acme2/lib/python2.7/site-packages/acme_diags/acme_parameter.py", line 58, in check_values
    if self.reference_data_path == '':
AttributeError: 'ACMEParameter' object has no attribute 'reference_data_path'

Give a better error message.

Thanks @sterlingbaldwin

Don't base viewer cols/rows on parameters

Sometimes, there an error 'No file found for (variable) and (season)', so no plot is created. But since the viewer looks through the parameters, it'll think there's a file.

We end up with something like this:

screen shot 2017-05-17 at 11 57 48 pm

Generated with:

{
	"set5": [
        {
			"sets": [3],
			"case_id": "set5_CRU",
			"variables": ["TREFHT_LAND"],
			"ref_name": "CRU",
			"reference_name": "IPCC/CRU climatology1961-90",
			"seasons": ["MAM"],
			"contour_levels": [210, 220, 230, 240, 250, 260, 270, 275, 280, 285, 290, 295, 300, 305, 310],
			"diff_levels": [-5, -4, -3, -2, -1, -0.5, -0.2, 0, 0.2, 0.5, 1, 2, 3, 4, 5]
		},
		{
			"sets": [3],
			"case_id": "set5_SST_HadISST",
			"variables": ["SST"],
			"ref_name": "HadISST_CL",
			"reference_name": "HadISST/OI.v2 (Climatology) 1982-2001",
			"seasons": ["DJF"],
			"contour_levels": [-1, 0, 1, 3, 6, 9, 12, 15, 18, 20, 22, 24, 26, 28, 29],
			"diff_levels": [-5, -4, -3, -2, -1, -0.5, -0.2, 0, 0.2, 0.5, 1, 2, 3, 4, 5]
		}
	]
}

Add more unit tests

Add more unit tests for the functionality related to the drivers and more.

Add new variables to ACME default lat-lon

I'd like to add new variables to the ACME default lat-lon plot sets:

  • NetCF (CERES-EBAF TOA, surface)
  • SHFLX, netSW surface, netLW surface, net flux sfc (ERA-Interim)
  • LHFLX, SHFLX, netSW surface, netLW surface, net flux sfc (MERRA)
  • Sea level pressure

Add quality control to user input

Check that all needed keywords are present.
The ACMEParameters class already does this, but if the user spells "sets" as "set" still doesn't give an error.

Add aliases for options used for sets keyword

In addition to supporting sets = [3, 4, 5, 7], we can aliases for 3, 4, 5, and 7.

Maybe have:

  • 3 == "zonal mean line"
  • 4 == "zonal mean height contour"
  • 5 == "lat long contour"
  • 7 == "polar contour"

@chengzhuzhang, what are your thoughts and do you have ideas for keywords that are succinct?
I'll actually implement this, it's trivial.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.