home / github / issue_comments

Menu
  • Search all tables
  • GraphQL API

issue_comments: 202476963

This data as json

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/pull/806#issuecomment-202476963 https://api.github.com/repos/pydata/xarray/issues/806 202476963 MDEyOklzc3VlQ29tbWVudDIwMjQ3Njk2Mw== 10050469 2016-03-28T16:40:05Z 2016-03-28T16:40:05Z MEMBER

Yes, this looks very good, thanks!

@khaeru : I had the same question and just tested it:

``` python import xarray as xr import numpy as np

@xr.register_dataset_accessor('geo') class GeoAccessor(object): def init(self, xarray_obj): print('In constructor') self._obj = xarray_obj

@property
def center(self):
    # return the geographic center point of this dataset
    lon = self._obj.latitude
    lat = self._obj.longitude
    return (float(lon.mean()), float(lat.mean()))

def plot(self):
    print('plot data on a map')  # e.g., using Cartopy

Nothing is printed

ds = xr.Dataset({'longitude': np.linspace(0, 10), 'latitude': np.linspace(0, 20)})

out: In constructor

out = ds.geo.center

out: In constructor

plot data on a map

ds.geo.plot() ```

So the constructor is called only if the property is accessed, which is good. the drawback is that a new object is instantiated at each access.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  143877458
Powered by Datasette · Queries took 66.487ms · About: xarray-datasette