def test_definition(self): lat = ArrayCoordinates1d([0, 1, 2], name="lat") lon = ArrayCoordinates1d([10, 20, 30], name="lon") time = UniformCoordinates1d("2018-01-01", "2018-01-03", "1,D", name="time") c = StackedCoordinates([lat, lon, time]) d = c.definition assert isinstance(d, list) json.dumps(d, cls=podpac.core.utils.JSONEncoder) # test serializable c2 = StackedCoordinates.from_definition(d) assert c2 == c
def test_definition(self): lat = ArrayCoordinates1d([0, 1, 2], name='lat') lon = ArrayCoordinates1d([10, 20, 30], name='lon') time = UniformCoordinates1d('2018-01-01', '2018-01-03', '1,D', name='time') c = StackedCoordinates([lat, lon, time]) d = c.definition assert isinstance(d, list) json.dumps(d, cls=podpac.core.utils.JSONEncoder) # test serializable c2 = StackedCoordinates.from_definition(d) assert c2 == c
def test_definition_shaped(self): lat = np.linspace(0, 1, 12).reshape((3, 4)) lon = np.linspace(10, 20, 12).reshape((3, 4)) c = StackedCoordinates([lat, lon], dims=["lat", "lon"]) d = c.definition assert isinstance(d, list) assert len(d) == 2 # serializable json.dumps(d, cls=podpac.core.utils.JSONEncoder) # from definition c2 = StackedCoordinates.from_definition(d) assert c2 == c
def from_definition(cls, d): """ Create podpac Coordinates from a coordinates definition. Arguments --------- d : list coordinates definition Returns ------- :class:`Coordinates` podpac Coordinates See Also -------- from_json, definition """ if not isinstance(d, list): raise TypeError( "Could not parse coordinates definition of type '%s'" % type(d)) coords = [] for elem in d: if isinstance(elem, list): c = StackedCoordinates.from_definition(elem) elif 'start' in elem and 'stop' in elem and ('step' in elem or 'size' in elem): c = UniformCoordinates1d.from_definition(elem) elif 'values' in elem: c = ArrayCoordinates1d.from_definition(elem) else: raise ValueError( "Could not parse coordinates definition item with keys %s" % elem.keys()) coords.append(c) return cls(coords)
def test_invalid_definition(self): with pytest.raises( ValueError, match="Could not parse coordinates definition with keys"): StackedCoordinates.from_definition([{'apple': 10}, {}])