Skip to content

Releases: IAMconsortium/pyam

Release v1.4.0

08 Apr 05:22
764a85e
Compare
Choose a tag to compare

Release v1.4.0

Highlights

  • Add colors used for IPCC AR6 WGIII scenario analysis
  • Support scenario data with mixed 'year' and 'datetime' domain (beta)
  • Add explicit support for Python 3.10

Dependency changes

Following a change of the UNFCCC data inventory API (see pik-primap/unfccc_di_api#39), PR #647 updated the dependencies to require unfccc-di-api>=3.0.1.

API changes

PR #598 added support for mixed time-domains, i.e., where the time column has both integer and datetime items. As part of the changes, filtering an IamDataFrame with yearly data using arguments
that are only relevant for the datetime-domain (e.g., month, hour, time) returns an empty IamDataFrame. Previously, this raised an error.

Individual updates

  • #651 Pin pint<=0.18 as a quickfix for a regression in the latest release
  • #650 Add IPCC AR6 WGIII colors to PYAM_COLORS
  • #647 Pin unfccc-di-api to latest release
  • #634 Better error message when initializing with invisible columns
  • #598 Support mixed 'year' and 'datetime' domain

Release v1.3.1

04 Feb 08:43
8419228
Compare
Choose a tag to compare

Release v1.3.1

This is a patch release to ensure compatibility with pandas v1.4.0.

Release v1.3.0

25 Jan 09:31
424a223
Compare
Choose a tag to compare

Release v1.3.0

Highlights

  • Implement a compute module for derived timeseries indicators
  • Add a diff() method similar to the corresponding pandas.DataFrame.diff()
  • Improve error reporting on IamDataFrame initialization

Individual updates

  • #608 The method assert_iamframe_equals() passes if an all-nan-col is present
  • #604 Add an annualized-growth-rate method
  • #602 Add a compute module/accessor and a learning-rate method
  • #600 Add a diff() method
  • #592 Fix for running in jupyter-lab notebooks
  • #590 Update expected figures of plotting tests to use matplotlib 3.5
  • #586 Improve error reporting for non-numeric data in any value column

Release v1.2.0

21 Oct 13:28
2d9e0d8
Compare
Choose a tag to compare

Release v1.2.0

Highlights

  • Update the source code of the manuscript in Open Research Europe to reflect changes based on reviewer comments
  • Increase the performance of the IamDataFrame initialization
  • Add an experimental "profiler" module for performance benchmarking

Dependency changes

The dependencies were updated to require xlrd>=2.0 (previously <2.0) and openpyxl was added as a dependency.

Individual updates

  • #585 Include revisions to the ORE manuscript source code following acceptance/publication
  • #583 Add profiler module for performance benchmarking
  • #579 Increase performance of IamDataFrame initialization
  • #572 Unpinned the requirements for xlrd and added openpyxl as a requirement to ensure ongoing support of both .xlsx and .xls files out of the box

Release v1.1.0

09 Aug 17:14
120473f
Compare
Choose a tag to compare

Release v1.1.0

Highlights

  • Update pyam-colors to be consistent with IPCC AR6 palette
  • Enable colors keyword argument as list in plot.pie()
  • Fix compatibility with pandas v1.3

API changes

PR #559 marked the attribute _LONG_IDX as deprecated. Please use dimensions instead.

Individual updates

  • #566 Updated AR6 default color pallet to final version used by WG1
  • #564 Add an example with a secondary axis to the plotting gallery
  • #563 Enable colors keyword argument as list in plot.pie()
  • #562 Add get_data_column(), refactor filtering by the time domain
  • #560 Add a feature to swap_year_for_time()
  • #559 Add attribute dimensions, fix compatibility with pandas v1.3
  • #557 Swap time for year keeping subannual resolution
  • #556 Set explicit minimum numpy version (1.19.0)

Release v1.0.0

28 Jun 18:58
e008f62
Compare
Choose a tag to compare

Release v1.0.0

This is the first major release of the pyam package.

The release coincides with the publication of a manuscript in Open Research Europe (doi: 10.12688/openreseurope.13633.1).

API changes compared to the latest previous release

As part of release 1.0, several features where removed that were marked as deprecated in previous releases:

  • The setters df.data and df[<col>] were removed.
    Please use IamDataFrame(<data>) instead.
  • The methog df.interpolate() now returns a new IamDataFrame by default.
    Please use df.interpolate(inplace=True) to retain the previous behavior.
  • It is no longer allowed to pass credentials to access an IIASA Scenario Explorer as a clear-text creds keyword argument
    when calling pyam.iiasa.Connection() or pyam.read_iiasa().
    Please use pyam.iiasa.set_config(<user>, <password>) to store credentials on your machine.
  • The methods models(), scenarios(), regions() and variables() were removed.
    Please use the attributes model, scenario, region, variable, unit and unit_mapping instead.
  • All plotting functions following the notation df.<plot-type>() were removed.
    Please use df.plot.<type>() instead.

Release v0.13.0

28 Jun 06:07
59f46c8
Compare
Choose a tag to compare

Release v0.13.0

Highlights

  • Add a unit_mapping attribute to show a variable-unit dictionary.
  • Support plotting of continuous-time data by automatically using the time domain as x-axis in many plots.
  • Improve the performance of the rename() method.

API changes

PR #550 harmonized the behavior of the rename() function when the renaming creates overlapping timeseries data. Before, this raised an error in case there was a conflict with existing data, but automatically performed a groupby-sum when mapping to the same coordinates. This was marked as deprecated; in the future, an error will be raised for any overlapping coordinates after the rename operation.

PR #548 added a unit_mapping attribute. This will replace the variables(include_units=True) method.

Individual updates

  • #551 Default to IamDataFrame-time-col on the x-axis of plots
  • #550 Refactor the rename() method for performance improvement
  • #549 Make plotly an optional dependency
  • #548 Add a unit_mapping attribute to show a variable-unit dictionary
  • #546 Fixed logging for recursive aggregation

Release v0.12.0

11 Jun 14:57
0989fdd
Compare
Choose a tag to compare

Release v0.12.0

Highlights

  • Add algebraic operations working directly on the timeseries data including automatic handling of units.
  • Drop negative weights when performing weighted regional aggregation by default.
  • Allow recursive aggregation when (some) intermediate variables exist and perform validation of the existing intermediate variables.

API changes

PR #534 changed the behavior of the aggregate_region() method when performing weighted region aggregation. By default, if any weights are negative, the corresponding aggregated values are dropped from the resulting IamDataFrame. The previous behavior can be achieved by setting drop_negative_weights=False.

Individual updates

  • #543 Add a tutorial for working with algebraic operations
  • #541 Support units in binary operations
  • #538 Add option to set defaults in binary operations
  • #537 Enhance binary ops to support numerical arguments
  • #534 Add feature to drop negative weights
  • #532 Add an option to skip existing intermediate variables when aggregating recursively
  • #533 Add an apply() function for custom mathematical operations
  • #527 Add an in-dataframe basic mathematical operations subtract, add, multiply, divide
  • #523 Add feature to compute weights for de-biasing using count
  • #519 Enable explicit label and fix for non-string items in plot legend

Release v0.11.0

13 Apr 12:58
91bb50e
Compare
Choose a tag to compare

Release v0.11.0

Highlights

  • Easily order data in the line plot feature.
  • Add a module for reading data from the UNFCCC Data Inventory via the PIK-PRIMAP unfccc-di-api package.
  • Improved integration with any IIASA Scenario Explorer instance:
    read non-default versions from the connected database and obtain the "audit" info (scenario upload/edit timestamp and user).
  • Performance improvements when aggregating or concatenating data.
  • Refactor the entire code base to the Black code style.

API changes

PR #507 harmonizes the behavior of the aggregate() and aggregate_region() methods when performing "empty" aggregation, i.e., no components exist to perform the requested aggregation. In the new implementation, an empty IamDataFrame is returned if append=False (instead of None).

PR #488 changes the default behavior when initializing an IamDataFrame from xlsx: now, all sheets names starting with data will be parsed for timeseries data.

Individual updates

  • #510 Improve performance of pyam.concat()
  • #508 Bugfix for non-empty but invisible header and no rows in 'meta' sheet
  • #507 Refactor aggregation-functions to increase performance
  • #502 Switch to Black code style
  • #499 Implement order feature in line plot
  • #497 Add a module for reading data from the UNFCCC Data Inventory
  • #496 Enable loading meta from csv file
  • #494 Small performance improvements
  • #491 Allow loading meta from file without exclude columns or with empty rows
  • #488 Read all sheets starting with data when reading from xlsx
  • #486 Enable reading non-default scenario versions from IIASA API
  • #483 Add a tutorial for integration with R
  • #481 Enable custom index columns
  • #477 Add a nightly test suite
  • #476 Add docstrings to plotting functions df.plot.<kind>()
  • #471 Add a iiasa.Connection.properties() function to retrieve scenario audit data

Release v0.10.0

05 Jan 11:09
a459a35
Compare
Choose a tag to compare

Release v0.10.0

Highlights

  • Refactor the plotting library for better UX and consistency with pandas,
    matplotlib and seaborn.
  • Add a sankey() feature to the plotting library.
  • Rework the documentation and tutorials.

API changes

Several PRs in this release changed the implementation of the plotting library
for better UX and consistency with pandas, matplotlib and seaborn.

Replace the calls to plotting features by the following:

  • plot(...) (or plot(kind='line', ...)) for line_plot()
  • plot.stack(...) for stack_plot()
  • plot.bar() for bar_plot()
  • ...

These PRs also add an order arg to the plotting functions, and the levels
are ordered based on the run_control()['order'] dictionary by default.

Individual updates

  • #475 Add a scatter plot example to the gallery
  • #473 Refactor to plotting API following pandas/matplotlib implementation
  • #472 Add a sankey() example to the plotting gallery
  • #470 Add two types of order arg to barplot()
  • #467 Refactor the GAMS-pyam tutorial to use the gamstransfer module
  • #466 Add a sankey() function to create sankey diagrams
  • #464 Add order arg to stackplot()
  • #463 Clarification of initialization-error message if file does not exist