1141 lines
36 KiB
Markdown
1141 lines
36 KiB
Markdown
---
|
||
title: "Clinical Variant Interpreter - Tool Reference"
|
||
task: ""
|
||
lineage_type: import
|
||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/3038dcbe/skills/tooluniverse-variant-interpretation/TOOLS_REFERENCE.md
|
||
upstream_sha: 3038dcbe
|
||
imported_at: 2026-06-30
|
||
prompt_class: prompt
|
||
upstream_changes: accepted
|
||
author: upstream
|
||
validated: false
|
||
---
|
||
|
||
# Clinical Variant Interpreter - Tool Reference
|
||
|
||
## Core Annotation Tools
|
||
|
||
### MyVariant.info - Aggregated Annotations
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `MyVariant_query_variants` | Query variant annotations | `variant_id`, `fields` |
|
||
|
||
**Example - Query variant**:
|
||
```python
|
||
result = tu.tools.MyVariant_query_variants(
|
||
variant_id="chr17:g.7674220C>T",
|
||
fields="clinvar,gnomad,cadd,dbnsfp"
|
||
)
|
||
# Returns: ClinVar, gnomAD, CADD, dbNSFP predictions
|
||
```
|
||
|
||
**Key Fields**:
|
||
| Field | Contains |
|
||
|-------|----------|
|
||
| `clinvar` | Classification, review status |
|
||
| `gnomad` | Allele frequencies |
|
||
| `cadd` | CADD scores |
|
||
| `dbnsfp` | SIFT, PolyPhen, REVEL, etc. |
|
||
|
||
---
|
||
|
||
### ClinVar - Clinical Classifications
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `ClinVar_search_variants` | Search by variant | `variant`, `gene` |
|
||
| `ClinVar_get_variant_details` | Get by VCV ID | `variation_id` |
|
||
|
||
**Example - Search ClinVar**:
|
||
```python
|
||
result = tu.tools.ClinVar_search_variants(
|
||
variant="NM_007294.4:c.5266dupC"
|
||
)
|
||
# Returns: VCV ID, classification, review status, submitters
|
||
```
|
||
|
||
**Classification Interpretation**:
|
||
| ClinVar Status | Stars | Meaning |
|
||
|----------------|-------|---------|
|
||
| Expert panel | ★★★★ | Highest confidence |
|
||
| Practice guideline | ★★★★ | Clinical standard |
|
||
| Multiple submitters, criteria | ★★★ | Well-supported |
|
||
| Single submitter, criteria | ★★ | Limited evidence |
|
||
| Single submitter, no criteria | ★ | Minimal support |
|
||
|
||
---
|
||
|
||
### VariantValidator - MANE Transcript Lookup & Variant Validation
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `VariantValidator_gene2transcripts` | Get MANE Select/Plus Clinical transcripts for a gene | `gene_symbol`, `transcript_set`, `genome_build` |
|
||
| `VariantValidator_validate_variant` | Validate and normalize HGVS variant descriptions | `genome_build`, `variant_description`, `select_transcripts` |
|
||
|
||
**Example - Get MANE transcript**:
|
||
```python
|
||
result = tu.tools.VariantValidator_gene2transcripts(
|
||
gene_symbol="TP53", transcript_set="mane", genome_build="GRCh38"
|
||
)
|
||
# Returns: [{current_symbol: "TP53", transcripts: [{reference: "NM_000546.6",
|
||
# annotations: {mane_select: true, mane_plus_clinical: false}}]}]
|
||
```
|
||
|
||
**Example - Validate variant**:
|
||
```python
|
||
result = tu.tools.VariantValidator_validate_variant(
|
||
genome_build="GRCh38",
|
||
variant_description="NM_007294.4:c.5266dup",
|
||
select_transcripts="NM_007294.4"
|
||
)
|
||
# Returns: validated HGVS, protein consequence, genomic coordinates, gene IDs
|
||
```
|
||
|
||
**When to use**:
|
||
- Phase 1: Always use `gene2transcripts` to identify the MANE Select transcript before annotating variants
|
||
- Phase 1: Use `validate_variant` to normalize user-provided HGVS notation and get cross-genome-build coordinates
|
||
- Prefer MANE Select transcript for canonical annotation; fall back to MANE Plus Clinical if relevant
|
||
|
||
---
|
||
|
||
### gnomAD - Population Frequencies
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `gnomad_search_variants` | Get allele frequencies | `variant`, `dataset` |
|
||
|
||
**Example - Query gnomAD**:
|
||
```python
|
||
result = tu.tools.gnomad_search_variants(
|
||
variant="17-7674220-C-T"
|
||
)
|
||
# Returns: AF, ancestry-specific AFs, AC, AN, homozygotes
|
||
```
|
||
|
||
**ACMG Frequency Thresholds**:
|
||
| Frequency | Code | Application |
|
||
|-----------|------|-------------|
|
||
| >5% | BA1 | Benign (stand-alone) |
|
||
| >1% | BS1 | Strong benign |
|
||
| Absent | PM2 | Supporting pathogenic |
|
||
|
||
**Ancestry-Specific Populations**:
|
||
| Code | Population |
|
||
|------|------------|
|
||
| nfe | European (Non-Finnish) |
|
||
| fin | Finnish |
|
||
| afr | African/African American |
|
||
| amr | Latino/Admixed American |
|
||
| eas | East Asian |
|
||
| sas | South Asian |
|
||
| asj | Ashkenazi Jewish |
|
||
|
||
---
|
||
|
||
## ClinGen - Gene Validity & Dosage Sensitivity (NEW)
|
||
|
||
Authoritative curation of gene-disease relationships from ClinGen.
|
||
|
||
### Gene Validity
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `ClinGen_search_gene_validity` | Search validity by gene | `gene` |
|
||
| `ClinGen_get_gene_validity` | Get all validity curations | `gene` (optional filter) |
|
||
|
||
**Example - Check gene-disease validity**:
|
||
```python
|
||
result = tu.tools.ClinGen_search_gene_validity(gene="BRCA1")
|
||
# Returns: Classification (Definitive/Strong/Moderate/Limited), disease, inheritance
|
||
```
|
||
|
||
**Validity Classification Interpretation**:
|
||
| Classification | ACMG Impact | Usage |
|
||
|----------------|-------------|-------|
|
||
| **Definitive** | Supports PS4, PP4 | Strong gene-disease evidence |
|
||
| **Strong** | Supports PP4 | Good evidence for classification |
|
||
| **Moderate** | Supports PP4 (weak) | Use with caution |
|
||
| **Limited** | Do not apply PP4 | Insufficient evidence |
|
||
| **Disputed/Refuted** | Contra-evidence | Gene likely NOT causative |
|
||
|
||
### Dosage Sensitivity
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `ClinGen_search_dosage_sensitivity` | HI/TS scores by gene | `gene` |
|
||
| `ClinGen_get_dosage_sensitivity` | All dosage curations | `gene`, `include_regions` |
|
||
|
||
**Example - Check haploinsufficiency**:
|
||
```python
|
||
result = tu.tools.ClinGen_search_dosage_sensitivity(gene="MECP2")
|
||
# Returns: Haploinsufficiency Score (0-3), Triplosensitivity Score (0-3)
|
||
```
|
||
|
||
**Dosage Score Interpretation** (for CNVs):
|
||
| Score | Meaning | Usage |
|
||
|-------|---------|-------|
|
||
| **3** | Sufficient evidence | HI/TS established - PVS1 for LOF CNVs |
|
||
| **2** | Emerging evidence | Some support |
|
||
| **1** | Little evidence | Minimal support |
|
||
| **0/40** | No evidence / Dosage unlikely | Unknown or unlikely dosage effect |
|
||
|
||
### Clinical Actionability
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `ClinGen_search_actionability` | Actionability by gene (both contexts) | `gene` |
|
||
| `ClinGen_get_actionability_adult` | Adult actionability | `gene` (optional) |
|
||
| `ClinGen_get_actionability_pediatric` | Pediatric actionability | `gene` (optional) |
|
||
|
||
**Why ClinGen is Critical**:
|
||
- Required for **PP4** (phenotype specificity)
|
||
- Establishes gene-disease validity before classification
|
||
- Dosage scores critical for **PVS1** in CNV interpretation
|
||
- Actionability informs return of incidental findings
|
||
|
||
---
|
||
|
||
## SpliceAI - Splice Variant Prediction (NEW)
|
||
|
||
Deep learning model for predicting splice-altering effects.
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `SpliceAI_predict_splice` | Full splice prediction | `variant`, `genome`, `distance`, `mask` |
|
||
| `SpliceAI_get_max_delta` | Quick max score | `variant`, `genome` |
|
||
| `SpliceAI_predict_pangolin` | Pangolin model (alternative) | `variant`, `genome` |
|
||
|
||
**Example - Predict splice effect**:
|
||
```python
|
||
# Full prediction
|
||
result = tu.tools.SpliceAI_predict_splice(
|
||
variant="chr17-41276045-A-G",
|
||
genome="38"
|
||
)
|
||
# Returns: DS_AG, DS_AL, DS_DG, DS_DL scores, max_delta_score, interpretation
|
||
|
||
# Quick triage
|
||
quick = tu.tools.SpliceAI_get_max_delta(
|
||
variant="chr17-41276045-A-G"
|
||
)
|
||
# Returns: max_delta_score, interpretation
|
||
```
|
||
|
||
**Variant Format**: `chr{chrom}-{pos}-{ref}-{alt}` or `{chrom}:{pos}:{ref}:{alt}`
|
||
|
||
**Delta Score Types**:
|
||
| Score | Meaning |
|
||
|-------|---------|
|
||
| DS_AG | Acceptor Gain (creates new acceptor) |
|
||
| DS_AL | Acceptor Loss (disrupts existing) |
|
||
| DS_DG | Donor Gain (creates new donor) |
|
||
| DS_DL | Donor Loss (disrupts existing) |
|
||
|
||
**Score Interpretation for ACMG**:
|
||
| Max Delta Score | Interpretation | ACMG Support |
|
||
|-----------------|----------------|--------------|
|
||
| ≥0.8 | High splice impact | PP3 (strong) |
|
||
| 0.5-0.8 | Moderate impact | PP3 (supporting) |
|
||
| 0.2-0.5 | Low impact | PP3 (weak) |
|
||
| <0.2 | Likely no impact | BP7 (if synonymous) |
|
||
|
||
**When to Use**:
|
||
- Intronic variants within ±50bp of splice sites
|
||
- Synonymous/missense variants (may still affect splicing)
|
||
- Deep intronic variants creating cryptic splice sites
|
||
- Validation when functional studies suggest splice defect
|
||
|
||
---
|
||
|
||
## Pathogenicity Prediction Tools (NEW)
|
||
|
||
### CADD - Combined Annotation Dependent Depletion (NEW API)
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `CADD_get_variant_score` | Get PHRED score for variant | `chrom`, `pos`, `ref`, `alt`, `version` |
|
||
| `CADD_get_position_scores` | All substitutions at position | `chrom`, `pos` |
|
||
| `CADD_get_range_scores` | Scores in genomic range (max 100bp) | `chrom`, `start`, `end` |
|
||
|
||
**Example - Score a variant**:
|
||
```python
|
||
result = tu.tools.CADD_get_variant_score(
|
||
chrom="17",
|
||
pos=7674220,
|
||
ref="G",
|
||
alt="A",
|
||
version="GRCh38-v1.7" # Options: GRCh38-v1.7, GRCh37-v1.7
|
||
)
|
||
# Returns: phred_score, raw_score, interpretation
|
||
```
|
||
|
||
**CADD PHRED Score Interpretation**:
|
||
| Score | Meaning | ACMG Support |
|
||
|-------|---------|--------------|
|
||
| ≥30 | Top 0.1% deleterious | PP3 (strong) |
|
||
| ≥20 | Top 1% deleterious | PP3 (supporting) |
|
||
| 15-20 | Uncertain | Neutral |
|
||
| <15 | Likely benign | BP4 (supporting) |
|
||
|
||
---
|
||
|
||
### AlphaMissense - DeepMind Pathogenicity Prediction (NEW)
|
||
|
||
State-of-the-art deep learning model for missense pathogenicity prediction.
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `AlphaMissense_get_variant_score` | Score specific variant | `uniprot_id`, `variant` |
|
||
| `AlphaMissense_get_residue_scores` | All substitutions at position | `uniprot_id`, `position` |
|
||
|
||
**Example - Get pathogenicity score**:
|
||
```python
|
||
result = tu.tools.AlphaMissense_get_variant_score(
|
||
uniprot_id="P00533", # EGFR
|
||
variant="L858R" # or "p.L858R"
|
||
)
|
||
# Returns: pathogenicity_score, classification
|
||
```
|
||
|
||
**AlphaMissense Thresholds** (from Cheng et al., Science 2023):
|
||
| Score | Classification | ACMG Support |
|
||
|-------|----------------|--------------|
|
||
| >0.564 | Pathogenic | PP3 (strong) |
|
||
| 0.34-0.564 | Ambiguous | Neutral |
|
||
| <0.34 | Benign | BP4 (strong) |
|
||
|
||
**Why Use AlphaMissense**:
|
||
- ~90% accuracy on ClinVar pathogenic variants
|
||
- Covers all ~71 million possible human missense variants
|
||
- Trained on evolutionary data, not clinical annotations
|
||
|
||
---
|
||
|
||
### ESMC-6B SAE - Mechanism of Effect (for VUS missense)
|
||
|
||
AlphaMissense scores tell you a variant is likely pathogenic. ESMC-6B Sparse Autoencoder features tell you **which interpretable protein-language-model features the mutation disrupts** — catalytic, ligand-binding, PTM, domain, transmembrane, etc. Use as a mechanism complement to pathogenicity scores.
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `ESM_explain_variant_mechanism` | One-call mechanism (disruption + feature labels + summary) | `sequence`, `position`, `ref_aa`, `alt_aa`, `top_k_features` |
|
||
| `ESM_score_variant_sae_disruption` | Single variant — top features lost/gained, no labels | `sequence`, `position`, `ref_aa`, `alt_aa` |
|
||
| `ESM_score_variant_sae_batch` | Multiple variants on same protein, N+1 Forge calls instead of 2N | `sequence`, `variants` (list) |
|
||
| `ESM_get_region_sae_features` | Aggregate features over a residue range (domain, motif) | `sequence`, `start_position`, `end_position` |
|
||
| `ESM_describe_sae_feature` | Label a feature_id by biological category | `feature_id` |
|
||
|
||
**Example — One-call mechanism for a VUS**:
|
||
```python
|
||
result = tu.tools.ESM_explain_variant_mechanism(
|
||
sequence=wt_aa_sequence,
|
||
position=600, ref_aa="V", alt_aa="E",
|
||
top_k_features=5,
|
||
)
|
||
# result["data"]["mechanism_summary"] e.g.:
|
||
# "Disrupted feature categories (lost): catalytic=2, ligand-binding=1"
|
||
```
|
||
|
||
**Example — Saturation at one position (all 19 alternates)**:
|
||
```python
|
||
from itertools import product
|
||
alts = "ACDEFGHIKLMNPQRSTVWY".replace(wt_residue, "")
|
||
variants = [{"position": 600, "ref_aa": "V", "alt_aa": a} for a in alts]
|
||
result = tu.tools.ESM_score_variant_sae_batch(
|
||
sequence=wt_aa_sequence, variants=variants, top_k_features=5,
|
||
)
|
||
# Forge cost: 20 calls (1 ref + 19 mut), not 38 (2 per variant)
|
||
```
|
||
|
||
**Mapping SAE categories → ACMG support**:
|
||
| SAE category lost | Mechanistic claim | ACMG line |
|
||
|---|---|---|
|
||
| `catalytic` | Active-site disruption | PS3 (functional) candidate; supports PP3 |
|
||
| `ligand-binding` | Substrate/cofactor binding loss | Supports PP3 |
|
||
| `ptm` | Post-translational modification site | Supports PP3 |
|
||
| `domain` / `motif` | Domain integrity loss | Supports PP3 |
|
||
| `structural-stability` | Disulfide / coiled-coil disruption | Supports PP3 |
|
||
| `transmembrane` / `signal-peptide` | Targeting / membrane integration | Supports PP3 |
|
||
| (no interpretable change) | No mechanistic signal | Do not strengthen PP3 above the predictor score alone |
|
||
|
||
**Requires**: `ESM_API_KEY` (free non-commercial token at https://forge.evolutionaryscale.ai) and `pip install 'esm @ git+https://github.com/evolutionaryscale/esm@ee891c52'` (PyPI esm 3.2.x lacks SAEConfig). Outputs governed by EvolutionaryScale Cambrian Inference License — non-commercial use only.
|
||
|
||
---
|
||
|
||
### EVE - Evolutionary Variant Effect (NEW)
|
||
|
||
Unsupervised deep learning model using evolutionary data (Harvard/Oxford).
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `EVE_get_variant_score` | Get EVE score via VEP | `chrom`, `pos`, `ref`, `alt` OR `variant` (HGVS) |
|
||
| `EVE_get_gene_info` | Check if gene has EVE coverage | `gene_symbol` |
|
||
|
||
**Example - Score variant**:
|
||
```python
|
||
# Via genomic coordinates
|
||
result = tu.tools.EVE_get_variant_score(
|
||
chrom="17",
|
||
pos=7674220,
|
||
ref="C",
|
||
alt="T"
|
||
)
|
||
|
||
# Or via HGVS
|
||
result = tu.tools.EVE_get_variant_score(
|
||
variant="ENST00000269305.4:c.100G>A"
|
||
)
|
||
# Returns: eve_score, classification, gene, polyphen/sift from VEP
|
||
```
|
||
|
||
**EVE Score Interpretation**:
|
||
| Score | Classification | ACMG Support |
|
||
|-------|----------------|--------------|
|
||
| >0.5 | Likely pathogenic | PP3 |
|
||
| ≤0.5 | Likely benign | BP4 |
|
||
|
||
**Note**: EVE covers ~3,000 disease-related genes. Use `EVE_get_gene_info` to check coverage.
|
||
|
||
---
|
||
|
||
### Integrating Prediction Tools
|
||
|
||
**Best Practice for VUS Classification**:
|
||
|
||
```python
|
||
def get_multi_predictor_evidence(tu, variant_info):
|
||
"""
|
||
Combine multiple predictors for robust PP3/BP4 assignment.
|
||
"""
|
||
evidence = []
|
||
|
||
# 1. CADD (all variants)
|
||
cadd = tu.tools.CADD_get_variant_score(
|
||
chrom=variant_info['chrom'],
|
||
pos=variant_info['pos'],
|
||
ref=variant_info['ref'],
|
||
alt=variant_info['alt']
|
||
)
|
||
if cadd.get('status') == 'success':
|
||
score = cadd['data']['phred_score']
|
||
evidence.append({
|
||
'tool': 'CADD',
|
||
'score': score,
|
||
'damaging': score >= 20
|
||
})
|
||
|
||
# 2. AlphaMissense (missense only)
|
||
if variant_info.get('uniprot_id') and variant_info.get('aa_change'):
|
||
am = tu.tools.AlphaMissense_get_variant_score(
|
||
uniprot_id=variant_info['uniprot_id'],
|
||
variant=variant_info['aa_change']
|
||
)
|
||
if am.get('status') == 'success' and am.get('data'):
|
||
evidence.append({
|
||
'tool': 'AlphaMissense',
|
||
'score': am['data'].get('pathogenicity_score'),
|
||
'classification': am['data'].get('classification'),
|
||
'damaging': am['data'].get('classification') == 'pathogenic'
|
||
})
|
||
|
||
# 3. EVE (via VEP)
|
||
eve = tu.tools.EVE_get_variant_score(
|
||
chrom=variant_info['chrom'],
|
||
pos=variant_info['pos'],
|
||
ref=variant_info['ref'],
|
||
alt=variant_info['alt']
|
||
)
|
||
if eve.get('status') == 'success':
|
||
eve_scores = eve['data'].get('eve_scores', [])
|
||
if eve_scores:
|
||
evidence.append({
|
||
'tool': 'EVE',
|
||
'score': eve_scores[0].get('eve_score'),
|
||
'damaging': eve_scores[0].get('eve_score', 0) > 0.5
|
||
})
|
||
|
||
# Consensus
|
||
damaging = sum(1 for e in evidence if e.get('damaging'))
|
||
benign = sum(1 for e in evidence if not e.get('damaging'))
|
||
|
||
return {
|
||
'predictions': evidence,
|
||
'damaging_count': damaging,
|
||
'benign_count': benign,
|
||
'acmg_pp3': damaging >= 2 and benign == 0,
|
||
'acmg_bp4': benign >= 2 and damaging == 0
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Somatic & Disease Association Tools (NEW)
|
||
|
||
### COSMIC - Somatic Cancer Mutations
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `COSMIC_search_mutations` | Search mutations | `operation="search"`, `terms`, `max_results` |
|
||
| `COSMIC_get_mutations_by_gene` | Gene mutations | `operation="get_by_gene"`, `gene`, `genome_build` |
|
||
|
||
**Example - Check if variant is somatic hotspot**:
|
||
```python
|
||
# Search for specific mutation
|
||
result = tu.tools.COSMIC_search_mutations(
|
||
operation="search",
|
||
terms="BRAF V600E",
|
||
max_results=20
|
||
)
|
||
# Returns: mutation_id, cancer types, frequency
|
||
|
||
# Get all mutations for gene (hotspot analysis)
|
||
gene_muts = tu.tools.COSMIC_get_mutations_by_gene(
|
||
operation="get_by_gene",
|
||
gene="BRAF",
|
||
max_results=200
|
||
)
|
||
# Returns: All mutations with cancer type distribution
|
||
```
|
||
|
||
**COSMIC Evidence for ACMG**:
|
||
| Finding | ACMG Code | Application |
|
||
|---------|-----------|-------------|
|
||
| Recurrent somatic hotspot | PS3 | Functional evidence |
|
||
| Frequent in COSMIC (>100) | PM1 | Hotspot/functional domain |
|
||
| Rare in COSMIC | - | Consider other evidence |
|
||
|
||
### OMIM - Mendelian Disease Context
|
||
|
||
**⚠️ Requires**: `OMIM_API_KEY` environment variable
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `OMIM_search` | Search genes/diseases | `operation="search"`, `query`, `limit` |
|
||
| `OMIM_get_entry` | Detailed entry | `operation="get_entry"`, `mim_number` |
|
||
| `OMIM_get_clinical_synopsis` | Clinical features | `operation="get_clinical_synopsis"`, `mim_number` |
|
||
| `OMIM_get_gene_map` | Gene-disease map | `operation="get_gene_map"`, `mim_number` |
|
||
|
||
**Example - Get gene-disease context**:
|
||
```python
|
||
# Search for gene in OMIM
|
||
search = tu.tools.OMIM_search(
|
||
operation="search",
|
||
query="BRCA1",
|
||
limit=5
|
||
)
|
||
|
||
# Get detailed entry with clinical info
|
||
entry = tu.tools.OMIM_get_entry(
|
||
operation="get_entry",
|
||
mim_number="113705" # BRCA1
|
||
)
|
||
|
||
# Get clinical synopsis for phenotype matching
|
||
synopsis = tu.tools.OMIM_get_clinical_synopsis(
|
||
operation="get_clinical_synopsis",
|
||
mim_number="114480" # Breast-ovarian cancer
|
||
)
|
||
```
|
||
|
||
**OMIM Entry Types**:
|
||
| Prefix | Type | Example |
|
||
|--------|------|---------|
|
||
| * | Gene | *113705 (BRCA1) |
|
||
| # | Phenotype with known gene | #114480 (BRCA1 cancer) |
|
||
| % | Phenotype, unknown molecular basis | Mapped locus only |
|
||
| + | Gene and phenotype combined | Historical entries |
|
||
|
||
### DisGeNET - Gene-Disease Associations
|
||
|
||
**⚠️ Requires**: `DISGENET_API_KEY` environment variable
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `DisGeNET_search_gene` | Diseases for gene | `operation="search_gene"`, `gene`, `limit` |
|
||
| `DisGeNET_search_disease` | Genes for disease | `operation="search_disease"`, `disease` |
|
||
| `DisGeNET_get_gda` | Curated associations | `operation="get_gda"`, `gene`, `source`, `min_score` |
|
||
| `DisGeNET_get_vda` | Variant-disease | `operation="get_vda"`, `variant` or `gene` |
|
||
|
||
**Example - Get gene-disease evidence**:
|
||
```python
|
||
# Gene-disease associations
|
||
gda = tu.tools.DisGeNET_search_gene(
|
||
operation="search_gene",
|
||
gene="BRCA1",
|
||
limit=20
|
||
)
|
||
# Returns: Associated diseases with scores
|
||
|
||
# High-confidence curated associations
|
||
curated = tu.tools.DisGeNET_get_gda(
|
||
operation="get_gda",
|
||
gene="BRCA1",
|
||
source="CURATED",
|
||
min_score=0.5
|
||
)
|
||
|
||
# Variant-disease associations
|
||
vda = tu.tools.DisGeNET_get_vda(
|
||
operation="get_vda",
|
||
gene="BRCA1",
|
||
limit=30
|
||
)
|
||
```
|
||
|
||
**DisGeNET Score for ACMG**:
|
||
| Score | Strength | ACMG Code |
|
||
|-------|----------|-----------|
|
||
| >0.7 | Strong gene-disease | PP4 (phenotype specific) |
|
||
| 0.4-0.7 | Moderate evidence | Supporting |
|
||
| <0.4 | Weak/Literature only | Insufficient |
|
||
|
||
---
|
||
|
||
## Regulatory Context Tools (NEW)
|
||
|
||
### ChIPAtlas - Transcription Factor Binding
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `ChIPAtlas_enrichment_analysis` | TF binding enrichment | `gene`, `cell_type` |
|
||
| `ChIPAtlas_get_peak_data` | ChIP-seq peaks | `gene`, `experiment_type` |
|
||
| `ChIPAtlas_search_datasets` | Find experiments | `antigen`, `cell_type` |
|
||
|
||
**Example - Check TF binding at variant**:
|
||
```python
|
||
# Get TF binding near gene
|
||
tf_binding = tu.tools.ChIPAtlas_enrichment_analysis(
|
||
gene="BRCA1",
|
||
cell_type="all"
|
||
)
|
||
# Returns: TFs with binding peaks near gene
|
||
|
||
# Get specific peaks
|
||
peaks = tu.tools.ChIPAtlas_get_peak_data(
|
||
gene="BRCA1",
|
||
experiment_type="TF"
|
||
)
|
||
```
|
||
|
||
**Use for**: Non-coding variants that may disrupt TF binding sites
|
||
|
||
### ENCODE - Regulatory Elements
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `ENCODE_search_experiments` | Find regulatory data | `assay_title`, `biosample` |
|
||
| `ENCODE_get_experiment` | Experiment details | `accession` |
|
||
| `ENCODE_get_biosample` | Sample annotations | `accession` |
|
||
|
||
### Sequence Deep-Learning Variant-Effect Predictors
|
||
|
||
Predict the functional impact of a non-coding (and, for Evo 2, any) variant directly from sequence — the mechanistic evidence (PS3_supporting / PP3) that SIFT/PolyPhen/AlphaMissense cannot give for non-coding loci. Outputs are Δ (alt − ref) effect sizes, not calibrated probabilities.
|
||
|
||
| Tool | Predicts | Access |
|
||
|------|----------|--------|
|
||
| `AlphaGenome_score_variant` | RNA-seq/ATAC/CAGE/splice track Δ (1 Mb, single-base) | hosted API — `ALPHA_GENOME_API_KEY` |
|
||
| `run_enformer_variant_effect` | Δ across 5,313 human tracks (196 kb) | remote MCP server |
|
||
| `run_borzoi_variant_effect` | RNA-seq coverage Δ (expression/splicing, 524 kb) | remote MCP server |
|
||
| `run_chrombpnet_variant_effect` | chromatin accessibility Δ (ATAC/DNase, base-res) | remote MCP server |
|
||
| `Evo2_score_variant` | genome-LM delta log-likelihood; coding + non-coding | hosted NIM — `NVIDIA_API_KEY` |
|
||
|
||
**Inputs**: `AlphaGenome_score_variant` → `chromosome`,`position`,`reference_bases`,`alternate_bases`,`output_type`,`sequence_length`. `Evo2_score_variant` → `sequence`+`position`+`alternate` (or `ref_sequence`/`alt_sequence`), optional `model` (`evo2-40b`/`evo2-7b`). The Enformer/Borzoi/ChromBPNet remote tools take the variant locus. See SKILL.md Phase 2.5 for selection guidance.
|
||
|
||
**Example - Get regulatory annotations**:
|
||
```python
|
||
# Search for regulatory data near variant
|
||
experiments = tu.tools.ENCODE_search_experiments(
|
||
assay_title="ATAC-seq",
|
||
biosample="heart"
|
||
)
|
||
# Returns: Open chromatin experiments
|
||
```
|
||
|
||
**Key ENCODE Assays**:
|
||
| Assay | Purpose | Relevance |
|
||
|-------|---------|-----------|
|
||
| ATAC-seq | Open chromatin | Accessible regions |
|
||
| H3K27ac | Active enhancers | Regulatory activity |
|
||
| H3K4me3 | Active promoters | Promoter regions |
|
||
| CTCF | Insulator binding | Chromatin structure |
|
||
|
||
---
|
||
|
||
## Expression Context Tools (NEW)
|
||
|
||
### CELLxGENE - Single-Cell Expression
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `CELLxGENE_get_expression_data` | Cell-type expression | `gene`, `tissue` |
|
||
| `CELLxGENE_get_cell_metadata` | Cell annotations | `gene` |
|
||
|
||
**Example - Validate tissue expression**:
|
||
```python
|
||
# Get expression in disease-relevant tissue
|
||
expression = tu.tools.CELLxGENE_get_expression_data(
|
||
gene="FBN1",
|
||
tissue="heart"
|
||
)
|
||
# Returns: Expression per cell type (cardiomyocytes, fibroblasts, etc.)
|
||
```
|
||
|
||
**Why use it**: Confirms gene is expressed in phenotype-relevant cells
|
||
|
||
---
|
||
|
||
## Literature Tools (ENHANCED)
|
||
|
||
### BioRxiv/MedRxiv - Preprints
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `EuropePMC_search_articles` | Search preprints (bioRxiv/medRxiv) | `query`, `source='PPR'`, `pageSize` |
|
||
| `BioRxiv_get_preprint` | Get preprint by DOI | `doi` |
|
||
|
||
**Example - Search preprints** (bioRxiv/medRxiv don't have search APIs, use EuropePMC):
|
||
```python
|
||
# Search for recent findings
|
||
preprints = tu.tools.EuropePMC_search_articles(
|
||
query="BRCA1 variant functional",
|
||
source="PPR", # PPR = Preprints only
|
||
pageSize=10
|
||
)
|
||
```
|
||
|
||
**⚠️ Important**: Always flag preprints as NOT peer-reviewed
|
||
|
||
### OpenAlex - Citation Analysis
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `openalex_search_works` | Search with citations | `query`, `limit` |
|
||
|
||
**Example - Get citation counts**:
|
||
```python
|
||
# Get citation metrics for key paper
|
||
work = tu.tools.openalex_search_works(
|
||
query="BRCA1 functional study pathogenic",
|
||
limit=5
|
||
)
|
||
# Returns: Papers with cited_by_count, is_oa, etc.
|
||
```
|
||
|
||
### Semantic Scholar - AI-Ranked Search
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `SemanticScholar_search_papers` | AI-ranked search | `query`, `limit` |
|
||
|
||
**Example**:
|
||
```python
|
||
papers = tu.tools.SemanticScholar_search_papers(
|
||
query="BRCA1 c.5266dupC pathogenic",
|
||
limit=15
|
||
)
|
||
```
|
||
|
||
---
|
||
|
||
### Ensembl - Variant Effect Predictor
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `EnsemblVar_get_variant_consequences` | VEP annotations | `variant_id` |
|
||
| `ensembl_lookup_gene` | Gene details | `gene_id` |
|
||
|
||
**Example - Get VEP data**:
|
||
```python
|
||
result = tu.tools.EnsemblVar_get_variant_consequences(
|
||
variant_id="rs28934576"
|
||
)
|
||
# Returns: Consequence, transcript, SIFT, PolyPhen
|
||
```
|
||
|
||
---
|
||
|
||
## Disease Association Tools
|
||
|
||
### OMIM - Gene-Disease Relationships
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `OMIM_search` | Search by gene/disease | `query` |
|
||
| `OMIM_get_entry` | Get MIM entry | `mim_number` |
|
||
|
||
**Example - Get OMIM associations**:
|
||
```python
|
||
result = tu.tools.OMIM_search(query="BRCA1")
|
||
# Returns: MIM#, gene-phenotype relationships, inheritance
|
||
```
|
||
|
||
---
|
||
|
||
### ClinGen - Gene Validity
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `ClinGen_gene_validity` | Get curation status | `gene` |
|
||
| `ClinGen_dosage` | Dosage sensitivity | `gene` |
|
||
|
||
**Gene Validity Levels**:
|
||
| Level | Meaning |
|
||
|-------|---------|
|
||
| Definitive | Strong evidence, replicated |
|
||
| Strong | Considerable evidence |
|
||
| Moderate | Some evidence |
|
||
| Limited | Minimal evidence |
|
||
| Disputed | Conflicting evidence |
|
||
| Refuted | Evidence against |
|
||
|
||
---
|
||
|
||
## Structural Analysis Tools
|
||
|
||
### PDB - Experimental Structures
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `PDBe_get_uniprot_mappings` | Find structures | `uniprot_id` |
|
||
| `RCSBData_get_entry` | Download PDB | `pdb_id` |
|
||
|
||
**Example - Get structure**:
|
||
```python
|
||
# Find PDB structures for TP53
|
||
hits = tu.tools.PDBe_get_uniprot_mappings(uniprot_id="P04637")
|
||
if hits:
|
||
structure = tu.tools.PDB_get_structure(pdb_id=hits[0]['pdb_id'])
|
||
```
|
||
|
||
### AlphaFold - Predicted Structures
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `alphafold_get_prediction` | Get AF DB prediction | `accession` |
|
||
| `NvidiaNIM_alphafold2` | Predict de novo | `sequence`, `algorithm` |
|
||
|
||
**Example - Get AlphaFold structure**:
|
||
```python
|
||
# From AlphaFold DB
|
||
structure = tu.tools.alphafold_get_prediction(accession="P04637")
|
||
|
||
# Or predict de novo
|
||
structure = tu.tools.NvidiaNIM_alphafold2(
|
||
sequence=protein_sequence,
|
||
algorithm="mmseqs2"
|
||
)
|
||
```
|
||
|
||
**pLDDT Interpretation**:
|
||
| Score | Confidence | Use for Variant |
|
||
|-------|------------|-----------------|
|
||
| >90 | Very high | Reliable position assessment |
|
||
| 70-90 | High | Reliable |
|
||
| 50-70 | Moderate | Use with caution |
|
||
| <50 | Low | Likely disordered |
|
||
|
||
---
|
||
|
||
### Domain/Function Tools
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `InterPro_get_protein_domains` | Domain annotations | `accession` |
|
||
| `UniProt_get_function_by_accession` | Functional sites | `accession` |
|
||
|
||
**Example - Get domains**:
|
||
```python
|
||
domains = tu.tools.InterPro_get_protein_domains(accession="P04637")
|
||
# Returns: Domain boundaries, types, functions
|
||
```
|
||
|
||
---
|
||
|
||
## Literature Tools
|
||
|
||
### PubMed - Literature Search
|
||
|
||
| Tool | Purpose | Key Parameters |
|
||
|------|---------|----------------|
|
||
| `PubMed_search_articles` | Search articles | `query`, `max_results` |
|
||
| `PubMed_get_article` | Get abstract | `pmid` |
|
||
|
||
**Example - Search for functional studies**:
|
||
```python
|
||
# Gene + variant search
|
||
result = tu.tools.PubMed_search_articles(
|
||
query="BRCA1 AND c.5266dupC",
|
||
max_results=10
|
||
)
|
||
|
||
# Functional studies
|
||
result = tu.tools.PubMed_search_articles(
|
||
query="BRCA1 AND functional study",
|
||
max_results=20
|
||
)
|
||
```
|
||
|
||
**Search Strategies**:
|
||
| Strategy | Query Pattern |
|
||
|----------|---------------|
|
||
| Specific variant | `"{GENE} AND ({HGVS} OR {legacy})"` |
|
||
| Functional | `"{GENE} AND (functional study OR mutagenesis)"` |
|
||
| Clinical | `"{GENE} AND case report AND {phenotype}"` |
|
||
| Review | `"{GENE} AND review[pt]"` |
|
||
|
||
---
|
||
|
||
## Workflow Code Examples
|
||
|
||
### Example 1: Complete Variant Annotation
|
||
|
||
```python
|
||
def annotate_variant(tu, variant_hgvs, gene):
|
||
"""Complete variant annotation workflow."""
|
||
|
||
# Phase 1: Get aggregated annotations
|
||
annotations = tu.tools.MyVariant_query_variants(
|
||
variant_id=variant_hgvs,
|
||
fields="clinvar,gnomad,cadd,dbnsfp"
|
||
)
|
||
|
||
# Phase 2: ClinVar detail
|
||
clinvar = tu.tools.ClinVar_search_variants(variant=variant_hgvs)
|
||
|
||
# Phase 3: Population frequency
|
||
gnomad = tu.tools.gnomad_search_variants(variant=variant_hgvs)
|
||
|
||
# Phase 4: Gene context
|
||
omim = tu.tools.OMIM_search(query=gene)
|
||
|
||
# Phase 5: Literature
|
||
literature = tu.tools.PubMed_search_articles(
|
||
query=f"{gene} AND {variant_hgvs}",
|
||
max_results=20
|
||
)
|
||
|
||
return {
|
||
'annotations': annotations,
|
||
'clinvar': clinvar,
|
||
'gnomad': gnomad,
|
||
'omim': omim,
|
||
'literature': literature
|
||
}
|
||
```
|
||
|
||
### Example 2: Structural Analysis for VUS
|
||
|
||
```python
|
||
def structural_analysis_for_vus(tu, gene, uniprot_id, residue_position):
|
||
"""Structural analysis for VUS missense variants."""
|
||
|
||
# Try PDB first
|
||
pdb_structures = tu.tools.PDBe_get_uniprot_mappings(uniprot_id=uniprot_id)
|
||
|
||
if pdb_structures:
|
||
# Use best resolution experimental structure
|
||
best_pdb = sorted(pdb_structures, key=lambda x: x.get('resolution', 10))[0]
|
||
structure = tu.tools.PDB_get_structure(pdb_id=best_pdb['pdb_id'])
|
||
structure_source = f"PDB {best_pdb['pdb_id']}"
|
||
else:
|
||
# Fallback to AlphaFold
|
||
structure = tu.tools.alphafold_get_prediction(accession=uniprot_id)
|
||
structure_source = "AlphaFold DB"
|
||
|
||
# Get domain information
|
||
domains = tu.tools.InterPro_get_protein_domains(accession=uniprot_id)
|
||
|
||
# Get functional sites
|
||
functions = tu.tools.UniProt_get_function_by_accession(accession=uniprot_id)
|
||
|
||
# Analyze residue context
|
||
analysis = {
|
||
'structure_source': structure_source,
|
||
'domains': identify_domain(domains, residue_position),
|
||
'functional_sites': find_nearby_sites(functions, residue_position),
|
||
'pm1_applicable': assess_pm1(domains, functions, residue_position)
|
||
}
|
||
|
||
return analysis
|
||
```
|
||
|
||
### Example 3: ACMG Classification
|
||
|
||
```python
|
||
def calculate_acmg_classification(evidence_codes):
|
||
"""Calculate ACMG classification from evidence codes."""
|
||
|
||
# Count evidence
|
||
pathogenic = {
|
||
'very_strong': [],
|
||
'strong': [],
|
||
'moderate': [],
|
||
'supporting': []
|
||
}
|
||
benign = {
|
||
'stand_alone': [],
|
||
'strong': [],
|
||
'supporting': []
|
||
}
|
||
|
||
for code, strength in evidence_codes:
|
||
if code.startswith(('PVS', 'PS', 'PM', 'PP')):
|
||
# Pathogenic evidence
|
||
if strength == 'very_strong':
|
||
pathogenic['very_strong'].append(code)
|
||
elif strength == 'strong':
|
||
pathogenic['strong'].append(code)
|
||
elif strength == 'moderate':
|
||
pathogenic['moderate'].append(code)
|
||
else:
|
||
pathogenic['supporting'].append(code)
|
||
else:
|
||
# Benign evidence
|
||
if code == 'BA1':
|
||
benign['stand_alone'].append(code)
|
||
elif strength == 'strong':
|
||
benign['strong'].append(code)
|
||
else:
|
||
benign['supporting'].append(code)
|
||
|
||
# Apply ACMG rules
|
||
if benign['stand_alone']:
|
||
return 'Benign'
|
||
|
||
if len(benign['strong']) >= 2:
|
||
return 'Benign'
|
||
|
||
vs = len(pathogenic['very_strong'])
|
||
s = len(pathogenic['strong'])
|
||
m = len(pathogenic['moderate'])
|
||
p = len(pathogenic['supporting'])
|
||
|
||
if (vs >= 1 and (s >= 1 or m >= 1 or m >= 2 or p >= 2)) or \
|
||
(s >= 2) or \
|
||
(s >= 1 and m >= 3):
|
||
return 'Pathogenic'
|
||
|
||
if (vs >= 1 and m >= 1) or \
|
||
(s >= 1 and m >= 1 or m >= 2) or \
|
||
(s >= 1 and p >= 2):
|
||
return 'Likely Pathogenic'
|
||
|
||
if len(benign['strong']) >= 1 and len(benign['supporting']) >= 1:
|
||
return 'Likely Benign'
|
||
|
||
return 'VUS'
|
||
```
|
||
|
||
---
|
||
|
||
## Fallback Chains
|
||
|
||
### Variant Annotations
|
||
| Primary | Fallback 1 | Fallback 2 |
|
||
|---------|------------|------------|
|
||
| `MyVariant_query_variants` | `ClinVar_search_variants` + `gnomad_search_variants` | Direct database queries |
|
||
|
||
### Structure
|
||
| Primary | Fallback 1 | Fallback 2 |
|
||
|---------|------------|------------|
|
||
| `PDBe_get_uniprot_mappings` | `alphafold_get_prediction` | `NvidiaNIM_alphafold2` |
|
||
|
||
### Gene Information
|
||
| Primary | Fallback 1 | Fallback 2 |
|
||
|---------|------------|------------|
|
||
| `OMIM_search` | `NCBIGene_search` | `ensembl_lookup_gene` |
|
||
|
||
### Literature
|
||
| Primary | Fallback 1 |
|
||
|---------|------------|
|
||
| `PubMed_search_articles` | `EuropePMC_search_articles` |
|
||
|
||
---
|
||
|
||
## Common Parameter Mistakes
|
||
|
||
| Tool | Wrong | Correct |
|
||
|------|-------|---------|
|
||
| `MyVariant_query_variants` | `id="rs123"` | `variant_id="rs123"` |
|
||
| `ClinVar_search_variants` | `gene="BRCA1:c.123"` | `variant="NM_007294.4:c.123A>G"` |
|
||
| `gnomad_search_variants` | `variant="c.123A>G"` | `variant="17-41245466-A-G"` |
|
||
| `alphafold_get_prediction` | `uniprot="P04637"` | `accession="P04637"` |
|
||
|
||
---
|
||
|
||
## ACMG Code Quick Reference
|
||
|
||
### Pathogenic Codes
|
||
| Code | Strength | Trigger |
|
||
|------|----------|---------|
|
||
| PVS1 | Very Strong | Null in LOF gene |
|
||
| PS1 | Strong | Same AA as pathogenic |
|
||
| PS2 | Strong | De novo (confirmed) |
|
||
| PS3 | Strong | Functional studies |
|
||
| PS4 | Strong | Prevalence in affected |
|
||
| PM1 | Moderate | Functional domain |
|
||
| PM2 | Moderate | Absent from controls |
|
||
| PM3 | Moderate | Trans with pathogenic |
|
||
| PM4 | Moderate | Protein length change |
|
||
| PM5 | Moderate | Novel at known position |
|
||
| PM6 | Moderate | De novo (unconfirmed) |
|
||
| PP1 | Supporting | Segregation |
|
||
| PP2 | Supporting | Low missense rate gene |
|
||
| PP3 | Supporting | Computational predictions |
|
||
| PP4 | Supporting | Phenotype specific |
|
||
| PP5 | Supporting | Reputable source |
|
||
|
||
### Benign Codes
|
||
| Code | Strength | Trigger |
|
||
|------|----------|---------|
|
||
| BA1 | Stand-alone | MAF >5% |
|
||
| BS1 | Strong | High frequency |
|
||
| BS2 | Strong | Homozygotes healthy |
|
||
| BS3 | Strong | No functional effect |
|
||
| BS4 | Strong | No segregation |
|
||
| BP1 | Supporting | Missense in LOF gene |
|
||
| BP2 | Supporting | Observed trans |
|
||
| BP3 | Supporting | In-frame, no function |
|
||
| BP4 | Supporting | Benign predictions |
|
||
| BP5 | Supporting | Alternate explanation |
|
||
| BP6 | Supporting | Reputable source |
|
||
| BP7 | Supporting | Synonymous |
|
||
|
||
---
|
||
|
||
## Quality Thresholds
|
||
|
||
### Computational Predictions (Updated)
|
||
| Predictor | Damaging | Uncertain | Benign |
|
||
|-----------|----------|-----------|--------|
|
||
| **AlphaMissense** | >0.564 | 0.34-0.564 | <0.34 |
|
||
| **CADD PHRED** | ≥20 | 15-20 | <15 |
|
||
| **EVE** | >0.5 | - | ≤0.5 |
|
||
| SIFT | <0.05 | 0.05-0.15 | >0.15 |
|
||
| PolyPhen-2 | >0.85 | 0.15-0.85 | <0.15 |
|
||
| REVEL | >0.75 | 0.5-0.75 | <0.5 |
|
||
|
||
**Recommended Order of Use**:
|
||
1. AlphaMissense (highest accuracy for missense, ~90%)
|
||
2. CADD (works for all variant types)
|
||
3. EVE (unsupervised, complements AlphaMissense)
|
||
4. SIFT/PolyPhen (legacy, for comparison)
|
||
|
||
### Concordance for PP3/BP4
|
||
| Predictors Agreeing | ACMG Application |
|
||
|---------------------|------------------|
|
||
| All damaging (≥3) | PP3 (supporting pathogenic) |
|
||
| All benign (≥3) | BP4 (supporting benign) |
|
||
| Mixed | Neither |
|
||
|
||
---
|
||
|
||
## Rate Limits
|
||
|
||
| Tool | Limit |
|
||
|------|-------|
|
||
| NVIDIA NIM tools | 40 RPM |
|
||
| PubMed | 3 requests/second |
|
||
| Ensembl | 15 requests/second |
|
||
|
||
Handle with appropriate delays between calls.
|