tooluniverse-cancer-variant-interpretation
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCancer Variant Interpretation for Precision Oncology
精准肿瘤学的癌症变异解读
Comprehensive clinical interpretation of somatic mutations in cancer. Transforms a gene + variant input into an actionable precision oncology report covering clinical evidence, therapeutic options, resistance mechanisms, clinical trials, and prognostic implications.
KEY PRINCIPLES:
- Report-first approach - Create report file FIRST, then populate progressively
- Evidence-graded - Every recommendation has an evidence tier (T1-T4)
- Actionable output - Prioritized treatment options, not data dumps
- Clinical focus - Answer "what should we treat with?" not "what databases exist?"
- Resistance-aware - Always check for known resistance mechanisms
- Cancer-type specific - Tailor all recommendations to the patient's cancer type when provided
- Source-referenced - Every statement must cite the tool/database source
- English-first queries - Always use English terms in tool calls (gene names, drug names, cancer types), even if the user writes in another language. Respond in the user's language
提供癌症体细胞突变的全面临床解读。将基因+变异输入转换为可行的精准肿瘤学报告,涵盖临床证据、治疗方案、耐药机制、临床试验及预后意义。
核心原则:
- 报告优先原则 - 先创建报告文件,再逐步填充内容
- 证据分级 - 每项建议均对应证据等级(T1-T4)
- 可行输出 - 优先推荐治疗方案,而非数据堆砌
- 临床聚焦 - 回答“应采用何种治疗?”而非“有哪些数据库?”
- 耐药性关注 - 始终检查已知耐药机制
- 癌症类型特异性 - 若提供癌症类型,所有建议均需适配患者的癌症类型
- 来源引用 - 所有陈述必须标注工具/数据库来源
- 英文优先查询 - 工具调用时始终使用英文术语(基因名、药物名、癌症类型),即使用户使用其他语言提问,仍需以用户使用的语言回复
When to Use
使用场景
Apply when user asks:
- "What treatments exist for EGFR L858R in lung cancer?"
- "Patient has BRAF V600E melanoma - what are the options?"
- "Is KRAS G12C targetable?"
- "Patient progressed on osimertinib - what's next?"
- "What clinical trials are available for PIK3CA E545K?"
- "Interpret this somatic mutation: TP53 R273H"
- "Molecular tumor board: EGFR exon 19 deletion, NSCLC"
适用于用户询问以下问题时:
- "肺癌中EGFR L858R的可用治疗方案有哪些?"
- "患者患有BRAF V600E黑色素瘤,有哪些治疗选择?"
- "KRAS G12C是否可作为治疗靶点?"
- "患者使用奥希替尼后进展,下一步该如何处理?"
- "PIK3CA E545K有哪些可用的临床试验?"
- "解读该体细胞突变:TP53 R273H"
- "分子肿瘤委员会讨论:EGFR 19号外显子缺失,非小细胞肺癌"
Input Parsing
输入解析
Required: Gene symbol + variant notation
Optional: Cancer type (improves specificity)
必填项: 基因符号 + 变异表示法
可选项: 癌症类型(提升结果特异性)
Accepted Input Formats
支持的输入格式
| Format | Example | How to Parse |
|---|---|---|
| Gene + amino acid change | EGFR L858R | gene=EGFR, variant=L858R |
| Gene + HGVS protein | BRAF p.V600E | gene=BRAF, variant=V600E |
| Gene + exon notation | EGFR exon 19 deletion | gene=EGFR, variant=exon 19 deletion |
| Gene + fusion | EML4-ALK fusion | gene=ALK, variant=EML4-ALK |
| Gene + amplification | HER2 amplification | gene=ERBB2, variant=amplification |
| Full query with cancer | "EGFR L858R in lung adenocarcinoma" | gene=EGFR, variant=L858R, cancer=lung adenocarcinoma |
| 格式 | 示例 | 解析方式 |
|---|---|---|
| 基因+氨基酸改变 | EGFR L858R | gene=EGFR, variant=L858R |
| 基因+HGVS蛋白表示 | BRAF p.V600E | gene=BRAF, variant=V600E |
| 基因+外显子表示 | EGFR exon 19 deletion | gene=EGFR, variant=exon 19 deletion |
| 基因+融合突变 | EML4-ALK fusion | gene=ALK, variant=EML4-ALK |
| 基因+扩增 | HER2 amplification | gene=ERBB2, variant=amplification |
| 包含癌症类型的完整查询 | "EGFR L858R in lung adenocarcinoma" | gene=EGFR, variant=L858R, cancer=肺腺癌 |
Gene Symbol Normalization
基因符号标准化
Common aliases to resolve:
- HER2 -> ERBB2
- ALK -> ALK (but EML4-ALK is a fusion)
- PD-L1 -> CD274
- VEGF -> VEGFA
需解析的常见别名:
- HER2 -> ERBB2
- ALK -> ALK(但EML4-ALK为融合突变)
- PD-L1 -> CD274
- VEGF -> VEGFA
Phase 0: Tool Parameter Verification (CRITICAL)
阶段0:工具参数验证(至关重要)
BEFORE calling ANY tool for the first time, verify its parameters.
首次调用任何工具之前,务必验证其参数。
Known Parameter Corrections
已知参数修正
| Tool | WRONG Parameter | CORRECT Parameter |
|---|---|---|
| | |
| | |
| | |
| | |
| | |
| | |
| any 3 params | ALL 4 required: |
| | |
| no species | |
| 工具 | 错误参数 | 正确参数 |
|---|---|---|
| | |
| | |
| | |
| | |
| | |
| | |
| 任意3个参数 | 全部4个必填: |
| | |
| 无物种参数 | |
Workflow Overview
工作流概述
Input: Gene symbol + Variant notation + Optional cancer type
Phase 1: Gene Disambiguation & ID Resolution
- Resolve gene to Ensembl ID, UniProt accession, Entrez ID
- Get gene function, pathways, protein domains
- Identify cancer type EFO ID (if cancer type provided)
Phase 2: Clinical Variant Evidence (CIViC)
- Find gene in CIViC (via Entrez ID matching)
- Get all variants for the gene
- Match specific variant
- Retrieve evidence items (predictive, prognostic, diagnostic)
- Get CIViC assertions
Phase 3: Mutation Prevalence (cBioPortal)
- Frequency across cancer studies
- Co-occurring mutations
- Cancer type distribution
Phase 4: Therapeutic Associations (OpenTargets + ChEMBL + FDA + DrugBank)
- FDA-approved targeted therapies
- Clinical trial drugs (phase 2-3)
- Drug mechanisms of action
- Drug label information
- Combination therapies
Phase 5: Resistance Mechanisms
- Known resistance variants (CIViC, literature)
- Bypass pathway analysis (Reactome)
- Secondary mutations
Phase 6: Clinical Trials
- Active trials recruiting for this mutation
- Trial phase and status
- Eligibility criteria
Phase 7: Prognostic Impact & Pathway Context
- Survival associations (literature)
- Pathway context (Reactome)
- Expression data (GTEx)
- Literature evidence (PubMed)
Phase 8: Report Synthesis
- Executive summary
- Clinical actionability score
- Treatment recommendations (prioritized)
- Completeness checklistInput: Gene symbol + Variant notation + Optional cancer type
Phase 1: Gene Disambiguation & ID Resolution
- Resolve gene to Ensembl ID, UniProt accession, Entrez ID
- Get gene function, pathways, protein domains
- Identify cancer type EFO ID (if cancer type provided)
Phase 2: Clinical Variant Evidence (CIViC)
- Find gene in CIViC (via Entrez ID matching)
- Get all variants for the gene
- Match specific variant
- Retrieve evidence items (predictive, prognostic, diagnostic)
- Get CIViC assertions
Phase 3: Mutation Prevalence (cBioPortal)
- Frequency across cancer studies
- Co-occurring mutations
- Cancer type distribution
Phase 4: Therapeutic Associations (OpenTargets + ChEMBL + FDA + DrugBank)
- FDA-approved targeted therapies
- Clinical trial drugs (phase 2-3)
- Drug mechanisms of action
- Drug label information
- Combination therapies
Phase 5: Resistance Mechanisms
- Known resistance variants (CIViC, literature)
- Bypass pathway analysis (Reactome)
- Secondary mutations
Phase 6: Clinical Trials
- Active trials recruiting for this mutation
- Trial phase and status
- Eligibility criteria
Phase 7: Prognostic Impact & Pathway Context
- Survival associations (literature)
- Pathway context (Reactome)
- Expression data (GTEx)
- Literature evidence (PubMed)
Phase 8: Report Synthesis
- Executive summary
- Clinical actionability score
- Treatment recommendations (prioritized)
- Completeness checklistPhase 1: Gene Disambiguation & ID Resolution
阶段1:基因消歧与ID解析
Goal: Resolve gene symbol to all cross-database identifiers needed for downstream queries.
目标: 将基因符号解析为下游查询所需的跨数据库标识符。
1.1 MyGene ID Resolution (PRIMARY)
1.1 MyGene ID解析(主要方式)
python
def resolve_gene_ids(tu, gene_symbol):
"""Resolve gene symbol to Ensembl, Entrez, UniProt IDs."""
result = tu.tools.MyGene_query_genes(query=gene_symbol, species='human')
hits = result.get('hits', [])
# Take the top hit where symbol matches exactly
gene_hit = None
for hit in hits:
if hit.get('symbol', '').upper() == gene_symbol.upper():
gene_hit = hit
break
if not gene_hit and hits:
gene_hit = hits[0]
ids = {
'symbol': gene_hit.get('symbol'),
'entrez_id': gene_hit.get('entrezgene'),
'ensembl_id': gene_hit.get('ensembl', {}).get('gene'),
'name': gene_hit.get('name'),
}
return idsResponse structure:
{took, total, max_score, hits: [{_id, _score, ensembl: {gene}, entrezgene, name, symbol}]}python
def resolve_gene_ids(tu, gene_symbol):
"""Resolve gene symbol to Ensembl, Entrez, UniProt IDs."""
result = tu.tools.MyGene_query_genes(query=gene_symbol, species='human')
hits = result.get('hits', [])
# Take the top hit where symbol matches exactly
gene_hit = None
for hit in hits:
if hit.get('symbol', '').upper() == gene_symbol.upper():
gene_hit = hit
break
if not gene_hit and hits:
gene_hit = hits[0]
ids = {
'symbol': gene_hit.get('symbol'),
'entrez_id': gene_hit.get('entrezgene'),
'ensembl_id': gene_hit.get('ensembl', {}).get('gene'),
'name': gene_hit.get('name'),
}
return ids响应结构:
{took, total, max_score, hits: [{_id, _score, ensembl: {gene}, entrezgene, name, symbol}]}1.2 UniProt Accession
1.2 UniProt登录号
python
def get_uniprot_id(tu, gene_symbol):
"""Get UniProt accession for gene."""
result = tu.tools.UniProt_search(query=f'gene:{gene_symbol}', organism='human', limit=3)
# Response: {total_results, returned, results: [{accession, id, protein_name, gene_names, organism, length}]}
results = result.get('results', [])
if results:
return results[0].get('accession')
return Nonepython
def get_uniprot_id(tu, gene_symbol):
"""Get UniProt accession for gene."""
result = tu.tools.UniProt_search(query=f'gene:{gene_symbol}', organism='human', limit=3)
# Response: {total_results, returned, results: [{accession, id, protein_name, gene_names, organism, length}]}
results = result.get('results', [])
if results:
return results[0].get('accession')
return None1.3 OpenTargets Target Resolution
1.3 OpenTargets靶点解析
python
def get_opentargets_info(tu, gene_symbol):
"""Resolve gene to OpenTargets ensemblId and description."""
result = tu.tools.OpenTargets_get_target_id_description_by_name(targetName=gene_symbol)
# Response: {data: {search: {hits: [{id (ensemblId), name, description}]}}}
hits = result.get('data', {}).get('search', {}).get('hits', [])
# Match exact gene symbol
for hit in hits:
if hit.get('name', '').upper() == gene_symbol.upper():
return hit
return hits[0] if hits else Nonepython
def get_opentargets_info(tu, gene_symbol):
"""Resolve gene to OpenTargets ensemblId and description."""
result = tu.tools.OpenTargets_get_target_id_description_by_name(targetName=gene_symbol)
# Response: {data: {search: {hits: [{id (ensemblId), name, description}]}}}
hits = result.get('data', {}).get('search', {}).get('hits', [])
# Match exact gene symbol
for hit in hits:
if hit.get('name', '').upper() == gene_symbol.upper():
return hit
return hits[0] if hits else None1.4 Cancer Type EFO Resolution (if cancer type provided)
1.4 癌症类型EFO解析(若提供癌症类型)
python
def resolve_cancer_type(tu, cancer_type):
"""Resolve cancer type to EFO ID for OpenTargets queries."""
result = tu.tools.OpenTargets_get_disease_id_description_by_name(diseaseName=cancer_type)
# Response: {data: {search: {hits: [{id (efoId), name, description}]}}}
hits = result.get('data', {}).get('search', {}).get('hits', [])
return hits[0] if hits else Nonepython
def resolve_cancer_type(tu, cancer_type):
"""Resolve cancer type to EFO ID for OpenTargets queries."""
result = tu.tools.OpenTargets_get_disease_id_description_by_name(diseaseName=cancer_type)
# Response: {data: {search: {hits: [{id (efoId), name, description}]}}}
hits = result.get('data', {}).get('search', {}).get('hits', [])
return hits[0] if hits else None1.5 Gene Function Context
1.5 基因功能背景
python
def get_gene_function(tu, uniprot_accession):
"""Get protein function from UniProt.
NOTE: Returns a list of function description strings, NOT a dict.
"""
result = tu.tools.UniProt_get_function_by_accession(accession=uniprot_accession)
# Response type: list of strings
# Example: ["Receptor tyrosine kinase binding ligands of the EGF family...", ...]
return resultpython
def get_gene_function(tu, uniprot_accession):
"""Get protein function from UniProt.
NOTE: Returns a list of function description strings, NOT a dict.
"""
result = tu.tools.UniProt_get_function_by_accession(accession=uniprot_accession)
# Response type: list of strings
# Example: ["Receptor tyrosine kinase binding ligands of the EGF family...", ...]
return result1.6 CIViC Gene ID Resolution
1.6 CIViC基因ID解析
IMPORTANT: The tool does NOT support name filtering in its GraphQL query. To find a gene in CIViC, either:
civic_search_genes- Paginate through results (inefficient, genes sorted alphabetically)
- Use the Entrez ID from MyGene to construct a CIViC gene lookup
Workaround: Use with and search the results client-side. For genes beyond alphabetical position ~100 (like EGFR, KRAS, TP53), you may need to use the CIViC gene ID if known from prior queries or documentation.
civic_search_geneslimit=100Known CIViC Gene IDs (for common cancer genes):
| Gene | CIViC Gene ID | Entrez ID |
|---|---|---|
| BRAF | 5 | 673 |
| ABL1 | 4 | 25 |
| ALK | 1 | 238 |
For other genes, the skill should attempt to find the gene through pagination or use alternative evidence sources (OpenTargets, cBioPortal) if CIViC lookup fails.
重要提示: 工具的GraphQL查询不支持名称过滤。要在CIViC中找到某个基因,可选择:
civic_search_genes- 分页遍历结果(效率较低,基因按字母顺序排序)
- 使用MyGene获取的Entrez ID构建CIViC基因查询
替代方案: 使用并设置,然后在客户端侧搜索结果。对于字母顺序在~100之后的基因(如EGFR、KRAS、TP53),若之前查询或文档中已知CIViC基因ID,可直接使用该ID。
civic_search_geneslimit=100已知常见癌症基因的CIViC基因ID:
| 基因 | CIViC基因ID | Entrez ID |
|---|---|---|
| BRAF | 5 | 673 |
| ABL1 | 4 | 25 |
| ALK | 1 | 238 |
对于其他基因,若CIViC查询失败,技能应尝试分页查找或使用替代证据来源(OpenTargets、cBioPortal)。
Phase 2: Clinical Variant Evidence (CIViC)
阶段2:临床变异证据(CIViC)
Goal: Get clinical interpretations for the specific variant.
目标: 获取特定变异的临床解读。
2.1 Get Gene Variants from CIViC
2.1 从CIViC获取基因变异
python
def get_civic_variants(tu, civic_gene_id):
"""Get all variants for a gene in CIViC."""
result = tu.tools.civic_get_variants_by_gene(gene_id=civic_gene_id, limit=200)
# Response: {data: {gene: {variants: {nodes: [{id, name}]}}}}
variants = result.get('data', {}).get('gene', {}).get('variants', {}).get('nodes', [])
return variantspython
def get_civic_variants(tu, civic_gene_id):
"""Get all variants for a gene in CIViC."""
result = tu.tools.civic_get_variants_by_gene(gene_id=civic_gene_id, limit=200)
# Response: {data: {gene: {variants: {nodes: [{id, name}]}}}}
variants = result.get('data', {}).get('gene', {}).get('variants', {}).get('nodes', [])
return variants2.2 Match Specific Variant
2.2 匹配特定变异
python
def find_variant_in_civic(variants, variant_name):
"""Find the specific variant in CIViC results."""
# Normalize variant name (remove 'p.' prefix if present)
normalized = variant_name.replace('p.', '').strip()
for v in variants:
if v.get('name', '').upper() == normalized.upper():
return v
# Partial match (e.g., "L858" matches "L858R")
for v in variants:
if normalized.upper() in v.get('name', '').upper():
return v
return Nonepython
def find_variant_in_civic(variants, variant_name):
"""Find the specific variant in CIViC results."""
# Normalize variant name (remove 'p.' prefix if present)
normalized = variant_name.replace('p.', '').strip()
for v in variants:
if v.get('name', '').upper() == normalized.upper():
return v
# Partial match (e.g., "L858" matches "L858R")
for v in variants:
if normalized.upper() in v.get('name', '').upper():
return v
return None2.3 Get Variant Details
2.3 获取变异详情
python
def get_variant_details(tu, variant_id):
"""Get detailed variant information from CIViC."""
result = tu.tools.civic_get_variant(variant_id=variant_id)
# Response: {data: {variant: {id, name}}}
return result.get('data', {}).get('variant', {})python
def get_variant_details(tu, variant_id):
"""Get detailed variant information from CIViC."""
result = tu.tools.civic_get_variant(variant_id=variant_id)
# Response: {data: {variant: {id, name}}}
return result.get('data', {}).get('variant', {})2.4 Get Molecular Profile Evidence
2.4 获取分子谱证据
python
def get_molecular_profile(tu, molecular_profile_id):
"""Get molecular profile details (for evidence items)."""
result = tu.tools.civic_get_molecular_profile(molecular_profile_id=molecular_profile_id)
# Response: {data: {molecularProfile: {id, name}}}
return result.get('data', {}).get('molecularProfile', {})python
def get_molecular_profile(tu, molecular_profile_id):
"""Get molecular profile details (for evidence items)."""
result = tu.tools.civic_get_molecular_profile(molecular_profile_id=molecular_profile_id)
# Response: {data: {molecularProfile: {id, name}}}
return result.get('data', {}).get('molecularProfile', {})2.5 CIViC Evidence Limitations and Fallback
2.5 CIViC证据局限性与替代方案
The current CIViC tools return limited field sets from GraphQL. If CIViC data is sparse:
Fallback to literature: Use PubMed to search for "{gene} {variant} clinical significance cancer"
Fallback to OpenTargets: Use for target-disease evidence
OpenTargets_target_disease_evidence当前CIViC工具从GraphQL返回的字段集有限。若CIViC数据稀疏:
替代方案1:文献检索 使用PubMed搜索"{gene} {variant} clinical significance cancer"
替代方案2:OpenTargets 使用获取靶点-疾病证据
OpenTargets_target_disease_evidenceEvidence Level Mapping
证据等级映射
| CIViC Level | Tier | Meaning | Clinical Action |
|---|---|---|---|
| A | T1 (highest) | FDA-approved, guideline | Standard of care |
| B | T2 | Clinical evidence | Strong recommendation |
| C | T2 | Case study | Consider with caution |
| D | T3 | Preclinical | Research context only |
| E | T4 | Inferential | Computational evidence |
| CIViC等级 | 层级 | 含义 | 临床行动 |
|---|---|---|---|
| A | T1(最高) | FDA批准、指南推荐 | 标准治疗方案 |
| B | T2 | 临床证据 | 强烈推荐 |
| C | T2 | 病例报告 | 谨慎考虑 |
| D | T3 | 临床前研究 | 仅用于研究场景 |
| E | T4 | 推断性证据 | 计算生物学证据 |
Phase 3: Mutation Prevalence (cBioPortal)
阶段3:突变发生率(cBioPortal)
Goal: Determine how common this mutation is across cancer types and studies.
目标: 确定该突变在不同癌症类型和研究中的发生频率。
3.1 Find Relevant Studies
3.1 查找相关研究
python
def find_cancer_studies(tu, cancer_keyword=None):
"""Find relevant cBioPortal studies."""
result = tu.tools.cBioPortal_get_cancer_studies(limit=50)
# Response: array of [{studyId, name, description, cancerTypeId, ...}]
studies = result if isinstance(result, list) else result.get('data', [])
if cancer_keyword:
# Filter by cancer type keyword
filtered = [s for s in studies
if cancer_keyword.lower() in str(s.get('name', '')).lower()
or cancer_keyword.lower() in str(s.get('cancerTypeId', '')).lower()]
return filtered
return studiespython
def find_cancer_studies(tu, cancer_keyword=None):
"""Find relevant cBioPortal studies."""
result = tu.tools.cBioPortal_get_cancer_studies(limit=50)
# Response: array of [{studyId, name, description, cancerTypeId, ...}]
studies = result if isinstance(result, list) else result.get('data', [])
if cancer_keyword:
# Filter by cancer type keyword
filtered = [s for s in studies
if cancer_keyword.lower() in str(s.get('name', '')).lower()
or cancer_keyword.lower() in str(s.get('cancerTypeId', '')).lower()]
return filtered
return studies3.2 Get Mutation Data
3.2 获取突变数据
python
def get_mutation_prevalence(tu, gene_symbol, study_id):
"""Get mutation data for a gene in a specific study."""
result = tu.tools.cBioPortal_get_mutations(study_id=study_id, gene_list=gene_symbol)
# Response: {status: 'success', data: [{proteinChange, mutationType, sampleId, ...}]}
# OR sometimes a plain list. Handle both formats:
if isinstance(result, list):
mutations = result
elif isinstance(result, dict):
mutations = result.get('data', []) if result.get('status') == 'success' else []
else:
mutations = []
return mutationspython
def get_mutation_prevalence(tu, gene_symbol, study_id):
"""Get mutation data for a gene in a specific study."""
result = tu.tools.cBioPortal_get_mutations(study_id=study_id, gene_list=gene_symbol)
# Response: {status: 'success', data: [{proteinChange, mutationType, sampleId, ...}]}
# OR sometimes a plain list. Handle both formats:
if isinstance(result, list):
mutations = result
elif isinstance(result, dict):
mutations = result.get('data', []) if result.get('status') == 'success' else []
else:
mutations = []
return mutations3.3 Analyze Mutation Distribution
3.3 分析突变分布
python
def analyze_mutation_distribution(mutations, target_variant):
"""Count how many samples have the target variant vs. others."""
from collections import Counter
protein_changes = [m.get('proteinChange', '') for m in mutations]
counts = Counter(protein_changes)
total_mutated = len(mutations)
target_count = sum(1 for m in mutations
if target_variant.upper() in str(m.get('proteinChange', '')).upper())
return {
'total_mutated_samples': total_mutated,
'target_variant_count': target_count,
'target_variant_frequency': target_count / total_mutated if total_mutated > 0 else 0,
'top_variants': counts.most_common(10),
}python
def analyze_mutation_distribution(mutations, target_variant):
"""Count how many samples have the target variant vs. others."""
from collections import Counter
protein_changes = [m.get('proteinChange', '') for m in mutations]
counts = Counter(protein_changes)
total_mutated = len(mutations)
target_count = sum(1 for m in mutations
if target_variant.upper() in str(m.get('proteinChange', '')).upper())
return {
'total_mutated_samples': total_mutated,
'target_variant_count': target_count,
'target_variant_frequency': target_count / total_mutated if total_mutated > 0 else 0,
'top_variants': counts.most_common(10),
}3.4 Key cBioPortal Studies for Common Cancer Types
3.4 常见癌症类型的关键cBioPortal研究
| Cancer Type | Study ID | Description |
|---|---|---|
| Lung adenocarcinoma | luad_tcga | TCGA Lung Adenocarcinoma |
| Breast cancer | brca_tcga | TCGA Breast Cancer |
| Colorectal cancer | coadread_tcga | TCGA Colorectal |
| Melanoma | skcm_tcga | TCGA Melanoma |
| Pancreatic cancer | paad_tcga | TCGA Pancreatic |
| Glioblastoma | gbm_tcga | TCGA Glioblastoma |
| Prostate cancer | prad_tcga | TCGA Prostate |
| Ovarian cancer | ov_tcga | TCGA Ovarian |
| 癌症类型 | 研究ID | 描述 |
|---|---|---|
| 肺腺癌 | luad_tcga | TCGA肺腺癌研究 |
| 乳腺癌 | brca_tcga | TCGA乳腺癌研究 |
| 结直肠癌 | coadread_tcga | TCGA结直肠癌研究 |
| 黑色素瘤 | skcm_tcga | TCGA黑色素瘤研究 |
| 胰腺癌 | paad_tcga | TCGA胰腺癌研究 |
| 胶质母细胞瘤 | gbm_tcga | TCGA胶质母细胞瘤研究 |
| 前列腺癌 | prad_tcga | TCGA前列腺癌研究 |
| 卵巢癌 | ov_tcga | TCGA卵巢癌研究 |
Phase 4: Therapeutic Associations
阶段4:治疗关联分析
Goal: Identify all available therapies -- approved, in trials, and experimental.
目标: 识别所有可用治疗方案——已批准、临床试验中及实验性疗法。
4.1 OpenTargets Drug-Target Associations (PRIMARY)
4.1 OpenTargets药物-靶点关联(主要方式)
python
def get_target_drugs(tu, ensembl_id, size=50):
"""Get all drugs associated with a target from OpenTargets."""
result = tu.tools.OpenTargets_get_associated_drugs_by_target_ensemblID(
ensemblId=ensembl_id, size=size
)
# Response: {data: {target: {id, approvedSymbol, knownDrugs: {count, rows: [
# {drug: {id, name, tradeNames, maximumClinicalTrialPhase, isApproved, hasBeenWithdrawn},
# phase, mechanismOfAction, disease: {id, name}}
# ]}}}}
drugs = result.get('data', {}).get('target', {}).get('knownDrugs', {})
rows = drugs.get('rows', [])
# Categorize
approved = [r for r in rows if r.get('drug', {}).get('isApproved')]
phase3 = [r for r in rows if r.get('phase') == 3 and not r.get('drug', {}).get('isApproved')]
phase2 = [r for r in rows if r.get('phase') == 2]
return {
'total': drugs.get('count', 0),
'approved': approved,
'phase3': phase3,
'phase2': phase2,
'all_rows': rows
}python
def get_target_drugs(tu, ensembl_id, size=50):
"""Get all drugs associated with a target from OpenTargets."""
result = tu.tools.OpenTargets_get_associated_drugs_by_target_ensemblID(
ensemblId=ensembl_id, size=size
)
# Response: {data: {target: {id, approvedSymbol, knownDrugs: {count, rows: [
# {drug: {id, name, tradeNames, maximumClinicalTrialPhase, isApproved, hasBeenWithdrawn},
# phase, mechanismOfAction, disease: {id, name}}
# ]}}}}
drugs = result.get('data', {}).get('target', {}).get('knownDrugs', {})
rows = drugs.get('rows', [])
# Categorize
approved = [r for r in rows if r.get('drug', {}).get('isApproved')]
phase3 = [r for r in rows if r.get('phase') == 3 and not r.get('drug', {}).get('isApproved')]
phase2 = [r for r in rows if r.get('phase') == 2]
return {
'total': drugs.get('count', 0),
'approved': approved,
'phase3': phase3,
'phase2': phase2,
'all_rows': rows
}4.2 OpenTargets Drug Mechanisms
4.2 OpenTargets药物作用机制
python
def get_drug_mechanism(tu, chembl_id):
"""Get mechanism of action for a drug."""
result = tu.tools.OpenTargets_get_drug_mechanisms_of_action_by_chemblId(chemblId=chembl_id)
return resultpython
def get_drug_mechanism(tu, chembl_id):
"""Get mechanism of action for a drug."""
result = tu.tools.OpenTargets_get_drug_mechanisms_of_action_by_chemblId(chemblId=chembl_id)
return result4.3 FDA Label Information
4.3 FDA标签信息
python
def get_fda_label(tu, drug_name):
"""Get FDA-approved indications and label info."""
indications = tu.tools.FDA_get_indications_by_drug_name(drug_name=drug_name, limit=3)
# Response: {meta: {skip, limit, total}, results: [{openfda.brand_name, openfda.generic_name, indications_and_usage}]}
warnings = tu.tools.FDA_get_boxed_warning_info_by_drug_name(drug_name=drug_name, limit=3)
moa = tu.tools.FDA_get_mechanism_of_action_by_drug_name(drug_name=drug_name, limit=3)
return {
'indications': indications,
'warnings': warnings,
'mechanism': moa
}python
def get_fda_label(tu, drug_name):
"""Get FDA-approved indications and label info."""
indications = tu.tools.FDA_get_indications_by_drug_name(drug_name=drug_name, limit=3)
# Response: {meta: {skip, limit, total}, results: [{openfda.brand_name, openfda.generic_name, indications_and_usage}]}
warnings = tu.tools.FDA_get_boxed_warning_info_by_drug_name(drug_name=drug_name, limit=3)
moa = tu.tools.FDA_get_mechanism_of_action_by_drug_name(drug_name=drug_name, limit=3)
return {
'indications': indications,
'warnings': warnings,
'mechanism': moa
}4.4 DrugBank Drug Information
4.4 DrugBank药物信息
python
def get_drugbank_info(tu, drug_name):
"""Get drug information from DrugBank."""
result = tu.tools.drugbank_get_drug_basic_info_by_drug_name_or_id(
query=drug_name, case_sensitive=False, exact_match=False, limit=3
)
# Response: {query, total_matches, total_returned_results, results: [{drug_name, drugbank_id, description, ...}]}
return resultpython
def get_drugbank_info(tu, drug_name):
"""Get drug information from DrugBank."""
result = tu.tools.drugbank_get_drug_basic_info_by_drug_name_or_id(
query=drug_name, case_sensitive=False, exact_match=False, limit=3
)
# Response: {query, total_matches, total_returned_results, results: [{drug_name, drugbank_id, description, ...}]}
return result4.5 ChEMBL Drug Mechanism
4.5 ChEMBL药物作用机制
python
def get_chembl_mechanism(tu, chembl_drug_id):
"""Get drug mechanism from ChEMBL."""
result = tu.tools.ChEMBL_get_drug_mechanisms(drug_chembl_id__exact=chembl_drug_id, limit=10)
return resultpython
def get_chembl_mechanism(tu, chembl_drug_id):
"""Get drug mechanism from ChEMBL."""
result = tu.tools.ChEMBL_get_drug_mechanisms(drug_chembl_id__exact=chembl_drug_id, limit=10)
return result4.6 Disease-Specific Drug Filtering
4.6 疾病特异性药物过滤
When cancer type is provided, filter drugs by disease association:
python
def get_disease_specific_drugs(tu, efo_id, size=30):
"""Get drugs associated with a specific disease/cancer type."""
result = tu.tools.OpenTargets_get_associated_drugs_by_disease_efoId(efoId=efo_id, size=size)
return result若提供癌症类型,按疾病关联过滤药物:
python
def get_disease_specific_drugs(tu, efo_id, size=30):
"""Get drugs associated with a specific disease/cancer type."""
result = tu.tools.OpenTargets_get_associated_drugs_by_disease_efoId(efoId=efo_id, size=size)
return result4.7 Treatment Prioritization
4.7 治疗方案优先级
| Priority | Criteria | Tier |
|---|---|---|
| 1st Line | FDA-approved for exact indication + biomarker | T1 |
| 2nd Line | FDA-approved for different indication, same biomarker | T1-T2 |
| 3rd Line | Phase 3 clinical trial data | T2 |
| 4th Line | Phase 1-2 data, off-label with evidence | T3 |
| 5th Line | Preclinical or computational only | T4 |
| 优先级 | 标准 | 层级 |
|---|---|---|
| 一线治疗 | FDA批准的精准适应症+生物标志物 | T1 |
| 二线治疗 | FDA批准的其他适应症、相同生物标志物 | T1-T2 |
| 三线治疗 | 3期临床试验数据 | T2 |
| 四线治疗 | 1-2期数据、有证据支持的超适应症使用 | T3 |
| 五线治疗 | 仅存在临床前证据或基于通路的理论依据 | T4 |
Phase 5: Resistance Mechanisms
阶段5:耐药机制
Goal: Identify known resistance patterns and strategies to overcome them.
目标: 识别已知耐药模式及克服策略。
5.1 CIViC Resistance Evidence
5.1 CIViC耐药证据
Search CIViC for variants with resistance significance for the target gene. Get all variants and look for those with "Resistance" in the name or description.
在CIViC中搜索目标基因的耐药相关变异。获取所有变异并查找名称或描述中包含“Resistance”的变异。
5.2 Literature-Based Resistance Search
5.2 基于文献的耐药检索
python
def search_resistance_literature(tu, gene_symbol, drug_name):
"""Search PubMed for resistance mechanisms.
NOTE: PubMed returns a plain list of article dicts, NOT {articles: [...]}.
"""
result = tu.tools.PubMed_search_articles(
query=f'"{gene_symbol}" AND "{drug_name}" AND resistance AND mechanism',
limit=15,
include_abstract=True
)
# Response: list of [{pmid, title, authors, journal, pub_date, doi, abstract, ...}]
articles = result if isinstance(result, list) else result.get('articles', []) if isinstance(result, dict) else []
return articlespython
def search_resistance_literature(tu, gene_symbol, drug_name):
"""Search PubMed for resistance mechanisms.
NOTE: PubMed returns a plain list of article dicts, NOT {articles: [...]}.
"""
result = tu.tools.PubMed_search_articles(
query=f'"{gene_symbol}" AND "{drug_name}" AND resistance AND mechanism',
limit=15,
include_abstract=True
)
# Response: list of [{pmid, title, authors, journal, pub_date, doi, abstract, ...}]
articles = result if isinstance(result, list) else result.get('articles', []) if isinstance(result, dict) else []
return articles5.3 Pathway-Based Bypass Resistance
5.3 基于通路的旁路耐药分析
python
def get_bypass_pathways(tu, uniprot_id):
"""Get pathways that could mediate bypass resistance."""
result = tu.tools.Reactome_map_uniprot_to_pathways(id=uniprot_id)
return resultpython
def get_bypass_pathways(tu, uniprot_id):
"""Get pathways that could mediate bypass resistance."""
result = tu.tools.Reactome_map_uniprot_to_pathways(id=uniprot_id)
return result5.4 Known Resistance Patterns (Reference)
5.4 已知耐药模式(参考)
| Primary Target | Primary Drug | Resistance Mutation | Mechanism | Strategy |
|---|---|---|---|---|
| EGFR L858R | Erlotinib/Gefitinib | T790M | Steric hindrance | Osimertinib (3rd-gen TKI) |
| EGFR T790M | Osimertinib | C797S | Covalent bond loss | 4th-gen TKI trials |
| BRAF V600E | Vemurafenib | Splice variants | Paradoxical activation | BRAF+MEK combination |
| ALK fusion | Crizotinib | L1196M, G1269A | Kinase domain mutations | Alectinib, Lorlatinib |
| KRAS G12C | Sotorasib | Y96D, R68S | Drug binding loss | KRAS G12C combo trials |
| 主要靶点 | 主要药物 | 耐药突变 | 机制 | 应对策略 |
|---|---|---|---|---|
| EGFR L858R | 厄洛替尼/吉非替尼 | T790M | 空间位阻 | 奥希替尼(第三代TKI) |
| EGFR T790M | 奥希替尼 | C797S | 共价键丢失 | 第四代TKI临床试验 |
| BRAF V600E | 维莫非尼 | 剪接变异体 | 悖论性激活 | BRAF+MEK联合治疗 |
| ALK融合 | 克唑替尼 | L1196M, G1269A | 激酶域突变 | 阿来替尼、劳拉替尼 |
| KRAS G12C | 索托拉西布 | Y96D, R68S | 药物结合丢失 | KRAS G12C联合治疗临床试验 |
Phase 6: Clinical Trials
阶段6:临床试验
Goal: Find actively recruiting clinical trials relevant to this mutation.
目标: 找到与该突变相关的正在招募的临床试验。
6.1 Search Strategy
6.1 检索策略
python
def find_clinical_trials(tu, gene_symbol, variant_name, cancer_type=None):
"""Find clinical trials for this mutation."""
# Search 1: Gene + variant specific
query1 = f'{gene_symbol} {variant_name}'
result1 = tu.tools.search_clinical_trials(
query_term=query1,
condition=cancer_type or 'cancer',
pageSize=20
)
# Search 2: Gene + targeted therapy
result2 = tu.tools.search_clinical_trials(
query_term=f'{gene_symbol} mutation',
condition=cancer_type or 'cancer',
pageSize=20
)
return {
'variant_specific': result1,
'gene_level': result2
}Response structure:
{studies: [{NCT ID, brief_title, brief_summary, overall_status, condition, phase}], nextPageToken, total_count}python
def find_clinical_trials(tu, gene_symbol, variant_name, cancer_type=None):
"""Find clinical trials for this mutation."""
# Search 1: Gene + variant specific
query1 = f'{gene_symbol} {variant_name}'
result1 = tu.tools.search_clinical_trials(
query_term=query1,
condition=cancer_type or 'cancer',
pageSize=20
)
# Search 2: Gene + targeted therapy
result2 = tu.tools.search_clinical_trials(
query_term=f'{gene_symbol} mutation',
condition=cancer_type or 'cancer',
pageSize=20
)
return {
'variant_specific': result1,
'gene_level': result2
}响应结构:
{studies: [{NCT ID, brief_title, brief_summary, overall_status, condition, phase}], nextPageToken, total_count}6.2 Trial Filtering
6.2 临床试验过滤
Prioritize trials that:
- Are RECRUITING or NOT_YET_RECRUITING status
- Match the specific variant (not just gene)
- Are Phase 2 or 3 (closer to approval)
- Have the right cancer type
优先选择以下临床试验:
- 状态为RECRUITING(招募中)或NOT_YET_RECRUITING(尚未招募)
- 匹配特定变异(而非仅基因)
- 处于2期或3期(更接近获批)
- 符合癌症类型
6.3 Trial Output Format
6.3 临床试验输出格式
markdown
| NCT ID | Phase | Agent(s) | Status | Cancer Type | Biomarker |
|--------|-------|----------|--------|-------------|-----------|markdown
| NCT ID | 阶段 | 治疗药物 | 状态 | 癌症类型 | 生物标志物 |
|--------|-------|----------|--------|-------------|-----------|Phase 7: Prognostic Impact & Pathway Context
阶段7:预后影响与通路背景
Goal: Assess the variant's impact on prognosis and biological context.
目标: 评估变异对预后的影响及生物学背景。
7.1 Literature Evidence
7.1 文献证据
python
def get_prognostic_literature(tu, gene_symbol, variant_name, cancer_type=None):
"""Search for prognostic associations."""
query = f'"{gene_symbol}" "{variant_name}" prognosis survival'
if cancer_type:
query += f' "{cancer_type}"'
result = tu.tools.PubMed_search_articles(query=query, limit=10, include_abstract=True)
return resultpython
def get_prognostic_literature(tu, gene_symbol, variant_name, cancer_type=None):
"""Search for prognostic associations."""
query = f'"{gene_symbol}" "{variant_name}" prognosis survival'
if cancer_type:
query += f' "{cancer_type}"'
result = tu.tools.PubMed_search_articles(query=query, limit=10, include_abstract=True)
return result7.2 Pathway Context (Reactome)
7.2 通路背景(Reactome)
python
def get_pathway_context(tu, uniprot_id):
"""Get pathway context from Reactome."""
result = tu.tools.Reactome_map_uniprot_to_pathways(id=uniprot_id)
return resultpython
def get_pathway_context(tu, uniprot_id):
"""Get pathway context from Reactome."""
result = tu.tools.Reactome_map_uniprot_to_pathways(id=uniprot_id)
return result7.3 Gene Expression (GTEx)
7.3 基因表达(GTEx)
python
def get_expression_context(tu, ensembl_id):
"""Get tissue expression data from GTEx."""
# GTEx needs versioned ID. IMPORTANT: ensembl_lookup_gene requires species parameter.
gene_info = tu.tools.ensembl_lookup_gene(gene_id=ensembl_id, species='homo_sapiens')
# Response: {status: 'success', data: {id, version, display_name, ...}}
data = gene_info.get('data', gene_info) if isinstance(gene_info, dict) else {}
version = data.get('version', 1)
versioned_id = f"{ensembl_id}.{version}"
result = tu.tools.GTEx_get_median_gene_expression(
gencode_id=versioned_id, operation='median'
)
return resultpython
def get_expression_context(tu, ensembl_id):
"""Get tissue expression data from GTEx."""
# GTEx needs versioned ID. IMPORTANT: ensembl_lookup_gene requires species parameter.
gene_info = tu.tools.ensembl_lookup_gene(gene_id=ensembl_id, species='homo_sapiens')
# Response: {status: 'success', data: {id, version, display_name, ...}}
data = gene_info.get('data', gene_info) if isinstance(gene_info, dict) else {}
version = data.get('version', 1)
versioned_id = f"{ensembl_id}.{version}"
result = tu.tools.GTEx_get_median_gene_expression(
gencode_id=versioned_id, operation='median'
)
return result7.4 UniProt Disease Variants
7.4 UniProt疾病相关变异
python
def get_known_disease_variants(tu, uniprot_accession):
"""Get known disease-associated variants from UniProt."""
result = tu.tools.UniProt_get_disease_variants_by_accession(accession=uniprot_accession)
return resultpython
def get_known_disease_variants(tu, uniprot_accession):
"""Get known disease-associated variants from UniProt."""
result = tu.tools.UniProt_get_disease_variants_by_accession(accession=uniprot_accession)
return resultPhase 8: Report Synthesis
阶段8:报告合成
8.1 Report File Naming
8.1 报告文件命名
{GENE}_{VARIANT}_cancer_variant_report.md
Examples:
EGFR_L858R_cancer_variant_report.md
BRAF_V600E_cancer_variant_report.md
KRAS_G12C_cancer_variant_report.md{GENE}_{VARIANT}_cancer_variant_report.md
示例:
EGFR_L858R_cancer_variant_report.md
BRAF_V600E_cancer_variant_report.md
KRAS_G12C_cancer_variant_report.md8.2 Report Template
8.2 报告模板
markdown
undefinedmarkdown
undefinedCancer Variant Interpretation Report: {GENE} {VARIANT}
癌症变异解读报告: {GENE} {VARIANT}
Date: {date}
Cancer Type: {cancer_type or "Not specified"}
日期: {date}
癌症类型: {cancer_type or "未指定"}
Executive Summary
执行摘要
{1-2 sentences summarizing the key finding and top recommendation}
Clinical Actionability: {Score: HIGH / MODERATE / LOW / UNKNOWN}
{1-2句话总结关键发现及首要推荐方案}
临床可操作性评分: {评分: HIGH / MODERATE / LOW / UNKNOWN}
1. Gene & Variant Overview
1. 基因与变异概述
| Field | Value |
|---|---|
| Gene Symbol | {symbol} |
| Full Name | {name} |
| Ensembl ID | {ensembl_id} |
| UniProt | {uniprot_accession} |
| Entrez ID | {entrez_id} |
| Variant | {variant_notation} |
| Protein Function | {function_summary} |
| 字段 | 数值 |
|---|---|
| 基因符号 | {symbol} |
| 全称 | {name} |
| Ensembl ID | {ensembl_id} |
| UniProt登录号 | {uniprot_accession} |
| Entrez ID | {entrez_id} |
| 变异 | {variant_notation} |
| 蛋白功能 | {function_summary} |
2. Clinical Variant Evidence
2. 临床变异证据
2.1 CIViC Clinical Interpretations
2.1 CIViC临床解读
| Evidence Type | Description | Level | Clinical Significance |
|---|---|---|---|
| ... | ... | ... | ... |
| 证据类型 | 描述 | 等级 | 临床意义 |
|---|---|---|---|
| ... | ... | ... | ... |
2.2 Evidence Summary
2.2 证据摘要
{Summary of clinical evidence from CIViC and other sources}
Source: CIViC via civic_get_variants_by_gene, civic_get_variant
{总结CIViC及其他来源的临床证据}
来源: CIViC via civic_get_variants_by_gene, civic_get_variant
3. Mutation Prevalence
3. 突变发生率
3.1 Frequency Across Cancer Types (cBioPortal)
3.1 不同癌症类型中的发生频率(cBioPortal)
| Study | Cancer Type | Total Mutated | This Variant | Frequency |
|---|---|---|---|---|
| ... | ... | ... | ... | ... |
| 研究 | 癌症类型 | 总突变样本数 | 该变异样本数 | 频率 |
|---|---|---|---|---|
| ... | ... | ... | ... | ... |
3.2 Co-occurring Mutations
3.2 共突变情况
{Top co-occurring mutations from cBioPortal data}
Source: cBioPortal via cBioPortal_get_mutations
{cBioPortal数据中的主要共突变}
来源: cBioPortal via cBioPortal_get_mutations
4. Therapeutic Options
4. 治疗方案
4.1 FDA-Approved Therapies (T1 Evidence)
4.1 FDA批准疗法(T1证据)
| Drug | Trade Name | Indication | Mechanism | Phase |
|---|---|---|---|---|
| ... | ... | ... | ... | ... |
| 药物 | 商品名 | 适应症 | 作用机制 | 阶段 |
|---|---|---|---|---|
| ... | ... | ... | ... | ... |
4.2 Clinical Trial Drugs (T2-T3 Evidence)
4.2 临床试验药物(T2-T3证据)
| Drug | ChEMBL ID | Phase | Mechanism | Disease |
|---|---|---|---|---|
| ... | ... | ... | ... | ... |
| 药物 | ChEMBL ID | 阶段 | 作用机制 | 疾病 |
|---|---|---|---|---|
| ... | ... | ... | ... | ... |
4.3 Drug Details
4.3 药物详情
{For each recommended drug: mechanism of action, FDA label info, dosing, warnings}
Sources: OpenTargets, FDA, DrugBank, ChEMBL
{针对每个推荐药物:作用机制、FDA标签信息、给药方案、警告}
来源: OpenTargets, FDA, DrugBank, ChEMBL
5. Resistance Mechanisms
5. 耐药机制
5.1 Known Resistance Patterns
5.1 已知耐药模式
| Resistance Mutation | Drug Affected | Mechanism | Strategy to Overcome |
|---|---|---|---|
| ... | ... | ... | ... |
| 耐药突变 | 受影响药物 | 机制 | 应对策略 |
|---|---|---|---|
| ... | ... | ... | ... |
5.2 Bypass Pathways
5.2 旁路通路
{Pathway analysis showing potential bypass resistance routes}
Sources: CIViC, PubMed, Reactome
{通路分析显示的潜在旁路耐药途径}
来源: CIViC, PubMed, Reactome
6. Clinical Trials
6. 临床试验
6.1 Actively Recruiting Trials
6.1 正在招募的临床试验
| NCT ID | Phase | Agent(s) | Status | Biomarker Required |
|---|---|---|---|---|
| ... | ... | ... | ... | ... |
| NCT ID | 阶段 | 治疗药物 | 状态 | 所需生物标志物 |
|---|---|---|---|---|
| ... | ... | ... | ... | ... |
6.2 Trial Recommendations
6.2 临床试验推荐
{Specific trial recommendations based on patient's mutation and cancer type}
Source: ClinicalTrials.gov via search_clinical_trials
{基于患者突变及癌症类型的特定临床试验推荐}
来源: ClinicalTrials.gov via search_clinical_trials
7. Prognostic Impact
7. 预后影响
7.1 Survival Associations
7.1 生存关联
{Literature-based prognostic data}
{基于文献的预后数据}
7.2 Pathway Context
7.2 通路背景
{Pathway analysis and biological context}
{通路分析及生物学背景}
7.3 Expression Profile
7.3 表达谱
{Tissue expression data for the gene}
Sources: PubMed, Reactome, GTEx
{该基因的组织表达数据}
来源: PubMed, Reactome, GTEx
8. Evidence Grading Summary
8. 证据分级摘要
| Finding | Evidence Tier | Source | Confidence |
|---|---|---|---|
| ... | T1/T2/T3/T4 | ... | High/Moderate/Low |
| 发现 | 证据层级 | 来源 | 置信度 |
|---|---|---|---|
| ... | T1/T2/T3/T4 | ... | High/Moderate/Low |
Data Sources Queried
已查询的数据来源
| Source | Tool(s) Used | Data Retrieved |
|---|---|---|
| MyGene | MyGene_query_genes | Gene IDs |
| UniProt | UniProt_search, UniProt_get_function_by_accession | Protein function |
| OpenTargets | OpenTargets_get_associated_drugs_by_target_ensemblID | Drug associations |
| CIViC | civic_search_genes, civic_get_variants_by_gene | Clinical evidence |
| cBioPortal | cBioPortal_get_mutations | Mutation prevalence |
| FDA | FDA_get_indications_by_drug_name | Drug labels |
| DrugBank | drugbank_get_drug_basic_info_by_drug_name_or_id | Drug info |
| ChEMBL | ChEMBL_get_drug_mechanisms | Drug mechanisms |
| ClinicalTrials.gov | search_clinical_trials | Active trials |
| PubMed | PubMed_search_articles | Literature evidence |
| Reactome | Reactome_map_uniprot_to_pathways | Pathway context |
| GTEx | GTEx_get_median_gene_expression | Expression data |
| 来源 | 使用工具 | 获取数据 |
|---|---|---|
| MyGene | MyGene_query_genes | 基因ID |
| UniProt | UniProt_search, UniProt_get_function_by_accession | 蛋白功能 |
| OpenTargets | OpenTargets_get_associated_drugs_by_target_ensemblID | 药物关联 |
| CIViC | civic_search_genes, civic_get_variants_by_gene | 临床证据 |
| cBioPortal | cBioPortal_get_mutations | 突变发生率 |
| FDA | FDA_get_indications_by_drug_name | 药物标签 |
| DrugBank | drugbank_get_drug_basic_info_by_drug_name_or_id | 药物信息 |
| ChEMBL | ChEMBL_get_drug_mechanisms | 药物作用机制 |
| ClinicalTrials.gov | search_clinical_trials | 活跃临床试验 |
| PubMed | PubMed_search_articles | 文献证据 |
| Reactome | Reactome_map_uniprot_to_pathways | 通路背景 |
| GTEx | GTEx_get_median_gene_expression | 表达数据 |
Completeness Checklist
完整性检查清单
- Gene resolved to Ensembl, UniProt, and Entrez IDs
- Clinical variant evidence queried (CIViC or alternative)
- Mutation prevalence assessed (cBioPortal, at least 1 study)
- At least 1 therapeutic option identified with evidence tier, OR documented as "no targeted therapy available"
- FDA label information retrieved for recommended drugs
- Resistance mechanisms assessed (known patterns + literature search)
- At least 3 clinical trials listed, OR "no matching trials found"
- Prognostic literature searched
- Pathway context provided (Reactome)
- Executive summary is actionable (says what to DO)
- All recommendations have source citations
- Evidence tiers assigned to all findings
---- 基因已解析为Ensembl、UniProt及Entrez ID
- 已查询临床变异证据(CIViC或替代来源)
- 已评估突变发生率(cBioPortal,至少1项研究)
- 已识别至少1项带证据层级的治疗方案,或记录为“无靶向治疗可用”
- 已获取推荐药物的FDA标签信息
- 已评估耐药机制(已知模式+文献检索)
- 已列出至少3项临床试验,或记录为“未找到匹配试验"
- 已检索预后相关文献
- 已提供通路背景(Reactome)
- 执行摘要具备可操作性(明确说明应采取的行动)
- 所有推荐方案均有来源引用
- 所有发现均已分配证据层级
---Evidence Grading System
证据分级系统
| Tier | Symbol | Criteria | Examples |
|---|---|---|---|
| T1 | [T1] | FDA-approved therapy, Level A CIViC evidence, phase 3 trial | Osimertinib for EGFR T790M |
| T2 | [T2] | Phase 2/3 clinical data, Level B CIViC evidence | Combination trial data |
| T3 | [T3] | Preclinical data, Level D CIViC, case reports | Novel mechanisms, in vitro |
| T4 | [T4] | Computational prediction, pathway inference | Docking, pathway analysis |
| 层级 | 符号 | 标准 | 示例 |
|---|---|---|---|
| T1 | [T1] | FDA批准疗法、CIViC A级证据、3期临床试验 | 奥希替尼用于EGFR T790M |
| T2 | [T2] | 2/3期临床数据、CIViC B级证据 | 联合治疗试验数据 |
| T3 | [T3] | 临床前数据、CIViC D级证据、病例报告 | 新型机制、体外研究 |
| T4 | [T4] | 计算预测、通路推断 | 分子对接、通路分析 |
Clinical Actionability Scoring
临床可操作性评分
| Score | Criteria |
|---|---|
| HIGH | FDA-approved targeted therapy exists for this exact mutation + cancer type |
| MODERATE | Approved therapy exists for different cancer type with same mutation, OR phase 2-3 trial data |
| LOW | Only preclinical evidence or pathway-based rationale |
| UNKNOWN | Insufficient data to assess actionability |
| 评分 | 标准 |
|---|---|
| HIGH | 针对该精确突变+癌症类型存在FDA批准的靶向治疗 |
| MODERATE | 针对不同癌症类型但相同突变存在批准疗法,或有2-3期临床试验数据 |
| LOW | 仅存在临床前证据或基于通路的理论依据 |
| UNKNOWN | 数据不足,无法评估可操作性 |
Fallback Chains
替代方案链
| Primary Tool | Fallback | Use When |
|---|---|---|
| CIViC variant lookup | PubMed literature search | Gene not found in CIViC (search doesn't filter) |
| OpenTargets drugs | ChEMBL drug search | No OpenTargets drug hits |
| FDA indications | DrugBank drug info | Drug not in FDA database |
| cBioPortal TCGA study | cBioPortal pan-cancer | Specific cancer study not available |
| GTEx expression | Ensembl gene lookup | GTEx returns empty |
| Reactome pathways | UniProt function | Pathway mapping fails |
| 主要工具 | 替代工具 | 使用场景 |
|---|---|---|
| CIViC变异查询 | PubMed文献检索 | CIViC中未找到该基因(检索无过滤功能) |
| OpenTargets药物查询 | ChEMBL药物检索 | OpenTargets无药物结果 |
| FDA适应症查询 | DrugBank药物信息 | 药物未收录于FDA数据库 |
| cBioPortal TCGA研究 | cBioPortal泛癌研究 | 特定癌症研究不可用 |
| GTEx表达查询 | Ensembl基因查询 | GTEx返回空结果 |
| Reactome通路查询 | UniProt功能查询 | 通路映射失败 |
Tool Reference (Verified Parameters)
工具参考(已验证参数)
Gene Resolution
基因解析
| Tool | Parameters | Response Key Fields |
|---|---|---|
| | |
| | |
| | |
| | |
| 工具 | 参数 | 响应关键字段 |
|---|---|---|
| | |
| | |
| | |
| | |
Clinical Evidence
临床证据
| Tool | Parameters | Response Key Fields |
|---|---|---|
| | |
| | |
| | |
| | |
| 工具 | 参数 | 响应关键字段 |
|---|---|---|
| | |
| | |
| | |
| | |
Mutation Prevalence
突变发生率
| Tool | Parameters | Response Key Fields |
|---|---|---|
| | |
| | |
| | |
| 工具 | 参数 | 响应关键字段 |
|---|---|---|
| | |
| | |
| | |
Drug Information
药物信息
| Tool | Parameters | Response Key Fields |
|---|---|---|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| 工具 | 参数 | 响应关键字段 |
|---|---|---|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
Clinical Trials
临床试验
| Tool | Parameters | Response Key Fields |
|---|---|---|
| | |
| 工具 | 参数 | 响应关键字段 |
|---|---|---|
| | |
Literature & Pathways
文献与通路
| Tool | Parameters | Response Key Fields |
|---|---|---|
| | Returns list of |
| | Pathway mappings |
| | Expression by tissue |
| | Protein function |
| | Disease variants |
| 工具 | 参数 | 响应关键字段 |
|---|---|---|
| | 返回列表格式的 |
| | 通路映射结果 |
| | 按组织分类的表达数据 |
| | 蛋白功能 |
| | 疾病相关变异 |
Common Use Cases
常见使用场景
Use Case 1: Oncologist Evaluating Treatment Options
使用场景1:肿瘤学家评估治疗方案
Input: "EGFR L858R in lung adenocarcinoma"
Expected Output: Report showing osimertinib as 1st-line [T1], with FDA label details, resistance pattern (T790M), clinical trials for combination therapies, and prognostic context.
输入: "EGFR L858R in lung adenocarcinoma"
预期输出: 报告显示奥希替尼为一线治疗[T1],包含FDA标签详情、耐药模式(T790M)、联合治疗临床试验及预后背景。
Use Case 2: Molecular Tumor Board Preparation
使用场景2:分子肿瘤委员会准备
Input: "BRAF V600E, colorectal cancer"
Expected Output: Report noting that BRAF V600E is actionable in melanoma but requires combination therapy in CRC (encorafenib + cetuximab), with different resistance patterns than melanoma.
输入: "BRAF V600E, colorectal cancer"
预期输出: 报告指出BRAF V600E在黑色素瘤中可作为治疗靶点,但在结直肠癌中需联合治疗(恩考芬尼+西妥昔单抗),且耐药模式与黑色素瘤不同。
Use Case 3: Clinical Trial Matching
使用场景3:临床试验匹配
Input: "KRAS G12C, any cancer type"
Expected Output: Report with sotorasib/adagrasib as approved options [T1], comprehensive trial listing for KRAS G12C inhibitors, resistance patterns (Y96D, etc.), and mutation prevalence across cancer types.
输入: "KRAS G12C, any cancer type"
预期输出: 报告显示索托拉西布/阿达格拉西布为已批准选项[T1],列出KRAS G12C抑制剂的全面临床试验、耐药模式(Y96D等)及不同癌症类型中的突变发生率。
Use Case 4: Resistance Mechanism Investigation
使用场景4:耐药机制调查
Input: "EGFR T790M after osimertinib failure"
Expected Output: Report focused on C797S resistance mutation, available 4th-generation TKI trials, amivantamab/lazertinib combinations, and bypass pathway mechanisms (MET amplification, HER2 activation).
输入: "EGFR T790M after osimertinib failure"
预期输出: 报告聚焦C797S耐药突变、可用的第四代TKI临床试验、阿米万他单抗/拉泽替尼联合疗法及旁路通路机制(MET扩增、HER2激活)。
Use Case 5: VUS Interpretation
使用场景5:意义未明变异(VUS)解读
Input: "PIK3CA E545K"
Expected Output: Report showing this is a known hotspot oncogenic mutation (not a VUS), with alpelisib as FDA-approved therapy for HR+/HER2- breast cancer, and prevalence data across cancer types.
输入: "PIK3CA E545K"
预期输出: 报告显示该变异为已知热点致癌突变(非VUS),阿培利西为HR+/HER2-乳腺癌的FDA批准疗法,及该变异在不同癌症类型中的发生率数据。
Quantified Minimums
最低要求量化
| Section | Requirement |
|---|---|
| Gene IDs | At least Ensembl + UniProt resolved |
| Clinical evidence | CIViC queried + PubMed literature search |
| Mutation prevalence | At least 1 cBioPortal study |
| Therapeutic options | All approved drugs listed (OpenTargets) + FDA label for top drugs |
| Resistance | Literature search performed + known patterns documented |
| Clinical trials | At least 1 search query executed |
| Prognostic impact | PubMed literature search performed |
| Pathway context | Reactome pathway mapping attempted |
| 章节 | 要求 |
|---|---|
| 基因ID | 至少解析出Ensembl + UniProt ID |
| 临床证据 | 已查询CIViC + PubMed文献检索 |
| 突变发生率 | 至少查询1项cBioPortal研究 |
| 治疗方案 | 列出所有已批准药物(OpenTargets) + 首要推荐药物的FDA标签 |
| 耐药性 | 已执行文献检索 + 记录已知模式 |
| 临床试验 | 已执行至少1项检索查询 |
| 预后影响 | 已执行PubMed文献检索 |
| 通路背景 | 已尝试Reactome通路映射 |
See Also
另请参阅
- - Example usage and quick reference
QUICK_START.md - - Detailed tool parameter reference
TOOLS_REFERENCE.md - - Complete example reports
EXAMPLES.md
- - 示例用法及快速参考
QUICK_START.md - - 详细工具参数参考
TOOLS_REFERENCE.md - - 完整示例报告
EXAMPLES.md