|
| 1 | +import itertools |
1 | 2 | from textwrap import dedent
|
2 | 3 |
|
3 | 4 | import matplotlib as mpl
|
@@ -627,26 +628,77 @@ def test_docstring():
|
627 | 628 | assert "One or more of ('X'" in airds.cf.mean.__doc__
|
628 | 629 |
|
629 | 630 |
|
630 |
| -def test_guess_coord_axis(): |
| 631 | +def _make_names(prefixes): |
| 632 | + suffixes = ["", "a", "_a", "0", "_0"] |
| 633 | + return [ |
| 634 | + f"{prefix}{suffix}" for prefix, suffix in itertools.product(prefixes, suffixes) |
| 635 | + ] |
| 636 | + |
| 637 | + |
| 638 | +_TIME_NAMES = _make_names( |
| 639 | + [ |
| 640 | + "time", |
| 641 | + "min", |
| 642 | + "hour", |
| 643 | + "day", |
| 644 | + "week", |
| 645 | + "month", |
| 646 | + "year", |
| 647 | + ] |
| 648 | +) |
| 649 | +_VERTICAL_NAMES = _make_names( |
| 650 | + [ |
| 651 | + "lv_1", |
| 652 | + "bottom_top", |
| 653 | + "sigma", |
| 654 | + "sigma_w", |
| 655 | + "hght", |
| 656 | + "height", |
| 657 | + "altitude", |
| 658 | + "depth", |
| 659 | + "isobaric", |
| 660 | + "pressure", |
| 661 | + "isotherm", |
| 662 | + ] |
| 663 | +) |
| 664 | +_X_NAMES = _make_names(["x"]) |
| 665 | +_Y_NAMES = _make_names(["y"]) |
| 666 | +_Z_NAMES = _VERTICAL_NAMES |
| 667 | +_LATITUDE_NAMES = _make_names(["lat", "latitude"]) |
| 668 | +_LONGITUDE_NAMES = _make_names(["lon", "longitude"]) |
| 669 | + |
| 670 | + |
| 671 | +@pytest.mark.parametrize( |
| 672 | + "kind, names", |
| 673 | + [ |
| 674 | + ["X", _X_NAMES], |
| 675 | + ["Y", _Y_NAMES], |
| 676 | + ["Z", _Z_NAMES], |
| 677 | + ["T", _TIME_NAMES], |
| 678 | + ["latitude", _LATITUDE_NAMES], |
| 679 | + ["longitude", _LONGITUDE_NAMES], |
| 680 | + ], |
| 681 | +) |
| 682 | +def test_guess_coord_axis(kind, names): |
| 683 | + from cf_xarray.accessor import ATTRS |
| 684 | + |
| 685 | + for varname in names: |
| 686 | + ds = xr.Dataset() |
| 687 | + ds[varname] = (varname, [1, 2, 3, 4, 5]) |
| 688 | + dsnew = ds.cf.guess_coord_axis() |
| 689 | + assert dsnew[varname].attrs == ATTRS[kind] |
| 690 | + |
| 691 | + varname = varname.upper() |
| 692 | + ds[varname] = (varname, [1, 2, 3, 4, 5]) |
| 693 | + dsnew = ds.cf.guess_coord_axis() |
| 694 | + assert dsnew[varname].attrs == ATTRS[kind] |
| 695 | + |
| 696 | + |
| 697 | +def test_guess_coord_axis_datetime(): |
631 | 698 | ds = xr.Dataset()
|
632 | 699 | ds["time"] = ("time", pd.date_range("2001-01-01", "2001-04-01"))
|
633 |
| - ds["lon_rho"] = ("lon_rho", [1, 2, 3, 4, 5]) |
634 |
| - ds["lat_rho"] = ("lat_rho", [1, 2, 3, 4, 5]) |
635 |
| - ds["x1"] = ("x1", [1, 2, 3, 4, 5]) |
636 |
| - ds["y1"] = ("y1", [1, 2, 3, 4, 5]) |
637 |
| - |
638 | 700 | dsnew = ds.cf.guess_coord_axis()
|
639 | 701 | assert dsnew.time.attrs == {"standard_name": "time", "axis": "T"}
|
640 |
| - assert dsnew.lon_rho.attrs == { |
641 |
| - "standard_name": "longitude", |
642 |
| - "units": "degrees_east", |
643 |
| - } |
644 |
| - assert dsnew.lat_rho.attrs == { |
645 |
| - "standard_name": "latitude", |
646 |
| - "units": "degrees_north", |
647 |
| - } |
648 |
| - assert dsnew.x1.attrs == {"axis": "X"} |
649 |
| - assert dsnew.y1.attrs == {"axis": "Y"} |
650 | 702 |
|
651 | 703 |
|
652 | 704 | def test_attributes():
|
|
0 commit comments