STRING Network Analysis

Published

Jun 2026

After functional enrichment input preparation, the next step is STRING network analysis.

Functional enrichment summarizes proteins into biological functions. STRING network analysis adds another layer by asking whether the proteins are connected through known or predicted protein-protein associations.

In this results-first proteomics workflow, STRING analysis begins from cleaned identifiers and ranked differentially abundant proteins.

Starting Point

This chapter uses the STRING input created in Chapter 07:

results/string-network-input.tsv

This file was generated by:

Rscript scripts/R/07-clean-protein-identifiers.R \
  results/ranked-significant-proteins.tsv \
  results

It contains a practical identifier column:

string_identifier

along with supporting columns such as:

primary_protein_id
gene_symbol_clean
protein_id_original
identifier_status
regulation

Why STRING Analysis Matters

A protein list can be biologically meaningful even before network analysis, but network analysis helps answer an additional question:

Are these proteins functionally connected?

STRING can help reveal:

protein-protein association clusters
functional modules
hub proteins
pathway-level organization
shared biological processes

This is useful after differential abundance filtering and functional enrichment.

What STRING Adds

GO enrichment asks:

Which functions are overrepresented?

STRING analysis asks:

Do the proteins form a connected network?

Together, they support stronger biological interpretation.

For example:

GO enrichment may suggest mitochondrial translation.
STRING may show that several ribosomal or mitochondrial proteins form a connected module.

Expected Input

The expected input is:

results/string-network-input.tsv

This table should contain:

string_identifier

The script also preserves useful columns when available:

rank
primary_protein_id
gene_symbol_clean
regulation

Output Files

The STRING preparation script creates:

results/
├── string-input-all.tsv
├── string-input-upregulated.tsv
├── string-input-downregulated.tsv
├── string-upload-list-all.txt
├── string-upload-list-upregulated.txt
├── string-upload-list-downregulated.txt
└── string-network-summary.tsv

These outputs can be used for manual upload to STRING or as structured inputs for later automated API-based workflows.

STRING Preparation Script

The executable script is saved as:

scripts/R/09-prepare-string-network-input.R

The guide shows how to run the script. The full executable code is maintained in scripts/R/.

Running the Script

From the project root, run:

Rscript scripts/R/09-prepare-string-network-input.R \
  results/string-network-input.tsv \
  results

The arguments are:

1st argument → STRING network input table
2nd argument → output directory

Output 1: All STRING Input

The all-protein STRING table is:

results/string-input-all.tsv

This file contains all usable STRING identifiers from the significant protein set.

It preserves ranking and regulation columns when available.

Output 2: Upregulated STRING Input

The upregulated STRING table is:

results/string-input-upregulated.tsv

This file contains identifiers for proteins classified as upregulated.

For the running example:

upregulated → higher abundance in treated

Output 3: Downregulated STRING Input

The downregulated STRING table is:

results/string-input-downregulated.tsv

This file contains identifiers for proteins classified as downregulated.

For the running example:

downregulated → lower abundance in treated

Output 4: Upload Lists

The plain-text upload lists are:

results/string-upload-list-all.txt
results/string-upload-list-upregulated.txt
results/string-upload-list-downregulated.txt

These files contain one identifier per line.

They are useful for manual upload to STRING or other network tools.

Output 5: STRING Network Summary

The summary file is:

results/string-network-summary.tsv

It records:

total identifiers
upregulated identifiers
downregulated identifiers
unique identifiers
missing identifiers removed

This summary is a checkpoint before network interpretation.

Manual STRING Workflow

A simple manual workflow is:

Open STRING
        ↓
Choose Multiple Proteins
        ↓
Paste identifiers from string-upload-list-all.txt
        ↓
Select organism
        ↓
Run network search
        ↓
Export network image and interaction table

The organism selection is important. The same gene symbol may mean different things in different organisms.

Interpreting STRING Networks

When reviewing a STRING network, consider:

Are proteins connected more than expected?
Are there visible clusters?
Are upregulated and downregulated proteins separated?
Are hub proteins present?
Do clusters match GO enrichment themes?
Are there isolated proteins?

Network patterns should be interpreted together with differential abundance and enrichment results.

Hub Proteins

Highly connected proteins can be biologically interesting, but they should be interpreted carefully.

A hub protein may represent:

a true central biological regulator
a well-studied protein with many known interactions
a large protein complex component
a database bias

Network centrality is useful, but it is not proof of mechanism.

Upregulated and Downregulated Networks

It can be useful to analyze:

all significant proteins
upregulated proteins only
downregulated proteins only

Separate networks may reveal direction-specific biology.

For example:

upregulated network   → stress response module
downregulated network → metabolic module

Relationship to Visualization

STRING network images can be included later in the visualization and final report chapters.

The outputs from this chapter support:

network tables
network upload lists
network screenshots
network interpretation summaries

Looking Ahead

The next chapter focuses on visualizing proteomics results.

STRING-ready identifiers
        ↓
STRING network input files
        ↓
Network analysis
        ↓
Visualization
        ↓
Biological interpretation