Repository: os-climate/ITR (language: python)

Issue:
Update vulnerability scan
osspython package seems not to be maintained anymore (no updates in the past 2 years). py-audit is an open-source tool supported by Google.


Discussion / hints:

Fix patch:
diff --git a/.github/workflows/ossaudit.yml b/.github/workflows/pip-audit.yml
similarity index 60%
rename from .github/workflows/ossaudit.yml
rename to .github/workflows/pip-audit.yml
index 292560c4..c166a87a 100644
--- a/.github/workflows/ossaudit.yml
+++ b/.github/workflows/pip-audit.yml
@@ -1,7 +1,7 @@
 # This workflow will install Python dependencies, run tests and lint with a variety of Python versions
 # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
 
-name: OSS Audit
+name: Dependency Vulnerability Audit
 
 on:
   push:
@@ -25,16 +25,8 @@ jobs:
         python-version: ${{ matrix.python-version }}
     - name: Install dependencies
       run: |
-        pip install ossaudit
-    - name: Run OSS Audit
-      id: run_oss_audit
+        pip install --upgrade pip pip-audit
+    - name: Run pip-audit
+      id: run_pip_audit
       run: |
-        echo ::set-output name=audit::$(ossaudit -f requirements.txt)
-    - name: Check vulnerabilities
-      if: ${{!startsWith(steps.run_oss_audit.outputs.audit, 'Found 0 vulnerabilities')}}
-      run: |
-        echo ${{steps.run_oss_audit.outputs.audit}}
-        echo "::warning::Vulnerabilities found in the dependencies"
-        exit 1
-
-        
+        pip-audit -r requirements.txt
\ No newline at end of file
diff --git a/ITR/configs.py b/ITR/configs.py
index 42bbc42c..ec6eb432 100644
--- a/ITR/configs.py
+++ b/ITR/configs.py
@@ -7,6 +7,8 @@
 import pint
 import pint_pandas
 from ITR.data.osc_units import ureg, Q_
+from typing import List
+
 
 class ColumnsConfig:
     # Define a constant for each column used in the
@@ -86,6 +88,15 @@ class SectorsConfig:
     INDUSTRIALS = "Industrials"
     FINANCIALS = "Financials"
     HEALTH_CARE = "Health Care"
+    AUTOMOBILE = "Autos"
+
+    @classmethod
+    def get_configured_sectors(cls) -> List[str]:
+        """
+        Get a list of sectors configured in the tool.
+        :return: A list of sectors string values
+        """
+        return [SectorsConfig.STEEL, SectorsConfig.ELECTRICITY, SectorsConfig.AUTOMOBILE]
 
 
 class VariablesConfig:
@@ -135,13 +146,3 @@ class TemperatureScoreConfig(PortfolioAggregationConfig):
         carbon_conversion=Q_(3664.0, ureg('Gt CO2')),
         scenario_target_temperature=Q_(1.5, ureg.delta_degC)
     )
-
-
-class ProjectionConfig:
-    LOWER_PERCENTILE: float = 0.1
-    UPPER_PERCENTILE: float = 0.9
-
-    LOWER_DELTA: float = -0.10
-    UPPER_DELTA: float = +0.03
-
-    TARGET_YEAR: int = 2050
\ No newline at end of file
diff --git a/ITR/data/base_providers.py b/ITR/data/base_providers.py
index 66ec265d..7f4d24f3 100644
--- a/ITR/data/base_providers.py
+++ b/ITR/data/base_providers.py
@@ -6,13 +6,13 @@
 from typing import List, Type, Dict
 
 from ITR.data.osc_units import Q_, PA_
-from ITR.configs import ColumnsConfig, TemperatureScoreConfig, ProjectionConfig, VariablesConfig
+from ITR.configs import ColumnsConfig, TemperatureScoreConfig, VariablesConfig
 from ITR.data.data_providers import CompanyDataProvider, ProductionBenchmarkDataProvider, \
     IntensityBenchmarkDataProvider
 from ITR.interfaces import ICompanyData, EScope, IProductionBenchmarkScopes, IEIBenchmarkScopes, \
     IBenchmark, IProjection, ICompanyEIProjections, ICompanyEIProjectionsScopes, IHistoricEIScopes, \
     IHistoricEmissionsScopes, IProductionRealization, ITargetData, IHistoricData, ICompanyEIProjection, \
-    IEmissionRealization, IntensityMetric
+    IEmissionRealization, IntensityMetric, ProjectionControls
 
 
 # TODO handling of scopes in benchmarks
@@ -203,11 +203,13 @@ class BaseCompanyDataProvider(CompanyDataProvider):
     def __init__(self,
                  companies: List[ICompanyData],
                  column_config: Type[ColumnsConfig] = ColumnsConfig,
-                 tempscore_config: Type[TemperatureScoreConfig] = TemperatureScoreConfig):
+                 tempscore_config: Type[TemperatureScoreConfig] = TemperatureScoreConfig,
+                 projection_controls: ProjectionControls = ProjectionControls()):
         super().__init__()
-        self._companies = self._validate_projected_trajectories(companies)
         self.column_config = column_config
         self.temp_config = tempscore_config
+        self.projection_controls = projection_controls
+        self._companies = self._validate_projected_trajectories(companies)
 
     def _validate_projected_trajectories(self, companies: List[ICompanyData]) -> List[ICompanyData]:
         companies_without_data = [c.company_id for c in companies if not c.historic_data and not c.projected_intensities]
@@ -216,7 +218,7 @@ def _validate_projected_trajectories(self, companies: List[ICompanyData]) -> Lis
         companies_without_projections = [c for c in companies if not c.projected_intensities]
         if companies_without_projections:
             companies_with_projections = [c for c in companies if c.projected_intensities]
-            return companies_with_projections + EITrajectoryProjector().project_ei_trajectories(companies_without_projections)
+            return companies_with_projections + EITrajectoryProjector(self.projection_controls).project_ei_trajectories(companies_without_projections)
         else:
             return companies
 
@@ -382,18 +384,17 @@ class EITrajectoryProjector(object):
     - A company's production history (units depend on industry, e.g. TWh for electricity)
     """
 
-    def __init__(self):
-        pass
+    def __init__(self, projection_controls: ProjectionControls = ProjectionControls()):
+        self.projection_controls = projection_controls
 
     def project_ei_trajectories(self, companies: List[ICompanyData]) -> List[ICompanyData]:
         historic_data = self._extract_historic_data(companies)
         self._compute_missing_historic_ei(companies, historic_data)
 
         historic_years = [column for column in historic_data.columns if type(column) == int]
-        projection_years = range(max(historic_years), ProjectionConfig.TARGET_YEAR)
-        # historic_intensities.loc[historic_intensities.index.get_level_values('company_id')=='US6293775085']
-        
-        historic_intensities = historic_data[historic_years].query('variable=="Emissions Intensities"')
+        projection_years = range(max(historic_years), self.projection_controls.TARGET_YEAR)
+
+        historic_intensities = historic_data[historic_years].query(f"variable=='{VariablesConfig.EMISSIONS_INTENSITIES}'")
         standardized_intensities = self._standardize(historic_intensities)
         intensity_trends = self._get_trends(standardized_intensities)
         extrapolated = self._extrapolate(intensity_trends, projection_years, historic_data)
@@ -541,8 +542,8 @@ def _winsorize(self, historic_intensities: pd.DataFrame) -> pd.DataFrame:
             # See https://github.com/hgrecco/pint-pandas/issues/114
             winsorized: pd.DataFrame = historic_intensities.clip(
                 # Must set numeric_only to false to process Quantities
-                lower=historic_intensities.quantile(q=ProjectionConfig.LOWER_PERCENTILE, axis='index', numeric_only=False),
-                upper=historic_intensities.quantile(q=ProjectionConfig.UPPER_PERCENTILE, axis='index', numeric_only=False),
+                lower=historic_intensities.quantile(q=self.projection_controls.LOWER_PERCENTILE, axis='index', numeric_only=False),
+                upper=historic_intensities.quantile(q=self.projection_controls.UPPER_PERCENTILE, axis='index', numeric_only=False),
                 axis='columns'
             )
         return winsorized
@@ -571,9 +572,9 @@ def _get_trends(self, intensities: pd.DataFrame):
         ratios: pd.DataFrame = intensities.rolling(window=2, axis='index', closed='right') \
             .apply(func=self._year_on_year_ratio, raw=True) # .dropna(how='all',axis=0) # .fillna(0)
 
-        trends: pd.DataFrame = ratios.median(axis='index', skipna=True).clip(
-            lower=ProjectionConfig.LOWER_DELTA,
-            upper=ProjectionConfig.UPPER_DELTA,
+        trends: pd.DataFrame = self.projection_controls.TREND_CALC_METHOD(ratios, axis='index', skipna=True).clip(
+            lower=self.projection_controls.LOWER_DELTA,
+            upper=self.projection_controls.UPPER_DELTA,
         )
         return trends.T
 
diff --git a/ITR/data/data_providers.py b/ITR/data/data_providers.py
index 79a4e625..8528904a 100644
--- a/ITR/data/data_providers.py
+++ b/ITR/data/data_providers.py
@@ -4,7 +4,7 @@
 
 import numpy as np
 
-from ITR.configs import ProjectionConfig, TabsConfig, ColumnsConfig, VariablesConfig, TemperatureScoreConfig
+from ITR.configs import TabsConfig, ColumnsConfig, VariablesConfig, TemperatureScoreConfig
 from ITR.interfaces import ICompanyData, EScope, IHistoricData, IProductionRealization, IHistoricEmissionsScopes, \
     IHistoricEIScopes, ICompanyEIProjection, ICompanyEIProjectionsScopes, ICompanyEIProjections
 
diff --git a/ITR/data/template.py b/ITR/data/template.py
index 817daed9..cf9064c5 100644
--- a/ITR/data/template.py
+++ b/ITR/data/template.py
@@ -7,11 +7,11 @@
 from pydantic import ValidationError
 
 from ITR.data.base_providers import BaseCompanyDataProvider
-from ITR.configs import ColumnsConfig, TemperatureScoreConfig, VariablesConfig, TabsConfig
+from ITR.configs import ColumnsConfig, TemperatureScoreConfig, VariablesConfig, TabsConfig, SectorsConfig
 from ITR.interfaces import ICompanyData, EScope, \
     IHistoricEmissionsScopes, \
     IProductionRealization, IHistoricEIScopes, IHistoricData, ITargetData, IEmissionRealization, IEIRealization, \
-    IProjection
+    IProjection, ProjectionControls
 
 ureg = pint.get_application_registry()
 Q_ = ureg.Quantity
@@ -51,9 +51,10 @@ class TemplateProviderCompany(BaseCompanyDataProvider):
 
     def __init__(self, excel_path: str,
                  column_config: Type[ColumnsConfig] = ColumnsConfig,
-                 tempscore_config: Type[TemperatureScoreConfig] = TemperatureScoreConfig):
+                 tempscore_config: Type[TemperatureScoreConfig] = TemperatureScoreConfig,
+                 projection_controls: Type[ProjectionControls] = ProjectionControls):
         self._companies = self._convert_from_template_company_data(excel_path)
-        super().__init__(self._companies, column_config, tempscore_config)
+        super().__init__(self._companies, column_config, tempscore_config, projection_controls)
 
     def _check_company_data(self, df: pd.DataFrame) -> None:
         """
@@ -65,6 +66,8 @@ def _check_company_data(self, df: pd.DataFrame) -> None:
         missing_tabs = [tab for tab in required_tabs if tab not in df]
         assert not any(tab in missing_tabs for tab in required_tabs), f"Tabs {required_tabs} are required."
 
+
+
     def _convert_from_template_company_data(self, excel_path: str) -> List[ICompanyData]:
         """
         Converts the Excel template to list of ICompanyData objects. All dataprovider features will be inhereted from
@@ -88,6 +91,8 @@ def _fixup_name(x):
             input_data_sheet = "Test input data"
 
         df = df_company_data[input_data_sheet]
+
+
         df['exposure'].fillna('presumed_equity', inplace=True)
         # TODO: Fix market_cap column naming inconsistency
         df.rename(
@@ -101,11 +106,44 @@ def _fixup_name(x):
         df_fundamentals.company_id = df_fundamentals.company_id.astype('object')
 
         company_ids = df_fundamentals[ColumnsConfig.COMPANY_ID].unique()
+
+
+        # testing if all data is in the same currency
+        assert len(df_fundamentals[ColumnsConfig.TEMPLATE_CURRENCY].unique()) == 1, f"All data should be in the same currency. Please adjust excel template input."
+
+        # are there empty sectors?
+        comp_with_missing_sectors = df_fundamentals[ColumnsConfig.COMPANY_ID][df_fundamentals[ColumnsConfig.SECTOR].isnull()].to_list()
+        assert len(comp_with_missing_sectors) == 0, f"For {comp_with_missing_sectors} companies the sector column is empty. Correct it in excel template and try one more time."
+        # testing if only valid sectors are provided
+        sectors_from_df = df_fundamentals[ColumnsConfig.SECTOR].unique()
+        configured_sectors = SectorsConfig.get_configured_sectors()
+        not_configured_sectors = [sec for sec in sectors_from_df if sec not in configured_sectors]
+        assert len(not_configured_sectors) == 0, f"Sector {not_configured_sectors} is not covered by the ITR tool currently. Delete it from excel template."
+
         # The nightmare of naming columns 20xx_metric instead of metric_20xx...and potentially dealing with data from 1990s...
         historic_columns = [col for col in df_fundamentals.columns if col[:1].isdigit()]
         historic_scopes = ['S1', 'S2', 'S3', 'S1S2', 'S1S2S3', 'production']
         df_historic = df_fundamentals[['company_id'] + historic_columns].dropna(axis=1, how='all')
         df_fundamentals = df_fundamentals[df_fundamentals.columns.difference(historic_columns, sort=False)]
+
+        # Checking if there are not many missing market cap
+        missing_cap_ids = df_fundamentals[ColumnsConfig.COMPANY_ID][df_fundamentals[ColumnsConfig.COMPANY_MARKET_CAP].isnull()].to_list()
+        assert (len(missing_cap_ids)/len(df_fundamentals)) < 0.2, f"Too many companies with missing market capitalization. Cannot proceed."
+        # For the missing Market Cap we should use the ratio below to get dummy market cap:
+        #   (Avg for the Sector (Market Cap / Revenues) + Avg for the Sector (Market Cap / Assets)) 2
+        df_fundamentals['MCap_to_Reven']=df_fundamentals[ColumnsConfig.COMPANY_MARKET_CAP]/df_fundamentals[ColumnsConfig.COMPANY_REVENUE] # new temp column with ratio
+        df_fundamentals['MCap_to_Assets']=df_fundamentals[ColumnsConfig.COMPANY_MARKET_CAP]/df_fundamentals[ColumnsConfig.COMPANY_TOTAL_ASSETS] # new temp column with ratio
+        df_fundamentals['AVG_MCap_to_Reven'] = df_fundamentals.groupby(ColumnsConfig.SECTOR)['MCap_to_Reven'].transform('mean')
+        df_fundamentals['AVG_MCap_to_Assets'] = df_fundamentals.groupby(ColumnsConfig.SECTOR)['MCap_to_Assets'].transform('mean')
+        df_fundamentals[ColumnsConfig.COMPANY_MARKET_CAP] = df_fundamentals[ColumnsConfig.COMPANY_MARKET_CAP].fillna(0.5*(df_fundamentals[ColumnsConfig.COMPANY_REVENUE] * df_fundamentals['AVG_MCap_to_Reven']+df_fundamentals[ColumnsConfig.COMPANY_TOTAL_ASSETS] * df_fundamentals['AVG_MCap_to_Assets']))
+        df_fundamentals.drop(['MCap_to_Reven','MCap_to_Assets','AVG_MCap_to_Reven','AVG_MCap_to_Assets'], axis=1, inplace=True) # deleting temporary columns
+        
+        if missing_cap_ids is not None:
+            def custom_formatwarning(msg, *args, **kwargs):
+                return str(msg) + '\n'             # ignore everything except the message
+            warnings.formatwarning = custom_formatwarning
+            warnings.warn(f"Market capitalisation was missing for {missing_cap_ids}.\nSo the values were calculated using the average MCap/Rev and MCap/Assets from available companies.\nScript is still running")
+
         # df_fundamentals now ready for conversion to list of models
 
         df_historic = df_historic.rename(columns={col: _fixup_name(col) for col in historic_columns})
@@ -213,7 +251,7 @@ def _company_df_to_model(self, df_fundamentals: pd.DataFrame,
                     company_data[ColumnsConfig.EMISSIONS_METRIC] = {
                         'units': company_data[ColumnsConfig.EMISSIONS_METRIC]}
 
-                # TODO: need better handling of missing market cap data
+                # handling of missing market cap data is mainly done in _convert_from_template_company_data()
                 if company_data[ColumnsConfig.COMPANY_MARKET_CAP] is pd.NA:
                     company_data[ColumnsConfig.COMPANY_MARKET_CAP] = np.nan
 
diff --git a/ITR/interfaces.py b/ITR/interfaces.py
index 658c1597..a01125a5 100644
--- a/ITR/interfaces.py
+++ b/ITR/interfaces.py
@@ -1,9 +1,11 @@
 import numpy as np
+import pandas as pd
 from enum import Enum
 from typing import Optional, Dict, List, Literal, Union
-from typing_extensions import Annotated
-from pydantic import BaseModel, Field, parse_obj_as, validator
+from pydantic import BaseModel, parse_obj_as, validator
 from pint import Quantity
+from dataclasses import dataclass
+from typing import Callable
 
 from ITR.data.osc_units import ureg, Q_
 
@@ -63,6 +65,15 @@ def units_must_be_EI(cls, v):
             return v
         raise ValueError(f"cannot convert {v} to t CO2/energy")
 
+class EmissionsIntensity_ManufactureAuto(BaseModel):
+    units: str 
+    @validator('units')
+    def units_must_be_EI(cls, v):
+        qty = Q_(1, v)
+        if qty.is_compatible_with("g CO2/km"):
+            return v
+        raise ValueError(f"cannot convert {v} to g CO2/km")
+
 class EmissionsIntensity_ManufactureSteel(BaseModel):
     units: str 
     @validator('units')
@@ -81,6 +92,8 @@ def units_must_be_EI(cls, v):
             return v
         if qty.is_compatible_with("t CO2/Fe_ton"):
             return v
+        if qty.is_compatible_with("g CO2/km"):
+            return v
         raise ValueError(f"cannot convert {v} to t CO2/Fe_ton")
 
 
@@ -655,3 +668,15 @@ def __getitem__(self, item):
     @property
     def tcre_multiplier(self) -> Quantity['delta_degC/CO2']:
         return self.tcre / self.carbon_conversion
+
+
+@dataclass
+class ProjectionControls:
+    LOWER_PERCENTILE: float = 0.1
+    UPPER_PERCENTILE: float = 0.9
+
+    LOWER_DELTA: float = -0.10
+    UPPER_DELTA: float = +0.03
+
+    TARGET_YEAR: int = 2050
+    TREND_CALC_METHOD: Callable[[pd.DataFrame], pd.DataFrame] = staticmethod(pd.DataFrame.median)
diff --git a/ITR/utils.py b/ITR/utils.py
index 578cc372..917a9a23 100644
--- a/ITR/utils.py
+++ b/ITR/utils.py
@@ -51,6 +51,11 @@ def dataframe_to_portfolio(df_portfolio: pd.DataFrame) -> List[PortfolioCompany]
     PortfolioCompany model.
     :return: A list of portfolio companies
     """
+    # Adding some non-empty checks for portfolio upload
+    assert df_portfolio[ColumnsConfig.INVESTMENT_VALUE].isnull().sum() == 0, f"There is empty data for investment value for some companies in the input file. Please correct the file and try again."
+    assert df_portfolio[ColumnsConfig.COMPANY_ISIN].isnull().sum() == 0, f"There is empty data for company ISIN for some companies in the input file. Please correct the file and try again."
+    assert df_portfolio[ColumnsConfig.COMPANY_ID].isnull().sum() == 0, f"There is empty data for company ID for some companies in the input file. Please correct the file and try again."
+
     return [PortfolioCompany.parse_obj(company) for company in df_portfolio.to_dict(orient="records")]
 
 
diff --git a/docs/DataTemplateRequirements.rst b/docs/DataTemplateRequirements.rst
index 08e53a70..b700223c 100644
--- a/docs/DataTemplateRequirements.rst
+++ b/docs/DataTemplateRequirements.rst
@@ -18,7 +18,7 @@ means in the following sections.  At the end we will reiterate how to set up you
 ITR Input Data
 --------------
 
-The `ITR Input Data` sheet is effectively the Universe of all
+The :code:`ITR Input Data` sheet is effectively the Universe of all
 instruments the tool can analyze.  We are currently limiting our
 analysis to stock issues, but expect to support bonds in the near
 future.  We also presently make the assumption that there is a 1:1
@@ -76,10 +76,10 @@ tons (or megatons) of steel produced.  We have created the unit Fe_ton
 
 As previously mentioned, the tool accepts any imperial or SI unit for
 these metrics, and there is no trouble if one row of data reports
-`3.6 tCO2/MWh` and the next row reports `1 t CO2/GJ` (which happen to
+:code:`3.6 tCO2/MWh` and the next row reports :code:`1 t CO2/GJ` (which happen to
 be the same intensity value).  All of it will be converted as
 necessary--and can be converted to some final standard for output if
-desired.  It is quite OK to see 't CO2/MWh' and 'Mt CO2/TWh' in
+desired.  It is quite OK to see :code:`t CO2/MWh` and :code:`Mt CO2/TWh` in
 different rows, but whatever are the metrics for a given row, that's
 how the numbers will be interpreted for that row.
 
@@ -99,24 +99,24 @@ disclosures.  The tool deals with three types of missing data:
 - If the data is missing to the right, it will extrapolate the data until it has filled in all cells up to the latest reported data.  If all but a few companies report 2020 data and none report 2021 data, tool will extrapolation 2019 data for those companies missing 2020 data.  If there are also some companies with 2021 data, the tool will extrapolate missing data for 2021 and, if needed, also 2020 data.
 
 The tool handles data reports for all scopes defined by the GHG
-Protocol: Scope 1 (own emissions), Scope 2 (emissinos caused by
-utilities supplying electric power), Scope 3 (upstream and
+Protocol: :math:`Scope 1` (own emissions), :math:`Scope 2`(emissinos caused by
+utilities supplying electric power), :math:`Scope 3` (upstream and
 downstream emissions caused by transportation, use, and disposal of
-products).  The tool also handles S1+S2 as a combined emission and
-S1+S2+S3 as a combined emission.  *HOWEVER*, at the present time the
-tool does not do anything with S3 emissions.  Also, it interprets
-the benchmark data as applying to S1+S2 emissions, upon which all
-temperature scoring depeneds.  If data is given as separate S1 and
-S2 data, the tool will combine them to create S1+S2 data.  If S1,
-S2, and S1+S2 data is given, the tool will collect them all, but
-will not check the math that S1 + S2 == S1+S2.
+products).  The tool also handles :math:`S1+S2` as a combined emission and
+:math:`S1+S2+S3` as a combined emission.  *HOWEVER*, at the present time the
+tool does not do anything with :math:`S3` emissions.  Also, it interprets
+the benchmark data as applying to :math:`S1+S2` emissions, upon which all
+temperature scoring depeneds.  If data is given as separate :math:`S1` and
+:math:`S2` data, the tool will combine them to create :math:`S1+S2` data.  If :math:`S1`,
+:math:`S2`, and :math:`S1+S2` data is given, the tool will collect them all, but
+will not check the math that :math:`S1 + S2 == S1+S2`.
 
 Over time we expect the tool will be more useful with the more
 granular reporting of S1 and S2 data, more accurate in its
 interpretation of how these should combine or remain separated
 according to sectors and benchmarks, but for the present time we
-strongly encourage that all data either have both S1 and S2 data or
-combined S1+S2 data.
+strongly encourage that all data either have both :math:`S1` and :math:`S2`data or
+combined :math:`S1+S2` data.
 
 Finally, columns of the form YYYY_production are for production
 metrics.  As with the _ghg_ columns, the numbers in the production
@@ -127,19 +127,19 @@ same way as missing emissions data.
 ITR target input data
 ---------------------
 
-The same identifiers--company_name, company_lei, and company_id--are
-used to connect a row of `ITR input data` to rows of `ITR target input
+The same identifiers--*company_name*, *ompany_lei*, and *company_id*--are
+used to connect a row of :code:`ITR input data` to rows of :code:`ITR target input
 data`.  Most companies have set a short-term reduction ambition target
 (such as reduce absolute emissions by 50% compared with a base year
 by 2030) and a long-term net-zero target (the tool does not presently
 distinguish between true zero-emissions and positive emissions with
 some kind of offset), a single row of data suffices:
 
-- netzero_year is the year at which the netzero ambition should be realized.  If multiple netzero_year values are given for the same company, the tool chooses the most recently communicated (latest target_start_year).  If there are multiple such, it chooses the earliest netzero attainment date (target_end_year).
-- target_type defines whether the short-term ambition is based on absolute emissions or intensity.  Note that when it comes to a long-term netzero ambition, zero is zero, whether emissions or intensity.
-- target_scope defines the scope(s) of the target.  While it is possible to define S1, S2, S1+S2, S3, S1+S2+S3, at present the most reliable choice is S1+S2 (because we don't have a complete theory yet for interpreting the benchmarks upon which the tools is based for other than S1+S2).
-- target_start_year is the year the target was set.  target_end_year is the year the target is to be attained.  In the event that multiple targets aim for a reduction ambition to be attained at the target_end_year, the latest start_year will be the one the tool uses and all other targets for that year will be dropped.  If there are both intensity and absolute targets with the same target_start_year, the tool will silently choose the intensity target over the absolute target.  If there are multiple targets with that prioritization, the tool will warn that it is going to pick just one.
-- target_base_year and target_base_year_qty define the "when" and the "from how much" that the target_ambition_reduction applies to (and hopefully is achieved by the target_year).  Because all computations require units, the target_base_year_unit is needed so that target quantities can be compared with other emissions, production, and intensity data.
+- *netzero_year* is the year at which the netzero ambition should be realized.  If multiple netzero_year values are given for the same company, the tool chooses the most recently communicated (latest target_start_year).  If there are multiple such, it chooses the earliest netzero attainment date (target_end_year).
+- *target_type* defines whether the short-term ambition is based on absolute emissions or intensity.  Note that when it comes to a long-term netzero ambition, zero is zero, whether emissions or intensity.
+- *target_scope* defines the scope(s) of the target.  While it is possible to define :math:`S1, S2, S1+S2, S3, S1+S2+S3`, at present the most reliable choice is :math:`S1+S2` (because we don't have a complete theory yet for interpreting the benchmarks upon which the tools is based for other than :math:`S1+S2`).
+- *target_start_year* is the year the target was set.  *target_end_year* is the year the target is to be attained.  In the event that multiple targets aim for a reduction ambition to be attained at the *target_end_year*, the latest *target_start_year* will be the one the tool uses and all other targets for that year will be dropped.  If there are both intensity and absolute targets with the same *target_start_year*, the tool will silently choose the intensity target over the absolute target.  If there are multiple targets with that prioritization, the tool will warn that it is going to pick just one.
+- *target_base_year* and *target_base_year_qty* define the "when" and the "from how much" that the target_ambition_reduction applies to (and hopefully is achieved by the *target_year*).  Because all computations require units, the *target_base_year_unit* is needed so that target quantities can be compared with other emissions, production, and intensity data.
 
 Some companies have set more than just one short-term target.  In that
 case, additional rows of target data can be set, one for each
@@ -170,7 +170,7 @@ initial amount as rounding down to zero.
 Installation Notes
 ------------------
 
-The first step is to request an invitation to join the OS-Climate GitHub team.  This is required to access repositories that are not yet public.  (They will be published soon, but not yet.)  You will need a Personal Access Token, which you can get by `following these instructions <https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token>` .
+The first step is to request an invitation to join the OS-Climate GitHub team.  This is required to access repositories that are not yet public.  (They will be published soon, but not yet.)  You will need a Personal Access Token, which you can get by following these instructions: <https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token>.  Because the ITR repository is currently Private, you will need to select :code:`repo` privileges (the first option box) when requesting the token.  GitHub will magically select all the boxes indented under the `repo` option.
 
 **Getting Started with conda**
 
@@ -179,59 +179,59 @@ If you don't already have a conda environment, you'll need to download one from
 If you are installing conda on a Windows system, follow these instructions: https://conda.io/projects/conda/en/latest/user-guide/install/windows.html
 You will want to open the Anaconda PowerShell after installation, which you can do from the Start menu.
 
-If you are on OSX, you will need to install parts of the (utterly massive) Xcode system.  The subset you'll need can be installed by typing `xcode-select --install` into a Terminal window (which you can open from Applications>Utilities>Terminal).  Thought it is tempting to install the `.pkg ` version of miniconda, there's nothing user-friendly about how OSX tries to manage its own concepts of system security.  It is easier to start from the `bash` version and follow those instructions.  For other installation instructions, please read https://conda.io/projects/conda/en/latest/user-guide/install/macos.html
+If you are on OSX, you will need to install parts of the (utterly massive) Xcode system.  The subset you'll need can be installed by typing :code:`xcode-select --install` into a Terminal window (which you can open from Applications>Utilities>Terminal).  Thought it is tempting to install the :code:`.pkg ` version of miniconda, there's nothing user-friendly about how OSX tries to manage its own concepts of system security.  It is easier to start from the :code:`bash` version and follow those instructions.  For other installation instructions, please read https://conda.io/projects/conda/en/latest/user-guide/install/macos.html
 
 For Linux: https://conda.io/projects/conda/en/latest/user-guide/install/linux.html.  And note that you don't have to use the fish shell.  You can use bash, csh, sh, zsh, or whatever is your favorite shell.
 
-You will know you have succeeded in the installation and initialization of conda when you can type `conda info -e` and see an environent listed as base.  If your shell cannot find a conda to run, it likely means you have not yet run `conda init --all`
+You will know you have succeeded in the installation and initialization of conda when you can type :code:`conda info -e` and see an environent listed as base.  If your shell cannot find a conda to run, it likely means you have not yet run :code:`conda init --all`
 
 **Getting Started with Git**
 
-You will use `git` to access the ITR source code.  You can install git from conda thusly: `conda install -c conda-forge git`.  But you can also get it other ways: https://github.com/git-guides/install-git
+You will use :code:`git` to access the ITR source code.  You can install git from conda thusly: :code:`conda install -c conda-forge git`.  But you can also get it other ways: https://github.com/git-guides/install-git
 
 **Installing the ITR environment and running the Notebook**
 
 With your conda shell and environment running,  with git installed, and starting from the directory in which you want to do the testing:
 
-1. Set GITHUB_TOKEN to your GitHub access token (windows `$Env:GITHUB_TOKEN = "your_github_token"`) (OSX/Linux: `export GITHUB_TOKEN=your_github_token`)
-2. Clone the ITR repository: `git clone https://github.com/os-climate/ITR.git`
-3. Change your directory to the top-level ITR directory: `cd ITR`
-4. Switch to the correct branch: `git checkout develop-pint-steel-projections`
-5. create the `conda` itr_env: `conda env create -f environment.yml`
-6. Activate that environment: `conda activate itr_env`
-7. Install the ITR libraries to your local environment: `pip install -e .` (you may need `--no-cache-dir` on windows to avoid permissions errors)
-8. Change to the `examples` directory
-9. Start your notebook: `jupyter-lab`.  This should cause your default browser to pop to the front and open a page with a Jupyter Notebook.
-10. Make the file browser to the left of the notebook wide enough to expose the full names of the files in the `examples` directory.  You should see a file named `quick_template_score_calc.ipynb`.  Double click on that file to open it.
-11. Run the notebook with a fresh kernel by pressing the `>>` button.  Accept the option to Restart Kernel and clear all previous variables.
+1. Set GITHUB_TOKEN to your GitHub access token (windows :code`$Env:GITHUB_TOKEN = "your_github_token"`) (OSX/Linux: :code:`export GITHUB_TOKEN=your_github_token`)
+2. Clone the ITR repository: :code:`git clone https://github.com/os-climate/ITR.git`
+3. Change your directory to the top-level ITR directory: :code:`cd ITR`
+4. Switch to the correct branch: :code:`git checkout develop-pint-steel-projections`
+5. create the conda itr_env: :code:`conda env create -f environment.yml`
+6. Activate that environment: :code:`conda activate itr_env`
+7. Install the ITR libraries to your local environment: :code:`pip install -e .` (you may need :code:--no-cache-dir` on windows to avoid permissions errors; please also note that the `.` character is part of the :code:`pip install -e .` command)
+8. Change to the *examples* directory: :code:`cd ITR/examples`
+9. Start your notebook: code:`jupyter-lab`.  This should cause your default browser to pop to the front and open a page with a Jupyter Notebook.
+10. Make the file browser to the left of the notebook wide enough to expose the full names of the files in the *examples* directory.  You should see a file named :code:`quick_template_score_calc.ipynb`.  Double click on that file to open it.
+11. Run the notebook with a fresh kernel by pressing the :code:`>>` button.  Accept the option to Restart Kernel and clear all previous variables.
 
-The brackets listed near the top left corner of each executable cell will change from `[ ]` (before running the notebook) to `[*]` while the cell's computation is pending, to a number (such as `[5]` for the 5th cell) when computation is complete.  If everything is working, you will see text output, graphical output, and a newly created `data_dump.xlsx` file representing the input porfolio, enhanced with temperature score data.
+The brackets listed near the top left corner of each executable cell will change from :code:`[ ]` (before running the notebook) to :code:`[*]` while the cell's computation is pending, to a number (such as :code:`[5]` for the 5th cell) when computation is complete.  If everything is working, you will see text output, graphical output, and a newly created `data_dump.xlsx` file representing the input porfolio, enhanced with temperature score data.
 
 **Loading your own data**
 
-1. Place your portfolio data file under the subdirectory named 'data' (found under the 'examples' directory).
-2. Start your notebook: `jupyter-lab`
-3. Open the file `quick_template_score_calc.ipynb`
+1. Place your portfolio data file under the subdirectory named *data* (found under the *examples* directory).
+2. Start your notebook: :code:`jupyter-lab`
+3. Open the file :code:`quick_template_score_calc.ipynb`
 4. Scroll down to the section 'Download/load the sample template data'
-5. Change the filename of the .xlsx in the line: for filename in ['data/<your_filename.xlsx>',
-6. Change the filename of the .xlsx in the line: template_data_path = "data/<your_filename.xlsx>"
-7. Run the notebook with a fresh kernel by pressing the `>>` button.  Accept the option to Restart Kernel and clear all previous variables.
+5. Change the filename of the .xlsx in the line: :code:`for filename in ['data/<your_filename.xlsx>',`
+6. Change the filename of the .xlsx in the line: :code:`template_data_path = "data/<your_filename.xlsx>"`
+7. Run the notebook with a fresh kernel by pressing the :code:`>>` button.  Accept the option to Restart Kernel and clear all previous variables.
 
 **Running the ITR Notebook Post Install**
 
 1. Open GitHub Desktop
 2. Open the Anaconda PowerShell
-3. Set GITHUB_TOKEN to your GitHub access token (windows `$Env:GITHUB_TOKEN = "your_github_token"`) (OSX/Linux: `export GITHUB_TOKEN=your_github_token`)
-4. Activate the ITR environment by typing the following command: `conda activate itr_env`
-5. Navigate to the 'examples' subdirectory under your GitHub ITR directory
-6. Start your notebook: `jupyter-lab`
-7. Open the file `quick_template_score_calc.ipynb`
-8. Run the notebook with a fresh kernel by pressing the `>>` button.  Accept the option to Restart Kernel and clear all previous variables.
+3. Set GITHUB_TOKEN to your GitHub access token (windows :code:`$Env:GITHUB_TOKEN = "your_github_token"`) (OSX/Linux: :code:`export GITHUB_TOKEN=your_github_token`)
+4. Activate the ITR environment by typing the following command: :code:`conda activate itr_env`
+5. Navigate to the *examples* subdirectory under your GitHub ITR directory
+6. Start your notebook: :code:`jupyter-lab`
+7. Open the file :code:`quick_template_score_calc.ipynb`
+8. Run the notebook with a fresh kernel by pressing the :code:`>>` button.  Accept the option to Restart Kernel and clear all previous variables.
 
 Filing Issues and Updating the ITR Repository
 ---------------------------------------------
 
-Once you are able to run the `quick_template_score_calc.ipynb` sample notebook with the provided sample data (`examples/data/20220306 ITR Tool Sample Data.xlsx`), you are ready to start trying things with your own data.  The notebook explains how to do this at the heading labeled `Download/load the sample template data` before Cell 6.  As you try loading your own data, you will inevitably find errors--sometimes with the data you receive, sometimes with the data you present to the tool, sometimes with the way the tool loads or does not load your data, sometimes with the way the tool interprets or presents your data.  It is the goal of the Data Commons to streamline and simplify access to data so as to reduce the first to cases of errors, and it is the goal of the ITR project team to continuously improve the ITR tool to reduce the other cases of errors.  In all cases, the correction of errors begins with an error reporting process and ends with an effective update process.
+Once you are able to run the `quick_template_score_calc.ipynb` sample notebook with the provided sample data (:code:`examples/data/20220306 ITR Tool Sample Data.xlsx`), you are ready to start trying things with your own data.  The notebook explains how to do this at the heading labeled :code:`Download/load the sample template data` before Cell 6.  As you try loading your own data, you will inevitably find errors--sometimes with the data you receive, sometimes with the data you present to the tool, sometimes with the way the tool loads or does not load your data, sometimes with the way the tool interprets or presents your data.  It is the goal of the Data Commons to streamline and simplify access to data so as to reduce the first to cases of errors, and it is the goal of the ITR project team to continuously improve the ITR tool to reduce the other cases of errors.  In all cases, the correction of errors begins with an error reporting process and ends with an effective update process.
 
 To report errors, please use the GitHub Issues interface for the ITR tool: https://github.com/os-climate/ITR/issues
 
@@ -242,11 +242,11 @@ The collective actions of many people reporting issues and many people working c
 At some point you will receive notice that your issue has been addressed with a new release.  There are two ways you can update to the new release.  The first (and least efficient) way is to run the installation process from top to bottom, using a new directory for the installation.  For most of us, this takes about 10 minutes, but it can take longer for various reasons.  The second way takes less than a minute:
 
 1. Close your jupyter-lab browser tab and shut down the jupyter-lab server (typing Ctrl-C or some such in the shell)
-2. Change your directory to the top of your ITR tree: cd ~/os-climate/ITR (or some such)
+2. Change your directory to the top of your ITR tree: :code:`cd ~/os-climate/ITR` (or some such)
 3. Pull changes from upstream: git pull
 4. If git complains that you have modified some files (such as your notebook, which is "modified" every time you run it), you can
-   1. remove the notebook file: rm examples/data/20220306\ ITR\ Tool\ Sample\ Data.xlsx
-   2. restore it from the updated repository: git restore examples/data/20220306\ ITR\ Tool\ Sample\ Data.xlsx
+   1. remove the notebook file: :code:`rm examples/data/20220306\ ITR\ Tool\ Sample\ Data.xlsx`
+   2. restore it from the updated repository: :code:`git restore examples/data/20220306\ ITR\ Tool\ Sample\ Data.xlsx`
 5. Restart your jupyter-lab server
 
 Over time you may do other things to your local repository that makes it difficult to sync with git.  You can file an issue for help, you can do your own research (many of us find answers on github community forums or StackOverflow), or you can go with Option #1: run the installation process from top to bottom in a new directory.
diff --git a/examples/data/20220215 ITR Tool Sample Data.xlsx b/examples/data/20220215 ITR Tool Sample Data.xlsx
index 5d03398a..4ceeb2c0 100644
Binary files a/examples/data/20220215 ITR Tool Sample Data.xlsx and b/examples/data/20220215 ITR Tool Sample Data.xlsx differ
diff --git a/examples/data/20220415 ITR Tool Sample Data.xlsx b/examples/data/20220415 ITR Tool Sample Data.xlsx
index 6218aaa5..e5a395db 100644
Binary files a/examples/data/20220415 ITR Tool Sample Data.xlsx and b/examples/data/20220415 ITR Tool Sample Data.xlsx differ
diff --git a/examples/quick_temp_score_calculation.ipynb b/examples/quick_temp_score_calculation.ipynb
index 0743c5dd..6ba879e1 100644
--- a/examples/quick_temp_score_calculation.ipynb
+++ b/examples/quick_temp_score_calculation.ipynb
@@ -18,7 +18,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 1,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -69,7 +69,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 2,
+   "execution_count": null,
    "metadata": {
     "tags": []
    },
@@ -88,18 +88,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 3,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "1 CO2e\n",
-      "1 CO2e * gigametric_ton\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "one_co2 = ureg(\"CO2e\")\n",
     "print(one_co2)\n",
@@ -121,7 +112,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 4,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -156,7 +147,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 5,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -175,7 +166,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
+   "execution_count": null,
    "metadata": {
     "tags": []
    },
@@ -186,7 +177,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 7,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -195,7 +186,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 8,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -205,7 +196,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 9,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -224,7 +215,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 10,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -233,90 +224,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 11,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>company_name</th>\n",
-       "      <th>company_id</th>\n",
-       "      <th>company_isin</th>\n",
-       "      <th>investment_value</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>0</th>\n",
-       "      <td>Company AG</td>\n",
-       "      <td>US0079031078</td>\n",
-       "      <td>US0079031078</td>\n",
-       "      <td>35000000</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>1</th>\n",
-       "      <td>Company AH</td>\n",
-       "      <td>US00724F1012</td>\n",
-       "      <td>US00724F1012</td>\n",
-       "      <td>10000000</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>2</th>\n",
-       "      <td>Company AI</td>\n",
-       "      <td>FR0000125338</td>\n",
-       "      <td>FR0000125338</td>\n",
-       "      <td>10000000</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>3</th>\n",
-       "      <td>Company AJ</td>\n",
-       "      <td>US17275R1023</td>\n",
-       "      <td>US17275R1023</td>\n",
-       "      <td>10000000</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>4</th>\n",
-       "      <td>Company AK</td>\n",
-       "      <td>CH0198251305</td>\n",
-       "      <td>CH0198251305</td>\n",
-       "      <td>10000000</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "  company_name    company_id  company_isin  investment_value\n",
-       "0   Company AG  US0079031078  US0079031078          35000000\n",
-       "1   Company AH  US00724F1012  US00724F1012          10000000\n",
-       "2   Company AI  FR0000125338  FR0000125338          10000000\n",
-       "3   Company AJ  US17275R1023  US17275R1023          10000000\n",
-       "4   Company AK  CH0198251305  CH0198251305          10000000"
-      ]
-     },
-     "execution_count": 11,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
+   "outputs": [],
    "source": [
     "df_portfolio.head(5)"
    ]
@@ -330,7 +240,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 12,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -347,7 +257,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 13,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -368,132 +278,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 14,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "/Users/michael/opt/miniconda3/envs/jupyter/lib/python3.10/site-packages/pint_pandas/pint_array.py:648: UnitStrippedWarning: The unit of the quantity is stripped when downcasting to ndarray.\n",
-      "  return np.array(qtys, dtype=\"object\", copy=copy)\n",
-      "/Users/michael/opt/miniconda3/envs/jupyter/lib/python3.10/site-packages/pint_pandas/pint_array.py:648: UnitStrippedWarning: The unit of the quantity is stripped when downcasting to ndarray.\n",
-      "  return np.array(qtys, dtype=\"object\", copy=copy)\n"
-     ]
-    },
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>company_name</th>\n",
-       "      <th>time_frame</th>\n",
-       "      <th>scope</th>\n",
-       "      <th>temperature_score</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>0</th>\n",
-       "      <td>Company AG</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.05</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>1</th>\n",
-       "      <td>Company AH</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.22</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>2</th>\n",
-       "      <td>Company AI</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.06</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>3</th>\n",
-       "      <td>Company AJ</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.01</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>4</th>\n",
-       "      <td>Company AK</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.93</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>5</th>\n",
-       "      <td>Company AL</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.78</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>6</th>\n",
-       "      <td>Company AM</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.71</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>7</th>\n",
-       "      <td>Company AN</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.34</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>8</th>\n",
-       "      <td>Company AO</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.21</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "  company_name time_frame scope temperature_score\n",
-       "0   Company AG       LONG  S1S2              2.05\n",
-       "1   Company AH       LONG  S1S2              2.22\n",
-       "2   Company AI       LONG  S1S2              2.06\n",
-       "3   Company AJ       LONG  S1S2              2.01\n",
-       "4   Company AK       LONG  S1S2              1.93\n",
-       "5   Company AL       LONG  S1S2              1.78\n",
-       "6   Company AM       LONG  S1S2              1.71\n",
-       "7   Company AN       LONG  S1S2              1.34\n",
-       "8   Company AO       LONG  S1S2              2.21"
-      ]
-     },
-     "execution_count": 14,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
+   "outputs": [],
    "source": [
     "amended_portfolio[['company_name', 'time_frame', 'scope', 'temperature_score']].head(9)"
    ]
@@ -508,7 +295,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 15,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -517,26 +304,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 16,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "1.8100000000000003 delta_degree_Celsius"
-      ],
-      "text/latex": [
-       "$1.8100000000000003\\ \\mathrm{delta\\_degree\\_Celsius}$"
-      ],
-      "text/plain": [
-       "1.8100000000000003 <Unit('delta_degree_Celsius')>"
-      ]
-     },
-     "execution_count": 16,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
+   "outputs": [],
    "source": [
     "aggregated_scores.long.S1S2.all.score"
    ]
@@ -557,7 +327,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 17,
+   "execution_count": null,
    "metadata": {
     "scrolled": true
    },
@@ -585,22 +355,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 18,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "image/png": "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\n",
-      "text/plain": [
-       "<Figure size 129.6x230.4 with 2 Axes>"
-      ]
-     },
-     "metadata": {
-      "needs_background": "light"
-     },
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "analysis_parameters = ([ETimeFrames.LONG], [EScope.S1S2], grouping)\n",
     "plot_grouped_heatmap(grouped_aggregations, analysis_parameters)"
@@ -608,163 +365,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 19,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>group</th>\n",
-       "      <th>company_name</th>\n",
-       "      <th>company_id</th>\n",
-       "      <th>temperature_score</th>\n",
-       "      <th>contribution_relative</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>0</th>\n",
-       "      <td>Steel-Asia</td>\n",
-       "      <td>Company L</td>\n",
-       "      <td>BR0000000012</td>\n",
-       "      <td>1.88 delta_degree_Celsius</td>\n",
-       "      <td>11.230585424133812 percent</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>1</th>\n",
-       "      <td>Steel-Asia</td>\n",
-       "      <td>Company H</td>\n",
-       "      <td>CN0000000008</td>\n",
-       "      <td>1.84 delta_degree_Celsius</td>\n",
-       "      <td>10.991636798088411 percent</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>2</th>\n",
-       "      <td>Steel-Asia</td>\n",
-       "      <td>Company E</td>\n",
-       "      <td>SE0000000005</td>\n",
-       "      <td>1.81 delta_degree_Celsius</td>\n",
-       "      <td>10.812425328554362 percent</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>3</th>\n",
-       "      <td>Steel-Asia</td>\n",
-       "      <td>Company G</td>\n",
-       "      <td>CN0000000007</td>\n",
-       "      <td>1.78 delta_degree_Celsius</td>\n",
-       "      <td>10.63321385902031 percent</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>4</th>\n",
-       "      <td>Steel-Asia</td>\n",
-       "      <td>Company D</td>\n",
-       "      <td>SE0000000004</td>\n",
-       "      <td>1.76 delta_degree_Celsius</td>\n",
-       "      <td>10.51373954599761 percent</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>5</th>\n",
-       "      <td>Steel-Asia</td>\n",
-       "      <td>Company C</td>\n",
-       "      <td>IT0000000003</td>\n",
-       "      <td>1.72 delta_degree_Celsius</td>\n",
-       "      <td>10.274790919952212 percent</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>6</th>\n",
-       "      <td>Steel-Asia</td>\n",
-       "      <td>Company AW</td>\n",
-       "      <td>US7134481081</td>\n",
-       "      <td>1.19 delta_degree_Celsius</td>\n",
-       "      <td>7.1087216248506575 percent</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>7</th>\n",
-       "      <td>Steel-Asia</td>\n",
-       "      <td>Company A</td>\n",
-       "      <td>JP0000000001</td>\n",
-       "      <td>1.19 delta_degree_Celsius</td>\n",
-       "      <td>7.1087216248506575 percent</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>8</th>\n",
-       "      <td>Steel-Asia</td>\n",
-       "      <td>Company F</td>\n",
-       "      <td>NL0000000006</td>\n",
-       "      <td>1.19 delta_degree_Celsius</td>\n",
-       "      <td>7.1087216248506575 percent</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>9</th>\n",
-       "      <td>Steel-Asia</td>\n",
-       "      <td>Company I</td>\n",
-       "      <td>CN0000000009</td>\n",
-       "      <td>1.19 delta_degree_Celsius</td>\n",
-       "      <td>7.1087216248506575 percent</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>10</th>\n",
-       "      <td>Steel-Asia</td>\n",
-       "      <td>Company J</td>\n",
-       "      <td>BR0000000010</td>\n",
-       "      <td>1.19 delta_degree_Celsius</td>\n",
-       "      <td>7.1087216248506575 percent</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "         group company_name    company_id          temperature_score  \\\n",
-       "0   Steel-Asia    Company L  BR0000000012  1.88 delta_degree_Celsius   \n",
-       "1   Steel-Asia    Company H  CN0000000008  1.84 delta_degree_Celsius   \n",
-       "2   Steel-Asia    Company E  SE0000000005  1.81 delta_degree_Celsius   \n",
-       "3   Steel-Asia    Company G  CN0000000007  1.78 delta_degree_Celsius   \n",
-       "4   Steel-Asia    Company D  SE0000000004  1.76 delta_degree_Celsius   \n",
-       "5   Steel-Asia    Company C  IT0000000003  1.72 delta_degree_Celsius   \n",
-       "6   Steel-Asia   Company AW  US7134481081  1.19 delta_degree_Celsius   \n",
-       "7   Steel-Asia    Company A  JP0000000001  1.19 delta_degree_Celsius   \n",
-       "8   Steel-Asia    Company F  NL0000000006  1.19 delta_degree_Celsius   \n",
-       "9   Steel-Asia    Company I  CN0000000009  1.19 delta_degree_Celsius   \n",
-       "10  Steel-Asia    Company J  BR0000000010  1.19 delta_degree_Celsius   \n",
-       "\n",
-       "         contribution_relative  \n",
-       "0   11.230585424133812 percent  \n",
-       "1   10.991636798088411 percent  \n",
-       "2   10.812425328554362 percent  \n",
-       "3    10.63321385902031 percent  \n",
-       "4    10.51373954599761 percent  \n",
-       "5   10.274790919952212 percent  \n",
-       "6   7.1087216248506575 percent  \n",
-       "7   7.1087216248506575 percent  \n",
-       "8   7.1087216248506575 percent  \n",
-       "9   7.1087216248506575 percent  \n",
-       "10  7.1087216248506575 percent  "
-      ]
-     },
-     "execution_count": 19,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
+   "outputs": [],
    "source": [
     "region =  'Asia'\n",
     "sector = 'Steel'\n",
@@ -794,18 +397,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 20,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "/Users/michael/opt/miniconda3/envs/jupyter/lib/python3.10/site-packages/pandas/core/dtypes/cast.py:1981: UnitStrippedWarning: The unit of the quantity is stripped when downcasting to ndarray.\n",
-      "  result[:] = values\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "time_frames = [ETimeFrames.LONG]\n",
     "scopes = [EScope.S1S2]\n",
@@ -822,22 +416,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 21,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "image/png": "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vXv3/rpq+phjjll6ww03fDF8+PA9brrppnkHHnjgmrq2r+7NN99sNW/evOYnnnji8pqWT5o0qfV9993Xefz48fNq28fIkSN3f+yxx/4LcM8993QqKytbnOzxn3nmmXY333xz0auvvjqnat6xxx4bO+KII5afccYZy6699tquF1988ZJ27dptTjxWly5dNrVu3XrvNWvW/KeioqLZueee2/P555+fW/31PPjggx1mzJjR6oYbbvgi2UyZRsWZiIhIhFq0aLF55syZyfSvTMqUKVNaT5kypU1NxdmGDRs48MAD19RX8E2cOHEOwKxZs5rfe++9XRtSnNXnrrvuKjrrrLOWVhVnVcdKFIvFNjz//PNzYevXc8oppywHaiw8s0Xanm8VERGRwOOPP95+8ODBffv3799vzJgxuy5fvjwPYOLEia333nvvvnvssUf/vfbaq9+XX36Zf+ONN+709NNP79C3b9/+f/7zn3e45JJLdjr55JN3PuCAA3ofc8wxuzzzzDPtDjrooN0Bli9fnnfcccfF+vTp079Pnz79x48f3xGge/fuey1cuLBg3LhxPebNm9eib9++/c8555weRx999C4PPPBAx6pcRx555C4PPvhgh2Rfx/XXX9910aJFzUaOHNln33337ZN4rMT1Zs2a1bx37957rl271qq/nltuuaXz97///V4ACxYsKPjOd76z24ABA/oNGDCg34svvtgGIB6Pt+3bt2//vn379u/Xr1//ZcuWZVS9k1FhRUREss26devyqgqJqgIkcfnChQsLbrjhhm6TJk2a/eGHH340ZMiQNdddd13R2rVr7ZRTTtntD3/4w2ezZs36cOLEibPat2+/6fLLL18wduzYZTNnzvzwrLPOWgbw/vvvt37hhRfmPP300/9N3HdZWVm39u3bb5o9e/aHs2fP/rCkpGRl4vKbb755fs+ePdfNnDnzw7vuumv+WWedtXj8+PGdAb788sv8qVOntj3hhBOSbsW66qqrFnXt2nXDxIkTZ7/11luz61u/ZcuWXtPrqXLOOef0vOSSSyqnT5/+0YQJEz4599xzY2HuHW+55ZZPZ86c+eHkyZNntm3bdnOyGdOBTmuKiIhEqL7Tmq+99lqbTz75pOXw4cP7AmzYsMGGDh266v3332/ZtWvXDSNHjlwD0KlTp1oLkNGjR3/Vtm3bra5KnTRpUvtHHnlkbtV0YWHhprqylpSUrLrooot2/vzzzwsefPDBHUpKSpY1a9Zsi3XMrMarX2ubvz3eeOON9h9//HGrqulVq1blL1u2LK+4uHjVpZde2vOEE05YevLJJy/bbbfdVJyJiIhI43B3RowYsaJ6q9dbb73VKtmCp02bNjUWJ+5e031r63TCCSd8ec8993R67LHHOt13330V1Zd37dp14/Lly7eoL5YtW1ZQWFi4sUEHSoK7M2XKlI+qF5433HDDF0cfffTyJ598ssP+++/f7/nnn5+99957r23s46eKirMcFiuLtwA6E/weJD7yw6/rgEpgaUV5icYBkpwQK4sXAl3DyU21PNZUlJdkdYdkSR+jRo1aPW7cuF7Tp09vMWDAgHUrV67M++9//9ts0KBBaysrK5tPnDix9ciRI9csW7Ysr23btpvbt2+/adWqVUl1Wxo1atSK3/3ud13vu+++eQCLFy/OT2w969Chw6bVq1dvsa9zzz13yb777tuvS5cuG4YNG7ZVwTNgwIB1lZWVzd59992WQ4YMWTt79uzmM2fObFVcXPw1QJs2bTYtX748r1u3bkm9/rpez4gRI1b8+te/7nrddddVQnCl6v777//1jBkzWgwfPvzr4cOHf/3WW2+1mT59eksVZ5I2wg+aYUBvYHdgN6AnsBNBYZaMDbGy+GLgC4JirRL4GHgXmFpRXtJoV/GIpFqsLN4FKCa40XqPhEf38NEiyf2sIrjl1DygApiV8Pikorwko06jSCCZoS8aW1Wfs6rpgw8+ePntt9/+edX0TjvttPGuu+6qOOmkk3Zdv369AVx99dWfDxw4cN2DDz74yYUXXthr7dq1eS1bttw8adKk2WPGjFl50003devbt2//cePGLazr2DfeeOPCM844o1fv3r33zMvL8yuuuGLBaaed9lXV8h133HHT0KFDV/Xu3XvPgw8+ePldd901v2fPnht32223tWPHjv2qpn22atXK/+///m/uGWecEVu3bl1eQUGB33bbbZ927tx5E8Bpp522ZMyYMb27du26IZl+Z3W9nrvvvnvemWee2atPnz79N23aZPvuu+/K/fff/7Pf/OY3Xd988832eXl53qdPn6+PO+64jPpnSjc+zyKxsrgBewAHhI8RBEVZqs0DpiY8Xq8oL1nVBMcVqVesLF79PdGnCQ67HJgE/DN8fKDW5/T0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\n",
-      "text/plain": [
-       "<Figure size 720x540 with 3 Axes>"
-      ]
-     },
-     "metadata": {
-      "needs_background": "light"
-     },
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "plot_grouped_statistics(aggregated_portfolio, company_contributions, analysis_parameters)"
    ]
@@ -853,175 +434,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 22,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>company_name</th>\n",
-       "      <th>company_id</th>\n",
-       "      <th>sector</th>\n",
-       "      <th>contribution</th>\n",
-       "      <th>temperature_score</th>\n",
-       "      <th>ownership_percentage</th>\n",
-       "      <th>portfolio_percentage</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>11</th>\n",
-       "      <td>Company L</td>\n",
-       "      <td>BR0000000012</td>\n",
-       "      <td>Steel</td>\n",
-       "      <td>3.1959201019974492 percent</td>\n",
-       "      <td>1.88 delta_degree_Celsius</td>\n",
-       "      <td>0.15</td>\n",
-       "      <td>3.08</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>12</th>\n",
-       "      <td>Company H</td>\n",
-       "      <td>CN0000000008</td>\n",
-       "      <td>Steel</td>\n",
-       "      <td>3.1279218019549506 percent</td>\n",
-       "      <td>1.84 delta_degree_Celsius</td>\n",
-       "      <td>0.18</td>\n",
-       "      <td>3.08</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>13</th>\n",
-       "      <td>Company E</td>\n",
-       "      <td>SE0000000005</td>\n",
-       "      <td>Steel</td>\n",
-       "      <td>3.076923076923076 percent</td>\n",
-       "      <td>1.81 delta_degree_Celsius</td>\n",
-       "      <td>3.39</td>\n",
-       "      <td>3.08</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>15</th>\n",
-       "      <td>Company G</td>\n",
-       "      <td>CN0000000007</td>\n",
-       "      <td>Steel</td>\n",
-       "      <td>3.0259243518912022 percent</td>\n",
-       "      <td>1.78 delta_degree_Celsius</td>\n",
-       "      <td>0.05</td>\n",
-       "      <td>3.08</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>16</th>\n",
-       "      <td>Company D</td>\n",
-       "      <td>SE0000000004</td>\n",
-       "      <td>Steel</td>\n",
-       "      <td>2.991925201869953 percent</td>\n",
-       "      <td>1.76 delta_degree_Celsius</td>\n",
-       "      <td>0.48</td>\n",
-       "      <td>3.08</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>17</th>\n",
-       "      <td>Company AV</td>\n",
-       "      <td>US6293775085</td>\n",
-       "      <td>Steel</td>\n",
-       "      <td>2.991925201869953 percent</td>\n",
-       "      <td>1.76 delta_degree_Celsius</td>\n",
-       "      <td>0.14</td>\n",
-       "      <td>3.08</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>18</th>\n",
-       "      <td>Company K</td>\n",
-       "      <td>BR0000000011</td>\n",
-       "      <td>Steel</td>\n",
-       "      <td>2.9579260518487036 percent</td>\n",
-       "      <td>1.74 delta_degree_Celsius</td>\n",
-       "      <td>1.01</td>\n",
-       "      <td>3.08</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>19</th>\n",
-       "      <td>Company C</td>\n",
-       "      <td>IT0000000003</td>\n",
-       "      <td>Steel</td>\n",
-       "      <td>2.923926901827454 percent</td>\n",
-       "      <td>1.72 delta_degree_Celsius</td>\n",
-       "      <td>0.34</td>\n",
-       "      <td>3.08</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>21</th>\n",
-       "      <td>Company B</td>\n",
-       "      <td>NL0000000002</td>\n",
-       "      <td>Steel</td>\n",
-       "      <td>2.4989375265618357 percent</td>\n",
-       "      <td>1.47 delta_degree_Celsius</td>\n",
-       "      <td>1.51</td>\n",
-       "      <td>3.08</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>23</th>\n",
-       "      <td>Company A</td>\n",
-       "      <td>JP0000000001</td>\n",
-       "      <td>Steel</td>\n",
-       "      <td>2.022949426264343 percent</td>\n",
-       "      <td>1.19 delta_degree_Celsius</td>\n",
-       "      <td>1.07</td>\n",
-       "      <td>3.08</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "   company_name    company_id sector                contribution  \\\n",
-       "11    Company L  BR0000000012  Steel  3.1959201019974492 percent   \n",
-       "12    Company H  CN0000000008  Steel  3.1279218019549506 percent   \n",
-       "13    Company E  SE0000000005  Steel   3.076923076923076 percent   \n",
-       "15    Company G  CN0000000007  Steel  3.0259243518912022 percent   \n",
-       "16    Company D  SE0000000004  Steel   2.991925201869953 percent   \n",
-       "17   Company AV  US6293775085  Steel   2.991925201869953 percent   \n",
-       "18    Company K  BR0000000011  Steel  2.9579260518487036 percent   \n",
-       "19    Company C  IT0000000003  Steel   2.923926901827454 percent   \n",
-       "21    Company B  NL0000000002  Steel  2.4989375265618357 percent   \n",
-       "23    Company A  JP0000000001  Steel   2.022949426264343 percent   \n",
-       "\n",
-       "            temperature_score  ownership_percentage  portfolio_percentage  \n",
-       "11  1.88 delta_degree_Celsius                  0.15                  3.08  \n",
-       "12  1.84 delta_degree_Celsius                  0.18                  3.08  \n",
-       "13  1.81 delta_degree_Celsius                  3.39                  3.08  \n",
-       "15  1.78 delta_degree_Celsius                  0.05                  3.08  \n",
-       "16  1.76 delta_degree_Celsius                  0.48                  3.08  \n",
-       "17  1.76 delta_degree_Celsius                  0.14                  3.08  \n",
-       "18  1.74 delta_degree_Celsius                  1.01                  3.08  \n",
-       "19  1.72 delta_degree_Celsius                  0.34                  3.08  \n",
-       "21  1.47 delta_degree_Celsius                  1.51                  3.08  \n",
-       "23  1.19 delta_degree_Celsius                  1.07                  3.08  "
-      ]
-     },
-     "execution_count": 22,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
+   "outputs": [],
    "source": [
     "sector_contributions = company_contributions[['company_name', 'company_id', 'sector', 'contribution', 'temperature_score', 'ownership_percentage', 'portfolio_percentage']]\n",
     "sector_contributions.loc[sector_contributions['sector'] == 'Steel'][:10].round(2)"
@@ -1041,7 +456,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 23,
+   "execution_count": null,
    "metadata": {
     "pycharm": {
      "name": "#%%\n"
diff --git a/examples/quick_template_score_calc.ipynb b/examples/quick_template_score_calc.ipynb
index 9c8db3dd..58f3ef64 100644
--- a/examples/quick_template_score_calc.ipynb
+++ b/examples/quick_template_score_calc.ipynb
@@ -40,7 +40,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 1,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -60,36 +60,18 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 2,
+   "execution_count": null,
    "metadata": {
     "tags": []
    },
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "['/opt/app-root/src/ITR/examples',\n",
-       " '/usr/lib64/python38.zip',\n",
-       " '/usr/lib64/python3.8',\n",
-       " '/usr/lib64/python3.8/lib-dynload',\n",
-       " '',\n",
-       " '/opt/app-root/lib64/python3.8/site-packages',\n",
-       " '/opt/app-root/src/osc-ingest-tools',\n",
-       " '/opt/app-root/src/ITR',\n",
-       " '/opt/app-root/lib/python3.8/site-packages']"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "display(sys.path)"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 3,
+   "execution_count": null,
    "metadata": {
     "tags": []
    },
@@ -112,20 +94,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 4,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Testing unit registry\n",
-      "=====================\n",
-      "The gas species CO2e, which was a gwp of 1: 1 CO2e\n",
-      "A gigaton of CO2e: 1 CO2e * gigametric_ton\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "print(\"Testing unit registry\\n=====================\")\n",
     "one_co2 = ureg(\"CO2e\")\n",
@@ -146,7 +117,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 5,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -202,7 +173,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -249,7 +220,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 7,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -268,7 +239,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 8,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -304,19 +275,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 9,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Benchmark Temperature = 1.5 delta_degree_Celsius\n",
-      "Benchmark Global Budget = 521.0526315789474 CO2 * gigametric_ton\n",
-      "AFOLU included = False\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "template_provider = DataWarehouse(template_company_data, base_production_bm, base_intensity_bm)\n",
     "\n",
@@ -340,102 +301,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 10,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>company_name</th>\n",
-       "      <th>company_lei</th>\n",
-       "      <th>company_id</th>\n",
-       "      <th>company_isin</th>\n",
-       "      <th>investment_value</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>48</th>\n",
-       "      <td>Versant Power</td>\n",
-       "      <td>NQZVQT2P5IUF2PGA1Q48</td>\n",
-       "      <td>CA2908761018</td>\n",
-       "      <td>CA2908761018</td>\n",
-       "      <td>111916</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>49</th>\n",
-       "      <td>Vistra Corp.</td>\n",
-       "      <td>549300KP43CPCUJOOG15</td>\n",
-       "      <td>US92840M1027</td>\n",
-       "      <td>US92840M1027</td>\n",
-       "      <td>53489</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>50</th>\n",
-       "      <td>WEC Energy Group</td>\n",
-       "      <td>549300IGLYTZUK3PVP70</td>\n",
-       "      <td>US92939U1060</td>\n",
-       "      <td>US92939U1060</td>\n",
-       "      <td>45957</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>51</th>\n",
-       "      <td>WORTHINGTON INDUSTRIES INC</td>\n",
-       "      <td>1WRCIANKYOIK6KYE5E82</td>\n",
-       "      <td>US9818111026</td>\n",
-       "      <td>US9818111026</td>\n",
-       "      <td>236587</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>52</th>\n",
-       "      <td>Xcel Energy, Inc.</td>\n",
-       "      <td>LGJNMI9GH8XIDG5RCM61</td>\n",
-       "      <td>US98389B1008</td>\n",
-       "      <td>US98389B1008</td>\n",
-       "      <td>46170</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "                  company_name           company_lei    company_id  \\\n",
-       "48               Versant Power  NQZVQT2P5IUF2PGA1Q48  CA2908761018   \n",
-       "49                Vistra Corp.  549300KP43CPCUJOOG15  US92840M1027   \n",
-       "50            WEC Energy Group  549300IGLYTZUK3PVP70  US92939U1060   \n",
-       "51  WORTHINGTON INDUSTRIES INC  1WRCIANKYOIK6KYE5E82  US9818111026   \n",
-       "52           Xcel Energy, Inc.  LGJNMI9GH8XIDG5RCM61  US98389B1008   \n",
-       "\n",
-       "    company_isin  investment_value  \n",
-       "48  CA2908761018            111916  \n",
-       "49  US92840M1027             53489  \n",
-       "50  US92939U1060             45957  \n",
-       "51  US9818111026            236587  \n",
-       "52  US98389B1008             46170  "
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "df_portfolio = pd.read_excel(template_data_path, sheet_name=\"Portfolio\")\n",
     "display(df_portfolio.tail())"
@@ -450,7 +318,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 11,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -467,7 +335,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 12,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -488,473 +356,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 13,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>company_name</th>\n",
-       "      <th>time_frame</th>\n",
-       "      <th>scope</th>\n",
-       "      <th>temperature_score</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>0</th>\n",
-       "      <td>AES Corp.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.79</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>1</th>\n",
-       "      <td>ALLETE, Inc.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.7</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>2</th>\n",
-       "      <td>Alliant Energy</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.67</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>3</th>\n",
-       "      <td>Ameren Corp.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.28</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>4</th>\n",
-       "      <td>American Electric Power Co., Inc.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.96</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>5</th>\n",
-       "      <td>Avangrid, Inc.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.1</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>6</th>\n",
-       "      <td>Black Hills Corp.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.98</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>7</th>\n",
-       "      <td>CARPENTER TECHNOLOGY CORP</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.63</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>8</th>\n",
-       "      <td>CLEVELAND-CLIFFS INC</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.43</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>9</th>\n",
-       "      <td>CMS Energy Corp.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.01</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>10</th>\n",
-       "      <td>COMMERCIAL METALS CO</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.45</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>11</th>\n",
-       "      <td>Cleco Partners LP</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.38</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>12</th>\n",
-       "      <td>Consolidated Edison, Inc.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.05</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>13</th>\n",
-       "      <td>DTE Energy</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.77</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>14</th>\n",
-       "      <td>Dominion Energy</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.81</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>15</th>\n",
-       "      <td>Duke Energy Corp.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.87</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>16</th>\n",
-       "      <td>Edison International</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.91</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>17</th>\n",
-       "      <td>Entergy Corp.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.84</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>18</th>\n",
-       "      <td>Evergy, Inc.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.81</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>19</th>\n",
-       "      <td>Eversource Energy</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.23</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>20</th>\n",
-       "      <td>Exelon Corp.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.6</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>21</th>\n",
-       "      <td>FirstEnergy Corp.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.73</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>22</th>\n",
-       "      <td>Fortis, Inc.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.65</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>23</th>\n",
-       "      <td>GERDAU S.A.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.53</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>24</th>\n",
-       "      <td>Hawaiian Electric Industries, Inc.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.38</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>25</th>\n",
-       "      <td>MDU Resources Group</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.27</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>26</th>\n",
-       "      <td>NUCOR CORP</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.54</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>27</th>\n",
-       "      <td>National Grid PLC</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.25</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>28</th>\n",
-       "      <td>NextEra Energy, Inc.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.77</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>29</th>\n",
-       "      <td>NIPPON STEEL CORP</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.81</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>30</th>\n",
-       "      <td>Nisource Inc.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.91</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>31</th>\n",
-       "      <td>Northwestern Corp.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.78</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>32</th>\n",
-       "      <td>OG&amp;E Energy Corp.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.28</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>33</th>\n",
-       "      <td>PG&amp;E Corp.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.58</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>34</th>\n",
-       "      <td>PNM Resources, Inc.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.93</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>35</th>\n",
-       "      <td>POSCO</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.83</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>36</th>\n",
-       "      <td>PPL Corp.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.26</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>37</th>\n",
-       "      <td>Pinnacle West Capital Corp.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.17</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>38</th>\n",
-       "      <td>Portland General Electric Co.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.77</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>39</th>\n",
-       "      <td>Public Service Enterprise Group</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.49</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>40</th>\n",
-       "      <td>Sempra</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.33</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>41</th>\n",
-       "      <td>Southern Co.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.89</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>42</th>\n",
-       "      <td>STEEL DYNAMICS INC</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.59</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>43</th>\n",
-       "      <td>TC Energy Corp.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.56</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>44</th>\n",
-       "      <td>TENARIS SA</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.58</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>45</th>\n",
-       "      <td>TERNIUM S.A.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.71</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>46</th>\n",
-       "      <td>TIMKENSTEEL CORP</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.45</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>47</th>\n",
-       "      <td>UNITED STATES STEEL CORP</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.54</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>48</th>\n",
-       "      <td>Versant Power</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.55</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>49</th>\n",
-       "      <td>Vistra Corp.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>2.22</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>50</th>\n",
-       "      <td>WEC Energy Group</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.84</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>51</th>\n",
-       "      <td>WORTHINGTON INDUSTRIES INC</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.28</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>52</th>\n",
-       "      <td>Xcel Energy, Inc.</td>\n",
-       "      <td>LONG</td>\n",
-       "      <td>S1S2</td>\n",
-       "      <td>1.71</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "                          company_name time_frame scope temperature_score\n",
-       "0                            AES Corp.       LONG  S1S2              1.79\n",
-       "1                         ALLETE, Inc.       LONG  S1S2               1.7\n",
-       "2                       Alliant Energy       LONG  S1S2              1.67\n",
-       "3                         Ameren Corp.       LONG  S1S2              2.28\n",
-       "4    American Electric Power Co., Inc.       LONG  S1S2              1.96\n",
-       "5                       Avangrid, Inc.       LONG  S1S2               2.1\n",
-       "6                    Black Hills Corp.       LONG  S1S2              1.98\n",
-       "7            CARPENTER TECHNOLOGY CORP       LONG  S1S2              1.63\n",
-       "8                 CLEVELAND-CLIFFS INC       LONG  S1S2              1.43\n",
-       "9                     CMS Energy Corp.       LONG  S1S2              2.01\n",
-       "10                COMMERCIAL METALS CO       LONG  S1S2              1.45\n",
-       "11                   Cleco Partners LP       LONG  S1S2              2.38\n",
-       "12           Consolidated Edison, Inc.       LONG  S1S2              2.05\n",
-       "13                          DTE Energy       LONG  S1S2              2.77\n",
-       "14                     Dominion Energy       LONG  S1S2              1.81\n",
-       "15                   Duke Energy Corp.       LONG  S1S2              1.87\n",
-       "16                Edison International       LONG  S1S2              2.91\n",
-       "17                       Entergy Corp.       LONG  S1S2              1.84\n",
-       "18                        Evergy, Inc.       LONG  S1S2              1.81\n",
-       "19                   Eversource Energy       LONG  S1S2              1.23\n",
-       "20                        Exelon Corp.       LONG  S1S2               2.6\n",
-       "21                   FirstEnergy Corp.       LONG  S1S2              1.73\n",
-       "22                        Fortis, Inc.       LONG  S1S2              1.65\n",
-       "23                         GERDAU S.A.       LONG  S1S2              1.53\n",
-       "24  Hawaiian Electric Industries, Inc.       LONG  S1S2              2.38\n",
-       "25                 MDU Resources Group       LONG  S1S2              2.27\n",
-       "26                          NUCOR CORP       LONG  S1S2              1.54\n",
-       "27                   National Grid PLC       LONG  S1S2              2.25\n",
-       "28                NextEra Energy, Inc.       LONG  S1S2              1.77\n",
-       "29                   NIPPON STEEL CORP       LONG  S1S2              1.81\n",
-       "30                       Nisource Inc.       LONG  S1S2              1.91\n",
-       "31                  Northwestern Corp.       LONG  S1S2              1.78\n",
-       "32                   OG&E Energy Corp.       LONG  S1S2              2.28\n",
-       "33                          PG&E Corp.       LONG  S1S2              2.58\n",
-       "34                 PNM Resources, Inc.       LONG  S1S2              1.93\n",
-       "35                               POSCO       LONG  S1S2              1.83\n",
-       "36                           PPL Corp.       LONG  S1S2              2.26\n",
-       "37         Pinnacle West Capital Corp.       LONG  S1S2              2.17\n",
-       "38       Portland General Electric Co.       LONG  S1S2              1.77\n",
-       "39     Public Service Enterprise Group       LONG  S1S2              1.49\n",
-       "40                              Sempra       LONG  S1S2              2.33\n",
-       "41                        Southern Co.       LONG  S1S2              1.89\n",
-       "42                  STEEL DYNAMICS INC       LONG  S1S2              1.59\n",
-       "43                     TC Energy Corp.       LONG  S1S2              2.56\n",
-       "44                          TENARIS SA       LONG  S1S2              1.58\n",
-       "45                        TERNIUM S.A.       LONG  S1S2              1.71\n",
-       "46                    TIMKENSTEEL CORP       LONG  S1S2              1.45\n",
-       "47            UNITED STATES STEEL CORP       LONG  S1S2              1.54\n",
-       "48                       Versant Power       LONG  S1S2              1.55\n",
-       "49                        Vistra Corp.       LONG  S1S2              2.22\n",
-       "50                    WEC Energy Group       LONG  S1S2              1.84\n",
-       "51          WORTHINGTON INDUSTRIES INC       LONG  S1S2              1.28\n",
-       "52                   Xcel Energy, Inc.       LONG  S1S2              1.71"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "with warnings.catch_warnings():\n",
     "    warnings.simplefilter(\"ignore\")\n",
@@ -971,17 +375,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 14,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Temperature Score aggregation method = PortfolioAggregationMethod.WATS\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "aggregated_scores = temperature_score.aggregate_scores(enhanced_portfolio)\n",
     "print(f\"Temperature Score aggregation method = {temperature_score.aggregation_method}\")"
@@ -989,26 +385,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 15,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "1.8575639857922674 delta_degree_Celsius"
-      ],
-      "text/latex": [
-       "$1.8575639857922674\\ \\mathrm{delta\\_degree\\_Celsius}$"
-      ],
-      "text/plain": [
-       "1.8575639857922674 <Unit('delta_degree_Celsius')>"
-      ]
-     },
-     "execution_count": 15,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
+   "outputs": [],
    "source": [
     "aggregated_scores.long.S1S2.all.score"
    ]
@@ -1036,7 +415,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 16,
+   "execution_count": null,
    "metadata": {
     "scrolled": true
    },
@@ -1064,22 +443,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 17,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQEAAAEaCAYAAAAR/eKlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAlXUlEQVR4nO2debgcRbn/P9+TAIksAQKX3eSKynaBKLsXZUdBgbAo5CIqi4ii4IYL8BNQFJSLXBYVA2ggqFwUgbDIJvsmmxCWIHrZCXtYw06+vz+qDjSHc2bmZPqcmZ55P8/Tz5nprq56u0/Pt6veqnpLtgmCoHvpabUBQRC0lhCBIOhyQgSCoMsJEQiCLidEIAi6nBCBIOhyQgSCtkbSXyR9vtV2dDI1RUDSi4VtjqSXC993Hi4jy0TS/ZI2bbUdQWPY3sL2ya22o9VIOljSqUOR98haB20vUDDifmAP25cMhSFlIGmk7TeqXsZgaKU9jZTdbvdrKJA0wvabrbajFjX/D7Yb2oD7gU3z5x7ge8D/AU8DpwOL5mPjAQO7Ag8BzwB7AWsB04FngeMK+X4BuAY4DngOuBvYpHB8DHAS8CjwCHAoMKLPuUdlOw4Flgcuzd+fAn4HLJzTTwXmAC8DLwLfATYEHq5xrQcDfwJOBZ4H9qhlUz/3bW3gpnzu48DPC8fWB67N9+Qh4AuFaz4FeBJ4ADgQ6KlxzfMB/w08mMs4Hhg9gD2l3u9+8h/U/QJGAEfm/9V9wFdJz8/IfPxy0ssH0nN3YL4nT+R7NKbPc/f5fB+eAg6o8TxPyffpYuAF4ApgXOH4ivnYLOAfwGf6nPsr4HxgNvlZ6ec+35vzvg/YuXBsN2AG6bdxYZ9yVymU+ziwP/AJ4DXgddJze1tOuzQwLaf9F/DFWv+HAe/FXIrAvsD1wLKkB/DXwB/6/DOOB0YBmwOvAGcB/wYsk/+BGxRu1hvAN4B5gB1JD2evqJyZ858/n38D8KU+536NVKsZDbwf2CzbtThwJfA//V1H/r4h9UXgdWAi6SEcXcumfu7bdcAu+fMCwLr587j8gEzK1z0WmJCPnQKcDSyY7+c9wO41rvmo/DAsms85BzishgiUdr8HEIGG7xfpBXEX6VlaBLiEgUVgN9LD/r58L/8MTO3z3J2Qy1wdeBVYqYYIvAB8jPSsHA1cnY/NTxLlXfN1fogkKisXzn0O+M98jaP65D0/6Ye3Qv6+FLBK/rxNvoaVct4HAtfmYwuShPJbpN/OgsA6hft6ap9yrgR+mdNOIL00Nh7o/1C2CMzgnW+PpXKBIwv/jGUKx58Gdix8PwP4euHBmgmocPwGYBdgifyPHF04Ngm4rHDug3Xsngj8vUkRuLJwrKZN/ZR/JXAIsFif/d8Hzuwn/QiS6q9c2Pcl4PL+rhkQ6W20fGHfesB9NURgKO/3oO4Xqdb2pcKxTRlYBP4KfKWQdoV+nrtl+1zXTjVE4LTC9wWAN4HlSMJ4VZ/0vwYOKpx7So17MD+pdrc9fX58wF/Igp6/9wAvkV4Kkyg8q/3c11ML35fL9i5Y2HcYMKW//0OtraZPoAbjgDMlzSnse5P0D+/l8cLnl/v5vkDh+yPOlmceIFV1xpHeVo9K6j3WQ1LpXoqfkbQESdU/SlLSHlK1qxmKZTRiU5HdgR8Cd0u6DzjE9rmkf+L/9ZN+sZz/A4V9D5BqUP3ZszjwHuDmgj0iiclAlHa/B2Aw92vpQeS/NO++LyN553P3WOHzS7zzORvQTtsvSprF2/dhHUnPFtKOJDUn69ppe7akHYFvAydJugb4lu27c95HSzqycIpI/9+Bnon+WBqYZfuFwr4HgDUbsbHI3IrAQ8Butq/pe0DS+LnIbxlJKjyY7yVVbx8ivUUW88DOJff5/pO8b1XbsyRNJLV/B0o/m/Qj6rV/BOmHNVAZjdj09on2P4FJknqA7YA/SRqb81m7n1OeIr3dxpGqyZDuxyMD2PMUSVRXsV1MU4sy73e9NPXyfJTUFOhluRr5ziTdl17eS2qePN4nj0Z5qyxJC5CaUzOzzVfY3qzGuTXvg+0LgQsljSb5QE4gvZgeAn5s+3d9z5E0DtipwfJmAotKWrAgBLWekwGZ23ECxwM/zkYjaXFJ28xlXpDaiftImkfSp0ntpfNtPwpcBBwpaSFJPZKWl7RBjbwWJDlPnpO0DLBfn+OPk9qUvdwDjJL0SUnzkNpo8w2U+WBtkvRZSYvbnkOqIkJyTv4O2FTSZySNlDRW0gQnL/PppPu7YL7H3yQ5ePqzZw7pATtK0r/lMpeR9PGBroFy73dNGsjzdGDfbPPCwHdrZPcH4BuS/j3/aH8C/G8jYjwAW0paX9K8wI+A620/BJwLfFDSLvkezSNpLUkrNZKppCUkbSNpfpIAvkj6n0P67Xxf0io57Zj8PyCXu5Skr0uaL///18nHHgfG55cJ2c5rgcMkjZK0GqnWOehuxLkVgaNJb46LJL1AchKuU/uUmvwN+ADprfZjYAfbT+djnwPmJb0VnyF5PJeqkdchwIdJjpvzSM6jIocBB0p6VtK3bT8HfAU4kaSis4GH69g7GJs+Adwp6UXSfdvJ9su2HwS2JDmBZgG3kpxZkBxvs0ne5auB3wO/qWHPd0nOpuslPU9yrq1QI32Z97sRauV5AkkkpgN/J3nc3yA1L/vyG1KV/EqSx/0V0r2aW34PHES6/2sAnwXIb9bNSW/lmaQmxk+p8XLoQw9JuGfmvDcAvpzzPjPndVr+X90BbFEodzNgq1zmP4GNcp5/zH+flnRL/jyJ5AuZSXK+HuS56MLXO5uGw4+kL5AcP+u31JAuod3vt6QtgONtj6ubuLlyppAcwgcOZTlVIIYNBy1F0mhJW+Ym0TKkN/OZrbarmwgRCFqNSE24Z0jNgRnAD1pqUZfR8uZAEAStJWoCQdDlhAgEQZczt4OFgkEwdtS8Xm7+Ua02Y0BGjn9f/UQt5OZbbnvK9jsGcH1A8kt1zpsJF9r+xBCa1hGECAwDy80/ir9+cq1WmzEgYyef3moTaqLRiz3Qd99LpJlHtfhBGoId1CFEIKgkIh7esoj7GFQW1U8SNECIQFBZak2TDBonRCCoJCK6tsoiRCCoLFETKIcQ06CS9NYEam1185CWk3SZpLsk3Slp337S7CxpuqTbJV0rafX+8qoyURMIKksJNYE3SBF/bpG0ICk608W27yqkuY8UD/OZPMNxMs1Nm287QgSCSlKGTyAHPHk0f35B0gxSmK+7CmmuLZzSG1y3owgRCCpLmT6BHBbvQ6SAKwOxOylQaEcRIhBUkgZrAotJuqnwfbLtye/KK4Uq642A/Xy/5UkbkUSgLYOxNEOIQFBZGqgJPGV7zVoJclzJM4Df2e4biq43zWqk8HNbFMKwdQwhAkElKcMnoBQD/SRghu2fD5DmvaQ4lbvYvqfJItuSEIGgktRbWKFB/pO06Mrtkm7N+/Ynhe7G9vGkKEdjgV/mdRPeqFe7qBohAkFlKaF34GrqTEGwvQdpPcWOJUQgqCwxgagcQgSCSlJScyBgEDUqSS6unybp25IOHkxhkjaU9JHC9ymSdmjw3InZhhUHU+Yg7VtT0jFDlX9QLs0OGw4Sg7lXrwLbSZqraC2SRpJWAP5InaQDMYm0Gs+kuTy/JpJG2r7J9j5DkX9QLr01gVpb0BiDEYE3SOOmv9H3gKTxki7NEy3+mrtVet/0x0v6G2nNub1Ia8ndKumj+fSP5YkZ9w5UK8iDOdYnDdbYqbB/Q0lXSDo7n394nvBxQ57wsXxOt7ikMyTdmLf/zPsPljRVadXYqTm/c3vLlPTbnM90Sdvn/b+SdFOecHLIIO5fUDJREyiHwd6rXwA7SxrTZ/+xwMm2VyMttFmsUi8LfMT2dqTFGI+yPcH2Vfn4UqQf+KeAwwcodxvggtxP+7SkNQrHVieJy0qk7p4P2l6bNLijd526o3O5a5HWjD+xcP7KwKa2+9Yw/h/wnO1V83VdmvcfkLuIVgM2yANJ3oWkPbNY3PT0q68NcFnB3BI1gfIYlAjkIZWnAH2rzOuRFneEtGBkcWjlH/NKuwNxlu05eebWEgOkmQSclj+fxjubBDfaftT2q6S13S/K+28nLdYIsClwXO4LngYslGsXANNsv9xPmZuSRA8A28/kj5/JC0L+HViFJCLvwvZk22vaXnPsfPMOcFlBM6hHNbegMeamd+B/gFuA3zaYfnad468WPr/rPydpUWBjYFVJJom8Je3Xz/lzCt/n8Pb19QDr2n6lT96N2FdM/+/At4G18tTSKUD7xhLvYCQYMaLOO2xOrXdP0Mugm062Z5Ha97sXdl/L2231nYGr+p6XeQFYcJBF7gBMtT3O9njby5HmeH+0znlFLqKwhLWkCQ2cczGwd+GcRYCFSKLxnKQlyEtKB61BUs0taIy59Z8cyTtjun8N2FXSdFK7/F0RWjLnANv2cQzWYxLvXqX2DAbXS7APsGZ28N1F/ZD1AIcCi0i6Q9JtwEa2byM1A+4mNX+uGYQNQamInhE9NbegMWJB0mFgwtiFHIuPzD0avdjNfcfrf3BEj385uravZbPZr77rvODdxIjBoJII4m1fEiECQTWJdn9phAgElUQ00DsQNETcxaCaqPlxAg2GHF9R0nWSXpX07SG5lhYTNYGgoqgMn0AjIcdnkXqXJjZbWLsSNYGgsjQ7TiCPNL0lf34B6A05XkzzhO0bgdeH4hragagJBJVEaqh3oKFowym/hkKOdyQhAkFl6anf7q8bbRgaCzneyYQIBNWkpC5CNRByvNMJEQgqSRmDhRoJOd4NhAgE1USg5t3adUOOS1oSuIk0eWyOpK8DK3dSsyFEIKgszdYEGgw5/hgduAhpkRCBoJII0RPDhkshRCCoJo11EQYNECIQVJYIIVYOIQJBJZFKGTYcECIwLLy2xLLcv+/PWm3GgCxy9a9bbcJcEVOJyyFEIKgmgp6REVi8DEIEgoqiNIEgaJoQgaCSKGoCpREiEFSW8AmUQ4hAUE0kFDWBUggRCCpL1ATKIUQgqCSS0MgYJ1AGIQJBZVEJ0wiDiDEYVJXhizYsScdI+ldexu7DQ3I9LSRqAkFFERrRtGOwkWjDWwAfyNs6wK/y344hagJBNSmhJtBItGFgG+AUJ64HFpa0VNmX00qiJhBUkgbDi5URbXgZ4KHC94fzvkcHY287EyIQVBMJeuqKQEQbboAQgaCylDGVuIFow48AyxW+L5v3dQzhEwiqiYR6empu9bNoKNrwNOBzuZdgXeA52x3TFICoCQQVRYCarwnUjTYMnA9sCfwLeAnYtdlC240QgaCaqPnwYg1GGzawd1MFtTkd1RyQtISk30u6V9LNeUnpbSVtKOncOucePNilpyW92JzFwdwjekaMqLkFjdExIpDbd2cBV9p+n+01gJ3o8JjxXYuAHtXegoboGBEANgZey+04AGw/YPvYYiJJi0o6Kw8BvV7SaoXDq+fawz8lfTGnX0DSXyXdIul2SdsMz+UEtVDUBEqjk3wCqwC3NJDuEODvtidK2hg4BZiQj60GrAvMD/xd0nnAE8C2tp+XtBhwvaRpua0YtIoSfAJBopNqAu9A0i8k3Sbpxj6H1gemAti+FBgraaF87GzbL9t+CrgMWJtU8fyJpOnAJaTRYks0UP6ekm6SdNMzzzxT0lUFRTSip+YWNEYn3ak7gbdmeNneG9gEWHwQefR9uxvYOeexhu0JwOPAqLoZ2ZNtr2l7zUUWWWQQJgQNoQa2oCE6SQQuBUZJ+nJh33v6SXcV6YeNpA1JQ0t7h4puI2mUpLHAhsCNwBjgCduvS9oIGDc05geDpdkJREGiY3wCti1pInCUpO8ATwKzge/2SXow8JtcvX8J+Hzh2HRSM2Ax4Ee2Z0r6HXCOpNtJS1TfPaQXEjRI9ACURceIAKSpoaRuwf64PKeZBUzs59yDB8jzKWC9AY4tMBdmBiWgWHagNDpKBIIuY0SoQBmECASVJaINl0OIQFBNYpxAaYQIBNUlRKAUOqmLMOgmVLt7sMFow7+R9ISkOwY4voikM/MQ8xsk/Ufp19EGhAgE1aX5wUJTgE/UOL4/cKvt1YDPAUfPvbHtS4hAUFk0QjW3eti+EphVI8nKpEFo2L4bGC+p7pDxqhEiEFQT8fZggYG2HG24sO05yFJuA7YDkLQ2abRox01ND8dgUElSeLG6b/uGog3X4HDg6Bx67Hbg78CbTeTXloQIBJVlqIcJ5Dklu6ayJOA+4N6hLXX4CREIqomGfpKQpIWBl2y/BuxBilrVcesShAgE1aVJEZD0B9Js0cUkPQwcBMwDb0UaXgk4WZJJU9V3b6rANiVEIKgm5UQbnlTn+HXAB5sqpAKECATVJeYOlEKIQFBZGhkLENQnRCCoJhFCrDRCBIaBZ2fM4Jw1m+muHlo+NP3EVpswaIQimGhJhAgE1SV8AqUQIhBUk94ViIKmCREIKoqgJ1YZKoMQgaCaRE2gNEIEgooiiPUGSyFEIKgu4RgshRCBoJqIqAmURIhAUFEEPTFOoAxCBIJqIkIESiLuYlBRck2g1lYvh/rRhsdIOicvcX+npF1Lv4w2IEQgqCYCjeipuTXAFGpHG94buMv26qS4A0dKmrdp29uMaA4E1UXNvcNsXylpfK0kwII5tNgCpMjEbzRVaBsSIhBUEwmGfgLRccA0YCawILCj7TlDXehwE82BoLrU9wk0G3L848CtwNLABOA4SQuVeg1tQNQEgmqihroImw05vitwuG0D/5J0H7AicEMTebYdURMIqkuTvQMN8CCwCUBeeWgFIuR4ELQJommfQAPRhn8ETJF0ey7xu7afaqrQNiREIKgoKqN3oF604ZnA5k0VUgEqLwKS3iQtEdXLabYPb5U9wTASU4lLofIiALxse8LcnChppO2O6/ftChRTicuiYx2Dku6XtFj+vKaky/PngyVNlXQNMFXSeEmXSpou6a+S3pvTTZF0fO5aukfSp/L+EZKOkHRjPudLrbrGrqf+qsRBA3RCTWB0XjW2l8Ns/2+dc1YG1rf9sqRzgJNtnyxpN+AYYGJONx5YG1geuEzS+4HPAc/ZXkvSfMA1ki6yfV+xgNwnvSfAmKYuLxiQCC9WCp0gAnPTHJhm++X8eT3yGvTAVOBnhXSn5xFi/5R0L6mPeHNgNUk75DRjgA+QVqx9C9uTgckAS6e17IIyiXUHSqMTRGAg3uDt5s6oPsdmN5hH3x+vSY/e12xf2IRtQdNEPIGy6OS7eD+wRv68fY101wI75c87A1cVjn1aUo+k5YH3Af8ALgS+LGkeAEkflDR/mYYHDRI+gVLohJpAX5/ABba/BxwCnCTpR8DlNc7/GvBbSfsBT5KGivbyIGmI6ELAXrZfkXQiyVdwS55d9iRv+xCC4SR+6KVQeRGw3a93yPZV9LOstO2D+3x/ANh4gOwvsb1Xn/RzgP3zFrQKESJQEpUXgaBbCZ9AWYQIDIDtL7TahqAeURMogxCBoLrEsOFSCBEIqkn4BEojGlVBRcmzCGtt9XKoH214P0m35u0OSW9KWrT0S2kxIQJBdWl+nMAUakQbtn2E7Ql5ROr3gStszyrF9jYimgNBdWnSJ9BAtOEik4A/NFVgmxI1gaDCqM5WUinSe0g1hjNKy7SNiJpAUE0aq/IvJummwvfJeWLXYNkKuKYTmwIQIhBUmfrNgWajDfeyEx3aFIAQgaDKDEMXoaQxwAbAZ4e8sBYRIhBUlyYDjTYQbRhgW+Ai241OP68cIQJBNSlhunC9aMM5zRRSV2LHEiIQVJcYMVgKIQJBdQkRKIUQgaC6xFTiUggRGAYWXmkltpo6tdVmDIhvO6XVJswFEWm0LEIEgmoiIuR4SYQIBBUlagJlESIQVJeoCZRCiEBQYaImUAYhAkFFEShqAmUQIhBUkwgvVhohAkFFUdNzB4JEiEBQXUIESiFEIKguIQKlECIQVJRoDpRF3MWgmggk1dzqZlEn5HhOs2EOOX6npCtKvYY2IUQgqCi5i7DWVp8p1Ag5Lmlh4JfA1rZXAT5dhuXtRohAUGGaizZs+0qgVvDQ/wL+bPvBnP6JJg1uS0IEgurSM6L2lqMNF7Y9B1nCB4FFJF0u6WZJnyv/IlpPOAaDitLQ277ZaMMjgTWATYDRwHWSrrd9TxN5th0hAkE1GZ6pxA8DT+cgo7MlXQmsDnSUCERzIKgwQ74C0dnA+pJG5lWI1gFmlJFxO9HVIiBpoiRLWrFOuvOzpzhoG5rvHcghx68DVpD0sKTdJe0laS8A2zOAC4DpwA3AibYH7E6sKt3eHJgEXJ3/HjRQIttbDptFQeMMT8jxI4AjmiqozenamoCkBYD1gd1Jy0whaSlJVxbWo/9o3n+/pMXy57Oyp/jOufA2B6VRyjiBgO6uCWwDXGD7HklPS1qDtBrNhbZ/LGkE8J5+ztvN9ixJo4EbJZ1h++lhtDvoJaYSl0I3i8Ak4Oj8+bT8fRrwG0nzAGfZvrWf8/aRtG3+vBzwAeBdIpBrCXsCLLnkkuVaHmTfX9dWZEulK0VA0qLAxsCqkgyMAAzsB3wM+CQwRdLPbZ9SOG9DYFNgPdsvSbocGNVfGXkJ7MkAK6+8sofsYrqWCDRaFt0qpTsAU22Psz3e9nLAfSQBeNz2CcCJwIf7nDcGeCYLwIrAusNqdfBOwidQCl1ZEyBV/X/aZ98ZpAklsyW9DrwI9B0megGwl6QZwD+A64fYzqAW4RMoha4UAdsb9bPvGOCYAdKPL3zdYojMCgZFxBMoi64UgaBTiJpAGYQIBNUlmgOlECIQVBNFc6AsQgSCChMiUAYhAkF1iZpAKYQIBBUlBguVRUhpUFmknppb/fNrRxvOkYafyxPKbpX0g9Ivog2ImkBQXZrvHZgCHAecUiPNVbY/1WxB7UyIQFBN1PyqxLavlDS+HIOqSzQHggpTN7xYs9GGAdaTdJukv0hapSzL24moCQTVpX67v9low7cA42y/KGlL4CzS1PGOImoCQUVRbhLU2JrE9vO2X8yfzwfm6Y0w1UmECATVRT21t2azl5ZUXtRQ0tqk30vHRZGK5kBQYZp72+dowxuSfAcPk4LNzgNg+3hS3IkvS3oDeBnYyXbHBYgJEQgqSim9AzWjDds+jtSF2NGECATVRMQswpJQB9Zu2g5JTwIPlJjlYsBTJeZXNmXbN8724sUdki7I5dTiKdsDLj0eJEIEKoikm5rs+hpS2t2+4J1E70AQdDkhAkHQ5YQIVJPJrTagDu1uX1AgfAJB0OVETSAIupwQgSDockIEgqDLCRFoMwoTVtryfyNp3lbbEJRLWz5o3Yok2bakrYFftdsPTtKqwO6Slmm1LUF5hAi0EVkAtgQOAf5o+7XemkGbsDRpafYtJS3damOCcggRaCPyD34jYH/gjlwjOFXS5pLma5Ug9JZr+0Lg18AGwNYhBJ1BzCJsMb1NAHirJjAL2BMYC1wIzAZ2Ai5vxVz2on3ZxoskPQt8PR+fZnvmcNsVlEeIQAsp+AA+AawMGPgZsD4w0/Y/Ja1ACo29FOXORGyIXgGQtFe28SXgBOBo4KvAHEnn2354uG0LyiFEoIVkAdgcOAz4EvAXYKztAwFyc+Aw4Pu2h10AepG0N7At8H3gKGCE7f0kzU+qEbwh6WTbb7bKxmDuCREYZiQtAYy2fX9ua28DfAFYEvgHqc3dyzLAvrYv6VstH2bGAlsDewAvAAdIms/2pZJeBh4IAaguIQLDiKT5SD+mKySNsv2KpKdJtYAVgC/YfkjSZ4FXbP+q99zhEoABxGZJ4CZghu0tcrq9JL1ku9bqPUEFiN6BYcT2q8DvgVnAkZLeC1wF7AYcbvseSWuSqt3DHtW2KACStpW0paS1gMOzPTflY7sC+wLXD7eNQfnELMJhQNJoYLn8Ix9HcrB9DBhNinC7NbAfabGLVYAf2Z7WQnu/CWwFnAN8BjgUeAL4BXAfsBywu+27WmVjUB4hAsNAHmn3KWAR4MPAJJK3f3tgUeBAYAGSKMxje8Zw+gAKvRQiDQg6xvb2kn4ITAC2ycdHZBtH2n52OGwLhp5oDgwhkt4naSOSw285YG/gattP2p4OnE0KyPnfwMK2/2V7BgyrD2DBQllLkt74SDqWJACfyQIwibwkVwhAZxGOwaFlHGnRijeA40kDfxaVtJPt02zfkpsKG5LGCAwrksYAn5f0AmnRjW1tbyHpXmAisGl2Xu4G7ANE5N4OJERgCJD0flI34GWSFgXuJPX175dXxt0sj7q7n7TA5Qm2nxhmGz8JrAv8GbgEeIXUVAH4HfAacLaki4AtSKvvPDacNgbDQzQHhoaNgdskTbA9i+T8O0jSVrYnA9eRhgZfBTzSAgH4FPATYDpwO3As8DzJV4HtW20fAHwHuJjkE7hzOG0Mho+oCZSIpPHAC7YnSxoJXCppE9unS3oN+ImkObZPlHQe8G+2bxtmG5cEvgXsYfvGvPtgSecCp0t60/axknYA7rZ9x3DaFww/IQLl8hngcknP2f6lpHmAv2YhOEuSgeMkjbH9e+DRFtj4KvA68Er2R3yXNHPxceBh0mjAVUnt/81aYF8wzEQXYckorV9/MfBJ2zMl7UtqDmxs+1ZJ25KWx7qqRfYJ+CawOWlMwiXA1cAMUjfm/cAjwB2272+FjcHwEiLQJJIWAJbKM/7WA/4G/BL4D2AH249J+ipp4s06tm/J57VsLkC2eVVSt+XZeSQjkqYA59n+YyvsClpDiEATFAbXTAFuJk0G2t72XbmffW2SU+0xSd8gvV0vbpnBNZD0aeB7pHEB/9dqe4LhI0RgLskOto1s/0HSl4BjSMN9Dy2kOQbYhNTf/mje18rZgO9C0lLAjsAXgR3DEdh9RBfh3LMm8F+SdgEeInX5fT6/UQGwvQ9wFrB8YV/bCEDmWeCfpBpLCEAXEr0Dc4ntc7P3fxvgMtsnS3qMFCX4edIowf8idcW12w//LWy/DJzXajuC1hEiMAiUQm2Ps30tgO0zldYH2E4SWQi+TpoKPBI4up0FIAggRKBhshNwE+CLkg6wfSWA7TMkzSE1De6xPU3SjfnYo+3mAwiCvoRjcBBIGkuKtTcROML2FYVj+wPrANtFqK2gSkRNYBDYflrSn0kO1W/nJkCvEFxLmoo7p2UGBsFcECIwSGzPkvQn0o/9IEknATOBI4EfRNU/qBrRHGgApZV2ngdmF2LwzQt8HPgaaZjtGbnHIHwAQaUIEahDHkzz38B+eS5Aj+05hePzAG/anhMCEFSRGCxUhzzS7zXgR/n7nD7HX+/dFwIQVJEQgT7kfn8kLSnpA3n394AXlRYOeWuBziDoBMIxmJH0HuANp+XA1yC19edIepA0K3Al0vTbqfHGDzqJ8AlkJG0MfJoUC2Bz4LfAY6RY+1eRQm+9Qppk07J1AYOgbLq+OSBpmezsu5QUHfhU4Czbf8s/9q2BPwInkVbkXbZ11gZB+XS9CJCCaf5H9gVcT1oZ+Ks5HDe259i+1/axwGnAN3P8wCDoCLpeBGzvSxoDcDJpPcDtSVOD/whvLSCyY07+JLAQMKIVtgbBUNC1ItDr4Ze0QI6ltyxwaq4R7A08KGk6MI3044fkE9i3NxxXEHQCXekYLKy990nSwhrfsf1SDrv9Mm8vvbU98JDtG4rntdD0ICidrhQBAEnrA5OBL9q+prD/LGAUsEVhiHD8+IOOpWuaA5KWk/SRwq4NgT/YvkbSiDz8F9sTSXH5e5fkipGAQUfTFV7u3M5fHXhI0kK2nyetBvzvvUlsvy5pXeBx21u1ytYgGG66oiaQu/nOBf4F/F7SZsBFwMclbQcsKenDpAFCi7bQ1CAYdjreJ1BwAm5CWmyjhxQd6ABgXtLqQC8BywA/sz2tZcYGQQvo+OZAFoAPAz8E9iKF1zbwU+AA21tJWgQYY/v+cAIG3UZHikDxhyzpfaQf/wO2b8/7ziZFBvq5pCNsnwc8A+EEDLqPjvMJSBoFrJc/vx+YQFr9d3FJW0IKEQacSxol+HhrLA2C9qDjfAJ5bYCtSMtqrwp8BHgT+AowBri4dz1ASSNtv9EqW4OgHei4moDtR0j9/NsCf7P9lO1ngKnALGCrQo0gBCDoejpGBApzAVYiTf7ZBfiHpMMlLWn7QeB84GkgVt0NgkxHNQckfYI0FHhr27dK2gD4FGnizy2kUYDH59pCEAR0Vk3gvcDhwM62bwV6FwY5Jyc5ArgxBCAI3knlawKFwUDjgCNt75D3j7L9iqR58pDgJW0/FuMAguCdVLYmUIj4O3/+OxNYWtK3ALIAbAYclecOPJ73hwAEQYFKDhYqvP0/DnwlrwL8MLAPcEgeIHQZcCBwUN+1AoIgeJvKNgckfZQUCnwP4KvAfMCuwOLA/qRIwdfZ/ks0AYJgYCojAnkQ0OLA9Lzk16dJQ31nA8cC29t+QNLitp8snBcCEAQ1qJJPYCJwDPCh/P0lYArwK2DzLAAfB74mqddPED6AIKhD24tAjva7k+1fkGIAHCxpTeAK4E/AbTndR0nLg99ge3bLDA6CitHWIiBpBeDPvd9tHwpcQ4oBsCJpAtD9wAUkJ+D+vcuDD7+1QVBN2tYnIGllkuNvqu2TcgzAVW3fIukgUriwH9u+WdICALZfDB9AEAyOtqwJ5B/8NOCFLAAjSG/7DQBsH0IaBnyEpLVsv2j7xXwsBCAIBkFbjhPII/wmAedJ2ps0HfhW20cV0hwq6ZWWGRkEHULbNgcAsgPwYuBu2+sV9q8LTLB9fMuMC4IOoS2bA73Yvom0PsCKkr4IkNcOOIEUOTgIgiZp65pAL7lGcD4pTsCqwE9zXMAgCJqkEiIAIGkt4FJgF9tntdicIOgYKiMC8NYKwtENGAQl0tY+gX6IkYBBUDKVqgkEQVA+VasJBEFQMiECQdDlhAgEQZcTIhAEXU6IQBB0OSECQdDl/H+yIxAHcGF7RQAAAABJRU5ErkJggg==\n",
-      "text/plain": [
-       "<Figure size 129.6x230.4 with 2 Axes>"
-      ]
-     },
-     "metadata": {
-      "needs_background": "light"
-     },
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "analysis_parameters = ([ETimeFrames.LONG], [EScope.S1S2], grouping)\n",
     "plot_grouped_heatmap(grouped_aggregations, analysis_parameters)"
@@ -1087,63 +453,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 18,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>group</th>\n",
-       "      <th>company_name</th>\n",
-       "      <th>company_id</th>\n",
-       "      <th>temperature_score</th>\n",
-       "      <th>contribution_relative</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>0</th>\n",
-       "      <td>Steel-Asia</td>\n",
-       "      <td>NIPPON STEEL CORP</td>\n",
-       "      <td>JP3381000003</td>\n",
-       "      <td>1.81 delta_degree_Celsius</td>\n",
-       "      <td>100.0 percent</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "        group       company_name    company_id          temperature_score  \\\n",
-       "0  Steel-Asia  NIPPON STEEL CORP  JP3381000003  1.81 delta_degree_Celsius   \n",
-       "\n",
-       "  contribution_relative  \n",
-       "0         100.0 percent  "
-      ]
-     },
-     "execution_count": 18,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
+   "outputs": [],
    "source": [
     "region = 'Asia'\n",
     "sector = 'Steel'\n",
@@ -1173,7 +485,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 19,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -1194,22 +506,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 20,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "image/png": "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B4CfAkcAXxL8nH59XHefShAmPwvPuV5XqLtPA74H/Jmg5fsIggtz1mZQU0O/zyKSJ0xjSUVERETiQy1nIiIiIjGicCYiIiISIwpnIiIiIjGicCYiIiISIwpnIiIiIjGicCYiIiISIwpnIiIiIjGicCYiIiISIwpnIiIiIjGicCYiIiISIwpnIiIiIjGicCYiIiISIwpnIiIiIjGicCYiIiISIwpnIiIiIjGicCYiIiISIwpnIiIiIjGicCYiIiISI62jLkBERCQqEydO7NO6deu7gJ1Qg0WhqAamrFu37oxhw4bNj7qYuiiciYhIwWrduvVdm2+++Q69e/deUlRU5FHXI9lXXV1tCxYsGPLFF1/cBRwZdT110X8JIiJSyHbq3bv3MgWzwlFUVOS9e/deStBaGksKZyIiUsiKFMwKT/g9j20Gim1hIiIiIoVIY85ERERCiWRqWHMer6K8dGJj27Rq1WrYwIEDv6p5fcwxxyy++uqrvxgxYsT2119//cz99ttvVVPO+cYbb3SYOXNm2xNOOGFpXevHjx/f8Z577uk5ZsyYmfUdY+TIkds9+uij/wO46667eiSTyQWZnv/pp5/ucsMNNxS/8sorn9QsO/bYYxOHH3740tNPP33JFVdc0ednP/vZwi5dulSnn6tXr15VHTt23G3VqlX/raioaHPOOecMeO655z6r/fk88MAD3T744IMOV1999ReZ1pRrFM5EREQi1K5du+qpU6d+2FzHmzBhQscJEyZ0qiucVVZWst9++61qLPCNGzfuE4Bp06a1vfvuu/s0JZw15vbbby8+88wzF9eEs5pzpUskEpXPPffcZ7Dh53PyyScvBeoMnvlC3ZoiIiIx99hjj3UdOnTo4CFDhuxw6KGHbrN06dIigHHjxnXcbbfdBm+//fZDdt555x0WLVrU6pprrtniqaee2mzw4MFD7rzzzs0uvPDCLY4++uitd99998HHHHPM1k8//XSX/ffffzuApUuXFh133HGJQYMGDRk0aNCQMWPGdAfo16/fznPnzm190UUX9Z85c2a7wYMHDzn77LP7l5WVJe67777uNXUdeeSRW99///3d6yi5TldddVWf+fPntxk5cuSgPffcc1D6udK3mzZtWtuBAwfuuHr1aqv9+dx88809v//9728JMGfOnNaHHHLItjvttNMOO+200w4vvPBCJ4BUKtV58ODBQwYPHjxkhx12GLJkyZKcyjs5VWwUzGx7M5uU9lhmZheY2XfM7AMzqzaz4Wnb72Nmk81sgpkNDJd1N7MXzExfbxERWc+aNWuKaoJETQBJXz937tzWV199dd/x48dP//DDDz/afffdV1155ZXFq1evtpNPPnnbP/3pT59Pmzbtw3Hjxk3r2rVr1SWXXDLniCOOWDJ16tQPzzzzzCUAH3/8cfvx48dPe+qpp/6XfuxkMtm3a9euVdOnT/9w+vTpH5aWli5PX3/DDTfMGjBgwJqpU6d+ePvtt88644wzFt577709ARYtWtRq4sSJnU844YQvM/1cL7vssvl9+vSpHDdu3PS33npremPbt2/f3uv6fGqcffbZAy688MJ5U6ZM+ejxxx//9JxzzkmEdW9+8803z5g6deqHb7755tTOnTtXZ1pjHKhbsxHuPg0YCmBmrYDZwONAR+AY4PZau1wEHAYkgHPC15cBV7t7Tv1wiIhI9jXWrfnqq692+vTTT9uPGDFiMEBlZaUNGzZsxeTJk9v36dOncuTIkasAevToUe/fmNGjR3/ZuXPnDa5KHT9+fNeHHnros5rXvXv3rmqo1tLS0hU//elPt5ozZ07r+++/f7PS0tIlbdq0WW8bM6vz6tf6lm+K119/vevHH3/coeb1ihUrWi1durSopKRkxcUXXzzg+OOPX3zSSSct2XbbbXPq76/CWdMcCHzq7jNqFphZ7W0qCYJbR6DSzLYFBrj7qy1VpIiI5A93Z999911Wu9Xr7bff7lDfPrV16tSp2cLJCSecsOjOO+/s8eijj/b4v//7v4ra6/v06bNu6dKl6+WLJUuWtO7du/e65qqhhrvz7rvvftSxY8f1gt/VV1/9xdFHH730ySef7Patb31rcCqV+ni33XZb3dznzxaFs6Y5EXiwkW2uAf4GfAWcAlxP0HIWO4lkqgjoAfQGuhEEy1UEtX/9saK8tMH/pETyTSKZak/wO1Hz6AysBL4ElgBLKspLm/0PjUhdRo0atfKiiy7acsqUKe122mmnNcuWLSuqqKhos8suu6yeP39+m3HjxnUcOXLkqiVLlhR17ty5umvXrlUrVqzIaBjNyJEjl91444197rnnnpkACxYsaJXeetatW7eqlStXrnesc845Z+Gee+65Q69evSqHDRu2QeDZaaed1sybN6/Nu+++23733XdfPX369LZTp07tUFJS8hVAp06dqpYuXVrUt2/fjD7/hj6ffffdd9k111zT58orr5wHwZWqe++991cffPBBuxEjRnw1YsSIryZOnNhxypQp7RXO8pCZtSW4zcMlDW3n7pOAknCf/YC5wVP7B0H4ucjd52W32m8kkqk+YT3bEnS1bh1+3ALYjAzGHSaSqUqCoLYcmA68D0wOHx9UlJc26TJvkSglkqlewK5pj34EAaw734SxthkcZzkwC5gJfB5+nAa8VlFeOicbtUv2ZTL1RXOrGXNW8/qAAw5Yeuutt86ueb3FFlusu/322ytOPPHEbdauXWsAl19++exddtllzQMPPPDp+eefv+Xq1auL2rdvXz1+/Pjphx566PLrr7++7+DBg4dcdNFFcxs69zXXXDP39NNP33LgwIE7FhUV+aWXXjrn1FNP/bJm/eabb141bNiwFQMHDtzxgAMOWHr77bfPGjBgwLptt9129RFHHPFlXcfs0KGD/9///d9np59+emLNmjVFrVu39ltuuWVGz549qwBOPfXUhaNHjx5UXFy8NpNxZw19PnfcccfMM844Y8tBgwYNqaqqsj333HP53nvv/fm1117b54033uhqZr799tt/ddxxx+XU1Z3mromRM2FmRwHnuvvBtZa/Clzs7hNqLTfgeYLWtj8DlxKEooPd/VfZqjORTG0OjAJGhh8HZ+tcoWrgU74JbJOAlyrKS1dm+bwijUokU62B3YBvAfsCIwjCWLZ9BoyveVSUl37aAueUjfDee+9V7LrrrgujriOXLF++vGjIkCFDJk2a9FFN4MpF7733Xq9dd901EXUddVHLWeZOovEuzXTfB55x98Vm1pEgxFQTjEVrNolkqi+wP98EskHNefwMFAEDw8cx4bKvEsnU88CjwNiK8tJlLVyTFLBEMtUV+A5wArA30CmCMrYJH6eFNc0GXiMIa69WlJd+FEFNIpvsiSee6PLjH/84cc4558zL5WAWd2o5y4CZdSLottjG3ZeGy8oIWsR6E4xDmeTuh4TrOgIpglaySjP7FnArsBb4bngF6EZLJFOtgCOAs4BDiPeUKGuBl4BHgCcryksXR1yP5KFw/ORBwKlAGZDxQOmITAbGAPdXlJc22+Se0nRqOStccW45UzjLIYlkakvgDOCHBGPGcs064BXgfuDBivLSyojrkVrMbHvgH2mL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swuB37l7FzMbStDd+RVwCnA98Gt3/7il6pTohFPU7AeMBEYRzKHWrqnHuXDUDq8N6N7pWxls+hXB7dneCB//KSspbrY5DEUk/ymcFYDH35xXTNCaVvuxFdABaAO0DT+mT17rBDOSzwO+qPVxJjAZmBpVt0wdczYNJpgTqydBy9357t6z1j6as6nAJZIpIxivuBWwZfgx/bElaUMFapz/rcHjt+7Z+VvAKmA5wb0tK9Ie/ws/flxWUlyZ1U9CRPKawpms5/E357Xmm7C2Kq5/ZDKYs2kQcL+7j0hbpjmbJCOJZKoTwbCPmjdIHz14i3WHDN5idVlJsd40RSSrNOZM1hO2gq0j6JqJpQbmbOrj7vPNrIjgVjO31dr16zmbwmkCNGeT1KmivHRl1DWISOFSy5nknAbmbBoInBu+fgy4xMMfcM3ZJCIiuULhTERERCRGdPsmERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzERERkRhROBMRERGJEYUzkRxkZivSHtVm9lXa65Ojrm9jmFmFmR0UdR2y6fS9FNk0raMuQESazt071zw3swrgDHd/KbqKGmZmrd19Xa6foyniVg/Es6bacqFGkWxTy5lIHjGzIjNLmtmnZrbIzB42sx7huoSZuZmdbmYzzWyJmZ1jZnuY2WQz+9LM/pJ2rNPM7HUz+4uZLTWzqWZ2YNr6bmZ2t5nNNbPZZnaVmbWqte+NZrYI+K2ZbWtm/wrrWmhmD5hZ93D7+4AtgafC1r9fmNkoM5tV6/P7ukXGzH5rZo+Y2f1mtgw4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\n",
-      "text/plain": [
-       "<Figure size 720x540 with 3 Axes>"
-      ]
-     },
-     "metadata": {
-      "needs_background": "light"
-     },
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "plot_grouped_statistics(aggregated_portfolio, company_contributions, analysis_parameters)"
    ]
@@ -1225,187 +524,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 21,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>company_name</th>\n",
-       "      <th>company_id</th>\n",
-       "      <th>sector</th>\n",
-       "      <th>contribution</th>\n",
-       "      <th>temperature_score</th>\n",
-       "      <th>ownership_percentage</th>\n",
-       "      <th>portfolio_percentage</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>4</th>\n",
-       "      <td>NIPPON STEEL CORP</td>\n",
-       "      <td>JP3381000003</td>\n",
-       "      <td>Steel</td>\n",
-       "      <td>3.3870401057008093 percent</td>\n",
-       "      <td>1.81 delta_degree_Celsius</td>\n",
-       "      <td>26.74</td>\n",
-       "      <td>3.48</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>8</th>\n",
-       "      <td>UNITED STATES STEEL CORP</td>\n",
-       "      <td>US9129091081</td>\n",
-       "      <td>Steel</td>\n",
-       "      <td>2.973857467344226 percent</td>\n",
-       "      <td>1.54 delta_degree_Celsius</td>\n",
-       "      <td>0.01</td>\n",
-       "      <td>3.59</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>10</th>\n",
-       "      <td>POSCO</td>\n",
-       "      <td>KR7005490008</td>\n",
-       "      <td>Steel</td>\n",
-       "      <td>2.7351925482594566 percent</td>\n",
-       "      <td>1.83 delta_degree_Celsius</td>\n",
-       "      <td>0.00</td>\n",
-       "      <td>2.78</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>11</th>\n",
-       "      <td>TERNIUM S.A.</td>\n",
-       "      <td>US8808901081</td>\n",
-       "      <td>Steel</td>\n",
-       "      <td>2.6825715373130827 percent</td>\n",
-       "      <td>1.71 delta_degree_Celsius</td>\n",
-       "      <td>NaN</td>\n",
-       "      <td>2.91</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>16</th>\n",
-       "      <td>WORTHINGTON INDUSTRIES INC</td>\n",
-       "      <td>US9818111026</td>\n",
-       "      <td>Steel</td>\n",
-       "      <td>2.4097283052012206 percent</td>\n",
-       "      <td>1.28 delta_degree_Celsius</td>\n",
-       "      <td>0.01</td>\n",
-       "      <td>3.50</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>19</th>\n",
-       "      <td>TIMKENSTEEL CORP</td>\n",
-       "      <td>US8873991033</td>\n",
-       "      <td>Steel</td>\n",
-       "      <td>2.155217880316027 percent</td>\n",
-       "      <td>1.45 delta_degree_Celsius</td>\n",
-       "      <td>0.06</td>\n",
-       "      <td>2.76</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>27</th>\n",
-       "      <td>COMMERCIAL METALS CO</td>\n",
-       "      <td>US2017231034</td>\n",
-       "      <td>Steel</td>\n",
-       "      <td>1.7124423388973957 percent</td>\n",
-       "      <td>1.45 delta_degree_Celsius</td>\n",
-       "      <td>0.01</td>\n",
-       "      <td>2.19</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>30</th>\n",
-       "      <td>NUCOR CORP</td>\n",
-       "      <td>US6703461052</td>\n",
-       "      <td>Steel</td>\n",
-       "      <td>1.572935428254485 percent</td>\n",
-       "      <td>1.54 delta_degree_Celsius</td>\n",
-       "      <td>0.00</td>\n",
-       "      <td>1.90</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>31</th>\n",
-       "      <td>CARPENTER TECHNOLOGY CORP</td>\n",
-       "      <td>US1442851036</td>\n",
-       "      <td>Steel</td>\n",
-       "      <td>1.517749452365582 percent</td>\n",
-       "      <td>1.63 delta_degree_Celsius</td>\n",
-       "      <td>0.01</td>\n",
-       "      <td>1.73</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>36</th>\n",
-       "      <td>TENARIS SA</td>\n",
-       "      <td>US88031M1099</td>\n",
-       "      <td>Steel</td>\n",
-       "      <td>1.087150770482239 percent</td>\n",
-       "      <td>1.58 delta_degree_Celsius</td>\n",
-       "      <td>NaN</td>\n",
-       "      <td>1.28</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "                  company_name    company_id sector  \\\n",
-       "4            NIPPON STEEL CORP  JP3381000003  Steel   \n",
-       "8     UNITED STATES STEEL CORP  US9129091081  Steel   \n",
-       "10                       POSCO  KR7005490008  Steel   \n",
-       "11                TERNIUM S.A.  US8808901081  Steel   \n",
-       "16  WORTHINGTON INDUSTRIES INC  US9818111026  Steel   \n",
-       "19            TIMKENSTEEL CORP  US8873991033  Steel   \n",
-       "27        COMMERCIAL METALS CO  US2017231034  Steel   \n",
-       "30                  NUCOR CORP  US6703461052  Steel   \n",
-       "31   CARPENTER TECHNOLOGY CORP  US1442851036  Steel   \n",
-       "36                  TENARIS SA  US88031M1099  Steel   \n",
-       "\n",
-       "                  contribution          temperature_score  \\\n",
-       "4   3.3870401057008093 percent  1.81 delta_degree_Celsius   \n",
-       "8    2.973857467344226 percent  1.54 delta_degree_Celsius   \n",
-       "10  2.7351925482594566 percent  1.83 delta_degree_Celsius   \n",
-       "11  2.6825715373130827 percent  1.71 delta_degree_Celsius   \n",
-       "16  2.4097283052012206 percent  1.28 delta_degree_Celsius   \n",
-       "19   2.155217880316027 percent  1.45 delta_degree_Celsius   \n",
-       "27  1.7124423388973957 percent  1.45 delta_degree_Celsius   \n",
-       "30   1.572935428254485 percent  1.54 delta_degree_Celsius   \n",
-       "31   1.517749452365582 percent  1.63 delta_degree_Celsius   \n",
-       "36   1.087150770482239 percent  1.58 delta_degree_Celsius   \n",
-       "\n",
-       "    ownership_percentage  portfolio_percentage  \n",
-       "4                  26.74                  3.48  \n",
-       "8                   0.01                  3.59  \n",
-       "10                  0.00                  2.78  \n",
-       "11                   NaN                  2.91  \n",
-       "16                  0.01                  3.50  \n",
-       "19                  0.06                  2.76  \n",
-       "27                  0.01                  2.19  \n",
-       "30                  0.00                  1.90  \n",
-       "31                  0.01                  1.73  \n",
-       "36                   NaN                  1.28  "
-      ]
-     },
-     "execution_count": 21,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
+   "outputs": [],
    "source": [
     "sector_contributions = company_contributions[['company_name', 'company_id', 'sector', 'contribution', 'temperature_score', 'ownership_percentage', 'portfolio_percentage']]\n",
     "sector_contributions.loc[sector_contributions['sector'] == 'Steel'][:10].round(2)"
@@ -1425,7 +546,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 22,
+   "execution_count": null,
    "metadata": {
     "pycharm": {
      "name": "#%%\n"
@@ -1461,7 +582,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.8.8"
+   "version": "3.9.0"
   }
  },
  "nbformat": 4,
diff --git a/requirements.txt b/requirements.txt
index 04864662..ffce369a 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,6 @@
 chardet==4.0.0
+dash==2.4.1
+dash_bootstrap_components==1.1.0
 iam-units==2021.11.12
 jupyter==1.0.0
 matplotlib==3.5.1
@@ -14,4 +16,4 @@ Sphinx==4.5.0
 sphinx-autoapi==1.8.4
 sphinx-autodoc-typehints==1.18.1
 sphinx-rtd-theme==1.0.0
-xlrd==2.0.1
+xlrd==2.0.1
\ No newline at end of file


Test patch:
diff --git a/test/test_projection.py b/test/test_projection.py
index 4be1fa87..237033f6 100644
--- a/test/test_projection.py
+++ b/test/test_projection.py
@@ -2,11 +2,48 @@
 import unittest
 import os
 import datetime
+from typing import List
 import pandas as pd
 
 from utils import QuantityEncoder
 from ITR.data.base_providers import EITrajectoryProjector
-from ITR.interfaces import ICompanyData
+from ITR.interfaces import ICompanyData, ProjectionControls
+
+
+def is_pint_dict_equal(result: List[dict], reference: List[dict]) -> bool:
+    is_equal = True
+    for i in range(len(result)):
+        if json.dumps(result[i], cls=QuantityEncoder) != json.dumps(reference[i], cls=QuantityEncoder):
+            print(f"Differences in projections_dict[{i}]: company_name = {result[i]['company_name']}; company_id = {result[i]['company_id']}")
+            for k, v in result[i].items():
+                if k == 'ghg_s1s2' and not reference[i].get(k):
+                    print("ghg_s1s2")
+                    continue
+                if k == 'projected_intensities':
+                    for scope in result[i][k]:
+                        if reference[i][k].get(scope):
+                            vref = reference[i][k]
+                            if not v.get(scope):
+                                print(f"projection has no scope {scope} for projection_intensities")
+                                is_equal = False
+                            elif json.dumps(v[scope]['projections'], cls=QuantityEncoder) != json.dumps(vref[scope]['projections'], cls=QuantityEncoder):
+                                print(f"projected_intensities differ for scope {scope}")
+                                print(f"computed {k}:\n{json.dumps(v[scope]['projections'], cls=QuantityEncoder)}\n\nreference {k}:\n{json.dumps(vref[scope]['projections'], cls=QuantityEncoder)}\n\n")
+                                is_equal = False
+                        elif v.get(scope):
+                            print(f"reference has no scope {scope} for projection_intensities")
+                            # ???? is_equal = False
+                    continue
+                try:
+                    vref = reference[i][k]
+                    if json.dumps(v, cls=QuantityEncoder) != json.dumps(vref, cls=QuantityEncoder):
+                        print(f"computed {k}:\n{json.dumps(v, cls=QuantityEncoder)}\n\nreference {k}:\n{json.dumps(vref, cls=QuantityEncoder)}\n\n")
+                        is_equal = False
+                except KeyError as e:
+                    print(f"missing in reference: {k}: {json.dumps(v)}\n\n")
+                    is_equal = False
+
+    return is_equal
 
 
 class TestProjector(unittest.TestCase):
@@ -27,45 +64,34 @@ def setUp(self) -> None:
         self.projector = EITrajectoryProjector()
 
     def test_project(self):
-        test_failed = False
         projections = self.projector.project_ei_trajectories(self.companies)
         with open(self.json_reference_path, 'r') as file:
             reference_projections = json.load(file)
 
+        projections_dict = [projection.dict() for projection in projections]
+        test_successful = is_pint_dict_equal(projections_dict, reference_projections)
+
+        self.assertEqual(test_successful, True)
+
+    # Need test data in order to test mean
+    def test_median(self):
+        projections = EITrajectoryProjector(ProjectionControls(TREND_CALC_METHOD=pd.DataFrame.median)).project_ei_trajectories(self.companies)
+        with open(self.json_reference_path, 'r') as file:
+            reference_projections = json.load(file)
+
         projections_dict = [projection.dict() for projection in projections]
 
-        for i in range(len(projections_dict)):
-            if json.dumps(projections_dict[i], cls=QuantityEncoder) != json.dumps(reference_projections[i], cls=QuantityEncoder):
-                print(f"Differences in projections_dict[{i}]: company_name = {projections_dict[i]['company_name']}; company_id = {projections_dict[i]['company_id']}")
-                for k, v in projections_dict[i].items():
-                    if k == 'ghg_s1s2' and not reference_projections[i].get(k):
-                        print("ghg_s1s2")
-                        continue
-                    if k == 'projected_intensities':
-                        for scope in projections_dict[i][k]:
-                            if reference_projections[i][k].get(scope):
-                                vref = reference_projections[i][k]
-                                if not v.get(scope):
-                                    print(f"projection has no scope {scope} for projection_intensities")
-                                    test_failed = True
-                                elif json.dumps(v[scope]['projections'], cls=QuantityEncoder) != json.dumps(vref[scope]['projections'], cls=QuantityEncoder):
-                                    print(f"projected_intensities differ for scope {scope}")
-                                    print(f"computed {k}:\n{json.dumps(v[scope]['projections'], cls=QuantityEncoder)}\n\nreference {k}:\n{json.dumps(vref[scope]['projections'], cls=QuantityEncoder)}\n\n")
-                                    test_failed = True
-                            elif v.get(scope):
-                                print(f"reference has no scope {scope} for projection_intensities")
-                                # ???? test_failed = True
-                        continue
-                    try:
-                        vref = reference_projections[i][k]
-                        if json.dumps(v, cls=QuantityEncoder) != json.dumps(vref, cls=QuantityEncoder):
-                            print(f"computed {k}:\n{json.dumps(v, cls=QuantityEncoder)}\n\nreference {k}:\n{json.dumps(vref, cls=QuantityEncoder)}\n\n")
-                            test_failed = True
-                    except KeyError as e:
-                        print(f"missing in reference: {k}: {json.dumps(v)}\n\n")
-                        test_failed = True
-
-        self.assertEqual(test_failed, False)
+        test_successful = is_pint_dict_equal(projections_dict, reference_projections)
+        self.assertEqual(test_successful, True)
+
+    def test_upper_lower(self):
+        projections = EITrajectoryProjector(ProjectionControls(UPPER_PERCENTILE=0.9, LOWER_PERCENTILE=0.1)).project_ei_trajectories(self.companies)
+        with open(self.json_reference_path, 'r') as file:
+            reference_projections = json.load(file)
+
+        projections_dict = [projection.dict() for projection in projections]
+        test_successful = is_pint_dict_equal(projections_dict, reference_projections)
+        self.assertEqual(test_successful, True)
 
 
 if __name__ == "__main__":