15
15
from . import TestCase , unittest
16
16
17
17
18
- _dims = {'dim1' : 8 , 'dim2' : 9 , 'dim3' : 10 }
19
- _vars = {'var1' : ['dim1' , 'dim2' ],
20
- 'var2' : ['dim1' , 'dim2' ],
21
- 'var3' : ['dim3' , 'dim1' ],
22
- }
23
- _testvar = sorted (_vars .keys ())[0 ]
24
- _testdim = sorted (_dims .keys ())[0 ]
25
-
26
-
27
18
def create_test_data (seed = None ):
28
19
rs = np .random .RandomState (seed )
20
+ _vars = {'var1' : ['dim1' , 'dim2' ],
21
+ 'var2' : ['dim1' , 'dim2' ],
22
+ 'var3' : ['dim3' , 'dim1' ]}
23
+ _dims = {'dim1' : 8 , 'dim2' : 9 , 'dim3' : 10 }
24
+
29
25
obj = Dataset ()
30
26
obj ['time' ] = ('time' , pd .date_range ('2000-01-01' , periods = 20 ))
31
27
obj ['dim1' ] = ('dim1' , np .arange (_dims ['dim1' ]))
@@ -72,6 +68,7 @@ def store_variables(self):
72
68
class TestDataset (TestCase ):
73
69
def test_repr (self ):
74
70
data = create_test_data (seed = 123 )
71
+ data .attrs ['foo' ] = 'bar'
75
72
# need to insert str dtype at runtime to handle both Python 2 & 3
76
73
expected = dedent ("""\
77
74
<xray.Dataset>
@@ -83,25 +80,22 @@ def test_repr(self):
83
80
time (time) datetime64[ns] 2000-01-01 2000-01-02 2000-01-03 2000-01-04 ...
84
81
Other Coordinates:
85
82
numbers (dim3) int64 0 1 2 0 0 1 1 2 2 3
86
- Noncoordinates :
83
+ Variables :
87
84
var1 (dim1, dim2) float64 -1.086 0.9973 0.283 -1.506 -0.5786 1.651 -2.427 -0.4289 ...
88
85
var2 (dim1, dim2) float64 1.162 -1.097 -2.123 1.04 -0.4034 -0.126 -0.8375 -1.606 ...
89
86
var3 (dim3, dim1) float64 0.5565 -0.2121 0.4563 1.545 -0.2397 0.1433 0.2538 ...
90
87
Attributes:
91
- Empty """ ) % data ['dim3' ].dtype
88
+ foo: bar """ ) % data ['dim3' ].dtype
92
89
actual = '\n ' .join (x .rstrip () for x in repr (data ).split ('\n ' ))
93
90
print (actual )
94
- self .assertEqual (expected , actual )
95
91
96
92
expected = dedent ("""\
97
93
<xray.Dataset>
98
94
Dimensions: ()
99
95
Index Coordinates:
100
- Empty
101
- Noncoordinates:
102
- Empty
103
- Attributes:
104
- Empty""" )
96
+ *empty*
97
+ Variables:
98
+ *empty*""" )
105
99
actual = '\n ' .join (x .rstrip () for x in repr (Dataset ()).split ('\n ' ))
106
100
print (actual )
107
101
self .assertEqual (expected , actual )
@@ -112,11 +106,9 @@ def test_repr(self):
112
106
<xray.Dataset>
113
107
Dimensions: ()
114
108
Index Coordinates:
115
- Empty
116
- Noncoordinates:
117
- foo float64 1.0
118
- Attributes:
119
- Empty""" )
109
+ *empty*
110
+ Variables:
111
+ foo float64 1.0""" )
120
112
actual = '\n ' .join (x .rstrip () for x in repr (data ).split ('\n ' ))
121
113
print (actual )
122
114
self .assertEqual (expected , actual )
@@ -164,9 +156,34 @@ def test_constructor_with_coords(self):
164
156
Dataset ({'a' : ('x' , [1 ])}, {'a' : ('x' , [1 ])})
165
157
166
158
ds = Dataset ({}, {'a' : ('x' , [1 ])})
167
- self .assertFalse (ds . noncoords )
159
+ self .assertFalse (ds )
168
160
self .assertItemsEqual (ds .coords .keys (), ['x' , 'a' ])
169
161
162
+ def test_properties (self ):
163
+ ds = create_test_data ()
164
+ self .assertEqual (ds .dims ,
165
+ {'dim1' : 8 , 'dim2' : 9 , 'dim3' : 10 , 'time' : 20 })
166
+
167
+ self .assertItemsEqual (ds , ['var1' , 'var2' , 'var3' ])
168
+ self .assertItemsEqual (ds .keys (), ['var1' , 'var2' , 'var3' ])
169
+ self .assertIn ('var1' , ds )
170
+ self .assertNotIn ('dim1' , ds )
171
+ self .assertNotIn ('numbers' , ds )
172
+ self .assertEqual (len (ds ), 3 )
173
+
174
+ self .assertItemsEqual (ds .indexes , ['dim1' , 'dim2' , 'dim3' , 'time' ])
175
+ self .assertEqual (len (ds .indexes ), 4 )
176
+
177
+ self .assertItemsEqual (ds .nonindexes , ['var1' , 'var2' , 'var3' , 'numbers' ])
178
+ self .assertEqual (len (ds .nonindexes ), 4 )
179
+
180
+ self .assertItemsEqual (ds .coords ,
181
+ ['time' , 'dim1' , 'dim2' , 'dim3' , 'numbers' ])
182
+ self .assertIn ('dim1' , ds .coords )
183
+ self .assertIn ('numbers' , ds .coords )
184
+ self .assertNotIn ('var1' , ds .coords )
185
+ self .assertEqual (len (ds .coords ), 5 )
186
+
170
187
def test_variable (self ):
171
188
a = Dataset ()
172
189
d = np .random .random ((10 , 3 ))
@@ -182,7 +199,7 @@ def test_variable(self):
182
199
with self .assertRaises (ValueError ):
183
200
a ['qux' ] = (('time' , 'x' ), d .T )
184
201
185
- def test_coords_create (self ):
202
+ def test_modify_inplace (self ):
186
203
a = Dataset ()
187
204
vec = np .random .random ((10 ,))
188
205
attributes = {'foo' : 'bar' }
@@ -412,19 +429,19 @@ def test_isel(self):
412
429
413
430
ret = data .isel (dim1 = 0 )
414
431
self .assertEqual ({'time' : 20 , 'dim2' : 9 , 'dim3' : 10 }, ret .dims )
415
- self .assertItemsEqual (data . noncoords , ret . noncoords )
432
+ self .assertItemsEqual (data , ret )
416
433
self .assertItemsEqual (data .coords , ret .coords )
417
434
self .assertItemsEqual (data .indexes , list (ret .indexes ) + ['dim1' ])
418
435
419
436
ret = data .isel (time = slice (2 ), dim1 = 0 , dim2 = slice (5 ))
420
437
self .assertEqual ({'time' : 2 , 'dim2' : 5 , 'dim3' : 10 }, ret .dims )
421
- self .assertItemsEqual (data . noncoords , ret . noncoords )
438
+ self .assertItemsEqual (data , ret )
422
439
self .assertItemsEqual (data .coords , ret .coords )
423
440
self .assertItemsEqual (data .indexes , list (ret .indexes ) + ['dim1' ])
424
441
425
442
ret = data .isel (time = 0 , dim1 = 0 , dim2 = slice (5 ))
426
443
self .assertItemsEqual ({'dim2' : 5 , 'dim3' : 10 }, ret .dims )
427
- self .assertItemsEqual (data . noncoords , ret . noncoords )
444
+ self .assertItemsEqual (data , ret )
428
445
self .assertItemsEqual (data .coords , ret .coords )
429
446
self .assertItemsEqual (data .indexes ,
430
447
list (ret .indexes ) + ['dim1' , 'time' ])
@@ -738,11 +755,12 @@ def test_setitem(self):
738
755
def test_delitem (self ):
739
756
data = create_test_data ()
740
757
all_items = set (data .variables )
741
- self .assertItemsEqual (data , all_items )
758
+ self .assertItemsEqual (data . variables , all_items )
742
759
del data ['var1' ]
743
- self .assertItemsEqual (data , all_items - set (['var1' ]))
760
+ self .assertItemsEqual (data . variables , all_items - set (['var1' ]))
744
761
del data ['dim1' ]
745
- self .assertItemsEqual (data , set (['time' , 'dim2' , 'dim3' , 'numbers' ]))
762
+ self .assertItemsEqual (data .variables ,
763
+ set (['time' , 'dim2' , 'dim3' , 'numbers' ]))
746
764
self .assertNotIn ('dim1' , data .dims )
747
765
self .assertNotIn ('dim1' , data .coords )
748
766
@@ -840,7 +858,7 @@ def rectify_dim_order(dataset):
840
858
# return a new dataset with all variable dimensions tranposed into
841
859
# the order in which they are found in `data`
842
860
return Dataset (dict ((k , v .transpose (* data [k ].dims ))
843
- for k , v in iteritems (dataset . noncoords )),
861
+ for k , v in iteritems (dataset )),
844
862
dataset .coords , attrs = dataset .attrs )
845
863
846
864
for dim in ['dim1' , 'dim2' , 'dim3' ]:
@@ -985,7 +1003,7 @@ def test_reduce(self):
985
1003
986
1004
actual = data .max ()
987
1005
expected = Dataset (dict ((k , v .max ())
988
- for k , v in iteritems (data . noncoords )))
1006
+ for k , v in iteritems (data )))
989
1007
self .assertDatasetEqual (expected , actual )
990
1008
991
1009
self .assertDatasetEqual (data .min (dim = ['dim1' ]),
@@ -1011,7 +1029,7 @@ def test_reduce_non_numeric(self):
1011
1029
data2 = create_test_data (seed = 44 )
1012
1030
add_vars = {'var4' : ['dim1' , 'dim2' ]}
1013
1031
for v , dims in sorted (add_vars .items ()):
1014
- size = tuple (_dims [d ] for d in dims )
1032
+ size = tuple (data1 . dims [d ] for d in dims )
1015
1033
data = np .random .random_integers (0 , 100 , size = size ).astype (np .str_ )
1016
1034
data1 [v ] = (dims , data , {'foo' : 'variable' })
1017
1035
0 commit comments