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/2517#issuecomment-436062784,https://api.github.com/repos/pydata/xarray/issues/2517,436062784,MDEyOklzc3VlQ29tbWVudDQzNjA2Mjc4NA==,6153603,2018-11-05T22:40:46Z,2018-11-05T22:40:46Z,CONTRIBUTOR,"I think #2298 is what I'm really waiting for and would solve the use cases I listed above. I'll have no trouble using the accessor methods in the time being.
Thanks, @shoyer","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,374460958
https://github.com/pydata/xarray/issues/2517#issuecomment-435532247,https://api.github.com/repos/pydata/xarray/issues/2517,435532247,MDEyOklzc3VlQ29tbWVudDQzNTUzMjI0Nw==,1217238,2018-11-02T22:54:19Z,2018-11-02T22:54:19Z,MEMBER,"I think the cleanest way to do this in the long term would be to combine some sort of ""lazy array"" object with caching, e.g., along the lines of what's described in https://github.com/pydata/xarray/issues/2298. I'm not sure what the best solution in the short-term is, though.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,374460958
https://github.com/pydata/xarray/issues/2517#issuecomment-434861750,https://api.github.com/repos/pydata/xarray/issues/2517,434861750,MDEyOklzc3VlQ29tbWVudDQzNDg2MTc1MA==,35968931,2018-10-31T21:56:11Z,2018-10-31T21:56:11Z,MEMBER,"That's true, but unless you start subclassing dataset then isn't that always going to be the case?
You have some quantity which you can only calculate with either a function or an accessor method on the dataset, wouldn't you need to alter the `__getitem__` method on the dataset object (or some subclass of it) in order to get the behaviour you're describing?","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,374460958
https://github.com/pydata/xarray/issues/2517#issuecomment-434857661,https://api.github.com/repos/pydata/xarray/issues/2517,434857661,MDEyOklzc3VlQ29tbWVudDQzNDg1NzY2MQ==,6153603,2018-10-31T21:40:46Z,2018-10-31T21:40:46Z,CONTRIBUTOR,"The only problem I see with this is that `actual.acc.altitude` must be called before `actual.altitude`, otherwise it will result in the data_var being used before it is created.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,374460958
https://github.com/pydata/xarray/issues/2517#issuecomment-434646452,https://api.github.com/repos/pydata/xarray/issues/2517,434646452,MDEyOklzc3VlQ29tbWVudDQzNDY0NjQ1Mg==,35968931,2018-10-31T11:05:18Z,2018-10-31T11:05:18Z,MEMBER,"If you want to return your newly-calculated altitude and also have it be a full data_var in your dataset, one way would be to just alter the original dataset in-place. Something like
```python
import xarray as xr
import pandas as pd
import xarray.testing as xrt
@xr.register_dataset_accessor('acc')
class Accessor(object):
def __init__(self, xarray_ds):
self._ds = xarray_ds
self._altitude = None
@property
def altitude(self):
"""""" An expensive calculation that results in data that not everyone needs. """"""
if self._altitude is None:
self._altitude = xr.DataArray([5, 10, 15, 20, 25],
coords=[('time', self._ds.time)])
# Here we add the calculated altitude to the dataset as a new data variable
self._ds['altitude'] = self._altitude
# Return just the altitude dataarray
return self._altitude
expected = xr.Dataset({'data': (['time'], [100, 30, 10, 3, 1]),
'altitude': (['time'], [5, 10, 15, 20, 25])},
coords={'time': pd.date_range('2014-09-06', periods=5, freq='1s')})
actual = xr.Dataset({'data': (['time'], [100, 30, 10, 3, 1])},
coords={'time': pd.date_range('2014-09-06', periods=5, freq='1s')})
# Return newly-calculated altitude, but also store it in the actual dataset for later
altitude = actual.acc.altitude
# Check that worked
xrt.assert_equal(actual, expected)
xrt.assert_equal(actual['altitude'], actual.acc.altitude)
```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,374460958