Skip to content

Releases: IAMconsortium/pyam

Release v0.9.0

28 Nov 14:44
b322d07
Compare
Choose a tag to compare

Release v0.9.0

Highlights

  • Extend the data format to work with dimensionless variables (i.e., accept "empty" units).
  • Refactor the interpolate() feature to accept a list of years or datetime instances.
  • Add the list of authors/contributors to the docs.

API changes

PR #456 changed the interface of the interpolate() feature to do the operation inplace (previous behaviour) or return a new instance (future default). A deprecation warning is written if a user does not provide the arg inplace to warn of the future change.

Individual updates

  • #461 Add list of authors to repo and docs pages
  • #459 Add a get_variable_components() function to retrieve or join variable components
  • #458 Enable Path for IamDataFrame initialization
  • #456 Speed up interpolation and support interpolation for multiple time-points
  • #454 Enable dimensionless units and fix info() if IamDataFrame is empty
  • #451 Fix unit conversions from C to CO2eq
  • #450 Defer logging set-up to when the first logging message is generated
  • #445 Prevent conflicts between attributes and data/meta columns
  • #444 Use warnings module for deprecation warnings

Release v0.8.0

19 Oct 07:39
b6c473b
Compare
Choose a tag to compare

Release v0.8.0

Highlights

  • Add a boxplot visualization feature to the plotting toolbox.
  • Implement an API to read data from World Bank Open Data Catalogue.
  • Write a tutorial illustrating how to read model results from a GAMS gdx file.
  • Define index, model, scenario, ... attributes and show a summary of the index dimensions on print().
  • Refactor the timeseries data backend for improved performance.

API changes

PR #432 added attributes to access the list of (unique) items of each index dimension (model, scenario, ...). The PR also marked as deprecated the equivalent functions (models(), scenarios(), ...). The new behaviour is closer (though still different) to what a pandas user would expect.

Notes

PR #420 added an object IamDataFrame._data to handle timeseries data internally. This is implemented as a pandas.Series (instead of the previous long-format pandas.DataFrame) to improve performance. The previous behaviour with IamDataFrame.data is maintained via getter and setter functions.

Individual updates

  • #440 Add boxplot() visualization feature
  • #438 Add an index attribute of model-scenario combinations
  • #437 Improved test for appending mismatched timeseries
  • #436 Raise an error with appending mismatching timeseries index dimensions
  • #432 Add attributes to access index dimensions
  • #429 Fix return type of validate() after data refactoring
  • #427 Add an info() function and use in print(IamDataFrame)
  • #424 Add a tutorial reading results from a GAMS model (via a gdx file).
  • #420 Add a _data object (implemented as a pandas.Series) to handle timeseries data internally.
  • #418 Read data from World Bank Open Data Catalogue as IamDataFrame.
  • #416 Include meta in new IamDataFrames returned by aggregation functions.

Release v0.7.0

08 Jul 12:50
ada621f
Compare
Choose a tag to compare

Release v0.7.0

Highlights

  • Add new features for aggregating and downscaling timeseries data.
  • Update the plotting library for compatibility with the latest matplotlib release.
  • Refactor the feature to read data directly from an IIASA scenario database API.
  • Migrate the continuous-integration (CI) infrastructure from Travis & Appveyor to GitHub Actions and use CodeCov.io instead of coveralls.io for test coverage metrics.

API changes

PR #413 changed the return type of pyam.read_iiasa() and pyam.iiasa.Connection.query() to an IamDataFrame (instead of a pandas.DataFrame) and loads meta-indicators by default.

Also, the following functions were deprecated for package consistency:

  • index() replaces scenario_list() for an overview of all scenarios
  • meta_columns (attribute) replaces available_metadata()
  • meta() replaces metadata()

PR #402 changed the default behaviour of as_pandas() to include all columns of meta in the returned dataframe, or only merge columns given by the renamed argument meta_cols. The feature to discover meta-columns from a dictionary was split out into a utility function pyam.plotting.mpl_args_to_meta_cols().

Individual Updates

  • #413 Refactor IIASA-connection-API and rework all related tests.
  • #412 Add building the docs to GitHub Actions CI.
  • #411 Add feature to pass an explicit weight dataframe to downscale_region().
  • #410 Activate tutorial tests on GitHub Actions CI (py3.8).
  • #409 Remove travis and appveyor CI config.
  • #408 Update badges on the docs page and readme.
  • #407 Add Codecov to Github Actions CI.
  • #405 Add ability for recursivley aggregating variables.
  • #402 Refactor as_pandas() and docs for more consistent description of meta.
  • #401 Read credentials for IIASA-API-Connection by default from known location.
  • #396 Enable casting to IamDataFrame multiple times.
  • #394 Switch CI to Github Actions.
  • #393 Import ABC from collections.abc for Python 3.10 compatibility.
  • #380 Add compatibility with latest matplotlib and py3.8

Release v0.6.0

04 Jun 19:56
0c88f2c
Compare
Choose a tag to compare

Release v0.6.0

Highlights

  • Add feature to aggregate timeseries at sub-annual time resolution
  • Refactored the iam-units utility from a submodule to a dependency
  • Clean up documentation and dependencies

Individual Updates

  • #386 Enables unit conversion to apply to strings with "-equiv" in them.
  • #384 Add documentation for the pyam.iiasa.Connection class.
  • #382 Streamline dependencies and implementation of xlsx-io
  • #373 Extends the error message when initializing with duplicate rows.
  • #370 Allowed filter to work with np.int64 years and np.datetime64 dates.
  • #369 convert_unit() supports GWP conversion of same GHG species without context, lower-case aliases for species symbols.
  • #361 iam-units refactored from a Git submodule to a Python dependency of pyam.
  • #322 Add feature to aggregate timeseries at sub-annual time resolution

Release v0.5.0

31 Mar 09:54
8a32c2d
Compare
Choose a tag to compare

Release v0.5.0

Highlights

  • Improved feature for unit conversion using the pint package and the IAMconsortium/units repository, providing out-of-the-box conversion of unit definitions commonly used in integrated assessment research and energy systems modelling; see this tutorial for more information
  • Increased support for operations on timeseries data with continuous-time resolution
  • New tutorial for working with various input data formats; take a look here
  • Rewrite and extension of the documentation pages for the API; read the new docs!

API changes

PR #341 changed the API of IamDataFrame.convert_unit() from a dictionary to explicit kwargs current, to and factor (now optional, using pint if not specified).

PR #334 changed the arguments of IamDataFrame.interpolate() and pyam.fill_series() to time. It can still be an integer (i.e., a year).

With PR #337, initializing an IamDataFrame with n/a entries in columns other than value raises an error.

Individual Updates

  • #354 Fixes formatting of API parameter docstrings
  • #352 Bugfix when using interpolate() on data with extra columns
  • #349 Fixes an issue with checking that time columns are equal when appending IamDataFrames
  • #348 Extend pages for API docs, clean up docstrings, and harmonize formatting
  • #347 Enable contexts and custom UnitRegistry with unit conversion
  • #341 Use pint and IIASA-ene-units repo for unit conversion
  • #339 Add tutorial for dataframe format io
  • #337 IamDataFrame to throw an error when initialized with n/a entries in columns other than value
  • #334 Enable interpolate to work on datetimes

⚠️ Warning ⚠️

This release includes the repository IAMconsortium/units as a submodule, but GitHub currently does not support including submodules in the archives distributed with a release. Please download the content of the units folder directly from the repository..

Release v0.4.1

11 Feb 12:00
1c421fd
Compare
Choose a tag to compare

Release v0.4.1

Summary

This is a patch release to enable compatibility with pandas v1.0.
It also adds experimental support of frictionless datapackage format (read more on GitHub).

Individual Updates

  • #324 Enable compatibility with pandas v1.0
  • #323 Support import/export of frictionless datapackage format

Release v0.4.0

14 Jan 20:47
c14cc91
Compare
Choose a tag to compare

Release v0.4.0

Highlights

  • New feature: downscale regional timeseries data to subregions using a proxy variable
  • Improved features for aggregation by sectors and regions: support weighted-average, min/max, etc.
    (including a reworked tutorial)
  • Streamlined I/O: include meta table when reading from/writing to xlsx files
  • Standardized logger behaviour

API changes

PR #305 changed the default behaviour of aggregate_region() regarding the treatment of components at the region-level. To keep the previous behaviour, add components=True.

PR #315 changed the return type of aggregate() and aggregate_region() to an IamDataFrame instance. To keep the previous behaviour, add timeseries().
The object returned by check_aggregate() and check_aggregate_region() now includes both the actual and the expected value as a pd.DataFrame instance.
The function check_internal_consistency() now returns a concatenated dataframe rather than a dictionary and also includes optional treatment of components (see paragraph above). To keep the previous behaviour, add components=True.

Individual Updates

  • #315 Add equals() feature, change return types of [check_]aggregate[_region](), rework aggregation tutorial
  • #314 Update IPCC color scheme colors and add SSP-only colors
  • #313 Add feature to downscale timeseries data to subregions using another variable as proxy
  • #312 Allow passing list of variables to aggregate functions
  • #305 Add method and weight options to the (region) aggregation functions
  • #302 Rework the tutorials
  • #301 Bugfix when using to_excel() with a pd.ExcelWriter
  • #297 Add empty attribute, better error for timeseries() on empty dataframe
  • #295 Include meta table when writing to or reading from xlsx files
  • #292 Add warning message if data is empty at initialization (after formatting)
  • #288 Put pyam logger in its own namespace (see here)
  • #285 Add ability to fetch regions with synonyms from IXMP API

Release v0.3.0

03 Nov 15:01
8933741
Compare
Choose a tag to compare

Release v0.3.0

Highlights

  • Streamlined generation of quantitative metadata indicators from timeseries data using set_meta_from_data()
  • Better support for accessing public and private IIASA scenario explorer databases via the REST API
  • More extensive documentation of the pyam data model and the IAMC format
  • Compatible with recent pandas v0.25

Individual Updates

  • #277 Restructure and extend the docs pages, switch to RTD-supported theme
  • #275 Completely removes all features related to region plotting, notably region_plot() and read_shapefile()
  • #270 Include variables with zeros in stack_plot (see #266)
  • #269 Ensure append doesn't accidentally swap indexes
  • #268 Update aggregate_region so it can find variables below sub-cateogories too
  • #267 Make clear error message if variable-region pair is missing when check_aggregate_region is called
  • #261 Add a check that keep in filter() is a boolean
  • #254 Hotfix for aggregating missing regions and filtering empty dataframes
  • #243 Update pyam.iiasa.Connection to support all public and private database connections. DEPRECATED: the argument 'iamc15' has been deprecated in favor of names as queryable directly from the REST API.
  • #241 Add set_meta_from_data feature
  • #236 Add swap_time_for_year method and confirm datetime column is compatible with pyam features
  • #273 Fix several issues accessing IXMP API (passing correct credentials, improve reliability for optional fields in result payload)

New Version: 0.2.0

10 May 12:44
a73fc6a
Compare
Choose a tag to compare

Release v0.2.0

Highlights

  • the filters argument in IamDataFrame.filter() has been deprecated
  • pd.date_time now has experimental supported for time-related columns
  • plots now support the official IPCC scenario color palatte
  • native support for putting legends outside of plot axes
  • dataframes can now be initialized with default values, making reading raw
    datasets easier

Individual Updates

  • #228 Update development environment creation instructions and make pandas requirement more specific
  • #219 Add ability to query metadata from iiasa data sources
  • #214 Tidy up requirements specifications a little
  • #213 Add support for IPCC colors, see the new tutorial "Using IPCC Color Palattes"
  • #212 Now natively support reading R-style data frames with year columns like "X2015"
  • #207 Add a aggregate_region() function to sum a variable from subregions and add components that are only defined at the region level
  • #202 Extend the df.rename() function with a check_duplicates (default True) validation option
  • #201 Added native support for legends outside of plots with pyam.plotting.OUTSIDE_LEGEND with a tutorial
  • #200 Bugfix when providing cmap and color arguments to plotting functions
  • #199 Initializing an IamDataFrame accepts kwargs to fill or create from the data any missing required columns
  • #198 Update stack plot functionality and add aggregation tutorial. Also adds a copy method to IamDataFrame.
  • #197 Added a normalize function that normalizes all data in a data frame to a specific time period.
  • #195 Fix filtering for time, day and hour to use generic pattern_match() (if such a column exists) in 'year'-formmatted IamDataFrames
  • #192 Extend utils.find_depth() to optionally return depth (as list of ints) rather than assert level tests
  • #190 Add concat() function
  • #189 Fix over-zealous dropna() in scatter()
  • #186 Fix over-zealous dropna() in line_plot(), rework as_pandas() to (optionally) discover meta columns to be joined
  • #178 Add a kwarg append to the function rename(), change behaviour of mapping to only apply to data where all given columns are matched
  • #177 Modified formatting of time column on init to allow subclasses to avoid pandas limitation (https://stackoverflow.com/a/37226672)
  • #176 Corrected title setting operation in line_plot function
  • #175 Update link to tutorial in readme.md
  • #174 Add a function difference() to compare two IamDataFrames
  • #171 Fix a bug when reading from an ixmp.TimeSeries object, refactor to mitigate circular dependency
  • #162 Add a function to sum and append timeseries components to an aggregate variable
  • #152 Fix bug where scatter plots did not work with property metadata when using two variables (#136, #152)
  • #151 Fix bug where excel files were not being written on Windows and MacOSX (#149)
  • #145 Support full semantic and VCS-style versioning with versioneer
  • #132 support time columns using the datetime format and additional str columns in data

Patch release to support install and docs

19 Nov 15:04
Compare
Choose a tag to compare

Now requests is included in setup.py and docs have been updated accordingly