Install Elastic Net Feature Selection
Pick your agent. Every command is ready to paste.
npx skills add aipoch/medical-research-skills --skill elastic-net-feature-selectionThe open skills CLI detects your agents (Claude Code, Cursor, Codex and 70+ more) and installs to the right folder. Add -g to install globally.
01
Install it
Run the command above, or upload the folder in Claude.
02
Ask naturally
Describe the task. Your agent loads elastic-net-feature-selection when the request matches its description.
03
Name it if needed
If it does not trigger, say “use the elastic-net-feature-selection skill”. In Codex, type $elastic-net-feature-selection.
The skill itself
SKILL.md
Elastic Net Feature Selection
When to Use
- Use this skill for binary case-vs-control classification on bulk expression matrices.
- Use it when you need elastic net logistic regression feature selection, coefficient paths, and
cv.glmnet-based lambda selection. - Use custom labels such as
TumorandNormalonly when the group file still contains exactly two outcome levels.
Out of Scope
- Survival or Cox modeling
- Multiclass outcomes
- Single-cell data
- Non-expression tables
Out-of-scope enforcement:
- If the group file contains any label outside the requested
case_groupandcontrol_group, the command stops withSKILL_INVALID_DATAinstead of silently dropping samples. - If either requested class is missing after validation, the command stops with
SKILL_INVALID_DATA.
When to Read External Files
| Situation | File to Read | Purpose |
|---|---|---|
| Need to understand alpha, lambda choice, or feature-selection behavior | references/algorithm.md |
Elastic net logistic regression, penalty mixing, cross-validation, and coefficient selection assumptions |
| Need the authoritative executable entrypoint | scripts/main.R |
Run: Rscript scripts/main.R --input_file ... --group_file ... --output_dir ... |
| Need parameter examples, smoke-test commands, or recorded local runs | references/cli-guide.md |
Verified CLI examples for normal runs, conservative runs, and test-data runs |
| Need bundled sample inputs for a first run or regression test | tests/data/ |
Sample expression matrix, group file, and feature list |
| Encounter errors, warnings, or timeout issues | references/troubleshooting.md |
Common failures, console warning interpretation, and recovery steps |
Usage
Rscript scripts/main.R \
--input_file ./expression_matrix.csv \
--group_file ./groups.csv \
--feature_file ./genes.csv \
--case_group case \
--control_group control \
--alpha auto \
--alpha_grid 0,0.25,0.5,0.75,1 \
--nfolds 5 \
--lambda_choice lambda.min \
--standardize TRUE \
--timeout_seconds 600 \
--output_dir ./output/ \
--seed 42
Arguments
| Short | Long | Type | Default | Description |
|---|---|---|---|---|
-i |
--input_file |
character | required | Expression matrix file (genes as rows, samples as columns) |
-g |
--group_file |
character | required | Group information file with sample and group columns |
-f |
--feature_file |
character | NULL |
Optional feature list file; if omitted, all matrix rows are used |
-c |
--case_group |
character | case |
Positive class label in the group file |
-d |
--control_group |
character | control |
Negative class label in the group file |
-a |
--alpha |
character | 0.5 |
Elastic net mixing parameter: numeric 0-1, or auto for CV-based selection |
--alpha_grid |
character | 0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1 |
Comma-separated alpha candidates evaluated when alpha=auto |
|
-n |
--nfolds |
integer | 5 |
Cross-validation fold count; automatically reduced if a class has fewer samples |
-l |
--lambda_choice |
character | lambda.min |
Coefficient extraction rule: lambda.min or lambda.1se |
-z |
--standardize |
logical | TRUE |
Standardize features inside glmnet |
-t |
--timeout_seconds |
integer | 600 |
Elapsed timeout limit in seconds |
-o |
--output_dir |
character | ./output/ |
Output directory |
-s |
--seed |
integer | 42 |
Random seed for reproducibility |
Input Format
Expression Matrix (input_file)
Genes as rows, samples as columns, CSV format with gene IDs in the first column.
,Sample01,Sample02,Sample03
TNMD,0.0349,0.0533,1.3889
DPM1,4.8627,5.4208,5.6370
Group File (group_file)
CSV with sample IDs and binary group labels.
sample,group
Sample01,case
Sample02,control
Sample03,case
Feature File (feature_file)
Optional plain text or single-column CSV file with one feature per line.
TNMD
DPM1
SCYL3
Output Files
| File | Description |
|---|---|
alpha_tuning.csv |
Cross-validated performance summary for each alpha candidate |
model_coefficients.csv |
Coefficients at the selected lambda, including intercept |
selected_features.csv |
Sparse selected features sorted by absolute effect size; written empty when the chosen alpha is 0 (ridge) |
feature_matrix.csv |
Sample-by-feature analysis matrix used for model fitting |
coefficient_path.pdf |
Coefficient trajectory plot across lambda values |
cv_curve.pdf |
Cross-validation error curve with lambda.min and lambda.1se |
session_info.txt |
R session and package version info |
Workflow
Step 1: Validate Input
- WHEN preparing input files for a first run or regression test, READ:
tests/data/ - Check file existence
- Reject empty input files
- Detect sample and group columns in the group file
- Reject group files that contain labels outside the requested binary comparison
- Validate sample matching between expression matrix and group file
Step 2: Prepare Modeling Matrix
- Restrict samples to the requested case and control groups
- Intersect the optional feature list with matrix row names
- Build a sample-by-feature numeric matrix for
glmnet - Drop zero-variance features before modeling
Step 3: Run Elastic Net
- WHEN deciding between
alpha,lambda.min, andlambda.1se, READ:references/algorithm.md - If
alpha=auto, evaluate the candidatealpha_gridwith the same cross-validation folds - Fit the regularization path with
glmnet - Run
cv.glmnetto estimate the optimal lambda - Extract coefficients at
lambda.minorlambda.1se - Apply runtime timeout and capture non-fatal warnings
Step 4: Export Results
- WHEN you need exact invocation patterns or output inspection commands, READ:
references/cli-guide.md - Save tuning tables and selected features
- Generate coefficient path and cross-validation plots
- Record session information for reproducibility
Methods
Elastic Net Logistic Regression
Elastic net combines lasso (L1) and ridge (L2) penalties through alpha, enabling sparse feature selection while stabilizing correlated predictors.
Cross-Validation
cv.glmnet evaluates the lambda path and reports both lambda.min and the more conservative lambda.1se.
Automatic Alpha Selection
When alpha=auto, the skill reuses the same cross-validation folds across all values in alpha_grid, compares the minimum cross-validated error for each candidate, and selects the best alpha before reporting coefficients and lambda-based outputs.
If the chosen alpha is 0, the model is ridge rather than sparse elastic net. In that case, selected_features.csv is written empty to avoid mislabeling dense ridge coefficients as selected features; use model_coefficients.csv for coefficient ranking instead.
Feature Selection Rule
Selected features are the coefficients whose absolute value exceeds a small numerical tolerance at the chosen lambda, excluding the intercept term.
If the chosen alpha is 0, the workflow writes an empty selected_features.csv because ridge coefficients are dense by design and should not be mislabeled as sparse selected features.
Examples
Recommended First Run
Rscript scripts/main.R \
-i expression_matrix.csv \
-g groups.csv \
-f genes.csv \
-a auto \
--alpha_grid 0,0.25,0.5,0.75,1 \
-o output/first_run
Fixed-Alpha Baseline
Rscript scripts/main.R \
-i expression_matrix.csv \
-g groups.csv \
-f genes.csv \
-a 0.5 \
-o output/fixed_alpha
More Conservative Selection
Rscript scripts/main.R \
-i expression_matrix.csv \
-g groups.csv \
-l lambda.1se \
-o output/lambda_1se
Error Handling
Common Errors
| Error | Cause | Solution | Read More |
|---|---|---|---|
SKILL_FILE_NOT_FOUND |
Input file does not exist | Check file path and permissions | references/troubleshooting.md#skill_file_not_found |
SKILL_EMPTY_DATA |
Input file exists but is empty | Re-export the input file with data rows | references/troubleshooting.md#skill_empty_data |
SKILL_MISSING_COLUMNS |
Group file lacks sample/group columns | Verify the group file structure | references/troubleshooting.md#skill_missing_columns |
SKILL_SAMPLE_MISMATCH |
Sample IDs do not overlap between files | Ensure matrix column names match the group file | references/troubleshooting.md#skill_sample_mismatch |
SKILL_INVALID_PARAMETER |
CLI parameter is invalid | Check allowed values and ranges | references/troubleshooting.md#skill_invalid_parameter |
SKILL_INVALID_DATA |
Too few samples or usable features remain | Review filtering choices and input data | references/troubleshooting.md#skill_invalid_data |
SKILL_DEPENDENCY_MISSING |
Required R package is not installed | Install missing packages before rerunning | references/troubleshooting.md#skill_dependency_missing |
SKILL_PKG_VERSION |
Installed package is too old | Upgrade the required package | references/troubleshooting.md#skill_pkg_version |
SKILL_TIMEOUT |
Run exceeded the configured time limit | Increase timeout_seconds or reduce data size |
references/troubleshooting.md#skill_timeout |
SKILL_RUNTIME_ERROR |
An unexpected runtime or output-write failure occurred | Check output path permissions, free space, and the last console message | references/troubleshooting.md#skill_runtime_error |
IF error persists, READ: references/troubleshooting.md
Testing
Test with Sample Data
# Check help
Rscript scripts/main.R --help
# Run with bundled test data
Rscript scripts/main.R \
-i tests/data/expression_matrix.csv \
-g tests/data/groups.csv \
-f tests/data/genes.csv \
-a auto \
--alpha_grid 0,0.5,1 \
-o tests/output \
-n 5 \
-t 600
Validation Commands
# Inspect selected features (may be header-only if auto-alpha selects ridge)
cat tests/output/selected_features.csv
# Check plots exist
ls -la tests/output
Implementation Checklist
- CLI parsing with
optparse -
set.seed()for reproducibility -
requireNamespace()dependency checks - Runtime package loading with
library() - Session info recording
- Timeout control with
setTimeLimit() - Console warning handling
- Out-of-scope label enforcement
-
gc()snapshot reporting - File reading instructions in
SKILL.md - Modular script structure
- Test data provided
- Error handling with
SKILL_*codes - Scripts in
scripts/directory - References in
references/directory
Last updated: 2026-04-20 | Version: 1.0.0
Tips for Elastic Net Feature Selection
- • Start a fresh session after installing so your agent picks up the new skill.
- • It bundles reference files. The agent reads them only when needed, so they cost no context until then.
- • It is part of a pack with 40 skills. Install only the ones you need with --skill to keep triggers precise.
- • If two skills overlap, mention the one you want by name.
Questions about Elastic Net Feature Selection
What does the Elastic Net Feature Selection skill do?
Use when selecting predictive genes or other molecular features from bulk expression matrices for binary case-vs-control classification with elastic net logistic regression, including coefficient path and cross-validation plots. Trigger keywords: elastic net, glmnet, feature selection, binary classification, lambda.min, lambda.1se. NOT for: survival/Cox modeling, multiclass outcomes, single-cell data, or non-expression tables.
How do I install Elastic Net Feature Selection?
Run "npx skills add aipoch/medical-research-skills --skill elastic-net-feature-selection" in your project. The skills CLI installs it for Claude Code, Cursor, Codex and 70+ other agents. In Claude on the web, upload the skill folder as a ZIP under Customize > Skills.
Does Elastic Net Feature Selection work in Cursor and Codex?
Yes. Elastic Net Feature Selection uses the open SKILL.md format, so it works in Claude Code, Claude, Cursor, OpenAI Codex, Gemini CLI, GitHub Copilot and other agents that support agent skills.
Is Elastic Net Feature Selection free?
Elastic Net Feature Selection is open source on GitHub under the MIT license. It is free to install; check the license before commercial use.
Who made Elastic Net Feature Selection?
Elastic Net Feature Selection is published by aipoch in the aipoch/medical-research-skills repository, together with 39 other skills.

