diff --git a/core/cell.py b/core/cell.py index 0d1c48eab0fdecc4dde511a8113fa3839c069f9c..f96f30d53e8bc462044eb40bb6417d1454c3f742 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 70150066b5245a60bc908bd27d64ac6e0bc24008..885e34f62d8f86335dd08c01c0f9e8faf7d14c28 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()