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/706#issuecomment-192190921,https://api.github.com/repos/pydata/xarray/issues/706,192190921,MDEyOklzc3VlQ29tbWVudDE5MjE5MDkyMQ==,10050469,2016-03-04T08:57:02Z,2016-03-04T08:57:02Z,MEMBER,"Thanks, this looks very good. Any timeline for the `xarray.register_accessor()` functionality? ;) ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,124915222 https://github.com/pydata/xarray/issues/706#issuecomment-191697006,https://api.github.com/repos/pydata/xarray/issues/706,191697006,MDEyOklzc3VlQ29tbWVudDE5MTY5NzAwNg==,10050469,2016-03-03T10:29:08Z,2016-03-03T10:29:08Z,MEMBER,"I find @shoyer 's suggestion about custom accessor attributes very interesting! the simplest of my use cases would be quite easy to implement: ``` python # MyLib class MyLibGis(object): def __init__(self, xray_obj): self.obj = xray_obj self.georef = read_georef(xray_obj) def subset(self, shapefile=None, roi=None): """"""Return a subset of DataSet (or DataArray)"""""" # compute regions of interests slicex, slicey = self.georef(stuff...) # return a sel of DataSet return self.obj.sel(x=slicex, y=slicey) xray.register_accessor('gis', MyLibGis) # user code import mylib import xray ds = xray.DataArray(...) ds = ds.gis.subset(shapefile='/path/to/shape') ``` This would already be quite cool! But would the mechanism allow to pass arguments to the `MyLibGis` class at construction time? This might also be wordy, maybe something like `ds = xray.DataArray(data, gis={'arg1':42})`? I guess that with these two mechanisms, I would be able to do _almost_ everything I want to do with my netcdf files. However, one other very important use case for me would be to add lazy ""diagnostic"" variables to a netcdf dataset. For example, if an atmospheric model output file contains the variables `P` and`PB`, then the dataset automatically proposes a new variable `TP`, which is the sum of `P` and`PB`. From the user perspective, this variable is no different than a variable on file. Of course, the data should be computed only on demand. It doesn't seem possible to do this without subclassing, but maybe I missed something? ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,124915222