@@ -1104,14 +1104,28 @@ def get_group_array(self, results, nb_obs):
1104
1104
if g0 > g1 :
1105
1105
g0 , g1 = g1 , g0
1106
1106
merge_id .append ((g0 , g1 ))
1107
+ gr_transfer = self .group_translator (id_free , set (merge_id ))
1108
+ return gr_transfer [gr ]
1109
+
1110
+ @staticmethod
1111
+ def group_translator (nb , duos ):
1112
+ """
1113
+ Create a translator with all duos
1107
1114
1108
- # FIXME: how it's work when several merge ? like (0,1), (0,2), (1,3)
1109
- gr_transfer = arange (id_free , dtype = "u4" )
1110
- for i , j in set (merge_id ):
1111
- gr_i , gr_j = gr_transfer [i ], gr_transfer [j ]
1115
+ :param int nb: size of translator
1116
+ :param set((int, int)) duos: set of all group which must be join
1117
+
1118
+ Examples
1119
+ --------
1120
+ >>> NetworkObservations.group_translator(5, ((0, 1), (0, 2), (1, 3)))
1121
+ [3, 3, 3, 3, 5]
1122
+ """
1123
+ translate = arange (nb , dtype = "u4" )
1124
+ for i , j in sorted (duos ):
1125
+ gr_i , gr_j = translate [i ], translate [j ]
1112
1126
if gr_i != gr_j :
1113
- apply_replace (gr_transfer , gr_i , gr_j )
1114
- return gr_transfer [ gr ]
1127
+ apply_replace (translate , gr_i , gr_j )
1128
+ return translate
1115
1129
1116
1130
def group_observations (self , ** kwargs ):
1117
1131
results , nb_obs = list (), list ()
0 commit comments