{"id":13724272,"url":"https://github.com/DrafProject/elmada","last_synced_at":"2025-05-07T17:33:50.667Z","repository":{"id":57426066,"uuid":"368798244","full_name":"DrafProject/elmada","owner":"DrafProject","description":"Dynamic electricity carbon emission factors and prices for Europe","archived":false,"fork":false,"pushed_at":"2024-08-28T13:06:59.000Z","size":26867,"stargazers_count":26,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-29T13:43:30.790Z","etag":null,"topics":["carbon-emissions","demand-response","electricity-market","electricity-prices","energy-system-modeling","marginal-emissions","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DrafProject.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-05-19T08:31:56.000Z","updated_at":"2024-12-24T22:46:14.000Z","dependencies_parsed_at":"2024-11-05T22:32:05.411Z","dependency_job_id":"46c59106-661f-4096-b93b-628b9a8be388","html_url":"https://github.com/DrafProject/elmada","commit_stats":{"total_commits":127,"total_committers":1,"mean_commits":127.0,"dds":0.0,"last_synced_commit":"9af3cf4496ea10ff74e087283974813d6341eade"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DrafProject%2Felmada","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DrafProject%2Felmada/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DrafProject%2Felmada/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DrafProject%2Felmada/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DrafProject","download_url":"https://codeload.github.com/DrafProject/elmada/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252058722,"owners_count":21688085,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["carbon-emissions","demand-response","electricity-market","electricity-prices","energy-system-modeling","marginal-emissions","python"],"created_at":"2024-08-03T01:01:53.235Z","updated_at":"2025-05-07T17:33:50.623Z","avatar_url":"https://github.com/DrafProject.png","language":"Python","funding_links":[],"categories":["Emissions"],"sub_categories":["Carbon Offsets and Trading"],"readme":"\u003cimg src=\"doc/images/elmada_logo.svg\" width=\"450\" alt=\"elmada logo\"\u003e\n\n---\n\n# elmada: Dynamic electricity carbon emission factors and prices for Europe\n\n**Status:**\n[![PyPI](https://img.shields.io/pypi/v/elmada?color=success\u0026label=pypi%20package)](https://pypi.python.org/pypi/elmada)\n[![CI](https://github.com/DrafProject/elmada/actions/workflows/CI.yml/badge.svg)](https://github.com/DrafProject/elmada/actions/workflows/CI.yml)\n[![CI with conda](https://github.com/DrafProject/elmada/actions/workflows/CI_conda.yml/badge.svg)](https://github.com/DrafProject/elmada/actions/workflows/CI_conda.yml)\n[![codecov](https://codecov.io/gh/DrafProject/elmada/branch/main/graph/badge.svg?token=EOKKJG48A9)](https://codecov.io/gh/DrafProject/elmada)\n\n**Usage:**\n[![python](https://img.shields.io/badge/python-_3.9|_3.10|_3.11-blue?logo=python\u0026logoColor=white)](https://github.com/DrafProject/elmada)\n[![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0)\n[![status](https://joss.theoj.org/papers/10.21105/joss.03625/status.svg)][JOSS paper]\n[![Downloads](https://pepy.tech/badge/elmada)](https://pepy.tech/project/elmada)\n\n**Contribution:**\n[![Imports: isort](https://img.shields.io/badge/%20imports-isort-%231674b1)](https://pycqa.github.io/isort/)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Gitter](https://badges.gitter.im/DrafProject/elmada.svg)](https://gitter.im/DrafProject/elmada)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](CODE_OF_CONDUCT.md)\n\nThe open-source Python package **elmada** provides electricity carbon emission factors and wholesale prices for European countries.\nThe target group includes modelers of distributed energy hubs who need **el**ectricity **ma**rket **da**ta (short: **elmada**), e.g., to evaluate the environmental effect of demand response.\n**elmada** is part of the [Draf Project] but can be used as a standalone package.\n\n\u003cimg src=\"https://github.com/DrafProject/elmada/raw/main/doc/images/elmada_scheme_scribble.svg\" width=\"650\" alt=\"Elmada scheme scribble\"\u003e\n\n## Features\n\n* __Dynamic electricity Carbon Emission Factors (CEFs)__ are calculated depending on country and year in up to quarter-hourly resolution.\nThere are two types of CEFs: __Grid Mix Emission Factors (XEFs)__ and __Marginal Emission Factors (MEFs)__.\nWhile XEFs reflect the carbon footprint of an electricity use (attributional approach), MEFs estimate the carbon impact (consequential approach) of a change in electricity demand (Learn more in the [white paper][CEFWhitepaper] from Tomorrow and WattTime).\nChoose between\n  * __XEFs__ from fuel type-specific [ENTSO-E] electricity generation data only for Germany (`XEF_EP`),\n  * and __XEFs__ \u0026 __MEFs__ from merit order based simulations for [30 European Countries][Europe30] (`XEF_PP`, `XEF_PWL`, `MEF_PP`, `MEF_PWL`).\n  The according Power Plant method (`PP`) and Piecewise Linear method (`PWL`) are described in the open-access [Applied Energy paper].\n  The data used depend on the method chosen, see [scheme below](#cef-scheme).\n\n* __Wholesale electricity prices__ are provided for European countries. You can choose between the real historical [ENTSO-E] data (`hist_EP`) or the simulation results of the `PP` / `PWL` method.\n\n* Other interesting market data such as merit order lists \u0026 plots, fuel-specific generation data, or power plant lists are provided as a by-product of the CEF calculations.\n\n## Methodology\n\nWith the `XEF_EP` method, XEFs are calculated by multiplying the share matrix *S* (fuel type specific share of electricity generation per time step from [ENTSO-E]) with the intensity vector *ε*  (fuel type specific life cycle carbon emission intensities from [Tranberg.2019]):\n\n\u003cimg src=\"https://render.githubusercontent.com/render/math?math=\\mathrm{XEF}^\\mathrm{EP}_{t} = S_{t,f}\\cdot\\varepsilon_f\"\u003e\n\nThe methods `PP`, `PWL`, and `PWLv` are explained in the [Applied Energy paper]. Here is an overview:\n \u003c!-- Converted from pptx via https://convertio.co/ --\u003e\n \u003cimg src=\"https://github.com/DrafProject/elmada/raw/main/doc/images/scheme_CEF_calculation.svg\" id='cef-scheme' width=\"900\" alt=\"scheme_CEF_calculation\"\u003e\n\n# Data\n\n## Geographic scope\n\nIn `elmada`, two-letter country codes ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)) are used.\n\nThe countries supported by `elmada` can be seen in the map below which is the output of `elmada.plots.cef_country_map(year=2020, method=\"XEF_EP\")`.\n\n\u003cimg src=\"doc/images/cef_country_map.svg\" width=\"600\" alt=\"cef_country_map\"\u003e\n\nIn the [Usage section](#usage) they are referred to as Europe30.\nThey include:\n\n* 20 countries analyzed in the [Applied Energy paper]: AT, BE, CZ, DE, DK, ES, FI, FR, GB, GR, HU, IE, IT, LT, NL, PL, PT, RO, RS, SI\n* 8 countries with only [one reported fossil fuel type][APENsupplPage8]: BA, CH, EE, LV, ME, MK, NO, SE\n* 2 countries where installed generation capacity data for 2019 were only available after the publication of the [Applied Energy paper]: BG, SK\n\n## Data modes\n\nYou can use **elmada** in two data modes which can be set with `elmada.set_mode(mode=\u003cMODE\u003e)`:\n\n* `mode=\"safe\"` (default):\n  * Pre-cached data for 4 years and 20 countries are used. The data are described in the [Applied Energy paper].\n  * The years are 2017 to 2020 and the countries AT, BE, CZ, DE, DK, ES, FI, FR, GB, GR, HU, IE, IT, LT, NL, PL, PT, RO, RS, SI.\n  * The data is available in the space-saving and quick-to-read [Parquet format] under [.../safe_cache].\n* `mode=\"live\"`:\n  * Up-to-date data are retrieved on demand and are cached to an OS-specific directory, see `elmada.paths.CACHE_DIR`. A symbolic link to it can be conveniently created by executing `elmada.make_symlink_to_cache()`.\n  * Available years are 2017 until the present.\n  * Slow due to API requests.\n  * Requires valid API keys of ENTSO-E, Morph, Quandl, see [table below](#data-sources).\n\n## Data sources\n\n| Description | Local data location | Source | Channel | Involved in |\n|-|-|-|-|-|\n| Generation time series \u0026 installed generation capacities | [.../safe_cache] or `CACHE_DIR` | [ENTSO-E] | 🔌 on-demand-retrieval via [EntsoePandasClient] (requires valid [ENTSO-E API key]) | CEFs via `EP`, `PP`, `PWL`, `PWLv` |\n| Carbon prices (EUA)| [.../safe_cache] or `CACHE_DIR` | [Sandbag] \u0026 [ICE] | 🔌 on-demand-retrieval via [Quandl] (requires valid [Quandl API key]) | CEFs via `PP`, `PWL`, `PWLv` |\n| Share of CCGT among gas power plants | [.../safe_cache] or `CACHE_DIR` | [GEO] | 🔌 on-demand-download via [Morph] (requires valid [Morph API key])| CEFs via `PWL`, `PWLv` |\n| (Average) fossil power plants sizes | [.../safe_cache] or `CACHE_DIR` | [GEO] | 🔌 on-demand-scraping via [BeautifulSoup4] | CEFs via `PWL`, `PWLv` |\n| German fossil power plant list with efficiencies | [.../safe_cache] or `CACHE_DIR` | [OPSD] | 🔌 on-demand-download from [here][opsd_download] | CEFs via `PP`, `PWL`, `PWLv` |\n| Transmission \u0026 distribution losses | [.../worldbank] | [Worldbank] | 💾 manual download from [here][wb] | CEFs via `PP`, `PWL`, `PWLv` |\n| Fuel prices for 2015 (+ trends) | [.../from_other.py] (+ [.../destatis]) | [Konstantin.2017] (+ [DESTATIS]) | 🔢 hard-coded values (+ 💾 manual download from [here][destatis_download]) | CEFs via `PP`, `PWL`, `PWLv` |\n| Fuel type-specific carbon emission intensities | [.../from_other.py] \u0026 [.../tranberg] | [Quaschning] \u0026 [Tranberg.2019] | 🔢 hard-coded values | CEFs via `EP`, `PP`, `PWL`, `PWLv` |\n\n## Time zones\n\nThe data is in local time since the [Draf Project] focuses on the modeling of individual local energy hubs.\nStandard time is used i.e. daylight saving time is ignored.\nAlso see [this table](https://github.com/DrafProject/marginal-emission-factors/blob/main/README.md#time-zones) of the time zones used.\n\n# Installation\n\n## Using `pip`\n\n```sh\npython -m pip install elmada\n```\n\nNOTE: Read [here](https://snarky.ca/why-you-should-use-python-m-pip/) why you should use `python -m pip` instead of `pip`.\n\n## From source using conda\n\nFor a conda environment including a full editable **elmada** version do the following steps.\n\nClone the source repository:\n\n```sh\ngit clone https://github.com/DrafProject/elmada.git\ncd elmada\n```\n\nCreate an conda environment based on `environment.yml` and install an editable local **elmada** version:\n\n```sh\nconda env create\n```\n\nActivate the environment:\n\n```sh\nconda activate elmada\n```\n\n## From source without using conda\n\n### For Unix\n\n```sh\ngit clone https://github.com/DrafProject/elmada.git\ncd elmada\npython3 -m venv env\nsource env/bin/activate\npython -m pip install -e .[dev]\n```\n\n### For Windows\n\n```sh\ngit clone https://github.com/DrafProject/elmada.git\ncd elmada\npy -m venv env\n.\\env\\Scripts\\activate\npy -m pip install -e .[dev]\n```\n\n# Tests\n\nThis should always work:\n\n```sh\npytest -m=\"not apikey\"\n```\n\nThis works only if API keys are set as described [below](#optional-set-your-api-keys-and-go-live-mode):\n\n```sh\npytest\n```\n\n# Usage\n\n```py\nimport elmada\n```\n\n## OPTIONAL: Set your API keys and go live mode\n\n```py\nelmada.set_api_keys(entsoe=\"YOUR_ENTSOE_KEY\", morph=\"YOUR_MORPH_KEY\", quandl=\"YOUR_QUANDL_KEY\")\n# NOTE: API keys are stored in an OS-dependent config directory for later use.\n\nelmada.set_mode(\"live\")\n```\n\n## Carbon Emission factors\n\n```py\nelmada.get_emissions(year=2019, country=\"DE\", method=\"MEF_PWL\", freq=\"60min\", use_datetime=True)\n```\n\n... returns marginal emission factors calculated by the `PWL` method with hourly datetime index:\n\n```sh\n2019-01-01 00:00:00     990.103492\n2019-01-01 01:00:00     959.758367\n                          ...\n2019-12-31 22:00:00    1064.122146\n2019-12-31 23:00:00    1049.852079\nFreq: 60T, Name: MEFs, Length: 8760, dtype: float64\n```\n\nThe `method` argument of `get_emissions()` takes strings that consists of two parts seperated by an underscore.\nThe first part is the type of emission factor: grid mix emission factors (`XEF`) or marginal emission factors (`MEF`).\nThe second part determines the calculation method: power plant method (`PP`), piecewise linear method (`PWL`),  or piecewise linear method in validation mode (`PWLv`).\n\nThe first part can be omitted (`_PP`, `_PWL`, `_PWLv`) to return a DataFrame that includes additional information.\n\n```py\nelmada.get_emissions(year=2019, country=\"DE\", method=\"_PWL\")\n```\n\n... returns all output from the PWL method:\n\n```sh\n      residual_load  total_load marginal_fuel  efficiency  marginal_cost         MEFs        XEFs\n0          21115.00    51609.75       lignite    0.378432      40.889230   990.103492  204.730151\n1          18919.50    51154.50       lignite    0.390397      39.636039   959.758367  164.716687\n...             ...         ...           ...         ...            ...          ...         ...\n8758       27116.00    41652.00       lignite    0.352109      43.946047  1064.122146  388.542911\n8759       25437.75    39262.75       lignite    0.356895      43.356723  1049.852079  376.009477\n[8760 rows x 7 columns]\n```\n\nAdditionally, XEFs can be calculated from historic fuel type-specific generation data (`XEF_EP`).\n\nHere is an overview of valid `method` argument values:\n\n| `method` | Return type | Return values | Restriction |\n| --: | -- | -- | -- |\n| `XEF_PP` | Series | XEFs using PP method | DE |\n| `XEF_PWL` | Series | XEFs using PWL method | [Europe30] |\n| `XEF_PWLv` | Series | XEFs using PWLv method | DE |\n| `MEF_PP` | Series | MEFs from PP method | DE |\n| `MEF_PWL` | Series | MEFs using PWL method | [Europe30] |\n| `MEF_PWLv` | Series | MEFs using PWLv method | DE |\n| `_PP` | Dataframe | extended data for PP method | DE |\n| `_PWL` | Dataframe | extended data for PWL method | [Europe30] |\n| `_PWLv` | Dataframe | extended data for PWLv method | DE |\n| `XEF_EP` | Series | XEFs using fuel type-specific generation data from [ENTSO-E] | [Europe30] |\n\nYou can plot the carbon emission factors with\n\n```py\nelmada.plots.cefs_scatter(year=2019, country=\"DE\", method=\"MEF_PP\")\n```\n\n\u003cimg src=\"https://github.com/DrafProject/elmada/raw/main/doc/images/cefs_scatter.png\" width=\"600\" alt=\"CEFs\"\u003e\n\n## Wholesale prices\n\n```py\nelmada.get_prices(year=2019, country=\"DE\", method=\"hist_EP\")\n```\n\n```sh\n0       28.32\n1       10.07\n        ...  \n8758    38.88\n8759    37.39\nLength: 8760, dtype: float64\n```\n\nPossible values for the `method` argument of `get_prices()` are:\n\n| `method` | Description | Restriction |\n| --: | -- | -- |\n| `PP` | Using the power plant method | DE |\n| `PWL` | Using piecewise linear method | [Europe30] |\n| `PWLv` | Using piecewise linear method in validation mode | DE |\n| `hist_EP` | Using historic [ENTSO-E] data | [Europe30] without BA, ME, MK|\n| `hist_SM` | Using historic [Smard] data | used only as backup for DE, 2015 and 2018 |\n\n## Merit order\n\n```py\nelmada.plots.merit_order(year=2019, country=\"DE\", method=\"PP\")\n```\n\n... plots the merit order:\n\n\u003cimg src=\"https://github.com/DrafProject/elmada/raw/main/doc/images/merit_order.svg\" width=\"600\" alt=\"merit_order\"\u003e\n\n```py\nelmada.get_merit_order(year=2019, country=\"DE\", method=\"PP\")\n```\n\n... returns the merit order as DataFrame with detailed information on individual power plant blocks.\n\n## Pre-processed data\n\nThe following table describes additional `elmada` functions that provide pre-processed data.\nKeyword arguments are for example `kw = dict(year=2019, freq=\"60min\", country=\"DE\")`.\n\n| `elmada.` function call | Return type (Dimensions) | Return value | Usage in `elmada` | Used within |\n| -- | -- | -- | -- | -- |\n| `get_el_national_generation(**kw)` | DataFrame (time, fuel type) | National electricity generation | Share matrix *S* | `XEF_EP` method |\n| `get_el_national_generation(**kw).sum(axis=1)` | Series (time) | Total national electricity generation | Proxy for the total load | XEFs calculations |\n| `get_residual_load(**kw)` | Series (time) | Conventional national generation | Proxy for the residual load (see [scheme above](#methodology)) | `PP`, `PWL` and `PWLv`|\n\n# Contributing\n\nContributions in any form are welcome! To contribute changes, please have a look at our [contributing guidelines](CONTRIBUTING.md).\n\nIn short:\n\n1. Fork the project and create a feature branch to work on in your fork (`git checkout -b new-feature`).\n1. Commit your changes to the feature branch and push the branch to GitHub (`git push origin my-new-feature`).\n1. On GitHub, create a new pull request from the feature branch.\n\n# Citing elmada\n\nIf you use **elmada** for academic work please cite this paper published in the Journal for Open Source Software:\n\n[![status](https://joss.theoj.org/papers/10.21105/joss.03625/status.svg)][JOSS paper]\n\n```bibtex\n@article{Fleschutz2021,\n  title = {elmada: Dynamic electricity carbon emission factors and prices for Europe},\n  author = {Markus Fleschutz and Michael D. Murphy},\n  journal = {Journal of Open Source Software},\n  publisher = {The Open Journal},\n  year = {2021},\n  volume = {6},\n  number = {66},\n  pages = {3625},\n  doi = {10.21105/joss.03625},\n}\n```\n\nIf you use the PP or PWL method, please also cite the open-access [Applied Energy paper]:\n\n[![APEN](https://img.shields.io/badge/AppliedEnergy-10.1016/j.apenergy.2021.117040-brightgreen)][Applied Energy paper]\n\n```bibtex\n@article{Fleschutz2021b,\n  title = {The effect of price-based demand response on carbon emissions in European electricity markets: The importance of adequate carbon prices},\n  author = {Markus Fleschutz and Markus Bohlayer and Marco Braun and Gregor Henze and Michael D. Murphy},\n  journal = {Applied Energy},\n  year = {2021},\n  volume = {295},\n  issn = {0306-2619},\n  pages = {117040},\n  doi = {10.1016/j.apenergy.2021.117040},\n}\n```\n\n# License\n\nCopyright (c) 2021 Markus Fleschutz\n\n[![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0)\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\u003c!-- SOURCES --\u003e\n[.../destatis]: elmada/data/raw/destatis\n[.../from_other.py]: elmada/from_other.py\n[.../safe_cache]: elmada/data/safe_cache\n[.../tranberg]: elmada/data/raw/tranberg\n[.../worldbank]: elmada/data/raw/worldbank\n[APENsupplPage8]: https://ars.els-cdn.com/content/image/1-s2.0-S0306261921004992-mmc1.pdf#page=8\n[Applied Energy paper]: https://doi.org/10.1016/j.apenergy.2021.117040\n[BeautifulSoup4]: https://pypi.org/project/beautifulsoup4\n[destatis_download]: https://www.destatis.de/DE/Themen/Wirtschaft/Preise/Publikationen/Energiepreise/energiepreisentwicklung-xlsx-5619001.xlsx?__blob=publicationFile\n[DESTATIS]: https://www.destatis.de\n[Draf Project]: https://github.com/DrafProject\n[ENTSO-E API key]: https://transparency.entsoe.eu/content/static_content/Static%20content/web%20api/Guide.html\n[ENTSO-E]: https://transparency.entsoe.eu/\n[EntsoePandasClient]: https://github.com/EnergieID/entsoe-py#EntsoePandasClient\n[Europe30]: #geographic-scope\n[GEO]: http://globalenergyobservatory.org\n[ICE]: https://www.theice.com\n[JOSS paper]: https://doi.org/10.21105/joss.03625\n[Konstantin.2017]: https://doi.org/10.1007/978-3-662-49823-1\n[Morph API key]: https://morph.io/documentation/api\n[Morph]: https://morph.io\n[opsd_download]: https://data.open-power-system-data.org/conventional_power_plants/latest\n[OPSD]: https://open-power-system-data.org\n[Parquet format]: https://parquet.apache.org\n[Quandl API key]: https://docs.quandl.com/docs#section-authentication\n[Quandl]: https://www.quandl.com\n[Quaschning]: https://www.volker-quaschning.de/datserv/CO2-spez/index_e.ph\n[Sandbag]: https://sandbag.org.uk/carbon-price-viewer\n[Smard]: https://www.smard.de/en\n[Tranberg.2019]: https://doi.org/10.1016/j.esr.2019.100367\n[wb]: https://databank.worldbank.org/reports.aspx?source=2\u0026series=EG.ELC.LOSS.ZS\n[CEFWhitepaper]: https://watttime.org/wp-content/uploads/2024/01/GHG-Frameworks-WhitePaper-Tomorrow-WattTime-202108.pdf\n[Worldbank]: https://databank.worldbank.org/reports.aspx?source=2\u0026series=EG.ELC.LOSS.ZS\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDrafProject%2Felmada","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDrafProject%2Felmada","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDrafProject%2Felmada/lists"}