예제 #1
0
    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
예제 #2
0
    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
예제 #3
0
    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
예제 #4
0
    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)
예제 #5
0
 def test_invalid_definition(self):
     with pytest.raises(
             ValueError,
             match="Could not parse coordinates definition with keys"):
         StackedCoordinates.from_definition([{'apple': 10}, {}])