예제 #1
0
    def test_structure_local_side(self):
        print "===================================="
        print "simple local-side test of structures"
        print "===================================="

        rw_lock = ReadWriteLock()

        #: :type: FeatureMemory
        fm = FeatureMemory(self.id_vec, self.bg_ids, self.feature_mat,
                           self.dk_mat, rw_lock)

        rw2 = fm.get_lock()
        print "FM lock type:", type(rw2)

        rw_lock.acquireRead()
        rw2.releaseRead()

        print type(rw2.read_lock())

        with rw2.read_lock():
            #: :type: DistanceKernel
            dk = fm.get_distance_kernel()
            print type(dk.row_id_map())

            with SimpleTimer("Getting kernel shape via attribute"):
                _ = dk.get_kernel_matrix().shape

            with SimpleTimer("Getting kernel shape via copy"):
                _ = dk.get_kernel_matrix()[:].shape
예제 #2
0
    def test_feature_updating_local(self):
        print "====================================="
        print "Feature updating with local variables"
        print "====================================="

        print "Type of imported SimpleTimer:", type(SimpleTimer)

        rw_lock = ReadWriteLock()
        #: :type: FeatureMemory
        fm = FeatureMemory(self.id_vec, self.bg_ids, self.feature_mat,
                           self.dk_mat, rw_lock)

        self._update_test_helper(fm)
예제 #3
0
    def test_feature_updating_existing(self):
        print "==============================="
        print "Feature updating - existing CID"
        print "==============================="

        print "( should fail, not implemented yet )"

        fm = FeatureMemory(self.id_vec, self.bg_ids, self.feature_mat,
                           self.dk_mat)

        # new feature info
        new_id = 0
        new_feature = np.random.random((self.M,))
        is_bg = True

        #
        # Pre-condition checks
        #
        rw_lock = fm.get_lock()

        # get the distance kernel reference to check later that it mirrors
        # changes made in parent structure.
        print 'getting dist kernel container'
        dk = fm.get_distance_kernel()
        rw_lock.acquireRead()
        assert new_id in fm.get_ids()
        assert dk.is_symmetric()
        assert new_id in dk.row_id_map()
        assert new_id in dk.col_id_map()
        assert new_id in dk.get_background_ids()

        rw_lock.releaseRead()

        #
        # The update call
        #
        try:
            fm.update(new_id, new_feature, is_bg)
        except NotImplementedError, ex:
            pass