Skip to content
Back to skills

Ppi Network Analysis

ASecurity

Use when you need a standardized R CLI workflow to build a protein-protein interaction network from a local gene list and an offline STRING cache, export node and edge tables, and render a reproducible PDF network plot. NOT for online API fetching, arbitrary graph databases, multi-omics integration, or non-STRING interaction sources.

  • 1,793 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added June 6, 2026
datagobashnodetestinggitapidatabase

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 14 files and shows the line behind each finding

Scanned June 6, 2026

npx -y skills add aipoch/medical-research-skills --skill ppi-network-analysis --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ppi Network Analysis?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ppi Network Analysis
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aipoch-ppi-network-analysis/badge)](https://www.skillsdirectory.com/skills/aipoch-ppi-network-analysis)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ppi-network-analysis
description: Use when you need a standardized R CLI workflow to build a protein-protein interaction network from a local gene list and an offline STRING cache, export node and edge tables, and render a reproducible PDF network plot. NOT for online API fetching, arbitrary graph databases, multi-omics integration, or non-STRING interaction sources.
license: MIT
author: AIPOCH
---
> **Source**: [https://github.com/aipoch/medical-research-skills](https://github.com/aipoch/medical-research-skills)

# PPI Network Analysis

## When to Read External Files

| Situation | File to Read | Purpose |
|-----------|--------------|---------|
| Need algorithm details | `references/algorithm.md` | Explain local STRING mapping, interaction filtering, network metrics, and plot interpretation |
| Need to execute the analysis | `scripts/main.R` | Run the CLI entry point with a complete `Rscript` command |
| Encounter an error | `references/troubleshooting.md` | Map standardized error codes to causes and fixes |
| Need CLI examples or baseline usage | `references/cli-guide.md` | Review installation notes, offline cache requirements, and runnable examples |
| Need a runnable smoke test | `tests/data/` | Use the bundled small gene list for verification |

## Usage

```bash
Rscript scripts/main.R \
  --genelist_file ./input/gene_list.csv \
  --species human \
  --threshold 700 \
  --output_dir output/basic-run \
  --seed 42 \
  --timeout_seconds 600
```

```bash
Rscript scripts/main.R \
  --plot_only TRUE \
  --output_dir output/basic-run \
  --seed 42 \
  --timeout_seconds 600
```

## Arguments

| Short | Long | Type | Default | Required | Description |
|-------|------|------|---------|----------|-------------|
| `-g` | `--genelist_file` | character | none | yes, unless `--plot_only TRUE` | Gene list file in CSV, TSV, TXT, or XLSX format |
| `-s` | `--species` | character | none | yes, unless `--plot_only TRUE` | Species: `human`, `mouse`, `9606`, or `10090` |
| `-t` | `--threshold` | integer | none | yes, unless `--plot_only TRUE` | STRING combined-score threshold from `400` to `1000` |
| `-o` | `--output_dir` | character | `output` | no | Output directory inside the skill root |
| `-p` | `--plot_only` | logical | `FALSE` | no | Reuse `output_dir/data/ppi_result.rds` and regenerate the network plot |
| `-d` | `--seed` | integer | `42` | no | Random seed used for layout reproducibility |
| `-u` | `--timeout_seconds` | integer | `600` | no | Elapsed time limit in seconds |
|  | `--string_cache_dir` | character | `references/string_cache` | no | Local STRING cache directory; if omitted, the bundled cache inside the skill is used |
|  | `--string_version` | character | `auto` | no | Preferred STRING cache version; use `auto`, `v11.5`, or `v12.0` when available |
|  | `--figure_family` | character | `sans` | no | PDF font family: `sans`, `serif`, or `mono` |
|  | `--figure_width` | numeric | `12` | no | Plot width in inches |
|  | `--figure_height` | numeric | `10` | no | Plot height in inches |
|  | `--label` | character | `node` | no | Label mode: `node` or `none` |
|  | `--label_size` | numeric | `0.8` | no | Label size |
|  | `--label_color` | character | `black` | no | Label color |
|  | `--label_dist` | numeric | `0` | no | Label distance from the node center |
|  | `--line_alpha` | numeric | `1` | no | Edge alpha |
|  | `--line_color` | character | built-in palette | no | Comma-separated edge colors |
|  | `--line_size` | numeric | `0.8` | no | Base edge width |
|  | `--line_type` | character | `solid` | no | Edge line type; supported values in plotting are `solid`, `dashed`, or `dotted` |
|  | `--mapping_link_alpha` | character | `value` | no | Map edge alpha from interaction score: `value` or `none` |
|  | `--mapping_link_color` | character | `value` | no | Map edge color from interaction score: `value` or `none` |
|  | `--mapping_link_size` | character | `value` | no | Map edge width from interaction score: `value` or `none` |
|  | `--mapping_node_alpha` | character | `none` | no | Map node alpha from degree: `value` or `none` |
|  | `--mapping_node_color` | character | `none` | no | Map node color from degree: `value` or `none` |
|  | `--mapping_node_size` | character | `value` | no | Map node size from degree: `value` or `none` |
|  | `--point_alpha` | numeric | `1` | no | Node alpha |
|  | `--point_color` | character | built-in palette | no | Comma-separated node border colors |
|  | `--point_fill` | character | built-in palette | no | Comma-separated node fill colors |
|  | `--point_shape` | character | `circle` | no | Node shape: `circle` or `square` |
|  | `--point_size` | numeric | `12` | no | Base node size |
|  | `--style_layout` | character | `nicely` | no | Layout style: `kk`, `fr`, `nicely`, `circle`, `star`, `grid`, or `randomly` |
|  | `--style_line` | character | `straight` | no | Edge style: `straight` or `curve` |
|  | `--theme_size` | numeric | `0.8` | no | Theme size placeholder retained for compatibility |
|  | `--title` | character | empty | no | Main plot title |

## Input Format

### Supported input types

`--genelist_file` accepts the following formats:
- `.csv`
- `.tsv`
- `.txt`
- `.xlsx`

### Gene list parsing rules

- Plain-text `.txt` files can be provided as one gene symbol per line without a header.
- For `.csv`, `.tsv`, and `.xlsx`, the tool automatically selects a likely gene column.
- Preferred column names include: `gene`, `genes`, `genename`, `genesymbol`, `symbol`, `hgnc`, `hgncsymbol`, `mgi`, `ensembl`, `ensemblgeneid`, `geneid`, and `id`.
- If no standard gene column name is found, the tool falls back to the column with the strongest non-numeric signal.
- Values may contain multiple genes separated by commas, semicolons, pipes, tabs, or spaces; these are split automatically.
- Empty inputs, unsupported file extensions, or inputs with no parsable genes will raise a `SKILL_EMPTY_DATA` or `SKILL_INVALID_PARAMETER` error.

### Minimal examples

#### TXT example

```text
TP53
EGFR
BRCA1
MYC
```

#### CSV example

```csv
gene
TP53
EGFR
BRCA1
MYC
```

## Output Files

| File | Format | Description |
|------|--------|-------------|
| `data/ppi_result.rds` | RDS | Serialized PPI bundle with mappings, interactions, nodes, summary, and metadata |
| `table/ppi_network_edges.xlsx` | XLSX | Edge table with `from`, `to`, and `combined_score` |
| `table/ppi_network_nodes.xlsx` | XLSX | Node table with `gene`, `degree`, `betweenness`, and `closeness` |
| `table/ppi_summary.csv` | CSV | Summary metrics for input genes, mapped genes, unmapped genes, nodes, edges, and threshold |
| `plot/ppi_network_plot.pdf` | PDF | Rendered PPI network plot from the local STRING interaction graph |
| `session_info.txt` | TXT | R version, platform, and package version information |

## Error Handling

| Error Code | Meaning | How to Fix |
|-----------|---------|------------|
| `SKILL_FILE_NOT_FOUND` | Input gene list, STRING cache directory, required cache files, or `data/ppi_result.rds` in plot-only mode was not found | Confirm the path exists, required cache files are present, and run a full analysis before `--plot_only TRUE` |
| `SKILL_EMPTY_DATA` | No valid genes were parsed, no genes mapped to STRING, fewer than two mapped STRING IDs remained, no interactions passed filtering, or the interaction table was empty for plotting | Check that the input is not empty, verify gene symbols are supported by the local STRING cache, and lower the threshold if the network is too sparse |
| `SKILL_INVALID_PARAMETER` | A required argument is missing, a numeric value is out of range, an unsupported choice was supplied, the output path is invalid, or the input extension is unsupported | Recheck the parameter value and allowed choices, especially `--species`, `--threshold`, mapping options, plot options, and output paths |
| `SKILL_MISSING_COLUMNS` | Required columns were not found in a STRING cache table | Confirm the local aliases, info, and links files are valid STRING cache files with expected columns |
| `SKILL_PACKAGE_NOT_FOUND` | Required R packages are not installed | Install the missing packages listed in the error message before rerunning |

Detailed fixes and troubleshooting steps: READ `references/troubleshooting.md`

## Testing

### Smoke test with bundled data

```bash
Rscript scripts/main.R \
  --genelist_file tests/data/gene_list.csv \
  --species human \
  --threshold 700 \
  --output_dir tests/output/basic-run
```

### Plot-only regeneration test

```bash
Rscript scripts/main.R \
  --plot_only TRUE \
  --output_dir tests/output/basic-run \
  --seed 42
```

### Expected outputs after test

- `tests/output/basic-run/data/ppi_result.rds`
- `tests/output/basic-run/table/ppi_network_edges.xlsx`
- `tests/output/basic-run/table/ppi_network_nodes.xlsx`
- `tests/output/basic-run/table/ppi_summary.csv`
- `tests/output/basic-run/plot/ppi_network_plot.pdf`
- `tests/output/basic-run/session_info.txt`

Files in this skill

  • SKILL.md8.8 KB
  • eval_report_ppi-network-analysis_result.json17.2 KB
  • references/algorithm.md8.2 KB
  • references/cli-guide.md8.1 KB
  • references/troubleshooting.md4.2 KB
  • scripts/cli_options.R86 B
  • scripts/core_option_groups.R1.7 KB
  • scripts/functions.R2.7 KB
  • scripts/io.R3.3 KB
  • scripts/main.R2 KB
  • scripts/option_validation.R3.1 KB
  • scripts/path_utils.R2.6 KB
  • scripts/plot_option_groups.R3.9 KB
  • scripts/recording.R173 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.