New release of ixmp and message_ix

80 views
Skip to first unread message

Matthew Gidden

unread,
Nov 22, 2018, 8:07:15 AM11/22/18
to messa...@googlegroups.com, ene....@iiasa.ac.at
Hello all,

I am happy to announce new releases of ixmp (v0.1.3) and message_ix (v1.1.0). If you use anaconda, you can get both updates simply with

$ conda update -c conda-forge message-ix

or using the GUI.

Please find the release notes for both below.

Best,
Matt

IXMP

v0.1.3

Warnings

We have revamped our versioning system. If you install from source (i.e., from the source code in the github repository and not from conda), you may have to uninstall your current version. This only needs to be done once, as the updated versioning system takes care of this issue in the future.

To do so, try:

$ pip uninstall ixmp

If this does not work, find out where the installation is with

$ python -c 'import ixmp; print(ixmp.__version__)'

and manually remove any folder starting with 'ixmp'.

Updates

  • #88: Connecting to multiple databases, updating MESSAGE-scheme scenario specifications to version 1.1
  • #80: Can now set logging level which is harmonized between Java and Python
  • #79: Adding a deprecated-warning for ixmp.Scenario with scheme=='MESSAGE'
  • #76: Changing the API from mp.Scenario(...) to ixmp.Scenario(mp, ...)
  • #73: Adding a function has_solution(), rename kwargs to ..._solution
  • #69 bring retixmp available to other users
  • #64: Support writing multiple sheets to Excel in utils.pd_write
  • #61: Now able to connect to multiple databases (Platforms)
  • #58: Add MacOSX support in CI
  • #52: Add ability to load all scenario data into memory for fast subsequent computation.
MESSAGEix

v1.1.0

Warnings

This patch introduces a few backwards-incompatible changes to database
management.

Database Migration

If you see an error message like:

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
usr/local/lib/python2.7/site-packages/ixmp/core.py:81: in __init__
    self._jobj = java.ixmp.Platform("Python", dbprops)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <jpype._jclass.at.ac.iiasa.ixmp.Platform object at 0x7ff1a8e98410>
args = ('Python', '/tmp/kH07wz/test.properties')

    def _javaInit(self, *args):
        object.__init__(self)
    
        if len(args) == 1 and isinstance(args[0], tuple) \
           and args[0][0] is _SPECIAL_CONSTRUCTOR_KEY:
            self.__javaobject__ = args[0][1]
        else:
            self.__javaobject__ = self.__class__.__javaclass__.newClassInstance(
>               *args)
E           org.flywaydb.core.api.FlywayExceptionPyRaisable: org.flywaydb.core.api.FlywayException: Validate failed: Migration checksum mismatch for migration 1
E           -> Applied to database : 1588531206
E           -> Resolved locally    : 822227094

Then you need to update your local database. There are two methods to do so:

  1. Delete it (you will lose all data and need to regenerate it). The default
    location is ~/.local/ixmp/localdb/.
  2. Manually apply the underlying migrations. This is not particularly easy, but
    allows you to save all your data. If you want help, feel free to get in
    contact on the
    listserv.

New Property File Layout

If you see an error message like:

usr/local/lib/python2.7/site-packages/jpype/_jclass.py:111: at.ac.iiasa.ixmp.exceptions.IxExceptionPyRaisable
---------------------------- Captured stdout setup -----------------------------
2018-11-13 08:15:17,410 ERROR at.ac.iiasa.ixmp.database.DbConfig:357 - missing property 'config.server.config' in /tmp/hhvE1o/test.properties
2018-11-13 08:15:17,412 ERROR at.ac.iiasa.ixmp.database.DbConfig:357 - missing property 'config.server.password' in /tmp/hhvE1o/test.properties
2018-11-13 08:15:17,412 ERROR at.ac.iiasa.ixmp.database.DbConfig:357 - missing property 'config.server.username' in /tmp/hhvE1o/test.properties
2018-11-13 08:15:17,413 ERROR at.ac.iiasa.ixmp.database.DbConfig:357 - missing property 'config.server.url' in /tmp/hhvE1o/test.properties
------------------------------ Captured log setup ------------------------------
core.py                     80 INFO     launching ixmp.Platform using config file at '/tmp/hhvE1o/test.properties'
_________________ ERROR at setup of test_add_spatial_multiple __________________

    @pytest.fixture(scope="session")
    def test_mp():
        test_props = create_local_testdb()
    
        # start jvm
        ixmp.start_jvm()
    
        # launch Platform and connect to testdb (reconnect if closed)
>       mp = ixmp.Platform(test_props)

Then you need to update your property configuration file. The old file looks like

config.name = message_ix_test_db@local
jdbc.driver.1 = org.hsqldb.jdbcDriver
jdbc.url.1 = jdbc:hsqldb:file:/path/to/database
jdbc.user.1 = ixmp
jdbc.pwd.1 = ixmp
jdbc.driver.2 = org.hsqldb.jdbcDriver
jdbc.url.2 = jdbc:hsqldb:file:/path/to/database
jdbc.user.2 = ixmp
jdbc.pwd.2 = ixmp

The new file should look like

config.name = message_ix_test_db@local
jdbc.driver = org.hsqldb.jdbcDriver
jdbc.url = jdbc:hsqldb:file:/path/to/database
jdbc.user = ixmp
jdbc.pwd = ixmp

Updates

  • #113: Upgrading to MESSAGEix 1.1: improved representation of renewables, share constraints, etc.
  • #109: MACRO module added for initializing models to be solved with MACRO. Added scenario-based CI on circleci.
  • #99: Fixing an error in the compuation of the auxiliary GAMS reporting variable PRICE_EMISSION
  • #89: Fully implementing system reliability and flexibity considerations (cf. Sullivan)
  • #88: Reformulated capacity maintainance constraint to ensure that newly installed capacity cannot be decommissioned within the same model period as it is built in
  • #84message_ix.Scenariovintage_active_years() now limits active years to those after the first model year or the years of a certain technology vintage
  • #82: Introducing "add-on technologies" for mitigation options, etc.
  • #81: Share constraints by mode added.
  • #80: Share constraints by commodity/level added.
  • #78: Bugfix: message_ix.Scenario.solve() uses 'MESSAGE' by default, but can be provided other model names
  • #77rename() function can optionally keep old values in the model (i.e., copy vs. copy-with-replace)
  • #74: Activity upper and lower bounds can now be applied to all modes of a technology
  • #67: Use of advanced basis in cplex.opt turned off by default to avoid conflicts with barrier method.
  • #65: Bugfix for downloading tutorials. Now downloads current installed version by default.
  • #60: Add basic ability to write and read model input to/from Excel
  • #59: Added MacOSX CI support
Reply all
Reply to author
Forward
0 new messages