docs: def getGenotypes(self,i0=None,i1=None,pos0=None,pos1=None,chrom=None,center=True,unit=True,pos_cum0=None,pos_cum1=None,impute_missing=True):
          """load genotypes. 
          Optionally the indices for loading subgroups the genotypes for all people
          can be given in one out of three ways: 
          - 0-based indexing (i0-i1)
          - position (pos0-pos1 on chrom)
          - cumulative position (pos_cum0-pos_cum1)
          If all these are None (default), then all genotypes are returned
  
          Args:
              i0:         genotype index based selection (start index)
              i1:         genotype index based selection (stop index)
              pos0:       position based selection (start position)
              pos1:       position based selection (stop position)
              chrom:      position based selection (chromosome)
              pos_cum0:   cumulative position based selection (start position)
              pos_cum1:   cumulative position based selection (stop position)
              impute_missing: Boolean indicator variable if missing values should be imputed
          
          Returns:
              X:          scipy.array of genotype values
          """
          #position based matching?
          if (i0 is None) and (i1 is None) and ((pos0 is not None) & (pos1 is not None) & (chrom is not None)) or ((pos_cum0 is not None) & (pos_cum1 is not None)):
              i0,i1=self.getGenoIndex(pos0=pos0,pos1=pos1,chrom=chrom,pos_cum0=pos_cum0,pos_cum1=pose_cum1)
          #index based matching?
          if (i0 is not None) & (i1 is not None):
              X = self.genoM[:,i0:i1]
          else:
              X = self.genoM[:,:]
          if impute_missing:
              X = du.imputeMissing(X,center=center,unit=unit)
          return X