// Access NIH Metabolomics Workbench via REST API (4,200+ studies). Query metabolites, RefMet nomenclature, MS/NMR data, m/z searches, study metadata, for metabolomics and biomarker discovery.
| name | metabolomics-workbench-database |
| description | Access NIH Metabolomics Workbench via REST API (4,200+ studies). Query metabolites, RefMet nomenclature, MS/NMR data, m/z searches, study metadata, for metabolomics and biomarker discovery. |
The Metabolomics Workbench is a comprehensive NIH Common Fund-sponsored platform hosted at UCSD that serves as the primary repository for metabolomics research data. It provides programmatic access to over 4,200 processed studies (3,790+ publicly available), standardized metabolite nomenclature through RefMet, and powerful search capabilities across multiple analytical platforms (GC-MS, LC-MS, NMR).
This skill should be used when querying metabolite structures, accessing study data, standardizing nomenclature, performing mass spectrometry searches, or retrieving gene/protein-metabolite associations through the Metabolomics Workbench REST API.
Access comprehensive metabolite information including structures, identifiers, and cross-references to external databases.
Key operations:
Example queries:
import requests
# Get compound information by PubChem CID
response = requests.get('https://www.metabolomicsworkbench.org/rest/compound/pubchem_cid/5281365/all/json')
# Download molecular structure as PNG
response = requests.get('https://www.metabolomicsworkbench.org/rest/compound/regno/11/png')
# Get compound name by registry number
response = requests.get('https://www.metabolomicsworkbench.org/rest/compound/regno/11/name/json')
Query metabolomics studies by various criteria and retrieve complete experimental datasets.
Key operations:
Example queries:
# List all available public studies
response = requests.get('https://www.metabolomicsworkbench.org/rest/study/study_id/ST/available/json')
# Get study summary
response = requests.get('https://www.metabolomicsworkbench.org/rest/study/study_id/ST000001/summary/json')
# Retrieve experimental data
response = requests.get('https://www.metabolomicsworkbench.org/rest/study/study_id/ST000001/data/json')
# Find studies containing a specific metabolite
response = requests.get('https://www.metabolomicsworkbench.org/rest/study/refmet_name/Tyrosine/summary/json')
Use the RefMet database to standardize metabolite names and access systematic classification across four structural resolution levels.
Key operations:
Example queries:
# Standardize a metabolite name
response = requests.get('https://www.metabolomicsworkbench.org/rest/refmet/match/citrate/name/json')
# Query by molecular formula
response = requests.get('https://www.metabolomicsworkbench.org/rest/refmet/formula/C12H24O2/all/json')
# Get all metabolites in a specific class
response = requests.get('https://www.metabolomicsworkbench.org/rest/refmet/main_class/Fatty%20Acids/all/json')
# Retrieve complete RefMet database
response = requests.get('https://www.metabolomicsworkbench.org/rest/refmet/all/json')
Search for compounds by mass-to-charge ratio (m/z) with specified ion adducts and tolerance levels.
Key operations:
Example queries:
# Search by m/z value with M+H adduct
response = requests.get('https://www.metabolomicsworkbench.org/rest/moverz/MB/635.52/M+H/0.5/json')
# Calculate exact mass for a metabolite with specific adduct
response = requests.get('https://www.metabolomicsworkbench.org/rest/moverz/exactmass/PC(34:1)/M+H/json')
# Search across RefMet database
response = requests.get('https://www.metabolomicsworkbench.org/rest/moverz/REFMET/200.15/M-H/0.3/json')
Use the MetStat context to find studies matching specific experimental conditions.
Key operations:
Example queries:
# Find human blood studies on diabetes using LC-MS
response = requests.get('https://www.metabolomicsworkbench.org/rest/metstat/LCMS;POSITIVE;HILIC;Human;Blood;Diabetes/json')
# Find all human blood studies containing tyrosine
response = requests.get('https://www.metabolomicsworkbench.org/rest/metstat/;;;Human;Blood;;;Tyrosine/json')
# Filter by analytical method only
response = requests.get('https://www.metabolomicsworkbench.org/rest/metstat/GCMS;;;;;;/json')
Retrieve gene and protein data associated with metabolic pathways and metabolite metabolism.
Key operations:
Example queries:
# Get gene information by symbol
response = requests.get('https://www.metabolomicsworkbench.org/rest/gene/gene_symbol/ACACA/all/json')
# Retrieve protein data by UniProt ID
response = requests.get('https://www.metabolomicsworkbench.org/rest/protein/uniprot_id/Q13085/all/json')
To find all studies containing measurements of a specific metabolite:
First standardize the metabolite name using RefMet:
response = requests.get('https://www.metabolomicsworkbench.org/rest/refmet/match/glucose/name/json')
Use the standardized name to search for studies:
response = requests.get('https://www.metabolomicsworkbench.org/rest/study/refmet_name/Glucose/summary/json')
Retrieve experimental data from specific studies:
response = requests.get('https://www.metabolomicsworkbench.org/rest/study/study_id/ST000001/data/json')
To identify potential compounds from mass spectrometry m/z values:
Perform m/z search with appropriate adduct and tolerance:
response = requests.get('https://www.metabolomicsworkbench.org/rest/moverz/MB/180.06/M+H/0.5/json')
Review candidate compounds from results
Retrieve detailed information for candidate compounds:
response = requests.get('https://www.metabolomicsworkbench.org/rest/compound/regno/{regno}/all/json')
Download structures for confirmation:
response = requests.get('https://www.metabolomicsworkbench.org/rest/compound/regno/{regno}/png')
To find metabolomics studies for a specific disease and analytical platform:
Use MetStat to filter studies:
response = requests.get('https://www.metabolomicsworkbench.org/rest/metstat/LCMS;POSITIVE;;Human;;Cancer/json')
Review study IDs from results
Access detailed study information:
response = requests.get('https://www.metabolomicsworkbench.org/rest/study/study_id/ST{ID}/summary/json')
Retrieve complete experimental data:
response = requests.get('https://www.metabolomicsworkbench.org/rest/study/study_id/ST{ID}/data/json')
The API supports two primary output formats:
Specify format by appending /json or /txt to API URLs. When format is omitted, JSON is returned by default.
Use RefMet for standardization: Always standardize metabolite names through RefMet before searching studies to ensure consistent nomenclature
Specify appropriate adducts: When performing m/z searches, use the correct ion adduct type for your analytical method (e.g., M+H for positive mode ESI)
Set reasonable tolerances: Use appropriate mass tolerance values (typically 0.5 Da for low-resolution, 0.01 Da for high-resolution MS)
Cache reference data: Consider caching frequently used reference data (RefMet database, compound information) to minimize API calls
Handle pagination: For large result sets, be prepared to handle multiple data structures in responses
Validate identifiers: Cross-reference metabolite identifiers across multiple databases when possible to ensure correct compound identification
Detailed API reference documentation is available in references/api_reference.md, including:
Load this reference file when detailed API specifications are needed or when working with less common endpoints.