model.tam

Total Addressable Market module.

def make_tam_config(tam_config_array=None, overrides=None) -> pandas.core.frame.DataFrame:

Create a tam configuration. Overrides, if provided, should be in the form of a list of tuples (param, region, value) If override region is None, the value is applied to all regions.

Total Addressable Market module.

TAM( tamconfig, tam_ref_data_sources, tam_pds_data_sources, main_includes_regional=None, interpolation_overrides=None)

TAM module.

Arguments tamconfig: Pandas dataframe with rows: 'source_until_2014', 'source_after_2014', 'trend', 'growth', 'low_sd_mult', 'high_sd_mult' and columns for each region: 'World', 'OECD90', 'Eastern Europe', 'Asia (Sans Japan)', 'Middle East and Africa', 'Latin America', 'China', 'India', 'EU', 'USA' tam_ref_data_sources: a dict() of group names which contain dicts of data source names. Used for Total Addressable Market and adoption calculations in the REF scenario. For example: { 'Ambitious Cases': {'Study Name A': 'filename A', 'Study Name B': 'filename B', ...} 'Baseline Cases': {'Study Name C': 'filename C', 'Study Name D': 'filename D', ...} 'Conservative Cases': {'Study Name E': 'filename E', 'Study Name F': 'filename F', ...} } tam_pds_data_sources: as tam_ref_data_sources, for the PDS scenario. main_includes_regional: boolean of whether the global min/max/sd should include data from the primary regions.

Quirks Arguments: interpolation_override: a dictionary mapping regions to files with stored interpolations. This is used to finesse cases of numerical instability by storing the result of the existing Excel interpolation.

def forecast_data(self, region):

World: SolarPVUtil 'TAM Data'!B45:Q94 OECD90: SolarPVUtil 'TAM Data'!B163:Q212 Eastern Europe: SolarPVUtil 'TAM Data'!B227:Q276 Asia (sans Japan): SolarPVUtil 'TAM Data'!B290:Q339 Middle East and Africa: SolarPVUtil 'TAM Data'!B353:Q402 Latin America: SolarPVUtil 'TAM Data'!B416:Q465 China: SolarPVUtil 'TAM Data'!B479:Q528 India: SolarPVUtil 'TAM Data'!B543:Q592 EU: SolarPVUtil 'TAM Data'!B607:Q656 USA: SolarPVUtil 'TAM Data'!B672:Q721

def forecast_min_max_sd(self, region):

World: SolarPVUtil 'TAM Data'!V45:Y94 OECD90: SolarPVUtil 'TAM Data'!V163:Y212 Eastern Europe: SolarPVUtil 'TAM Data'!V227:Y276 Asia (sans Japan): SolarPVUtil 'TAM Data'!V290:Y339 Middle East and Africa: SolarPVUtil 'TAM Data'!V353:Y402 Latin America: SolarPVUtil 'TAM Data'!V416:Y465 China: SolarPVUtil 'TAM Data'!V479:Y528 India: SolarPVUtil 'TAM Data'!V543:Y592 EU: SolarPVUtil 'TAM Data'!V607:Y656 US: SolarPVUtil 'TAM Data'!V672:Y721

def forecast_low_med_high(self, region):

OECD90: SolarPVUtil 'TAM Data'!AA163:AC212 Eastern Europe: SolarPVUtil 'TAM Data'!AA227:AC276 Asia (sans Japan): SolarPVUtil 'TAM Data'!AA290:AC339 Middle East and Africa: SolarPVUtil 'TAM Data'!AA353:AC402 Latin America: SolarPVUtil 'TAM Data'!AA416:AC465 China: SolarPVUtil 'TAM Data'!AA479:AC528 India: SolarPVUtil 'TAM Data'!AA543:AC592 EU: SolarPVUtil 'TAM Data'!AA607:AC656 US: SolarPVUtil 'TAM Data'!AA672:AC721

def forecast_trend(self, region, trend=None):

Forecast for a region via one of several interpolation algorithms.

World: Linear: SolarPVUtil 'TAM Data'!BX50:BZ96 Degree2: SolarPVUtil 'TAM Data'!CE50:CH96 Degree3: SolarPVUtil 'TAM Data'!CM50:CQ96 Exponential: SolarPVUtil 'TAM Data'!CV50:CX96

OECD90: Linear: SolarPVUtil 'TAM Data'!BX168:BZ214 Degree2: SolarPVUtil 'TAM Data'!CE168:CH214 Degree3: SolarPVUtil 'TAM Data'!CM168:CQ214 Exponential: SolarPVUtil 'TAM Data'!CV168:CX214

Eastern Europe: Linear: SolarPVUtil 'TAM Data'!BX232:BZ278 Degree2: SolarPVUtil 'TAM Data'!CE232:CH278 Degree3: SolarPVUtil 'TAM Data'!CM232:CQ278 Exponential: SolarPVUtil 'TAM Data'!CV232:CX278

Asia (Sans Japan): Linear: SolarPVUtil 'TAM Data'!BX295:BZ341 Degree2: SolarPVUtil 'TAM Data'!CE295:CH341 Degree3: SolarPVUtil 'TAM Data'!CM295:CQ341 Exponential: SolarPVUtil 'TAM Data'!CV295:CX341

Middle East and Africa: Linear: SolarPVUtil 'TAM Data'!BX358:BZ404 Degree2: SolarPVUtil 'TAM Data'!CE358:CH404 Degree3: SolarPVUtil 'TAM Data'!CM358:CQ404 Exponential: SolarPVUtil 'TAM Data'!CV358:CX404

Latin America: Linear: SolarPVUtil 'TAM Data'!BX421:BZ467 Degree2: SolarPVUtil 'TAM Data'!CE421:CH467 Degree3: SolarPVUtil 'TAM Data'!CM421:CQ467 Exponential: SolarPVUtil 'TAM Data'!CV421:CX467

China: Linear: SolarPVUtil 'TAM Data'!BX484:BZ530 Degree2: SolarPVUtil 'TAM Data'!CE484:CH530 Degree3: SolarPVUtil 'TAM Data'!CM484:CQ530 Exponential: SolarPVUtil 'TAM Data'!CV484:CX530

India: Linear: SolarPVUtil 'TAM Data'!BX548:BZ594 Degree2: SolarPVUtil 'TAM Data'!CE548:CH594 Degree3: SolarPVUtil 'TAM Data'!CM548:CQ594 Exponential: SolarPVUtil 'TAM Data'!CV548:CX594

EU: Linear: SolarPVUtil 'TAM Data'!BX612:BZ658 Degree2: SolarPVUtil 'TAM Data'!CE612:CH658 Degree3: SolarPVUtil 'TAM Data'!CM612:CQ658 Exponential: SolarPVUtil 'TAM Data'!CV612:CX658

US: Linear: SolarPVUtil 'TAM Data'!BX677:BZ723 Degree2: SolarPVUtil 'TAM Data'!CE677:CH723 Degree3: SolarPVUtil 'TAM Data'!CM677:CQ723 Exponential: SolarPVUtil 'TAM Data'!CV677:CX723

def ref_tam_per_region(self):

Compiles the TAM for each of the major regions into a single dataframe.

This isn't on the TAM Data tab of the Excel implementation, but is commonly used by reference from other tabs. For convenience, we supply it. SolarPVUtil 'Unit Adoption Calculations'!A16:K63

def pds_tam_per_region(self):

Compiles the PDS TAM for each of the major regions into a single dataframe.

At the time of this writing (11/2018), only the World region has a PDS forecast. The other, smaller regions use the REF TAM.

This isn't on the TAM Data tab of the Excel implementation, but is commonly used by reference from other tabs. For convenience, we supply it. SolarPVUtil 'Unit Adoption Calculations'!A68:K115