Skip to content

Commit 282d58b

Browse files
committed
Rename xray.Coordinate to xray.Index
Fixes #142.
1 parent 83ac662 commit 282d58b

File tree

13 files changed

+247
-218
lines changed

13 files changed

+247
-218
lines changed

doc/api.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ Attributes and underlying data
2020
.. autosummary::
2121
:toctree: generated/
2222

23-
Dataset.coordinates
24-
Dataset.noncoordinates
23+
Dataset.indexes
24+
Dataset.nonindexes
2525
Dataset.dimensions
2626
Dataset.attrs
2727

@@ -143,7 +143,7 @@ Attributes and underlying data
143143

144144
DataArray.values
145145
DataArray.as_index
146-
DataArray.coordinates
146+
DataArray.indexes
147147
DataArray.name
148148
DataArray.dataset
149149
DataArray.attrs

test/__init__.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -109,24 +109,24 @@ def assertDatasetAllClose(self, d1, d2, rtol=1e-05, atol=1e-08):
109109
v2 = d2.variables[k]
110110
self.assertVariableAllClose(v1, v2, rtol=rtol, atol=atol)
111111

112-
def assertCoordsEqual(self, d1, d2):
113-
self.assertEqual(sorted(d1.coordinates), sorted(d2.coordinates))
114-
for k in d1.coordinates:
115-
v1 = d1.coordinates[k]
116-
v2 = d2.coordinates[k]
112+
def assertIndexesEqual(self, d1, d2):
113+
self.assertEqual(sorted(d1.indexes), sorted(d2.indexes))
114+
for k in d1.indexes:
115+
v1 = d1.indexes[k]
116+
v2 = d2.indexes[k]
117117
self.assertVariableEqual(v1, v2)
118118

119119
def assertDataArrayEqual(self, ar1, ar2):
120120
self.assertVariableEqual(ar1, ar2)
121-
self.assertCoordsEqual(ar1, ar2)
121+
self.assertIndexesEqual(ar1, ar2)
122122

123123
def assertDataArrayIdentical(self, ar1, ar2):
124124
self.assertEqual(ar1.name, ar2.name)
125125
self.assertDatasetIdentical(ar1.dataset, ar2.dataset)
126126

127127
def assertDataArrayAllClose(self, ar1, ar2, rtol=1e-05, atol=1e-08):
128128
self.assertVariableAllClose(ar1, ar2, rtol=rtol, atol=atol)
129-
self.assertCoordsEqual(ar1, ar2)
129+
self.assertIndexesEqual(ar1, ar2)
130130

131131

132132
class ReturnItem(object):

test/test_data_array.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def test_repr(self):
3838
<xray.DataArray 'my_variable' (time: 2, x: 3)>
3939
array([[1, 2, 3],
4040
[4, 5, 6]])
41-
Coordinates:
41+
Indexes:
4242
time: Int64Index([0, 1], dtype='int64')
4343
x: Int64Index([0, 1, 2], dtype='int64')
4444
Linked dataset variables:
@@ -57,9 +57,9 @@ def test_properties(self):
5757
self.assertEqual(getattr(self.dv, attr), getattr(self.v, attr))
5858
self.assertEqual(len(self.dv), len(self.v))
5959
self.assertVariableEqual(self.dv, self.v)
60-
self.assertEqual(list(self.dv.coordinates), list(self.ds.coordinates))
61-
for k, v in iteritems(self.dv.coordinates):
62-
self.assertArrayEqual(v, self.ds.coordinates[k])
60+
self.assertEqual(list(self.dv.indexes), list(self.ds.indexes))
61+
for k, v in iteritems(self.dv.indexes):
62+
self.assertArrayEqual(v, self.ds.indexes[k])
6363
with self.assertRaises(AttributeError):
6464
self.dv.name = 'bar'
6565
with self.assertRaises(AttributeError):
@@ -162,7 +162,7 @@ def test_constructor_from_self_described(self):
162162

163163
panel = pd.Panel({0: frame})
164164
actual = DataArray(panel)
165-
expected = DataArray([data], expected.coordinates, ['dim_0', 'x', 'y'])
165+
expected = DataArray([data], expected.indexes, ['dim_0', 'x', 'y'])
166166
self.assertDataArrayIdentical(expected, actual)
167167

168168
expected = DataArray(['a', 'b'], name='foo')

test/test_dataset.py

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -73,16 +73,16 @@ def test_repr(self):
7373
data = create_test_data()
7474
expected = dedent("""
7575
<xray.Dataset>
76-
Dimensions: (dim1: 100, dim2: 50, dim3: 10, time: 20)
77-
Coordinates:
78-
dim1 X
79-
dim2 X
80-
dim3 X
81-
time X
82-
Noncoordinates:
83-
var1 0 1
84-
var2 0 1
85-
var3 1 0
76+
Dimensions: (dim1: 100, dim2: 50, dim3: 10, time: 20)
77+
Indexes:
78+
dim1 X
79+
dim2 X
80+
dim3 X
81+
time X
82+
Non-indexes:
83+
var1 0 1
84+
var2 0 1
85+
var3 1 0
8686
Attributes:
8787
Empty
8888
""").strip()
@@ -91,10 +91,10 @@ def test_repr(self):
9191

9292
expected = dedent("""
9393
<xray.Dataset>
94-
Dimensions: ()
95-
Coordinates:
94+
Dimensions: ()
95+
Indexes:
9696
None
97-
Noncoordinates:
97+
Non-indexes:
9898
None
9999
Attributes:
100100
Empty
@@ -130,14 +130,14 @@ def test_variable(self):
130130
with self.assertRaises(ValueError):
131131
a['qux'] = (('time', 'x'), d.T)
132132

133-
def test_coordinate(self):
133+
def test_indexes(self):
134134
a = Dataset()
135135
vec = np.random.random((10,))
136136
attributes = {'foo': 'bar'}
137137
a['x'] = ('x', vec, attributes)
138-
self.assertTrue('x' in a.coordinates)
139-
self.assertIsInstance(a.coordinates['x'].as_index, pd.Index)
140-
self.assertVariableEqual(a.coordinates['x'], a.variables['x'])
138+
self.assertTrue('x' in a.indexes)
139+
self.assertIsInstance(a.indexes['x'].as_pandas, pd.Index)
140+
self.assertVariableEqual(a.indexes['x'], a.variables['x'])
141141
b = Dataset()
142142
b['x'] = ('x', vec, attributes)
143143
self.assertVariableEqual(a['x'], b['x'])
@@ -213,18 +213,18 @@ def test_indexed(self):
213213

214214
ret = data.indexed(dim1=0)
215215
self.assertEqual({'time': 20, 'dim2': 50, 'dim3': 10}, ret.dimensions)
216-
self.assertItemsEqual(list(data.noncoordinates) + ['dim1'],
217-
ret.noncoordinates)
216+
self.assertItemsEqual(list(data.nonindexes) + ['dim1'],
217+
ret.nonindexes)
218218

219219
ret = data.indexed(time=slice(2), dim1=0, dim2=slice(5))
220220
self.assertEqual({'time': 2, 'dim2': 5, 'dim3': 10}, ret.dimensions)
221-
self.assertItemsEqual(list(data.noncoordinates) + ['dim1'],
222-
ret.noncoordinates)
221+
self.assertItemsEqual(list(data.nonindexes) + ['dim1'],
222+
ret.nonindexes)
223223

224224
ret = data.indexed(time=0, dim1=0, dim2=slice(5))
225225
self.assertItemsEqual({'dim2': 5, 'dim3': 10}, ret.dimensions)
226-
self.assertItemsEqual(list(data.noncoordinates) + ['dim1', 'time'],
227-
ret.noncoordinates)
226+
self.assertItemsEqual(list(data.nonindexes) + ['dim1', 'time'],
227+
ret.nonindexes)
228228

229229
def test_labeled(self):
230230
data = create_test_data()
@@ -440,7 +440,7 @@ def test_virtual_variables(self):
440440
self.assertVariableEqual(data['time.dayofyear'],
441441
Variable('time', 1 + np.arange(20)))
442442
self.assertArrayEqual(data['time.month'].values,
443-
data.variables['time'].as_index.month)
443+
data.variables['time'].as_pandas.month)
444444
self.assertArrayEqual(data['time.season'].values, 1)
445445
# test virtual variable math
446446
self.assertArrayEqual(data['time.dayofyear'] + 1, 2 + np.arange(20))
@@ -670,10 +670,10 @@ def test_lazy_load(self):
670670
def test_reduce(self):
671671
data = create_test_data()
672672

673-
self.assertEqual(len(data.mean().coordinates), 0)
673+
self.assertEqual(len(data.mean().indexes), 0)
674674

675675
expected = data.max()
676-
for var in data.noncoordinates:
676+
for var in data.nonindexes:
677677
expected = data[var].max()
678678
actual = expected[var]
679679
self.assertDataArrayEqual(expected, actual)

test/test_indexing.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import numpy as np
22

3-
from xray import indexing, variable, Dataset, Variable, Coordinate
3+
from xray import indexing, variable, Dataset, Variable, Index
44
from . import TestCase, ReturnItem
55

66

@@ -65,7 +65,7 @@ def test_orthogonal_indexer(self):
6565

6666
def test_convert_label_indexer(self):
6767
# TODO: add tests that aren't just for edge cases
68-
coord = Coordinate('x', [1, 2, 3])
68+
coord = Index('x', [1, 2, 3])
6969
with self.assertRaisesRegexp(ValueError, 'not all values found'):
7070
indexing.convert_label_indexer(coord, [0])
7171
with self.assertRaises(KeyError):

test/test_variable.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import pandas as pd
88

99
from xray import Variable, Dataset, DataArray, indexing
10-
from xray.variable import (Coordinate, as_variable, NumpyArrayAdapter,
10+
from xray.variable import (Index, as_variable, NumpyArrayAdapter,
1111
PandasIndexAdapter, _as_compatible_data)
1212
from xray.pycompat import PY3
1313

@@ -164,16 +164,16 @@ def test_1d_math(self):
164164
self.assertArrayEqual((v * w).values, x * y)
165165
# something complicated
166166
self.assertArrayEqual((v ** 2 * w - 1 + x).values, x ** 2 * y - 1 + x)
167-
# make sure dtype is preserved (for Coordinates)
167+
# make sure dtype is preserved (for Index objects)
168168
self.assertEqual(float, (+v).dtype)
169169
self.assertEqual(float, (+v).values.dtype)
170170
self.assertEqual(float, (0 + v).dtype)
171171
self.assertEqual(float, (0 + v).values.dtype)
172172
# check types of returned data
173173
self.assertIsInstance(+v, Variable)
174-
self.assertNotIsInstance(+v, Coordinate)
174+
self.assertNotIsInstance(+v, Index)
175175
self.assertIsInstance(0 + v, Variable)
176-
self.assertNotIsInstance(0 + v, Coordinate)
176+
self.assertNotIsInstance(0 + v, Index)
177177

178178
def test_1d_reduce(self):
179179
x = np.arange(5)
@@ -194,7 +194,7 @@ def test_array_interface(self):
194194
# test ufuncs
195195
self.assertVariableIdentical(np.sin(v), self.cls(['x'], np.sin(x)))
196196
self.assertIsInstance(np.sin(v), Variable)
197-
self.assertNotIsInstance(np.sin(v), Coordinate)
197+
self.assertNotIsInstance(np.sin(v), Index)
198198

199199
def example_1d_objects(self):
200200
for data in [range(3),
@@ -563,27 +563,27 @@ def test_reduce_keep_attrs(self):
563563
self.assertEqual(vm.attrs, _attrs)
564564

565565

566-
class TestCoordinate(TestCase, VariableSubclassTestCases):
567-
cls = staticmethod(Coordinate)
566+
class TestIndex(TestCase, VariableSubclassTestCases):
567+
cls = staticmethod(Index)
568568

569569
def test_init(self):
570570
with self.assertRaisesRegexp(ValueError, 'must be 1-dimensional'):
571-
Coordinate((), 0)
571+
Index((), 0)
572572

573573
def test_as_index(self):
574574
data = 0.5 * np.arange(10)
575-
v = Coordinate(['time'], data, {'foo': 'bar'})
576-
self.assertTrue(pd.Index(data, name='time').identical(v.as_index))
575+
v = Index(['time'], data, {'foo': 'bar'})
576+
self.assertTrue(pd.Index(data, name='time').identical(v.as_pandas))
577577

578578
def test_data(self):
579-
x = Coordinate('x', np.arange(3.0))
579+
x = Index('x', np.arange(3.0))
580580
# data should be initially saved as an ndarray
581581
self.assertIs(type(x._data), NumpyArrayAdapter)
582582
self.assertEqual(float, x.dtype)
583583
self.assertArrayEqual(np.arange(3), x)
584584
self.assertEqual(float, x.values.dtype)
585585
self.assertEqual('x', x.name)
586-
# after inspecting x.values, the Coordinate will be saved as an Index
586+
# after inspecting x.values, the Index will be saved as an Index
587587
self.assertIsInstance(x._data, PandasIndexAdapter)
588588
with self.assertRaisesRegexp(TypeError, 'cannot be modified'):
589589
x[:] = 0
@@ -592,7 +592,7 @@ def test_avoid_index_dtype_inference(self):
592592
# verify our work-around for (pandas<0.14):
593593
# https://github.com/pydata/pandas/issues/6370
594594
data = pd.date_range('2000-01-01', periods=3).to_pydatetime()
595-
t = Coordinate('t', data)
595+
t = Index('t', data)
596596
self.assertArrayEqual(t.values[:2], data[:2])
597597
self.assertArrayEqual(t[:2].values, data[:2])
598598
self.assertArrayEqual(t.values[:2], data[:2])

xray/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from .variable import Variable, Coordinate
1+
from .variable import Variable, Index, Coordinate
22
from .dataset import Dataset, open_dataset
33
from .data_array import DataArray, align
44

xray/common.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -142,13 +142,13 @@ def array_repr(arr):
142142
summary.append(repr(arr.values))
143143
else:
144144
summary.append('[%s values with dtype=%s]' % (arr.size, arr.dtype))
145-
if hasattr(arr, 'coordinates'):
146-
if arr.coordinates:
147-
summary.append('Coordinates:')
148-
for k, v in arr.coordinates.items():
149-
summary.append(_wrap_indent(repr(v.as_index), ' %s: ' % k))
145+
if hasattr(arr, 'dataset'):
146+
if arr.indexes:
147+
summary.append('Indexes:')
148+
for k, v in arr.indexes.items():
149+
summary.append(_wrap_indent(repr(v.as_pandas), ' %s: ' % k))
150150
other_vars = [k for k in arr.dataset
151-
if k not in arr.coordinates and k != arr.name]
151+
if k not in arr.indexes and k != arr.name]
152152
if other_vars:
153153
summary.append('Linked dataset variables:')
154154
summary.append(' ' + ', '.join(other_vars))
@@ -172,7 +172,7 @@ def dataset_repr(ds):
172172
summary = ['<xray.%s>' % type(ds).__name__]
173173

174174
max_name_length = max(len(k) for k in ds.variables) if ds else 0
175-
first_col_width = max(4 + max_name_length, 16)
175+
first_col_width = max(4 + max_name_length, 13)
176176
coords_str = pretty_print('Dimensions:', first_col_width)
177177
all_dim_strings = ['%s: %s' % (k, v) for k, v in iteritems(ds.dimensions)]
178178
summary.append('%s(%s)' % (coords_str, ', '.join(all_dim_strings)))
@@ -201,11 +201,11 @@ def summarize_variables(variables, not_found=' ', found=int):
201201
else:
202202
return [' None']
203203

204-
summary.append('Coordinates:')
205-
summary.extend(summarize_variables(ds.coordinates, ' ', 'X'))
204+
summary.append('Indexes:')
205+
summary.extend(summarize_variables(ds.indexes, ' ', 'X'))
206206

207-
summary.append('Noncoordinates:')
208-
summary.extend(summarize_variables(ds.noncoordinates, ' ', int))
207+
summary.append('Non-indexes:')
208+
summary.extend(summarize_variables(ds.nonindexes, ' ', int))
209209

210210
summary.append('Attributes:\n%s' % _summarize_attributes(ds))
211211

0 commit comments

Comments
 (0)