<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _initGP(self):
 """ Internal method for initialization of the GP inference objetct """

        if self._inference=='GP2KronSum': 
            signalPos = sp.where(sp.arange(self.n_randEffs)!=self.noisPos)[0][0]
            gp = GP2KronSum(Y=self.Y, F=self.sample_designs, A=self.trait_designs,
                            Cg=self.trait_covars[signalPos], Cn=self.trait_covars[self.noisPos],
                            R=self.sample_covars[signalPos])
        else:
            mean = MeanKronSum(self.Y, self.sample_designs, self.trait_designs) 
            Iok = vec(~sp.isnan(mean.Y))[:,0] 
            if Iok.all():   Iok = None
            covar = SumCov(*[KronCov(self.trait_covars[i], self.sample_covars[i], Iok=Iok) for i in range(self.n_randEffs)])
            gp = GP(covar = covar, mean = mean) 
        self.gp = gp