def __init__(self):
     self.pf = ParticleFilterPredictor()
     pass
Exemple #2
0
 def __init__(self):
     self.pf = ParticleFilterPredictor()
     pass
class RepPf(object):

    __filter_bank = {}

    namespace = "pf"

    def __init__(self):
        self.pf = ParticleFilterPredictor()
        pass

    @ServiceManager.service_function(namespace, PfRepRequestCreate,
                                     PfReqResponseCreate)
    def create(self, **kwargs):
        """
        TODO: Create description
        """
        if kwargs["uuid"] == None:
            kwargs["uuid"] = uuid.uuid1().hex

        self.__filter_bank[kwargs["uuid"]] = self.pf.create(**kwargs)

        if kwargs["debug"]:
            p = self.__filter_bank[kwargs["uuid"]]["filter"].emp.particles
            print "[RepPf] INIT MODEL SIZES:", np.bincount(map(
                int, p[:, 1].flatten()),
                                                           minlength=2)
            print "[RepPf] INIT STATES:", np.bincount(
                map(int, p[:, 0].flatten())), len(
                    np.bincount(map(int, p[:, 0].flatten())))
            for i in range(int(np.max(p[:, 1])) + 1):
                print "[RepPf] INIT STATES model %i:" % i, np.bincount(
                    map(int,
                        p[np.where(p[:, 1] == float(i)), 0].flatten())), len(
                            np.bincount(
                                map(
                                    int, p[np.where(p[:, 1] == float(i)),
                                           0].flatten())))

        return PfReqResponseCreate(data=kwargs["uuid"])

    @ServiceManager.service_function(namespace, PfRepRequestUpdate,
                                     PfReqResponseUpdate)
    def update(self, **kwargs):
        """
        TODO: Create description
        """

        z = kwargs.copy()
        z.update(self.__filter_bank[kwargs["uuid"]])
        res = self.pf.update(**z)
        datum = json.dumps(res)
        return PfReqResponseUpdate(data=datum)

    @ServiceManager.service_function(namespace, PfRepRequestPredict,
                                     PfReqResponsePredict)
    def predict(self, **kwargs):
        """
        TODO: Create description
        """

        z = kwargs.copy()
        z.update(self.__filter_bank[kwargs["uuid"]])

        res = self.pf.predict(**z)

        return PfReqResponsePredict(data=json.dumps(res))

    @ServiceManager.service_function(namespace, PfRepRequestRemove,
                                     PfReqResponseRemove)
    def remove(self, **kwargs):
        """
        TODO: Create description
        """

        res = 0
        try:
            del self.__filter_bank[kwargs["uuid"]]
        except KeyError:
            pass

        if kwargs["uuid"] not in self.__filter_bank:
            res = 1

        return PfReqResponseRemove(data=json.dumps(res))

    @ServiceManager.service_function(namespace, PfRepRequestList,
                                     PfReqResponseList)
    def list_filters(self, **kwargs):
        res = []
        for k, v in self.__filter_bank.items():
            res.append((k, v["models"]))
        return PfReqResponseList(data=json.dumps(res))
Exemple #4
0
class RepPf(object):

    __filter_bank = {}

    namespace = "pf"

    def __init__(self):
        self.pf = ParticleFilterPredictor()
        pass

    @ServiceManager.service_function(namespace, PfRepRequestCreate, PfReqResponseCreate)
    def create(self, **kwargs):
        """
        TODO: Create description
        """
        if kwargs["uuid"] == None:
            kwargs["uuid"] = uuid.uuid1().hex

        self.__filter_bank[kwargs["uuid"]] = self.pf.create(**kwargs)

        if kwargs["debug"]:
            p = self.__filter_bank[kwargs["uuid"]]["filter"].emp.particles
            print "INIT MODEL SIZES:", np.bincount(map(int,p[:,1].flatten()), minlength=2)
            print "INIT STATES:", np.bincount(map(int,p[:,0].flatten())), len(np.bincount(map(int,p[:,0].flatten())))
            for i in range(int(np.max(p[:,1]))+1):
                print "INIT STATES model %i:"%i, np.bincount(map(int,p[np.where(p[:,1] == float(i)),0].flatten())), len(np.bincount(map(int,p[np.where(p[:,1] == float(i)),0].flatten())))

        return PfReqResponseCreate(data=kwargs["uuid"])

    @ServiceManager.service_function(namespace, PfRepRequestUpdate, PfReqResponseUpdate)
    def update(self, **kwargs):
        """
        TODO: Create description
        """

        z = kwargs.copy()
        z.update(self.__filter_bank[kwargs["uuid"]])

        res = self.pf.update(**z)

        return PfReqResponseUpdate(data=json.dumps(res))

    @ServiceManager.service_function(namespace, PfRepRequestPredict, PfReqResponsePredict)
    def predict(self, **kwargs):
        """
        TODO: Create description
        """

        z = kwargs.copy()
        z.update(self.__filter_bank[kwargs["uuid"]])

        res = self.pf.predict(**z)

        return PfReqResponsePredict(data=json.dumps(res))

    @ServiceManager.service_function(namespace, PfRepRequestRemove, PfReqResponseRemove)
    def remove(self, **kwargs):
        """
        TODO: Create description
        """

        res = 0
        try:
            del self.__filter_bank[kwargs["uuid"]]
        except KeyError:
            pass

        if kwargs["uuid"] not in self.__filter_bank:
            res = 1

        return PfReqResponseRemove(data=json.dumps(res))

    @ServiceManager.service_function(namespace, PfRepRequestList, PfReqResponseList)
    def list_filters(self, **kwargs):
        res = []
        for k, v in self.__filter_bank.items():
            res.append((k,v["models"]))
        return PfReqResponseList(data=json.dumps(res))