code: def get_variables(self, missing_in_geno=None):
          
          count = 0
          mismatch = 0
  
          if missing_in_geno is None:
              nonmissing = numpy.invert(self.missing[self.idx])
          else:
              nonmissing = numpy.invert(self.missing[self.idx] | missing_in_geno)
          nmcount = sum(nonmissing)
          covars = numpy.zeros((self.covar_count, nmcount))
          for idx in range(0, self.covar_count):
              covars[idx] = self.covariates[idx][nonmissing]
              min = covars[idx][covars[idx] != pheno_covar.PhenoCovar.missing_encoding].min()
              max = covars[idx][covars[idx] != pheno_covar.PhenoCovar.missing_encoding].max()
              if min == max:
                  raise InvariantVar("Covar %s doesn't have enough variation to continue" % (self.datasource.covariate_labels[idx]))
  
          min = self.phenotypes[self.idx][nonmissing].min()
          max = self.phenotypes[self.idx][nonmissing].max()
          if min == max:
              raise InvariantVar("Phenotype %s doesn't have enough variation to continue" % (self.datasource.phenotype_names[self.idx]))
          return (self.phenotypes[self.idx][nonmissing], covars, nonmissing)
docs: Extract the complete set of data based on missingness over all
          for the current locus.
  
          :param missing_in_geno: mask associated with missingness in genotype
          :return: (phenotypes, covariates, nonmissing used for this set of vars)