Beispiel #1
0
def test_combinations():
    seed(1234)  # random seed

    #XXX: archive/cache should allow scalar and list, also dict (as new table) ?
    dicts = [
        {},
        {
            'a': 1
        },
        {
            'a': [1, 2]
        },
        {
            'a': {
                'x': 3
            }
        },
    ]
    init = dicts[0]

    archives = [
        hdf_archive('memo.hdf5', init, serialized=True, meta=False),
        hdf_archive('memo.h5', init, serialized=False, meta=False),
        hdf_archive('xxxx.hdf5', init, serialized=True, meta=True),
        hdf_archive('xxxx.h5', init, serialized=False, meta=True),
        hdfdir_archive('memoq', init, serialized=False, meta=False),
        hdfdir_archive('memor', init, serialized=True, meta=False),
        hdfdir_archive('memos', init, serialized=False, meta=True),
        hdfdir_archive('memot', init, serialized=True, meta=True),
    ]
    if tuple(int(i) for i in h5py.__version__.split('.', 2)) < (3, 0, 0):
        #FIXME: hdfdir_archive fails with serialized=False in python 3.x
        archives = archives[:4] + archives[5::2]
    maps = [
        None,
        keymap(typed=False, flat=True, sentinel=NOSENTINEL),
        keymap(typed=False, flat=False, sentinel=NOSENTINEL),
        keymap(typed=True, flat=False, sentinel=NOSENTINEL),
        hashmap(typed=False, flat=True, sentinel=NOSENTINEL),
        hashmap(typed=False, flat=False, sentinel=NOSENTINEL),
        hashmap(typed=True, flat=True, sentinel=NOSENTINEL),
        hashmap(typed=True, flat=False, sentinel=NOSENTINEL),
        stringmap(typed=False, flat=True, sentinel=NOSENTINEL),
        stringmap(typed=False, flat=False, sentinel=NOSENTINEL),
        stringmap(typed=True, flat=True, sentinel=NOSENTINEL),
        stringmap(typed=True, flat=False, sentinel=NOSENTINEL),
        picklemap(typed=False, flat=True, sentinel=NOSENTINEL),
        picklemap(typed=False, flat=False, sentinel=NOSENTINEL),
        picklemap(typed=True, flat=True, sentinel=NOSENTINEL),
        picklemap(typed=True, flat=False, sentinel=NOSENTINEL),
    ]

    for mapper in maps:
        #print (mapper)
        func = [_test_cache(cache, mapper) for cache in archives]
        _cleanup()

        for f in func:
            #print (f.info())
            assert f.info().hit + f.info().miss + f.info().load == N
Beispiel #2
0
def test_combinations():
    seed(1234) # random seed

    #XXX: archive/cache should allow scalar and list, also dict (as new table) ?
    dicts = [
      {},
      {'a':1},
      {'a':[1,2]},
      {'a':{'x':3}},
    ]
    init = dicts[0]

    archives = [
      hdf_archive('memo.hdf5',init,serialized=True,meta=False),
      hdf_archive('memo.h5',init,serialized=False,meta=False),
      hdf_archive('xxxx.hdf5',init,serialized=True,meta=True),
      hdf_archive('xxxx.h5',init,serialized=False,meta=True),
#     hdfdir_archive('memoq',init,serialized=False,meta=False),
      hdfdir_archive('memor',init,serialized=True,meta=False),
#     hdfdir_archive('memos',init,serialized=False,meta=True),
      hdfdir_archive('memot',init,serialized=True,meta=True),
      #FIXME: hdfdir_archive fails with serialized=False in python 3.x
    ]
    maps = [
      None,
      keymap(typed=False, flat=True, sentinel=NOSENTINEL),
      keymap(typed=False, flat=False, sentinel=NOSENTINEL),
      keymap(typed=True, flat=False, sentinel=NOSENTINEL),
      hashmap(typed=False, flat=True, sentinel=NOSENTINEL),
      hashmap(typed=False, flat=False, sentinel=NOSENTINEL),
      hashmap(typed=True, flat=True, sentinel=NOSENTINEL),
      hashmap(typed=True, flat=False, sentinel=NOSENTINEL),
      stringmap(typed=False, flat=True, sentinel=NOSENTINEL),
      stringmap(typed=False, flat=False, sentinel=NOSENTINEL),
      stringmap(typed=True, flat=True, sentinel=NOSENTINEL),
      stringmap(typed=True, flat=False, sentinel=NOSENTINEL),
      picklemap(typed=False, flat=True, sentinel=NOSENTINEL),
      picklemap(typed=False, flat=False, sentinel=NOSENTINEL),
      picklemap(typed=True, flat=True, sentinel=NOSENTINEL),
      picklemap(typed=True, flat=False, sentinel=NOSENTINEL),
    ]

    for mapper in maps:
       #print (mapper)
        func = [_test_cache(cache, mapper) for cache in archives]
        _cleanup()

        for f in func:
           #print (f.info())
            assert f.info().hit + f.info().miss + f.info().load == N
Beispiel #3
0
    def _memoize(self, solver, tol=1, all=False, size=None):
        """apply caching to ensemble solver instance"""
        archive = self.archive if all else self.cache

        from klepto import lru_cache as _cache  #XXX: or lru_? or ?
        from klepto.keymaps import keymap

        km = keymap()
        ca = _cache(maxsize=size,
                    ignore=('**', 'out'),
                    tol=tol,
                    cache=archive,
                    keymap=km)

        @ca
        def memo(*args, **kwds):
            return kwds['out']

        l = -1 if self._inv else 1
        if all:  #FIXME: applied *after* _solve; should be *during* _solve
            cache = memo.__cache__()
            for _solver in solver._allSolvers:
                if _solver._evalmon:
                    param = _solver._evalmon._x
                    cost = _solver._evalmon._y  #FIXME: python2.5
                    cache.update(
                        (tuple(x), l * y) for (x, y) in zip(param, cost))
        else:
            for _solver in solver._allSolvers:
                bestSol = tuple(_solver.bestSolution)
                bestRes = float(_solver.bestEnergy)
                memo(*bestSol, out=l * bestRes)  #FIXME: python2.5
        return memo
Beispiel #4
0
    def _memoize(self, solver, tol=1, all=False, size=None):
        """apply caching to ensemble solver instance"""
        archive = self.archive if all else self.cache

        from klepto import lru_cache as _cache #XXX: or lru_? or ?
        from klepto.keymaps import keymap

        km = keymap()
        ca = _cache(maxsize=size, ignore=('**','out'),
                    tol=tol, cache=archive, keymap=km)

        @ca
        def memo(*args, **kwds):
            return kwds['out']

        l = -1 if self._inv else 1
        if all: #FIXME: applied *after* _solve; should be *during* _solve
            cache = memo.__cache__()
            for _solver in solver._allSolvers:
                if _solver._evalmon:
                    param = _solver._evalmon._x
                    cost = _solver._evalmon._y             #FIXME: python2.5
                    cache.update((tuple(x),l*y) for (x,y) in zip(param,cost))
        else:
            for _solver in solver._allSolvers:
                bestSol = tuple(_solver.bestSolution)
                bestRes = float(_solver.bestEnergy)
                memo(*bestSol, out=l*bestRes)  #FIXME: python2.5
        return memo
Beispiel #5
0
    def _memoize(self, solver, tol=1):
        from klepto import inf_cache
        from klepto.keymaps import keymap

        km = keymap()
        ca = inf_cache(tol=tol, ignore=('**','out'),
                       cache=self.archive, keymap=km)

        @ca
        def memo(*args, **kwds):
            return kwds['out']

        l = -1 if self._inv else 1
        for _solver in solver._allSolvers:
            bestSol = tuple(_solver.bestSolution)
            bestRes = float(_solver.bestEnergy)
            memo(*bestSol, out=l*bestRes)  #FIXME: python2.5
        return memo
Beispiel #6
0
    def _memoize(self, solver, tol=1):
        from klepto import inf_cache
        from klepto.keymaps import keymap

        km = keymap()
        ca = inf_cache(tol=tol,
                       ignore=('**', 'out'),
                       cache=self.archive,
                       keymap=km)

        @ca
        def memo(*args, **kwds):
            return kwds['out']

        l = -1 if self._inv else 1
        for _solver in solver._allSolvers:
            bestSol = tuple(_solver.bestSolution)
            bestRes = float(_solver.bestEnergy)
            memo(*bestSol, out=l * bestRes)  #FIXME: python2.5
        return memo
Beispiel #7
0
     #sqltable_archive('memo',init),
     #sql_archive(None,init),
     #sql_archive('sqlite:///memo.db',init),
     #sql_archive('memo',init),
    ]
    #FIXME: even 'safe' archives throw Error when cache.load, cache.dump fails
    #       (often demonstrated in sqltable_archive, as barfs on tuple & dict)

    #XXX: when running a single map, there should be 3 possible results:
    #     1) flat=False may produce unhashable keys: all misses
    #     2) typed=False doesn't distinguish float & int: more hits & loads
    #     3) typed=True distingushes float & int: less hits & loads
    #XXX: due to the seed, each of the 3 cases should yield the same results
    maps = [
      None,
      keymap(typed=False, flat=True, sentinel=NOSENTINEL),
      keymap(typed=False, flat=False, sentinel=NOSENTINEL),
      keymap(typed=True, flat=True, sentinel=NOSENTINEL),
      keymap(typed=True, flat=False, sentinel=NOSENTINEL),
     #keymap(typed=False, flat=True, sentinel=SENTINEL),
     #keymap(typed=False, flat=False, sentinel=SENTINEL),
     #keymap(typed=True, flat=True, sentinel=SENTINEL),
     #keymap(typed=True, flat=False, sentinel=SENTINEL),
      hashmap(typed=False, flat=True, sentinel=NOSENTINEL),
      hashmap(typed=False, flat=False, sentinel=NOSENTINEL),
      hashmap(typed=True, flat=True, sentinel=NOSENTINEL),
      hashmap(typed=True, flat=False, sentinel=NOSENTINEL),
     #hashmap(typed=False, flat=True, sentinel=SENTINEL),
     #hashmap(typed=False, flat=False, sentinel=SENTINEL),
     #hashmap(typed=True, flat=True, sentinel=SENTINEL),
     #hashmap(typed=True, flat=False, sentinel=SENTINEL),
Beispiel #8
0
def test_combinations():
    seed(1234) # random seed

    #XXX: archive/cache should allow scalar and list, also dict (as new table) ?
    dicts = [
      {},
      {'a':1},
      {'a':[1,2]},
      {'a':{'x':3}},
    ]
    init = dicts[0]

    archives = [
      null_archive(None,init),
      dict_archive(None,init),
      file_archive(None,init,serialized=True),
      file_archive(None,init,serialized=False),
      file_archive('xxxx.pkl',init,serialized=True),
      file_archive('xxxx.py',init,serialized=False),
      dir_archive('memoi',init,serialized=False),
      dir_archive('memop',init,serialized=True),
      dir_archive('memoj',init,serialized=True,fast=True),
      dir_archive('memoz',init,serialized=True,compression=1),
      dir_archive('memom',init,serialized=True,memmode='r+'),
     #sqltable_archive(None,init),
     #sqltable_archive('sqlite:///memo.db',init),
     #sqltable_archive('memo',init),
     #sql_archive(None,init),
     #sql_archive('sqlite:///memo.db',init),
     #sql_archive('memo',init),
    ]
    #FIXME: even 'safe' archives throw Error when cache.load, cache.dump fails
    #       (often demonstrated in sqltable_archive, as barfs on tuple & dict)

    #XXX: when running a single map, there should be 3 possible results:
    #     1) flat=False may produce unhashable keys: all misses
    #     2) typed=False doesn't distinguish float & int: more hits & loads
    #     3) typed=True distingushes float & int: less hits & loads
    #XXX: due to the seed, each of the 3 cases should yield the same results
    maps = [
      None,
      keymap(typed=False, flat=True, sentinel=NOSENTINEL),
      keymap(typed=False, flat=False, sentinel=NOSENTINEL),
#FIXME: keymap of (typed=True,flat=True) fails w/ dir_archive on Windows b/c
#     keymap(typed=True, flat=True, sentinel=NOSENTINEL), # bad directory name?
      keymap(typed=True, flat=False, sentinel=NOSENTINEL),
     #keymap(typed=False, flat=True, sentinel=SENTINEL),
     #keymap(typed=False, flat=False, sentinel=SENTINEL),
     #keymap(typed=True, flat=True, sentinel=SENTINEL),
     #keymap(typed=True, flat=False, sentinel=SENTINEL),
      hashmap(typed=False, flat=True, sentinel=NOSENTINEL),
      hashmap(typed=False, flat=False, sentinel=NOSENTINEL),
      hashmap(typed=True, flat=True, sentinel=NOSENTINEL),
      hashmap(typed=True, flat=False, sentinel=NOSENTINEL),
     #hashmap(typed=False, flat=True, sentinel=SENTINEL),
     #hashmap(typed=False, flat=False, sentinel=SENTINEL),
     #hashmap(typed=True, flat=True, sentinel=SENTINEL),
     #hashmap(typed=True, flat=False, sentinel=SENTINEL),
      stringmap(typed=False, flat=True, sentinel=NOSENTINEL),
      stringmap(typed=False, flat=False, sentinel=NOSENTINEL),
      stringmap(typed=True, flat=True, sentinel=NOSENTINEL),
      stringmap(typed=True, flat=False, sentinel=NOSENTINEL),
     #stringmap(typed=False, flat=True, sentinel=SENTINEL),
     #stringmap(typed=False, flat=False, sentinel=SENTINEL),
     #stringmap(typed=True, flat=True, sentinel=SENTINEL),
     #stringmap(typed=True, flat=False, sentinel=SENTINEL),
      picklemap(typed=False, flat=True, sentinel=NOSENTINEL),
      picklemap(typed=False, flat=False, sentinel=NOSENTINEL),
      picklemap(typed=True, flat=True, sentinel=NOSENTINEL),
      picklemap(typed=True, flat=False, sentinel=NOSENTINEL),
     #picklemap(typed=False, flat=True, sentinel=SENTINEL),
     #picklemap(typed=False, flat=False, sentinel=SENTINEL),
     #picklemap(typed=True, flat=True, sentinel=SENTINEL),
     #picklemap(typed=True, flat=False, sentinel=SENTINEL),
    ]
    #XXX: should have option to serialize value (as well as key) ?

    for mapper in maps:
       #print (mapper)
        func = [_test_cache(cache, mapper) for cache in archives]
        _cleanup()

        for f in func:
           #print (f.info())
            assert f.info().hit + f.info().miss + f.info().load == N
Beispiel #9
0
        #sqltable_archive('memo',init),
        #sql_archive(None,init),
        #sql_archive('sqlite:///memo.db',init),
        #sql_archive('memo',init),
    ]
    #FIXME: even 'safe' archives throw Error when cache.load, cache.dump fails
    #       (often demonstrated in sqltable_archive, as barfs on tuple & dict)

    #XXX: when running a single map, there should be 3 possible results:
    #     1) flat=False may produce unhashable keys: all misses
    #     2) typed=False doesn't distinguish float & int: more hits & loads
    #     3) typed=True distingushes float & int: less hits & loads
    #XXX: due to the seed, each of the 3 cases should yield the same results
    maps = [
        None,
        keymap(typed=False, flat=True, sentinel=NOSENTINEL),
        keymap(typed=False, flat=False, sentinel=NOSENTINEL),
        #FIXME: keymap of (typed=True,flat=True) fails w/ dir_archive on Windows b/c
        #     keymap(typed=True, flat=True, sentinel=NOSENTINEL), # bad directory name?
        keymap(typed=True, flat=False, sentinel=NOSENTINEL),
        #keymap(typed=False, flat=True, sentinel=SENTINEL),
        #keymap(typed=False, flat=False, sentinel=SENTINEL),
        #keymap(typed=True, flat=True, sentinel=SENTINEL),
        #keymap(typed=True, flat=False, sentinel=SENTINEL),
        hashmap(typed=False, flat=True, sentinel=NOSENTINEL),
        hashmap(typed=False, flat=False, sentinel=NOSENTINEL),
        hashmap(typed=True, flat=True, sentinel=NOSENTINEL),
        hashmap(typed=True, flat=False, sentinel=NOSENTINEL),
        #hashmap(typed=False, flat=True, sentinel=SENTINEL),
        #hashmap(typed=False, flat=False, sentinel=SENTINEL),
        #hashmap(typed=True, flat=True, sentinel=SENTINEL),
Beispiel #10
0
def test_combinations():
    seed(1234)  # random seed

    #XXX: archive/cache should allow scalar and list, also dict (as new table) ?
    dicts = [
        {},
        {
            'a': 1
        },
        {
            'a': [1, 2]
        },
        {
            'a': {
                'x': 3
            }
        },
    ]
    init = dicts[0]

    archives = [
        null_archive(None, init),
        dict_archive(None, init),
        file_archive(None, init, serialized=True),
        file_archive(None, init, serialized=False),
        file_archive('xxxx.pkl', init, serialized=True),
        file_archive('xxxx.py', init, serialized=False),
        dir_archive('memoi', init, serialized=False),
        dir_archive('memop', init, serialized=True),
        dir_archive('memoj', init, serialized=True, fast=True),
        dir_archive('memoz', init, serialized=True, compression=1),
        dir_archive('memom', init, serialized=True, memmode='r+'),
        #sqltable_archive(None,init),
        #sqltable_archive('sqlite:///memo.db',init),
        #sqltable_archive('memo',init),
        #sql_archive(None,init),
        #sql_archive('sqlite:///memo.db',init),
        #sql_archive('memo',init),
    ]
    #FIXME: even 'safe' archives throw Error when cache.load, cache.dump fails
    #       (often demonstrated in sqltable_archive, as barfs on tuple & dict)

    #XXX: when running a single map, there should be 3 possible results:
    #     1) flat=False may produce unhashable keys: all misses
    #     2) typed=False doesn't distinguish float & int: more hits & loads
    #     3) typed=True distingushes float & int: less hits & loads
    #XXX: due to the seed, each of the 3 cases should yield the same results
    maps = [
        None,
        keymap(typed=False, flat=True, sentinel=NOSENTINEL),
        keymap(typed=False, flat=False, sentinel=NOSENTINEL),
        #FIXME: keymap of (typed=True,flat=True) fails w/ dir_archive on Windows b/c
        #     keymap(typed=True, flat=True, sentinel=NOSENTINEL), # bad directory name?
        keymap(typed=True, flat=False, sentinel=NOSENTINEL),
        #keymap(typed=False, flat=True, sentinel=SENTINEL),
        #keymap(typed=False, flat=False, sentinel=SENTINEL),
        #keymap(typed=True, flat=True, sentinel=SENTINEL),
        #keymap(typed=True, flat=False, sentinel=SENTINEL),
        hashmap(typed=False, flat=True, sentinel=NOSENTINEL),
        hashmap(typed=False, flat=False, sentinel=NOSENTINEL),
        hashmap(typed=True, flat=True, sentinel=NOSENTINEL),
        hashmap(typed=True, flat=False, sentinel=NOSENTINEL),
        #hashmap(typed=False, flat=True, sentinel=SENTINEL),
        #hashmap(typed=False, flat=False, sentinel=SENTINEL),
        #hashmap(typed=True, flat=True, sentinel=SENTINEL),
        #hashmap(typed=True, flat=False, sentinel=SENTINEL),
        stringmap(typed=False, flat=True, sentinel=NOSENTINEL),
        stringmap(typed=False, flat=False, sentinel=NOSENTINEL),
        stringmap(typed=True, flat=True, sentinel=NOSENTINEL),
        stringmap(typed=True, flat=False, sentinel=NOSENTINEL),
        #stringmap(typed=False, flat=True, sentinel=SENTINEL),
        #stringmap(typed=False, flat=False, sentinel=SENTINEL),
        #stringmap(typed=True, flat=True, sentinel=SENTINEL),
        #stringmap(typed=True, flat=False, sentinel=SENTINEL),
        picklemap(typed=False, flat=True, sentinel=NOSENTINEL),
        picklemap(typed=False, flat=False, sentinel=NOSENTINEL),
        picklemap(typed=True, flat=True, sentinel=NOSENTINEL),
        picklemap(typed=True, flat=False, sentinel=NOSENTINEL),
        #picklemap(typed=False, flat=True, sentinel=SENTINEL),
        #picklemap(typed=False, flat=False, sentinel=SENTINEL),
        #picklemap(typed=True, flat=True, sentinel=SENTINEL),
        #picklemap(typed=True, flat=False, sentinel=SENTINEL),
    ]
    #XXX: should have option to serialize value (as well as key) ?

    for mapper in maps:
        #print (mapper)
        func = [_test_cache(cache, mapper) for cache in archives]
        _cleanup()

        for f in func:
            #print (f.info())
            assert f.info().hit + f.info().miss + f.info().load == N