mosaik.Core-SemVer


Namemosaik.Core-SemVer JSON
Version 2.5.3rc20220703000527 PyPI version JSON
download
home_pagehttps://mosaik.offis.de
SummaryMosaik is a flexible Smart-Grid co-simulation framework.
upload_time2022-07-03 00:05:29
maintainerBengt Lüers
docs_urlNone
authorStefan Scherfke
requires_python
license
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            Mosaik
======

Mosaik is a simulation compositor for Smart Grid simulations.

It lets you re-use existing simulators and couple them to simulate large-scale
Smart Grid scenarios. Mosaik offers powerful mechanisms to specify and compose
these scenarios.

Version: 2.5.2

License: LGPL

Status
------

.. image:: https://gitlab.com/offis.energy/mosaik/mosaik.Core_SemVer/badges/master/pipeline.svg
    :target: https://gitlab.com/offis.energy/mosaik/mosaik.Core_SemVer/-/jobs
    :alt: Pipeline status

.. image:: https://gitlab.com/offis.energy/mosaik/mosaik.Core_SemVer/badges/master/coverage.svg
    :target: https://gitlab.com/offis.energy/mosaik/mosaik.Core_SemVer/commits/master
    :alt: Coverage Report

.. image:: https://img.shields.io/librariesio/release/pypi/mosaik.Core_SemVer
    :target: https://libraries.io/pypi/mosaik.Core_SemVer
    :alt: Libraries status

.. image:: https://img.shields.io/pypi/l/mosaik.Core_SemVer
    :target: https://pypi.org/project/mosaik.Core_SemVer/
    :alt: License badge

.. image:: https://img.shields.io/pypi/v/mosaik.Core_SemVer
    :target: https://pypi.org/project/mosaik.Core_SemVer/#history
    :alt: PyPI version

.. image:: https://img.shields.io/pypi/pyversions/mosaik.Core_SemVer
    :target: https://pypi.org/project/mosaik.Core_SemVer/
    :alt: Python Versions

Example
-------

A simple demo scenario with mosaik::

   >>> import mosaik
   >>>
   >>> sim_config = {
   ...     'ExampleSim': {'python': 'example_sim.mosaik:ExampleSim'},
   ... }
   >>>
   >>> def create_scenario(world):
   ...     simulator_1 = world.start('ExampleSim')
   ...     simulator_2 = world.start('ExampleSim')
   ...
   ...     a_set = [simulator_1.A(init_val=0) for i in range(3)]
   ...     b_set = simulator_2.B.create(2, init_val=0)
   ...
   ...     for i, j in zip(a_set, b_set):
   ...         world.connect(i, j, ('val_out', 'val_in'))
   >>>
   >>> world = mosaik.scenario.World(sim_config)
   >>> create_scenario(world)
   >>> world.run(until=2)
   Progress: 25.00%
   Progress: 50.00%
   Progress: 75.00%
   Progress: 100.00%


Installation
------------

Mosaik requires Python >= 3.4. Use `pip`__ to install it, preferably into
a `virtualenv`__::

    $ pip install mosaik

__ http://pip.readthedocs.org/en/latest/installing.html
__ http://virtualenv.readthedocs.org/en/latest/

Documentation, Source Code and Issues
-------------------------------------

The documentation is available at https://mosaik.readthedocs.io.

Please report bugs and ideas for improvement to our `issue tracker`__.

__ https://bitbucket.org/mosaik/mosaik/issues


Changelog
=========

2.5.2 - 2019-11-01
------------------

- [NEW] Special characters are now allowed in path names
- [NEW] Compatible to the new versions of networkx
- [CHANGE] python 3.6, 3.7 and 3.8 are currently supported, python 3.4 and 3.5 not anymore.
- [FIX] Various minor internal changes
- [FIX] Various documentation updates and fixes

2.5.1 - 2018-11-29
------------------

- [NEW] When calling the world.start() command for a simulator, users can now set a predefined
  value for the posix flag (e.g. True) to prevent automatic detection of the operating system.
  This facilitates the creation of some co-simulation cases across OS (e.g. Windows and Linux).

2.5.0 - 2018-09-05
------------------

- [NEW] Connection option "time_shifted" added as alternative to async_requests. This will
  make creating cyclic data dependencies between simulators more usable since usage of
  set_data with an API implementation will no longer be needed.

2.4.0 - 2017-12-06
------------------

- [NEW] Compatible to the new versions of networkx, simpy and simpy.io
- [CHANGE] python 3.4, 3.5 and 3.6 are currently supported python 3.3 is no longer supported
- [FIX] Various bug fixes

2.3.0 - 2016-04-26
------------------

- [NEW] Allow passing environment vars to sup processes
- [FIX] Fixed a bug in the version validation which raised an error when using
  a floating point for the version

2.2.0 - 2016-02-15
------------------

- [NEW] API version 2.2: Added an optional "setup_done()" method.

- [CHANGE] API version validation: The API version is no longer an integer but
  a "major.minor" string.  The *major* part has to match with mosaik's major
  version. The *minor* part may be lower or equal to mosaik's minor version.

- [FIX] Various minor fixes and stability improvements.

- [FIX] Various documentation updates and fixes.

2.1.2 – 2014-10-29
------------------

- [FIX] ``World.shutdown()`` now checks if the socket still exists before
  attempting to close it.

- [FIX] Fixed a bug that made the last extra method of a simulator shadow all
  previous ones.

2.1.1 – 2014-10-28
------------------

- [NEW] ``World.run()`` now prints a warning if you forget to connect
  a simulator's entities.
- [FIX] Fixed some problems with the data-flow cache.

2.1 – 2014-10-24
----------------

- [NEW] Mosaik can now perform real-time simulations. Before, this
  functionality needed to be implemented by simulators. Now it’s just
  ``World.run(until=x, rt_factor=y)``, where ``rt_factor`` defines the
  simulation speed relative to the wall-clock time (`issue #24`).

- [NEW] Simulators can now expose extra methods via their API that can be
  called from a mosaik scenario. This allows you to, e.g., store static data in
  a data base. These extra API methods need to be specified in the simulator’s
  meta data (`issue #26`_).

- [NEW] ``util.connect_many_to_one()`` helper function.

- [NEW] More and better documentation:

  - Tutorial for integrating simulators, control strategies and for creating
    scenarios.

  - Sim API description

  - Scenario API description

  - Sim Manager documentation

  - Scheduler documentation

  - Discussion of design decisions

  - Logo, colors, CI

- [NEW] Added ``util.sync_call()`` which eases calling proxied methods of
  a simulator synchronously.

- [CHANGE] The *rel* attribute in the entity description returned by *create()*
  is now optional.

- [CHANGE] Moved proxied methods from ``SimProxy`` to ``SimProxy.proxy`` in
  order to avoid potential name clashes with other attributes.

- [CHANGE] Check a simulator’s models and extra API methods for potential name
  clashes with the built-in API methods.

- [CHANGE] The argument *execution_graph* of ``World`` was renamed to *debug*.
  The execution graph now also stores the time after a simulation step (in
  addition to the time before the step).

- [FIX] `issue #22`_: The asynchronous requests *get_data()* and *set_data()*
  now check if the ``async_requests`` flag was set in ``World.connect()``.

- [FIX] `issue #23`_: *finalize()* is now called for in-process Python
  simulators.

- [FIX] `issue #27`_: Dramatically improved simulation performance (30 times as
  fast in some cases) if simulators use different step sizes (e.g. 1 minute and
  1 hour) by improving some internal data structures.

.. _`issue #22`: https://bitbucket.org/mosaik/mosaik/issue/22/
.. _`issue #23`: https://bitbucket.org/mosaik/mosaik/issue/23/
.. _`issue #24`: https://bitbucket.org/mosaik/mosaik/issue/24/
.. _`issue #26`: https://bitbucket.org/mosaik/mosaik/issue/26/
.. _`issue #27`: https://bitbucket.org/mosaik/mosaik/issue/27/


2.0 – 2014-09-22
----------------

- Mosaik 2 is a complete rewrite of mosaik 1 in order to improve its
  maintainability and flexibility.

- Removed features:

  - The *mosl* DSL (including Eclipse xtext and Java) are now gone. Mosaik now
    only uses Python.

  - Mosaik now longer has executables but is now used as a library.

  - The platform manager is gone.

  - The database is now a separate package, see `mosaik-hdf5`__.

  - The old web UI is gone.

- Mosaik now consists of four core components with the following feature sets:

  - mosaik Sim API

    - The API has bean cleaned up and simplified.

    - Simulators and control strategies share the same API.

    - There are only four calls from mosaik to a simulator: *init*, *create*,
      *step* and *get_data*.

    - Simulators / processes can make asynchronous requests to mosaik during a
      step: *get_progress*, *get_related_entities*, *get_data*, *set_data*.

    - ZeroMQ with JSON is replaced by plain network sockets with JSON.

  - Scenarios:

    - Pure Python is now used to describe scenarios. This offers you more
      flexibility to create complex scenarios.

    - Scenario creation simplified: Start a simulator to get a model factory.
      Use the factory to create model instances (*entities*). Connect entities.
      Run simulation.

    - Connection rules are are no based on a primitive *connect* function that
      only connects two entities with each other. On top of that, any
      connection strategy can be implemented.

  - Simulation Manager:

    - Simulators written in Python 3 can be executed *in process*.

    - Simulators can be started as external processes.

    - Mosaik can connect to an already running instance of a simulator. This
      can be used as a replacement for the now gone platform manager.

  - Simulation execution:

    - The simulation is now event-based. No schedule and no synchronization
      points need to be computed.

    - Simulators can have different and varying step sizes.

- Mosaik ecosystem:

  - A high-level implementation of the mosaik 2 API currently exists for
    Python__ and Java__.

  - *mosaik-web* is a simple visualization for mosaik simulations. See
    https://bitbucket.org/mosaik/mosaik-web.

  - *mosaik-pypower* is an adapter for the *PYPOWER* load flow analysis
    library. See https://bitbucket.org/mosaik/mosaik-pypower and
    https://github.com/rwl/PYPOWER.

  - *mosaik-csv* and *mosaik-householdsim* are simple demo simulators that you
    can use to "simulate" CSV data sets and load-profile based households. See
    https://bitbucket.org/mosaik/mosaik-csv and
    https://bitbucket.org/mosaik/mosaik-householdsim.

  - There is a repository containing a simple demo scenario for mosaik. See
    https://bitbucket.org/mosaik/mosaik-demo.


 You can find information about older versions on the `history page`__

__ https://bitbucket.org/mosaik/mosaik-hdf5
__ https://bitbucket.org/mosaik/mosaik-api-python
__ https://bitbucket.org/mosaik/mosaik-api-java
__ https://mosaik.readthedocs.org/en/latest/about/history.html


Authors
=======

The original concepts for mosaik were developed by Steffen Schütte and Stefan
Scherfke.

The author of mosaik version 2 is Stefan Scherfke.

Okko Nannen and Florian Schloegl joined the team in May / July 2014.
André El-Ama joined the Team Juli / 2017



            

Raw data

            {
    "_id": null,
    "home_page": "https://mosaik.offis.de",
    "name": "mosaik.Core-SemVer",
    "maintainer": "Bengt L\u00fcers",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "bengt.lueers@gmail.com",
    "keywords": "",
    "author": "Stefan Scherfke",
    "author_email": "mosaik@offis.de",
    "download_url": "",
    "platform": null,
    "description": "Mosaik\n======\n\nMosaik is a simulation compositor for Smart Grid simulations.\n\nIt lets you re-use existing simulators and couple them to simulate large-scale\nSmart Grid scenarios. Mosaik offers powerful mechanisms to specify and compose\nthese scenarios.\n\nVersion: 2.5.2\n\nLicense: LGPL\n\nStatus\n------\n\n.. image:: https://gitlab.com/offis.energy/mosaik/mosaik.Core_SemVer/badges/master/pipeline.svg\n    :target: https://gitlab.com/offis.energy/mosaik/mosaik.Core_SemVer/-/jobs\n    :alt: Pipeline status\n\n.. image:: https://gitlab.com/offis.energy/mosaik/mosaik.Core_SemVer/badges/master/coverage.svg\n    :target: https://gitlab.com/offis.energy/mosaik/mosaik.Core_SemVer/commits/master\n    :alt: Coverage Report\n\n.. image:: https://img.shields.io/librariesio/release/pypi/mosaik.Core_SemVer\n    :target: https://libraries.io/pypi/mosaik.Core_SemVer\n    :alt: Libraries status\n\n.. image:: https://img.shields.io/pypi/l/mosaik.Core_SemVer\n    :target: https://pypi.org/project/mosaik.Core_SemVer/\n    :alt: License badge\n\n.. image:: https://img.shields.io/pypi/v/mosaik.Core_SemVer\n    :target: https://pypi.org/project/mosaik.Core_SemVer/#history\n    :alt: PyPI version\n\n.. image:: https://img.shields.io/pypi/pyversions/mosaik.Core_SemVer\n    :target: https://pypi.org/project/mosaik.Core_SemVer/\n    :alt: Python Versions\n\nExample\n-------\n\nA simple demo scenario with mosaik::\n\n   >>> import mosaik\n   >>>\n   >>> sim_config = {\n   ...     'ExampleSim': {'python': 'example_sim.mosaik:ExampleSim'},\n   ... }\n   >>>\n   >>> def create_scenario(world):\n   ...     simulator_1 = world.start('ExampleSim')\n   ...     simulator_2 = world.start('ExampleSim')\n   ...\n   ...     a_set = [simulator_1.A(init_val=0) for i in range(3)]\n   ...     b_set = simulator_2.B.create(2, init_val=0)\n   ...\n   ...     for i, j in zip(a_set, b_set):\n   ...         world.connect(i, j, ('val_out', 'val_in'))\n   >>>\n   >>> world = mosaik.scenario.World(sim_config)\n   >>> create_scenario(world)\n   >>> world.run(until=2)\n   Progress: 25.00%\n   Progress: 50.00%\n   Progress: 75.00%\n   Progress: 100.00%\n\n\nInstallation\n------------\n\nMosaik requires Python >= 3.4. Use `pip`__ to install it, preferably into\na `virtualenv`__::\n\n    $ pip install mosaik\n\n__ http://pip.readthedocs.org/en/latest/installing.html\n__ http://virtualenv.readthedocs.org/en/latest/\n\nDocumentation, Source Code and Issues\n-------------------------------------\n\nThe documentation is available at https://mosaik.readthedocs.io.\n\nPlease report bugs and ideas for improvement to our `issue tracker`__.\n\n__ https://bitbucket.org/mosaik/mosaik/issues\n\n\nChangelog\n=========\n\n2.5.2 - 2019-11-01\n------------------\n\n- [NEW] Special characters are now allowed in path names\n- [NEW] Compatible to the new versions of networkx\n- [CHANGE] python 3.6, 3.7 and 3.8 are currently supported, python 3.4 and 3.5 not anymore.\n- [FIX] Various minor internal changes\n- [FIX] Various documentation updates and fixes\n\n2.5.1 - 2018-11-29\n------------------\n\n- [NEW] When calling the world.start() command for a simulator, users can now set a predefined\n  value for the posix flag (e.g. True) to prevent automatic detection of the operating system.\n  This facilitates the creation of some co-simulation cases across OS (e.g. Windows and Linux).\n\n2.5.0 - 2018-09-05\n------------------\n\n- [NEW] Connection option \"time_shifted\" added as alternative to async_requests. This will\n  make creating cyclic data dependencies between simulators more usable since usage of\n  set_data with an API implementation will no longer be needed.\n\n2.4.0 - 2017-12-06\n------------------\n\n- [NEW] Compatible to the new versions of networkx, simpy and simpy.io\n- [CHANGE] python 3.4, 3.5 and 3.6 are currently supported python 3.3 is no longer supported\n- [FIX] Various bug fixes\n\n2.3.0 - 2016-04-26\n------------------\n\n- [NEW] Allow passing environment vars to sup processes\n- [FIX] Fixed a bug in the version validation which raised an error when using\n  a floating point for the version\n\n2.2.0 - 2016-02-15\n------------------\n\n- [NEW] API version 2.2: Added an optional \"setup_done()\" method.\n\n- [CHANGE]\u00a0API version validation: The API version is no longer an integer but\n  a \"major.minor\" string.  The *major* part has to match with mosaik's major\n  version. The *minor* part may be lower or equal to mosaik's minor version.\n\n- [FIX] Various minor fixes and stability improvements.\n\n- [FIX]\u00a0Various documentation updates and fixes.\n\n2.1.2 \u2013 2014-10-29\n------------------\n\n- [FIX]\u00a0``World.shutdown()`` now checks if the socket still exists before\n  attempting to close it.\n\n- [FIX]\u00a0Fixed a bug that made the last extra method of a simulator shadow all\n  previous ones.\n\n2.1.1 \u2013 2014-10-28\n------------------\n\n- [NEW] ``World.run()`` now prints a warning if you forget to connect\n  a simulator's entities.\n- [FIX]\u00a0Fixed some problems with the data-flow cache.\n\n2.1 \u2013 2014-10-24\n----------------\n\n- [NEW]\u00a0Mosaik can now perform real-time simulations. Before, this\n  functionality needed to be implemented by simulators. Now it\u2019s just\n  ``World.run(until=x, rt_factor=y)``, where ``rt_factor`` defines the\n  simulation speed relative to the wall-clock time (`issue #24`).\n\n- [NEW]\u00a0Simulators can now expose extra methods via their API that can be\n  called from a mosaik scenario. This allows you to, e.g., store static data in\n  a data base. These extra API methods need to be specified in the simulator\u2019s\n  meta data (`issue #26`_).\n\n- [NEW] ``util.connect_many_to_one()`` helper function.\n\n- [NEW]\u00a0More and better documentation:\n\n  - Tutorial for integrating simulators, control strategies and for creating\n    scenarios.\n\n  - Sim API description\n\n  - Scenario API description\n\n  - Sim Manager documentation\n\n  - Scheduler documentation\n\n  - Discussion of design decisions\n\n  - Logo, colors, CI\n\n- [NEW] Added ``util.sync_call()`` which eases calling proxied methods of\n  a simulator synchronously.\n\n- [CHANGE] The *rel* attribute in the entity description returned by *create()*\n  is now optional.\n\n- [CHANGE]\u00a0Moved proxied methods from ``SimProxy`` to ``SimProxy.proxy`` in\n  order to avoid potential name clashes with other attributes.\n\n- [CHANGE]\u00a0Check a simulator\u2019s models and extra API methods for potential name\n  clashes with the built-in API methods.\n\n- [CHANGE]\u00a0The argument *execution_graph* of ``World`` was renamed to *debug*.\n  The execution graph now also stores the time after a simulation step (in\n  addition to the time before the step).\n\n- [FIX] `issue #22`_: The asynchronous requests *get_data()* and *set_data()*\n  now check if the ``async_requests`` flag was set in ``World.connect()``.\n\n- [FIX] `issue #23`_: *finalize()* is now called for in-process Python\n  simulators.\n\n- [FIX] `issue #27`_: Dramatically improved simulation performance (30 times as\n  fast in some cases) if simulators use different step sizes (e.g. 1 minute and\n  1 hour) by improving some internal data structures.\n\n.. _`issue #22`: https://bitbucket.org/mosaik/mosaik/issue/22/\n.. _`issue #23`: https://bitbucket.org/mosaik/mosaik/issue/23/\n.. _`issue #24`: https://bitbucket.org/mosaik/mosaik/issue/24/\n.. _`issue #26`: https://bitbucket.org/mosaik/mosaik/issue/26/\n.. _`issue #27`: https://bitbucket.org/mosaik/mosaik/issue/27/\n\n\n2.0 \u2013 2014-09-22\n----------------\n\n- Mosaik 2 is a complete rewrite of mosaik 1 in order to improve its\n  maintainability and flexibility.\n\n- Removed features:\n\n  - The *mosl* DSL (including Eclipse xtext and Java) are now gone. Mosaik now\n    only uses Python.\n\n  - Mosaik now longer has executables but is now used as a library.\n\n  - The platform manager is gone.\n\n  - The database is now a separate package, see `mosaik-hdf5`__.\n\n  - The old web UI is gone.\n\n- Mosaik now consists of four core components with the following feature sets:\n\n  - mosaik Sim API\n\n    - The API has bean cleaned up and simplified.\n\n    - Simulators and control strategies share the same API.\n\n    - There are only four calls from mosaik to a simulator: *init*, *create*,\n      *step* and *get_data*.\n\n    - Simulators / processes can make asynchronous requests to mosaik during a\n      step: *get_progress*, *get_related_entities*, *get_data*, *set_data*.\n\n    - ZeroMQ with JSON is replaced by plain network sockets with JSON.\n\n  - Scenarios:\n\n    - Pure Python is now used to describe scenarios. This offers you more\n      flexibility to create complex scenarios.\n\n    - Scenario creation simplified: Start a simulator to get a model factory.\n      Use the factory to create model instances (*entities*). Connect entities.\n      Run simulation.\n\n    - Connection rules are are no based on a primitive *connect* function that\n      only connects two entities with each other. On top of that, any\n      connection strategy can be implemented.\n\n  - Simulation Manager:\n\n    - Simulators written in Python 3 can be executed *in process*.\n\n    - Simulators can be started as external processes.\n\n    - Mosaik can connect to an already running instance of a simulator. This\n      can be used as a replacement for the now gone platform manager.\n\n  - Simulation execution:\n\n    - The simulation is now event-based. No schedule and no synchronization\n      points need to be computed.\n\n    - Simulators can have different and varying step sizes.\n\n- Mosaik ecosystem:\n\n  - A high-level implementation of the mosaik 2 API currently exists for\n    Python__ and Java__.\n\n  - *mosaik-web* is a simple visualization for mosaik simulations. See\n    https://bitbucket.org/mosaik/mosaik-web.\n\n  - *mosaik-pypower* is an adapter for the *PYPOWER* load flow analysis\n    library. See https://bitbucket.org/mosaik/mosaik-pypower and\n    https://github.com/rwl/PYPOWER.\n\n  - *mosaik-csv* and *mosaik-householdsim* are simple demo simulators that you\n    can use to \"simulate\" CSV data sets and load-profile based households. See\n    https://bitbucket.org/mosaik/mosaik-csv and\n    https://bitbucket.org/mosaik/mosaik-householdsim.\n\n  - There is a repository containing a simple demo scenario for mosaik. See\n    https://bitbucket.org/mosaik/mosaik-demo.\n\n\n You can find information about older versions on the `history page`__\n\n__ https://bitbucket.org/mosaik/mosaik-hdf5\n__ https://bitbucket.org/mosaik/mosaik-api-python\n__ https://bitbucket.org/mosaik/mosaik-api-java\n__ https://mosaik.readthedocs.org/en/latest/about/history.html\n\n\nAuthors\n=======\n\nThe original concepts for mosaik were developed by Steffen Sch\u00fctte and Stefan\nScherfke.\n\nThe author of mosaik version 2 is Stefan Scherfke.\n\nOkko Nannen and Florian Schloegl joined the team in May / July 2014.\nAndr\u00e9 El-Ama joined the Team Juli / 2017\n\n\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Mosaik is a flexible Smart-Grid co-simulation framework.",
    "version": "2.5.3rc20220703000527",
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "9916d5babf9271fb4affa44bc6651ea6",
                "sha256": "4e25358e05769ab1f207e50ff4570dfb6c54dce83b570f568379cd31255e6253"
            },
            "downloads": -1,
            "filename": "mosaik.Core_SemVer-2.5.3rc20220703000527-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9916d5babf9271fb4affa44bc6651ea6",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": null,
            "size": 39866,
            "upload_time": "2022-07-03T00:05:29",
            "upload_time_iso_8601": "2022-07-03T00:05:29.127948Z",
            "url": "https://files.pythonhosted.org/packages/60/f8/27071554911b4752bd301f00f0b14cd671d79ea10ee59f952bc92992f10f/mosaik.Core_SemVer-2.5.3rc20220703000527-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2022-07-03 00:05:29",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "lcname": "mosaik.core-semver"
}
        
Elapsed time: 0.50324s