Use when you need a standardized R CLI workflow to run two-class SVM-RFE feature ranking on an expression-like matrix, choose an informative feature count from cross-validated error, and generate reproducible ranking and error plots. NOT for regression, multi-class classification, missing-value imputation, or remote data fetching.
Scanned 6/6/2026
Install via CLI
openskills install aipoch/medical-research-skills---
name: svm-model-importance-analysis
description: Use when you need a standardized R CLI workflow to run two-class SVM-RFE feature ranking on an expression-like matrix, choose an informative feature count from cross-validated error, and generate reproducible ranking and error plots. NOT for regression, multi-class classification, missing-value imputation, or remote data fetching.
license: MIT
author: AIPOCH
---
> **Source**: [https://github.com/aipoch/medical-research-skills](https://github.com/aipoch/medical-research-skills)
# SVM Model Importance Analysis
## When to Read External Files
| Situation | File to Read | Purpose |
|-----------|--------------|---------|
| Need algorithm details | `references/algorithm.md` | Explain SVM-RFE ranking, cross-validation logic, assumptions, and 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 | `references/cli-guide.md` | Review installation steps and runnable CLI examples |
| Need a runnable smoke test | `tests/data/` | Use the bundled small dataset for verification |
## Usage
```bash
Rscript scripts/main.R \
--input_file ./input/expression_matrix.csv \
--group_file ./input/group_info.csv \
--case_group Case \
--control_group Control \
--output_dir output/basic-run \
--seed 42 \
--timeout_seconds 600
```
## Arguments
| Short | Long | Type | Default | Required | Description |
|-------|------|------|---------|----------|-------------|
| `-i` | `--input_file` | character | none | yes, unless `--plot_only TRUE` | Expression matrix file with samples in rows and features in columns |
| `-g` | `--group_file` | character | none | yes, unless `--plot_only TRUE` | Group file with sample IDs in the first column |
| `-c` | `--case_group` | character | none | yes, unless `--plot_only TRUE` | Case group label |
| `-r` | `--control_group` | character | none | yes, unless `--plot_only TRUE` | Control group label |
| `-o` | `--output_dir` | character | `output` | yes | Output directory inside the skill root |
| `-p` | `--plot_only` | logical | `FALSE` | no | Reuse `output_dir/data/svm_result.rds` and regenerate plots without rerunning SVM-RFE |
| `-s` | `--seed` | integer | `42` | no | Random seed for reproducibility |
| `-t` | `--timeout_seconds` | integer | `600` | no | Elapsed time limit for the run |
| | `--svm_k` | integer | `10` | no | Number of stratified outer folds used for SVM-RFE and validation |
| | `--svm_halve_above` | integer | `50` | no | If surviving features exceed this count, remove half per iteration |
| | `--svm_max_features_cap` | integer | `30` | no | Maximum feature count evaluated on the error curve |
| | `--svm_select_rule` | character | `min` | no | Feature-count rule: `min` or `tolerance` |
| | `--svm_tol` | numeric | `0.01` | no | Tolerance used when `--svm_select_rule tolerance` is selected |
| | `--svm_error_height` | numeric | `5` | no | SVM error plot height in inches |
| | `--svm_error_width` | numeric | `6` | no | SVM error plot width in inches |
| | `--svm_error_xlab` | character | `Number of Features` | no | X-axis label for the SVM error plot |
| | `--svm_error_ylab` | character | `Classification Error Rate` | no | Y-axis label for the SVM error plot |
| | `--svm_error_main_line_color` | character | `black` | no | Main line color for the SVM error plot |
| | `--svm_error_second_line_color` | character | `#2BA2DE` | no | Baseline line color for the SVM error plot |
| | `--svm_error_best_point_color` | character | `red` | no | Highlight color for the best feature-count point |
| | `--svm_error_noinfo_lty` | integer | `3` | no | Line type for the no-information baseline |
| | `--svm_error_label_cex` | numeric | `0.75` | no | Label size for the best-point annotation |
| | `--svm_error_label_pos` | integer | `4` | no | Label position for the best-point annotation |
| | `--svm_rank_top_n` | integer | `20` | no | Maximum number of ranked features shown in the ranking plot |
| | `--svm_rank_width` | numeric | `7` | no | Ranking plot width in inches |
| | `--svm_rank_height` | numeric | `6` | no | Ranking plot height in inches |
| | `--svm_rank_color` | character | `#2BA2DE` | no | Bar color for the ranking plot |
| | `--svm_rank_title` | character | `SVM-RFE Feature Ranking` | no | Title for the ranking plot |
## Input Format
### Expression Matrix
- CSV or TSV.
- First column: sample IDs.
- Remaining columns: numeric features.
- Samples must be rows.
- Missing or non-numeric feature values are not allowed.
Example:
```csv
sample,HIF1A,NR4A1,SOCS1
S1,6.21,-1.34,2.01
S2,6.57,0.37,3.62
S3,7.05,2.12,5.01
```
### Group File
- CSV or TSV.
- First column: sample IDs.
- One additional column must contain both the case and control labels.
- Exactly two groups are supported.
Example:
```csv
sample,group
S1,Case
S2,Case
S3,Control
```
## Output Files
| File | Format | Description |
|------|--------|-------------|
| `data/svm_result.rds` | RDS | Serialized SVM-RFE bundle with ranking results and metadata |
| `table/svm_rfe_features.csv` | CSV | Selected ranked features using the chosen feature-count rule |
| `table/svm_rfe_full_ranking.csv` | CSV | Full ranking table across all input features |
| `plot/svm_rfe_error_plot.pdf` | PDF | Cross-validated classification error across feature counts |
| `plot/svm_rfe_ranking_plot.pdf` | PDF | Bar plot of the highest-ranked SVM-RFE features |
| `session_info.txt` | TXT | R version, platform, and package version information |
## Error Handling
- Successful runs exit with status code `0`.
- Failed runs exit with status code `1`.
- Error messages use standardized names such as `SKILL_FILE_NOT_FOUND` and `SKILL_INVALID_PARAMETER`.
- Output paths are validated so that `--output_dir` cannot write outside the skill root.
- The analysis never performs network requests and never executes user input through `eval()`, `exec()`, or `system()`.
Common codes:
| Error Code | Meaning |
|------------|---------|
| `SKILL_FILE_NOT_FOUND` | An input file or required plot-only artifact does not exist |
| `SKILL_MISSING_COLUMNS` | The input file does not contain the required columns |
| `SKILL_EMPTY_DATA` | An input file is empty or a required ranking table is unavailable |
| `SKILL_INVALID_PARAMETER` | A CLI argument, group setting, numeric constraint, or path is invalid |
| `SKILL_SAMPLE_MISMATCH` | Sample IDs do not match between the expression matrix and group file |
| `SKILL_PACKAGE_NOT_FOUND` | One or more required CRAN packages are missing |
For detailed fixes, READ: `references/troubleshooting.md`
## Testing
### Help Check
```bash
Rscript scripts/main.R --help
```
### Full Test Run
```bash
Rscript tests/run_tests.R
```
### Direct Test Command
```bash
Rscript scripts/main.R \
--input_file tests/data/expression_matrix.csv \
--group_file tests/data/group_info.csv \
--case_group AR \
--control_group Control \
--output_dir tests/output/manual-test \
--seed 42 \
--svm_k 4 \
--svm_max_features_cap 6 \
--svm_rank_top_n 6 \
--timeout_seconds 300
```
No comments yet. Be the first to comment!