def _update_dprx(self):
if '<STR_LIT>' in self.freeparams:<EOL><INDENT>for r in range(self.nsites):<EOL><INDENT>self.dprx['<STR_LIT>'][r] = self.prx[r] * (self.ln_pi_codon[r]<EOL>- scipy.dot(self.ln_pi_codon[r], self.prx[r]))<EOL><DEDENT><DEDENT>if '<STR_LIT>' in self.freeparams:<EOL><INDENT>boolterm = scipy.ndarray(N_CODON, dtype='<STR_LIT:float>')<EOL>with scipy.errstate(divide='<STR_LIT>', under='<STR_LIT>', over='<STR_LIT>',<EOL>invalid='<STR_LIT>'):<EOL><INDENT>for i in range(N_NT - <NUM_LIT:1>):<EOL><INDENT>boolterm.fill(<NUM_LIT:0>)<EOL>for j in range(<NUM_LIT:3>):<EOL><INDENT>boolterm += ((i <= CODON_NT_INDEX[j]).astype('<STR_LIT:float>') /<EOL>(self.eta[i] - (i == CODON_NT_INDEX[j]).astype(<EOL>'<STR_LIT:float>')))<EOL><DEDENT>for r in range(self.nsites):<EOL><INDENT>self.dprx['<STR_LIT>'][i][r] = self.prx[r] * (boolterm -<EOL>scipy.dot(boolterm, self.prx[r]) / self.prx[r].sum())<EOL><DEDENT><DEDENT><DEDENT><DEDENT>
Update `dprx`.