From 0bb1854ed7a4a8dc83a669e207cd9722d9366b22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Al=C3=A1n=20Mu=C3=B1oz?= <amuoz@ed.ac.uk> Date: Sat, 24 Apr 2021 22:33:51 +0100 Subject: [PATCH] update setup.py Former-commit-id: 11d322c1681aeecfc8a2b9b086fb73374b5720f2 --- core/cell.py | 1 + examples/testing.py | 79 +++++++++++++++++++++++++++------------------ 2 files changed, 49 insertions(+), 31 deletions(-) diff --git a/core/cell.py b/core/cell.py index 0d1c48ea..f96f30d5 100644 --- a/core/cell.py +++ b/core/cell.py @@ -18,5 +18,6 @@ def growth_rate(data:Series, alg=None, filt = 'savgol'): if alg is None: alg='standard' + diff --git a/examples/testing.py b/examples/testing.py index 70150066..885e34f6 100644 --- a/examples/testing.py +++ b/examples/testing.py @@ -7,53 +7,67 @@ from pandas import Series from postprocessor.core.postprocessor import PostProcessor from postprocessor.core.tracks import non_uniform_savgol -pp = PostProcessor(source=19831) +pp = PostProcessor(source=19916) # 19916 pp.load_tiler_cells() -f = '/home/alan/Documents/libs/extraction/extraction/examples/gluStarv_2_0_x2_dual_phl_ura8_00/extraction' -pp.load_extraction('/home/alan/Documents/libs/extraction/extraction/examples/' + pp.expt.name + '/extraction/') +# f = '/home/alan/Documents/libs/extraction/extraction/examples/gluStarv_2_0_x2_dual_phl_ura8_00/extraction' +f = "/home/alan/Documents/libs/extraction/extraction/examples/pH_calibration_dual_phl__ura8__by4741__01" +pp.load_extraction( + "/home/alan/Documents/libs/extraction/extraction/examples/" + + pp.expt.name + + "/extraction/" +) -tmp=pp.extraction['phl_ura8_002'] +tmp = pp.extraction[pp.expt.positions[0]] # prepare data -test = tmp[('GFPFast', np.maximum, 'mean')] +test = tmp[("GFPFast", np.maximum, "mean")] clean = test.loc[test.notna().sum(axis=1) > 30] window = 9 degree = 3 -savgol_on_srs = lambda x: Series(non_uniform_savgol(x.dropna().index, x.dropna().values, - window, degree), index=x.dropna().index) +savgol_on_srs = lambda x: Series( + non_uniform_savgol(x.dropna().index, x.dropna().values, window, degree), + index=x.dropna().index, +) smooth = clean.apply(savgol_on_srs, axis=1) from random import randint x = randint(0, len(smooth)) -plt.plot(clean.iloc[x], 'b') -plt.plot(smooth.iloc[x], 'r') +plt.plot(clean.iloc[x], "b") +plt.plot(smooth.iloc[x], "r") plt.show() -def growth_rate(data:Series, alg=None, filt = {'kind':'savgol','window':9, 'degree':3}): + +def growth_rate( + data: Series, alg=None, filt={"kind": "savgol", "window": 9, "degree": 3} +): if alg is None: - alg='standard' + alg = "standard" + + if filt: # TODO add support for multiple algorithms + data = Series( + non_uniform_savgol( + data.dropna().index, data.dropna().values, window, degree + ), + index=data.dropna().index, + ) - if filt: #TODO add support for multiple algorithms - data = Series(non_uniform_savgol(data.dropna().index, data.dropna().values, - window, degree), index = data.dropna().index) + return Series(np.convolve(data, diff_kernel, "same"), index=data.dropna().index) - - - return Series(np.convolve(data,diff_kernel ,'same'), index=data.dropna().index) import numpy as np -diff_kernel = np.array([1,-1]) + +diff_kernel = np.array([1, -1]) gr = clean.apply(growth_rate, axis=1) - -def sort_df(df, by='first', rev=True): + +def sort_df(df, by="first", rev=True): nona = df.notna() - if by=='len': + if by == "len": idx = nona.sum(axis=1) - elif by=='first': + elif by == "first": idx = nona.idxmax(axis=1) idx = idx.sort_values().index @@ -62,23 +76,26 @@ def sort_df(df, by='first', rev=True): return df.loc[idx] -test = tmp[('GFPFast', np.maximum, 'median')] -test2 = tmp[('pHluorin405', np.maximum, 'median')] -ph = test/test2 + +test = tmp[("GFPFast", np.maximum, "median")] +test2 = tmp[("pHluorin405", np.maximum, "median")] +ph = test / test2 ph = ph.stack().reset_index(1) -ph.columns = ['tp', 'fl'] +ph.columns = ["tp", "fl"] + def m2p5_med(ext, ch, red=np.maximum): - m2p5pc = ext[(ch, red, 'max2p5pc')] - med = ext[(ch, red, 'median')] + m2p5pc = ext[(ch, red, "max2p5pc")] + med = ext[(ch, red, "median")] - result = m2p5pc/med + result = m2p5pc / med return result + def plot_avg(df): df = df.stack().reset_index(1) - df.columns = ['tp', 'val'] + df.columns = ["tp", "val"] - sns.relplot(x=df['tp'],y=df['val'], kind='line') + sns.relplot(x=df["tp"], y=df["val"], kind="line") plt.show() -- GitLab