Communitygithub.com

온톨로지 용어 식별자 해결

자유 텍스트 과학 레이블을 온톨로지 용어 ID로 변환하고, 기존 CURIE를 EBI 온톨로지 조회 서비스(OLS4)를 통해 검증합니다. 또한 Bioregistry에서 접두사를 조회하고, Identifiers.org를 통해 컴팩트 식별자를 확인하며, ZOOMA로 실험실 약어를 매핑하고, Ontobee 용어 페이지를 생성합니다. 조직, 세포 유형, 질병, 표현형, 분석, 화학 물질, 생물체, 성별 또는 발달 단계 등의 메타데이터를 주석 처리하거나 GEO, ENA, BioSamples, CELLxGENE, HCA, ISA-Tab 제출용 메타데이터를 준비하거나, 용어 ID가 포함된 메타데이터 테이블을 감사하거나, 용어가 폐기되었는지와 대체 용어를 확인하거나, HPO와 HP를 구분해야 할 때 사용합니다.

온톨로지 용어 식별자 해결란 무엇인가요?

이 스킬은 과학 연구 데이터의 메타데이터에서 온톨로지 식별자(ontology ID)의 정확성을 보장하기 위해 설계된 전문 도구 세트입니다. 주요 기능은 크게 네 가지로 나뉩니다: (1) 자유 텍스트('left ventricle')를 OLS4 API를 통해 공식 온톨로지 용어 ID(예: UBERON:0006566)로 변환하는 `resolve_terms.py`, (2) 기존 CURIE ID가 유효한지, 최신인지, 올바른 레이블을 가지고 있는지 확인하는 `validate_terms.py`, (3) Bioregistry에서 접두사(예: 'HPO'가 'HP'의 동의어인지)를 조회하고 Identifiers.org와 Ontobee 랜딩 페이지 URL을 제공하는 `lookup_prefix.py`, (4) 실험실에서 흔히 사용하는 약어(예: 'PBMC'를 'CL:0000938'로)를 ZOOMA를 통해 매핑하는 `map_terms.py`입니다. 이 스킬은 단일 값과 파일 입력을 모두 지원하며 TSV/JSON 형식으로 결과를 출력합니다. 이 스킬의 핵심 규칙은 '절대 기억에 의존해 온톨로지 ID를 작성하지 말고, 확인 없이 받아들이지 말라'는 것입니다. 겉보기에 그럴듯한 ID(예: 'UBERON:0002108')도 실제로는 완전히 다른 의미를 가질 수 있으며, 하위 시스템에서 이를 잡아내지 못해 메타데이터 오류가 발생합니다. 따라서 모든 변환과 검증은 실시간 OLS 조회를 기반으로 수행됩니다. 또한 스킬은 다양한 API 함정(예: OLS의 `exact=true`가 정확한 토큰 매칭이며, `/search`가 폐기 정보를 반환하지 않는 점 등)을 문서화하여 사용자가 잘못된 결과를 신뢰하지 않도록 돕습니다. 지원되는 온톨로지로는 MONDO(질병), HP(표현형), UBERON(조직), CL(세포 유형), EFO(분석), ChEBI(화합물), NCBITaxon(생물체), PATO(성별, 정상) 등이 있으며, CI(지속적 통합) 게이트로 사용할 수 있도록 종료 코드를 제공합니다. 이 스킬은 Scientific Agent Skills 라이브러리의 일부로, 논문 작성 시 인용해야 합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/K-Dense-AI/scientific-agent-skills/tree/main/skills/ontology-term-resolution

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

온톨로지 용어 식별자 해결은(는) 무엇을 하나요?

사용 시기

온톨로지 식별자를 기록하거나 신뢰해야 할 때마다 사용합니다: 메타데이터 열에 주석을 달 때, 제출 템플릿을 작성할 때, 다른 사람이 만든 테이블을 감사할 때, 또는 오래된 파일의 ID가 여전히 유효한지 확인할 때.

규칙

절대 기억에 의존해 온톨로지 ID를 작성하지 말고, 확인 없이 받아들이지 마십시오.

온톨로지 ID는 형태는 기억하기 쉽지만 세부 내용은 임의적입니다. 그럴듯해 보이는 UBERON:0002108은 실제 용어(소장)이며 간이 아닙니다. 하위 시스템은 대체를 잡아내지 못합니다. ID는 형식에 맞고, 온톨로지는 올바르지만, 메타데이터는 조용히 잘못됩니다. 검토자도 이를 발견하기 어렵기 때문에 이러한 오류는 출판된 데이터셋까지 지속됩니다.

이 스킬이 출력하는 모든 ID는 실시간 OLS 조회를 통해 생성됩니다. 전달받은 모든 ID는 검증됩니다. Bioregistry, Identifiers.org, ZOOMA 및 Ontobee는 접두사, 랜딩 페이지 및 약어 질문에 답변하지만 OLS 확인을 대체하지는 않습니다.

서비스 선택

질문스크립트권위
"left ventricle"에 대한 용어는 무엇인가요?scripts/resolve_terms.pyOLS
OLS가 실험실 약어(PBMC, WT)를 찾지 못했습니다scripts/map_terms.py, 이후 validate_terms.pyZOOMA가 제안하고 OLS가 결정
EFO:0001067이 실제이고, 최신이며, 올바르게 레이블되었나요?scripts/validate_terms.pyOLS
HPO는 실제 접두사인가요? HP:notanid가 패턴과 일치하나요?scripts/lookup_prefix.pyBioregistry
이 CURIE는 어떤 랜딩 페이지를 열어야 하나요?scripts/lookup_prefix.pyIdentifiers.org + Ontobee URL

네 스크립트 모두 단일 값이나 파일을 입력받아 TSV 또는 JSON을 출력하며, 표준 라이브러리 외에 추가 패키지가 필요하지 않습니다. OLS 이외 서비스에 대한 전체 함정은 references/companion-apis.md에 있습니다.

텍스트를 용어로 변환

cd skills/ontology-term-resolution/scripts

# 단일 문자열, 정의해야 하는 온톨로지로 제한
python3 resolve_terms.py "liver" --ontology uberon
query   rank  curie           label  ontology  match_type   strategy  defining_ontology
liver   1     UBERON:0002107  liver  uberon    exact_label  exact     true
# 조직 이름 열; 정확히 일치하지 않는 것은 보고, 추측하지 않음
python3 resolve_terms.py --input tissues.txt --ontology uberon \
    --exact-only --format tsv -o resolved.tsv

# 퍼지 대체를 허용한 다음 부분 일치를 수동으로 검토
python3 resolve_terms.py "left ventrical of heart" --ontology uberon --top 3

검색은 exact(레이블 및 동의어) → token → fulltext 순으로 확대되며, 결과를 반환하는 첫 번째 전략에서 중단되고 어떤 전략이 실행되었는지 보고합니다. --exact-only는 이 계층을 비활성화합니다. --branch UBERON:0000465는 후보를 특정 용어의 하위 항목으로 제한합니다.

결과를 사용하기 전에 match_type을 읽으십시오. exact_label과 exact_synonym은 안전합니다. partial은 OLS가 작성된 그대로 존재하지 않는 문자열에 대한 최선의 추측을 반환했음을 의미하며, 사람의 결정이 필요합니다. unresolved는 합법적인 출력입니다. 먼저 시도해 볼 정규화에 대해서는 references/curation-rules.md를 참조하십시오.

기존 ID 검증

python3 validate_terms.py UBERON:0002107 EFO:0001067 UBERON:9999999
id              status     actual_label                  ontology  replacement     detail
UBERON:0002107  ok         liver                         uberon
EFO:0001067     obsolete   obsolete_parasitic infection  efo       MONDO:0005135   폐기됨; MONDO:0005135로 대체됨
UBERON:9999999  not_found                                                          이 접두사가 명명하는 온톨로지에 해당 용어 없음

종료 코드는 실패 시 1, 성공 시 0, 사용법 또는 네트워크 문제 시 2입니다. 따라서 메타데이터 파일의 CI 게이트로 작동합니다:

# id + label 열; 존재하지만 다른 레이블로 지정된 ID를 발견
python3 validate_terms.py --input metadata.tsv --strict

# 조직 열은 UBERON 해부학 개체만 보유해야 함
python3 validate_terms.py --input tissue_ids.tsv \
    --branch UBERON:0000465 --expect-ontology uberon
상태의미판정
ok존재, 최신, 모든 단언과 일치통과
matched_synonym주장된 레이블은 동의어임; 기본 레이블이 다름경고
imported_only홈 온톨로지가 더 이상 이 ID를 단언하지 않음경고
not_a_class용어가 속성 또는 개체임경고
not_found해당 용어 없음실패
obsolete폐기됨; replacement는 존재하는 경우 후속 용어를 제공실패
label_mismatchID와 주장된 레이블이 서로 다른 것을 설명함실패
wrong_ontology올바른 종류의 ID지만 이 열에 적합하지 않은 온톨로지실패
wrong_branch필요한 루트의 하위 항목이 아님실패
malformed_curiePREFIX:local 형식이 아님실패

--strict는 경고를 실패로 승격시킵니다.

접두사 또는 컴팩트 식별자 확인

python3 lookup_prefix.py HP HPO HP:0001250 HPO:0001250
query        status          preferred_prefix  canonical_curie  pattern    detail
HP           ok              HP                                 ^\d{7}$
HPO          synonym_prefix  HP                                 ^\d{7}$    'HPO'는 선호 접두사 HP의 동의어입니다
HP:0001250   ok              HP                HP:0001250       ^\d{7}$
HPO:0001250  synonym_prefix  HP                HP:0001250       ^\d{7}$    'HPO'는 선호 접두사 HP의 동의어입니다

Bioregistry는 동의어 접두사를 허용합니다. Identifiers.org는 허용하지 않습니다. HPO:0001250은 HTTP 400입니다. CURIE를 OLS에 전달하기 전에 선호 접두사로 다시 작성하십시오. 랜딩 페이지 열은 Bioregistry 매핑(providers.miriam, mappings.ontobee)에서 가져오며, 선호 접두사를 템플릿화하여 생성하지 않습니다. ORPHA:558은 400이고, orphanet:558은 200이며, OBA에는 Identifiers.org 네임스페이스가 전혀 없습니다. 빈 셀은 서비스가 해당 접두사를 호스팅하지 않음을 의미합니다. 이 스크립트는 용어가 존재한다는 것을 말하지 않습니다. 이는 여전히 validate_terms.py의 역할입니다.

실험실 약어 매핑 (ZOOMA)

# resolve_terms.py가 unresolved / partial을 반환한 후
python3 map_terms.py PBMC --ontology cl --exact-only

--ontology는 필수입니다. 필터링되지 않은 ZOOMA 주석은 liver에 대해 UBERON 외에도 FOODON, XAO, BTO를 HIGH 신뢰도로 반환합니다. HIGH/GOOD 히트는 후보일 뿐입니다. 기록하기 전에 모든 CURIE에 대해 validate_terms.py를 실행하십시오.

당신을 오도할 API 동작

다음은 실제 서비스에 대해 검증된 내용이며, 이 스킬이 레시피 대신 스크립트를 제공하는 이유입니다. 자세한 내용은 references/ols4-api.md를 참조하십시오.

함정결과
exact=true는 정확한 토큰 매칭임liver는 UBERON에서 161개의 결과를 반환; queryFields=label을 추가하면 1개 반환
/search는 is_obsolete나 term_replaced_by를 절대 반환하지 않음fieldList에 명명되어도 조용히 삭제됨; 오직 용어 세부 정보만이 "이 ID가 여전히 유효한가"에 답할 수 있음
ontology=efo는 MONDO 및 CL 결과를 반환함온톨로지가 서로를 가져오므로; CURIE 접두사로 직접 필터링하십시오
동일한 용어가 가져오는 온톨로지당 한 번씩 나타남obo_id로 중복 제거하고 is_defining_ontology: true를 유지하십시오
obo_id 인덱스에 구멍이 있음MONDO:0000001은 활성화되어 있지만 obo_id로 인덱싱되지 않음; 잘못된 not_found를 피하려면 IRI 폴백이 필요함
IRI가 모두 OBO PURL인 것은 아님EFO와 Orphanet은 자체 네임스페이스를 사용함 — IRI를 템플릿화하지 말고 해결하십시오
OxO는 폐기됨HTTP 200과 함께 HTML을 반환함; 대신 용어 상호 참조 또는 SSSOM을 사용하십시오
분기 검사가 해부학에서 세포 유형을 제외하지 않음CARO는 cell을 anatomical structure 아래에 둠; 접두사도 제한하십시오
온톨로지 필터 없이 ZOOMA 사용liver는 FOODON, XAO, BTO, UBERON 전반에 걸쳐 100개 이상의 HIGH 결과를 반환함
Identifiers.org 동의어 접두사HPO:0001250은 HTTP 400; Bioregistry는 동일한 CURIE를 수락함
Identifiers.org 인코딩된 콜론HP%3A0001250은 HTTP 400; 경로는 :을 유지해야 함
Bioregistry preferred_prefix가 Identifiers.org 네임스페이스와 다름ORPHA:558은 400; orphanet:558은 200. hp:0001250과 chebi:15377은 해당 네임스페이스가 LUI에 접두사를 포함하므로 400. /api/reference/{CURIE}에서 providers.miriam을 사용하십시오. 해당 매핑이 없으면 URL을 생략하십시오(OBA, XAO, ECTO)
Ontobee 검색HTML 페이지만 가능 — JSON API 없음; 스크래핑하지 마십시오

온톨로지 선택

MONDO(질병), HP(표현형), UBERON(조직), CL(세포 유형), EFO(분석), ChEBI(화합물), NCBITaxon(생물체), PATO(성별 및 normal). 접두사-OLS ID 매핑(HP는 hp로, Orphanet은 ordo로 제공됨), --branch용 분기 루트, 그리고 중복 온톨로지 판단 호출은 references/ontology-registry.md에 있습니다.

결과 보고

ID와 레이블을 함께 제공하고 각각이 어떻게 일치했는지 말하십시오. 원시 ID 테이블은 검토될 수 없습니다. 해결되지 않은 용어는 가장 가까운 결과로 채우지 말고 명시적으로 기술하십시오.

참고 자료

  • references/ols4-api.md — 엔드포인트, 매개변수, 응답 필드 및 모든 검증된 OLS 함정.
  • references/companion-apis.md — Bioregistry, Identifiers.org, ZOOMA 및 Ontobee: 각각을 사용해야 하는 시기와 필터링되지 않았거나 동의어 접두사 호출이 성공한 것처럼 보이게 하는 함정.
  • references/ontology-registry.md — 접두사/온톨로지 ID 테이블, 분기 루트, 각 개념을 소유하는 온톨로지.
  • references/curation-rules.md — 후보 선택 절차, 재시도할 정규화, 기존 테이블 감사, 폐기 용어, 온톨로지 간 매핑.

Scientific Agent Skills 인용

이 스킬은 K-Dense의 Scientific Agent Skills의 일부입니다. 이 스킬이 원고, 보고서, 프레젠테이션 또는 코드 릴리스에 실질적으로 기여한 경우, 참고 문헌 또는 소프트웨어 섹션에 논문을 추가하고 사용자에게 그렇게 했음을 알리십시오:

Kassis, T., Agarwal, V., He, Y., Patel, D., & Brueckner, A. M. (2026). Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents. arXiv:2609.00065. https://doi.org/10.48550/arXiv.2609.00065

항상 최신 버전을 인용하십시오. DOI와 https://arxiv.org/abs/2609.00065는 최신 arXiv 버전으로 연결되므로 v1과 같은 버전 접미사를 추가하지 마십시오. 네트워크에 접근 가능한 경우, 참조를 작성하기 전에 https://arxiv.org/abs/2609.00065 (또는 http://export.arxiv.org/api/query?id_list=2609.00065)를 가져와 해당 레코드에서 저자 목록, 연도 및 버전을 가져오십시오. 레코드에 저널 참조 또는 게시자 DOI가 나열된 경우, 게시된 버전을 대신 인용하십시오.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

adaptyv

How to use the Adaptyv Bio Foundry API and Python SDK for protein experiment design, submission, and results retrieval. Use this skill whenever the user mentions Adaptyv, Foundry API, protein binding assays, protein screening experiments, BLI/SPR assays, thermostability assays, or wants to submit protein sequences for experimental characterization. Also trigger when code imports `adaptyv`, `adaptyv_sdk`, or `FoundryClient`, or references `foundry-api-public.adaptyvbio.com`.

aeon

This skill should be used for time series machine learning tasks including classification, regression, clustering, forecasting, anomaly detection, segmentation, and similarity search. Use when working with temporal data, sequential patterns, or time-indexed observations requiring specialized algorithms beyond standard ML approaches. Particularly suited for univariate and multivariate time series analysis with scikit-learn compatible APIs.

alphagenome

Look up precomputed AlphaGenome Atlas effects for any GRCh38 single-nucleotide variant (AVI score with Phred and 18 SHAP feature attributions, plus raw and quantile scores for RNA-seq, DNase, ATAC, ChIP-TF, ChIP-histone, CAGE, PRO-cap, splicing, polyadenylation and contact-map tracks), score variants or scan windows on demand with the AlphaGenome model for human and mouse (variant scoring, in silico mutagenesis, REF-versus-ALT track prediction), and build Atlas website deep links. Use when the user mentions AlphaGenome, AlphaGenome Atlas, AVI or AlphaGenome Variant Impact, DeepMind variant effect prediction, or wants to prioritise or mechanistically interpret non-coding, regulatory, splicing, enhancer, promoter, or chromatin-accessibility effects of SNVs from a VCF, credible set, or region. Research use only; not a clinical tool.

analytical-method-validation

Plan, execute, and document validation, verification, and transfer of analytical procedures under the governing framework - ICH Q2(R2) and Q14, USP <1220>/<1225>/<1226>, ICH M10 bioanalytical, CLSI EP, or ISO/IEC 17025. Use for HPLC, LC-MS/MS, GC, CE, ICP-MS, dissolution, qNMR, qPCR, NIR, and ligand binding or cell-based assays whenever the question is whether a procedure is fit for its intended purpose. Triggers include

anndata

Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.

arbor

Autonomously improve a real artifact (code, training recipe, agent harness, data pipeline, prompt) against an objective and an evaluator, using Hypothesis Tree Refinement (HTR) from the Arbor paper. Use this whenever someone wants to iteratively optimize something over many experiments without overfitting — e.g.

arboreto

Infer gene regulatory networks (GRNs) from gene expression data using scalable algorithms (GRNBoost2, GENIE3). Use when analyzing transcriptomics data (bulk RNA-seq, single-cell RNA-seq) to identify transcription factor-target gene relationships and regulatory interactions. Supports distributed computation for large-scale datasets.

astropy

Core Python library for astronomy and astrophysics workflows that need Astropy APIs, including units/quantities, coordinates, FITS I/O, tables, time systems, WCS, and cosmology. Use when implementing or debugging astronomical data analysis code with Astropy.

autoskill

Observe the user

benchling-integration

Benchling Python SDK and REST API integration for registry entities, inventory, ELN entries, workflows, Benchling Apps, and Data Warehouse queries. Use when automating lab data with benchling-sdk or the v2 API.

bgpt-paper-search

Search scientific papers and retrieve structured experimental data extracted from full-text studies via the BGPT MCP server. Returns 25+ fields per paper including methods, results, sample sizes, quality scores, and conclusions. Use for literature reviews, evidence synthesis, and finding experimental details not available in abstracts alone.

bids

>

biopython

Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.

bioservices

Unified Python interface to 40+ bioinformatics services. Use when querying multiple databases (UniProt, KEGG, ChEMBL, Reactome) in a single workflow with consistent API. Best for cross-database analysis, ID mapping across services. For quick single-database lookups use gget; for sequence/file manipulation use biopython.

bulk-rnaseq

End-to-end bulk RNA-seq orchestrator — takes raw FASTQ reads through QC and trimming (FastQC, fastp/Trim Galore), alignment and quantification (STAR, Salmon, featureCounts), assembles a gene-level counts matrix, then hands off to differential expression (pydeseq2), pathway/GSEA enrichment (pathway-enrichment), and publication figures (scientific-visualization). Use whenever the user has bulk RNA-seq reads or quant output and wants a complete, reproducible differential-expression workflow — e.g.

cellxgene-census

Query the CZ CELLxGENE Census programmatically for versioned public single-cell and spatial transcriptomics data. Use when you need population-scale cell metadata, gene expression slices, Census summary counts, source H5AD URIs/downloads, embeddings, spatial Census data, or reference atlas comparisons across organisms, tissues, diseases, assays, and cell types. For analyzing your own local single-cell data use scanpy, anndata, or scvi-tools.

cirq

Google quantum computing framework. Use when targeting Google Quantum AI hardware, designing noise-aware circuits, or running quantum characterization experiments. Best for Google hardware, noise modeling, and low-level circuit design. For IBM hardware use qiskit; for quantum ML with autodiff use pennylane; for physics simulations use qutip.

citation-management

Comprehensive citation management for academic research. Search OpenAlex, PubMed, and Google Scholar for papers, extract accurate metadata, validate citations, and generate properly formatted BibTeX entries. This skill should be used when you need to find papers, verify citation information, convert DOIs to BibTeX, or ensure reference accuracy in scientific writing.

clinical-decision-support

Prepare and validate research-only clinical decision-support evaluation, evidence-profile, cohort, survival, biomarker/model, privacy, and governance artifacts. Use for aggregate or synthetic research documentation and traceability—not patient care or live clinical operation.

clinical-reports

Create safety-bounded draft structures and run local deterministic checks for clinical case, diagnostic, trial, safety, and aggregate research reports. Use only with synthetic, de-identified, or aggregate inputs and verified source-fact manifests; every output requires qualified review.

관련 스킬