from matplotlib.pyplot import * from numpy import average from scipy import interpolate from scipy.stats import pearsonr, spearmanr, sem, ks_2samp,wilcoxon,mannwhitneyu import pandas as pd protein_data = pd.read_csv('martin2012_ostreo_diurnal_N15_proteomics.csv') timepoints = protein_data.columns[5:] nC = len(protein_data.columns) #estimate achievable maximum fraction of labelling (with a small additional buffer) max_label_fraction = max(protein_data[timepoints[-1]])+0.01 rescaled_data = pd.DataFrame(columns=timepoints,index=protein_data.index) rescaled_data[timepoints] = np.log((max_label_fraction-protein_data[timepoints])/max_label_fraction) timepoint_ints = [int(x) for x in timepoints] protein_data['Deg rate (h-1)']= rescaled_data.apply(lambda x : -np.polyfit(timepoint_ints,x[timepoints],1)[0],axis=1) protein_data['Half life (h)'] = np.log(2)/protein_data['Deg rate (h-1)'] protein_data['Half life (days)'] = protein_data['Half life (h)']/24 protein_data.drop('Deg rate',inplace=True,axis=1) protein_data = protein_data[['Ot gene Idb','Deg rate (h-1)','Half life (h)']] protein_data.to_csv('Otauri_degradation_rates.csv',index=None)