Use this skill to compute ESTIMATE immune-related microenvironment scores from a bulk expression matrix, generate an ESTIMATE score heatmap, and optionally generate group-wise ESTIMATE score boxplots plus significance tables when a sample group file is supplied. Trigger keywords: ESTIMATE, immune score, stromal score, tumor microenvironment score. NOT for: immune cell deconvolution, single-cell analysis, differential expression, clinical diagnosis.
71
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Use this skill when the user wants to:
estimate package input files and score outputsTypical request patterns:
This is a CLI-backed analysis skill.
SKILL.md to confirm that the task is ESTIMATE score generation from bulk expression data.scripts/main.R for the real execution.| Situation | File to Read | Purpose |
|---|---|---|
| Need algorithm details | references/algorithm.md | Understand the ESTIMATE scoring workflow and result interpretation |
| Need to run the skill | scripts/main.R | Execute the CLI entry point |
| Encounter errors | references/troubleshooting.md | Find standard error codes and fixes |
| Need more CLI examples or the real-data baseline record | references/cli-guide.md | Copy commands and review the recorded execution template |
| Need sample input files | tests/data/ | Use the bundled demo expression matrix |
If the request is outside ESTIMATE score generation for bulk expression matrices, stop and explain that this skill only covers ESTIMATE-based score computation.
This skill accepts:
Do not use this workflow for:
If the user's request is outside this scope, do not proceed with the workflow. Instead respond:
estimate-immune-score-analysisis designed to compute ESTIMATE-based tumor microenvironment scores from a bulk expression matrix. Your request appears to be outside this scope. Please provide a valid bulk expression matrix and, if needed, a matching sample group file, or use a more appropriate skill for your task.
Rscript scripts/main.R \
--input_file ./expression_matrix.csv \
--group_file ./group_info.csv \
--output_dir ./output \
--gene_id_type GeneSymbol \
--platform affymetrix \
--seed 42| Short | Long | Type | Default | Description |
|---|---|---|---|---|
-i | --input_file | character | required | Expression matrix file in CSV or TSV format |
-o | --output_dir | character | ./output | Output directory |
--group_file | character | optional | Sample group file used for ESTIMATE score boxplots and significance testing | |
-g | --gene_id_type | character | GeneSymbol | Gene identifier type: GeneSymbol or EntrezID |
-p | --platform | character | affymetrix | ESTIMATE platform: affymetrix, agilent, or illumina |
-s | --seed | integer | 42 | Random seed |
-t | --timeout_seconds | integer | 0 | Optional timeout in seconds; 0 disables timeout |
--input_delimiter | character | auto | Input delimiter hint: auto, csv, or tsv | |
--group_delimiter | character | auto | Group file delimiter hint: auto, csv, or tsv | |
--sample_column | character | sample | Sample column name in the group file | |
--group_column | character | group | Group column name in the group file | |
--plot_file | character | estimate_scores_boxplot.pdf | Boxplot file name written under plot/ | |
--heatmap_file | character | estimate_scores_heatmap.pdf | Heatmap file name written under plot/ |
SKILL_INVALID_PARAMETERExample:
gene,S1,S2,S3
TP53,8.1,7.9,6.5
EGFR,5.2,5.0,4.2The bundled tests/data/expression_matrix.csv was copied from cibersort-immune-infiltration-analysis/tests/data/expression_matrix.csv for demo and validation use.
SKILL_INVALID_PARAMETER is raised.SKILL_INVALID_PARAMETER.SKILL_* error after preserving the core ESTIMATE outputs and failure recordsExample:
sample,group
S1,Tumor
S2,Tumor
S3,Healthy
S4,Healthy| File | Description |
|---|---|
data/expression_input.tsv | Tab-delimited expression matrix prepared for ESTIMATE |
data/estimate_input.gct | GCT file created by estimate::filterCommonGenes() |
data/estimate_score.gct | Raw ESTIMATE score output from estimate::estimateScore() |
table/estimate_scores.tsv | Reformatted sample-by-score table |
plot/estimate_scores_heatmap.pdf | Sample-level ESTIMATE score heatmap |
table/estimate_score_group_stats.csv | Per-score p-values and the group with the higher median score when --group_file is provided |
plot/estimate_scores_boxplot.pdf | ESTIMATE score boxplot when --group_file is provided |
session_info.txt | R session and package version information |
output_manifest.txt | Append-only output file manifest with descriptions |
run_record.txt | Append-only run record with parameters, runtime, and output summary |
estimate::filterCommonGenes()estimate::estimateScore()data/table/estimate_scores.tsvplot/estimate_scores_heatmap.pdf--group_file is supplied, create plot/estimate_scores_boxplot.pdf--group_file is supplied, create table/estimate_score_group_stats.csvoutput_manifest.txt and run_record.txt, and exit with a SKILL_* messagesession_info.txtoutput_manifest.txt and run_record.txtRscript scripts/main.R \
--input_file ./expression_matrix.csv \
--output_dir ./outputRscript scripts/main.R \
--input_file ./expression_matrix.csv \
--group_file ./group_info.csv \
--output_dir ./grouped_outputRscript scripts/main.R \
--input_file ./expression_matrix.tsv \
--input_delimiter tsv \
--output_dir ./tsv_output \
--gene_id_type GeneSymbolRscript scripts/main.R \
--input_file ./expression_matrix.csv \
--output_dir ./illumina_output \
--platform illumina \
--seed 123For the real-data baseline execution record, READ: references/cli-guide.md
| Error Code | Meaning | Solution |
|---|---|---|
SKILL_FILE_NOT_FOUND | Input file is missing or an expected intermediate file was not created | Check file paths and rerun |
SKILL_MISSING_COLUMNS | The gene identifier column contains missing values | Repair the first column and rerun |
SKILL_EMPTY_DATA | The matrix or ESTIMATE output is empty | Verify input content and identifier compatibility |
SKILL_INVALID_PARAMETER | A CLI argument is unsupported; the matrix contains invalid values; duplicate sample column names detected; more than two group levels provided; or a group contains fewer than 3 samples | Review arguments and input values |
SKILL_SAMPLE_MISMATCH | Sample names in the group file do not overlap the ESTIMATE score table | Align sample IDs before rerunning |
SKILL_PACKAGE_NOT_FOUND | Required R packages are not installed | Install missing packages listed in references/cli-guide.md |
If the error persists, READ: references/troubleshooting.md
For optional group comparison failures such as SKILL_SAMPLE_MISMATCH, inspect the preserved core outputs together with output_manifest.txt and run_record.txt to see what completed before the grouped step failed.
Rscript scripts/main.R --help
Rscript tests/run_tests.R
Rscript scripts/main.R \
--input_file tests/data/expression_matrix.csv \
--group_file tests/data/group_info.csv \
--output_dir tests/output \
--gene_id_type GeneSymbol \
--platform affymetrix \
--seed 42Expected outputs:
tests/output/data/expression_input.tsvtests/output/data/estimate_input.gcttests/output/data/estimate_score.gcttests/output/table/estimate_scores.tsvtests/output/plot/estimate_scores_heatmap.pdftests/output/table/estimate_score_group_stats.csvtests/output/plot/estimate_scores_boxplot.pdftests/output/session_info.txttests/output/output_manifest.txttests/output/run_record.txtOptional post-check:
Rscript tests/test_skill.R tests/outputFor detailed algorithm notes, READ: references/algorithm.md
optparseset.seed() for reproducibilitySKILL.mdget_script_dir() defined before any call to itSKILL.mdtests/data/SKILL_* messagesreferences/cli-guide.mdskill-auditor outputs generated after container executionf5ef65b
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.