name = "Block" @staticmethod def flatten(startnode, integerarray, weights=None): default_weights = () if not weights: weights = default_weights startnode, integerarray = _check_input(startnode, integerarray) shape = integerarray.array.shape _, seq = bfs.BFSBlos(shape=shape, startidx=int(startnode)-1, weights=weights) data = np.array([integerarray.array.flat[x] for x in seq]) return IndexSequence(list(seq), shape, data) if __name__ == '__main__': from pasc.objects.floatarray import FloatArray from pasc.modifier.mapper import RawBinary farr = FloatArray.from_data('pre', 'tas') # farr = FloatArray.from_numpy(np.arange(43, dtype=float)) farr = FloatArray.from_numpy(farr.array[::, ::, ::]) iarr = RawBinary.map(farr) startidx = 0 print(ChequerboardC.name, ChequerboardC.flatten(startidx, iarr).sequence) print(BlossomC.name, BlossomC.flatten(startidx, iarr).sequence) print(BlockC.name, BlockC.flatten(startidx, iarr).sequence) print(Linear.name, Linear.flatten(startidx, iarr).sequence) print(Blossom.name, Blossom.flatten(startidx, iarr).sequence) print(Block.name, Block.flatten(startidx, iarr).sequence) print(Chequerboard.name, Chequerboard.flatten(startidx, iarr).sequence)
def reset(self): self.builder = self.build(*self.args, **self.kwargs) def feed(self, seqobj): seqobj = _check_input(seqobj, BaseSequence) self.reset() for i in range(1, seqobj.sequence.size): t = seqobj.__class__(seqobj.sequence[:i], seqobj.shape, seqobj.data[:i]) yield self.builder.build_informationspace(t) self.reset() if __name__ == '__main__': from itertools import islice from pasc.objects.floatarray import FloatArray from pasc.modifier import mapper as mp, sequencer as sq, builder as bd farr = FloatArray.from_data('pre', 'tas', decode_times=False) farr = FloatArray.from_numpy(farr.array[0, ::, ::]) iarr = mp.RawBinary.map(farr) seq = sq.Linear.flatten(0, iarr) builder = bd.RestrictedBuilder kwargs = dict(restriction=5) feeder = SpaceFeeder1DMA(builder, **kwargs) result = islice(feeder.feed(seq, restriction=4), 902) for IS in result: print(IS, end='\n\n\n\n')