skills/tooluniverse-model-organism-genetics/SKILL.md
Cross-species genetic analysis using model organism databases (MGI mouse, ZFIN zebrafish, FlyBase fruit fly, WormBase worm, SGD yeast, RGD rat, GBIF taxonomy). Maps human genes to orthologs, retrieves phenotype/expression/functional data, assesses gene function conservation, and identifies the best animal model for studying a human gene or disease.
npx skillsauth add mims-harvard/tooluniverse tooluniverse-model-organism-geneticsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
When analysis requires computation (statistics, data processing, scoring, enrichment), write and run Python code via Bash. Don't describe what you would do — execute it and report actual results. Use ToolUniverse tools to retrieve data, then Python (pandas, scipy, statsmodels, matplotlib) to analyze it.
Map human genes to model organism orthologs and retrieve phenotype, expression, and functional data across six species. Synthesize cross-species evidence to assess gene function conservation and identify the best animal models for studying human genes and diseases.
Not for: human variant interpretation (tooluniverse-variant-analysis), drug target validation (tooluniverse-drug-target-validation), human disease characterization (tooluniverse-multiomic-disease-characterization).
LOOK UP, DON'T GUESS: When asked about a species' taxonomy, ecology, or biology, search GBIF/NCBI Taxonomy first. For GBIF: use GBIF_search_species(query="species name"), then use the nubKey (not key) from the result to call GBIF_get_species(speciesKey=nubKey) for full taxonomy (kingdom, phylum, class, order, family). The nubKey is the GBIF backbone key; the key is dataset-specific and often lacks higher taxonomy.
Sequence conservation across species implies functional conservation — but not always. A highly conserved gene in mouse and human likely has the same function. But regulatory differences (when/where a gene is expressed) can cause different phenotypes even from the same gene. Always check: is the protein domain conserved, or just raw sequence? Are there known regulatory differences? A 40% identity ortholog with a conserved catalytic domain can be more functionally equivalent than a 90% identity paralog in the same species.
Paralog contamination is a common pitfall. Gene families (e.g., FOXP1/2/3/4, HOX clusters) generate false ortholog hits. Distinguish true orthologs from paralogs by checking synteny (conserved gene neighborhood) and homology type: 1:1 = likely true ortholog; 1:many or many:many = likely paralog expansion. If the target species has a single gene where humans have multiple (e.g., one fly FoxP vs four human FOXPs), it is the co-ortholog of all human paralogs — note this explicitly.
Choose your model by the question:
Invertebrates (fly, worm, yeast) lack adaptive immunity and many vertebrate-specific organs — if the question involves those systems, they will be uninformative.
A knockout phenotype in mouse does not automatically predict the human phenotype. Ask three questions before inferring cross-species relevance:
When phenotypes differ across species, consider regulatory divergence: the coding sequence may be conserved while the expression pattern has shifted. This can produce organisms with the "same gene" but different tissues of expression and therefore different phenotypes.
MyGene_query_genes(query="<gene>") — get Ensembl ID, Entrez ID, UniProt, symbol (filter by symbol match; first hit may be a pseudogene)ensembl_lookup_gene(gene_id="<ensembl_id>", species="homo_sapiens") — validateHPO_search_terms(query="<disease>") — get HPO terms for phenotype matchingFallback if gene not found: UniProt_search(query="<gene>", organism="9606")
Output: canonical symbol, Ensembl ID (ENSG), Entrez ID, UniProt accession.
Primary: EnsemblCompara_get_orthologues(gene="<ENSG>", species="human", target_species="<species>")
Accepted target_species values: "mouse", "zebrafish", "drosophila_melanogaster" (NOT "fruitfly" — returns HTTP 400), "caenorhabditis_elegans", "saccharomyces_cerevisiae", "xenopus_tropicalis"
Fallbacks (if Ensembl Compara returns no results):
PANTHER_ortholog(gene_id="<symbol>", organism=9606, target_organism=<taxon>) — taxon IDs: mouse=10090, fly=7227, worm=6239, zebrafish=7955, yeast=559292, frog=8364NCBIDatasets_get_orthologs(gene_id="<entrez_id>") — broad, all vertebratesFlyMine_search(query="<human_gene_symbol>") — text search finds distant orthologs that automated tools miss; confirm with FlyBase_get_gene_orthologsWormBase_get_gene(gene_id="<gene_symbol>") — gene record often contains ortholog infoCross-reference via Monarch:
Monarch_search_gene(query="<gene_symbol>") — get Monarch gene entityMonarchV3_get_associations(subject="HGNC:<id>", category="biolink:GeneHomologAssociation") — all orthologsNote: "No ortholog found by tools" is not the same as "no ortholog exists." Sequence divergence does not equal functional divergence. Try manual search before concluding absence.
MGI_search_genes(query="<mouse_symbol>") — confirm MGI IDMGI_get_gene(gene_id="MGI:XXXXXXX") — full gene detailsMGI_get_phenotypes(gene_id="MGI:XXXXXXX", limit=50) — knockout/transgenic phenotypesExtract: MP ontology terms, allele types (null KO, conditional KO, point mutation), zygosity, lethality, disease model relevance.
Supplement via Monarch:
MonarchV3_get_associations(subject="MGI:XXXXXXX", category="biolink:GeneToPhenotypicFeatureAssociation")MonarchV3_get_associations(subject="MGI:XXXXXXX", category="biolink:GeneToDiseaseAssociation")FlyBase_get_gene(gene_id="FB:FBgnXXX") — gene details, function summaryFlyBase_get_gene_alleles(gene_id="FB:FBgnXXX", limit=20) — LOF, GOF, RNAi linesFlyBase_get_gene_disease_models(gene_id="FB:FBgnXXX") — human disease models in flyFlyBase_get_gene_expression(gene_id="FB:FBgnXXX") — tissue/stage expressionFlyBase_get_gene_interactions(gene_id="FB:FBgnXXX") — genetic and physical interactionsWormBase_get_gene(gene_id="WBGene00XXXXXX") — gene details, concise descriptionWormBase_get_phenotypes(gene_id="WBGene00XXXXXX") — RNAi and mutant phenotypesWormBase_get_expression(gene_id="WBGene00XXXXXX") — expression patternZFIN_get_gene(gene_id="ZFIN:ZDB-GENE-XXXXXX-X")ZFIN_get_gene_phenotypes(gene_id="...", limit=30) — morpholino/CRISPR/mutant phenotypesZFIN_get_gene_expression(gene_id="...") — spatiotemporal expressionDistinguish: morpholino knockdown (rapid, potential off-target), CRISPR mutant (more reliable), ENU mutant (unbiased forward genetics).
Xenbase_search_genes(query="<gene_symbol>")Xenbase_get_gene(gene_id="<xenbase_id>") — gene details, expression, phenotypesRat is the premier mammalian model for cardiovascular, metabolic, behavioral, and toxicology physiology. RGD's distinctive asset is its curated strain catalog (inbred/congenic/consomic lines) annotated as disease models — data not found in MGI or the Alliance.
Gene-level:
RGD_search_genes(query="<gene_symbol>") then RGD_get_gene(rgd_id=<id>) — rat gene detailsRGD_get_annotations(rgd_id=<id>) — disease/phenotype/GO annotations for the geneRGD_get_orthologs(rgd_id=<id>) — rat-to-human/mouse orthologsRGD_get_qtls_in_region(chromosome="1", start=1, stop=10000000, map_key=360) — QTLs in a regionStrain-level (rat disease models — use when the question is "which rat strain models disease X?"):
5. RGD_search_strains(query="hypertensive", strain_type="inbred") — find strains by keyword/type (types: inbred, congenic, consomic, transgenic, recombinant_inbred, ...)
6. RGD_get_strain(symbol="SHR") — full record for a named strain (e.g. SHR = spontaneously hypertensive rat, rgd_id 61000; BN = Brown Norway; SS = Dahl salt-sensitive; GK = Goto-Kakizaki diabetes)
7. RGD_get_strain_annotations(symbol="SHR", category="disease") — curated disease/phenotype annotations that define the strain as a model
Example — SHR is annotated to Left Ventricular Hypertrophy (DOID:9004616, qualifier MODEL: spontaneous) and arterial blood pressure trait (VT:2000000), making it the canonical model for essential hypertension and its cardiac sequelae.
SGD_search(query="<gene_symbol>", category="gene")SGD_get_gene(sgd_id="<sgd_id>") — function, pathwaySGD_get_phenotypes(sgd_id="<sgd_id>") — deletion and overexpression phenotypesSGD_get_go_annotations(sgd_id="<sgd_id>") — GO terms (often best-characterized for conserved genes)SGD_get_interactions(sgd_id="<sgd_id>") — synthetic lethal partners = potential drug targetsMost informative for: cell cycle, DNA repair, protein folding, metabolism, autophagy, secretory pathway, chromatin. Not informative for: multicellular processes (development, immunity, neural function).
This phase transforms per-organism data into biological insight.
Step 1: Build the phenotype matrix
| Feature | Human | Mouse | Fly | Worm | Zebrafish | Yeast | |---------|-------|-------|-----|------|-----------|-------| | Ortholog present? | — | | | | | | | LOF lethality | | | | | | | | Primary phenotype | | | | | | | | Expression domain | | | | | | |
Step 2: Identify the core/ancestral function Look for the phenotype that is most consistent across species. Abstract from species-specific terms:
Step 3: Cross-species phenotype mapping
Different species use different ontologies (HPO, MP, FBcv, WBPhenotype, ZP). Use MonarchV3_phenotype_similarity_search to find equivalent phenotypes via the uPheno ontology. When automated mapping fails, use biological reasoning to find conceptual equivalents.
Step 4: Conservation assessment
Step 5: Pathway conservation check
STRING_get_network(identifiers="<human_gene> <mouse_ortholog> <fly_ortholog>", species=9606) — check if interaction partners are also conservedReactomeAnalysis_pathway_enrichment(identifiers="<human_gene> <ortholog1> <ortholog2>") — shared pathway membershipStep 6: Organism recommendation Recommend which organism(s) to use for further study. Consider: phenotype match to human condition, available genetic tools, complementary models (e.g., mouse for physiology + fly for genetic screens), practical considerations (cost, throughput, imaging).
OMIM_search(query="<gene_symbol>") — Mendelian disease associationsClinVar_search_variants(query="<gene_symbol>") — pathogenic variantsClinGen_search_gene_validity(gene="<gene_symbol>") — gene-disease validity (Definitive/Strong/Moderate/Limited)HPO_search_terms(query="<disease_name>") — phenotype terms for cross-species comparisonMap HPO terms back to model organism phenotypes (Phase 6) to assess model fidelity.
These problems require computation and logical deduction, not database lookups. Work through the logic step by step.
Time-of-entry mapping: In Hfr x F- crosses, genes transfer in a fixed linear order from the integrated F factor origin. Interrupted mating at different times reveals gene order and map distances (1 minute ~ 1 map unit on the circular E. coli chromosome, ~47 kb).
Key reasoning steps:
lac operon logic (negative inducible):
trp operon attenuation (leader peptide mechanism):
Catabolite repression: Even with inducer present, lac operon requires cAMP-CAP for full expression. High glucose -> low cAMP -> low expression. This is POSITIVE regulation layered on top of the negative repressor system.
Three-point cross (most common exam problem):
Cotransduction frequency (phage P1 mapping in bacteria):
Before finalizing any report:
tools
Generate the success criteria for a task or question, then review work against them. Given a task, goal, or open-ended question, decompose it into scenarios, evaluation perspectives, and fine-grained weighted YES/NO criteria using the Recursive Expansion Tree (RET) method; if work is supplied, score it criterion-by-criterion and surface what is missing or could be better. Use when asked to self-review or check your own work, judge whether a task is done well or completely, build a definition-of-done or completeness checklist, create an evaluation rubric or grading criteria, score or grade answers to a question, set up an LLM-as-judge rubric, or when the user mentions self-review, completeness check, success criteria, evaluation criteria, scoring rubric, Qworld, or the RET algorithm.
tools
Find the real protein target(s) of a peptide from its sequence — peptide target deorphanization / off-target identification, for ANY target class (GPCR, ion channel, protease, cytokine/growth-factor receptor, enzyme, integrin), not only GPCRs. Use when a peptide has a phenotype but does not bind its hypothesized target, when a peptide binds a target in one species or assay but not another, or to screen candidate targets for an orphan peptide. A target-class router steers a multi-route keyless pipeline (PROSITE/ELM motif, BLAST homology, HGNC/InterPro/GPCRdb/GtoPdb target-family enumeration, OpenTargets phenotype anchor, EnsemblCompara/Alliance cross-species reconciliation) plus optional NVIDIA-NIM co-folding (Boltz2, AlphaFold2-Multimer, OpenFold3) for structural confirmation.
tools
Install or update ToolUniverse in Claude Science — create the conda env, install the tooluniverse pip package, and (re)build the tooluniverse-research skill by fetching the current workflow library from GitHub. Use for first-time setup, upgrading the ToolUniverse version, refreshing the bundled workflows after an upstream release, or reinstalling on a new machine.
tools
Install, set up, verify, update, pin, uninstall, or troubleshoot the ToolUniverse plugin on OpenAI Codex. ALWAYS consult this skill for any of those — don't answer from memory, because the exact marketplace name (mims-harvard/ToolUniverse), the "codex plugin marketplace add" then "codex plugin add -m tooluniverse" flow, Codex's startup auto-upgrade behavior, the uvx tooluniverse MCP server, and the API-key env vars are easy to get wrong. Use it whenever someone wants to get ToolUniverse (or "the 1000+ scientific tools" / "the harvard tools") working on Codex, says the Codex plugin or its tools/skills won't load, hits a uvx or MCP-server startup error, asks how Codex updates it, wants to pin or remove it, or finds it running an old tool version — even if they never say the word "plugin". Not for the Claude Code plugin (use tooluniverse-claude-code-plugin), for running research with the tools, or for authoring new tools or skills.