Code Sample, a copy-pastable example if possible
import xarray as xr
import netCDF4 as nc
product = '/Users/stefano/src/s5p/products/NO2/'\
'S5P_OFFL_L2__NO2____20171107T195219_20171107T213349_00361_01_001107_20171108T122727.nc'
# opening the product with netCDF4 works fine
no2 = nc.Dataset(product)
no2.groups
# correctly shows groups' content
OrderedDict([('PRODUCT', <class 'netCDF4._netCDF4.Group'>
group /PRODUCT:
dimensions(sizes): scanline(5640), ground_pixel(450), corner(4), time(1), polynomial_exponents(6), layer(34), vertices(2)
variables(dimensions): int32 scanline(scanline), int32 ground_pixel(ground_pixel), int32 time(time), int32 corner(corner), int32 polynomial_exponents(polynomial_exponents), int32 layer(layer), int32 vertices(vertices), float32 latitude(time,scanline,ground_pixel), float32 longitude(time,scanline,ground_pixel), int32 delta_time(time,scanline), <class 'str'> time_utc(time,scanline), uint8 qa_value(time,scanline,ground_pixel), float32 nitrogendioxide_tropospheric_column(time,scanline,ground_pixel), float32 nitrogendioxide_tropospheric_column_precision(time,scanline,ground_pixel), float32 averaging_kernel(time,scanline,ground_pixel,layer), float32 air_mass_factor_troposphere(time,scanline,ground_pixel), float32 air_mass_factor_total(time,scanline,ground_pixel), int32 tm5_tropopause_layer_index(time,scanline,ground_pixel), float32 tm5_constant_a(layer,vertices), float32 tm5_constant_b(layer,vertices)
groups: SUPPORT_DATA),
('METADATA', <class 'netCDF4._netCDF4.Group'>
group /METADATA:
dimensions(sizes):
variables(dimensions):
groups: QA_STATISTICS, ALGORITHM_SETTINGS, GRANULE_DESCRIPTION, ISO_METADATA, EOP_METADATA, ESA_METADATA)])
# opening the product with xarray raises an UnboundLocalError exception
no2 = xr.open_dataset(product, group='/PRODUCT')
---------------------------------------------------------------------------
UnboundLocalError Traceback (most recent call last)
<ipython-input-26-2052b95f2d95> in <module>()
----> 1 no2 = xr.open_dataset(product, group='/PRODUCT')
/Users/stefano/anaconda/lib/python3.6/site-packages/xarray/backends/api.py in open_dataset(filename_or_obj, group, decode_cf, mask_and_scale, decode_times, autoclose, concat_characters, decode_coords, engine, chunks, lock, cache, drop_variables)
303 lock = _default_lock(filename_or_obj, engine)
304 with close_on_error(store):
--> 305 return maybe_decode_store(store, lock)
306 else:
307 if engine is not None and engine != 'scipy':
/Users/stefano/anaconda/lib/python3.6/site-packages/xarray/backends/api.py in maybe_decode_store(store, lock)
223 store, mask_and_scale=mask_and_scale, decode_times=decode_times,
224 concat_characters=concat_characters, decode_coords=decode_coords,
--> 225 drop_variables=drop_variables)
226
227 _protect_dataset_variables_inplace(ds, cache)
/Users/stefano/anaconda/lib/python3.6/site-packages/xarray/conventions.py in decode_cf(obj, concat_characters, mask_and_scale, decode_times, decode_coords, drop_variables)
1153 vars, attrs, coord_names = decode_cf_variables(
1154 vars, attrs, concat_characters, mask_and_scale, decode_times,
-> 1155 decode_coords, drop_variables=drop_variables)
1156 ds = Dataset(vars, attrs=attrs)
1157 ds = ds.set_coords(coord_names.union(extra_coords).intersection(vars))
/Users/stefano/anaconda/lib/python3.6/site-packages/xarray/conventions.py in decode_cf_variables(variables, attributes, concat_characters, mask_and_scale, decode_times, decode_coords, drop_variables)
1086 k, v, concat_characters=concat_characters,
1087 mask_and_scale=mask_and_scale, decode_times=decode_times,
-> 1088 stack_char_dim=stack_char_dim)
1089 if decode_coords:
1090 var_attrs = new_vars[k].attrs
/Users/stefano/anaconda/lib/python3.6/site-packages/xarray/conventions.py in decode_cf_variable(name, var, concat_characters, mask_and_scale, decode_times, decode_endianness, stack_char_dim)
998 if (has_fill or scale_factor is not None or add_offset is not None):
999 if has_fill and np.array(fill_value).dtype.kind in ['U', 'S', 'O']:
-> 1000 if string_encoding is not None:
1001 raise NotImplementedError(
1002 'variable %r has a _FillValue specified, but '
UnboundLocalError: local variable 'string_encoding' referenced before assignment
# Opening another group with xarray works fine
no2 = xr.open_dataset(product, group='/METADATA/QA_STATISTICS')
no2
<xarray.Dataset>
Dimensions: (nitrogendioxide_stratospheric_column_histogram_axis: 100, nitrogendioxide_stratospheric_column_pdf_axis: 400, nitrogendioxide_total_column_histogram_axis: 100, nitrogendioxide_total_column_pdf_axis: 400, nitrogendioxide_tropospheric_column_histogram_axis: 100, nitrogendioxide_tropospheric_column_pdf_axis: 400, vertices: 2)
[...]
Problem description
An UnboundLocalError exception is raised while trying to open a netCDF file on a specific group ('/PRODUCT'). Opening the file within another group works fine.
The same file can be correctly opened with the netCDF4 library.
Expected Output
File correctly loaded.
Output of xr.show_versions()
Details
INSTALLED VERSIONS
------------------
commit: None
python: 3.6.1.final.0
python-bits: 64
OS: Darwin
OS-release: 17.2.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: None
LANG: None
LOCALE: None.None
xarray: 0.10.0
pandas: 0.20.1
numpy: 1.12.1
scipy: 0.19.0
netCDF4: 1.2.4
h5netcdf: 0.5.0
Nio: None
bottleneck: 1.2.1
cyordereddict: None
dask: 0.15.3
matplotlib: 2.1.0
cartopy: 0.15.1
seaborn: 0.8.1
setuptools: 27.2.0
pip: 9.0.1
conda: 4.3.29
pytest: 3.0.7
IPython: 5.3.0
sphinx: 1.5.6
Code Sample, a copy-pastable example if possible
Problem description
An UnboundLocalError exception is raised while trying to open a netCDF file on a specific group ('
/PRODUCT'). Opening the file within another group works fine.The same file can be correctly opened with the netCDF4 library.
Expected Output
File correctly loaded.
Output of
xr.show_versions()Details
INSTALLED VERSIONS ------------------ commit: None python: 3.6.1.final.0 python-bits: 64 OS: Darwin OS-release: 17.2.0 machine: x86_64 processor: i386 byteorder: little LC_ALL: None LANG: None LOCALE: None.Nonexarray: 0.10.0
pandas: 0.20.1
numpy: 1.12.1
scipy: 0.19.0
netCDF4: 1.2.4
h5netcdf: 0.5.0
Nio: None
bottleneck: 1.2.1
cyordereddict: None
dask: 0.15.3
matplotlib: 2.1.0
cartopy: 0.15.1
seaborn: 0.8.1
setuptools: 27.2.0
pip: 9.0.1
conda: 4.3.29
pytest: 3.0.7
IPython: 5.3.0
sphinx: 1.5.6