Skip to content

Commit

Permalink
Merge pull request #556 from djhoese/bugfix-writer-enhance
Browse files Browse the repository at this point in the history
Fix turning off enhancements in writers for float data
  • Loading branch information
djhoese authored Dec 19, 2018
2 parents 4a4df8e + 7d5570c commit 09fee83
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 17 deletions.
36 changes: 36 additions & 0 deletions satpy/tests/test_writers.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,18 @@ def setUpClass(cls):
with open(fn, 'w') as f:
f.write(content)

# create fake test image writer
from satpy.writers import ImageWriter

class CustomImageWriter(ImageWriter):
def __init__(self, **kwargs):
super(CustomImageWriter, self).__init__(name='test', config_files=[], **kwargs)
self.img = None

def save_image(self, img, **kwargs):
self.img = img
cls.CustomImageWriter = CustomImageWriter

@classmethod
def tearDownClass(cls):
"""Remove fake user configurations."""
Expand Down Expand Up @@ -247,6 +259,30 @@ def test_no_enhance(self):
img = get_enhanced_image(ds, enhance=False)
np.testing.assert_allclose(img.data.data.compute().squeeze(), ds.data)

def test_writer_no_enhance(self):
"""Test turning off enhancements with writer."""
from xarray import DataArray
ds = DataArray(np.arange(1, 11.).reshape((2, 5)),
attrs=dict(name='test1', sensor='test_sensor', mode='L'),
dims=['y', 'x'])
writer = self.CustomImageWriter(enhance=False)
writer.save_datasets((ds,), compute=False)
img = writer.img
np.testing.assert_allclose(img.data.data.compute().squeeze(), ds.data)

def test_writer_custom_enhance(self):
"""Test using custom enhancements with writer."""
from satpy.writers import Enhancer
from xarray import DataArray
ds = DataArray(np.arange(1, 11.).reshape((2, 5)),
attrs=dict(name='test1', sensor='test_sensor', mode='L'),
dims=['y', 'x'])
enhance = Enhancer()
writer = self.CustomImageWriter(enhance=enhance)
writer.save_datasets((ds,), compute=False)
img = writer.img
np.testing.assert_almost_equal(img.data.isel(bands=0).max().values, 1.)

def test_enhance_with_sensor_entry(self):
"""Test enhancing an image with a configuration section."""
from satpy.writers import Enhancer, get_enhanced_image
Expand Down
18 changes: 12 additions & 6 deletions satpy/writers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -372,10 +372,13 @@ def get_enhanced_image(dataset, ppp_config_dir=None, enhance=None, enhancement_c
"'Enhancer' class to the 'enhance' keyword argument instead.", DeprecationWarning)

if enhance is False:
# no enhancement
enhancer = None
elif enhance is None:
elif enhance is None or enhance is True:
# default enhancement
enhancer = Enhancer(ppp_config_dir, enhancement_config_file)
else:
# custom enhancer
enhancer = enhance

# Create an image for enhancement
Expand Down Expand Up @@ -500,7 +503,7 @@ def __init__(self, name=None, filename=None, base_dir=None, **kwargs):
"""
# Load the config
Plugin.__init__(self, **kwargs)
self.info = self.config['writer']
self.info = self.config.get('writer', {})

if 'file_pattern' in self.info:
warnings.warn("Writer YAML config is using 'file_pattern' which "
Expand Down Expand Up @@ -705,17 +708,20 @@ def __init__(self, name=None, filename=None, base_dir=None, enhance=None, enhanc
enhancement_config = self.info.get("enhancement_config", None)

if enhance is False:
self.enhancer = None
elif enhance is None:
# No enhancement
self.enhancer = False
elif enhance is None or enhance is True:
# default enhancement
self.enhancer = Enhancer(ppp_config_dir=self.ppp_config_dir, enhancement_config_file=enhancement_config)
else:
self.enhancer = None
# custom enhancer
self.enhancer = enhance

@classmethod
def separate_init_kwargs(cls, kwargs):
# FUTURE: Don't pass Scene.save_datasets kwargs to init and here
init_kwargs, kwargs = super(ImageWriter, cls).separate_init_kwargs(kwargs)
for kw in ['enhancement_config']:
for kw in ['enhancement_config', 'enhance']:
if kw in kwargs:
init_kwargs[kw] = kwargs.pop(kw)
return init_kwargs, kwargs
Expand Down
14 changes: 3 additions & 11 deletions satpy/writers/mitiff.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,17 +43,9 @@

class MITIFFWriter(ImageWriter):

def __init__(self, name=None, filename=None, enhancement_config=None, base_dir=None, tags=None, **kwargs):
ImageWriter.__init__(self,
name,
filename,
enhancement_config,
base_dir,
default_config_filename="writers/mitiff.yaml",
**kwargs)

self.tags = self.info.get("tags",
None) if tags is None else tags
def __init__(self, name=None, tags=None, **kwargs):
ImageWriter.__init__(self, name=name, default_config_filename="writers/mitiff.yaml", **kwargs)
self.tags = self.info.get("tags", None) if tags is None else tags
if self.tags is None:
self.tags = {}
elif not isinstance(self.tags, dict):
Expand Down

0 comments on commit 09fee83

Please sign in to comment.