def compute_expectations(self): self.Ew, self.Ewinv = _gap.compute_gig_expectations( self.a, self.rhow, self.tauw) self.Ewinvinv = 1. / self.Ewinv self.Eh, self.Ehinv = _gap.compute_gig_expectations( self.b, self.rhoh, self.tauh) self.Ehinvinv = 1. / self.Ehinv self.Et, self.Etinv = _gap.compute_gig_expectations( self.alpha / self.K, self.rhot, self.taut) self.Etinvinv = 1. / self.Etinv
def compute_expectations(self): self.Ew, self.Ewinv = _gap.compute_gig_expectations(self.a, self.rhow, self.tauw) self.Ewinvinv = 1./self.Ewinv self.Eh, self.Ehinv = _gap.compute_gig_expectations(self.b, self.rhoh, self.tauh) self.Ehinvinv = 1./self.Ehinv self.Et, self.Etinv = _gap.compute_gig_expectations(self.alpha/self.K, self.rhot, self.taut) self.Etinvinv = 1./self.Etinv
def update_theta(self): goodk = self.goodk() xxtwidinvsq = self.X * self._xtwid(goodk)**(-2) xbarinv = self._xbar(goodk)**(-1) self.rhot[goodk] = self.alpha + np.sum( np.dot(self.Ew[:, goodk].T, xbarinv) * self.Eh[goodk, :], axis=1) self.taut[goodk] = self.Etinvinv[goodk]**2 * \ np.sum(np.dot(self.Ewinvinv[:, goodk].T, xxtwidinvsq) * self.Ehinvinv[goodk, :], axis=1) self.taut[self.taut < 1e-100] = 0 self.Et[goodk], self.Etinv[goodk] = _gap.compute_gig_expectations( self.alpha / self.K, self.rhot[goodk], self.taut[goodk]) self.Etinvinv[goodk] = 1. / self.Etinv[goodk]
def update_theta(self): goodk = self.goodk() xxtwidinvsq = self.X * self._xtwid(goodk)**(-2) xbarinv = self._xbar(goodk) ** (-1) self.rhot[goodk] = self.alpha + np.sum(np.dot(self.Ew[:, goodk].T, xbarinv) * self.Eh[goodk, :], axis=1) self.taut[goodk] = self.Etinvinv[goodk]**2 * \ np.sum(np.dot(self.Ewinvinv[:, goodk].T, xxtwidinvsq) * self.Ehinvinv[goodk, :], axis=1) self.taut[self.taut < 1e-100] = 0 self.Et[goodk], self.Etinv[goodk] = _gap.compute_gig_expectations( self.alpha/self.K, self.rhot[goodk], self.taut[goodk]) self.Etinvinv[goodk] = 1./self.Etinv[goodk]
def update_w(self): goodk = self.goodk() xxtwidinvsq = self.X * self._xtwid(goodk)**(-2) xbarinv = self._xbar(goodk) ** (-1) dEt = self.Et[goodk] dEtinvinv = self.Etinvinv[goodk] self.rhow[:, goodk] = self.a + np.dot(xbarinv, dEt * self.Eh[goodk, :].T) self.tauw[:, goodk] = self.Ewinvinv[:, goodk]**2 * \ np.dot(xxtwidinvsq, dEtinvinv * self.Ehinvinv[goodk, :].T) self.tauw[self.tauw < 1e-100] = 0 self.Ew[:, goodk], self.Ewinv[:, goodk] = _gap.compute_gig_expectations( self.a, self.rhow[:, goodk], self.tauw[:, goodk]) self.Ewinvinv[:, goodk] = 1./self.Ewinv[:, goodk]
def update_w(self): goodk = self.goodk() xxtwidinvsq = self.X * self._xtwid(goodk)**(-2) xbarinv = self._xbar(goodk)**(-1) dEt = self.Et[goodk] dEtinvinv = self.Etinvinv[goodk] self.rhow[:, goodk] = self.a + np.dot(xbarinv, dEt * self.Eh[goodk, :].T) self.tauw[:, goodk] = self.Ewinvinv[:, goodk]**2 * \ np.dot(xxtwidinvsq, dEtinvinv * self.Ehinvinv[goodk, :].T) self.tauw[self.tauw < 1e-100] = 0 self.Ew[:, goodk], self.Ewinv[:, goodk] = _gap.compute_gig_expectations( self.a, self.rhow[:, goodk], self.tauw[:, goodk]) self.Ewinvinv[:, goodk] = 1. / self.Ewinv[:, goodk]
def update_h(self): goodk = self.goodk() xxtwidinvsq = self.X * self._xtwid(goodk)**(-2) xbarinv = self._xbar(goodk) ** (-1) dEt = self.Et[goodk] dEtinvinv = self.Etinvinv[goodk] self.rhoh[goodk, :] = self.b + np.dot(dEt[:, np.newaxis] * self.Ew[:, goodk].T, xbarinv) self.tauh[goodk, :] = self.Ehinvinv[goodk, :]**2 * \ np.dot(dEtinvinv[:, np.newaxis] * self.Ewinvinv[:, goodk].T, xxtwidinvsq) self.tauh[self.tauh < 1e-100] = 0 self.Eh[goodk, :], self.Ehinv[goodk, :] = _gap.compute_gig_expectations( self.b, self.rhoh[goodk, :], self.tauh[goodk, :]) self.Ehinvinv[goodk, :] = 1./self.Ehinv[goodk, :]
def update_h(self): goodk = self.goodk() xxtwidinvsq = self.X * self._xtwid(goodk)**(-2) xbarinv = self._xbar(goodk)**(-1) dEt = self.Et[goodk] dEtinvinv = self.Etinvinv[goodk] self.rhoh[goodk, :] = self.b + np.dot( dEt[:, np.newaxis] * self.Ew[:, goodk].T, xbarinv) self.tauh[goodk, :] = self.Ehinvinv[goodk, :]**2 * \ np.dot(dEtinvinv[:, np.newaxis] * self.Ewinvinv[:, goodk].T, xxtwidinvsq) self.tauh[self.tauh < 1e-100] = 0 self.Eh[goodk, :], self.Ehinv[ goodk, :] = _gap.compute_gig_expectations(self.b, self.rhoh[goodk, :], self.tauh[goodk, :]) self.Ehinvinv[goodk, :] = 1. / self.Ehinv[goodk, :]