Skip to content

Commit

Permalink
Refactor constructor
Browse files Browse the repository at this point in the history
  • Loading branch information
mraspaud committed Apr 14, 2022
1 parent e02abd4 commit 8e79f96
Showing 1 changed file with 23 additions and 20 deletions.
43 changes: 23 additions & 20 deletions satpy/readers/ghrsst_l2.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import tarfile
from contextlib import suppress
from datetime import datetime
from functools import cached_property

import xarray as xr

Expand All @@ -33,32 +34,34 @@ class GHRSSTL2FileHandler(BaseFileHandler):
def __init__(self, filename, filename_info, filetype_info, engine=None):
"""Initialize the file handler for GHRSST L2 netCDF data."""
super().__init__(filename, filename_info, filetype_info)
self._engine = engine
self._tarfile = None

if os.fspath(filename).endswith('tar'):
self._tarfile = tarfile.open(name=filename, mode='r')
sst_filename = next((name for name in self._tarfile.getnames()
if self._is_sst_file(name)))
file_obj = self._tarfile.extractfile(sst_filename)
self.nc = xr.open_dataset(file_obj,
decode_cf=True,
mask_and_scale=True,
engine=engine,
chunks={'ni': CHUNK_SIZE,
'nj': CHUNK_SIZE})
else:
self.nc = xr.open_dataset(filename,
decode_cf=True,
mask_and_scale=True,
engine=engine,
chunks={'ni': CHUNK_SIZE,
'nj': CHUNK_SIZE})

self.nc = self.nc.rename({'ni': 'x', 'nj': 'y'})
self.filename_info['start_time'] = datetime.strptime(
self.nc.start_time, '%Y%m%dT%H%M%SZ')
self.filename_info['end_time'] = datetime.strptime(
self.nc.stop_time, '%Y%m%dT%H%M%SZ')

@cached_property
def nc(self):
"""Get the xarray Dataset for the filename."""
if os.fspath(self.filename).endswith('tar'):
self._tarfile = tarfile.open(name=self.filename, mode='r')
sst_filename = next((name for name in self._tarfile.getnames()
if self._is_sst_file(name)))
file_obj = self._tarfile.extractfile(sst_filename)
else:
file_obj = self.filename

nc = xr.open_dataset(file_obj,
decode_cf=True,
mask_and_scale=True,
engine=self._engine,
chunks={'ni': CHUNK_SIZE,
'nj': CHUNK_SIZE})

return nc.rename({'ni': 'x', 'nj': 'y'})

@staticmethod
def _is_sst_file(name):
"""Check if file in the tar archive is a valid SST file."""
Expand Down

0 comments on commit 8e79f96

Please sign in to comment.