# Metabolic Marker Identification

> Use when after batch effect removal and sample integration, when you have a normalized feature-by-sample abundance matrix (finalData) with corresponding sample group labels (finalLabel), and need to identify which metabolites discriminate between biological conditions or phenotypes for focused.

- Skill: `holobiomicslab/metabolic-marker-identification` (Agent Skill)
- Install (CLI): `npx skillmds@latest add holobiomicslab/metabolic-marker-identification`
- Raw SKILL.md: https://api.skillmd.com/api/skills/holobiomicslab/metabolic-marker-identification/raw
- Safety review: PASS (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- License: CC-BY-4.0
- Author: HolobiomicsLab (https://skillmd.com/u/holobiomicslab)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/holobiomicslab/metabolic-marker-identification

---


# metabolic-marker-identification

## Summary

Identifies discriminative metabolic markers from feature-by-sample metabolomic data matrices using statistical and machine-learning strategies. This skill applies one of 13 methods (fold change, t-test, PLS-DA, random forest, SAM, etc.) to rank metabolites by their capacity to distinguish between sample groups, producing ranked marker tables for downstream annotation and pathway analysis.

## When to use

After batch effect removal and sample integration, when you have a normalized feature-by-sample abundance matrix (finalData) with corresponding sample group labels (finalLabel), and need to identify which metabolites best discriminate between biological conditions or phenotypes for focused annotation and validation.

## When NOT to use

- Input data has not undergone batch effect removal or is not normalized—markers identified will be confounded by technical artifacts rather than true biological signals.
- Sample group labels are missing or inconsistent in length with the number of data columns.
- Number of samples per group is very small (<3) and method requires robust statistical power (e.g., t-test, SAM)—results will have high false-discovery rate.

## Inputs

- finalData (feature-by-sample matrix: rows=metabolites/m/z features, columns=samples, values=normalized abundance intensities)
- finalLabel (vector of sample group assignments, length=ncol(finalData))

## Outputs

- MarkerResult object containing ranked marker table (e.g., FC_table with metabolite IDs, fold-change values, statistical ranks)
- Delimited marker file (CSV or TSV) with selected metabolites and their discriminative scores

## How to apply

Call Marker_Identify(finalData, finalLabel, method=<strategy>) where strategy is one of: 'FC' (fold change), 't-test', 'Wilcoxon', 'PLS-DA', 'OPLS-DA', 'SAM', 'CFS', 'Relief', 'RF-RFE', 'SVM-RFE', 'Chi-squared', 'entropy', or 'linear model/empirical Bayes'. The function computes discriminative scores (e.g., fold-change ratios, statistical p-values, feature importance ranks) between groups. Select method based on data distribution (parametric vs. non-parametric), sample size, and number of groups. The returned MarkerResult object contains a ranked table (e.g., FC_table) with metabolite identifiers, computed scores, and statistical rankings. Extract and filter the ranked table by appropriate thresholds (e.g., fold-change magnitude, adjusted p-value cutoff) before exporting as delimited file for downstream metabolite annotation.

## Related tools

- **LargeMetabo** (Implements Marker_Identify() function and houses 13 marker identification strategies; orchestrates entire metabolomic workflow from data integration through marker ranking.) — https://github.com/LargeMetabo/LargeMetabo
- **FSelector** (Provides correlation-based feature selection (CFS) and entropy-based filter methods for marker identification.)
- **e1071** (Supports SVM-RFE (support vector machine-recursive feature elimination) strategy.)
- **mixOmics** (Enables PLS-DA and OPLS-DA marker identification strategies.)
- **varSelRF** (Implements random forest-recursive feature elimination (RF-RFE) marker selection.)

## Examples

```
finalData <- MarkerData$finalData
finalLabel <- MarkerData$finalLabel
MarkerResult <- Marker_Identify(finalData, finalLabel, method="FC")
MarkerResult$FC_table[1:5,]
```

## Evaluation signals

- MarkerResult object is successfully instantiated and contains a non-empty ranked table with metabolite identifiers, computed scores (fold-change, p-values, or feature importance), and rank positions.
- Ranked table column schema matches expected output (e.g., FC_table contains m/z, metabolite ID, fold-change magnitude, adjusted p-value, and rank order).
- Selected markers show expected separation between sample groups in downstream sample separation plots (e.g., HCA, PCA, PLS-DA score plots)—marked metabolites cluster samples by group better than random features.
- Marker fold-change magnitudes and p-value distributions are consistent with method assumptions (e.g., fold-change scores are positive, p-values fall in [0,1], feature importance scores are normalized).
- Exported marker file is properly delimited (CSV/TSV) with consistent column count and no missing values in core columns.

## Limitations

- Performance depends heavily on method choice and data characteristics; no single method is optimal for all metabolomic datasets—parametric tests (t-test) assume normality; non-parametric tests (Wilcoxon, SAM) are robust but may sacrifice power in small samples.
- Markers identified reflect only group discrimination in the current cohort and may not generalize to independent validation cohorts without external validation.
- Multiple testing correction is applied within each method (e.g., FDR adjustment), but comparative performance across all 13 strategies is not systematically benchmarked in the README; practitioners must evaluate method suitability for their biological question.
- Fold-change alone (method='FC') does not account for statistical significance and can highlight spurious markers with large ratios but high variance; should be combined with p-value filtering post-hoc.

## Evidence

- [other] The Marker_Identify() function accepts finalData and finalLabel, returns MarkerResult with FC_table: "Call Marker_Identify(finalData, finalLabel, method='FC') to compute fold-change values between sample groups using the fold-change algorithm. 3. Extract and structure the resulting FC_table"
- [readme] 13 marker identification strategies are available in LargeMetabo: "In the marker identification step, there are 13 popular strategies to identify metabolic markers for the given dataset. These strategies include fold change (FC), partial least squares discrimination"
- [readme] Input data structure: feature-by-sample matrix with mass, retention time, intensity columns: "Before data integration, the csv files containing a feature-by-sample matrix should be prepared in advance. Each dataset (csv file) contains five essential columns providing the information of mass,"
- [other] Marker table is saved as delimited file after extraction: "Save the FC_table as a delimited file (CSV or TSV format)."
- [readme] Marker identification follows batch removal and precedes annotation: "After data integration, it was essential to remove the unwanted variations among different batches. There are four sample separation methods for visualizing the clustering and separation of different"

