def _splitGenoSlidingWindow(self,size=5e4,step=None,minSnps=1.,maxSnps=SP.inf):
        """
        split into windows using a slide criterion
        Args:
            size:       window size
            step:       moving step (default: 0.5*size)
            minSnps:    only windows with nSnps>=minSnps are considered
            maxSnps:    only windows with nSnps>=maxSnps are considered
        """
        if step is None:    step = 0.5*size
        chroms  = SP.unique(self.chrom)
        wnd_pos       = []
        idx_wnd_start = []
        nSnps         = []
        wnd_i = 0

        nSnps = []
        for chrom_i in chroms:
            start = 0
            Ichrom = self.chrom==chrom_i
            idx_chrom_start = SP.where(Ichrom)[0][0]
            pos_chr = self.pos[Ichrom]
            pos_chr_max = pos_chr.max()
            while 1:
                if start>pos_chr_max: break
                end = start+size
                Ir = (self.pos>=start)*(self.pos<end)
                _nSnps = Ir.sum()
                if _nSnps>minSnps and _nSnps<maxSnps:
                    wnd_pos.append([chrom_i,start,start+size])
                    nSnps.append(_nSnps)
                    idx_wnd_start.append(idx_chrom_start+SP.where(Ir)[0][0])
                    wnd_i+=1
                start += step
        self._wnd_pos = SP.array(wnd_pos)
        self._idx_wnd_start = SP.array(idx_wnd_start)
        self._nSnps = SP.array(nSnps)