From d345aa21107f3504940e54ee1b3d50a3ba2fade1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Al=C3=A1n=20Mu=C3=B1oz?= <alan.munoz@ed.ac.uk> Date: Mon, 20 Mar 2023 15:08:51 +0000 Subject: [PATCH] tweak(merge): fix warnings and minor speedups --- src/agora/utils/merge.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/agora/utils/merge.py b/src/agora/utils/merge.py index 8f3aee4e..47ec0821 100644 --- a/src/agora/utils/merge.py +++ b/src/agora/utils/merge.py @@ -41,13 +41,15 @@ def apply_merges(data: pd.DataFrame, merges: np.ndarray): # Implement the merges and drop source rows. if valid_merges.any(): to_merge = data.loc[indices] - for target, source in merges[valid_merges]: - target, source = tuple(target), tuple(source) - to_merge.loc[target] = join_tracks_pair( - to_merge.loc[target].values, - to_merge.loc[source].values, + targets, sources = zip(*merges[valid_merges]) + for source, target in zip(sources, targets): + to_merge.loc[target] = copy( + join_tracks_pair( + to_merge.loc[tuple(target)].values, + to_merge.loc[tuple(source)].values, + ) ) - to_merge.drop(source, inplace=True) + to_merge.drop(map(tuple, sources), inplace=True) merged = pd.concat((merged, to_merge), names=data.index.names) return merged @@ -57,7 +59,7 @@ def join_tracks_pair(target: np.ndarray, source: np.ndarray) -> np.ndarray: """ Join two tracks and return the new value of the target. """ - target_copy = copy(target) + target_copy = target end = find_1st(target_copy[::-1], 0, cmp_larger) target_copy[-end:] = source[-end:] return target_copy -- GitLab