Skip to content

Commit

Permalink
fix Coordinate -> IndexVariable
Browse files Browse the repository at this point in the history
  • Loading branch information
Benoit Bovy committed Sep 2, 2016
1 parent 936ec55 commit 1d6a96f
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 16 deletions.
4 changes: 2 additions & 2 deletions xarray/core/coordinates.py
Original file line number Diff line number Diff line change
Expand Up @@ -245,8 +245,8 @@ def _names(self):
@property
def variables(self):
level_coords = OrderedDict(
(k, self._data[v].variable.get_level_coord(k))
for k, v in self._data._level_coords.items())
(k, self._data[v].variable.get_level_variable(k))
for k, v in self._data._level_coords.items())
return Frozen(level_coords)


Expand Down
2 changes: 1 addition & 1 deletion xarray/core/dataarray.py
Original file line number Diff line number Diff line change
Expand Up @@ -429,7 +429,7 @@ def _level_coords(self):
level_coords = OrderedDict()
for cname, var in self._coords.items():
if var.ndim == 1:
level_names = var.to_coord().level_names
level_names = var.to_index_variable().level_names
if level_names is not None:
dim = var.dims[0]
level_coords.update({lname: dim for lname in level_names})
Expand Down
4 changes: 2 additions & 2 deletions xarray/core/dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ def _get_virtual_variable(variables, key, level_vars={}):

if ref_name in level_vars:
dim_var = variables[level_vars[ref_name]]
ref_var = dim_var.to_coord().get_level_coord(ref_name)
ref_var = dim_var.to_index_variable().get_level_variable(ref_name)
else:
ref_var = variables[ref_name]

Expand Down Expand Up @@ -447,7 +447,7 @@ def _level_coords(self):
for cname in self._coord_names:
var = self.variables[cname]
if var.ndim == 1:
level_names = var.to_coord().level_names
level_names = var.to_index_variable().level_names
if level_names is not None:
dim = var.dims[0]
level_coords.update({lname: dim for lname in level_names})
Expand Down
5 changes: 3 additions & 2 deletions xarray/core/formatting.py
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,8 @@ def _summarize_coord_multiindex(coord, col_width, marker):
def _summarize_coord_levels(coord, col_width, marker=u'-'):
relevant_coord = coord[:30]
return u'\n'.join(
[_summarize_var_or_coord(lname, relevant_coord.get_level_coord(lname),
[_summarize_var_or_coord(lname,
relevant_coord.get_level_variable(lname),
col_width, marker=marker)
for lname in coord.level_names])

Expand All @@ -237,7 +238,7 @@ def summarize_coord(name, var, col_width):
show_values = is_index or _not_remote(var)
marker = u'*' if is_index else u' '
if is_index:
coord = var.variable.to_coord()
coord = var.variable.to_index_variable()
if coord.level_names is not None:
return u'\n'.join(
[_summarize_coord_multiindex(coord, col_width, marker),
Expand Down
4 changes: 2 additions & 2 deletions xarray/core/indexing.py
Original file line number Diff line number Diff line change
Expand Up @@ -216,8 +216,8 @@ def convert_label_indexer(index, label, index_name='', method=None,


def get_dim_indexers(data_obj, indexers):
"""Given an xarray data object and label based indexers, return a mapping
of indexers with only dimension names as keys.
"""Given a xarray data object and label based indexers, return a mapping
of label indexers with only dimension names as keys.
It groups multiple level indexers given on a multi-index dimension
into a single, dictionary indexer for that dimension (Raise a ValueError
Expand Down
16 changes: 9 additions & 7 deletions xarray/core/variable.py
Original file line number Diff line number Diff line change
Expand Up @@ -1079,7 +1079,8 @@ class IndexVariable(Variable):
def __init__(self, dims, data, attrs=None, encoding=None,
name=None, fastpath=False):

super(IndexVariable, self).__init__(dim, data, attrs, encoding, fastpath)
super(IndexVariable, self).__init__(dims, data, attrs, encoding,
fastpath)
if self.ndim != 1:
raise ValueError('%s objects must be 1-dimensional' %
type(self).__name__)
Expand Down Expand Up @@ -1183,7 +1184,7 @@ def to_index(self):

@property
def level_names(self):
"""Return MultiIndex level names or None if Coordinate has no
"""Return MultiIndex level names or None if this IndexVariable has no
MultiIndex.
"""
index = self.to_index()
Expand All @@ -1194,12 +1195,13 @@ def level_names(self):

@level_names.setter
def level_names(self, value):
raise AttributeError('cannot modify level names of Coordinate in-place')
raise AttributeError('cannot modify level names of '
'IndexVariable in-place')

def get_level_coord(self, level):
"""Return a new Coordinate from a given MultiIndex level."""
def get_level_variable(self, level):
"""Return a new IndexVariable from a given MultiIndex level."""
if self.level_names is None:
raise ValueError("Coordinate %s has no MultiIndex" % self.name)
raise ValueError("IndexVariable %r has no MultiIndex" % self.name)
index = self.to_index()
return type(self)(self.dims, index.get_level_values(level), name=level)

Expand Down Expand Up @@ -1318,7 +1320,7 @@ def assert_unique_multiindex_level_names(variables):
level_names = defaultdict(list)
for var_name, var in variables.items():
if isinstance(var._data, PandasIndexAdapter):
idx_level_names = var.to_coord().level_names
idx_level_names = var.to_index_variable().level_names
if idx_level_names is not None:
for n in idx_level_names:
level_names[n].append('%r (%s)' % (n, var_name))
Expand Down

0 comments on commit 1d6a96f

Please sign in to comment.