From 7148e066b442602a8f6139e19b86cea29d628453 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Al=C3=A1n=20Mu=C3=B1oz?= <amuoz@ed.ac.uk> Date: Thu, 10 Feb 2022 17:06:35 +0000 Subject: [PATCH] add lineage functions --- utils/lineage.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 utils/lineage.py diff --git a/utils/lineage.py b/utils/lineage.py new file mode 100644 index 00000000..b72c69cd --- /dev/null +++ b/utils/lineage.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python3 +import numpy as np +import pandas as pd + +from agora.io.bridge import groupsort + + +def mb_array_to_dict(mb_array: np.ndarray): + """ + Convert a lineage ndarray (trap, mother_id, daughter_id) + into a dictionary of lists ( mother_id ->[daughters_ids] ) + """ + return { + (trap, mo): [(trap, d[0]) for d in daughters] + for trap, mo_da in groupsort(mb_array).items() + for mo, daughters in groupsort(mo_da).items() + } + + +def mb_array_to_indices(mb_array: np.ndarray): + """ + Convert a lineage ndarray (trap, mother_id, daughter_id) + into a dictionary of lists ( mother_id ->[daughters_ids] ) + """ + return pd.MultiIndex.from_arrays(mb_array[:, :2].T).union( + pd.MultiIndex.from_arrays(mb_array[:, [0, 2]].T) + ) -- GitLab