ocnBgchem: 3D

ocnBgchem: 3D#

3D ocnBgchem data

Branding suffix of datasets

Datasets with the folloing branding suffix are shown in this page:
[time]-[vertical]-[horizontal]-[domain]

  • tavg-ol-hxy-sea

    • tavg: time average

    • ol: ocean levels

    • hxy: horizontal curvlinear grids

    • sea: ocean domain

# Parameters
cmorout = "/scratch/yanchun/cmorout"
source_id = "UKESM1-3-LL"
experiment_id = "piControl"
variant_label = "r1i1p1f1"
grid_label = "g143"
version = "v20260914"

List of datasets:

List of compound names of datasets that needs to be cmorized.
Those datasets which are not cmorized have no link. ``


Dataset validated:

Each validated dataset has some text information and some plots (2D and/or 1D)

ocnBgchem.calc.tavg-ol-hxy-sea.mon.glb
long name: Calcite Concentration (mol m-3)
vertical aggregation method for 3D->2D plot: mean
timeseries aggregation method for 3D->1D plot: mean
original_name: calclvl -> calc
_images/205194df2a584cea1889b3b9a076335a45ba40b7652d2d476bd8ad8a3f760b58.png
ocnBgchem.chl.tavg-ol-hxy-sea.mon.glb
long name: Mass Concentration of Total Phytoplankton Expressed as Chlorophyll in Sea Water (kg m-3)
vertical aggregation method for 3D->2D plot: mean
timeseries aggregation method for 3D->1D plot: mean
original_name: phyclvl -> chl
history: chl = phyclvl*122*12/60/1000
_images/52eaff42e3418129839b7a782c39b872951b16168b678229269f5366f4e4090b.png
ocnBgchem.detoc.tavg-ol-hxy-sea.mon.glb
long name: Detrital Organic Carbon Concentration (mol m-3)
vertical aggregation method for 3D->2D plot: mean
timeseries aggregation method for 3D->1D plot: mean
original_name: detoclvl -> detoc
history: detoc = detoclvl*122
_images/ee8eb7ab0b7aac2625843ff298416a63441929bc0c771056c7a9c0ef2ad0ce1a.png
ocnBgchem.dfe.tavg-ol-hxy-sea.mon.glb
long name: Dissolved Iron Concentration (mol m-3)
vertical aggregation method for 3D->2D plot: mean
timeseries aggregation method for 3D->1D plot: mean
original_name: dfelvl -> dfe
_images/9aaa787d0807756671f5a4ca723b523e5a91b18e40c682894ba0cf0fcd781070.png
ocnBgchem.dissic.tavg-ol-hxy-sea.mon.glb
long name: Dissolved Inorganic Carbon Concentration (mol m-3)
vertical aggregation method for 3D->2D plot: mean
timeseries aggregation method for 3D->1D plot: mean
original_name: dissiclvl -> dissic
_images/08c73b75a1c3efa155e5fa1e64697a2adbfef7f77f1e6584c70df587af31ec55.png
ocnBgchem.dissoc.tavg-ol-hxy-sea.mon.glb
long name: Dissolved Organic Carbon Concentration (mol m-3)
vertical aggregation method for 3D->2D plot: mean
timeseries aggregation method for 3D->1D plot: mean
original_name: dissoclvl -> dissoc
history: dissco = dissoclvl*122
_images/e627f4b41d7b6eb41a6168b7d6b84a04ff4a511593c057aa3244c3b58eb23270.png
ocnBgchem.nh4.tavg-ol-hxy-sea.mon.glb
long name: Dissolved Ammonium Concentration (mol m-3)
vertical aggregation method for 3D->2D plot: mean
timeseries aggregation method for 3D->1D plot: mean
original_name: nh4lvl -> nh4
_images/b149a1d46a8d2bf501039c10fc92fe7d9aa1a8e51b7b9a729f998de168390c16.png
ocnBgchem.no3.tavg-ol-hxy-sea.mon.glb
long name: Dissolved Nitrate Concentration (mol m-3)
vertical aggregation method for 3D->2D plot: mean
timeseries aggregation method for 3D->1D plot: mean
original_name: no3lvl -> no3
---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
Cell In[6], line 88
     84 
     85     # plot 2D map
     86     ax1 = fig.add_subplot(gs[0], projection=proj)
     87     # rescale
---> 88     vmin, vmax = data2d.quantile([0.01, 0.99], dim=None).values
     89     if mth_cmap == 'cmocean.cm.balance':
     90         vmax = max(abs(vmin),abs(vmax))
     91         vmin = -vmax

File /diagnostics/cmip7validate-env/lib/python3.13/site-packages/xarray/core/dataarray.py:5334, in DataArray.quantile(self, q, dim, method, keep_attrs, skipna, interpolation)
   5225 def quantile(
   5226     self,
   5227     q: ArrayLike,
   (...)   5233     interpolation: QuantileMethods | None = None,
   5234 ) -> Self:
   5235     """Compute the qth quantile of the data along the specified dimension.
   5236 
   5237     Returns the qth quantiles(s) of the array elements.
   (...)   5331        The American Statistician, 50(4), pp. 361-365, 1996
   5332     """
-> 5334     ds = self._to_temp_dataset().quantile(
   5335         q,
   5336         dim=dim,
   5337         keep_attrs=keep_attrs,
   5338         method=method,
   5339         skipna=skipna,
   5340         interpolation=interpolation,
   5341     )
   5342     return self._from_temp_dataset(ds)

File /diagnostics/cmip7validate-env/lib/python3.13/site-packages/xarray/core/dataset.py:8142, in Dataset.quantile(self, q, dim, method, numeric_only, keep_attrs, skipna, interpolation)
   8138                         not numeric_only
   8139                         or np.issubdtype(var.dtype, np.number)
   8140                         or var.dtype == np.bool_
   8141                     ):
-> 8142                         variables[name] = var.quantile(
   8143                             q,
   8144                             dim=reduce_dims,
   8145                             method=method,

File /diagnostics/cmip7validate-env/lib/python3.13/site-packages/xarray/core/variable.py:1930, in Variable.quantile(self, q, dim, method, keep_attrs, skipna, interpolation)
   1926 axis = tuple(range(-1, -1 * len(dim) - 1, -1))
   1928 kwargs = {"q": q, "axis": axis, "method": method}
-> 1930 result = apply_ufunc(
   1931     _wrapper,
   1932     self,
   1933     input_core_dims=[dim],
   1934     exclude_dims=set(dim),
   1935     output_core_dims=[["quantile"]],
   1936     output_dtypes=[np.float64],
   1937     dask_gufunc_kwargs=dict(output_sizes={"quantile": len(q)}),
   1938     dask="allowed" if module_available("dask", "2024.11.0") else "parallelized",
   1939     kwargs=kwargs,
   1940 )
   1942 # for backward compatibility
   1943 result = result.transpose("quantile", ...)

File /diagnostics/cmip7validate-env/lib/python3.13/site-packages/xarray/computation/apply_ufunc.py:1277, in apply_ufunc(func, input_core_dims, output_core_dims, exclude_dims, vectorize, join, dataset_join, dataset_fill_value, keep_attrs, kwargs, dask, output_dtypes, output_sizes, meta, dask_gufunc_kwargs, on_missing_core_dim, *args)
   1275 # feed Variables directly through apply_variable_ufunc
   1276 elif any(isinstance(a, Variable) for a in args):
-> 1277     return variables_vfunc(*args)
   1278 else:
   1279     # feed anything else through apply_array_ufunc
   1280     return apply_array_ufunc(func, *args, dask=dask)

File /diagnostics/cmip7validate-env/lib/python3.13/site-packages/xarray/computation/apply_ufunc.py:818, in apply_variable_ufunc(func, signature, exclude_dims, dask, output_dtypes, vectorize, keep_attrs, dask_gufunc_kwargs, *args)
    813     if vectorize:
    814         func = _vectorize(
    815             func, signature, output_dtypes=output_dtypes, exclude_dims=exclude_dims
    816         )
--> 818 result_data = func(*input_data)
    820 if signature.num_outputs == 1:
    821     result_data = (result_data,)

File /diagnostics/cmip7validate-env/lib/python3.13/site-packages/xarray/core/variable.py:1923, in Variable.quantile.<locals>._wrapper(npa, **kwargs)
   1921 def _wrapper(npa, **kwargs):
   1922     # move quantile axis to end. required for apply_ufunc
-> 1923     return xp.moveaxis(_quantile_func(npa, **kwargs), 0, -1)

File /diagnostics/cmip7validate-env/lib/python3.13/site-packages/xarray/core/nputils.py:242, in _create_method.<locals>.f(values, axis, **kwargs)
    240         result = np.float64(result)
    241 else:
--> 242     result = getattr(npmodule, name)(values, axis=axis, **kwargs)
    244 return result

File /diagnostics/cmip7validate-env/lib/python3.13/site-packages/numpy/lib/_nanfunctions_impl.py:1573, in nanquantile(a, q, axis, out, overwrite_input, method, keepdims, weights)
   1570     if np.any(weights < 0):
   1571         raise ValueError("Weights must be non-negative.")
-> 1573 return _nanquantile_unchecked(
   1574     a, q, axis, out, overwrite_input, method, keepdims, weights, weak_q)

File /diagnostics/cmip7validate-env/lib/python3.13/site-packages/numpy/lib/_nanfunctions_impl.py:1593, in _nanquantile_unchecked(a, q, axis, out, overwrite_input, method, keepdims, weights, weak_q)
   1591 if a.size == 0:
   1592     return np.nanmean(a, axis, out=out, keepdims=keepdims)
-> 1593 return fnb._ureduce(a,
   1594                     func=_nanquantile_ureduce_func,
   1595                     q=q,
   1596                     weights=weights,
   1597                     keepdims=keepdims,
   1598                     axis=axis,
   1599                     out=out,
   1600                     overwrite_input=overwrite_input,
   1601                     method=method,
   1602                     weak_q=weak_q)

File /diagnostics/cmip7validate-env/lib/python3.13/site-packages/numpy/lib/_function_base_impl.py:3880, in _ureduce(a, func, keepdims, **kwargs)
   3877     index_out = (0, ) * nd
   3878     kwargs['out'] = out[(Ellipsis, ) + index_out]
-> 3880 r = func(a, **kwargs)
   3882 if out is not None:
   3883     return out

File /diagnostics/cmip7validate-env/lib/python3.13/site-packages/numpy/lib/_nanfunctions_impl.py:1623, in _nanquantile_ureduce_func(a, q, weights, axis, out, overwrite_input, method, weak_q)
   1621     part = a.ravel()
   1622     wgt = None if weights is None else weights.ravel()
-> 1623     result = _nanquantile_1d(part, q, overwrite_input, method,
   1624                              weights=wgt, weak_q=weak_q)
   1625 # Note that this code could try to fill in `out` right away
   1626 elif weights is None:

File /diagnostics/cmip7validate-env/lib/python3.13/site-packages/numpy/lib/_nanfunctions_impl.py:1677, in _nanquantile_1d(arr1d, q, overwrite_input, method, weights, weak_q)
   1673 if arr1d.size == 0:
   1674     # convert to scalar
   1675     return np.full(q.shape, np.nan, dtype=arr1d.dtype)[()]
-> 1677 return fnb._quantile_unchecked(
   1678     arr1d,
   1679     q,
   1680     overwrite_input=overwrite_input,
   1681     method=method,
   1682     weights=weights,
   1683     weak_q=weak_q,
   1684 )

File /diagnostics/cmip7validate-env/lib/python3.13/site-packages/numpy/lib/_function_base_impl.py:4510, in _quantile_unchecked(a, q, axis, out, overwrite_input, method, keepdims, weights, weak_q)
   4500 def _quantile_unchecked(a,
   4501                         q,
   4502                         axis=None,
   (...)   4507                         weights=None,
   4508                         weak_q=False):
   4509     """Assumes that q is in [0, 1], and is an ndarray"""
-> 4510     return _ureduce(a,
   4511                     func=_quantile_ureduce_func,
   4512                     q=q,
   4513                     weights=weights,
   4514                     keepdims=keepdims,
   4515                     axis=axis,
   4516                     out=out,
   4517                     overwrite_input=overwrite_input,
   4518                     method=method,
   4519                     weak_q=weak_q)

File /diagnostics/cmip7validate-env/lib/python3.13/site-packages/numpy/lib/_function_base_impl.py:3880, in _ureduce(a, func, keepdims, **kwargs)
   3877     index_out = (0, ) * nd
   3878     kwargs['out'] = out[(Ellipsis, ) + index_out]
-> 3880 r = func(a, **kwargs)
   3882 if out is not None:
   3883     return out

File /diagnostics/cmip7validate-env/lib/python3.13/site-packages/numpy/lib/_function_base_impl.py:4669, in _quantile_ureduce_func(a, q, weights, axis, out, overwrite_input, method, weak_q)
   4667     arr = a.copy()
   4668     wgt = weights
-> 4669 result = _quantile(arr,
   4670                    quantiles=q,
   4671                    axis=axis,
   4672                    method=method,
   4673                    out=out,
   4674                    weights=wgt,
   4675                    weak_q=weak_q)
   4676 return result

File /diagnostics/cmip7validate-env/lib/python3.13/site-packages/numpy/lib/_function_base_impl.py:4786, in _quantile(arr, quantiles, axis, method, out, weights, weak_q)
   4782 previous_indexes, next_indexes = _get_indexes(arr,
   4783                                               virtual_indexes,
   4784                                               values_count)
   4785 # --- Sorting
-> 4786 arr.partition(
   4787     np.unique(np.concatenate(([0, -1],
   4788                               previous_indexes.ravel(),
   4789                               next_indexes.ravel(),
   4790                               ))),
   4791     axis=0)
   4792 if supports_nans:
   4793     slices_having_nans = np.isnan(arr[-1, ...])

KeyboardInterrupt: 
_images/f32f0866e92496c76565f76b3ec10383e6c4be1476e97a19f86b7e51c49c9377.png