Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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')