def _read_from_blocks(self, blocknumstart, blockstart, blocknumend, blockstop, step, chan_idx, sample_idx):
    if (blocknumstart == blocknumend):
        return self.read_from_block(blocknumstart, blockstart, blockstop, step, chan_idx, sample_idx)
    start = blockstart
    vlt_all = []
    for bnum in xrange(blocknumstart, (blocknumend + 1)):
        if (bnum == blocknumend):
            vlt_all.append(self.read_from_block(bnum, start, blockstop, step, chan_idx, sample_idx))
        else:
            vlt_all.append(self.read_from_block(bnum, start, self.nprofiles_per_block, step, chan_idx, sample_idx))
            start = ((start - self.nprofiles_per_block) % step)
    return np.concatenate(vlt_all, axis=0)
def _read_from_blocks(self, blocknumstart, blockstart, blocknumend, blockstop, step, chan_idx, sample_idx):
    if (blocknumstart == blocknumend):
        return self.read_from_block(blocknumstart, blockstart, blockstop, step, chan_idx, sample_idx)
    start = blockstart
    vlt_all = []
    for bnum in xrange(blocknumstart, (blocknumend + 1)):
        if (bnum == blocknumend):
            vlt_all.append(self.read_from_block(bnum, start, blockstop, step, chan_idx, sample_idx))
        else:
            vlt_all.append(self.read_from_block(bnum, start, self.nprofiles_per_block, step, chan_idx, sample_idx))
            start = ((start - self.nprofiles_per_block) % step)
    return np.concatenate(vlt_all, axis=0)