Yiming’s POP variance budget#
Compress this dataset
import xarray as xr
file = "/glade/scratch/yguo20/T_variance_budget_3way_balance_JRA55run_Yr42_Yr61_mean.nc"
ds = xr.open_dataset(file, chunks={"lat": 400, "lon": 800})
ds
<xarray.Dataset>
Dimensions: (lat: 2400, lon: 3600, depth: 62)
Dimensions without coordinates: lat, lon, depth
Data variables:
TLAT (lat, lon) float64 dask.array<chunksize=(400, 800), meta=np.ndarray>
TLONG (lat, lon) float64 dask.array<chunksize=(400, 800), meta=np.ndarray>
z_t (depth) float64 dask.array<chunksize=(62,), meta=np.ndarray>
BC (depth, lat, lon) float64 dask.array<chunksize=(62, 400, 800), meta=np.ndarray>
PKC (depth, lat, lon) float64 dask.array<chunksize=(62, 400, 800), meta=np.ndarray>
VMIX (depth, lat, lon) float64 dask.array<chunksize=(62, 400, 800), meta=np.ndarray>
HDIFF (depth, lat, lon) float64 dask.array<chunksize=(62, 400, 800), meta=np.ndarray>xarray.Dataset
- lat: 2400
- lon: 3600
- depth: 62
- TLAT(lat, lon)float64dask.array<chunksize=(400, 800), meta=np.ndarray>
Array Chunk Bytes 65.92 MiB 2.44 MiB Shape (2400, 3600) (400, 800) Count 31 Tasks 30 Chunks Type float64 numpy.ndarray - TLONG(lat, lon)float64dask.array<chunksize=(400, 800), meta=np.ndarray>
Array Chunk Bytes 65.92 MiB 2.44 MiB Shape (2400, 3600) (400, 800) Count 31 Tasks 30 Chunks Type float64 numpy.ndarray - z_t(depth)float64dask.array<chunksize=(62,), meta=np.ndarray>
Array Chunk Bytes 496 B 496 B Shape (62,) (62,) Count 2 Tasks 1 Chunks Type float64 numpy.ndarray - BC(depth, lat, lon)float64dask.array<chunksize=(62, 400, 800), meta=np.ndarray>
- standard_name :
- Baroclinic conversion rates (horizontal eddy heat flux acting on mean lateral temperature gradient)
- units :
- degC**2 per second
Array Chunk Bytes 3.99 GiB 151.37 MiB Shape (62, 2400, 3600) (62, 400, 800) Count 31 Tasks 30 Chunks Type float64 numpy.ndarray - PKC(depth, lat, lon)float64dask.array<chunksize=(62, 400, 800), meta=np.ndarray>
- standard_name :
- Potential-kinetic conversion rates (vertical eddy heat flux acting on mean vertical temperature gradient)
- units :
- degC**2 per second
Array Chunk Bytes 3.99 GiB 151.37 MiB Shape (62, 2400, 3600) (62, 400, 800) Count 31 Tasks 30 Chunks Type float64 numpy.ndarray - VMIX(depth, lat, lon)float64dask.array<chunksize=(62, 400, 800), meta=np.ndarray>
- standard_name :
- Vertical mixing (including dissipation associated with diffusive fluxes, countergradient fluxes from KPP and solar penetration term)
- units :
- degC**2 per second
Array Chunk Bytes 3.99 GiB 151.37 MiB Shape (62, 2400, 3600) (62, 400, 800) Count 31 Tasks 30 Chunks Type float64 numpy.ndarray - HDIFF(depth, lat, lon)float64dask.array<chunksize=(62, 400, 800), meta=np.ndarray>
- standard_name :
- Horizontal dissipation associated with biharmonic term
- units :
- degC**2 per second
Array Chunk Bytes 3.99 GiB 151.37 MiB Shape (62, 2400, 3600) (62, 400, 800) Count 31 Tasks 30 Chunks Type float64 numpy.ndarray
newds = ds.rename({"z_t": "depth"}).set_coords(["depth", "TLAT", "TLONG"])
newds.TLAT.attrs = {"standard_name": "latitude", "units": "degrees_north"}
newds.TLONG.attrs = {"standard_name": "longitude", "units": "degrees_east"}
newds["depth"] = newds.depth / 100
newds.depth.attrs = {"standard_name": "depth", "units": "m", "positive": "down"}
newds
<xarray.Dataset>
Dimensions: (lat: 2400, lon: 3600, depth: 62)
Coordinates:
TLAT (lat, lon) float64 dask.array<chunksize=(400, 800), meta=np.ndarray>
TLONG (lat, lon) float64 dask.array<chunksize=(400, 800), meta=np.ndarray>
* depth (depth) float64 0.05 0.15 0.25 0.35 ... 51.25 53.75 56.25 58.75
Dimensions without coordinates: lat, lon
Data variables:
BC (depth, lat, lon) float64 dask.array<chunksize=(62, 400, 800), meta=np.ndarray>
PKC (depth, lat, lon) float64 dask.array<chunksize=(62, 400, 800), meta=np.ndarray>
VMIX (depth, lat, lon) float64 dask.array<chunksize=(62, 400, 800), meta=np.ndarray>
HDIFF (depth, lat, lon) float64 dask.array<chunksize=(62, 400, 800), meta=np.ndarray>xarray.Dataset
- lat: 2400
- lon: 3600
- depth: 62
- TLAT(lat, lon)float64dask.array<chunksize=(400, 800), meta=np.ndarray>
- standard_name :
- latitude
- units :
- degrees_north
Array Chunk Bytes 65.92 MiB 2.44 MiB Shape (2400, 3600) (400, 800) Count 31 Tasks 30 Chunks Type float64 numpy.ndarray - TLONG(lat, lon)float64dask.array<chunksize=(400, 800), meta=np.ndarray>
- standard_name :
- longitude
- units :
- degrees_east
Array Chunk Bytes 65.92 MiB 2.44 MiB Shape (2400, 3600) (400, 800) Count 31 Tasks 30 Chunks Type float64 numpy.ndarray - depth(depth)float640.05 0.15 0.25 ... 56.25 58.75
- standard_name :
- depth
- units :
- m
- positive :
- down
array([5.000000e-02, 1.500000e-01, 2.500000e-01, 3.500000e-01, 4.500000e-01, 5.500000e-01, 6.500000e-01, 7.500000e-01, 8.500000e-01, 9.500000e-01, 1.050000e+00, 1.150000e+00, 1.250000e+00, 1.350000e+00, 1.450000e+00, 1.550000e+00, 1.650984e+00, 1.754790e+00, 1.862913e+00, 1.976603e+00, 2.097114e+00, 2.225783e+00, 2.364088e+00, 2.513701e+00, 2.676542e+00, 2.854836e+00, 3.051192e+00, 3.268680e+00, 3.510935e+00, 3.782276e+00, 4.087846e+00, 4.433777e+00, 4.827367e+00, 5.277280e+00, 5.793729e+00, 6.388626e+00, 7.075633e+00, 7.870025e+00, 8.788252e+00, 9.847058e+00, 1.106204e+01, 1.244567e+01, 1.400497e+01, 1.573946e+01, 1.764003e+01, 1.968944e+01, 2.186457e+01, 2.413971e+01, 2.649001e+01, 2.889385e+01, 3.133405e+01, 3.379793e+01, 3.627670e+01, 3.876452e+01, 4.125768e+01, 4.375393e+01, 4.625190e+01, 4.875083e+01, 5.125028e+01, 5.375000e+01, 5.624991e+01, 5.874991e+01])
- BC(depth, lat, lon)float64dask.array<chunksize=(62, 400, 800), meta=np.ndarray>
- standard_name :
- Baroclinic conversion rates (horizontal eddy heat flux acting on mean lateral temperature gradient)
- units :
- degC**2 per second
Array Chunk Bytes 3.99 GiB 151.37 MiB Shape (62, 2400, 3600) (62, 400, 800) Count 31 Tasks 30 Chunks Type float64 numpy.ndarray - PKC(depth, lat, lon)float64dask.array<chunksize=(62, 400, 800), meta=np.ndarray>
- standard_name :
- Potential-kinetic conversion rates (vertical eddy heat flux acting on mean vertical temperature gradient)
- units :
- degC**2 per second
Array Chunk Bytes 3.99 GiB 151.37 MiB Shape (62, 2400, 3600) (62, 400, 800) Count 31 Tasks 30 Chunks Type float64 numpy.ndarray - VMIX(depth, lat, lon)float64dask.array<chunksize=(62, 400, 800), meta=np.ndarray>
- standard_name :
- Vertical mixing (including dissipation associated with diffusive fluxes, countergradient fluxes from KPP and solar penetration term)
- units :
- degC**2 per second
Array Chunk Bytes 3.99 GiB 151.37 MiB Shape (62, 2400, 3600) (62, 400, 800) Count 31 Tasks 30 Chunks Type float64 numpy.ndarray - HDIFF(depth, lat, lon)float64dask.array<chunksize=(62, 400, 800), meta=np.ndarray>
- standard_name :
- Horizontal dissipation associated with biharmonic term
- units :
- degC**2 per second
Array Chunk Bytes 3.99 GiB 151.37 MiB Shape (62, 2400, 3600) (62, 400, 800) Count 31 Tasks 30 Chunks Type float64 numpy.ndarray
import distributed
client = distributed.Client(n_workers=4, threads_per_worker=1)
client.dashboard_url
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/glade/scratch/dcherian/tmp/ipykernel_263393/1920325209.py in <module>
----> 1 client.dashboard_url
AttributeError: 'Client' object has no attribute 'dashboard_url'
client
Client
Client-59c6ba4b-4d41-11ec-84e1-3cecef1ac748
| Connection method: Cluster object | Cluster type: LocalCluster |
| Dashboard: https://https://jupyterhub.hpc.ucar.edu/stable/user/dcherian/proxy/{port}/status |
Cluster Info
LocalCluster
66477ab0
| Status: running | Using processes: True |
| Dashboard: https://https://jupyterhub.hpc.ucar.edu/stable/user/dcherian/proxy/{port}/status | Workers: 4 |
| Total threads: 4 | Total memory: 16.00 GiB |
Scheduler Info
Scheduler
Scheduler-81838a93-c11f-4c31-90ae-8184235d8691
| Comm: tcp://127.0.0.1:44679 | Workers: 4 |
| Dashboard: https://https://jupyterhub.hpc.ucar.edu/stable/user/dcherian/proxy/{port}/status | Total threads: 4 |
| Started: Just now | Total memory: 16.00 GiB |
Workers
Worker: 0
| Comm: tcp://127.0.0.1:33681 | Total threads: 1 |
| Dashboard: https://https://jupyterhub.hpc.ucar.edu/stable/user/dcherian/proxy/{port}/status | Memory: 4.00 GiB |
| Nanny: tcp://127.0.0.1:37723 | |
| Local directory: /glade/scratch/dcherian/dask-tmpl/dask-worker-space/worker-_n5ln6y_ | |
Worker: 1
| Comm: tcp://127.0.0.1:33879 | Total threads: 1 |
| Dashboard: https://https://jupyterhub.hpc.ucar.edu/stable/user/dcherian/proxy/{port}/status | Memory: 4.00 GiB |
| Nanny: tcp://127.0.0.1:37444 | |
| Local directory: /glade/scratch/dcherian/dask-tmpl/dask-worker-space/worker-a76g08hr | |
Worker: 2
| Comm: tcp://127.0.0.1:42608 | Total threads: 1 |
| Dashboard: https://https://jupyterhub.hpc.ucar.edu/stable/user/dcherian/proxy/{port}/status | Memory: 4.00 GiB |
| Nanny: tcp://127.0.0.1:43424 | |
| Local directory: /glade/scratch/dcherian/dask-tmpl/dask-worker-space/worker-ua00slrn | |
Worker: 3
| Comm: tcp://127.0.0.1:37573 | Total threads: 1 |
| Dashboard: https://https://jupyterhub.hpc.ucar.edu/stable/user/dcherian/proxy/{port}/status | Memory: 4.00 GiB |
| Nanny: tcp://127.0.0.1:36041 | |
| Local directory: /glade/scratch/dcherian/dask-tmpl/dask-worker-space/worker-p3zjvi67 | |
import zarr
compressor = zarr.Blosc(cname="zstd", clevel=3, shuffle=2)
encoding = {"compressor": compressor}
newds.to_zarr(
"pop-variance-budget.zarr", mode="w", encoding={var: encoding for var in newds}
)
<xarray.backends.zarr.ZarrStore at 0x2b7b0307b200>