def update_eig_J(self):
CLOG.debug('<STR_LIT>')<EOL>vls, vcs = np.linalg.eigh(self.JTJ)<EOL>res0 = self.calc_residuals()<EOL>for a in range(min([self.num_eig_dirs, vls.size])):<EOL><INDENT>stif_dir = vcs[-(a+<NUM_LIT:1>)] <EOL>dl = self.eig_dl <EOL>_ = self.update_function(self.param_vals + dl*stif_dir)<EOL>res1 = self.calc_residuals()<EOL>grad_stif = (res1-res0)/dl<EOL>self._rank_1_J_update(stif_dir, grad_stif)<EOL><DEDENT>self.JTJ = np.dot(self.J, self.J.T)<EOL>_ = self.update_function(self.param_vals)<EOL>
Execute an eigen update of J