def _K_computations(self, X, X2):
<EOL>self._extract_t_indices(X, X2)<EOL>self._K_compute_eq()<EOL>self._K_compute_ode_eq()<EOL>if X2 is None:<EOL><INDENT>self._K_eq_ode = self._K_ode_eq.T<EOL><DEDENT>else:<EOL><INDENT>self._K_compute_ode_eq(transpose=True)<EOL><DEDENT>self._K_compute_ode()<EOL>if X2 is None:<EOL><INDENT>self._K_dvar = np.zeros((self._t.shape[<NUM_LIT:0>], self._t.shape[<NUM_LIT:0>]))<EOL><DEDENT>else:<EOL><INDENT>self._K_dvar = np.zeros((self._t.shape[<NUM_LIT:0>], self._t2.shape[<NUM_LIT:0>]))<EOL><DEDENT>self._K_dvar = np.vstack((np.hstack((self._K_eq, self._K_eq_ode)),<EOL>np.hstack((self._K_ode_eq, self._K_ode))))<EOL>self._K_dvar = self._K_dvar[self._rorder, :]<EOL>self._K_dvar = self._K_dvar[:, self._rorder2]<EOL>if X2 is None:<EOL><INDENT>self._scale = np.zeros((self._t.size, self._t.size))<EOL>code="""<STR_LIT>"""<EOL>scale_mat, B, index = self._scale, self.B, self._index<EOL>N, output_dim = self._t.size, self.output_dim<EOL>weave.inline(code,['<STR_LIT:index>',<EOL>'<STR_LIT>', '<STR_LIT:B>',<EOL>'<STR_LIT:N>', '<STR_LIT>'])<EOL><DEDENT>else:<EOL><INDENT>self._scale = np.zeros((self._t.size, self._t2.size))<EOL>code = """<STR_LIT>"""<EOL>scale_mat, B, index, index2 = self._scale, self.B, self._index, self._index2<EOL>N, N2, output_dim = self._t.size, self._t2.size, self.output_dim<EOL>weave.inline(code, ['<STR_LIT:index>', '<STR_LIT>',<EOL>'<STR_LIT>', '<STR_LIT:B>',<EOL>'<STR_LIT:N>', '<STR_LIT>', '<STR_LIT>'])<EOL><DEDENT>
Perform main body of computations for the ode1 covariance function.