roms-tools 1.6.1__py3-none-any.whl → 1.7.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ci/environment.yml +1 -1
- roms_tools/__init__.py +5 -1
- roms_tools/_version.py +1 -1
- roms_tools/setup/boundary_forcing.py +128 -146
- roms_tools/setup/datasets.py +779 -192
- roms_tools/setup/download.py +30 -0
- roms_tools/setup/grid.py +8 -10
- roms_tools/setup/initial_conditions.py +77 -96
- roms_tools/setup/plot.py +144 -24
- roms_tools/setup/river_forcing.py +589 -0
- roms_tools/setup/surface_forcing.py +33 -138
- roms_tools/setup/tides.py +24 -76
- roms_tools/setup/utils.py +274 -7
- roms_tools/tests/test_setup/test_boundary_forcing.py +98 -5
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/.zmetadata +157 -130
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/ALK_ALT_CO2_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/ALK_ALT_CO2_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/ALK_ALT_CO2_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/ALK_ALT_CO2_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/ALK_ALT_CO2_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/ALK_ALT_CO2_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/ALK_ALT_CO2_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/ALK_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/ALK_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/ALK_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/ALK_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/ALK_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/ALK_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/ALK_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DIC_ALT_CO2_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DIC_ALT_CO2_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DIC_ALT_CO2_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DIC_ALT_CO2_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DIC_ALT_CO2_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DIC_ALT_CO2_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DIC_ALT_CO2_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DIC_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DIC_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DIC_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DIC_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DIC_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DIC_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DIC_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOC_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOC_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOC_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOC_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOC_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOC_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOC_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOCr_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOCr_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOCr_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOCr_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOCr_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOCr_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOCr_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DON_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DON_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DON_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DON_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DON_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DON_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DON_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DONr_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DONr_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DONr_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DONr_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DONr_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DONr_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DONr_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOP_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOP_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOP_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOP_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOP_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOP_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOP_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOPr_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOPr_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOPr_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOPr_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOPr_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOPr_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/DOPr_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/Fe_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/Fe_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/Fe_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/Fe_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/Fe_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/Fe_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/Fe_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/Lig_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/Lig_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/Lig_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/Lig_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/Lig_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/Lig_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/Lig_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/NH4_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/NH4_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/NH4_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/NH4_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/NH4_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/NH4_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/NH4_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/NH4_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/NO3_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/NO3_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/NO3_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/NO3_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/NO3_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/NO3_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/NO3_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/O2_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/O2_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/O2_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/O2_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/O2_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/O2_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/O2_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/PO4_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/PO4_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/PO4_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/PO4_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/PO4_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/PO4_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/PO4_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/SiO3_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/SiO3_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/SiO3_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/SiO3_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/SiO3_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/SiO3_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/SiO3_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/abs_time/.zattrs +1 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/bry_time/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatC_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatC_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatC_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatC_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatC_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatC_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatC_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatC_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatChl_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatChl_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatChl_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatChl_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatChl_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatChl_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatChl_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatChl_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatFe_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatFe_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatFe_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatFe_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatFe_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatFe_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatFe_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatFe_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatP_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatP_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatP_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatP_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatP_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatP_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatP_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatP_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatSi_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatSi_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatSi_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatSi_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatSi_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatSi_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatSi_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diatSi_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazC_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazC_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazC_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazC_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazC_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazC_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazC_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazC_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazChl_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazChl_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazChl_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazChl_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazChl_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazChl_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazChl_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazChl_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazFe_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazFe_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazFe_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazFe_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazFe_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazFe_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazFe_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazFe_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazP_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazP_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazP_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazP_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazP_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazP_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazP_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/diazP_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/month/.zarray +20 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/month/.zattrs +6 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/month/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spC_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spC_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spC_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spC_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spC_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spC_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spC_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spC_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spCaCO3_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spCaCO3_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spCaCO3_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spCaCO3_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spCaCO3_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spCaCO3_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spCaCO3_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spCaCO3_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spChl_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spChl_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spChl_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spChl_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spChl_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spChl_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spChl_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spChl_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spFe_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spFe_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spFe_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spFe_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spFe_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spFe_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spFe_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spFe_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spP_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spP_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spP_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spP_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spP_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spP_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spP_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/spP_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/zooC_east/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/zooC_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/zooC_north/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/zooC_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/zooC_south/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/zooC_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/zooC_west/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_climatology.zarr/zooC_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_climatology.zarr/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_climatology.zarr/.zmetadata +39 -12
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_climatology.zarr/abs_time/.zattrs +1 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_climatology.zarr/dust/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_climatology.zarr/dust_time/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_climatology.zarr/iron/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_climatology.zarr/iron_time/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_climatology.zarr/month/.zarray +20 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_climatology.zarr/month/.zattrs +6 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_climatology.zarr/month/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_climatology.zarr/nhy/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_climatology.zarr/nhy_time/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_climatology.zarr/nox/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_climatology.zarr/nox_time/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_climatology.zarr/pco2_air/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_climatology.zarr/pco2_air_alt/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_climatology.zarr/pco2_time/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/.zmetadata +0 -7
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/abs_time/.zattrs +0 -3
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/salt_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/salt_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/temp_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/temp_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/u_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/u_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/u_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/ubar_east/0.0 +0 -0
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/ubar_south/0.0 +0 -0
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/ubar_west/0.0 +0 -0
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/v_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/v_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/v_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/v_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/vbar_east/0.0 +0 -0
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/vbar_north/0.0 +0 -0
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/vbar_south/0.0 +0 -0
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/vbar_west/0.0 +0 -0
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/zeta_east/.zattrs +0 -1
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/zeta_east/0.0 +0 -0
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/zeta_north/.zattrs +0 -1
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/zeta_south/.zattrs +0 -1
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/zeta_south/0.0 +0 -0
- roms_tools/tests/test_setup/test_data/boundary_forcing.zarr/zeta_west/.zattrs +0 -1
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/.zattrs +3 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/.zgroup +3 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/.zmetadata +214 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/abs_time/.zarray +20 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/abs_time/.zattrs +8 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/abs_time/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/month/.zarray +20 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/month/.zattrs +6 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/month/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/river_name/.zarray +24 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/river_name/.zattrs +6 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/river_name/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/river_time/.zarray +20 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/river_time/.zattrs +8 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/river_time/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/river_tracer/.zarray +24 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/river_tracer/.zattrs +10 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/river_tracer/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/river_volume/.zarray +22 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/river_volume/.zattrs +9 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/river_volume/0.0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/tracer_name/.zarray +20 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/tracer_name/.zattrs +6 -0
- roms_tools/tests/test_setup/test_data/river_forcing.zarr/tracer_name/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/.zattrs +1 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/.zgroup +3 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/.zmetadata +185 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/abs_time/.zarray +20 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/abs_time/.zattrs +8 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/abs_time/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_name/.zarray +24 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_name/.zattrs +6 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_name/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_time/.zarray +20 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_time/.zattrs +7 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_time/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_tracer/.zarray +24 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_tracer/.zattrs +10 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_tracer/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_volume/.zarray +22 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_volume/.zattrs +9 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_volume/0.0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_name/.zarray +20 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_name/.zattrs +6 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_name/0 +0 -0
- roms_tools/tests/test_setup/test_datasets.py +8 -3
- roms_tools/tests/test_setup/test_grid.py +6 -5
- roms_tools/tests/test_setup/test_initial_conditions.py +0 -2
- roms_tools/tests/test_setup/test_river_forcing.py +366 -0
- roms_tools/tests/test_setup/test_surface_forcing.py +0 -2
- roms_tools/tests/test_setup/test_tides.py +0 -2
- roms_tools/tests/test_setup/test_validation.py +4 -0
- roms_tools/utils.py +12 -10
- {roms_tools-1.6.1.dist-info → roms_tools-1.7.0.dist-info}/METADATA +5 -5
- {roms_tools-1.6.1.dist-info → roms_tools-1.7.0.dist-info}/RECORD +362 -309
- {roms_tools-1.6.1.dist-info → roms_tools-1.7.0.dist-info}/WHEEL +1 -1
- {roms_tools-1.6.1.dist-info → roms_tools-1.7.0.dist-info}/LICENSE +0 -0
- {roms_tools-1.6.1.dist-info → roms_tools-1.7.0.dist-info}/top_level.txt +0 -0
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import xarray as xr
|
|
2
|
-
import pandas as pd
|
|
3
|
-
import yaml
|
|
4
2
|
import importlib.metadata
|
|
5
|
-
from dataclasses import dataclass, field
|
|
3
|
+
from dataclasses import dataclass, field
|
|
6
4
|
from roms_tools.setup.grid import Grid
|
|
7
5
|
from datetime import datetime
|
|
8
6
|
import numpy as np
|
|
@@ -22,6 +20,9 @@ from roms_tools.setup.utils import (
|
|
|
22
20
|
save_datasets,
|
|
23
21
|
get_target_coords,
|
|
24
22
|
rotate_velocities,
|
|
23
|
+
convert_to_roms_time,
|
|
24
|
+
_to_yaml,
|
|
25
|
+
_from_yaml,
|
|
25
26
|
)
|
|
26
27
|
from roms_tools.setup.plot import _plot
|
|
27
28
|
import matplotlib.pyplot as plt
|
|
@@ -133,14 +134,7 @@ class SurfaceForcing:
|
|
|
133
134
|
|
|
134
135
|
ds = self._write_into_dataset(processed_fields, data, d_meta)
|
|
135
136
|
|
|
136
|
-
|
|
137
|
-
mask = self.grid.ds["mask_coarse"].rename(
|
|
138
|
-
{"eta_coarse": "eta_rho", "xi_coarse": "xi_rho"}
|
|
139
|
-
)
|
|
140
|
-
else:
|
|
141
|
-
mask = self.grid.ds["mask_rho"]
|
|
142
|
-
|
|
143
|
-
self._validate(ds, mask)
|
|
137
|
+
self._validate(ds, target_coords["mask"], variable_info)
|
|
144
138
|
|
|
145
139
|
# substitute NaNs over land by a fill value to avoid blow-up of ROMS
|
|
146
140
|
for var_name in ds.data_vars:
|
|
@@ -233,28 +227,34 @@ class SurfaceForcing:
|
|
|
233
227
|
# Define a dictionary for variable names and their associated information
|
|
234
228
|
if self.type == "physics":
|
|
235
229
|
variable_info = {
|
|
236
|
-
"swrad": default_info,
|
|
237
|
-
"lwrad": default_info,
|
|
238
|
-
"Tair": default_info,
|
|
239
|
-
"qair": default_info,
|
|
240
|
-
"rain": default_info,
|
|
230
|
+
"swrad": {**default_info, "validate": True},
|
|
231
|
+
"lwrad": {**default_info, "validate": False},
|
|
232
|
+
"Tair": {**default_info, "validate": False},
|
|
233
|
+
"qair": {**default_info, "validate": True},
|
|
234
|
+
"rain": {**default_info, "validate": False},
|
|
241
235
|
"uwnd": {
|
|
242
236
|
"location": "u",
|
|
243
237
|
"is_vector": True,
|
|
244
238
|
"vector_pair": "vwnd",
|
|
245
239
|
"is_3d": False,
|
|
240
|
+
"validate": True,
|
|
246
241
|
},
|
|
247
242
|
"vwnd": {
|
|
248
243
|
"location": "v",
|
|
249
244
|
"is_vector": True,
|
|
250
245
|
"vector_pair": "uwnd",
|
|
251
246
|
"is_3d": False,
|
|
247
|
+
"validate": True,
|
|
252
248
|
},
|
|
253
249
|
}
|
|
254
250
|
elif self.type == "bgc":
|
|
255
251
|
variable_info = {}
|
|
256
|
-
for
|
|
257
|
-
variable_info[
|
|
252
|
+
for var_name in data.var_names.keys():
|
|
253
|
+
variable_info[var_name] = default_info
|
|
254
|
+
if var_name == "pco2_air":
|
|
255
|
+
variable_info[var_name] = {**default_info, "validate": True}
|
|
256
|
+
else:
|
|
257
|
+
variable_info[var_name] = {**default_info, "validate": False}
|
|
258
258
|
|
|
259
259
|
return variable_info
|
|
260
260
|
|
|
@@ -300,44 +300,12 @@ class SurfaceForcing:
|
|
|
300
300
|
ds[var_name].attrs["long_name"] = d_meta[var_name]["long_name"]
|
|
301
301
|
ds[var_name].attrs["units"] = d_meta[var_name]["units"]
|
|
302
302
|
|
|
303
|
-
if self.use_coarse_grid:
|
|
304
|
-
ds = ds.rename({"eta_coarse": "eta_rho", "xi_coarse": "xi_rho"})
|
|
305
|
-
|
|
306
303
|
ds = self._add_global_metadata(ds)
|
|
307
304
|
|
|
308
305
|
# Convert the time coordinate to the format expected by ROMS
|
|
309
|
-
|
|
310
|
-
ds.
|
|
311
|
-
|
|
312
|
-
ds = ds.assign_coords(
|
|
313
|
-
{"abs_time": np.datetime64(self.model_reference_date) + ds["time"]}
|
|
314
|
-
)
|
|
315
|
-
# Convert to pandas TimedeltaIndex
|
|
316
|
-
timedelta_index = pd.to_timedelta(ds["time"].values)
|
|
317
|
-
|
|
318
|
-
# Determine the start of the year for the base_datetime
|
|
319
|
-
start_of_year = datetime(self.model_reference_date.year, 1, 1)
|
|
320
|
-
|
|
321
|
-
# Calculate the offset from midnight of the new year
|
|
322
|
-
offset = self.model_reference_date - start_of_year
|
|
323
|
-
|
|
324
|
-
# Convert the timedelta to nanoseconds first, then to days
|
|
325
|
-
sfc_time = xr.DataArray(
|
|
326
|
-
(timedelta_index - offset).view("int64") / 3600 / 24 * 1e-9,
|
|
327
|
-
dims="time",
|
|
328
|
-
)
|
|
329
|
-
else:
|
|
330
|
-
# Preserve absolute time coordinate for readability
|
|
331
|
-
ds = ds.assign_coords({"abs_time": ds["time"]})
|
|
332
|
-
|
|
333
|
-
sfc_time = (
|
|
334
|
-
(ds["time"] - np.datetime64(self.model_reference_date)).astype(
|
|
335
|
-
"float64"
|
|
336
|
-
)
|
|
337
|
-
/ 3600
|
|
338
|
-
/ 24
|
|
339
|
-
* 1e-9
|
|
340
|
-
)
|
|
306
|
+
ds, sfc_time = convert_to_roms_time(
|
|
307
|
+
ds, self.model_reference_date, data.climatology
|
|
308
|
+
)
|
|
341
309
|
|
|
342
310
|
if self.type == "physics":
|
|
343
311
|
time_coords = ["time"]
|
|
@@ -351,14 +319,6 @@ class SurfaceForcing:
|
|
|
351
319
|
]
|
|
352
320
|
for time_coord in time_coords:
|
|
353
321
|
ds = ds.assign_coords({time_coord: sfc_time})
|
|
354
|
-
ds[time_coord].attrs[
|
|
355
|
-
"long_name"
|
|
356
|
-
] = f"days since {str(self.model_reference_date)}"
|
|
357
|
-
ds[time_coord].encoding["units"] = "days"
|
|
358
|
-
ds[time_coord].attrs["units"] = "days"
|
|
359
|
-
if data.climatology:
|
|
360
|
-
ds[time_coord].attrs["cycle_length"] = 365.25
|
|
361
|
-
ds.encoding["unlimited_dims"] = "time"
|
|
362
322
|
|
|
363
323
|
if self.type == "bgc":
|
|
364
324
|
ds = ds.drop_vars(["time"])
|
|
@@ -369,7 +329,7 @@ class SurfaceForcing:
|
|
|
369
329
|
|
|
370
330
|
return ds
|
|
371
331
|
|
|
372
|
-
def _validate(self, ds, mask):
|
|
332
|
+
def _validate(self, ds, mask, variable_info):
|
|
373
333
|
"""Validates the dataset by checking for NaN values at wet points, which would
|
|
374
334
|
indicate missing raw data coverage over the target domain.
|
|
375
335
|
|
|
@@ -379,6 +339,10 @@ class SurfaceForcing:
|
|
|
379
339
|
The dataset to validate.
|
|
380
340
|
mask : xarray.DataArray
|
|
381
341
|
Land mask (1=ocean, 0=land) to determine wet points in the domain.
|
|
342
|
+
variable_info : dict
|
|
343
|
+
A dictionary containing metadata about each variable (e.g., location,
|
|
344
|
+
whether it's a 3D variable, etc.). Used to retrieve information for
|
|
345
|
+
validating each variable.
|
|
382
346
|
|
|
383
347
|
Raises
|
|
384
348
|
------
|
|
@@ -392,7 +356,9 @@ class SurfaceForcing:
|
|
|
392
356
|
"""
|
|
393
357
|
|
|
394
358
|
for var_name in ds.data_vars:
|
|
395
|
-
|
|
359
|
+
# Only validate variables based on "validate" flag if use_dask is False
|
|
360
|
+
if not self.use_dask or variable_info[var_name]["validate"]:
|
|
361
|
+
nan_check(ds[var_name].isel(time=0), mask)
|
|
396
362
|
|
|
397
363
|
def _add_global_metadata(self, ds=None):
|
|
398
364
|
|
|
@@ -471,12 +437,7 @@ class SurfaceForcing:
|
|
|
471
437
|
|
|
472
438
|
title = field.long_name
|
|
473
439
|
|
|
474
|
-
|
|
475
|
-
if self.use_coarse_grid:
|
|
476
|
-
field = field.rename({"eta_rho": "eta_coarse", "xi_rho": "xi_coarse"})
|
|
477
|
-
field = field.where(self.grid.ds.mask_coarse)
|
|
478
|
-
else:
|
|
479
|
-
field = field.where(self.grid.ds.mask_rho)
|
|
440
|
+
field = field.where(self.target_coords["mask"])
|
|
480
441
|
|
|
481
442
|
field = field.assign_coords(
|
|
482
443
|
{"lon": self.target_coords["lon"], "lat": self.target_coords["lat"]}
|
|
@@ -582,49 +543,8 @@ class SurfaceForcing:
|
|
|
582
543
|
filepath : Union[str, Path]
|
|
583
544
|
The path to the YAML file where the parameters will be saved.
|
|
584
545
|
"""
|
|
585
|
-
filepath = Path(filepath)
|
|
586
|
-
|
|
587
|
-
# Serialize Grid data
|
|
588
|
-
grid_data = asdict(self.grid)
|
|
589
|
-
grid_data.pop("ds", None) # Exclude non-serializable fields
|
|
590
|
-
grid_data.pop("straddle", None)
|
|
591
546
|
|
|
592
|
-
|
|
593
|
-
try:
|
|
594
|
-
roms_tools_version = importlib.metadata.version("roms-tools")
|
|
595
|
-
except importlib.metadata.PackageNotFoundError:
|
|
596
|
-
roms_tools_version = "unknown"
|
|
597
|
-
|
|
598
|
-
# Create header
|
|
599
|
-
header = f"---\nroms_tools_version: {roms_tools_version}\n---\n"
|
|
600
|
-
|
|
601
|
-
# Create YAML data for Grid and optional attributes
|
|
602
|
-
grid_yaml_data = {"Grid": grid_data}
|
|
603
|
-
|
|
604
|
-
# Combine all sections
|
|
605
|
-
surface_forcing_data = {
|
|
606
|
-
"SurfaceForcing": {
|
|
607
|
-
"start_time": self.start_time.isoformat(),
|
|
608
|
-
"end_time": self.end_time.isoformat(),
|
|
609
|
-
"source": self.source,
|
|
610
|
-
"type": self.type,
|
|
611
|
-
"correct_radiation": self.correct_radiation,
|
|
612
|
-
"use_coarse_grid": self.use_coarse_grid,
|
|
613
|
-
"model_reference_date": self.model_reference_date.isoformat(),
|
|
614
|
-
}
|
|
615
|
-
}
|
|
616
|
-
|
|
617
|
-
# Merge YAML data while excluding empty sections
|
|
618
|
-
yaml_data = {
|
|
619
|
-
**grid_yaml_data,
|
|
620
|
-
**surface_forcing_data,
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
with filepath.open("w") as file:
|
|
624
|
-
# Write header
|
|
625
|
-
file.write(header)
|
|
626
|
-
# Write YAML data
|
|
627
|
-
yaml.dump(yaml_data, file, default_flow_style=False, sort_keys=False)
|
|
547
|
+
_to_yaml(self, filepath)
|
|
628
548
|
|
|
629
549
|
@classmethod
|
|
630
550
|
def from_yaml(
|
|
@@ -645,33 +565,8 @@ class SurfaceForcing:
|
|
|
645
565
|
An instance of the SurfaceForcing class.
|
|
646
566
|
"""
|
|
647
567
|
filepath = Path(filepath)
|
|
648
|
-
# Read the entire file content
|
|
649
|
-
with filepath.open("r") as file:
|
|
650
|
-
file_content = file.read()
|
|
651
|
-
|
|
652
|
-
# Split the content into YAML documents
|
|
653
|
-
documents = list(yaml.safe_load_all(file_content))
|
|
654
|
-
|
|
655
|
-
surface_forcing_data = None
|
|
656
|
-
|
|
657
|
-
# Process the YAML documents
|
|
658
|
-
for doc in documents:
|
|
659
|
-
if doc is None:
|
|
660
|
-
continue
|
|
661
|
-
if "SurfaceForcing" in doc:
|
|
662
|
-
surface_forcing_data = doc["SurfaceForcing"]
|
|
663
|
-
|
|
664
|
-
if surface_forcing_data is None:
|
|
665
|
-
raise ValueError("No SurfaceForcing configuration found in the YAML file.")
|
|
666
|
-
|
|
667
|
-
# Convert from string to datetime
|
|
668
|
-
for date_string in ["model_reference_date", "start_time", "end_time"]:
|
|
669
|
-
surface_forcing_data[date_string] = datetime.fromisoformat(
|
|
670
|
-
surface_forcing_data[date_string]
|
|
671
|
-
)
|
|
672
568
|
|
|
673
|
-
# Create Grid instance from the YAML file
|
|
674
569
|
grid = Grid.from_yaml(filepath)
|
|
570
|
+
params = _from_yaml(cls, filepath)
|
|
675
571
|
|
|
676
|
-
|
|
677
|
-
return cls(grid=grid, **surface_forcing_data, use_dask=use_dask)
|
|
572
|
+
return cls(grid=grid, **params, use_dask=use_dask)
|
roms_tools/setup/tides.py
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
from datetime import datetime
|
|
2
2
|
import xarray as xr
|
|
3
3
|
import numpy as np
|
|
4
|
-
import yaml
|
|
5
|
-
import importlib.metadata
|
|
6
4
|
from typing import Dict, Union, List
|
|
7
|
-
|
|
8
|
-
from dataclasses import dataclass, field
|
|
5
|
+
import importlib.metadata
|
|
6
|
+
from dataclasses import dataclass, field
|
|
9
7
|
from roms_tools.setup.grid import Grid
|
|
10
8
|
from roms_tools.setup.plot import _plot
|
|
11
9
|
from roms_tools.setup.datasets import TPXODataset
|
|
@@ -19,6 +17,8 @@ from roms_tools.setup.utils import (
|
|
|
19
17
|
get_target_coords,
|
|
20
18
|
rotate_velocities,
|
|
21
19
|
get_vector_pairs,
|
|
20
|
+
_to_yaml,
|
|
21
|
+
_from_yaml,
|
|
22
22
|
)
|
|
23
23
|
from roms_tools.setup.regrid import LateralRegrid
|
|
24
24
|
import matplotlib.pyplot as plt
|
|
@@ -129,7 +129,7 @@ class TidalForcing:
|
|
|
129
129
|
|
|
130
130
|
ds = self._add_global_metadata(ds)
|
|
131
131
|
|
|
132
|
-
self._validate(ds)
|
|
132
|
+
self._validate(ds, variable_info)
|
|
133
133
|
|
|
134
134
|
# substitute NaNs over land by a fill value to avoid blow-up of ROMS
|
|
135
135
|
for var_name in ds.data_vars:
|
|
@@ -176,33 +176,37 @@ class TidalForcing:
|
|
|
176
176
|
|
|
177
177
|
# Define a dictionary for variable names and their associated information
|
|
178
178
|
variable_info = {
|
|
179
|
-
"ssh_Re": default_info,
|
|
180
|
-
"ssh_Im": default_info,
|
|
181
|
-
"pot_Re": default_info,
|
|
182
|
-
"pot_Im": default_info,
|
|
179
|
+
"ssh_Re": {**default_info, "validate": True},
|
|
180
|
+
"ssh_Im": {**default_info, "validate": False},
|
|
181
|
+
"pot_Re": {**default_info, "validate": False},
|
|
182
|
+
"pot_Im": {**default_info, "validate": False},
|
|
183
183
|
"u_Re": {
|
|
184
184
|
"location": "u",
|
|
185
185
|
"is_vector": True,
|
|
186
186
|
"vector_pair": "v_Re",
|
|
187
187
|
"is_3d": False,
|
|
188
|
+
"validate": True,
|
|
188
189
|
},
|
|
189
190
|
"v_Re": {
|
|
190
191
|
"location": "v",
|
|
191
192
|
"is_vector": True,
|
|
192
193
|
"vector_pair": "u_Re",
|
|
193
194
|
"is_3d": False,
|
|
195
|
+
"validate": True,
|
|
194
196
|
},
|
|
195
197
|
"u_Im": {
|
|
196
198
|
"location": "u",
|
|
197
199
|
"is_vector": True,
|
|
198
200
|
"vector_pair": "v_Im",
|
|
199
201
|
"is_3d": False,
|
|
202
|
+
"validate": False,
|
|
200
203
|
},
|
|
201
204
|
"v_Im": {
|
|
202
205
|
"location": "v",
|
|
203
206
|
"is_vector": True,
|
|
204
207
|
"vector_pair": "u_Im",
|
|
205
208
|
"is_3d": False,
|
|
209
|
+
"validate": False,
|
|
206
210
|
},
|
|
207
211
|
}
|
|
208
212
|
|
|
@@ -239,14 +243,17 @@ class TidalForcing:
|
|
|
239
243
|
|
|
240
244
|
return ds
|
|
241
245
|
|
|
242
|
-
def _validate(self, ds):
|
|
243
|
-
"""Validates the dataset by checking for NaN values at wet points
|
|
244
|
-
indicate missing raw data coverage over the target
|
|
246
|
+
def _validate(self, ds, variable_info):
|
|
247
|
+
"""Validates the dataset by checking for NaN values at wet points for specified
|
|
248
|
+
variables, which would indicate missing raw data coverage over the target
|
|
249
|
+
domain.
|
|
245
250
|
|
|
246
251
|
Parameters
|
|
247
252
|
----------
|
|
248
253
|
ds : xarray.Dataset
|
|
249
254
|
The dataset to validate, containing tidal variables and a mask for wet points.
|
|
255
|
+
variable_info : dict
|
|
256
|
+
A dictionary containing metadata about the variables, including whether to validate them.
|
|
250
257
|
|
|
251
258
|
Raises
|
|
252
259
|
------
|
|
@@ -260,7 +267,9 @@ class TidalForcing:
|
|
|
260
267
|
The method utilizes `self.grid.ds.mask_rho` to determine the wet points in the domain.
|
|
261
268
|
"""
|
|
262
269
|
for var_name in ds.data_vars:
|
|
263
|
-
|
|
270
|
+
# only validate variables based on "validate" flag if use_dask is false
|
|
271
|
+
if not self.use_dask or variable_info[var_name]["validate"]:
|
|
272
|
+
nan_check(ds[var_name].isel(ntides=0), self.grid.ds.mask_rho)
|
|
264
273
|
|
|
265
274
|
def plot(self, var_name, ntides=0) -> None:
|
|
266
275
|
"""Plot the specified tidal forcing variable for a given tidal constituent.
|
|
@@ -409,42 +418,8 @@ class TidalForcing:
|
|
|
409
418
|
filepath : Union[str, Path]
|
|
410
419
|
The path to the YAML file where the parameters will be saved.
|
|
411
420
|
"""
|
|
412
|
-
filepath = Path(filepath)
|
|
413
|
-
|
|
414
|
-
grid_data = asdict(self.grid)
|
|
415
|
-
grid_data.pop("ds", None) # Exclude non-serializable fields
|
|
416
|
-
grid_data.pop("straddle", None)
|
|
417
|
-
|
|
418
|
-
# Include the version of roms-tools
|
|
419
|
-
try:
|
|
420
|
-
roms_tools_version = importlib.metadata.version("roms-tools")
|
|
421
|
-
except importlib.metadata.PackageNotFoundError:
|
|
422
|
-
roms_tools_version = "unknown"
|
|
423
|
-
|
|
424
|
-
# Create header
|
|
425
|
-
header = f"---\nroms_tools_version: {roms_tools_version}\n---\n"
|
|
426
421
|
|
|
427
|
-
|
|
428
|
-
grid_yaml_data = {"Grid": grid_data}
|
|
429
|
-
|
|
430
|
-
# Extract tidal forcing data
|
|
431
|
-
tidal_forcing_data = {
|
|
432
|
-
"TidalForcing": {
|
|
433
|
-
"source": self.source,
|
|
434
|
-
"ntides": self.ntides,
|
|
435
|
-
"allan_factor": self.allan_factor,
|
|
436
|
-
"model_reference_date": self.model_reference_date.isoformat(),
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
|
|
440
|
-
# Combine both sections
|
|
441
|
-
yaml_data = {**grid_yaml_data, **tidal_forcing_data}
|
|
442
|
-
|
|
443
|
-
with filepath.open("w") as file:
|
|
444
|
-
# Write header
|
|
445
|
-
file.write(header)
|
|
446
|
-
# Write YAML data
|
|
447
|
-
yaml.dump(yaml_data, file, default_flow_style=False, sort_keys=False)
|
|
422
|
+
_to_yaml(self, filepath)
|
|
448
423
|
|
|
449
424
|
@classmethod
|
|
450
425
|
def from_yaml(
|
|
@@ -465,36 +440,9 @@ class TidalForcing:
|
|
|
465
440
|
An instance of the TidalForcing class.
|
|
466
441
|
"""
|
|
467
442
|
filepath = Path(filepath)
|
|
468
|
-
# Read the entire file content
|
|
469
|
-
with filepath.open("r") as file:
|
|
470
|
-
file_content = file.read()
|
|
471
|
-
|
|
472
|
-
# Split the content into YAML documents
|
|
473
|
-
documents = list(yaml.safe_load_all(file_content))
|
|
474
|
-
|
|
475
|
-
tidal_forcing_data = None
|
|
476
|
-
|
|
477
|
-
# Process the YAML documents
|
|
478
|
-
for doc in documents:
|
|
479
|
-
if doc is None:
|
|
480
|
-
continue
|
|
481
|
-
if "TidalForcing" in doc:
|
|
482
|
-
tidal_forcing_data = doc["TidalForcing"]
|
|
483
|
-
break
|
|
484
|
-
|
|
485
|
-
if tidal_forcing_data is None:
|
|
486
|
-
raise ValueError("No TidalForcing configuration found in the YAML file.")
|
|
487
|
-
|
|
488
|
-
# Convert the model_reference_date from string to datetime
|
|
489
|
-
tidal_forcing_params = tidal_forcing_data
|
|
490
|
-
tidal_forcing_params["model_reference_date"] = datetime.fromisoformat(
|
|
491
|
-
tidal_forcing_params["model_reference_date"]
|
|
492
|
-
)
|
|
493
443
|
|
|
494
|
-
# Create Grid instance from the YAML file
|
|
495
444
|
grid = Grid.from_yaml(filepath)
|
|
496
|
-
|
|
497
|
-
# Create and return an instance of TidalForcing
|
|
445
|
+
tidal_forcing_params = _from_yaml(cls, filepath)
|
|
498
446
|
return cls(grid=grid, **tidal_forcing_params, use_dask=use_dask)
|
|
499
447
|
|
|
500
448
|
def _correct_tides(self, data):
|