Code Duplication    Length = 19-19 lines in 2 locations

pyclustering/cluster/agglomerative.py 2 locations

@@ 250-268 (lines=19) @@
247
        return candidate_maximum_distance;
248
    
249
    
250
    def __merge_by_signle_link(self):
251
        """!
252
        @brief Merges the most similar clusters in line with single link type.
253
        
254
        """
255
        
256
        minimum_single_distance = float('Inf');
257
        indexes = None;
258
        
259
        for index_cluster1 in range(0, len(self.__clusters)):
260
            for index_cluster2 in range(index_cluster1 + 1, len(self.__clusters)):
261
                candidate_minimum_distance = self.__calculate_nearest_distance(index_cluster1, index_cluster2);
262
                
263
                if (candidate_minimum_distance < minimum_single_distance):
264
                    minimum_single_distance = candidate_minimum_distance;
265
                    indexes = [index_cluster1, index_cluster2];
266
267
        self.__clusters[indexes[0]] += self.__clusters[indexes[1]];  
268
        self.__clusters.pop(indexes[1]);   # remove merged cluster.
269
    
270
    
271
    def __calculate_nearest_distance(self, index_cluster1, index_cluster2):
@@ 208-226 (lines=19) @@
205
        self.__centers.pop(indexes[1]);    # remove merged center.
206
    
207
    
208
    def __merge_by_complete_link(self):
209
        """!
210
        @brief Merges the most similar clusters in line with complete link type.
211
        
212
        """
213
        
214
        minimum_complete_distance = float('Inf');
215
        indexes = None;
216
        
217
        for index_cluster1 in range(0, len(self.__clusters)):
218
            for index_cluster2 in range(index_cluster1 + 1, len(self.__clusters)):
219
                candidate_maximum_distance = self.__calculate_farthest_distance(index_cluster1, index_cluster2);
220
                
221
                if (candidate_maximum_distance < minimum_complete_distance):
222
                    minimum_complete_distance = candidate_maximum_distance;
223
                    indexes = [index_cluster1, index_cluster2];
224
225
        self.__clusters[indexes[0]] += self.__clusters[indexes[1]];  
226
        self.__clusters.pop(indexes[1]);   # remove merged cluster.        
227
    
228
    
229
    def __calculate_farthest_distance(self, index_cluster1, index_cluster2):