Custom scoring based on ecological topology of gut microbiota associated with cancer immunotherapy outcome.
The gut microbiota influences clinical responses of cancer patients to immune checkpoint inhibitors. However, there is no consensus definition of detrimental dysbiosis. Based on metagenomics (MG) sequencing of 245 non-small cell lung cancer (NSCLC) patient feces, we constructed species-level co-abundance networks that were clustered into species interacting groups (SIG) correlating with overall survival. Thirty-seven and 45 MG species were associated with resistance (SIG1) and response (SIG2) to ICI, respectively. If combined with the quantification of Akkermansia species, this procedure allowed a person-based calculation of a topological score (TOPOSCORE) that was validated in additional 254 NSCLC patients and in 216 genitourinary cancers. Finally, this TOPOSCORE was translated into a 21 bacterial probe set-based qPCR- scoring that was validated in a prospective cohort of NSCLC patients, as well as in colorectal and melanoma patients. This approach could represent a dynamic diagnosis tool of intestinal dysbiosis to guide personalized microbiota-centered interventions.
LINK to the original article
If you find it useful, please cite: Derosa, Lisa, Valerio Iebba, Carolina Alves Costa Silva, Gianmarco Piccinno, Guojun Wu, Leonardo Lordello, Bertrand Routy, et al. “Custom Scoring Based on Ecological Topology of Gut Microbiota Associated with Cancer Immunotherapy Outcome.” Cell (Elsevier BV, June 2024). https://doi.org/10.1016/j.cell.2024.05.029.
A Shiny application for calculating Toposcores from microbiome data to predict immunotherapy response.
Live demo: Toposcore Calculator
- Visit https://toposcore.shinyapps.io/toposcore-calculator/
- Upload your microbiome data CSV file
- Click "Calculate Toposcore"
- View and analyze results
- Click "Browse..." to select your microbiome data file
- File must be in CSV format
- Required columns:
Sample_id: Unique identifier for each sample- Bacterial species columns with relative abundance values
Akkermansia_muciniphila: Required for classification
- Use "Download Template File" button to get a sample format
- After uploading data, click "Calculate Toposcore"
- Results will appear in the table below
- Results table shows:
- Sample IDs
- S-scores
- SIG classifications
- Toposcores
- Summary statistics display:
- Distribution of SIG1/Gray/SIG2 classifications
- Count of SIG1+ and SIG2+ Toposcores
- Select samples using the dropdown menu or "Select All"
- Score Distribution Plot shows:
- Reference KDE plot
- Selected samples as red vertical lines
- Sample IDs labeled on the plot
- Species Heatmap displays:
- Relative abundance of signature species
- Akkermansia muciniphila levels
- Color-coded by abundance levels
- "Download Results Table": Save complete results as CSV
- "Download Plot": Save the score distribution plot as PDF
- R (>= 4.0.0)
- RStudio (recommended)
Required R packages
packages <- c(
"shiny",
"DT",
"ggplot2",
"dplyr",
"readr",
"ggnewscale",
"ggrepel"
)
toposcore-calculator/ ├── app/ │ ├── app.R # Main Shiny application │ ├── R/ │ │ ├── toposcore_calc.R # Calculation functions │ │ └── kde_plot.R # Plotting functions │ └── data/ │ ├── sig1.txt # SIG1 species list │ ├── sig2.txt # SIG2 species list │ ├── scores_disc.csv # Reference scores │ ├── clin_disc.csv # Clinical data │ └── met4_valid_10rows.csv # Template file ├── dependencies.R # Package dependencies └── README.md
- Clone the repository:
git clone https://github.com/valerioiebba/TOPOSCORE.git
cd TOPOSCORE
- Install required packages in R:
source("app/dependencies.R")
- Open RStudio
- Open
app/app.R - Click "Run App" or run:
shiny::runApp("app")
To deploy to shinyapps.io:
- Create an account at shinyapps.io
- Install rsconnect package:
rsconnect::deployApp("app")
- Modify
R/toposcore_calc.Rto adjust calculation methods - Update
R/kde_plot.Rto customize visualizations - Edit
app.Rto modify the UI/UX - Update species lists in
data/sig1.txtanddata/sig2.txt
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
Valerio Iebba: valerio.iebba@gmail.com
Abhilash Dhal: adhalbiophysics@gmail.com