Support roadmap for ixmp4
#939
khaeru
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
This post gives an outline/roadmap for MESSAGEix users and developers about future changes in
message_ixandixmprelated to a new package in development namedixmp4.The goal of the MESSAGE team is to provide stable and reliable research tools for use by ourselves and the MESSAGE community. This means ensuring a smooth migration path even as major underlying changes are made (in order to unlock future improvements). In particular, we aim for no breakage of researchers' modeling workflows and codes, and allowing time and providing adequate support for each user/developer to migrate at a pace that matches their capabilities.
Background
The
message_ixPython package depends on theixmp("ix modeling platform") package. The choice of multiple packages follows the software design principle known as “separation of concerns”. In brief:ixmphandles local and remote storage of any scenario and its contents (sets, parameters, variables, etc.), and interfacing with (any) GAMS code that implements optimization models. It also handles storage of data in the IAM Consortium (IAMC) structure.message_ixprovides a specific set of GAMS files that implement the MESSAGE optimization model, and tools for working with the specific sets, parameters, etc. in the MESSAGE formulation.Separation of concerns allows each package to have a smaller scope and well-defined and -tested functionality. This in turn has made it easier for the MESSAGE team to maintain both packages.
Since its first release (June 2019), the
ixmppackage has implemented data storage using the JPype1 package, the Java Runtime Environment (JRE), and underlying Java code. Starting with ixmp v2.0.0 (released January 2020), these features have been collected in theJDBCBackendclass.In 2023, colleagues in the IIASA Scenario Services & Scientific Software team began work on a new package named
ixmp4, currently at version 0.9.8. One motivation for the new package was to implement storage in Python code that is more easily maintained and supported by IIASA colleagues (compared to the Java code underlying the JDBCBackend).ixmp4development initially focused on storage of IAMC-structured data, particularly as used to support the “Scenario Explorer” web application.Future releases of
message_ixandixmpUsers can expect the following milestones.
Note that releases from version 3.12 are not yet scheduled for specific dates. They may occur faster or slower than the usual 6-month frequency. Exact version numbers ‘A’, ‘B’, and ‘C’ are not yet set, and points for these milestones may be combined in fewer releases or spread across additional releases.
message_ixandixmpversions 3.11 (June 2025)ixmpgains a newIXMP4Backendclass. This class usesixmp4internally, but allows ixmp.Platform, ixmp.Scenario, message_ix.Scenario, and related code to present exactly the same interface and behaviour as inixmpandmessage_ixversions 3.10 and earlier.message_ixfeatures. In particular:ixmp4databases are supported—not remote.ixmp4is a new, optional dependency ofixmpand thus ofmessage_ix. Specifically, the dependency is on ixmp4 version 0.10.message_ixandixmpversions 3.12message-ix-modelspackage—that works with JDBCBackend also works with IXMP4Backend.ixmp4remains an optional dependency ofixmpand thus ofmessage_ix.message_ixandixmpversions ‘A’ixmpand thusmessage_ix.ixmp4and its dependencies become mandatory.JPype1and other packages—remain mandatory.message_ixandixmpversions ‘B’JPype1and other packages become optional dependencies, no longer required or installed by default.message_ixandixmpversions ‘C’ixmp.message_ixagainst JDBCBackend are removed.Notes
ixmp4also establishes an entirely new interface to interact with Scenario (renamedRun) objects and their contents. This new interface has no backwards compatibility with the interface ofixmpandmessage_ixv3.10 and earlier.message_ixto, inter alia, allow users to access the ixmp4.Run object corresponding to a message_ix.Scenario object, so that they may write code using the ixmp4.Run interface.ixmp.Platformormessage_ix.Scenariowill be removed, renamed, or changed in backwards-incompatible ways.message_ix_modelscode (in whole or in part) will be adapted to useixmp4interfaces directly.See also
“Versions and releases” in the
message_ixdocumentation.Beta Was this translation helpful? Give feedback.
All reactions