Source code for pycirk.transformation_methods

# -*- coding:  utf-8 -*-
"""
Created on Mon Feb  6 12: 29: 47 2017

Description:  Uses methods within SUTops to calculate IOT and Extensions

Scope:  Modelling the Circular economy in EEIO

@author:  Franco Donati
@institution:  Leiden University CML
"""
import numpy as np
from pycirk.fundamental_operations import Operations as ops


[docs]class Transform: """ Transforms SUTs to IOT an calcualate extensions """ def __init__(self, SUTs): # Baseline monetary data self.V = SUTs["V"] # Supply matrix self.U = SUTs["U"] # Intermediate use self.Y = SUTs["Y"] # Final demand self.W = SUTs["W"] # Primary input self.E = SUTs["E"] # emissions extension self.EY = SUTs["YE"] # emissions extension final demand self.R = SUTs["R"] # Resources extension self.RY = SUTs["YR"] # Resources extension final demand self.M = SUTs["M"] # Materials extension self.MY = SUTs["YM"] # Materials extension final demand self.Cr_E_k = SUTs["Cr_E_k"] # Charact coefficients emissions self.Cr_R_k = SUTs["Cr_R_k"] # Charact coefficients resources self.Cr_M_k = SUTs["Cr_M_k"] # Charact coefficients materials self.Cr_W_k = SUTs["Cr_W_k"] # Charact coefficients factor inputs # baseline variables self.yi = np.array(np.sum(self.Y, axis=1)) # row sum of final demand self.yj = np.array(np.sum(self.Y, axis=0)) # col sum of final demand self.q = np.sum(self.V, axis=1) # total product output self.g = np.sum(self.V, axis=0) # total industry output # bv diagonals self.diag_q = np.diag(self.q) # diagonal of q self.diag_g = np.diag(self.g) # diagonal of g self.diag_yi = np.diag(self.yi) # diagonal of yi self.diag_yj = np.diag(self.yj) # diagonal of yj # bv inverses self.inv_diag_yi = ops.inv(self.diag_yi) self.inv_diag_yj = ops.inv(self.diag_yj) self.inv_diag_q = ops.inv(self.diag_q) self.inv_diag_g = ops.inv(self.diag_g) del(SUTs)
[docs] def IOTpxpSTA_TCm(self): """ IOT prod x prod Single tech Industry-technology assumption Technical coef method """ met = ops.PxP_ITA_TC T = met.T(self.V, self.inv_diag_g) # transformation matrix L = met.L(self.U, T, self.inv_diag_q) # leontief inverse w = met.B(self.W, T, self.inv_diag_q) # primary inp. coef matrix Z = met.Z(T, self.U) # intermediates x = ops.IOT.x_IAy(L, self.yi) W = ops.IOT.R(w, np.diag(x)) ver_base = ops.verifyIOT(Z, self.Y, W) del(self.V) del(self.U) del(self.W) e = met.B(self.E, T, self.inv_diag_q) # emis coef. matrix del(self.E) E = met.R(e, np.diag(x)) r = met.B(self.R, T, self.inv_diag_q) # resour coef. matrix del(self.R) R = met.R(r, np.diag(x)) m = met.B(self.M, T, self.inv_diag_q) # mater coef. matrix del(self.M) M = met.R(m, np.diag(x)) x = ops.IOT.x_IAy(L, self.yi) # total product ouput A = ops.IOT.A(Z, self.inv_diag_q) return {"Y": self.Y, "L": L, "Z": Z, "A": A, "W": W, "E": E, "EY": self.EY, "R": R, "RY": self.RY, "M": M, "MY": self.MY, "Cr_E_k": self.Cr_E_k, "Cr_M_k": self.Cr_M_k, "Cr_R_k": self.Cr_R_k, "Cr_W_k": self.Cr_W_k, "ver_base": ver_base }
[docs] def IOTpxpSTA_MSCm(self): """ IOT prod x prod Single tech Industry-technology assumption Market share coef method """ met = ops.PxP_ITA_MSC S = met.S(self.U, self.inv_diag_g) # ind. interm. coef. => in EUROSTAT manual shown as S D = met.D(self.V, self.inv_diag_q) # Market shares A = met.A(S, D) # technical coefficient matrix L = met.L(A) # leontief inverse w = met.B(self.W, D, self.inv_diag_g) # primary inputs x = ops.IOT.x_IAy(L, self.yi) W = ops.IOT.R(w, np.diag(x)) Z = met.Z(S, D, self.diag_q) # intermediates ver_base = ops.verifyIOT(Z, self.Y, W) del(self.V) del(self.U) del(self.W) e = met.B(self.E, D, self.inv_diag_g) # emis coef. matrix del(self.E) E = met.R(e, np.diag(x)) r = met.B(self.R, D, self.inv_diag_g) # resour coef. matrix del(self.R) R = met.R(r, np.diag(x)) m = met.B(self.M, D, self.inv_diag_g) # mater coef. matrix del(self.M) M = met.R(m, np.diag(x)) x = ops.IOT.x_IAy(L, self.yi) # total product ouput A = ops.IOT.A(Z, self.inv_diag_q) return {"Y": self.Y, "L": L, "Z": Z, "A": A, "W": W, "E": E, "EY": self.EY, "R": R, "RY": self.RY, "M": M, "MY": self.MY, "Cr_E_k": self.Cr_E_k, "Cr_M_k": self.Cr_M_k, "Cr_R_k": self.Cr_R_k, "Cr_W_k": self.Cr_W_k, "ver_base": ver_base }
# Add here more transformation methods for industry-by-industry