From 68d4b0eeac31cd5a4d92e6d67e69a23b2ed370ee Mon Sep 17 00:00:00 2001 From: pswain <peter.swain@ed.ac.uk> Date: Thu, 16 May 2024 22:01:08 +0100 Subject: [PATCH] added sorting --- src/wela/dataloader.py | 9 ++++++--- src/wela/plotting.py | 14 +++++++++++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/wela/dataloader.py b/src/wela/dataloader.py index 6ca43fc..f19a8e0 100644 --- a/src/wela/dataloader.py +++ b/src/wela/dataloader.py @@ -651,9 +651,12 @@ class dataloader: print(group, "not recognised") return None, None else: - wdf = df[df.group == group].pivot( - columns="time", index="id", values=signal - ) + if group is None: + wdf = df.pivot(columns="time", index="id", values=signal) + else: + wdf = df[df.group == group].pivot( + columns="time", index="id", values=signal + ) time = wdf.columns.to_numpy() # each column is a time series values = wdf.to_numpy() diff --git a/src/wela/plotting.py b/src/wela/plotting.py index 025e518..4e47b06 100644 --- a/src/wela/plotting.py +++ b/src/wela/plotting.py @@ -21,12 +21,13 @@ def kymograph( vmax=None, vmin=None, cmap=None, - buddings=True, + buddings=False, figsize=(6, 10), title=None, filterfunc=None, standardscale=False, robust=False, + sort_order=None, returnfig=False, ): """ @@ -68,6 +69,8 @@ def kymograph( and its standard deviation to one. robust: boolean, optional If True, change colourmap to show 2-98% of all the data's values. + sort_order: np.array, optional + An array specifying the order to plot the cells. returnfig: boolean, optional If True, return fig and ax. @@ -77,6 +80,11 @@ def kymograph( >>> kymograph(dl.df, hue="median_GFP") >>> kymograph(dl.df, hue="bud_volume", title="2% Gal") >>> kymograph(dl.df, hue="buddings", group="Msn2") + >>> + >>> from wela.sorting import sort_by_budding + >>> _, buddings = dl.get_time_series(buddings) + >>> sort_order = sort_by_budding(buddings) + >>> kymograph(dl.df, hue="flavin", sort_order=sort_order) """ if cmap is None: if hue == "buddings": @@ -96,6 +104,8 @@ def kymograph( wdf = df.pivot(index=y, columns=x, values=hue) dt = np.min(np.diff(np.sort(df.time.unique()))) data = wdf.to_numpy() + if sort_order is not None: + data = data[np.argsort(sort_order), :] if filterfunc is not None: data = filterfunc(data) if standardscale: @@ -135,6 +145,8 @@ def kymograph( ) if buddings: buddings = df.pivot(index=y, columns=x, values="buddings").to_numpy() + if sort_order is not None: + buddings = buddings[np.argsort(sort_order), :] bud_mask = np.ma.masked_where(buddings == 0, buddings) ax.imshow(bud_mask, interpolation="none") ax.figure.colorbar( -- GitLab