{ "info": { "author": "Sven Eggimann", "author_email": "sven.eggimann@ouce.ox.ac.uk", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python", "Topic :: Scientific/Engineering" ], "description": ".. _readme:\n\nHIgh-Resolution Energy demand model (HIRE)\n====================================\n.. image:: https://img.shields.io/badge/docs-latest-brightgreen.svg\n :target: http://ed.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. image:: https://travis-ci.org/nismod/energy_demand.svg?branch=master \n :target: https://travis-ci.org/nismod/energy_demand\n\n.. image:: https://coveralls.io/repos/github/nismod/energy_demand/badge.svg?branch=master\n :target: https://coveralls.io/github/nismod/energy_demand?branch=master\n\n.. image:: https://zenodo.org/badge/72533183.svg\n :target: https://zenodo.org/badge/latestdoi/72533183\n\n**HIRE** was written in Python (Python>=3.6) and developed at the `Environmental Change Institute,\nUniversity of Oxford `_ within the\nEPSRC sponsored MISTRAL programme, as part of the `Infrastructure Transition\nResearch Consortium `_.\n\nMore information on the model can be found in:\n\n Eggimann, S., Hall, W.J., Eyre, N. (2019): A high-resolution spatio-temporal\n energy demand simulation of large-scale heat pump diffusion to explore the\n potential of heating demand side management. Applied Energy ,236, 997\u20131010.\n `https://doi.org/10.1016/j.apenergy.2018.12.052 `_.\n\n1. Download input data\n---\nMost data for running HIRE are freely available online. However,\nfor certain input data it is necessary to request access (for more information\non all necessary input datasets see `here `_)\n\nAll necessary input data to run HIRE can be downloaded (`here `_), where\nfor the restricted datasets a dummy input dataset is available.\n\nFor data inquires, plese contact sven.eggimann@ouce.ox.ac.uk or `the consortium `_).\nAlso check whether data area available `here `_).\n\n2. Initialising and running the model (local)\n---\nThe recommended installation method is to use `conda `_,\nwhich handles packages and virtual environments. First, create a conda environment\n\n conda create --name energy_demand python=3.6\n\nand activate it\n\n activate energy_demand\n\nIn order to run HIRE, first the model needs to be set up (Section 1.1 or Section 1.1).\n\n2.1 Model Set-Up (with complete data)\n-------------------------------------\n\n1. Add all necessary data into a local directory such as ``path/to/energy_data_folder`` and\n download the energy_demand python code.\n\n Note: Because some data is not open source, the full data needs to be optained\n from the consortium. However, the model can be run with dummy data (see Section 1)\n\n2. Update the paths in the ``wrapperconfig.ini`` file in the config folder\n\n3. Navigate to the folder where the python code is saved. Open a command and type into\n a command line (in a virtual environment):\n \n ``python setup.py develop``\n\n4. Install HIRE from within the console with the command\n\n ``energy_demand setup -d path/to/energy_data_folder``\n\n The ``path/to/energy_data_folder`` is the path to the location with\n the necessary data to run the model.\n\n Note: The ``setup`` command generates new subfolders in the \n ``energy_data_folder``.\n\n\n2.2 Alternative Model Set-Up (with restricted dummy data)\n---------------------------------------------\n\n1. Add the minimum data requirements into a local directory as ``path/to/energy_data_folder`` and\n download the energy_demand python code.\n\n2. Update the paths in the ``wrapperconfig.ini`` file in the config folder\n\n3. Navigate to the folder where the python code is saved. Open a command and type into\n a command line (in a virtual environment):\n\n ``python setup.py develop``\n\n4. Install HIRE from within the console with the command\n\n ``energy_demand minimal_setup -d path/to/energy_data_folder``\n\n Example: energy_demand minimal_setup -d C:/Users/fred1234/data_energy_demand\n\n The ``path/to/energy_data_folder`` is the path to the location with\n the necessary minimum dummy data to run the model.\n\n Note: The ``minimal_setup`` command generates new folders in the \n ``energy_data_folder``.\n\n3. Running HIRE with smif\n---\n\n1. Set up the model as outlined in 1.1 'Model Set-Up'\n\n2. Install and set-up smif (see instructions `here `_)\n\n3. pip install ``energy_demand``\n\n4. Run the energy demand model for a scenario with \n the command: ``smif run NAME_SCENARIO``\n\n For an overview of all possible scenario and their explanation,\n see here `here `_\n\n To change the logger level of an individual sector model with smif, type:\n\n ``smif -v run modelrun_id`` or ``smif -vv run modelrun_id``\n\n4. Generating plots based from simulation results\n---\nEvery time a model gets run, the specific model simulation results\nare stored in the result folder named after the timestamp of the model execution.\n\nIn order to generate plots of the results, the scripts in the 'processing'\nfolder needs to be used. Proceed as follows:\n\n1. Select all generated result folders for which you want to generate plots.\n\n2. Copy them into an empty folder.\n\n3. Configure the 'energy_demand/processing/multiple_scenarios.py' file,\n namely the arguments of the process_result_multi_scen() function,\n and execute the function.\n\n This generates all plots in the invidual result folders.\n\n Note:\n In the 'process_result_multi_scen' function all plots\n which should be generated can be configured", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://www.itrc.org.uk", "keywords": "", "license": "mit", "maintainer": "", "maintainer_email": "", "name": "energy-demand", "package_url": "https://pypi.org/project/energy-demand/", "platform": "", "project_url": "https://pypi.org/project/energy-demand/", "project_urls": { "Homepage": "http://www.itrc.org.uk" }, "release_url": "https://pypi.org/project/energy-demand/0.80/", "requires_dist": null, "requires_python": "", "summary": "HIgh Resolution Energy (HIRE)", "version": "0.80" }, "last_serial": 5103846, "releases": { "0.4.3": [ { "comment_text": "", "digests": { "md5": "7b93838439c8163b7e2b3d6c77a25127", "sha256": "f742e7e0a20cca23ead782b18b3b68498b15361dde7ac1840ad7fddb5f68b718" }, "downloads": -1, "filename": "energy_demand-0.4.3.tar.gz", "has_sig": false, "md5_digest": "7b93838439c8163b7e2b3d6c77a25127", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8286320, "upload_time": "2018-04-27T11:20:15", "url": "https://files.pythonhosted.org/packages/ef/2c/6b9f0995e3647852f6a8e4db53b68104682067e6dbaddeb81c67839500ad/energy_demand-0.4.3.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "6bc92604c4c33bf957fc77b3c23db7c9", "sha256": "b7f37840d6e45f6baab42078bbae25770783b88fc0e01c5b08ab239c73f261df" }, "downloads": -1, "filename": "energy_demand-0.4.5.tar.gz", "has_sig": false, "md5_digest": "6bc92604c4c33bf957fc77b3c23db7c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10353782, "upload_time": "2018-05-08T15:26:13", "url": "https://files.pythonhosted.org/packages/80/a4/f34aa36a75e23e71302d05d7792ea56116a4bfe43a1f0d86cb4bcd1f1cb0/energy_demand-0.4.5.tar.gz" } ], "0.4.6": [ { "comment_text": "", "digests": { "md5": "580da9b4e2231b40829455ef4678ec73", "sha256": "c4206a179d4c145d5dfabf9b911b120a07a0e0417ecacc840aefc47b891288f2" }, "downloads": -1, "filename": "energy_demand-0.4.6.tar.gz", "has_sig": false, "md5_digest": "580da9b4e2231b40829455ef4678ec73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10130022, "upload_time": "2018-06-19T08:05:05", "url": "https://files.pythonhosted.org/packages/6c/ed/b953d617fc7d09b3ecdff1449a272a55a8c4d1aa85b27004a9edb4ccbde0/energy_demand-0.4.6.tar.gz" } ], "0.4.8": [ { "comment_text": "", "digests": { "md5": "7961b05d0726bac88fe02ce04bc196c1", "sha256": "74a8528046298c9b8f86b8fdea51a846a2dd0d5f297cb47fbc07974d049a89a1" }, "downloads": -1, "filename": "energy_demand-0.4.8.tar.gz", "has_sig": false, "md5_digest": "7961b05d0726bac88fe02ce04bc196c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13774670, "upload_time": "2018-09-03T09:06:21", "url": "https://files.pythonhosted.org/packages/02/e5/94567317ef067aa535e6436a242714d298f5046e6cafd958d8492f1eaa33/energy_demand-0.4.8.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "35ddd9438fdb53f307729fa74fc55298", "sha256": "3a9a5ff83fa4a2a1242d0fd293f6c5798142517c6de65f9b6a10f62703668839" }, "downloads": -1, "filename": "energy_demand-0.5.tar.gz", "has_sig": false, "md5_digest": "35ddd9438fdb53f307729fa74fc55298", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13780535, "upload_time": "2018-09-18T11:03:38", "url": "https://files.pythonhosted.org/packages/0a/08/0878c3e0ea64e19177bd52e60b18be44c5db3c550d85eb7f50f018345d73/energy_demand-0.5.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "ce2798d4e341e3ebc9252ea396805cbd", "sha256": "3361228a13e0e99202c1e68c0a483fcc13d5e895bdbcff6244b1e283c96a4fb5" }, "downloads": -1, "filename": "energy_demand-0.5.1.tar.gz", "has_sig": false, "md5_digest": "ce2798d4e341e3ebc9252ea396805cbd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13780671, "upload_time": "2018-09-17T15:24:29", "url": "https://files.pythonhosted.org/packages/89/dc/d0e68932c40ced061f0d03e42f780e5f1f2a615a8cc0d5e4633227265ddd/energy_demand-0.5.1.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "94a01d023e9ac8fd23635b85510dcb69", "sha256": "6f6aa2333dfc6bcd58593d8dc171989e24eefd159b9525599df755a82e1577e9" }, "downloads": -1, "filename": "energy_demand-0.5.3.tar.gz", "has_sig": false, "md5_digest": "94a01d023e9ac8fd23635b85510dcb69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13784776, "upload_time": "2018-09-24T12:46:13", "url": "https://files.pythonhosted.org/packages/ad/62/aff7f0d345b54450dd4e016e73f7ffc5db6df8a38c62b864435608554fdf/energy_demand-0.5.3.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "d6917f2eb6eeb754fec46e601d985731", "sha256": "d40aac5120ccb8cbc194ae788e9ad72b1675580b0ce9a78e0b7b91c7f2ae173b" }, "downloads": -1, "filename": "energy_demand-0.6.2.tar.gz", "has_sig": false, "md5_digest": "d6917f2eb6eeb754fec46e601d985731", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13793050, "upload_time": "2018-10-04T14:10:33", "url": "https://files.pythonhosted.org/packages/1f/2d/159f397aaf950f02701935614e2213e2e0967c6cfe56e9421252d7de011e/energy_demand-0.6.2.tar.gz" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "002faaddab51bafb8fa7ba4adf43f38b", "sha256": "bf9c8aae4d136779f54eb49fa0746d7014f35255101c48828b19177ac1e39693" }, "downloads": -1, "filename": "energy_demand-0.6.3.tar.gz", "has_sig": false, "md5_digest": "002faaddab51bafb8fa7ba4adf43f38b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13796614, "upload_time": "2018-10-09T15:19:31", "url": "https://files.pythonhosted.org/packages/68/30/31997eb675091056a9635ddbcd0e078bbf120f4abf2b735f6c3f12cfed18/energy_demand-0.6.3.tar.gz" } ], "0.6.8": [ { "comment_text": "", "digests": { "md5": "c12367e1ffb0510f3923e678867514db", "sha256": "961e371247b0d8452e9778a2eed57fc9dbfcbdcd2a922f17cc16e6a9f0c4de54" }, "downloads": -1, "filename": "energy_demand-0.6.8.tar.gz", "has_sig": false, "md5_digest": "c12367e1ffb0510f3923e678867514db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13807401, "upload_time": "2018-11-01T13:22:49", "url": "https://files.pythonhosted.org/packages/be/be/39896012993bbf8f68af7386ee09b879d5451ed4fce8c2983997d37f8ccc/energy_demand-0.6.8.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "7ce4f2f9505e9bfe73662a4407832982", "sha256": "5451ed623574c09fdc6d0980bcc090286685374ad599095310d517103f90079e" }, "downloads": -1, "filename": "energy_demand-0.7.0.tar.gz", "has_sig": false, "md5_digest": "7ce4f2f9505e9bfe73662a4407832982", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13808069, "upload_time": "2018-11-07T15:17:14", "url": "https://files.pythonhosted.org/packages/ed/36/7621d818c1c535c023b2cb3700a8fd6067f4efc5a5a5a91bc0b18a47698c/energy_demand-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "30ef6b50fd5325d94d1bb00a1321e646", "sha256": "792ea7b2d2682fa62e404d76965ee992a8b3e0c45fef544d11762db39a1fc51a" }, "downloads": -1, "filename": "energy_demand-0.7.1.tar.gz", "has_sig": false, "md5_digest": "30ef6b50fd5325d94d1bb00a1321e646", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13800709, "upload_time": "2018-11-16T09:07:13", "url": "https://files.pythonhosted.org/packages/17/f4/9a0cd1200404afd050b2f130472912f77dc59e35e2a3ab122830d1e83fa6/energy_demand-0.7.1.tar.gz" } ], "0.7.5": [ { "comment_text": "", "digests": { "md5": "52d0ed5c5f3966b7440b503feca21003", "sha256": "6016f520486bb9be3aae7771d3d7fc66d83d9bb9cc7194585c53d4780184b68f" }, "downloads": -1, "filename": "energy_demand-0.7.5.tar.gz", "has_sig": false, "md5_digest": "52d0ed5c5f3966b7440b503feca21003", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13777059, "upload_time": "2018-12-06T10:05:48", "url": "https://files.pythonhosted.org/packages/50/cf/bfa9c98dc312e48e433e4ec472e91dec3568d6f9e0e7e458c23ed4570cb1/energy_demand-0.7.5.tar.gz" } ], "0.7.6": [ { "comment_text": "", "digests": { "md5": "4239c9ec8656bd988f51eaf0fc97d5b2", "sha256": "3327e6da8a0a79573b230b80b240306683b3a9f82a4a082ae337e0da0beca4e9" }, "downloads": -1, "filename": "energy_demand-0.7.6.tar.gz", "has_sig": false, "md5_digest": "4239c9ec8656bd988f51eaf0fc97d5b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13778566, "upload_time": "2018-12-07T09:29:09", "url": "https://files.pythonhosted.org/packages/52/87/10de862345b98dd10816f2341620d19cf68c97e435c15b6be2475051e383/energy_demand-0.7.6.tar.gz" } ], "0.8.6": [ { "comment_text": "", "digests": { "md5": "ffcf03a88b66ae3ced92512d5123ad62", "sha256": "a61a85c71e0ad67231c5955da90b6e4a3bfde9806141137c989166d911aad574" }, "downloads": -1, "filename": "energy_demand-0.8.6.tar.gz", "has_sig": false, "md5_digest": "ffcf03a88b66ae3ced92512d5123ad62", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6675480, "upload_time": "2019-02-27T11:20:58", "url": "https://files.pythonhosted.org/packages/61/72/b6ec29864f6b1a9eb07724fd70f2eb9fc41a705692fe01d3b3015db70d05/energy_demand-0.8.6.tar.gz" } ], "0.8.7": [ { "comment_text": "", "digests": { "md5": "d99251d17cd42ca6f9f0a198d124629a", "sha256": "d53e97ddb1f1708016b0c95258aa37360b1e21e82e0e812e6cff4ee23f411784" }, "downloads": -1, "filename": "energy_demand-0.8.7.tar.gz", "has_sig": false, "md5_digest": "d99251d17cd42ca6f9f0a198d124629a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6675525, "upload_time": "2019-02-28T10:31:41", "url": "https://files.pythonhosted.org/packages/87/b6/93067a2b85c42564303dfae5203b84204fd49d3f9ee4a74a12b38102f864/energy_demand-0.8.7.tar.gz" } ], "0.8.8": [ { "comment_text": "", "digests": { "md5": "8338dd1babd7905acd7ff6505fb1bf7b", "sha256": "bd4af70f762c331557b6c5f88fb9acb2699c4fdff624e66b58401e31b67d7731" }, "downloads": -1, "filename": "energy_demand-0.8.8.tar.gz", "has_sig": false, "md5_digest": "8338dd1babd7905acd7ff6505fb1bf7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6676031, "upload_time": "2019-03-04T12:35:05", "url": "https://files.pythonhosted.org/packages/b3/95/5a17852f4ad019997386c7538b6d3e2ca5c99a8029e43f1fb13a9525520b/energy_demand-0.8.8.tar.gz" } ], "0.8.9": [ { "comment_text": "", "digests": { "md5": "ca528261568c60a084af94e7b291d5bb", "sha256": "89de7a52d5e9749dbc75d8142b52df8ae8f0a8acf38358130a689254af0149dc" }, "downloads": -1, "filename": "energy_demand-0.8.9.tar.gz", "has_sig": false, "md5_digest": "ca528261568c60a084af94e7b291d5bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6674615, "upload_time": "2019-03-05T15:40:35", "url": "https://files.pythonhosted.org/packages/5e/21/a2e36084f2827baaaf254f647ce1b0dcf3d8df7113fb03076c9720ac418b/energy_demand-0.8.9.tar.gz" } ], "0.80": [ { "comment_text": "", "digests": { "md5": "8471fa638cc3cbcf323cfb540132fc07", "sha256": "a3bdbba15e2195a9912dbb5b05c47c3034dc95e1278082bebdb3f2506dc28865" }, "downloads": -1, "filename": "energy_demand-0.80.tar.gz", "has_sig": false, "md5_digest": "8471fa638cc3cbcf323cfb540132fc07", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6666270, "upload_time": "2018-12-19T14:51:01", "url": "https://files.pythonhosted.org/packages/b2/76/5811d501dcf3a26a3238067fc3de6cbf587f1eb8b5f8d6cbe60b96573edb/energy_demand-0.80.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "9802fd9cae198cc726070f73c556b96d", "sha256": "67ad42779d25abf162526b2b2c5a67001c643f309ee2183d495bfc3daf9b9c44" }, "downloads": -1, "filename": "energy_demand-0.9.0.tar.gz", "has_sig": false, "md5_digest": "9802fd9cae198cc726070f73c556b96d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6674985, "upload_time": "2019-03-06T16:48:34", "url": "https://files.pythonhosted.org/packages/7b/2d/f896e55bcd60e2a93a93a636d2f4728323560333e77d19932b2719b74eeb/energy_demand-0.9.0.tar.gz" } ], "0.9.3": [ { "comment_text": "", "digests": { "md5": "32d1f23739ba8ab605f2f2debf4abadb", "sha256": "9709d8956a06ed822cc6ddca7c17f7e4d7c4825a08d32e727257ebd579b59617" }, "downloads": -1, "filename": "energy_demand-0.9.3.tar.gz", "has_sig": false, "md5_digest": "32d1f23739ba8ab605f2f2debf4abadb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6670464, "upload_time": "2019-03-18T15:33:05", "url": "https://files.pythonhosted.org/packages/cd/ca/32f6a04622bbab327a3f630d4f5602d19f507482b31f0445529f53f0abe0/energy_demand-0.9.3.tar.gz" } ], "0.9.4": [ { "comment_text": "", "digests": { "md5": "aab081b410cd94b749b0e3775a1c9d32", "sha256": "f22612099becba96c3d25deb6827a464e2c78df18fafeb3286f971179a03d1de" }, "downloads": -1, "filename": "energy_demand-0.9.4.tar.gz", "has_sig": false, "md5_digest": "aab081b410cd94b749b0e3775a1c9d32", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6672944, "upload_time": "2019-03-29T12:29:30", "url": "https://files.pythonhosted.org/packages/3c/47/07aa63c8f53a0fc479cbc1103e3a4a4ee2b19ca80d0c7efebcbdbae9bf8e/energy_demand-0.9.4.tar.gz" } ], "0.9.5": [ { "comment_text": "", "digests": { "md5": "1edb0741ee0ff210a67118a045acd383", "sha256": "a922711c59ae6a55d1ff051e46739ef3407a2215011f301b5abc04a07e8e93ba" }, "downloads": -1, "filename": "energy_demand-0.9.5.tar.gz", "has_sig": false, "md5_digest": "1edb0741ee0ff210a67118a045acd383", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6672837, "upload_time": "2019-04-02T11:24:11", "url": "https://files.pythonhosted.org/packages/9f/dd/515369f770d3ae25fab5618895239812c6a8f1faf6ec2db16cb15415986f/energy_demand-0.9.5.tar.gz" } ], "0.9.6": [ { "comment_text": "", "digests": { "md5": "94f087fa399e0c2dce89034ae07f8970", "sha256": "5ec23645b21d0820d42d5d9ffc9470d644b4d46b178903b017244fab7f486c6c" }, "downloads": -1, "filename": "energy_demand-0.9.6.tar.gz", "has_sig": false, "md5_digest": "94f087fa399e0c2dce89034ae07f8970", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6673113, "upload_time": "2019-04-05T13:59:59", "url": "https://files.pythonhosted.org/packages/34/9d/6b07230a4756afae42a368e585a4c44738665867300d47a4abffff80669f/energy_demand-0.9.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8471fa638cc3cbcf323cfb540132fc07", "sha256": "a3bdbba15e2195a9912dbb5b05c47c3034dc95e1278082bebdb3f2506dc28865" }, "downloads": -1, "filename": "energy_demand-0.80.tar.gz", "has_sig": false, "md5_digest": "8471fa638cc3cbcf323cfb540132fc07", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6666270, "upload_time": "2018-12-19T14:51:01", "url": "https://files.pythonhosted.org/packages/b2/76/5811d501dcf3a26a3238067fc3de6cbf587f1eb8b5f8d6cbe60b96573edb/energy_demand-0.80.tar.gz" } ] }