Пример #1
0
    def test_maximum_generator_newerincremental_with_signature_distance(self):
        rg = RandomGenerator(relative_matching=1)
        signature = ParentChildByNameTopologySignature()
        alg = IncrementalDistanceAlgorithm(signature=signature)
        alg.prototypes = [rg.prototype]

        decorator = DistanceDecorator(normalized=True)
        decorator.algorithm = alg

        decorator.start_tree()
        for event in rg:
            decorator.add_event(event)
        decorator.finish_tree()
        self.assertEqual(decorator.data()[-1][-1][-1][-1], 0)
Пример #2
0
    def test_creation(self):
        decorator = DistanceDecorator(normalized=False)
        self.assertEqual(decorator._name, "distances")
        self.assertEqual([], decorator.data())
        self.assertEqual({"distances": []}, decorator.descriptive_data())

        decorator = DistanceDecorator(normalized=True)
        self.assertEqual(decorator._name, "normalized_distances")
        self.assertEqual([], decorator.data())
        self.assertEqual({"normalized_distances": []}, decorator.descriptive_data())
Пример #3
0
    def test_maximum_generator_incremental_distance(self):
        rg = RandomGenerator(relative_matching=1)
        alg = IncrementalDistanceAlgorithm()
        alg.prototypes = [rg.prototype]

        decorator = DistanceDecorator(normalized=True)
        decorator.algorithm = alg

        decorator.start_tree()
        for event in rg:
            distance = decorator.add_event(event)[0]
        decorator.finish_tree()
        self.assertEqual(distance[0], [0])
Пример #4
0
    def test_default_generator_incremental_distance(self):
        rg = RandomGenerator(seed=1234)
        alg = IncrementalDistanceAlgorithm()
        alg.prototypes = [rg.prototype]

        vector_decorator = DistanceDecorator()
        vector_decorator._algorithm = alg

        vector_decorator.start_tree()
        for event in rg:
            distance = vector_decorator.add_event(event)[0]
        vector_decorator.finish_tree()
        self.assertEqual(distance[0], [110])
Пример #5
0
    def test_normalized_results(self):
        decorator = DistanceDecorator(normalized=True)
        algorithm = IncrementalDistanceAlgorithm(
            signature=EnsembleSignature(
                signatures=[ParentChildByNameTopologySignature(),
                            ParentChildOrderByNameTopologySignature()])
        )
        algorithm.prototypes = [simple_prototype(), simple_monitoring_tree()]
        decorator.wrap_algorithm(algorithm)

        algorithm.start_tree()
        self.assertEqual([[[[], []], [[], []]]], decorator.data())
        for event in Event.from_tree(simple_monitoring_tree(), supported={ProcessStartEvent: True}):
            algorithm.add_event(event)
        algorithm.finish_tree()

        self.assertEqual([[
            [  # ParentChildByNameTopologySignature
                [2 / 3, 1 / 3, 1 / 3, 0.0],  # simple_prototype
                [2 / 3, 1 / 3, 1 / 3, 0.0]   # simple_monitoring_tree
            ],
            [  # ParentChildOrderByNameTopologySignature
                [4 / 5, 3 / 5, 3 / 5, 2 / 5],
                [2 / 3, 1 / 3, 1 / 3, 0.0]
            ]]], decorator.data())
Пример #6
0
    def test_two_prototypes(self):
        decorator = DistanceDecorator(normalized=False)
        algorithm = IncrementalDistanceAlgorithm()
        algorithm.prototypes = [simple_prototype(), simple_monitoring_tree()]

        decorator.wrap_algorithm(algorithm)

        algorithm.start_tree()
        self.assertEqual([[[[], []]]], decorator.data())
        for event in Event.from_tree(simple_monitoring_tree(), supported={ProcessStartEvent: True}):
            algorithm.add_event(event)
        algorithm.finish_tree()
        self.assertEqual([[[[2, 1, 1, 0], [2, 1, 1, 0]]]], decorator.data())
Пример #7
0
    def test_ensemble(self):
        decorator = DistanceDecorator(normalized=False)
        algorithm = IncrementalDistanceAlgorithm(
            signature=EnsembleSignature(
                signatures=[ParentChildByNameTopologySignature(),
                            ParentChildOrderByNameTopologySignature()]))
        algorithm.prototypes = [simple_prototype()]

        decorator.wrap_algorithm(algorithm)

        algorithm.start_tree()
        self.assertEqual([[[[]], [[]]]], decorator.data())
        for event in Event.from_tree(simple_monitoring_tree(), supported={ProcessStartEvent: True}):
            algorithm.add_event(event)
        algorithm.finish_tree()
        self.assertEqual([[[[2, 1, 1, 0]], [[4, 3, 3, 2]]]], decorator.data())
Пример #8
0
    def test_bigger_tree(self):
        rg = RandomGenerator(prototype_node_count=100,
                             tree_node_count=200,
                             relative_matching=.9,
                             relative_repetition=.5,
                             seed=1234)
        signature = ParentChildByNameTopologySignature()
        alg = IncrementalDistanceAlgorithm(signature=signature)
        alg.prototypes = [rg.prototype]

        decorator = DistanceDecorator(normalized=True)
        decorator.wrap_algorithm(alg)

        decorator.start_tree()
        for event in rg:
            decorator.add_event(event)
        decorator.finish_tree()
        self.assertAlmostEqual(decorator.data()[-1][-1][-1][-1], 0.185, 2)
Пример #9
0
 def from_name(name):
     if "anomaly" in name:
         from assess.decorators.anomalydecorator import AnomalyDecorator
         # FIXME: how to pass parameter?
         return AnomalyDecorator()
     elif "normalized_ensembles" in name:
         from assess.decorators.ensemblematrixdecorator import \
             EnsembleMatrixDecorator
         return EnsembleMatrixDecorator(normalized=True)
     elif "normalized_ensembledistances" in name:
         from assess.decorators.ensembledistancedecorator import \
             EnsembleDistanceDecorator
         return EnsembleDistanceDecorator(normalized=True)
     elif "ensembledistances" in name:
         from assess.decorators.ensembledistancedecorator import \
             EnsembleDistanceDecorator
         return EnsembleDistanceDecorator(normalized=False)
     elif "ensembleanomaly" in name:
         from assess.decorators.ensembleanomalydecorator import \
             EnsembleAnomalyDecorator
         return EnsembleAnomalyDecorator()
     elif "compression" in name:
         from assess.decorators.compressionfactordecorator import \
             CompressionFactorDecorator
         return CompressionFactorDecorator()
     elif "data" in name:
         from assess.decorators.datadecorator import DataDecorator
         return DataDecorator()
     elif "normalized_ensembles" in name:
         from assess.decorators.ensemblematrixdecorator import \
             EnsembleMatrixDecorator
         return EnsembleMatrixDecorator(normalized=True)
     elif "ensembles" in name:
         from assess.decorators.ensemblematrixdecorator import \
             EnsembleMatrixDecorator
         return EnsembleMatrixDecorator(normalized=False)
     elif "normalized_distances" in name:
         from assess.decorators.distancedecorator import \
             DistanceDecorator
         return DistanceDecorator(normalized=True)
     elif "distances" in name:
         from assess.decorators.distancedecorator import \
             DistanceDecorator
         return DistanceDecorator(normalized=False)
     elif "normalized_matrix" in name:
         from assess.decorators.distancematrixdecorator import \
             DistanceMatrixDecorator
         return DistanceMatrixDecorator(normalized=True)
     elif "matrix" in name:
         from assess.decorators.distancematrixdecorator import \
             DistanceMatrixDecorator
         return DistanceMatrixDecorator(normalized=False)
     elif "accumulated_distance_performance" in name:
         from assess.decorators.distanceperformancedecorator import \
             DistancePerformanceDecorator
         return DistancePerformanceDecorator(accumulated=True)
     elif "distance_performance" in name:
         from assess.decorators.distanceperformancedecorator import \
             DistancePerformanceDecorator
         return DistancePerformanceDecorator(accumulated=False)
     elif "accumulated_performance" in name:
         from assess.decorators.performancedecorator import \
             PerformanceDecorator
         return PerformanceDecorator(accumulated=True)
     elif "performance" in name:
         from assess.decorators.performancedecorator import \
             PerformanceDecorator
         return PerformanceDecorator(accumulated=False)
     elif "accumulated_signature_performance" in name:
         from assess.decorators.signatureperformancedecorator import \
             SignaturePerformanceDecorator
         return SignaturePerformanceDecorator(accumulated=True)
     elif "signature_performance" in name:
         from assess.decorators.signatureperformancedecorator import \
             SignaturePerformanceDecorator
         return SignaturePerformanceDecorator(accumulated=False)
     elif "signature" in name:
         from assess.decorators.signaturedecorator import \
             SignatureDecorator
         return SignatureDecorator()
     elif "ensembles" in name:
         from assess.decorators.ensemblematrixdecorator import \
             EnsembleMatrixDecorator
         return EnsembleMatrixDecorator(normalized=False)