xarray loading gives an error?
I'm trying to generate some data to play a bit more with the visualistion.
I thought this would be easy by numpy => xarray => datacube
But I can't figure out how to use load_xarray():
import numpy as np
import xarray
x = np.linspace(-1,1,100)
X,Y = np.meshgrid(x,x)
Z = X*Y*np.exp(-X**2-Y**2)
Z = Z[:,:,np.newaxis]
d = xarray.DataArray(Z, name='Z')
db2 = Dashboard()
db2.load_xarray(d)
gives an error:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-72-48fcaf05f6b7> in <module>
11 db2 = Dashboard()
12
---> 13 db2.load_xarray(d)
~/anaconda3/envs/myenv/lib/python3.7/site-packages/datacube/Data.py in load_xarray(self, data)
78 "Filetype was not recognized as an xarray.Dataset or xarray.DataArray"
79 )
---> 80 self.data_set = data
81
82 # def get_slice(self, data_set, column, cut_axis, cut_index):
~/anaconda3/envs/myenv/lib/python3.7/site-packages/traitlets/traitlets.py in __set__(self, obj, value)
583 raise TraitError('The "%s" trait is read-only.' % self.name)
584 else:
--> 585 self.set(obj, value)
586
587 def _validate(self, obj, value):
~/anaconda3/envs/myenv/lib/python3.7/site-packages/traittypes/traittypes.py in set(self, obj, value)
232 (old_value is Undefined and new_value is not Undefined) or
233 not old_value.equals(new_value)):
--> 234 obj._notify_trait(self.name, old_value, new_value)
235
236 def __init__(self, default_value=Empty, allow_none=False, klass=None, **kwargs):
~/anaconda3/envs/myenv/lib/python3.7/site-packages/traitlets/traitlets.py in _notify_trait(self, name, old_value, new_value)
1137 new=new_value,
1138 owner=self,
-> 1139 type='change',
1140 ))
1141
~/anaconda3/envs/myenv/lib/python3.7/site-packages/traitlets/traitlets.py in notify_change(self, change)
1174 c = getattr(self, c.name)
1175
-> 1176 c(change)
1177
1178 def _add_notifiers(self, handler, name, type):
~/anaconda3/envs/myenv/lib/python3.7/site-packages/datacube/Data.py in update_dataset_traits(self, change)
191 """
192 self.columnList = list(self.data_set.data_vars.keys())
--> 193 self.column = self.columnList[0]
194 self.axisList = list(self.data_set.dims)
195 self.indexLength = self.data_set.sizes[self.axisList[self.cut_axis]]
~/anaconda3/envs/myenv/lib/python3.7/site-packages/traitlets/traitlets.py in __set__(self, obj, value)
583 raise TraitError('The "%s" trait is read-only.' % self.name)
584 else:
--> 585 self.set(obj, value)
586
587 def _validate(self, obj, value):
~/anaconda3/envs/myenv/lib/python3.7/site-packages/traitlets/traitlets.py in set(self, obj, value)
572 # we explicitly compare silent to True just in case the equality
573 # comparison above returns something other than True/False
--> 574 obj._notify_trait(self.name, old_value, new_value)
575
576 def __set__(self, obj, value):
~/anaconda3/envs/myenv/lib/python3.7/site-packages/traitlets/traitlets.py in _notify_trait(self, name, old_value, new_value)
1137 new=new_value,
1138 owner=self,
-> 1139 type='change',
1140 ))
1141
~/anaconda3/envs/myenv/lib/python3.7/site-packages/traitlets/traitlets.py in notify_change(self, change)
1174 c = getattr(self, c.name)
1175
-> 1176 c(change)
1177
1178 def _add_notifiers(self, handler, name, type):
~/anaconda3/envs/myenv/lib/python3.7/site-packages/datacube/Data.py in update_data_slice(self, change)
199 @observe("column", "cut_axis", "cut_index")
200 def update_data_slice(self, change):
--> 201 self.data_slice = self.get_slice()
202
203 @observe("process_list")
~/anaconda3/envs/myenv/lib/python3.7/site-packages/traitlets/traitlets.py in __set__(self, obj, value)
583 raise TraitError('The "%s" trait is read-only.' % self.name)
584 else:
--> 585 self.set(obj, value)
586
587 def _validate(self, obj, value):
~/anaconda3/envs/myenv/lib/python3.7/site-packages/traittypes/traittypes.py in set(self, obj, value)
232 (old_value is Undefined and new_value is not Undefined) or
233 not old_value.equals(new_value)):
--> 234 obj._notify_trait(self.name, old_value, new_value)
235
236 def __init__(self, default_value=Empty, allow_none=False, klass=None, **kwargs):
~/anaconda3/envs/myenv/lib/python3.7/site-packages/traitlets/traitlets.py in _notify_trait(self, name, old_value, new_value)
1137 new=new_value,
1138 owner=self,
-> 1139 type='change',
1140 ))
1141
~/anaconda3/envs/myenv/lib/python3.7/site-packages/traitlets/traitlets.py in notify_change(self, change)
1174 c = getattr(self, c.name)
1175
-> 1176 c(change)
1177
1178 def _add_notifiers(self, handler, name, type):
~/anaconda3/envs/myenv/lib/python3.7/site-packages/datacube/Plots.py in update_image(self, change)
147 """
148 if hasattr(self, "img"):
--> 149 self.img.set_data(self.data_slice)
150
151 @observe("cmap", "gamma", "cmap_min", "cmap_max", "vmin", "vmax")
AttributeError: 'list' object has no attribute 'set_data'