ACT
ACT copied to clipboard
MPL reader breaks in newer environment of xarray, numpy etc.
trafficstars
def test_io_mpldataset():
mpl_ds = act.io.mpl.read_sigma_mplv5(act.tests.EXAMPLE_SIGMA_MPLV5)
# Tests fields
assert 'channel_1' in mpl_ds.variables.keys()
assert 'temp_0' in mpl_ds.variables.keys()
assert mpl_ds.channel_1.values.shape == (102, 1000)
# Tests coordinates
assert 'time' in mpl_ds.coords.keys()
assert 'range' in mpl_ds.coords.keys()
assert mpl_ds.coords['time'].values.shape == (102,)
assert mpl_ds.coords['range'].values.shape == (1000,)
assert '_arm_standards_flag' in mpl_ds.attrs.keys()
# Tests attributes
assert '_datastream' in mpl_ds.attrs.keys()
mpl_ds.close()
Returns:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Cell In[9], line 1
----> 1 test_io_mpldataset()
Cell In[8], line 2, in test_io_mpldataset()
1 def test_io_mpldataset():
----> 2 mpl_ds = act.io.mpl.read_sigma_mplv5(act.tests.EXAMPLE_SIGMA_MPLV5)
4 # Tests fields
5 assert 'channel_1' in mpl_ds.variables.keys()
File ~\dev\ACT\act\io\mpl.py:75, in read_sigma_mplv5(filename, save_nc, out_nc_path, afterpulse, dead_time, overlap, **kwargs)
62 for f in filename:
63 task.append(
64 dask.delayed(proc_sigma_mplv5_read)(
65 f,
(...)
72 )
73 )
---> 75 results_ds = dask.compute(*task)
77 ds = xr.concat(results_ds, 'time')
79 return ds
File ~\mambaforge\envs\act-docs\Lib\site-packages\dask\base.py:660, in compute(traverse, optimize_graph, scheduler, get, *args, **kwargs)
657 postcomputes.append(x.__dask_postcompute__())
659 with shorten_traceback():
--> 660 results = schedule(dsk, keys, **kwargs)
662 return repack([f(r, *a) for r, (f, a) in zip(results, postcomputes)])
File ~\dev\ACT\act\io\mpl.py:147, in proc_sigma_mplv5_read(f, save_nc, out_nc_path, afterpulse, dead_time, overlap, **kwargs)
140 #os.remove(tmpfile2)
141
142 # Calculate range in meters
143 #ds['range'] = 0.5 * 1* 1 * (ds.range + 0.5)
144
145 # Swap the coordinates to be time and range
146 ds = ds.swap_dims({'profile': 'time'})
--> 147 ds = ds.assign_coords({'time': ds.time, 'range': ds.range})
149 # Add metadata
150 is_arm_file_flag = check_arm_standards(ds)
File ~\mambaforge\envs\act-docs\Lib\site-packages\xarray\core\common.py:300, in AttrAccessMixin.__getattr__(self, name)
298 with suppress(KeyError):
299 return source[name]
--> 300 raise AttributeError(
301 f"{type(self).__name__!r} object has no attribute {name!r}"
302 )
AttributeError: 'Dataset' object has no attribute 'range'
We didn't catch this in newer versions because there is a try and except exception catch
It seems the issue is mpl2nc is producing files with barely anything in them..
xarray.Dataset
Dimensions:
profile: 0
Coordinates: (0)
Data variables:
unit
(profile)
uint16
...
Indexes: (0)
Attributes: (0)
``