diff --git a/src/wela/dataloader.py b/src/wela/dataloader.py index 6ca43fc9f29b870854e2267aa673959c4b2cc773..f19a8e0c1ef9a7a74bd7fb3ff66d82fb25916cb5 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 025e51815e7d6d64dd8743148285646e6c277ae9..4e47b063517ecd067e5c66451e1085de55a3ee4b 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(