html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue https://github.com/pydata/xarray/issues/5510#issuecomment-866314326,https://api.github.com/repos/pydata/xarray/issues/5510,866314326,MDEyOklzc3VlQ29tbWVudDg2NjMxNDMyNg==,22566757,2021-06-22T20:33:44Z,2021-06-22T20:37:53Z,CONTRIBUTOR,"~`encoding` is where that information is stored between reading a dataset in from disk and saving it back out again.~ `_encode_coordinates` can take a default value from either of `encoding` or `attrs`, but a falsy value will be overwritten. Setting `.attrs[""coordinates""] = "" ""` should work. ```python >>> import numpy as np, xarray as xr >>> data = xr.DataArray(np.random.randn(2, 3), dims=(""x"", ""y""), coords={""x"": [10, 20]}) >>> ds = xr.Dataset({""foo"": data, ""bar"": (""x"", [1, 2]), ""fake"": 10}) >>> ds = ds.assign_coords({""reftime"":np.array(""2004-11-01T00:00:00"", dtype=np.datetime64)}) >>> ds = ds.assign({""test"": 1}) >>> ds.test.encoding[""coordinates""] = "" "" >>> ds.to_netcdf(""file.nc"") ``` ```bash $ ncdump -h file.nc netcdf file { dimensions: x = 2 ; y = 3 ; variables: int64 x(x) ; double foo(x, y) ; foo:_FillValue = NaN ; foo:coordinates = ""reftime"" ; int64 bar(x) ; bar:coordinates = ""reftime"" ; int64 fake ; fake:coordinates = ""reftime"" ; int64 reftime ; reftime:units = ""days since 2004-11-01 00:00:00"" ; reftime:calendar = ""proleptic_gregorian"" ; int64 test ; test:coordinates = "" "" ; } ``` As mentioned above, the XArray data model associates coordinates with dimensions rather than with variables, so any time you read the dataset back in again, the `test` variable will gain `reftime` as a coordinate, because the dimensions of `reftime` (`()`), are a subset of the dimensions of `test` (also `()`). Not producing a `coordinates` attribute for variables mentioned in another variable's `bounds` attribute (or a few other attributes, for that matter) would be entirely doable within the function linked above, and should be straightforward if you want to make a PR for that. Making `realization` and the bounds show up in `ds.coords` rather than `ds.data_vars` may also skip setting the `coordinates` attribute, though I'm less sure of that. It would, however, add `realization` to the `coordinates` attributes of every other `data_var` unless you overrode that, which may not be what you want.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,927336712