-
Notifications
You must be signed in to change notification settings - Fork 120
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New Feature Proposal: compute Kaya identity factors #875
Comments
Thanks @zacharyschmidt for the proposal! I took the liberty of editing your issue-description to 1) add the model, scenario and region dimensions directly when initializing the IamDataFrame (not as data columns), and 2) format the code as python, both to improve readability. I'll follow up with more comments later. |
Thanks @danielhuppmann! Glad you could take a first look at it. |
Now with a bit more time to think this through...
|
Thanks for those recommendations! I am using all of them for the implementation. For point 5 I have a few questions. My intention with the POPULATION = "Population"
GDP_MER = "GDP|MER"
GDP_PPP = "GDP|PPP"
FINAL_ENERGY = "Final Energy"
PRIMARY_ENERGY = "Primary Energy"
PRIMARY_ENERGY_FF = "Primary Energy (fossil fuels)"
PRIMARY_ENERGY_COAL = "Primary Energy|Coal"
PRIMARY_ENERGY_OIL = "Primary Energy|Oil"
PRIMARY_ENERGY_GAS = "Primary Energy|Gas"
EMISSIONS_CO2_INDUSTRIAL_PROCESSES = "Emissions|CO2|Industrial Processes"
EMISSIONS_CO2_CARBON_CAPTURE_AND_STORAGE = "Emissions|CO2|Carbon Capture and Storage"
EMISSIONS_CO2_CARBON_CAPTURE_AND_STORAGE_BIOMASS = "Emissions|CO2|Carbon Capture and Storage|Biomass"
EMISSIONS_CO2_FOSSIL_FUELS_AND_INDUSTRY = "Emissions|CO2|Fossil Fuels and Industry"
EMISSIONS_CO2_AFOLU = "Emissions|CO2|AFOLU"
CCS_FOSSIL_ENERGY = "Carbon Sequestration|CCS|Fossil|Energy"
CCS_FOSSIL_INDUSTRY = "Carbon Sequestration|CCS|Fossil|Industrial Processes"
CCS_BIOMASS_ENERGY = "Carbon Sequestration|CCS|Biomass|Energy"
CCS_BIOMASS_INDUSTRY = "Carbon Sequestration|CCS|Biomass|Industrial Processes" I think that specific variable names are not used at all in the existing pyam source code (except for test data), so I don't have an example to look at. Let me know what's preferred in terms of defined constants vs direct use of strings and I'll follow that. Also, thanks for pointing me to the common-definitions repo. I'll make a pull request there to add TFC and NFC. |
Right, we shouldn't hard-code anything in the actual source code - I only meant that the |
Do you think I can assume that the common-definitions are standard and will be used for most model outputs in the future? I want to make sure I'm expecting standard variable names in my input data. For example, a common variable for models from 4-5 years ago is "Emissions|CO2|Fossil Fuels and Industry". I can't find that in the common-definitions--I think the current equivalent would be "Emissions|CO2|Energy and Industrial Processes". Do you think it's reasonable to require all input data contain only variables from common-definitions? Then if a user is working with older or non-standard model outputs they will be responsible for standardizing the input data before calling kaya functions. |
…e module. Also add the kaya subdirectory that contains the implementation for the kaya methods. (IAMconsortium#875)
…e module. Also add the kaya subdirectory that contains the implementation for the kaya methods. (IAMconsortium#875)
This feature would add methods to the IamDataFrame to compute Kaya identity factors according to the methodology described in Koomey et al 2019 and 2022.
KoomeyExploringBlackBox2022FINAL.pdf
SupplementalinformationKoomeyExploringBlackBox-FINAL.docx
InsidetheblackboxFINAL2019.pdf
AppendicesInsidetheBlackBox-v61.docx
Our idea is to add three methods to the public api of the compute module which return Kaya variables, Kaya factors, and an LMDI decomposition. Please let me know if the compute module is not the right place for this feature!
Kaya Variables
These are produced by simple transformations of the input data variables, mostly doing arithmetic with the emissions and CCS input variables to get the quantities we're interested in.
Kaya Factors
These are the terms of the Expanded Kaya identity, calculated from the Kaya variables.
LMDI Decomposition
The Log-Mean Divisia Index method attributes the a portion of the total change in emissions from the reference scenario to the intervention scenario to each Kaya Factor.
Below are example tests for the method to compute Kaya variables. I hope this is enough to get the discussion started. As I progress with the development I'll update this thread with questions that come up.
The text was updated successfully, but these errors were encountered: