"""Functions to summarize interactions over all metabolites."""importpandasaspd
[docs]def_summarize(ints:pd.DataFrame)->pd.DataFrame:"""Summarize the overall interactions."""returnints.groupby("class").apply(lambdadf:pd.DataFrame({"flux":df.flux.sum(),"mass_flux":(df.flux*df.molecular_weight).sum()*1e-3,"C_flux":(df.flux*df.C_number).sum(),"N_flux":(df.flux*df.N_number).sum(),"n_ints":df.metabolite.count(),},index=[0],))
[docs]defsummarize_interactions(ints:pd.DataFrame)->pd.DataFrame:"""Summarize interactions to key quantities. Arguments --------- ints : pandas.DataFrame The interactions for individual metabolites calculated before. Returns ------- pandas.DataFrame The summarized interactions contaning the total flux, mass flux, carbon flux, nitrogen flux and number of interactions between any pair of taxa in that sample. """return(ints.groupby(["sample_id","focal","partner"]).apply(_summarize).reset_index().drop("level_4",axis=1))