Code Duplication    Length = 25-27 lines in 2 locations

pyclustering/cluster/birch.py 1 location

@@ 199-223 (lines=25) @@
196
            for node in self.__tree.leafes:
197
                if (self.__outlier_detector < node.feature.number_points):
198
                    self.__features.append(node.feature);
199
                else:
200
                    self.__outlier_features.append(node.feature);
201
    
202
    
203
    def __decode_data(self):
204
        """!
205
        @brief Decodes data from CF-tree features.
206
        
207
        """
208
        
209
        self.__clusters = [ [] for _ in range(self.__number_clusters) ];
210
        self.__noise = [];
211
        
212
        for index_point in range(0, len(self.__pointer_data)):
213
            (cluster_distance, cluster_index) = self.__get_nearest_feature(self.__pointer_data[index_point], self.__features);
214
            (outlier_distance, _) = self.__get_nearest_feature(self.__pointer_data[index_point], self.__outlier_features);
215
            
216
            if (cluster_distance < outlier_distance):
217
                self.__clusters[cluster_index].append(index_point);
218
            else:
219
                self.__noise.append(index_point);
220
    
221
    
222
    def __insert_data(self):
223
        """!
224
        @brief Inserts input data to the tree.
225
        
226
        @remark If number of maximum number of entries is exceeded than diameter is increased and tree is rebuilt.

pyclustering/container/cftree.py 1 location

@@ 570-596 (lines=27) @@
567
        farthest_node2 = None;
568
        farthest_distance = 0;
569
        
570
        for i in range(0, len(self.successors)):
571
            candidate1 = self.successors[i];
572
            
573
            for j in range(i + 1, len(self.successors)):
574
                candidate2 = self.successors[j];
575
                candidate_distance = candidate1.get_distance(candidate2, type_measurement);
576
                
577
                if (candidate_distance > farthest_distance):
578
                    farthest_distance = candidate_distance;
579
                    farthest_node1 = candidate1;
580
                    farthest_node2 = candidate2;        
581
        
582
                    return [farthest_node1, farthest_node2];
583
    
584
    
585
    def get_nearest_successors(self, type_measurement):
586
        """!
587
        @brief Find pair of nearest successors of the node in line with measurement type.
588
        
589
        @param[in] type_measurement (measurement_type): Measurement type that is used for obtaining nearest successors.
590
        
591
        @return (list) Pair of nearest successors represented by list.
592
        
593
        """
594
                
595
        nearest_node1 = None;
596
        nearest_node2 = None;
597
        nearest_distance = float("Inf");
598
        
599
        for i in range(0, len(self.successors)):