{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Calculating the Environmental Impact of Power Plants" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Table of contents**\n", "- Overview\n", "- Setup\n", " - Authentication Token\n", "- Use Case\n", " - Coal-Fired Power Plant Type\n", " - Natural Gas-Fired Power Plant Type\n", " - Oil-Fired Power Plant Type\n", " - Biomass-Fired Power Plant Type\n", " - Comparison of Emissions Between Power Plant Types\n", "- Related Links" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Overview" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The **IBM Envizi - Emissions API, Stationary Emissions API** is used in this sample application.\n", "\n", "This notebook illustrates how to calculate greenhouse gas emissions for different types of power plants. In the energy sector, emissions can vary significantly depending on the type of fuel used and the energy content that is associated with that fuel. The API allows us to calculate emissions based on the fuel type and fuel consumption amount.\n", "\n", "The primary focus of this notebook is calculating emissions for different fuel types such as coal, oil, natural gas, and biomass, based on a given energy consumption using the **Stationary Emissions API**.\n", "\n", "Read this example to learn how to complete the following tasks:\n", "- Input specific fuel data and energy content for various fuels.\n", "- Retrieve and analyze emissions data based on the given energy content.\n", "- Understand the impact of different fuels on overall GHG emissions in the power sector.\n", "\n", "**Business value**\n", "\n", "By leveraging these calculations, organizations can make data-driven decisions about fuel choices and their corresponding environmental impact, contributing to more sustainable energy generation.\n", "\n", "**Use Case**\n", "\n", "In this notebook, an example of Calculating the environmental impact of power plants will be used to identify oppurtunities for carbon reduction through efficiency improvemnets or cleaner fuel alternatives.\n", "\n", "For more information on the Emissions API Stationary Endpoint inputs and the output data points, see [Emissions API Developer Guide]().\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![Alt text](power_plant.png \"Power Plant\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Setup" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ensure that Python 3+ is installed on your system.\n", "\n", "\n", "Note: To run this notebook, you must first add your credentials to `'../../../../auth/secrets.ini'` in the following format:\n", "\n", "```\n", "[EAPI]\n", "api.api_key = \n", "api.tenant_id = \n", "api.org_id = \n", "\n", "```" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Install the prerequisite Python packages\n", "%pip install pandas configparser IPython requests" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import configparser\n", "import requests\n", "import json\n", "from IPython.display import display as display_summary" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Authorization Token" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Run the following code snippet to generate a Bearer Token by using your api_key configured in secrets.ini." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Authentication Success\n" ] } ], "source": [ "config = configparser.RawConfigParser()\n", "config.read(['../../../../auth/secrets.ini','../../../../auth/config.ini'])\n", "\n", "EAPI_API_KEY = config.get('EAPI', 'api.api_key')\n", "EAPI_TENANT_ID = config.get('EAPI', 'api.tenant_id')\n", "EAPI_CLIENT_ID = 'ghgemissions-' + EAPI_TENANT_ID\n", "EAPI_ORG_ID = config.get('EAPI', 'api.org_id')\n", "\n", "EAPI_AUTH_CLIENT_ID = 'saascore-' + EAPI_TENANT_ID\n", "EAPI_AUTH_ENDPOINT = config.get('EAPI', 'api.auth_endpoint')\n", "\n", "EAPI_BASE_URL = config.get('EAPI', 'api.base_url')\n", "EAPI_ENDPOINT = f\"{EAPI_BASE_URL}/stationary\"\n", "\n", "auth_request_headers: dict = {}\n", "auth_request_headers[\"X-IBM-CLIENT-ID\"] = EAPI_AUTH_CLIENT_ID\n", "auth_request_headers[\"X-API-KEY\"] = EAPI_API_KEY\n", "\n", "verify = True\n", "\n", "auth_url = f\"{EAPI_AUTH_ENDPOINT}?orgId={EAPI_ORG_ID}\"\n", " \n", "response = requests.get(url = auth_url,\n", " headers = auth_request_headers,\n", " verify = verify\n", " )\n", "if response.status_code == 200:\n", " jwt_token = response.text\n", " print(\"Authentication Success\")\n", "else: \n", " print(\"Authentication Failed\")\n", " print(response.text)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Use Case" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Coal-Fired Power Plant Type" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can measure the impact of a coal-fired power plant on the environment. In this example, the coal-fired power plant uses the lignite as fuel and the energy content is 5 GigaJoules (GJ). The output is the measurement of all the Greenhouse Gas Emissions." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "fuel_type = \"Coal - Lignite\"\n", "energy_value = 5\n", "energy_unit = \"GJ\" #Giga Joule" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requests payload is : {\n", " \"activity\": {\n", " \"type\": \"Coal - Lignite\",\n", " \"value\": 5,\n", " \"unit\": \"GJ\"\n", " },\n", " \"location\": {\n", " \"country\": \"USA\",\n", " \"stateProvince\": \"New York\"\n", " },\n", " \"time\": {\n", " \"date\": \"2025-01-01\"\n", " }\n", "}\n" ] } ], "source": [ "lignite_payload = {\n", " \"activity\": {\n", " \"type\": fuel_type,\n", " \"value\": energy_value,\n", " \"unit\": energy_unit\n", " },\n", " \"location\": {\n", " \"country\": \"USA\",\n", " \"stateProvince\": \"New York\"\n", " },\n", " \"time\": {\n", " \"date\": \"2025-01-01\"\n", " }\n", "}\n", " \n", "print(\"Requests payload is :\", json.dumps(lignite_payload, indent=2)) " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Create the query headers\n", "request_headers: dict = {}\n", "request_headers[\"Content-Type\"] = \"application/json\"\n", "request_headers[\"x-ibm-client-id\"] = EAPI_CLIENT_ID\n", "request_headers[\"Authorization\"] = \"Bearer \" + jwt_token" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Submit the request\n", "lignite_response = requests.post(EAPI_ENDPOINT, \n", " headers = request_headers, \n", " data = json.dumps(lignite_payload))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
transactionIdtotalCO2eCO2CH4N2Ounitdescription
077a08ab4-b506-443c-a72f-755a9a6cf41e466.572457463.1034461.4596382.009372kgCO2eThe coal - lignite emissions factor used to calculate this result was obtained from the year 2025 GHG - EPA factor set for the area Earth.
\n", "
" ], "text/plain": [ " transactionId totalCO2e CO2 CH4 \\\n", "0 77a08ab4-b506-443c-a72f-755a9a6cf41e 466.572457 463.103446 1.459638 \n", "\n", " N2O unit \\\n", "0 2.009372 kgCO2e \n", "\n", " description \n", "0 The coal - lignite emissions factor used to calculate this result was obtained from the year 2025 GHG - EPA factor set for the area Earth. " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "if lignite_response.text != \"\":\n", " # Get the response as json\n", " response_json = lignite_response.json()\n", " \n", " # Get json and convert to dataframe\n", " json_str = json.dumps(response_json)\n", " dict = json.loads(json_str)\n", " dataframe = pd.json_normalize(dict) \n", " \n", " # display\n", " print(\"\\n\\n\")\n", " pd.set_option('display.max_colwidth', None)\n", " display( dataframe) \n", "else:\n", " print(\"Empty Response\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Natural Gas-Fired Power Plant Type" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can measure the impact of a natural gas-fired power plant on the environment. In this example, the natural gas-fired power plant uses natural gas as fuel and the energy content is 5 GigaJoules. The output is the measurement of all the Greenhouse Gas Emissions." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "fuel_type = \"Natural Gas\"\n", "energy_content = \"5\" \n", "energy_unit = \"GJ\" #Giga Joule" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requests payload is : {\n", " \"activity\": {\n", " \"type\": \"Natural Gas\",\n", " \"value\": 5,\n", " \"unit\": \"GJ\"\n", " },\n", " \"location\": {\n", " \"country\": \"USA\",\n", " \"stateProvince\": \"New York\"\n", " },\n", " \"time\": {\n", " \"date\": \"2025-01-01\"\n", " }\n", "}\n" ] } ], "source": [ "natural_gas_payload = {\n", " \"activity\": {\n", " \"type\": fuel_type,\n", " \"value\": energy_value,\n", " \"unit\": energy_unit\n", " },\n", " \"location\": {\n", " \"country\": \"USA\",\n", " \"stateProvince\": \"New York\"\n", " },\n", " \"time\": {\n", " \"date\": \"2025-01-01\"\n", " }\n", "}\n", " \n", "print(\"Requests payload is :\", json.dumps(natural_gas_payload, indent=2)) " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# Submit the request\n", "natural_gas_response = requests.post(EAPI_ENDPOINT, \n", " headers = request_headers, \n", " data = json.dumps(natural_gas_payload))" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
transactionIdtotalCO2eCO2CH4N2Ounitdescription
0f3ef793d-1a7f-48ad-9f98-23de35bae7a2251.714163251.4558830.1326940.125586kgCO2eThe natural gas emissions factor used to calculate this result was obtained from the year 2025 GHG - EPA factor set for the area Earth.
\n", "
" ], "text/plain": [ " transactionId totalCO2e CO2 CH4 \\\n", "0 f3ef793d-1a7f-48ad-9f98-23de35bae7a2 251.714163 251.455883 0.132694 \n", "\n", " N2O unit \\\n", "0 0.125586 kgCO2e \n", "\n", " description \n", "0 The natural gas emissions factor used to calculate this result was obtained from the year 2025 GHG - EPA factor set for the area Earth. " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "if natural_gas_response.text != \"\":\n", " # Get the response as json\n", " response_json = natural_gas_response.json()\n", " \n", " # Get json and convert to dataframe\n", " json_str = json.dumps(response_json)\n", " dict = json.loads(json_str)\n", " dataframe = pd.json_normalize(dict) \n", " \n", " # display\n", " print(\"\\n\\n\")\n", " pd.set_option('display.max_colwidth', None)\n", " display( dataframe) \n", "else:\n", " print(\"Empty Response\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Oil-Fired Power Plant Type" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can measure the impact of an oil-fired power plant on the environment. In this example, the oil-fired power plant uses crude oil as fuel and the energy content is 5 GigaJoules. The output is the measurement of all the Greenhouse Gas Emissions." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "fuel_type = \"Crude Oil\"\n", "energy_content = \"5\"\n", "energy_unit = \"GJ\" #Giga Joule" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requests payload is : {\n", " \"activity\": {\n", " \"type\": \"Crude Oil\",\n", " \"value\": 5,\n", " \"unit\": \"GJ\"\n", " },\n", " \"location\": {\n", " \"country\": \"USA\",\n", " \"stateProvince\": \"New York\"\n", " },\n", " \"time\": {\n", " \"date\": \"2025-01-01\"\n", " }\n", "}\n" ] } ], "source": [ "crude_oil_payload = {\n", " \"activity\": {\n", " \"type\": fuel_type,\n", " \"value\": energy_value,\n", " \"unit\": energy_unit\n", " },\n", " \"location\": {\n", " \"country\": \"USA\",\n", " \"stateProvince\": \"New York\"\n", " },\n", " \"time\": {\n", " \"date\": \"2025-01-01\"\n", " }\n", "}\n", " \n", "print(\"Requests payload is :\", json.dumps(crude_oil_payload, indent=2)) " ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "# Submit the request\n", "crude_oil_response = requests.post(EAPI_ENDPOINT, \n", " headers = request_headers, \n", " data = json.dumps(crude_oil_payload))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
transactionIdtotalCO2eCO2CH4N2Ounitdescription
01b15eb3b-ff9d-42c8-9b25-9c983c3608ed354.403039353.2514420.3980830.753515kgCO2eThe crude oil emissions factor used to calculate this result was obtained from the year 2025 GHG - EPA factor set for the area Earth.
\n", "
" ], "text/plain": [ " transactionId totalCO2e CO2 CH4 \\\n", "0 1b15eb3b-ff9d-42c8-9b25-9c983c3608ed 354.403039 353.251442 0.398083 \n", "\n", " N2O unit \\\n", "0 0.753515 kgCO2e \n", "\n", " description \n", "0 The crude oil emissions factor used to calculate this result was obtained from the year 2025 GHG - EPA factor set for the area Earth. " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "if crude_oil_response.text != \"\":\n", " # Get the response as json\n", " response_json = crude_oil_response.json()\n", " \n", " # Get json and convert to dataframe\n", " json_str = json.dumps(response_json)\n", " dict = json.loads(json_str)\n", " dataframe = pd.json_normalize(dict) \n", " \n", " # display\n", " print(\"\\n\\n\")\n", " pd.set_option('display.max_colwidth', None)\n", " display( dataframe) \n", "else:\n", " print(\"Empty Response\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Biomass-Fired Power Plant Type" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can measure the impact of a biomass-fired power plant on the environment. In this example, the biomass-fired power plant uses wood or wood residuals as the fuel and the energy content is 5 GigaJoules." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "fuel_type = \"Biomass - Wood and Wood Residuals\"\n", "energy_content = \"5\" \n", "energy_unit = \"GJ\" #Giga Joule" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requests payload is : {\n", " \"activity\": {\n", " \"type\": \"Biomass - Wood and Wood Residuals\",\n", " \"value\": 5,\n", " \"unit\": \"GJ\"\n", " },\n", " \"location\": {\n", " \"country\": \"USA\",\n", " \"stateProvince\": \"New York\"\n", " },\n", " \"time\": {\n", " \"date\": \"2025-01-01\"\n", " }\n", "}\n" ] } ], "source": [ "biomass_payload = {\n", " \"activity\": {\n", " \"type\": fuel_type,\n", " \"value\": energy_value,\n", " \"unit\": energy_unit\n", " },\n", " \"location\": {\n", " \"country\": \"USA\",\n", " \"stateProvince\": \"New York\"\n", " },\n", " \"time\": {\n", " \"date\": \"2025-01-01\"\n", " }\n", "}\n", " \n", "print(\"Requests payload is :\", json.dumps(biomass_payload, indent=2)) " ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "# Submit the request\n", "biomass_response = requests.post(EAPI_ENDPOINT, \n", " headers = request_headers, \n", " data = json.dumps(biomass_payload))" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
transactionIdtotalCO2eCO2CH4N2Ounitdescription
08dbe659a-fcf9-4307-993c-f79ad794a454450.002718444.5262310.95544.521088kgCO2eThe biomass - wood and wood residuals emissions factor used to calculate this result was obtained from the year 2025 GHG - EPA factor set for the area Earth.
\n", "
" ], "text/plain": [ " transactionId totalCO2e CO2 CH4 \\\n", "0 8dbe659a-fcf9-4307-993c-f79ad794a454 450.002718 444.526231 0.9554 \n", "\n", " N2O unit \\\n", "0 4.521088 kgCO2e \n", "\n", " description \n", "0 The biomass - wood and wood residuals emissions factor used to calculate this result was obtained from the year 2025 GHG - EPA factor set for the area Earth. " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "if biomass_response.text != \"\":\n", " # Get the response as json\n", " response_json = biomass_response.json()\n", " \n", " # Get json and convert to dataframe\n", " json_str = json.dumps(response_json)\n", " dict = json.loads(json_str)\n", " dataframe = pd.json_normalize(dict) \n", " \n", " # display\n", " print(\"\\n\\n\")\n", " pd.set_option('display.max_colwidth', None)\n", " display( dataframe) \n", "else:\n", " print(\"Empty Response\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Comparison of Emissions Between Power Plant Types" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Based on the carbon emissions measured for each of the power plant types, now we can compare the emission levels and analyze the impact on the environment.\n", "For this task, we plot a graph of emissions by the power plant types and analyze the results in the graph." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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hoaGGD9+PNzc3NC8eXMAQIcOHeDk5ITBgwdj2bJlSEpKwqxZs+Dr6wstLS1FN4+IiIhUjMJHdv755x9069atQHv37t0RFxen0LrWr1+PtLQ0eHp6wsrKSrrt3LlT6rNq1Sp07doVvXv3RuvWrWFpaYnff/9dWq6uro4DBw5AXV0dbm5uGDRoEIYMGVLo2WJERET08VH4yI6NjQ1OnDgBe3t7ufbjx48rfFaTEOK9fbS1tREYGIjAwMAi+9ja2uLQoUMKPTcRERF9HBQOO1OmTMGECRMQFRWFFi1aAADOnj2L4OBgrFmzRukFEhEREZWGwmFn7NixsLS0xIoVK/Drr78CABwdHbFz50706NFD6QUSERERlYbCYQcAPv30U3z66afKroWIiIhI6SrMRQWJiIiIykKxjuyYmJjg1q1bqFKlCipXrgyZTFZk3ydPniitOCIiIqLSKlbYWbVqFQwMDKT/vyvsEBEREVUkxQo7Q4cOlf7v4+NTVrUQERERKZ3Cc3YuXbqEq1evSvf37duHnj17YsaMGcjKylJqcURERESlpXDYGTNmDG7dugXg9dWU+/btC11dXezatQtfffWV0gskIiIiKg2Fw86tW7fg4uICANi1axc8PDywbds2BAcHY/fu3cquj4iIiKhUFA47Qgjk5eUBeP0VEZ07dwbw+mskHj9+rNzqiIiIiEpJ4bDTuHFjfP311/jll18QGhqKLl26AADi4uJgYWGh9AKJiIiISkPhsLN69WpcunQJfn5+mDlzpvSFoL/99pv0XVlEREREFYXCXxdRv359ubOx8i1fvhzq6upKKYqIiIhIWRQ+spOYmIh///1Xuh8REYFJkybh559/hoaGhlKLIyIiIiothcPOgAEDcPLkSQBAUlIS2rdvj4iICMycORMLFixQeoFEREREpaFw2Ll27RqaNm0KAPj1119Rr149nDt3DiEhIQgODlZ2fURERESlonDYyc7OhpaWFoDXp553794dAFCnTh08ePBAudURERERlZLCYadu3brYsGEDTp8+jWPHjqFjx44AgPv378PU1FTpBRIRERGVhsJhZ+nSpfjhhx/g6emJ/v37o0GDBgCA/fv3S8NbRERERBWFwqeee3p64vHjx3j27BkqV64stY8ePRq6urpKLY6IiIiotBQOOwCgrq4uF3QAoEaNGsqoh4iIiEipihV2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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "# Data\n", "labels = ['Coal-Fired', 'Oil-Fired', 'Natural Gas-Fired', 'Biomass-Fired']\n", "co2e = [lignite_response.json()['totalCO2e'], crude_oil_response.json()['totalCO2e'], natural_gas_response.json()['totalCO2e'], biomass_response.json()['totalCO2e']]\n", "fig, ax = plt.subplots()\n", "\n", "# Stacked Bar Chart\n", "ax.bar(labels, co2e, label='totalCO2e')\n", "\n", "ax.set_xlabel('Power Plant Type')\n", "ax.set_ylabel('Emissions (metric tonne)')\n", "ax.set_title('totalCO2e Emissions by Power Plant Type')\n", "ax.legend()\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Related Links" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Emissions API Developer Guide]()" ] } ], "metadata": { "kernelspec": { "display_name": ".venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.1" } }, "nbformat": 4, "nbformat_minor": 4 }