Skip to content

Commit

Permalink
Remove nproc from future swath def
Browse files Browse the repository at this point in the history
  • Loading branch information
mraspaud committed Feb 16, 2024
1 parent d6df3a6 commit 5b05353
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 7 deletions.
34 changes: 29 additions & 5 deletions pyresample/future/geometry/swath.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@

from __future__ import annotations

from pyresample.geometry import CoordinateDefinition # noqa
import numpy as np

from pyresample.geometry import _get_highest_level_class # noqa
from pyresample.geometry import CoordinateDefinition, DimensionError # noqa
from pyresample.geometry import SwathDefinition as LegacySwathDefinition


Expand All @@ -32,8 +35,6 @@ class SwathDefinition(LegacySwathDefinition):
lats : numpy array
crs: pyproj.CRS,
The CRS to use. longlat on WGS84 by default.
nprocs : int, optional
Number of processor cores to be used for calculations.
attrs: dict,
A dictionary made to store metadata.
Expand All @@ -53,6 +54,29 @@ class SwathDefinition(LegacySwathDefinition):
Swath cartesian coordinates
"""

def __init__(self, lons, lats, crs=None, nprocs=1, attrs=None):
super().__init__(lons, lats, crs=crs, nprocs=nprocs)
def __init__(self, lons, lats, crs=None, attrs=None):
super().__init__(lons, lats, crs=crs)
self.attrs = attrs or {}

def __getitem__(self, key):
"""Slice a 2D geographic definition."""
y_slice, x_slice = key
return self.__class__(
lons=self.lons[y_slice, x_slice],
lats=self.lats[y_slice, x_slice],
attrs=self.attrs
)

def concatenate(self, other):
"""Concatenate coordinate definitions."""
if self.ndim != other.ndim:
raise DimensionError(('Unable to concatenate %sD and %sD '

Check warning on line 73 in pyresample/future/geometry/swath.py

View check run for this annotation

Codecov / codecov/patch

pyresample/future/geometry/swath.py#L73

Added line #L73 was not covered by tests
'geometries') % (self.ndim, other.ndim))
if self.crs != other.crs:
raise ValueError("Incompatible CRSs.")
klass = _get_highest_level_class(self, other)
lons = np.concatenate((self.lons, other.lons))
lats = np.concatenate((self.lats, other.lats))
attrs = self.attrs.copy()
attrs.update(other.attrs)
return klass(lons, lats, attrs=attrs)
2 changes: 2 additions & 0 deletions pyresample/test/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ def create_test_swath(swath_class):
"""
def _create_test_swath(lons, lats, **kwargs):
if swath_class is SwathDefinition:
kwargs.pop("nproc", None)
return swath_class(lons, lats, **kwargs)
return _create_test_swath

Expand Down
36 changes: 34 additions & 2 deletions pyresample/test/test_geometry/test_swath.py
Original file line number Diff line number Diff line change
Expand Up @@ -468,5 +468,37 @@ def test_future_swath_has_attrs():
"""Test that future SwathDefinition has attrs."""
from pyresample.future.geometry import SwathDefinition
lons, lats = _gen_swath_lons_lats()
swath = SwathDefinition(lons, lats)
assert isinstance(swath.attrs, dict)
attrs = dict(meta="data")
swath = SwathDefinition(lons, lats, attrs=attrs)
assert swath.attrs == attrs


def test_future_swath_slice_has_attrs():
"""Test that future sliced SwathDefinition has attrs."""
from pyresample.future.geometry import SwathDefinition
lons, lats = _gen_swath_lons_lats()
attrs = dict(meta="data")
swath = SwathDefinition(lons, lats, attrs=attrs)[0:1, 0:1]
assert swath.attrs == attrs


def test_future_swath_concat_has_attrs():
"""Test that future concatenated SwathDefinition has attrs."""
from pyresample.future.geometry import SwathDefinition
lons, lats = _gen_swath_lons_lats()
attrs1 = dict(meta1="data")
swath1 = SwathDefinition(lons, lats, attrs=attrs1)
attrs2 = dict(meta2="data")
swath2 = SwathDefinition(lons, lats, attrs=attrs2)
swath = swath1.concatenate(swath2)
assert swath.attrs == dict(meta1="data", meta2="data")


def test_future_swath_concat_fails_on_different_crs():
"""Test that future concatenated SwathDefinition must have the same crs."""
from pyresample.future.geometry import SwathDefinition
lons, lats = _gen_swath_lons_lats()
swath1 = SwathDefinition(lons, lats, crs="mycrs")
swath2 = SwathDefinition(lons, lats, crs="myothercrs")
with pytest.raises(ValueError, match="Incompatible CRSs."):
_ = swath1.concatenate(swath2)

0 comments on commit 5b05353

Please sign in to comment.