What’s New¶
v0.2 (26 September 2017)¶
This release includes some new features plus several bugfixes. The bugfixes include some that previously made using aospy on pressure-interpolated data very problematic. We have also improved support for reading in data from the WRF and CAM atmospheric models.
As of this release, aospy has at least 2(!) confirmed regular users that aren’t the original aospy developers, bringing the worldwide total of users up to at least 4. The first user-generated Github Issues have now also been created. We’re a real thing!
Enhancements¶
- Use
dask.bag
coupled withdask.distributed
rather thanmultiprocess
to parallelize computations (closes GH169 via PR172). This enables the optional use of an externaldistributed.Client
to leverage computational resources across multiple nodes of a cluster. By Spencer Clark. - Improve support for WRF and NCAR CAM model data by adding the internal names they use for grid attributes to aospy’s lists of potential names to search for. By Spencer Hill.
- Allow a user to specify a custom preprocessing function in all DataLoaders to prepare data for processing with aospy. This could be used, for example, to add a CF-compliant units attribute to the time coordinate if it is not present in a set of files. Addresses GH177 via PR180. By Spencer Clark.
- Remove
dask.async
import inmodel.py
; no longer needed, and also prevents warning message from dask regarding location ofget_sync
function (PR195). By Spencer Hill.
Dependencies¶
Bug Fixes¶
- Remove faulty logic for calculations with data coming from multiple runs. Eventually this feature will be properly implemented (fixes GH117 via PR178). By Spencer Hill.
- Only run tests that require optional dependencies if those dependencies are actually installed (fixes GH167 via PR176). By Spencer Hill.
- Remove obsolete
operator.py
module (fixes GH174 via PR175). By Spencer Clark. - Fix workaround for dates with years less than 1678 to support units attributes with a reference date years not equal to 0001 (fixes GH188 via PR189). By Spencer Clark.
- Fix bug which would prevent users from analyzing a subset within the Timestamp-valid range from a dataset which included data from outside the Timestamp-valid range (fixed in PR189). By Spencer Clark.
- Toggle the
mask_and_scale
option toTrue
when reading in netCDF files to enable missing values encoded as floats to be converted to NaN’s (fixes GH190 via PR192). By Spencer Clark. - Force regional calculations to mask gridcell weights where the loaded datapoints were invalid instead of just masking points outside the desired region (fixes GH190 via PR192). By Spencer Clark.
- Retain original input data’s mask during gridpoint-by-gridpoint temporal averages (fixes GH193 via PR196). By Spencer Hill.
- Always write output to a tar file in serial to prevent empty header file errors (fixes GH75 via PR197). By Spencer Clark.
- Allow
aospy
to use grid attributes that are only defined inRun
objects. Previously if a grid attribute were defined only in aRun
object and not also in the Run’s correspondingModel
, an error would be raised (fixes GH187 via PR199). By Spencer Clark. - When input data for a calculation has a time bounds array, overwrite its time array with the average of the start and end times for each timestep. Prevents bug wherein time arrays equal to either the start or end bounds get mistakenly grouped into the wrong time interval, i.e. the wrong month or year (fixes :issue 185 via PR200). By Spencer Hill.
v0.1.2 (30 March 2017)¶
This release improves the process of submitting multiple calculations for automatic execution. The user interface, documentation, internal logic, and packaging all received upgrades and/or bugfixes.
We also now have a mailing list. Join it to follow and/or post your own usage questions, bug reports, suggestions, etc.
Enhancements¶
- Include an example library of aospy objects that works out-of-the-box with the provided example main script (PR155). By Spencer Clark and Spencer Hill.
- Improve Examples page of the documentation by using this new example object library (PR164). By Spencer Hill.
- Improve readability/usability of the included example script
aospy_main.py
for submitting aospy calculations by moving all internal logic into newautomate.py
module (PR155). By Spencer Clark and Spencer Hill. - Enable user to specify whether or not to write output to .tar files (in addition to the standard output). Also document an error that occurs when writing output to .tar files for sufficiently old versions of tar (including the version that ships standard on MacOS), and print a warning when errors are caught during the ‘tar’ call (PR160). By Spencer Hill.
Bug fixes¶
- Update packaging specifications such that the example main script and tutorial notebook actually ship with aospy as intended (fixes GH149 via PR161). By Spencer Hill.
- Use the ‘scipy’ engine for the xarray.DataArray.to_netcdf call when writing aospy calculation outputs to disk to prevent a bug when trying to re-write to an existing netCDF file (fixes GH157 via PR160). By Spencer Hill.
v0.1.1 (2 March 2017)¶
This release includes fixes for a number of bugs mistakenly introduced
in the refactoring of the variable loading step of calc.py
(PR90), as well as support for xarray version 0.9.1.
Enhancements¶
- Support for xarray version 0.9.1 and require it or a later xarray version. By Spencer Clark and Spencer Hill.
- Better support for variable names relating to “bounds” dimension of input data files. “bnds”, “bounds”, and “nv” now all supported (PR140). By Spencer Hill.
- When coercing dims of input data to aospy’s internal names, for scalars change only the name; for non-scalars change the name, force them to have a coord, and copy over their attrs (PR140). By Spencer Hill.
Bug fixes¶
- Fix bug involving loading data that has dims that lack coords (which is possible as of xarray v0.9.0). By Spencer Hill.
- Fix an instance where the name for pressure half levels was mistakenly replaced with the name for the pressure full levels (PR126). By Spencer Clark.
- Prevent workaround for dates outside the
pd.Timestamp
valid range from being applied to dates within thepd.Timestamp
valid range (PR128). By Spencer Clark. - Ensure that all DataArrays associated with
aospy.Var
objects have a time weights coordinate with CF-compliant time units. This allows them to be cast as the typenp.timedelta64
, and be safely converted to have units of days before taking time-weighted averages (PR128). By Spencer Clark. - Fix a bug where the time weights were not subset in time prior to
taking a time weighted average; this caused computed seasonal
averages to be too small. To prevent this from failing silently
again, we now raise a
ValueError
if the time coordinate of the time weights is not identical to the time coordinate of the array associated with theaospy.Var
(PR128). By Spencer Clark. - Enable calculations to be completed using data saved as a single time-slice on disk (fixes GH132 through PR135). By Spencer Clark.
- Fix bug where workaround for dates outside the
pd.Timestamp
valid range caused a mismatch between the data loaded and the data requested (fixes GH138 through PR139). By Spencer Clark.
v0.1 (24 January 2017)¶
- Initial release!
- Contributors: