Esempio n. 1
0
 def _cef_piij(self, i, j):
     dmu_t = self._dmus_t[i]
     dmu_t1 = self._dmus_t1[i]
     if dmu_t.co2[j] != 0.0 and dmu_t1.co2[j] != 0.0:
         number1 = dmu_t.co2[j] / self._lmdi.co2_sum_t
         number2 = dmu_t1.co2[j] / self._lmdi.co2_sum_t1
         numerator1 = Lmdi.l_function(number1, number2) / self._lmdi.ll
         cef_i_j_t = self._cef_t[i, j]
         cef_i_j_t1 = self._cef_t1[i, j]
         denumnerator1 = Lmdi.l_function(cef_i_j_t1, cef_i_j_t * self.cef)
         return numerator1 * cef_i_j_t / denumnerator1
     else:
         return 0.0
Esempio n. 2
0
 def _peiij(self, i, j):
     dmu_t = self._dmus_t[i]
     dmu_t1 = self._dmus_t1[i]
     if dmu_t.co2[j] != 0.0 and dmu_t1.co2[j] != 0.0:
         sij_t = dmu_t.ene[j] / dmu_t.ene.total
         sij_t1 = dmu_t1.ene[j] / dmu_t1.ene.total
         __l = Lmdi.l_function(sij_t1,
                               sij_t * exp(sum(list(self._lmdi.emx()))))
         __L = Lmdi.l_function(dmu_t1.co2[j] / self._lmdi.co2_sum_t1,
                               dmu_t.co2[j] / self._lmdi.co2_sum_t)
         return __L * sij_t / self._lmdi.ll / __l
     elif dmu_t.co2[j] != 0.0 and dmu_t1.co2[j] == 0.0:
         cijt = dmu_t.co2[j] / self._lmdi.co2_sum_t
         return cijt / self._lmdi.ll / exp(sum(list(self._lmdi.emx())))
     else:
         return 0.0
Esempio n. 3
0
 def __init__(self, dmus_t, dmus_t1, name='', global_dmus=None):
     self._dmus_t = dmus_t
     self._dmus_t1 = dmus_t1
     self._name = name
     self._format()
     self._cache = {}
     self._lmdi = Lmdi.build(self._dmus_t, self._dmus_t1, self._name,
                             global_dmus)
Esempio n. 4
0
 def _rij(self, i, j, emx):
     dmu_t = self._dmus_t[i]
     dmu_t1 = self._dmus_t1[i]
     if dmu_t.co2[j] != 0.0 and dmu_t1.co2[j] != 0.0:
         sij_t = dmu_t.ene[j] / dmu_t.ene.total
         sij_t1 = dmu_t1.ene[j] / dmu_t1.ene.total
         l_upper = Lmdi.l_function(dmu_t1.co2[j] / self._lmdi.co2_sum_t1,
                                   dmu_t.co2[j] / self._lmdi.co2_sum_t)
         l_low = Lmdi.l_function(sij_t1, sij_t * emx)
         return (1.0 / self._LL) * (1.0 / self._lmdi.ll) \
                 *(l_upper / l_low) * (sij_t1 - sij_t)
     elif dmu_t.co2[j] != 0.0 and dmu_t1.co2[j] == 0.0:
         cij_t = dmu_t.co2[j] / self._lmdi.co2_sum_t
         return -1.0 * (1.0 / self._lmdi.ll) * (1.0 / self._LL) * (cij_t /
                                                                   (emx))
     elif dmu_t.co2[j] == 0.0 and dmu_t1.co2[j] != 0.0:
         cij_t = dmu_t1.co2[j] / self._lmdi.co2_sum_t1
         return (1.0 / self._lmdi.ll) * (1.0 / self._LL) * cij_t
     else:
         return 0.0
Esempio n. 5
0
 def _wi(self, idx):
     '''
     wi factor
     '''
     result = 0.0
     dmu_t = self._dmus_t[idx]
     dmu_t1 = self._dmus_t1[idx]
     for j in range(self._lmdi.energy_count):
         if dmu_t.co2[j] != 0.0 and dmu_t1.co2[j] != 0.0:
             number1 = dmu_t.co2[j] / self._lmdi.co2_sum_t
             number2 = dmu_t1.co2[j] / self._lmdi.co2_sum_t1
             result += Lmdi.l_function(number1, number2)
     return result / self._lmdi.ll
Esempio n. 6
0
 def _attribution_r(self, func, index):
     index_key = 'r' + index
     if not self._cache.has_key(index_key):
         result = []
         for idx, dmu_t_t1 in enumerate(zip(self._dmus_t, self._dmus_t1)):
             __wi = self._wi(idx)
             value_t = func(dmu_t_t1[0], idx)
             value_t1 = func(dmu_t_t1[1], idx, False)
             pii = __wi / Lmdi.l_function(value_t1,
                                          value_t * getattr(self, index))
             result.append(pii * value_t)
         total = sum(result)
         self._cache[index_key] = [item / total for item in result]
     return self._cache[index_key]
Esempio n. 7
0
 def rpei(self):
     '''
     r's pei
     '''
     if not self._cache.has_key('rpei'):
         result = []
         __pei = exp(sum(list(self._lmdi.pei())))
         for idx, dmu_t_t1 in enumerate(zip(self._dmus_t, self._dmus_t1)):
             __wi = self._wi(idx)
             pei_t = self._pei_t_t1(dmu_t_t1[0], idx)
             pei_t1 = self._pei_t_t1(dmu_t_t1[1], idx, False)
             pii = __wi / (Lmdi.l_function(pei_t1, pei_t * __pei))
             result.append(pii * pei_t)
         total = sum(result)
         self._cache['rpei'] = [item / total for item in result]
     return self._cache['rpei']
Esempio n. 8
0
 def ryct(self):
     '''
     r yct
     '''
     if not self._cache.has_key('ryct'):
         result = []
         __yct = exp(sum(list(self._lmdi.yct())))
         for idx, dmu_t_t1 in enumerate(zip(self._dmus_t, self._dmus_t1)):
             __wi = self._wi(idx)
             yct_t = self._yct_t_t1(dmu_t_t1[0], idx)
             yct_t1 = self._yct_t_t1(dmu_t_t1[1], idx, False)
             pii = __wi / Lmdi.l_function(yct_t1, yct_t * __yct)
             result.append(pii * yct_t)
         total = sum(result)
         self._cache['ryct'] = [item / total for item in result]
     return self._cache['ryct']
Esempio n. 9
0
 def reue(self):
     '''
     r's eue
     '''
     if not self._cache.has_key('reue'):
         result = []
         __eue = exp(sum(list(self._lmdi.eue())))
         for idx, dmu_t_t1 in enumerate(zip(self._dmus_t, self._dmus_t1)):
             __wi = self._wi(idx)
             eue_t = self._eue_t_t1(dmu_t_t1[0], idx)
             eue_t1 = self._eue_t_t1(dmu_t_t1[1], idx, False)
             pii = __wi / Lmdi.l_function(eue_t1, eue_t * __eue)
             result.append(pii * eue_t)
         total = sum(result)
         self._cache['reue'] = [item / total for item in result]
     return self._cache['reue']