en un clic
mic-terms
// Skill for adding and validating ontology term annotations in the MIC knowledge base. Covers CHEBI, FOODON, HP, GO, MONDO, UBERON, HGNC lookups. Use when adding term bindings to nutrient YAML files.
// Skill for adding and validating ontology term annotations in the MIC knowledge base. Covers CHEBI, FOODON, HP, GO, MONDO, UBERON, HGNC lookups. Use when adding term bindings to nutrient YAML files.
Skill for analyzing and improving compliance in the MIC knowledge base. Use this when checking nutrient file completeness, identifying missing fields (ontology terms, evidence, descriptions), understanding weighted priority scoring, and systematically improving knowledge base coverage.
Skill for creating new nutrient YAML files from MIC website content. Use this when extracting a nutrient from lpi.oregonstate.edu/mic. Also useful for enhancing existing nutrient entries.
Skill for validating and repairing evidence references in the MIC knowledge base. Use this when working with evidence items in nutrient YAML files, validating that snippet text matches PubMed abstracts, and repairing misquoted evidence. Critical for ensuring scientific accuracy and preventing AI hallucinations.
| name | mic-terms |
| description | Skill for adding and validating ontology term annotations in the MIC knowledge base. Covers CHEBI, FOODON, HP, GO, MONDO, UBERON, HGNC lookups. Use when adding term bindings to nutrient YAML files. |
Add and validate ontology term references in the MIC nutrient knowledge base. This ensures nutrients, phenotypes, biological processes, diseases, foods, and genes are properly linked to authoritative ontology terms with correct IDs and labels.
nutrient_term to nutrient entries (uses CHEBI)phenotype_term to phenotype entries (uses HP)term to biological_processes entries (uses GO)disease_term to disease associations (uses MONDO)food_term to food sources (uses FOODON)term to genes entries (uses HGNC)| Entity Type | Ontology | OAK Adapter | Prefix |
|---|---|---|---|
| Nutrients | CHEBI | sqlite:obo:chebi | CHEBI: |
| Foods | FOODON | sqlite:obo:foodon | FOODON: |
| Phenotypes | HP | sqlite:obo:hp | HP: |
| Biological Processes | GO | sqlite:obo:go | GO: |
| Cellular Components | GO | sqlite:obo:go | GO: |
| Diseases | MONDO | sqlite:obo:mondo | MONDO: |
| Anatomy | UBERON | sqlite:obo:uberon | UBERON: |
| Genes | HGNC | sqlite:obo:hgnc | HGNC: |
All term references follow this YAML structure:
# For nutrients (CHEBI):
nutrient_term:
preferred_term: biotin
term:
id: CHEBI:15956
label: biotin
# For phenotypes (HP):
phenotype_term:
preferred_term: Dermatitis
term:
id: HP:0000964
label: Eczema
# For biological processes (GO):
biological_processes:
- preferred_term: fatty acid biosynthesis
term:
id: GO:0006633
label: fatty acid biosynthetic process
# For diseases (MONDO):
disease_term:
preferred_term: neural tube defect
term:
id: MONDO:0005343
label: neural tube defect
# For foods (FOODON):
food_term:
preferred_term: egg yolk
term:
id: FOODON:00002669
label: egg yolk
# For genes (HGNC):
genes:
- preferred_term: PC
description: Pyruvate carboxylase
term:
id: HGNC:8636
label: PC
uv run runoak -i sqlite:obo:chebi info "biotin"
# Returns: CHEBI:15956 ! biotin
uv run runoak -i sqlite:obo:hp info "l~cognitive impairment"
# Returns multiple matches - select the most appropriate
uv run runoak -i sqlite:obo:hp info "l^skin"
# Returns terms starting with "skin"
uv run runoak -i sqlite:obo:chebi info CHEBI:15956 -O obo
# Returns complete term information including definition
uv run runoak -i sqlite:obo:go info GO:0006633
# Returns: GO:0006633 ! fatty acid biosynthetic process
uv run runoak -i sqlite:obo:go relationships --direction both GO:0006633
# Shows parent and child terms
| Nutrient | CHEBI ID | Label |
|---|---|---|
| Biotin | CHEBI:15956 | biotin |
| Folate | CHEBI:27470 | folate |
| Vitamin C | CHEBI:29073 | ascorbic acid |
| Vitamin D | CHEBI:27300 | vitamin D |
| Vitamin E | CHEBI:18145 | vitamin E |
| Vitamin K | CHEBI:28384 | vitamin K |
| Thiamin | CHEBI:18385 | thiamine |
| Riboflavin | CHEBI:17015 | riboflavin |
| Niacin | CHEBI:15940 | nicotinic acid |
| Calcium | CHEBI:22984 | calcium(2+) |
| Iron | CHEBI:24875 | iron(2+) |
| Zinc | CHEBI:27363 | zinc(2+) |
| Magnesium | CHEBI:18420 | magnesium(2+) |
| Selenium | CHEBI:27568 | selenium atom |
Critical: Always use the most specific term that accurately describes the entity.
| Incorrect (too general) | Correct (specific) |
|---|---|
| HP:0000001 All | HP:0000964 Eczema |
| GO:0008150 biological_process | GO:0006633 fatty acid biosynthetic process |
| CHEBI:24431 chemical entity | CHEBI:15956 biotin |
When a fuzzy search returns multiple results:
-O obo flagjust validate kb/nutrients/vitamins/biotin.yaml
just validate-terms-file kb/nutrients/vitamins/biotin.yaml
This checks:
If validation reports a label mismatch:
LABEL MISMATCH: biotin.yaml
Term: HP:0000964
Expected: Eczema
Actual: Dermatitis
Update the label field to match the ontology's canonical label exactly.
To find entries missing term annotations:
import yaml
import glob
for f in glob.glob("kb/nutrients/**/*.yaml", recursive=True):
with open(f) as file:
data = yaml.safe_load(file)
# Check nutrient_term
nt = data.get('nutrient_term', {})
if not nt.get('term'):
print(f"{f}: missing nutrient_term.term")
# Check phenotypes
deficiency = data.get('deficiency', {})
for pheno in deficiency.get('phenotypes', []):
pt = pheno.get('phenotype_term', {})
if not pt.get('term'):
print(f"{f}: {pheno.get('name')} - missing phenotype_term.term")
uv run runoak -i sqlite:obo:chebi info "l~<nutrient name>"uv run runoak -i sqlite:obo:chebi info <CHEBI:ID> -O obonutrient_term:
preferred_term: <Original Name>
term:
id: <CHEBI:ID>
label: <Exact label from OAK>
just validate-terms-file kb/nutrients/...uv run runoak -i sqlite:obo:hp info "l~<phenotype>"phenotype_term: blockuv run runoak -i sqlite:obo:go info "l~<process>"term: block to the processinfo "l~<term>"-O oboThe ontology canonical label must be used. Common issues: