Ejemplo n.º 1
0
    def templateTreeVisualization(self, path, **kwargs):
        sample = None
        if path is not None:
            sample = read_sample(path)

        exception = kwargs.get('exception', None)

        if exception is not None:
            self.assertRaises(exception, kdtree_visualizer, kdtree(sample))
            self.assertRaises(exception, kdtree_visualizer,
                              kdtree_balanced(sample))
        else:
            kdtree_visualizer(kdtree(sample)).visualize()
            kdtree_visualizer(kdtree_balanced(sample)).visualize()
Ejemplo n.º 2
0
    def templateSeachNearestNodeInBalancedTree(self,
                                               sample_path,
                                               generate_payload=False,
                                               **kwargs):
        numpy_usage = kwargs.get('numpy_usage', False)

        sample = read_sample(sample_path)
        if numpy_usage is True:
            sample = numpy.array(sample)

        payloads = None
        if generate_payload is True:
            payloads = [random.randint(1, 1000) for _ in range(len(sample))]

        tree = kdtree_balanced(sample, payloads)

        for i in range(len(sample)):
            node = tree.find_nearest_dist_node(sample[i], 0.0)
            self.assertIsNotNone(node)

            if numpy_usage is False:
                self.assertIs(node.data, sample[i])
            else:
                self.assertTrue((node.data == sample[i]).all())

            if payloads is not None:
                self.assertEqual(node.payload, payloads[i])
Ejemplo n.º 3
0
    def process(self):
        """!
        @brief Performs cluster analysis in line with rules of DBSCAN algorithm.

        @return (dbscan) Returns itself (DBSCAN instance).

        @see get_clusters()
        @see get_noise()
        
        """

        if self.__ccore is True:
            (self.__clusters,
             self.__noise) = wrapper.dbscan(self.__pointer_data, self.__eps,
                                            self.__neighbors, self.__data_type)

        else:
            if self.__data_type == 'points':
                self.__kdtree = kdtree_balanced(
                    self.__pointer_data, range(len(self.__pointer_data)))

            for i in range(0, len(self.__pointer_data)):
                if self.__visited[i] is False:
                    cluster = self.__expand_cluster(i)
                    if cluster is not None:
                        self.__clusters.append(cluster)

            for i in range(0, len(self.__pointer_data)):
                if self.__belong[i] is False:
                    self.__noise.append(i)

        return self
Ejemplo n.º 4
0
    def __process_by_python(self):
        """!
        @brief Performs cluster analysis using python code.

        """

        if self.__data_type == 'points':
            self.__kdtree = kdtree_balanced(self.__sample_pointer,
                                            range(len(self.__sample_pointer)))

        self.__allocate_clusters()

        if (self.__amount_clusters is not None) and (self.__amount_clusters !=
                                                     len(self.get_clusters())):
            analyser = ordering_analyser(self.get_ordering())
            radius, _ = analyser.calculate_connvectivity_radius(
                self.__amount_clusters)
            if radius is not None:
                self.__eps = radius
                self.__allocate_clusters()