Source code for micom.interaction.summary
"""Functions to summarize interactions over all metabolites."""
import pandas as pd
[docs]
def _summarize(ints: pd.DataFrame) -> pd.DataFrame:
"""Summarize the overall interactions."""
return ints.groupby("class").apply(
lambda df: 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]
def summarize_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)
)