本文へ移動
cccskills
無料GitHub で公開

roc-diagnostic-performance

Use when evaluating diagnostic biomarker performance from case-control expression data with logistic regression and ROC curves, exporting coefficient and AUC tables together with a ROC PDF. NOT for: survival analysis, time-to-event outcomes, multiclass classification, calibration curves, decision-curve analysis, or nomogram construction.

インストール方法を見る

含まれるファイル(22)

  • SKILL.md10.3 KB
  • eval_report_roc-diagnostic-performance_result.json11.9 KB
  • references/algorithm.md2.8 KB
  • references/cli-guide.md2.7 KB
  • references/troubleshooting.md2.8 KB
  • scripts/cli.R3.7 KB
  • scripts/functions.R5.9 KB
  • scripts/io.R1.3 KB
  • scripts/main.R1.8 KB
  • scripts/plotting.R2.4 KB
  • scripts/run_analysis.R2.8 KB
  • scripts/utils.R2.5 KB
  • scripts/validation.R2.3 KB
  • tests/data/sample_expression_matrix.csv7.6 KB
  • tests/data/sample_group_info.csv2.2 KB
  • tests/expected_output/data/analysis_data.rds2.8 KB
  • tests/expected_output/data/roc_model.rds17.0 KB
  • tests/expected_output/session_info.txt1.8 KB
  • tests/expected_output/table/model_coefficients.csv568 B
  • tests/expected_output/table/roc_auc_summary.csv76 B
  • tests/run_smoke_test.R2.1 KB
  • tests/run_smoke_test.sh127 B

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

ROC Diagnostic Performance

When to Use

Use this skill when you need to:

  • evaluate one or more diagnostic marker genes in a case-control cohort;
  • build a multivariable logistic regression diagnostic model from marker expression values;
  • compare the ROC performance of the full model against individual markers.

Typical user requests:

  • "Use these genes to build a diagnostic ROC model for case vs control samples."
  • "Evaluate the AUC of FOXP3, CD45, and CD3E and plot all ROC curves together."
  • "Run logistic regression on biomarker expression and export ROC results."

When Not to Use

Do not use this skill for:

  • survival or prognostic analysis with time-to-event outcomes;
  • multiclass classification tasks;
  • calibration plots, nomograms, or decision-curve analysis;
  • non-expression diagnostic inputs such as imaging, clinical scores, or mutation-only tables.

When to Read External Files

SituationFile to ReadPurpose
Need algorithm detailsreferences/algorithm.mdLogistic regression, ROC, AUC, and modeling assumptions
Need to run analysisscripts/main.RExecute Rscript scripts/main.R --expression_file ... --group_file ...
Encounter errorsreferences/troubleshooting.mdCommon SKILL_* errors and solutions
Need CLI examplesreferences/cli-guide.mdDetailed command-line examples
Need test datatests/data/Example expression matrix and group file

Usage

Rscript scripts/main.R \
  --expression_file ./expression_matrix.csv \
  --group_file ./group_info.csv \
  --marker_genes FOXP3,CD45,CD3E \
  --case_group Disease \
  --output_dir ./output/ \
  --seed 42

Arguments

ShortLongTypeDefaultDescription
-e--expression_filecharacterrequiredExpression matrix file in CSV/TSV format
-g--group_filecharacterrequiredGroup file with sample IDs and labels
-m--marker_genescharacterrequiredComma-separated marker genes
-c--case_groupcharacterrequiredCase group label in the group file
--group_colcharacterNULLOptional group column name; auto-detected if omitted
-o--output_dircharacter./output/Output directory
--overwriteflagFALSEAllow writing into a non-empty output directory
-s--seedinteger42Random seed for reproducibility
-T--timeout_secondsinteger0Elapsed time limit in seconds; 0 disables timeout
--plot_widthdouble6ROC plot width in inches
--plot_heightdouble6ROC plot height in inches
--font_familycharactersansPDF font family
--line_colorscharacter#E64B35,#4DBBD5,#00A087,#3C5488,#F39B7FComma-separated ROC line colors
--line_widthdouble1.2ROC curve line width
--show_diagonalcharactertrueShow diagonal reference line: true or false
--diagonal_colorcharacter#7F7F7FDiagonal line color
--diagonal_ltyinteger2Diagonal line type
--plot_titlecharacterROC Diagnostic PerformanceROC plot title
--x_labelcharacter1 - SpecificityX-axis label
--y_labelcharacterSensitivityY-axis label
--base_cexdouble0.9Base text-size multiplier
--legend_positioncharacterbottomrightLegend position
--legend_cexdouble0.8Legend text size

Input Format

Expression Matrix (expression_file)

CSV or TSV file with genes as rows and samples as columns. The first column must store unique gene identifiers.

gene,Sample1,Sample2,Sample3
FOXP3,8.4,7.1,3.8
CD45,2.1,1.9,5.4
CD3E,5.8,6.2,4.0

Requirements

  • File extension must be .csv, .tsv, or .txt.
  • The first column must contain non-missing, unique gene identifiers.
  • Remaining columns must be sample IDs.
  • Selected marker genes must have numeric finite expression values across matched samples.

Group File (group_file)

CSV or TSV file with sample IDs in the first column and at least one group-label column.

sample,group
Sample1,Disease
Sample2,Disease
Sample3,Control

Requirements

  • File extension must be .csv, .tsv, or .txt.
  • The first column must contain non-missing, unique sample IDs.
  • At least one group column must be present.
  • The case_group value must appear in the selected group column.
  • At least 10 matched samples, 2 case samples, and 2 control samples are required.

Output Files

FileDescription
data/analysis_data.rdsMatched sample-level analysis dataset used for model fitting
data/roc_model.rdsSaved logistic regression model bundle with data and selected genes
table/model_coefficients.csvLogistic regression coefficients, z statistics, p-values, and odds ratios
table/roc_auc_summary.csvAUC values for the full model and each marker
plot/roc_curve.pdfROC curves for the full model and individual markers
session_info.txtSession information and run parameters

model_coefficients.csv

ColumnDescription
termModel term name
estimateLogistic regression coefficient
std_errorStandard error of the coefficient
z_valueWald z statistic
p_valueWald test p-value
odds_ratioExponentiated coefficient
odds_ratio_95_ciOdds ratio with 95% confidence interval

roc_auc_summary.csv

ColumnDescription
modelFull model or marker name
aucArea under the ROC curve

Workflow

Step 1: Validate Input

  • Check that the expression matrix and group file exist and have supported formats.
  • Validate unique gene identifiers and sample IDs.
  • Match samples shared by both files.

Step 2: Prepare Analysis Dataset

  • Keep only the requested marker genes that exist in the expression matrix.
  • Merge matched expression values with group labels.
  • Convert the selected case group to binary outcome labels.

Step 3: Fit Logistic Regression

  • Fit a multivariable logistic regression model using the selected markers.
  • Extract coefficient estimates, standard errors, p-values, and odds ratios.

Step 4: Compute ROC Performance

  • Generate the ROC curve of the full logistic model.
  • Generate ROC curves for each individual marker.
  • Calculate AUC values for the full model and each marker.

Step 5: Save Outputs

  • Save the matched analysis dataset and model bundle as .rds files.
  • Save coefficient and AUC summary tables as .csv files.
  • Save the combined ROC plot as a PDF.

Examples

Basic Usage

Rscript scripts/main.R \
  -e expression_matrix.csv \
  -g group_info.csv \
  -m FOXP3,CD45,CD3E \
  -c Disease \
  -o ./output/

With Explicit Group Column and Custom Plot

Rscript scripts/main.R \
  -e expression_matrix.csv \
  -g group_info.csv \
  -m FOXP3,CD45,CD3E \
  -c Disease \
  --group_col diagnosis \
  --plot_width 8 \
  --plot_height 6 \
  --plot_title "Biomarker ROC Comparison" \
  --legend_position topright \
  -o ./output/

With Test Data

Rscript scripts/main.R \
  -e tests/data/sample_expression_matrix.csv \
  -g tests/data/sample_group_info.csv \
  -m FOXP3,CD45,CD3E \
  -c Disease \
  -o tests/expected_output/ \
  --overwrite

Error Handling

ErrorCauseSolution
SKILL_INVALID_PARAMETERMissing required argument, invalid option value, invalid matrix/group structure, invalid case label, insufficient case-control counts, or logistic fitting failureCheck argument names, input content, class balance, and model stability
SKILL_FILE_NOT_FOUNDInput file does not existVerify the file path
SKILL_EMPTY_DATAInput file contains no usable rows, or no requested markers remain after filteringCheck file content, delimiter, and marker names
SKILL_MISSING_COLUMNSRequested group column is absentVerify --group_col and the group file header
SKILL_SAMPLE_MISMATCHExpression matrix and group file do not share sample IDsVerify that sample IDs match exactly between files
SKILL_PACKAGE_NOT_FOUNDRequired R package is not installedInstall the missing CRAN package

IF error persists, READ: references/troubleshooting.md


Testing

Smoke Test With Included Data

Rscript scripts/main.R --help

Rscript scripts/main.R \
  -e tests/data/sample_expression_matrix.csv \
  -g tests/data/sample_group_info.csv \
  -m FOXP3,CD45,CD3E \
  -c Disease \
  -o tests/expected_output/ \
  --overwrite

Automated Smoke Test Script

Rscript tests/run_smoke_test.R

Optional shell wrapper:

bash tests/run_smoke_test.sh

Expected Output

tests/expected_output/
|-- data/analysis_data.rds
|-- data/roc_model.rds
|-- plot/roc_curve.pdf
|-- session_info.txt
|-- table/model_coefficients.csv
`-- table/roc_auc_summary.csv

References

  1. Hosmer DW, Lemeshow S, Sturdivant RX (2013). Applied Logistic Regression.
  2. Fawcett T (2006). An Introduction to ROC Analysis. Pattern Recognition Letters.
  3. Robin X et al. (2011). pROC: an open-source package for R and S+ to analyze and compare ROC curves. BMC Bioinformatics.

For detailed algorithm, READ: references/algorithm.md


Implementation Checklist

  • CLI parsing with optparse
  • set.seed() for reproducibility
  • requireNamespace() dependency checks
  • Session info recording
  • Timeout parameter exposed as CLI option
  • File reading instructions in SKILL.md
  • Modular script structure in scripts/
  • Test data provided in tests/data/
  • Error handling with SKILL_* codes
  • References documented in references/

Last updated: 2026-04-17 | Version: 2.1.0

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Transform lengthy academic papers into concise, structured 250-word abstracts.

日本語の概要は準備中です。原文の説明を表示しています。

aipoch/medical-research-skills1,9482026年9月17日 更新

Precision editing tool that reduces abstract word count through intelligent compression techniques, maintaining scientific rigor while meeting strict journal and conference requirements.

日本語の概要は準備中です。原文の説明を表示しています。

aipoch/medical-research-skills1,9482026年9月17日 更新

Refines long medical academic texts into SCI-style unstructured Chinese and English abstracts; use when you need to condense drafts/reports/summaries into bilingual abstracts and generate Summary_Report.md.

日本語の概要は準備中です。原文の説明を表示しています。

aipoch/medical-research-skills1,9482026年9月17日 更新

Generates submission-ready Elsevier/SCI Highlights from manuscript text or extracted PDF/DOCX/TXT content. Use when a user needs 3-5 concise, evidence-grounded highlight bullets for a research paper, review, meta-analysis, case report, or bioinformatics manuscript.

日本語の概要は準備中です。原文の説明を表示しています。

aipoch/medical-research-skills1,9482026年9月17日 更新

Generates complete FAERS pharmacovigilance study designs for multi-drug or class-level safety comparison inside one predefined SOC or AE family using active comparators, disproportionality analysis, subgroup characterization, and reviewer-facing evidence control.

日本語の概要は準備中です。原文の説明を表示しています。

aipoch/medical-research-skills1,9482026年9月17日 更新

Analyze data with `adme-property-predictor` using a reproducible workflow, explicit validation, and structured outputs for review-ready interpretation.

日本語の概要は準備中です。原文の説明を表示しています。

aipoch/medical-research-skills1,9482026年9月17日 更新

aipoch のスキルをすべて見る

このスキルの問題を報告する