---
name: string-protein-interaction-analysis-with-omicverse
title: STRING protein interaction analysis with omicverse
description: Help Claude query STRING for protein interactions, build PPI graphs with pyPPI, and render styled network figures for bulk gene lists.
---
# STRING protein interaction analysis with omicverse
## Overview
Invoke this skill when the user has a list of genes and wants to explore STRING protein–protein interactions via omicverse. The
workflow mirrors [`t_network.ipynb`](../../omicverse_guide/docs/Tutorials-bulk/t_network.ipynb), covering species selection, S
TRING API queries, and quick visualisation of the resulting network.
## Instructions
1. **Set up libraries**
- Import `omicverse as ov` and call `ov.utils.ov_plot_set()` (or `ov.plot_set()`) to match omicverse aesthetics.
2. **Collect gene inputs**
- Accept a curated list of gene symbols (`gene_list = [...]`).
- Encourage the user to flag priority genes or categories so you can colour-code groups in the plot.
3. **Assign metadata for plotting**
- Build dictionaries mapping genes to types and colours, e.g. `gene_type_dict = dict(zip(gene_list, ['Type1']*5 + ['Type2']*6
))` and `gene_color_dict = {...}`.
- Remind users that consistent group labels improve legend readability.
4. **Query STRING interactions**
- Call `ov.bulk.string_interaction(gene_list, species_id)` where `species_id` is the NCBI taxonomy ID (e.g. 4932 for yeast).
- Inspect the resulting DataFrame for combined scores and evidence channels to verify coverage.
5. **Construct the network object**
- Initialise `ppi = ov.bulk.pyPPI(gene=gene_list, gene_type_dict=..., gene_color_dict=..., species=species_id)`.
- Run `ppi.interaction_analysis()` to fetch and cache STRING edges.
6. **Visualise the network**
- Generate a default plot with `ppi.plot_network()` to reproduce the notebook figure.
- Mention that advanced styling (layout, node size, legends) can be tuned through `ov.utils.plot_network` keyword arguments if
the user requests adjustments.
7. **Troubleshooting**
- Ensure gene symbols match the species—STRING expects case-sensitive identifiers; suggest mapping Ensembl IDs to symbols when
queries fail.
- If the API rate-limits, instruct the user to wait or provide a cached interaction table.
- For missing interactions, recommend enabling STRING's "add_nodes" option via `ppi.interaction_analysis(add_nodes=...)` to exp
and the network.
## Examples
- "Retrieve STRING interactions for FAA4 and plot the network highlighting two gene classes."
- "Download the STRING edge table for my Saccharomyces cerevisiae gene panel and colour nodes by module."
- "Extend the network by adding the top five predicted partners before plotting."
## References
- Tutorial notebook: [`t_network.ipynb`](../../omicverse_guide/docs/Tutorials-bulk/t_network.ipynb)
- STRING background: [string-db.org](https://string-db.org/)
- Quick copy/paste commands: [`reference.md`](reference.md)