Compare commits
19
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0b7324d180 | ||
|
|
ca8242906e | ||
|
|
dcb71b5f48 | ||
|
|
110c739c82 | ||
|
|
a688abe6f8 | ||
|
|
1df2205640 | ||
|
|
ccaadc9aba | ||
|
|
9c9422a036 | ||
|
|
b4ffe4d66e | ||
|
|
4be5cd5c12 | ||
|
|
1b3a90a4b8 | ||
|
|
4a7d67f611 | ||
|
|
e96d50309b | ||
|
|
95bd9f1243 | ||
|
|
060bab80dc | ||
|
|
b2e5563461 | ||
|
|
d8d2c56b90 | ||
|
|
0f20c2709a | ||
|
|
1f0c27ea70 |
@@ -2,9 +2,9 @@
|
||||
title: "ToolUniverse Skills"
|
||||
task: ""
|
||||
lineage_type: import
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/bb632a34/skills/README.md
|
||||
upstream_sha: bb632a34
|
||||
imported_at: 2026-07-01
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/cfd26718/skills/README.md
|
||||
upstream_sha: cfd26718
|
||||
imported_at: 2026-08-08
|
||||
prompt_class: catalogue
|
||||
upstream_changes: accepted
|
||||
author: upstream
|
||||
@@ -13,7 +13,7 @@ validated: false
|
||||
|
||||
# ToolUniverse Skills
|
||||
|
||||
68 pre-built research skills for AI agents. Skills are automatically available — just ask naturally.
|
||||
69 pre-built research skills for AI agents. Skills are automatically available — just ask naturally.
|
||||
|
||||
```
|
||||
"Find the E. coli K-12 genome" → tooluniverse-sequence-retrieval
|
||||
@@ -54,6 +54,7 @@ npx skills add mims-harvard/ToolUniverse
|
||||
| `tooluniverse-epigenomics` | Epigenomics and gene regulation (ENCODE, JASPAR, methylation) |
|
||||
| `tooluniverse-expression-data-retrieval` | Gene expression datasets from ArrayExpress and BioStudies |
|
||||
| `tooluniverse-gene-enrichment` | Gene enrichment and pathway analysis (gseapy, PANTHER, STRING, etc.) |
|
||||
| `tooluniverse-gene-liability` | Human safety liability scoring for gene inhibition or loss of function |
|
||||
| `tooluniverse-gwas-drug-discovery` | GWAS signals to drug targets and repurposing opportunities |
|
||||
| `tooluniverse-gwas-finemapping` | Causal variant prioritization via statistical fine-mapping |
|
||||
| `tooluniverse-gwas-snp-interpretation` | Genetic variant interpretation from GWAS studies |
|
||||
@@ -124,4 +125,7 @@ skill-name/
|
||||
1. Create `skill-name/SKILL.md` with proper frontmatter
|
||||
2. Keep SKILL.md concise (<500 lines)
|
||||
3. Add examples for common use cases
|
||||
4. See `create-tooluniverse-skill` for the full workflow
|
||||
4. Keep canonical skills host-agnostic. Do not add client-specific metadata such
|
||||
as `agents/openai.yaml`; generate host-specific files in the corresponding
|
||||
plugin packaging layer instead.
|
||||
5. See `create-tooluniverse-skill` for the full workflow
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
lineage_type: import
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/e2520a96/skills/setup-tooluniverse/SKILL.md
|
||||
upstream_sha: e2520a96
|
||||
imported_at: 2026-06-26
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/089eb8e6/skills/setup-tooluniverse/SKILL.md
|
||||
upstream_sha: 089eb8e6
|
||||
imported_at: 2026-07-25
|
||||
prompt_class: catalogue
|
||||
upstream_changes: accepted
|
||||
name: setup-tooluniverse
|
||||
@@ -68,7 +68,7 @@ Make sure Step 2 is done, then try:
|
||||
uvx --from tooluniverse tu status # How many tools?
|
||||
uvx --from tooluniverse tu find 'drug safety' # Search by topic
|
||||
uvx --from tooluniverse tu info FAERS_count_death_related_by_drug # See params
|
||||
uvx --from tooluniverse tu run FAERS_count_death_related_by_drug '{"drug_name": "metformin"}'
|
||||
uvx --from tooluniverse tu run FAERS_count_death_related_by_drug '{"medicinalproduct": "metformin"}'
|
||||
```
|
||||
|
||||
First run takes ~30s (downloads package), then instant. **Shortcut**: `uv tool install tooluniverse` → then just use `tu` directly.
|
||||
@@ -84,7 +84,7 @@ First run takes ~30s (downloads package), then instant. **Shortcut**: `uv tool i
|
||||
| `tu info` | Show tool parameters and schema | `tu info PubMed_search_articles` |
|
||||
| `tu run` | Execute a tool | `tu run PubMed_search_articles '{"query": "CRISPR"}'` |
|
||||
| `tu test` | Test a tool with its example inputs | `tu test UniProt_get_entry_by_accession` |
|
||||
| `tu build` | Generate typed Python wrappers for Coding API | `tu build --output ./my_tools` |
|
||||
| `tu build` | Generate typed Python wrappers for Coding API (also regenerates the internal lazy-load registry in place — unaffected by `--output`) | `tu build --output ./my_tools` |
|
||||
| `tu serve` | Start MCP stdio server (same as `uvx tooluniverse`) | `tu serve` |
|
||||
|
||||
**Output flags** (most commands except `build`/`serve`): `--json` (pretty) or `--raw` (compact, pipe-friendly).
|
||||
@@ -93,12 +93,30 @@ Continue to **Step 3** (API Keys).
|
||||
|
||||
## SDK Setup
|
||||
|
||||
Make sure Step 2 is done. For detailed patterns, invoke the `tooluniverse-sdk` skill.
|
||||
> **Install `uv` first (Step 2). Do not use system `pip`.** On a current Mac
|
||||
> (Homebrew Python 3.13/3.14) `pip install tooluniverse` stops with
|
||||
> `error: externally-managed-environment` (PEP 668), and `python3 -m venv` can
|
||||
> fail at `ensurepip`. `uv` avoids both because it downloads and manages its own
|
||||
> Python.
|
||||
|
||||
```bash
|
||||
uv venv --python 3.12 # own Python + virtualenv, ignores system pip
|
||||
source .venv/bin/activate # Windows: .venv\Scripts\activate
|
||||
uv pip install tooluniverse
|
||||
```
|
||||
|
||||
`uv pip install` needs an active virtualenv — run `uv venv` first, or use
|
||||
`uv tool install tooluniverse` if you only want the `tu` command.
|
||||
|
||||
For detailed patterns, invoke the `tooluniverse-sdk` skill.
|
||||
|
||||
**Optional extras**: the base install covers API/database tools. Local ML,
|
||||
cheminformatics, and plotting tools need extras — `uv pip install
|
||||
'tooluniverse[ml]'`, `[visualization]`, `[bioinformatics]`, or `[all]`.
|
||||
Run `tooluniverse-doctor` to see which groups you are missing.
|
||||
Note `[all]` does **not** include `singlecell`, `smolagents`, `client`, or
|
||||
`build`; install those separately.
|
||||
|
||||
### Coding API — 3 calling patterns
|
||||
|
||||
**Pattern 1: Direct import** (typed, with autocomplete):
|
||||
@@ -130,9 +148,33 @@ Continue to **Step 3** (API Keys).
|
||||
|
||||
## MCP Setup (Chat Mode)
|
||||
|
||||
Make sure Step 2 is done (`uv --version` works).
|
||||
**Offer the two low-effort paths first.** Editing JSON by hand is the fallback,
|
||||
not the recommendation — a mistyped comma is the single most common setup
|
||||
failure. Only walk through the manual path if neither option below fits.
|
||||
|
||||
### Add ToolUniverse to your app's config
|
||||
**Path A — let an AI agent do it.** If the user already has any agent (Claude,
|
||||
Cursor, Copilot, Gemini, Codex...), they can paste this into it:
|
||||
|
||||
```
|
||||
Read https://aiscientist.tools/setup.md and set up ToolUniverse for me.
|
||||
```
|
||||
|
||||
The agent handles config, keys, skills, and validation. No terminal, no JSON.
|
||||
|
||||
**Path B — Claude Code users: one-liner, no config file at all.**
|
||||
|
||||
```bash
|
||||
claude plugin marketplace add mims-harvard/ToolUniverse
|
||||
claude plugin install tooluniverse@tooluniverse
|
||||
```
|
||||
|
||||
Installs MCP server + 115 skills + slash commands in one step. Then see the
|
||||
`tooluniverse-claude-code-plugin` skill's "Recommended: turn on auto-update"
|
||||
step so future releases apply without manual `claude plugin update`.
|
||||
|
||||
### Manual config (fallback)
|
||||
|
||||
Make sure Step 2 is done (`uv --version` works).
|
||||
|
||||
**Config file help** (if user seems unfamiliar): Config files are plain text that store settings — like a preference list for the app. You don't need to understand the format; just paste exactly what's shown below. Most apps have a Settings button that opens the file for you (see table). If the file is empty, paste the entire block. If it already has content, the agent should help merge it.
|
||||
|
||||
@@ -149,14 +191,23 @@ Make sure Step 2 is done (`uv --version` works).
|
||||
}
|
||||
```
|
||||
|
||||
**Config file locations:**
|
||||
|
||||
> **Claude Code users**: skip manual MCP config — use the plugin instead. Invoke the `tooluniverse-claude-code-plugin` skill or run:
|
||||
> **Paste safely.** Copy the block whole — do not retype it. If the file already
|
||||
> has an `mcpServers` block, add only the `"tooluniverse": { ... }` entry inside
|
||||
> it and put a comma after the previous entry. If the file was empty, paste the
|
||||
> whole block. Then validate before restarting the app:
|
||||
> ```bash
|
||||
> claude plugin marketplace add mims-harvard/ToolUniverse
|
||||
> claude plugin install tooluniverse@tooluniverse
|
||||
> python3 -m json.tool < "<path-to-config>" > /dev/null && echo "JSON OK"
|
||||
> ```
|
||||
> This installs MCP server + 115 skills + slash commands in one step.
|
||||
> A trailing comma after the last entry, or a missing one between entries, is
|
||||
> the usual cause of "MCP server won't start".
|
||||
|
||||
**`args` — `["tooluniverse"]` vs `["--refresh", "tooluniverse"]`**: plain is the
|
||||
default and starts fast from `uv`'s cache, but can stay on a cached older
|
||||
release until you run `uv cache clean tooluniverse`. Adding `--refresh` checks
|
||||
PyPI for the newest version on every launch — always current, a few seconds
|
||||
slower to start. Use plain unless the user specifically wants auto-updates.
|
||||
|
||||
**Config file locations:**
|
||||
|
||||
| Client | File | How to Access |
|
||||
|--------|------|---------------|
|
||||
@@ -302,7 +353,7 @@ Skills activate automatically based on user's question. Try: "Research the drug
|
||||
> tu info PubMed_search_articles # Check parameters
|
||||
> tu run PubMed_search_articles '{"query": "CRISPR cancer", "max_results": 3}'
|
||||
> tu run UniProt_get_entry_by_accession '{"accession": "P12345"}'
|
||||
> tu run FAERS_count_death_related_by_drug '{"drug_name": "metformin"}'
|
||||
> tu run FAERS_count_death_related_by_drug '{"medicinalproduct": "metformin"}'
|
||||
> ```
|
||||
|
||||
## Write Agent Memory
|
||||
@@ -352,14 +403,26 @@ NVIDIA_API_KEY=your_shared_key
|
||||
|
||||
| Issue | Fix |
|
||||
|-------|-----|
|
||||
| `error: externally-managed-environment` (PEP 668) | System `pip` refuses to install. Use `uv` — `uv venv --python 3.12 && source .venv/bin/activate && uv pip install tooluniverse`. Never `sudo pip` or `--break-system-packages`. |
|
||||
| `python3 -m venv` fails at `ensurepip` | Homebrew Python (3.13/3.14) is missing a working `ensurepip`. Use `uv venv --python 3.12` — `uv` supplies its own Python. |
|
||||
| `uv pip install` → "No virtual environment found" | Run `uv venv` first, or use `uv tool install tooluniverse` for just the `tu` command. |
|
||||
| `requires-python >= 3.10` | `uv python install 3.12` |
|
||||
| `uvx: command not found` | Run install script from Step 2, restart terminal |
|
||||
| Context window overflow | Verify using `uvx tooluniverse` (compact mode is default) |
|
||||
| `ModuleNotFoundError` | `uv pip install tooluniverse[all]` |
|
||||
| MCP server won't start | Test: `uvx tooluniverse` in terminal. Check JSON syntax. |
|
||||
| `ModuleNotFoundError` at tool runtime | An optional extra is missing. Run `tooluniverse-doctor` to see which group, then `uv pip install 'tooluniverse[ml]'` (or `[visualization]`, `[bioinformatics]`, `[all]`). |
|
||||
| Tools listed but fail when run | Normal for extras-backed tools — `tu status` counts loaded configs, not installed dependencies. `tooluniverse-doctor` reports which groups are missing. |
|
||||
| MCP server won't start | Test: `uvx tooluniverse` in terminal. Validate config with `python3 -m json.tool < <config>`. |
|
||||
| API key 401/403 | Check key in `env` block, restart app, verify key name |
|
||||
| Upgrade needed | `uv cache clean tooluniverse` then restart app |
|
||||
|
||||
**Health check**: `tooluniverse-doctor` reports tools that failed to load *and*
|
||||
which optional dependency groups are not installed. Use it first whenever a tool
|
||||
errors unexpectedly.
|
||||
|
||||
**`[all]` is not everything**: it covers `dev, docs, graph, visualization,
|
||||
space, embedding, ml, bioinformatics`. `singlecell`, `smolagents`, `client`,
|
||||
and `build` must be installed by name.
|
||||
|
||||
Still stuck? [GitHub issues](https://github.com/mims-harvard/ToolUniverse/issues) or email [Shanghua Gao](mailto:[email protected]).
|
||||
|
||||
## Quick Reference
|
||||
|
||||
+23
-3
@@ -1,8 +1,8 @@
|
||||
---
|
||||
lineage_type: import
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/e2520a96/skills/tooluniverse-admet-prediction/SKILL.md
|
||||
upstream_sha: e2520a96
|
||||
imported_at: 2026-06-26
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/089eb8e6/skills/tooluniverse-admet-prediction/SKILL.md
|
||||
upstream_sha: 089eb8e6
|
||||
imported_at: 2026-07-25
|
||||
prompt_class: unknown
|
||||
upstream_changes: accepted
|
||||
name: tooluniverse-admet-prediction
|
||||
@@ -33,6 +33,26 @@ Comprehensive pharmacokinetic and toxicity profiling integrating AI-based ADMET
|
||||
|
||||
**Input**: Drug name (e.g., "ibuprofen") OR SMILES string (e.g., "CC(C)Cc1ccc(cc1)C(C)C(=O)O")
|
||||
|
||||
## Before You Run
|
||||
|
||||
ADMETAI tools run a local model, so they need the `ml` extra:
|
||||
|
||||
```bash
|
||||
uv pip install 'tooluniverse[ml]'
|
||||
```
|
||||
|
||||
Without it the tools still appear in `tu list` (the config loads) but fail at
|
||||
call time with `ADMETModel requires 'admet-ai' package`. Run
|
||||
`tooluniverse-doctor` to confirm which optional groups are installed.
|
||||
|
||||
**Expected console noise — not errors.** The first ADMETAI call loads PyTorch
|
||||
and prints warnings such as missing-GPU / `Trainer` messages from
|
||||
PyTorch Lightning, and `TypedStorage is deprecated` from PyTorch. These are
|
||||
emitted by the underlying libraries during normal CPU inference. Predictions
|
||||
are unaffected — do not report them to the user as failures and do not retry
|
||||
the call because of them. Only treat output as a failure if the tool returns an
|
||||
`error` field or no predictions.
|
||||
|
||||
---
|
||||
|
||||
## COMPUTE, DON'T DESCRIBE
|
||||
|
||||
+4
-4
@@ -2,9 +2,9 @@
|
||||
title: "Adverse Event Detection - Tool Parameter Reference"
|
||||
task: ""
|
||||
lineage_type: import
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/e2520a96/skills/tooluniverse-adverse-event-detection/TOOL_REFERENCE.md
|
||||
upstream_sha: e2520a96
|
||||
imported_at: 2026-06-26
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/4d14233e/skills/tooluniverse-adverse-event-detection/TOOL_REFERENCE.md
|
||||
upstream_sha: 4d14233e
|
||||
imported_at: 2026-08-18
|
||||
prompt_class: unknown
|
||||
upstream_changes: accepted
|
||||
author: upstream
|
||||
@@ -29,7 +29,7 @@ Verified parameter names, response formats, and fallback chains for all tools us
|
||||
| `FAERS_count_reportercountry_by_drug_event` | `medicinalproduct` (REQUIRED), `patientsex`, `patientagegroup`, `serious` | Returns [{term: "US"/"GB"/..., count}] |
|
||||
| `FAERS_search_adverse_event_reports` | `medicinalproduct`, `limit` (max 100), `skip` | Returns individual case reports with patient/drug/reaction data |
|
||||
| `FAERS_search_reports_by_drug_and_reaction` | `medicinalproduct` (REQUIRED), `reactionmeddrapt` (REQUIRED), `limit`, `skip`, `patientsex`, `serious` | Returns individual reports filtered by specific reaction |
|
||||
| `FAERS_search_serious_reports_by_drug` | `medicinalproduct` (REQUIRED), `seriousnessdeath`, `seriousnesshospitalization`, `seriousnesslifethreatening`, `seriousnessdisabling`, `limit` | Returns serious event reports |
|
||||
| `FAERS_search_serious_reports_by_drug` | `medicinalproduct` (REQUIRED), `serious`, `seriousnessdeath`, `seriousnesshospitalization`, `seriousnesslifethreatening`, `seriousnessdisabling`, `limit` | Case reports. Despite the name it returns serious AND non-serious reports unless you pass `serious='Yes'` or one of the `seriousness*` criteria |
|
||||
|
||||
## FAERS Analytics Tools (operation-based)
|
||||
|
||||
|
||||
+192
-8
@@ -1,8 +1,8 @@
|
||||
---
|
||||
lineage_type: import
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/701afa3a/skills/tooluniverse-biomedical-fact-lookup/SKILL.md
|
||||
upstream_sha: 701afa3a
|
||||
imported_at: 2026-07-07
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/4d14233e/skills/tooluniverse-biomedical-fact-lookup/SKILL.md
|
||||
upstream_sha: 4d14233e
|
||||
imported_at: 2026-08-18
|
||||
prompt_class: unknown
|
||||
upstream_changes: accepted
|
||||
name: tooluniverse-biomedical-fact-lookup
|
||||
@@ -14,6 +14,36 @@ when_to_use: "A factual biomedical question has a single database-checkable answ
|
||||
|
||||
Factual biomedical questions — "which gene is in set X", "which gene is associated with disease Y according to DisGeNet", "which gene has a TF binding site per GTRD" — have an authoritative answer in a public database. Guessing from memory is unreliable (≈chance on niche annotations); the matching ToolUniverse tool returns the ground truth.
|
||||
|
||||
## Six traps that produce a confidently wrong answer
|
||||
|
||||
Each was observed producing a wrong answer on a real question. Check them before
|
||||
answering; the detail for each is further down.
|
||||
|
||||
1. **"Highest p-value" in GWAS means most significant** — the *smallest* number.
|
||||
Read literally it picks the study's weakest hit (`rs2476491` at 1e-06 instead
|
||||
of `rs7775055-G` at 3e-174).
|
||||
|
||||
2. **A window of "N bp upstream plus M bp downstream" spans N+M+1 bases** — the
|
||||
anchor counts. 100 either side of a TSS is 201 nt, not 200. Check the length
|
||||
you got against the length you asked for.
|
||||
|
||||
3. **HPA subcellular locations pool every cell line the antibody was tested in.**
|
||||
Report both `main_locations` and `additional_locations`, but when the question
|
||||
names a line, treat them as candidates and drop annotations belonging to
|
||||
another line — reciting all five is as wrong as reciting one.
|
||||
|
||||
4. **Allen Brain: answer the leaf structure, not its parent.** The atlas colours
|
||||
the specific structure and gives the parent a different colour, so
|
||||
"Hypothalamus" is wrong where `Lateral preoptic area` (#F2483B) is right.
|
||||
`AllenBrain_search_structures` returns `color_hex_triplet`.
|
||||
|
||||
5. **SCREEN's `is_proximal` is unreliable; filter on `element_type`** — `PLS`
|
||||
and `pELS` are TSS-proximal, `dELS` distal.
|
||||
|
||||
6. **Derived scores are release-pinned.** gnomAD pLI for APOC2 is 0.047 in r4
|
||||
and 0.402 in r2.1 — an 8.5x difference for the same gene. Set the release the
|
||||
question names and say which you used.
|
||||
|
||||
## RULE ZERO: Look it up, never guess
|
||||
|
||||
If a question names a database, a gene set, or any annotation that lives in a database, you MUST query the tool before answering. Answering a "according to <database>" question from memory is a failure mode — these annotations (predicted miRNA targets, ChIP-seq binding, curated gene sets, disease associations) are exactly what models hallucinate. A tool-verified answer beats any recalled fact.
|
||||
@@ -37,14 +67,65 @@ Most of these questions are MCQ with an "Insufficient information to answer the
|
||||
| **TF binding site / target** "according to GTRD" (e.g. PGM3) | `MSigDB_check_gene_in_set` (collection C3:TFT:GTRD) | set name = `<TF>_TARGET_GENES`, e.g. `PGM3_TARGET_GENES`; pass `gene` per option |
|
||||
| **pathway / hallmark** membership | `MSigDB_get_hallmark_geneset`, `MSigDB_get_geneset` | `HALLMARK_<NAME>` or exact set name |
|
||||
| **gene ↔ disease** association (DisGeNet, OpenTargets, OMIM) | `umls_search_concepts` → `DisGeNET_get_disease_genes`/`DisGeNET_get_gda`; `OpenTargets_*`, `MyDisease_get_disease`, `OMIM_search`; **text-mined fallback:** `PubTator3_LiteratureSearch` / `PubTator3_GetEntityRelations` (`e1=@GENE_<sym>`), `EPMC_get_text_mined_annotations` | DisGeNET needs a **UMLS CUI** (resolve via `umls_search_concepts` → `C0152200`, then `disease=C0152200`) + `DISGENET_API_KEY`. See the "in X but not Y" recipe below |
|
||||
| **mouse phenotype** gene set (MGI / MP:xxxxx, e.g. "increased carcinoma incidence") | `MGI_search_genes` → `MGI_get_phenotypes` | for **each** candidate gene: search → take the `MGI:` id → `MGI_get_phenotypes`; the matching gene is the one whose `phenotype_statement` list contains the phenotype the question names (see interpretation note) |
|
||||
| **mouse phenotype** gene set (MP / MGI, e.g. "increased melanoma incidence") | `MSigDB_check_gene_in_set` (mouse M5, set `MP_<PHENOTYPE>`) — fall back to `MGI_search_genes` → `MGI_get_phenotypes` | **one call per option** against the `MP_*` set (e.g. `MP_INCREASED_MELANOMA_INCIDENCE`); the member is the answer. Only if the set name doesn't resolve, use the MGI per-gene route below |
|
||||
| **gene genomic location** (Ensembl band, e.g. chr7q34) | `Ensembl_*` / `NCBIDatasets_get_gene_by_symbol` | resolve each option, compare cytoband/coordinates |
|
||||
| **variant / sequence** pathogenicity ("which variant/sequence is pathogenic *or* benign per ClinVar") | (only when genuinely unsure) `annotate_variant_multi_source`, `VEP_predict_pathogenicity`, `UniProt_get_disease_variants_by_accession` | **Be efficient — do NOT query every option (that causes timeouts).** Identify the protein once, find each option's single substitution, and reason about the specific residue changes directly; the base model is usually reliable on well-characterized ClinVar variants. Make at most ONE targeted tool call to resolve a truly uncertain variant. **Watch the question's polarity** (benign vs pathogenic): for "most likely benign", a common/reference-matching variant is the answer; for "most likely pathogenic", a rare damaging one is. |
|
||||
| **drug / compound** target, MoA, approval | `ChEMBL_*`, `OpenFDA_*`, `GtoPdb_*`, `PubChem_*` | resolve drug, query the relation |
|
||||
| **which drug for this patient** (clinical vignette naming a modifier) | `FDA_*_by_drug_name` — pick the section by modifier | see "Drug choice for a described patient" below |
|
||||
| **protein** function / domain / sequence | `UniProt_*` | resolve accession, read annotation |
|
||||
| **protein localization / expression** "according to the Human Protein Atlas" | `HPA_get_subcellular_location`, `HPA_get_rna_expression_by_source`, `HPA_get_comprehensive_gene_details_by_ensembl_id` | pass the gene symbol — an **antibody ID such as `HPA073143` also works** and resolves to its target gene. **Report main *and* additional locations** — see below |
|
||||
|
||||
| **brain region** in the Allen Mouse/Human Brain Atlas | `AllenBrain_search_structures` (`name` or `acronym`), `AllenBrain_get_structure` | reference-atlas regions are **colour-coded**: the result carries `color_hex_triplet`, so "the region shown in red" is answerable — see below |
|
||||
| **regulatory element / cCRE** near a gene (ENCODE SCREEN) | `SCREEN_search_cCREs_by_region` | filter on `element_type` (**PLS** and **pELS** are TSS-proximal, **dELS** distal) and read `dnase_zscore` |
|
||||
| **which variant is at / overlaps** a genomic region (ClinVar) | `ClinVar_search_by_region` | **not** `ClinVar_search_variants` — Entrez matches a variant's START, so a narrow window misses a CNV that spans the region but begins megabases upstream. Returns true overlaps, smallest span first |
|
||||
| **how many peaks / which datasets** for a TF experiment (ReMap) | `ReMap_list_datasets_for_target` | one GEO series can hold several datasets (GSE23852/FOXA1 = 2, with 60,158 and 67,736 peaks) — report them separately unless a total is asked for; `count_peaks: true` to get counts |
|
||||
| **protein interaction partners** (STRING) | `STRING_get_protein_interactions` | read the **`partner`** field, not `preferredName_B`: edges are ordered A/B by internal ID, so the queried protein sits in column A on about half of them |
|
||||
|
||||
When unsure which tool wraps a database, search the catalog by the *relation* (e.g. "gene disease association", "gene set members"), not the brand name — ToolUniverse usually already has it.
|
||||
|
||||
### Allen Brain Atlas — answer with the specific structure, not its parent
|
||||
|
||||
The reference atlas colours every structure, and `AllenBrain_search_structures`
|
||||
returns `color_hex_triplet`. A question naming a colour ("which region is
|
||||
annotated in red at coronal position 181") is asking which **leaf structure**
|
||||
carries that colour, e.g. `Lateral preoptic area` = `#F2483B`.
|
||||
|
||||
Answering with the enclosing region ("Hypothalamus") is wrong even though it
|
||||
contains the right area: the atlas colours the specific structure, and the
|
||||
parent has its own different colour. Search by name or acronym, compare
|
||||
`color_hex_triplet`, and give the structure whose colour matches. Note the same
|
||||
acronym can return several rows (hemisphere-specific and ontology-version
|
||||
entries) with different colours — prefer the row whose `name` matches the
|
||||
question's wording.
|
||||
|
||||
### Human Protein Atlas — report both location fields
|
||||
|
||||
`HPA_get_subcellular_location` splits its answer in two, and the split is not
|
||||
significance ranking:
|
||||
|
||||
```
|
||||
main_locations : ['Nucleoplasm']
|
||||
additional_locations : ['Primary cilium', ..., 'Cytosol']
|
||||
```
|
||||
|
||||
A question asking "what localization does this antibody show" wants the
|
||||
locations HPA reports, which is **both lists** — answering from `main_locations`
|
||||
alone drops real localizations and is a common way to be half-right (e.g.
|
||||
answering "Nucleoplasm" where HPA reports "Nucleoplasm, Cytosol"). Use
|
||||
`location_summary`, which already joins them, or read both fields.
|
||||
|
||||
Two further cautions:
|
||||
|
||||
- **Locations aggregate over cell lines.** HPA pools immunofluorescence across
|
||||
every line an antibody was tested in. If the question names one line (HEK293,
|
||||
U-2 OS), treat the list as the candidate set and say which line you are
|
||||
reporting for, rather than implying the aggregate is line-specific.
|
||||
- **Per-cell-type RNA values are only published for enriched cell types.** HPA's
|
||||
machine-readable fields give specificity plus nTPM/nCPM for the cell types a
|
||||
gene is enriched in; a value for an arbitrary cell type is not exposed. If a
|
||||
question asks for one that is absent, say so instead of substituting the
|
||||
nearest available number — those differ by an order of magnitude.
|
||||
|
||||
## MSigDB set-name conventions (the most common LAB-Bench pattern)
|
||||
|
||||
ToolUniverse's `MSigDB_*` tools cover several collections that LAB-Bench questions are built from. Get the set name right:
|
||||
@@ -53,8 +134,11 @@ ToolUniverse's `MSigDB_*` tools cover several collections that LAB-Bench questio
|
||||
- **C3:MIR:MIRDB** (miRDB v6.0 predicted miRNA targets) — `MIR<number>_<3P|5P>` (e.g. `MIR186_3P`, `MIR675_3P`). This *is* miRDB; do not say "no access to miRDB".
|
||||
- **C3:TFT:GTRD** (GTRD TF target genes) — `<TF>_TARGET_GENES` (e.g. `PGM3_TARGET_GENES`). This *is* GTRD.
|
||||
- **Hallmark** — `HALLMARK_<NAME>`.
|
||||
- **Mouse M5 (MGI mammalian phenotype)** — `MP_<PHENOTYPE_IN_CAPS>` (e.g. "increased melanoma incidence" → `MP_INCREASED_MELANOMA_INCIDENCE`). These are **mouse** sets: the tools try human then mouse automatically, or pass `species: "mouse"` to skip the human miss. Prefer this over querying each gene's full MGI phenotype list.
|
||||
|
||||
`MSigDB_get_gene_set_members` (operation `get_gene_set`) returns `{genes:[...]}`; `MSigDB_check_gene_in_set` (operation `check_gene_in_set`, param `gene`) returns `{is_member: bool}`.
|
||||
`MSigDB_get_gene_set_members` (operation `get_gene_set`) returns `{genes:[...]}`; `MSigDB_check_gene_in_set` (operation `check_gene_in_set`, param `gene`) returns `{is_member: bool}`. Both report which `species` collection matched.
|
||||
|
||||
**Fetch the set once, not once per option.** A multiple-choice question asks about one set and 3-5 candidates, so `MSigDB_get_gene_set_members` answers all of them in a single call — compare the options against the returned list yourself. Reserve `MSigDB_check_gene_in_set` for a single-gene question, or when the set is too large to return comfortably.
|
||||
|
||||
## Gene–disease "in database X but NOT database Y" recipe
|
||||
|
||||
@@ -67,12 +151,98 @@ These questions (e.g. "which gene is associated with disease D according to DisG
|
||||
5. **Elimination:** rule out options that ARE OMIM-causal for D; among the rest, pick the one with a DisGeNet/text-mined association. If exactly one option is non-OMIM and has any association signal, that is the answer.
|
||||
6. Only answer "Insufficient information" if no option has any association in any source. If the gold gene appears in neither curated DisGeNet, OMIM, nor PubTator literature, it may rely on a DisGeNet-internal text-mined signal the academic tier can't reach — say so honestly rather than guessing.
|
||||
|
||||
## Mouse-phenotype matching (MGI)
|
||||
## Drug choice for a described patient (clinical vignette)
|
||||
|
||||
`MGI_get_phenotypes` returns a list of `phenotype_statement` strings per gene. To answer "which gene is annotated to phenotype P" (e.g. an MP term like *increased carcinoma incidence*), query each candidate gene and pick the one whose statements include a phrase matching P (the statements are human-readable, e.g. "increased incidence of carcinoma", "tumor"). Match on the phenotype concept, not an exact MP id string. If several match, prefer the most specific statement.
|
||||
"Which of the following is most appropriate for this patient?" with a vignette
|
||||
naming a **modifier** — hepatic or renal impairment, a Child-Pugh class, a
|
||||
concomitant strong CYP3A4 inhibitor, pregnancy, an allergy or contraindication —
|
||||
and several candidate drugs. These read like clinical-judgement questions, but
|
||||
the modifier is doing all the work and the deciding fact is printed in each
|
||||
candidate's FDA label. Answering from recall is the failure mode here: the
|
||||
options are usually all plausible drugs for the condition, and only the label
|
||||
separates them.
|
||||
|
||||
**1. Resolve every option brand → generic first.**
|
||||
`FDA_get_active_ingredient_info_by_drug_name` on each option. Do this before any
|
||||
reasoning, for two reasons: label lookups are keyed on the ingredient, and **two
|
||||
options are sometimes the same drug** under a brand and a generic name. When
|
||||
that happens neither can be the intended answer — they cannot be
|
||||
distinguished — so it eliminates both and often decides the question outright.
|
||||
Note the duplicate explicitly; it is also worth reporting as a benchmark defect.
|
||||
|
||||
**2. Look up only the section the modifier turns on.** One targeted call per
|
||||
candidate beats pulling whole labels:
|
||||
|
||||
| The vignette says… | Read this section |
|
||||
|---|---|
|
||||
| hepatic impairment, Child-Pugh A/B/C, cirrhosis | `FDA_get_pharmacokinetics_by_drug_name` (hepatic-impairment subsection), then `FDA_get_dosage_and_storage_information_by_drug_name` for the adjustment. A Child-Pugh grading may sit in either of those or in contraindications, and some labels describe hepatic impairment without using the term at all — absence from one section is not absence from the label |
|
||||
| renal impairment, CrCl/eGFR, dialysis | same pair — PK first, then dosage |
|
||||
| "on a strong CYP3A4 inhibitor/inducer", any named co-medication | `FDA_get_drug_interactions_by_drug_name`; `FDA_get_clinical_pharmacology_by_drug_name` when the label states the metabolic pathway rather than the pairing |
|
||||
| pregnancy, breastfeeding, "planning to conceive" | `FDA_get_pregnancy_or_breastfeeding_info_by_drug_name` (`FDA_get_teratogenic_effects_by_drug_name` when the question is about fetal harm specifically) |
|
||||
| an allergy, a comorbidity that rules a drug out | `FDA_get_contraindications_by_drug_name`, then `FDA_get_boxed_warning_info_by_drug_name` |
|
||||
| elderly / pediatric patient | `FDA_get_geriatric_use_info_by_drug_name` / `FDA_get_pediatric_use_info_by_drug_name` |
|
||||
| the drug simply may not treat the condition | `FDA_get_indications_by_drug_name` |
|
||||
|
||||
The naming is regular — `FDA_get_<section>_by_drug_name` — so a section not listed
|
||||
here can be found by searching the catalog for the section name rather than
|
||||
guessing a tool name.
|
||||
|
||||
**3. Decide by elimination, and say what eliminated each option.** The intended
|
||||
answer is normally the one candidate the modifier does *not* exclude:
|
||||
contraindicated in hepatic impairment, requires an unavailable dose reduction,
|
||||
interacts with the stated co-medication, or is not indicated for the condition.
|
||||
Quote the label phrase that rules each option out — a vignette answer without a
|
||||
cited label sentence is a guess wearing a citation.
|
||||
|
||||
**Do not over-query.** Resolve the ingredients (one call per option), then read
|
||||
one section per remaining candidate. If the label is silent on the modifier for
|
||||
every option, say so and answer on indication — do not keep pulling sections
|
||||
hoping for a discriminator.
|
||||
|
||||
## Mouse-phenotype matching (MGI) — fallback only
|
||||
|
||||
Try the `MP_<PHENOTYPE>` MSigDB set first (above): it answers in one call per option and is the same MGI annotation. Use this per-gene route only when the set name does not resolve.
|
||||
|
||||
`MGI_get_phenotypes` returns a list of `phenotype_statement` strings per gene, **paginated** — a gene's matching statement is often on a later page, so a single page is not evidence of absence. To answer "which gene is annotated to phenotype P", query each candidate gene and pick the one whose statements include a phrase matching P (the statements are human-readable, e.g. "increased incidence of carcinoma", "tumor"). Match on the phenotype concept, not an exact MP id string. If several match, prefer the most specific statement.
|
||||
|
||||
## Computational procedures (when the answer is COMPUTED, not looked up)
|
||||
|
||||
### GWAS "highest p-value" means most significant
|
||||
|
||||
In GWAS writing, "the highest p-value", "the top hit" and "the strongest
|
||||
association" all mean the **most significant** result — the *smallest* numeric
|
||||
p-value. Read literally, "highest" picks the weakest association in the study
|
||||
and is almost never what was meant.
|
||||
|
||||
For GCST005528 the literal reading gives `rs2476491-?` at p = 1e-06; the
|
||||
intended answer is `rs7775055-G` at p = 3e-174.
|
||||
|
||||
Sort ascending by p-value and report that hit. If the phrasing genuinely could
|
||||
go either way, give the most significant one and say in a clause that the
|
||||
numerically largest p-value is a different SNP — do not silently pick the
|
||||
literal reading.
|
||||
|
||||
### Genomic windows — count the anchor base
|
||||
|
||||
A window described as "N bp upstream plus M bp downstream of X" spans
|
||||
**N + M + 1** bases, because the anchor base X is itself included. Asking for
|
||||
100 up and 100 down around a TSS is 201 nt, not 200. Off-by-one here is the
|
||||
single most common way a sequence answer is wrong while looking right.
|
||||
|
||||
The same care applies to the coordinate convention of whichever tool you call:
|
||||
|
||||
| convention | span of `start`..`end` | used by |
|
||||
|---|---|---|
|
||||
| 1-based inclusive | `end - start + 1` | Ensembl `region`, UCSC browser text, IGV, samtools |
|
||||
| 0-based half-open | `end - start` | UCSC REST API, BED |
|
||||
|
||||
`UCSC_get_sequence` takes a written locus via `region` (1-based inclusive) or
|
||||
explicit `chrom`/`start`/`end` with `coordinate_system`; it echoes
|
||||
`region_1based` and `requested_length` so the span is checkable. **Always check
|
||||
the returned length against what the question asked for** before answering — a
|
||||
sequence of the wrong length is wrong even when every base you kept is right.
|
||||
|
||||
|
||||
Any question with a **single deterministic numeric/combinatorial answer** must be obtained by **RUNNING code**, never by estimating or doing it in your head. This covers sequence questions (ORF counts, restriction fragments/sizes, GC content, translation) **and** any other exactly-computable question — e.g. **genetics segregation / Mendelian or polyploid gamete ratios, combinatorial probabilities, stoichiometry, dosage/PK arithmetic, counting problems**. Mental arithmetic on these is the #1 avoidable error: the model reliably mis-counts or mis-multiplies. If a question reduces to "enumerate the cases / multiply the probabilities / count the objects", **write a short Python snippet, execute it, and report exactly what it returns** — even when the topic looks like a biology "reasoning" question, if the answer is a definite number, compute it rather than reason it out. Match the question's wording for conventions (which strand; linear vs circular; which cross/segregation model) and **state the convention you used** so the answer is auditable.
|
||||
|
||||
**Final-answer discipline (avoid "computed right, answered wrong").** After the code returns the value, map it back to the option letters **carefully and explicitly**: quote the computed value, then find the option that matches it exactly (for a set of fragment sizes, match the whole multiset; for a count, match the integer). A surprising number of misses are cases where the computation was correct but the wrong letter was selected — do not let this happen; re-read each option against the computed result before emitting `[ANSWER]`.
|
||||
@@ -165,5 +335,19 @@ Interpretation: report the **exact value the code returns** (ORF count; fragment
|
||||
## Limitations (honest)
|
||||
|
||||
- **Key-gated sources**: `DisGeNET_*` and OMIM tools need `DISGENET_API_KEY` / OMIM key. Without a key, fall back to `OpenTargets_*` / `MyDisease_*` (keyless) and state the source used. If no keyless source can answer and the question is database-specific, this is a genuine "Insufficient information" case — say so.
|
||||
- **Release mismatch**: a tool's snapshot of a database may differ slightly from the exact release a question cites; report the source and version when it matters.
|
||||
- **Release mismatch**: a tool's snapshot of a database may differ from the exact
|
||||
release a question cites — and for some quantities the difference is not
|
||||
slight. Derived scores get recomputed between releases, so the *same gene* can
|
||||
differ by an order of magnitude. gnomAD pLI, via `gnomad_get_constraint`:
|
||||
|
||||
| gene | gnomAD r4 | gnomAD r2.1 |
|
||||
|---|---|---|
|
||||
| APOC2 | 0.046875 | 0.401638 |
|
||||
| APOC1 | 0.086323 | 0.216848 |
|
||||
|
||||
Where a tool exposes a `dataset`/release parameter, set it to the release the
|
||||
question names and **say which release you used**. If the question names one
|
||||
the tool cannot serve, report the release you did use rather than presenting
|
||||
the number as if it were release-independent — a bare pLI value is ambiguous
|
||||
by a factor of eight here.
|
||||
- This skill grounds *factual* lookups. For computing over user data files, use the data-analysis router skills instead.
|
||||
|
||||
+34
-4
@@ -1,8 +1,8 @@
|
||||
---
|
||||
lineage_type: import
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/e2520a96/skills/tooluniverse-claude-code-plugin/SKILL.md
|
||||
upstream_sha: e2520a96
|
||||
imported_at: 2026-06-26
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/cfd26718/skills/tooluniverse-claude-code-plugin/SKILL.md
|
||||
upstream_sha: cfd26718
|
||||
imported_at: 2026-08-08
|
||||
prompt_class: catalogue
|
||||
upstream_changes: accepted
|
||||
name: tooluniverse-claude-code-plugin
|
||||
@@ -21,7 +21,7 @@ uv --version # must exist; if not: curl -LsSf https://astral.sh/uv/install
|
||||
claude --version # Claude Code CLI; if not: https://claude.com/claude-code
|
||||
```
|
||||
|
||||
## Install (two commands)
|
||||
## Install
|
||||
|
||||
```bash
|
||||
# 1. Register the ToolUniverse marketplace from GitHub
|
||||
@@ -33,6 +33,29 @@ claude plugin install tooluniverse@tooluniverse
|
||||
|
||||
That's it. Restart Claude Code. The MCP server auto-starts via `uvx tooluniverse` on first use (~30 s cold start, instant after).
|
||||
|
||||
### Recommended: turn on auto-update
|
||||
|
||||
Third-party marketplaces default to **no auto-update** — without this, new tools/skills only reach you when you remember to run `claude plugin update tooluniverse` (see Update below). Turn it on once:
|
||||
|
||||
```bash
|
||||
python3 -c "
|
||||
import json, pathlib, sys
|
||||
p = pathlib.Path.home() / '.claude/plugins/known_marketplaces.json'
|
||||
d = json.loads(p.read_text())
|
||||
if 'tooluniverse' not in d:
|
||||
sys.exit('Run the marketplace add command above first')
|
||||
d['tooluniverse']['autoUpdate'] = True
|
||||
p.write_text(json.dumps(d, indent=2))
|
||||
print('autoUpdate enabled for tooluniverse')
|
||||
"
|
||||
```
|
||||
|
||||
Equivalent interactive path: `/plugin` → Marketplaces → `tooluniverse` → Enable auto-update.
|
||||
|
||||
With this on, Claude Code checks for marketplace + plugin updates in the background after each session start (up to a ~10 min random delay) and updates the installed plugin on disk automatically. You'll get a `/reload-plugins` prompt when an update lands, or it applies on your next launch — no more manual `claude plugin update`.
|
||||
|
||||
This is local, per-machine state — it can't be shipped as a default from the plugin's own manifest. `marketplace.json` has no `autoUpdate` field; Claude Code intentionally keeps this a per-installation trust boundary so a publisher can't force silent auto-updates onto a user's machine.
|
||||
|
||||
### Important: Remove global skills if previously installed
|
||||
|
||||
If you previously installed ToolUniverse skills globally (via `tooluniverse-install-skills` or manual copy), **remove them**. The plugin includes all skills — global copies interfere with the plugin's skill routing.
|
||||
@@ -82,6 +105,9 @@ The router skill auto-dispatches to the right specialized skill — no command p
|
||||
| **`/tooluniverse:cross-validate`** | Verify a claim across 3+ independent databases | Slash command |
|
||||
| **`/tooluniverse:compare`** | N-way side-by-side comparison with domain-appropriate columns | Slash command |
|
||||
| **`/tooluniverse:literature-sweep`** | Graded mini-review across PubMed + EuropePMC + Semantic Scholar | Slash command |
|
||||
| **`/tooluniverse:verify-references`** | Check that cited references are real and accurately described, including retraction status | Slash command |
|
||||
| **`/tooluniverse:self-review`** | Review current or supplied work against its actual goal; qualitative by default, with scoring only when explicitly requested | Slash command |
|
||||
| **`/tooluniverse:setup-keys`** | Configure ToolUniverse API keys | Slash command |
|
||||
| **`/tooluniverse:researcher`** | Same investigation as `research`, delegated to a forked subagent | Slash command |
|
||||
| **120+ skills** | Structured workflows (drug research, variant interpretation, pharmacovigilance, CRISPR screens, statistical modeling, etc.) | Auto-activate on matching questions |
|
||||
|
||||
@@ -121,6 +147,10 @@ Full API-key list: `setup-tooluniverse` skill → `API_KEYS_REFERENCE.md`.
|
||||
|
||||
## Update
|
||||
|
||||
If you enabled auto-update above, this happens automatically in the background — no action needed.
|
||||
|
||||
Otherwise, update manually:
|
||||
|
||||
```bash
|
||||
claude plugin update tooluniverse
|
||||
# Also refresh the MCP server's tool cache:
|
||||
|
||||
+185
@@ -0,0 +1,185 @@
|
||||
---
|
||||
lineage_type: import
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/cfd26718/skills/tooluniverse-gene-liability/SKILL.md
|
||||
upstream_sha: cfd26718
|
||||
imported_at: 2026-08-08
|
||||
prompt_class: unknown
|
||||
upstream_changes: accepted
|
||||
name: tooluniverse-gene-liability
|
||||
description: Evaluate the human safety liability of knocking down, knocking out, degrading, or pharmacologically inhibiting a gene. Use for gene safety scoring, on-target toxicity assessment, essentiality and genetic-constraint review, critical-organ expression analysis, or deciding whether a target needs partial, transient, or tissue-specific modulation.
|
||||
---
|
||||
|
||||
# Gene Liability Evaluation
|
||||
|
||||
Assess whether reducing a human gene's function is likely to be unsafe. Resolve the
|
||||
gene, gather independent human and model-system evidence, calculate a transparent
|
||||
0–100 liability score, and recommend an appropriate modulation strategy.
|
||||
|
||||
Higher scores mean greater predicted liability from the stated intervention. This is
|
||||
a safety score, not a target-efficacy or druggability score.
|
||||
|
||||
## Required Input
|
||||
|
||||
Accept a gene symbol, name, Ensembl ID, or UniProt accession. Also capture:
|
||||
|
||||
- intervention modality: knockout, knockdown, degrader, irreversible inhibitor,
|
||||
reversible inhibitor, antibody, or unknown;
|
||||
- intended tissue and indication, when supplied;
|
||||
- desired inhibition depth and duration, when supplied.
|
||||
|
||||
If modality is absent, assess complete systemic loss of function and label that
|
||||
assumption prominently. Do not silently generalize a knockout result to partial or
|
||||
tissue-restricted pharmacology.
|
||||
|
||||
## Evidence Rules
|
||||
|
||||
- Look up the gene before reasoning. Do not score an ambiguous identifier.
|
||||
- Use human causal evidence before animal models, screens, expression, or prediction.
|
||||
- Treat absent data as unknown, never as evidence of safety.
|
||||
- Cite every score-changing observation with the source and identifier.
|
||||
- Separate germline loss of function, somatic loss, acute pharmacology, and chronic
|
||||
pharmacology.
|
||||
- Treat DepMap as cancer-cell essentiality, not normal-tissue essentiality.
|
||||
- Report contradictory evidence instead of averaging it away.
|
||||
|
||||
Grade evidence as:
|
||||
|
||||
- **T1**: human clinical outcome or replicated causal human genetics;
|
||||
- **T2**: curated human evidence, mammalian knockout phenotype, or established drug
|
||||
class safety;
|
||||
- **T3**: functional screen, tissue expression, or single experimental study;
|
||||
- **T4**: computational prediction or catalog annotation.
|
||||
|
||||
## Workflow
|
||||
|
||||
### 1. Resolve the gene
|
||||
|
||||
Use `MyGene_query_genes` with `species="human"` and request symbol, name, Ensembl,
|
||||
UniProt, and Entrez identifiers. Require an exact symbol or identifier match. If the
|
||||
query maps to multiple loci, stop and ask for clarification.
|
||||
|
||||
Carry the approved symbol and Ensembl gene ID through every subsequent query.
|
||||
|
||||
### 2. Gather the five scoring dimensions
|
||||
|
||||
Run independent paths. A failed path must use its fallback or be marked unavailable.
|
||||
|
||||
| Dimension | Weight | Primary evidence | Fallback |
|
||||
|---|---:|---|---|
|
||||
| Human genetic constraint | 25 | `gnomad_get_gene_constraints(gene_symbol=...)` | ClinVar loss-of-function variants and literature |
|
||||
| Mammalian knockout phenotype | 25 | `OpenTargets_get_biological_mouse_models_by_ensemblID(ensemblId=...)` | MGI-focused literature search |
|
||||
| Critical-organ expression | 20 | `GTEx_get_median_gene_expression(operation="get_median_gene_expression", gencode_id=...)` | `HPA_get_comprehensive_gene_details_by_ensembl_id(..., include_expression=true)` |
|
||||
| Observed on-target effects | 20 | `OpenTargets_get_target_safety_profile_by_ensemblID(ensemblId=...)` | `ClinVar_search_variants`, associated drugs, and literature |
|
||||
| Cellular essentiality and redundancy | 10 | `DepMap_get_gene_dependencies(gene_symbol=...)` | pathway, paralog, and functional-screen literature |
|
||||
|
||||
Also query `OpenTargets_get_associated_drugs_by_target_ensemblID` to distinguish
|
||||
observed target-class toxicity from hypothetical risk. Do not interpret the mere
|
||||
existence of a drug as proof of safety.
|
||||
|
||||
For expression, inspect heart, central nervous system, liver, kidney, lung, immune or
|
||||
marrow compartments, and reproductive tissues. Compare the gene across tissues;
|
||||
do not compare raw TPM values between unrelated genes as if they shared one threshold.
|
||||
|
||||
### 3. Assign dimension points
|
||||
|
||||
Use only evidence actually retrieved.
|
||||
|
||||
#### Human genetic constraint — 0 to 25
|
||||
|
||||
- **25**: strong loss-of-function intolerance, such as pLI at least 0.9 together
|
||||
with LOEUF or observed/expected LoF at most 0.35;
|
||||
- **15**: one strong constraint signal or intermediate LoF constraint;
|
||||
- **5**: weak or conflicting constraint;
|
||||
- **0**: credible tolerance to loss of function.
|
||||
|
||||
Use LOEUF when available; label observed/expected LoF as a proxy when LOEUF is absent.
|
||||
|
||||
#### Mammalian knockout phenotype — 0 to 25
|
||||
|
||||
- **25**: embryonic or perinatal lethality, or severe multisystem phenotype;
|
||||
- **18**: reduced survival, organ failure, severe neurologic, immune, reproductive,
|
||||
or developmental phenotype;
|
||||
- **8**: viable knockout with a consequential but organ-limited phenotype;
|
||||
- **0**: replicated viable knockout without a consequential phenotype.
|
||||
|
||||
#### Critical-organ expression — 0 to 20
|
||||
|
||||
- **20**: broad high expression involving at least three critical organ systems;
|
||||
- **12**: high expression in one or two critical organs or broad moderate expression;
|
||||
- **6**: low-to-moderate critical-organ expression;
|
||||
- **0**: credible restriction to the intended or noncritical tissue with negligible
|
||||
critical-organ expression.
|
||||
|
||||
#### Observed on-target effects — 0 to 20
|
||||
|
||||
- **20**: severe human disease from reduced function or consistent serious
|
||||
target-related toxicity;
|
||||
- **12**: a credible human adverse phenotype or reproducible class effect;
|
||||
- **5**: preclinical, isolated, or mechanistically plausible safety signal;
|
||||
- **0**: human protective loss-of-function or well-tolerated target modulation with
|
||||
no serious on-target signal at relevant exposure.
|
||||
|
||||
Protective variants can reduce concern only when their direction, dosage, tissue,
|
||||
and lifelong-versus-acute exposure are relevant to the proposed intervention.
|
||||
|
||||
#### Cellular essentiality and redundancy — 0 to 10
|
||||
|
||||
- **10**: broad common-essential signal with little credible redundancy;
|
||||
- **5**: context-selective dependency or partial redundancy;
|
||||
- **0**: reproducible non-essentiality or strong functional redundancy.
|
||||
|
||||
If DepMap returns only gene metadata without dependency scores, mark this dimension
|
||||
unavailable. Never infer essentiality from a successful lookup alone.
|
||||
|
||||
### 4. Calculate score, coverage, and confidence
|
||||
|
||||
For available dimensions, calculate:
|
||||
|
||||
`liability score = 100 × points earned / available weight`
|
||||
|
||||
Report the available weight as evidence coverage. Do not assign zero points to a
|
||||
missing dimension.
|
||||
|
||||
- **0–24**: low liability;
|
||||
- **25–49**: moderate liability;
|
||||
- **50–74**: high liability;
|
||||
- **75–100**: very high liability.
|
||||
|
||||
Publish a categorical score only when coverage is at least 60%. Below 60%, report
|
||||
“insufficient evidence” and list the experiments or datasets needed.
|
||||
|
||||
Assign confidence independently:
|
||||
|
||||
- **High**: at least 90% coverage with both T1 and independent T2 evidence;
|
||||
- **Moderate**: at least 70% coverage with T1 or T2 evidence;
|
||||
- **Low**: 60–69% coverage or evidence dominated by T3/T4;
|
||||
- **Insufficient**: below 60% coverage.
|
||||
|
||||
### 5. Translate liability into a strategy
|
||||
|
||||
Do not stop at a risk label. Explain whether the evidence favors:
|
||||
|
||||
- partial rather than complete inhibition;
|
||||
- reversible or transient rather than irreversible modulation;
|
||||
- tissue-targeted delivery;
|
||||
- isoform- or domain-selective modulation;
|
||||
- biomarker-based exclusion or monitoring;
|
||||
- deprioritization until a specific safety experiment closes the key gap.
|
||||
|
||||
## Required Output
|
||||
|
||||
Return these sections:
|
||||
|
||||
1. **Resolved gene and intervention assumption** — identifiers, modality, tissue,
|
||||
inhibition depth, and duration.
|
||||
2. **Liability verdict** — score, band, evidence coverage, and confidence.
|
||||
3. **Dimension table** — evidence, points, maximum weight, tier, citation, and
|
||||
conflicts for all five dimensions.
|
||||
4. **Key red flags and protective evidence** — list both sides explicitly.
|
||||
5. **Modulation recommendation** — full, partial, transient, tissue-specific, or
|
||||
no-go, with rationale.
|
||||
6. **Data gaps and next experiments** — prioritize the missing evidence most likely
|
||||
to change the verdict.
|
||||
7. **Sources** — database record links, study identifiers, and access dates.
|
||||
|
||||
End with: “This is a research risk assessment, not a clinical safety determination.”
|
||||
+43
-5
@@ -1,12 +1,12 @@
|
||||
---
|
||||
lineage_type: import
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/e2520a96/skills/tooluniverse-molecular-cloning/SKILL.md
|
||||
upstream_sha: e2520a96
|
||||
imported_at: 2026-06-26
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/cfd26718/skills/tooluniverse-molecular-cloning/SKILL.md
|
||||
upstream_sha: cfd26718
|
||||
imported_at: 2026-08-08
|
||||
prompt_class: unknown
|
||||
upstream_changes: accepted
|
||||
name: tooluniverse-molecular-cloning
|
||||
description: Molecular cloning assembly design — Gibson Assembly (overlap design for seamless multi-fragment joining) and Golden Gate Assembly (Type IIS / BsaI / BbsI design with unique 4-bp fusion overhangs). Use when you need to plan how to join DNA fragments into a construct, design assembly overlaps/overhangs, or decide between cloning methods. Covers the domestication (internal-site removal), overhang-uniqueness, and overlap-Tm rules. For PCR primers to generate the fragments, see tooluniverse-primer-design.
|
||||
description: Molecular cloning, in both directions. DESIGN — Gibson Assembly (overlap design for seamless multi-fragment joining) and Golden Gate Assembly (Type IIS / BsaI / BbsI / Esp3I / BsmBI / SapI design with unique 4-bp fusion overhangs). ANALYSIS — work out what an existing reaction produces: given input plasmid sequences and an enzyme, digest them, join the fragments by their overhangs, and identify features of the product (expressed ORF, gRNA spacer and its target gene). Use when you need to plan how to join DNA fragments into a construct, design assembly overlaps/overhangs, decide between cloning methods, or determine the product of a stated Gibson/Golden Gate reaction. Covers the domestication (internal-site removal), overhang-uniqueness, and overlap-Tm rules. For PCR primers to generate the fragments, see tooluniverse-primer-design.
|
||||
disable-model-invocation: true
|
||||
---
|
||||
|
||||
@@ -69,9 +69,47 @@ Returns `parts_with_overhangs`: each part's unique 4-bp `left_overhang`/`right_o
|
||||
- **Overlap Tm imbalance** (Gibson) → some junctions form, others don't.
|
||||
- **Generating the fragments** still needs primers with the overlaps/overhangs appended — design and QC those in `tooluniverse-primer-design` (and BLAST for specificity).
|
||||
|
||||
## Working backwards — what does an existing assembly produce?
|
||||
|
||||
The reverse question ("I combined these plasmids in a Golden Gate reaction with
|
||||
Esp3I — what does the product express / what does the gRNA target?") is answered by
|
||||
one call. Do **not** hand-write a digestion/ligation simulator.
|
||||
|
||||
```bash
|
||||
tu run DNA_golden_gate_assemble '{"fragments":["<plasmid1>","<plasmid2>","<plasmid3>"],
|
||||
"enzyme":"Esp3I","labels":["pLAB-CTU","pLAB-gTU2E","pLAB-CH3"]}'
|
||||
```
|
||||
|
||||
It digests each input, drops the fragments that keep a recognition site (those are
|
||||
re-cut in the reaction and cannot persist), chains the rest by matching 4-bp
|
||||
overhangs, and returns `product_sequence`, `product_length` and the `assembly_order`
|
||||
with the overhang at every junction. Inputs are treated as circular plasmids unless
|
||||
you pass `circular: false`.
|
||||
|
||||
Then **annotate the product**. Locate features in `product_sequence` (promoter, ORF,
|
||||
gRNA spacer). For a gRNA cassette the spacer is the ~20 nt immediately 5′ of the
|
||||
scaffold (`GTTTTAGAGCTAGAAATAGCAAG`); identify its target by matching that spacer
|
||||
against the genome (`BLAST_*`, or an Ensembl/NCBI/SGD sequence lookup) and check for
|
||||
an adjacent PAM. Match the **species implied by the construct** — yeast tRNA/Pol III
|
||||
parts mean search the yeast genome, not human.
|
||||
|
||||
If the assembly reports that the fragments do not chain, digest the inputs
|
||||
individually with `DNA_virtual_digest` (`circular: true`) to see what each released:
|
||||
a Golden Gate donor carries its two Type IIS sites **inverted** around the insert, so
|
||||
a correct digest gives **2 fragments** per plasmid. Getting 1 means the enzyme name or
|
||||
`circular` is wrong — not that the plasmid lacks sites.
|
||||
|
||||
Enzyme names: `Esp3I` and `BsmBI` are the same enzyme (`CGTCTC`); `BsaI`
|
||||
(`GGTCTC`), `BbsI` (`GAAGAC`) and `SapI` (`GCTCTTC`) all resolve too.
|
||||
|
||||
## Honest limitations
|
||||
|
||||
- These tools design the assembly junctions; they do not simulate the full ligation/exonuclease reaction or guarantee efficiency — validate by sequencing the assembled construct.
|
||||
- Digestion and overhang-driven ligation are simulated faithfully (`DNA_virtual_digest`
|
||||
and `DNA_golden_gate_assemble` cut both strands at each enzyme's real offset, including
|
||||
Type IIS enzymes that cut outside their site). What is *not* modelled is reaction
|
||||
efficiency — overhang ligation bias, partial digestion, incorrect-but-possible
|
||||
junctions — so a returned product is the intended assembly, not a yield prediction.
|
||||
Validate by sequencing the assembled construct.
|
||||
- No vector-backbone or ORF-frame checking — confirm reading frame and backbone compatibility yourself.
|
||||
|
||||
## Related skills
|
||||
|
||||
+141
-4
@@ -1,8 +1,8 @@
|
||||
---
|
||||
lineage_type: import
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/e2520a96/skills/tooluniverse-phylogenetics/SKILL.md
|
||||
upstream_sha: e2520a96
|
||||
imported_at: 2026-06-26
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/4d14233e/skills/tooluniverse-phylogenetics/SKILL.md
|
||||
upstream_sha: 4d14233e
|
||||
imported_at: 2026-08-18
|
||||
prompt_class: catalogue
|
||||
upstream_changes: accepted
|
||||
name: tooluniverse-phylogenetics
|
||||
@@ -12,6 +12,45 @@ disable-model-invocation: true
|
||||
|
||||
# Phylogenetics and Sequence Analysis
|
||||
|
||||
## Four traps that produce a confidently wrong number
|
||||
|
||||
Each of these was observed producing a wrong answer *while the correct guidance
|
||||
was already present further down this file*. Check them before you answer.
|
||||
|
||||
1. **PhyKIT prints more than one column, and for `saturation` the two
|
||||
conventions disagree — state which you used.** `phykit saturation` prints
|
||||
`saturation <TAB> |saturation-1|`. Its own `--help` is explicit: *"The first
|
||||
value is the saturation value and the second column is the absolute value of
|
||||
saturation minus 1."* But several published analyses (and some reference
|
||||
answers derived from them) report the **second** column as "the saturation
|
||||
value". The two always sum to 1.0000, which is the tell that you may be
|
||||
looking at the wrong one — on the fungal scogs set the medians are 0.39
|
||||
(col 1) and 0.61 (col 2).
|
||||
|
||||
So: **follow phykit and use column 1** unless the question or source defines
|
||||
saturation the other way, and say in your answer which column you read. Do
|
||||
not silently pick the one that looks closer to an expected number.
|
||||
|
||||
`treeness_over_rcv` has no such ambiguity: it gives
|
||||
`ratio <TAB> treeness <TAB> RCV` and the ratio is first.
|
||||
|
||||
2. **"Gap percentage" means the fraction of alignment COLUMNS containing at
|
||||
least one gap**, not the fraction of residues that are gaps. On the fungal
|
||||
scogs set the residue definition maxes out at 0.556, so a ">70% gaps" filter
|
||||
selects **nothing** and the question looks unanswerable; by columns, three
|
||||
orthologs qualify (max 0.783).
|
||||
|
||||
3. **`treeness_over_rcv` and `rcv` take the UNTRIMMED `.faa.mafft`**, while
|
||||
`saturation` takes the trimmed `.clipkit`. RCV measures variability across
|
||||
columns, so trimming changes it: median 0.2683 untrimmed against 0.3050
|
||||
trimmed, and among >70%-gap genes the maximum is 0.2572 untrimmed against
|
||||
0.4174 trimmed.
|
||||
|
||||
4. **Never loop PhyKIT per file.** `phykit_batch_analysis` is parallel and does
|
||||
~250 trees in about 35 seconds; a shell loop takes ~9 minutes and runs out of
|
||||
turns mid-way, producing no answer at all. It also selects the right column
|
||||
for every function, which removes trap 1 entirely.
|
||||
|
||||
## RULE ZERO — Check for pre-computed results FIRST
|
||||
|
||||
Before following any instruction below, scan the data folder for:
|
||||
@@ -154,7 +193,6 @@ that line when the raw min in a group is 0.
|
||||
scogs zips ship in two shapes:
|
||||
- **Full**: `<gene>.faa`, `<gene>.faa.mafft`, `<gene>.faa.mafft.clipkit`,
|
||||
`<gene>.faa.mafft.clipkit.treefile`, plus iqtree/bionj/log/mldist.
|
||||
Use clipkit alignment + treefile for tree-paired metrics.
|
||||
- **Alignment-only**: just `<gene>.faa` + `<gene>.faa.mafft`. No
|
||||
trees, no clipkit. Used for parsimony, RCV, gap-percentage
|
||||
questions. Use the `.faa.mafft` (NOT raw `.faa`) — the published
|
||||
@@ -164,6 +202,48 @@ Both bundled scripts auto-detect the layout and use the best available
|
||||
alignment per ortholog. Do NOT re-run MAFFT or ClipKit yourself; the
|
||||
shipped files are canonical.
|
||||
|
||||
#### Which alignment goes with which metric (this changes the answer)
|
||||
|
||||
The tree is always the ClipKit-derived `.faa.mafft.clipkit.treefile`. The
|
||||
**alignment** argument depends on the metric:
|
||||
|
||||
| metric | alignment to pass |
|
||||
|---|---|
|
||||
| `treeness`, `dvmc`, `total_tree_length`, `long_branch_score` | tree only — no alignment |
|
||||
| `saturation` | `.faa.mafft.clipkit` (trimmed) |
|
||||
| **`treeness_over_rcv` / `rcv`** | **`.faa.mafft` (untrimmed)** |
|
||||
| parsimony-informative sites, gap percentage | `.faa.mafft` (untrimmed) |
|
||||
|
||||
RCV measures compositional variability **across the alignment's columns**, so
|
||||
trimming changes it materially — and `treeness_over_rcv` divides by RCV, so the
|
||||
trimmed alignment shifts the ratio for every gene. Verified on the fungal scogs
|
||||
set (249 orthologs, canonical shipped files):
|
||||
|
||||
```
|
||||
median treeness/RCV untrimmed .faa.mafft = 0.2683 trimmed .clipkit = 0.3050
|
||||
max treeness/RCV (over the 3 genes with >70% gapped columns:
|
||||
1260807at2759 0.0861, 1567796at2759 0.1866, 939345at2759 0.2572)
|
||||
untrimmed .faa.mafft = 0.2572 trimmed .clipkit = 0.4174
|
||||
```
|
||||
|
||||
Plain `treeness` needs no alignment and is unaffected — it reproduces exactly
|
||||
(median 0.0501 on the same 249 files), which is how the alignment choice was
|
||||
isolated as the cause rather than the tree set or the tool.
|
||||
|
||||
`phykit_batch_analysis` takes the two independently, so pass them explicitly:
|
||||
|
||||
```bash
|
||||
tu run phykit_batch_analysis '{"operation":"batch","function":"treeness_over_rcv",
|
||||
"directory":"<dir>","extension":".faa.mafft",
|
||||
"tree_directory":"<dir>","tree_extension":".faa.mafft.clipkit.treefile"}'
|
||||
```
|
||||
|
||||
**Gap percentage** in these questions means the fraction of alignment
|
||||
**columns containing at least one gap**, not the fraction of all residues that
|
||||
are gaps. The two differ by an order of magnitude: with the residue definition
|
||||
no fungal ortholog exceeds 70% gaps, so a ">70% gaps" filter silently selects
|
||||
nothing.
|
||||
|
||||
**Anti-pattern:** running `phykit` on the raw `*.busco.zip` extracted
|
||||
ortholog FASTAs and aligning/tree-building yourself. The pre-computed
|
||||
files in `scogs_*.zip` are the canonical inputs.
|
||||
@@ -311,6 +391,63 @@ tu run phykit_batch_analysis '{"operation":"gap_percentage","directory":"./align
|
||||
```
|
||||
Do NOT run phykit manually in a loop — the tool handles all files and returns correct summary statistics.
|
||||
|
||||
**The batch tool is parallel: ~250 trees finish in about 35 seconds.** A per-tree
|
||||
shell loop takes ~9 minutes for the same work and is the single most common way
|
||||
these questions end with no answer at all — the run hits its turn or time budget
|
||||
mid-loop and reports "I'll report when it finishes" instead of a number. If you
|
||||
find yourself writing `for f in *.treefile`, stop and call the batch tool.
|
||||
|
||||
Supported `function` values include `treeness`, `saturation`, `dvmc`,
|
||||
`long_branch_score`, `total_tree_length`, `parsimony_informative`,
|
||||
`treeness_over_rcv` (alias `toverr`). `dvmc` and `long_branch_score` are
|
||||
covered — you do not need to loop for those.
|
||||
|
||||
**Two-group comparisons (Mann-Whitney U, differences of medians).** Questions
|
||||
comparing fungi against animals need one batch call per group, then the test on
|
||||
the two value lists — not a per-tree loop over both groups:
|
||||
|
||||
```bash
|
||||
tu run phykit_batch_analysis '{"operation":"batch","function":"dvmc","directory":"<fungi>","extension":".treefile"}'
|
||||
tu run phykit_batch_analysis '{"operation":"batch","function":"dvmc","directory":"<animals>","extension":".treefile"}'
|
||||
# then scipy.stats.mannwhitneyu(fungi_values, animal_values)
|
||||
```
|
||||
|
||||
Ask for `values` in the result when you need the full list for a test; the batch
|
||||
tool returns them for sets up to 50 and summary statistics always. For larger
|
||||
sets, compute the statistic from the per-group summaries the tool returns rather
|
||||
than re-deriving every value by hand.
|
||||
|
||||
### PhyKIT column conventions — take the right one
|
||||
|
||||
Several PhyKIT subcommands print more than one number per file, and the value
|
||||
the question wants is usually not the first:
|
||||
|
||||
| subcommand | prints | the value asked for |
|
||||
|---|---|---|
|
||||
| `saturation` | `saturation <TAB> \|saturation-1\|` | **column 1** per phykit's docs; some sources report col 2 — say which you used |
|
||||
| `treeness_over_rcv` | `treeness/RCV <TAB> treeness <TAB> RCV` | **column 1**, the ratio |
|
||||
| `parsimony_informative_sites` | `n_pi <TAB> n_total <TAB> %PIS` | column 3 for a percentage |
|
||||
|
||||
Taking `saturation`'s first column gives exactly `1 - answer`: a fungal set
|
||||
whose saturation is 0.6146 reports 0.3854 instead, and the two sum to 1.0000,
|
||||
which is the tell. `phykit_batch_analysis` already selects the right column for
|
||||
each function — another reason to call it rather than run the CLI yourself.
|
||||
|
||||
### Commit the value you computed
|
||||
|
||||
Two failures in this benchmark came from computing the right number and then
|
||||
answering a different one:
|
||||
|
||||
- a tree-length ratio computed as **2.1775**, then answered as 1.9 after
|
||||
re-reading "paired orthologs";
|
||||
- an average treeness that listed **19** among the alternatives, then committed 10.
|
||||
|
||||
When a question is ambiguous, compute the reading you judge most literal, state
|
||||
the alternative in one clause, and **answer with the value you actually
|
||||
computed**. Do not replace a computed result with a re-derived one at the last
|
||||
step — if two readings are both defensible, give the computed number first and
|
||||
name the other, rather than silently switching.
|
||||
|
||||
### PhyKIT column-position cheat sheet (parse output carefully)
|
||||
|
||||
When parsing PhyKIT stdout for batch metrics, the **column you want** depends on the metric:
|
||||
|
||||
+165
@@ -0,0 +1,165 @@
|
||||
---
|
||||
lineage_type: import
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/cfd26718/skills/tooluniverse-self-review/SKILL.md
|
||||
upstream_sha: cfd26718
|
||||
imported_at: 2026-08-08
|
||||
prompt_class: unknown
|
||||
upstream_changes: accepted
|
||||
name: tooluniverse-self-review
|
||||
description: >
|
||||
Review existing work against the user's actual goal and surface evidence-backed
|
||||
strengths, gaps, risks, and next fixes. Use when asked to eval, evaluate, review,
|
||||
assess, or check current/this/my/our work; decide whether a task is complete; build a
|
||||
definition-of-done checklist or rubric; or perform grading, LLM-as-judge, Qworld, or
|
||||
RET evaluation. Treat plain eval/review requests as qualitative: resolve "current
|
||||
work" from the conversation, artifacts, files, or diff, and never assign numeric
|
||||
scores unless the user explicitly requests scores, grades, points, ratings, weighted
|
||||
criteria, Qworld, or RET. Do not use for implementing automated eval suites, tests,
|
||||
graders, or benchmarks.
|
||||
disable-model-invocation: true
|
||||
---
|
||||
|
||||
# Self-Review: Understand the Target, Then Review
|
||||
|
||||
Review the actual work the user means against the goal it was meant to satisfy. Default
|
||||
to a concise qualitative assessment. Scoring and the full Qworld Recursive Expansion
|
||||
Tree (RET) are opt-in.
|
||||
|
||||
## Non-Negotiable Rules
|
||||
|
||||
1. **Do not confuse the evaluation request with the evaluated task.** In requests such as
|
||||
"eval current work", that sentence is an instruction to review. The task being judged
|
||||
is the preceding user goal; the work is the current result, implementation, draft,
|
||||
plan, or progress.
|
||||
2. **Do not equate `eval` with scoring.** `Eval`, `evaluate`, `review`, `assess`, and
|
||||
`check` mean qualitative review unless the user explicitly asks for a score, grade,
|
||||
rating, points, weighted rubric, Qworld, RET, or a numeric scale.
|
||||
3. **Do not invent work to review.** Inspect the conversation and available artifacts. If
|
||||
evidence is unavailable, say what could not be verified.
|
||||
4. **Do not expose process by default.** Keep scenario expansion, perspective generation,
|
||||
and rubric construction internal unless the user asked for those artifacts.
|
||||
5. **Review against the user's goal, not a generic quality template.** Derive the relevant
|
||||
checks from the request, stated constraints, acceptance criteria, and risks.
|
||||
|
||||
## Resolve the Review Target
|
||||
|
||||
Separate three objects before reviewing:
|
||||
|
||||
- **Evaluation instruction**: what the user is asking now (for example, "review this").
|
||||
- **Original goal**: the request, problem, or acceptance criteria the work should satisfy.
|
||||
- **Work product**: the answer, code, files, diff, plan, analysis, or current progress to
|
||||
examine.
|
||||
|
||||
Resolve the work product in this order:
|
||||
|
||||
1. An explicitly named file, answer, commit, diff, section, or artifact.
|
||||
2. Pasted or attached content in the current message.
|
||||
3. The current repository implementation or working-tree diff when the conversation is
|
||||
about code changes.
|
||||
4. The most recent assistant-produced deliverable relevant to the preceding user goal.
|
||||
5. The current plan or partial progress when the task is still underway.
|
||||
|
||||
Interpret deictic phrases such as "current work", "this work", "what we have", "刚才的
|
||||
工作", and "当前工作" using that order. In a multi-turn conversation, the last user
|
||||
message is usually the evaluation instruction, **not** the original goal.
|
||||
|
||||
Proceed without asking when the goal and work can be recovered confidently. Ask one
|
||||
short clarifying question only when there is no reviewable work or when multiple plausible
|
||||
targets would produce materially different reviews.
|
||||
|
||||
## Choose One Mode
|
||||
|
||||
| Mode | Trigger | Default output |
|
||||
|---|---|---|
|
||||
| **Qualitative review** (default) | "eval/review/check current work", "is this done?", "what is missing?" | Evidence-backed findings, strengths, gaps, fixes, and a completion verdict; no numbers |
|
||||
| **Checklist** | Explicit request for definition of done, success criteria, or completeness checklist without work to review | Task-specific checklist; no points |
|
||||
| **Rubric** | Explicit request for evaluation criteria or a rubric, but no scoring request | Binary or observable criteria grouped as must/should/could; no points |
|
||||
| **Scored evaluation** | Explicit request for score, grade, rating, points, weighted criteria, LLM-as-judge scoring, Qworld, RET, or a numeric scale | Evidence-backed scored review using the requested scale or RET |
|
||||
|
||||
The phrase "evaluate this" alone selects **qualitative review**, even when a work product
|
||||
is present. The presence of work never turns scoring on by itself.
|
||||
|
||||
Requests to **create or run evals**, implement a grader, write evaluation tests, or build a
|
||||
benchmark are engineering tasks, not self-review requests. Do not route those requests to
|
||||
this workflow merely because they contain the word `eval`.
|
||||
|
||||
## Qualitative Review Workflow (Default)
|
||||
|
||||
1. **Recover the goal.** Summarize the original goal and important constraints in one or
|
||||
two sentences. Prefer explicit acceptance criteria over inferred preferences.
|
||||
2. **Inspect the work.** Use the actual conversation output, files, diff, test results, or
|
||||
supplied artifact. For code, inspect relevant implementation and verification evidence;
|
||||
do not judge from a summary alone when the files are available.
|
||||
3. **Derive focused checks internally.** Identify only the task-specific dimensions needed
|
||||
to judge correctness, completeness, user intent, risks, and verification. Do not print a
|
||||
large rubric unless asked.
|
||||
4. **Report findings by impact.** Lead with concrete problems or unmet requirements. For
|
||||
each finding, cite the evidence and explain the consequence.
|
||||
5. **Acknowledge what works.** Note meaningful strengths briefly; do not pad the response
|
||||
with generic praise.
|
||||
6. **Give prioritized fixes.** Recommend the smallest concrete actions that close the most
|
||||
important gaps.
|
||||
7. **State a plain-language verdict.** Use `complete`, `mostly complete`, `partially
|
||||
complete`, `not complete`, or `unable to verify`, with a short reason. Do not convert
|
||||
the verdict into a number.
|
||||
|
||||
### Default Review Shape
|
||||
|
||||
Adapt the headings to the task and omit empty sections:
|
||||
|
||||
1. **Overall assessment** — target, goal, and verdict.
|
||||
2. **Findings** — ordered by impact, with evidence.
|
||||
3. **What is working** — concise, specific strengths.
|
||||
4. **Recommended next actions** — prioritized fixes.
|
||||
|
||||
For code review, prioritize actionable defects and regressions over summaries. Cite file
|
||||
paths and tight line ranges when possible. If no problems are found, say so directly and
|
||||
name any residual verification gaps.
|
||||
|
||||
## Checklist and Unscored Rubric Modes
|
||||
|
||||
- Derive criteria from the task rather than a fixed dimension list.
|
||||
- Keep each item observable and specific enough to check.
|
||||
- Use `must`, `should`, and `could` for importance when prioritization helps.
|
||||
- Do not attach numbers, weights, percentages, earned totals, or pass rates.
|
||||
- If work is also supplied, mark items `met`, `partially met`, `not met`, or
|
||||
`not verifiable`, with brief evidence. These labels are not scores.
|
||||
- Do not generate scenarios or perspectives unless the user explicitly asks to see the
|
||||
derivation.
|
||||
|
||||
## Scored Evaluation Mode (Explicit Opt-In Only)
|
||||
|
||||
Use this mode only when the request contains an unambiguous scoring signal listed above.
|
||||
|
||||
- If the user supplies a scale or grading scheme, follow it.
|
||||
- If the user asks for Qworld, RET, a weighted rubric, or LLM-as-judge scoring without a
|
||||
custom scheme, read and follow
|
||||
[references/ret-scored-evaluation.md](references/ret-scored-evaluation.md).
|
||||
- Keep every verdict evidence-based. Do not award credit for absent evidence or penalize
|
||||
criteria outside the original goal.
|
||||
- Explain what the score means and still provide the highest-impact gaps and fixes. A
|
||||
number alone is not a useful review.
|
||||
|
||||
## Examples of Correct Routing
|
||||
|
||||
| User request | Correct interpretation |
|
||||
|---|---|
|
||||
| "Eval current work." | Review the current result against the preceding goal; qualitative, no score |
|
||||
| "Evaluate whether we finished the original request." | Inspect current artifacts and give a completion verdict; no score |
|
||||
| "What is missing from this implementation?" | Findings-first implementation review; no score |
|
||||
| "Make a definition-of-done checklist for this feature." | Checklist mode; no score |
|
||||
| "Create an evaluation rubric for these answers." | Unscored rubric unless weights or grading are requested |
|
||||
| "Score this answer from 1 to 10." | Scored mode on the requested scale |
|
||||
| "Apply Qworld/RET to grade these responses." | Full scored RET mode |
|
||||
| "Create an eval suite for this agent." | Out of scope for this skill; treat as an eval-engineering task |
|
||||
|
||||
## Evidence and Honesty
|
||||
|
||||
- Distinguish observed evidence from inference.
|
||||
- Do not claim tests passed unless their output is available.
|
||||
- Do not infer completion from a clean diff, a confident summary, or the existence of
|
||||
files alone.
|
||||
- If the user requests evaluation while work is still running, review the available
|
||||
progress and label unfinished parts rather than pretending the final result exists.
|
||||
- Keep the response proportional to the work. A small change should not produce a giant
|
||||
framework dump.
|
||||
+131
@@ -0,0 +1,131 @@
|
||||
---
|
||||
title: "Qworld RET Scored Evaluation"
|
||||
task: ""
|
||||
lineage_type: import
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/cfd26718/skills/tooluniverse-self-review/references/ret-scored-evaluation.md
|
||||
upstream_sha: cfd26718
|
||||
imported_at: 2026-08-08
|
||||
prompt_class: prompt
|
||||
upstream_changes: accepted
|
||||
author: upstream
|
||||
validated: false
|
||||
---
|
||||
|
||||
# Qworld RET Scored Evaluation
|
||||
|
||||
Use this reference only after the user explicitly requests scoring, grading, weighted
|
||||
criteria, LLM-as-judge scoring, Qworld, or the Recursive Expansion Tree (RET).
|
||||
|
||||
## Inputs
|
||||
|
||||
- **Original goal**: the task, question, constraints, and acceptance criteria.
|
||||
- **Work product**: the actual answer, implementation, artifact, or result to grade.
|
||||
- **Scale**: the user's requested scheme, or the default weighted scheme below.
|
||||
|
||||
Never treat the evaluation instruction itself as the original goal. If the user says
|
||||
"score current work", recover the goal and work from the preceding conversation and
|
||||
available artifacts first.
|
||||
|
||||
## Recursive Expansion Tree
|
||||
|
||||
Build the rubric from the task:
|
||||
|
||||
```text
|
||||
Original goal
|
||||
-> scenarios that materially change what good means
|
||||
-> task-specific evaluation perspectives
|
||||
-> concrete, binary criteria
|
||||
```
|
||||
|
||||
Keep this derivation internal unless the user asks to see it.
|
||||
|
||||
### 1. Scenario grounding and expansion
|
||||
|
||||
Identify a minimal non-redundant set of real contexts in which the task could arise and
|
||||
where the context changes what constitutes a good result. Expand three times by asking
|
||||
what materially different audience, setting, stakes, constraints, or domain variation is
|
||||
missing. Do not add paraphrases of existing scenarios.
|
||||
|
||||
### 2. Perspective generation and expansion
|
||||
|
||||
For each scenario, derive evaluation dimensions from the task itself. Do not use a fixed
|
||||
dimension list. Expand four times by asking which distinct evaluation angle would yield
|
||||
new criteria. Consolidate overlap and assign perspective IDs (`p0`, `p1`, ...).
|
||||
|
||||
### 3. Criteria generation and expansion
|
||||
|
||||
For each retained perspective, write self-contained criteria that are:
|
||||
|
||||
- answerable `YES` or `NO`;
|
||||
- specific to the task and scenario;
|
||||
- observable in the work product;
|
||||
- non-redundant; and
|
||||
- phrased as one concrete required or forbidden behavior.
|
||||
|
||||
Expand three times by asking what additional observable behavior would materially change
|
||||
the verdict. Then merge overlap and assign criterion IDs (`c0`, `c1`, ...).
|
||||
|
||||
Include negative criteria only for harmful, misleading, or materially quality-reducing
|
||||
behavior—not minor style preferences. Phrase negative criteria as the bad behavior itself;
|
||||
the negative point value supplies the polarity.
|
||||
|
||||
## Default Weighted Scheme
|
||||
|
||||
Use this scheme only when the user did not provide another one:
|
||||
|
||||
- Positive `1–10`: `10` critical safety/core requirement; `8–9` important completeness;
|
||||
`5–7` meaningful quality; `1–4` minor enhancement.
|
||||
- Negative `-1–-10`: `-10` dangerous; `-8–-9` major error; `-5–-7` material quality
|
||||
problem; `-1–-4` minor problem.
|
||||
|
||||
For each criterion provide `criterion_id`, `criterion`, `points`, and a concise reason for
|
||||
the weight. Check that:
|
||||
|
||||
1. desirable criteria have positive signs and harmful behaviors have negative signs;
|
||||
2. more important criteria have larger absolute weights;
|
||||
3. positive and negative criteria do not duplicate the same requirement; and
|
||||
4. total positive points exceed total negative magnitude.
|
||||
|
||||
## Apply the Rubric
|
||||
|
||||
For every criterion:
|
||||
|
||||
1. Mark `YES` or `NO`.
|
||||
2. Cite the specific evidence or location supporting the verdict.
|
||||
3. Sum points only for criteria marked `YES`; positive items add and negative items
|
||||
subtract.
|
||||
|
||||
Report:
|
||||
|
||||
- earned positive points and maximum positive points;
|
||||
- negative penalties triggered;
|
||||
- net total and the scale interpretation;
|
||||
- the most important unmet positive criteria and triggered negative criteria; and
|
||||
- one concrete fix for each high-impact gap.
|
||||
|
||||
If there is no work product, do not fabricate a score. Return a weighted rubric and state
|
||||
that no work was graded.
|
||||
|
||||
## Output Discipline
|
||||
|
||||
- Show scenarios and perspectives only if the user asks for the full derivation.
|
||||
- Keep reasoning proportional; do not dump expansion logs.
|
||||
- Prefer evidence and actionable gaps over score theater.
|
||||
- If evidence is unavailable, mark the criterion `NO` or `not verifiable` according to the
|
||||
user's grading policy and disclose the limitation.
|
||||
|
||||
## Citation
|
||||
|
||||
This method is based on Qworld:
|
||||
|
||||
```bibtex
|
||||
@misc{gao2026qworldquestionspecificevaluationcriteria,
|
||||
title={Qworld: Question-Specific Evaluation Criteria for LLMs},
|
||||
author={Shanghua Gao and Yuchang Su and Pengwei Sui and Curtis Ginder and Marinka Zitnik},
|
||||
year={2026},
|
||||
eprint={2603.23522},
|
||||
archivePrefix={arXiv},
|
||||
primaryClass={cs.CL},
|
||||
url={https://arxiv.org/abs/2603.23522},
|
||||
}
|
||||
```
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
lineage_type: import
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/e2520a96/skills/tooluniverse/SKILL.md
|
||||
upstream_sha: e2520a96
|
||||
imported_at: 2026-06-26
|
||||
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/cfd26718/skills/tooluniverse/SKILL.md
|
||||
upstream_sha: cfd26718
|
||||
imported_at: 2026-08-08
|
||||
prompt_class: skill
|
||||
upstream_changes: accepted
|
||||
name: tooluniverse
|
||||
@@ -108,10 +108,12 @@ These reminders are for fast pattern recognition during routing. Detailed `❌ W
|
||||
|
||||
| Keywords | Action |
|
||||
|----------|--------|
|
||||
| **A single database-checkable fact**, especially multiple-choice — "which of the following gene/drug/variant/pathway is…", anything phrased "**according to** <database>" (DisGeNet, OMIM, MSigDB, miRDB, GTRD, MGI, Ensembl, ClinVar, ChEMBL, OpenTargets, UniProt). Look it up rather than answering from memory; niche annotations are what gets hallucinated | `Skill(skill="tooluniverse-biomedical-fact-lookup")` |
|
||||
| "research", "profile", "**disease**", "syndrome", "disorder", "comprehensive report on [disease]" | `Skill(skill="tooluniverse-disease-research")` |
|
||||
| "research", "profile", "**drug**", "medication", "therapeutic agent", "tell me about [drug]" | `Skill(skill="tooluniverse-drug-research")` |
|
||||
| "**literature review**", "papers about", "publications on", "research articles", "recent studies" | `Skill(skill="tooluniverse-literature-deep-research")` |
|
||||
| "research", "profile", "**target**", "protein target", "gene target", "target validation" | `Skill(skill="tooluniverse-target-research")` |
|
||||
| "**gene liability**", "gene safety score", "knockout safety", "knockdown safety", "on-target toxicity", "safe to inhibit [gene]" | `Skill(skill="tooluniverse-gene-liability")` |
|
||||
| "**peptide target**", "**deorphanize**", "deorphanization", "**peptide off-target**", "what does [peptide] bind", "target of a peptide", "orphan peptide", "peptide doesn't bind [target]", "binds in [species] but not", "find the receptor for [peptide]" | `Skill(skill="tooluniverse-peptide-target-deorphanization")` |
|
||||
|
||||
### 3. Clinical Decision Support
|
||||
@@ -130,8 +132,11 @@ These reminders are for fast pattern recognition during routing. Detailed `❌ W
|
||||
| "**TCGA**", "cancer genomics cohort", "GDC analysis", "TCGA mutations", "pan-cancer" | `Skill(skill="tooluniverse-cancer-genomics-tcga")` |
|
||||
| "**immunotherapy response**", "checkpoint inhibitor response", "TMB", "MSI", "PD-L1", "ICI response" | `Skill(skill="tooluniverse-immunotherapy-response-prediction")` |
|
||||
| "**rare disease diagnosis**", "differential diagnosis", "phenotype matching", "HPO", "patient with [symptoms]" | `Skill(skill="tooluniverse-rare-disease-diagnosis")` |
|
||||
| "**clinical risk score**", "CHA2DS2-VASc", "HAS-BLED", "CURB-65", "qSOFA", "Child-Pugh", "MELD-Na", "Wells score", "ASCVD risk", "eGFR CKD-EPI", "bedside risk calculator" | `Skill(skill="tooluniverse-clinical-risk-scoring")` |
|
||||
| "**device adverse events**", "device recall", "MAUDE", "food/supplement adverse event", "CAERS", "veterinary adverse event", "drug shortage" | `Skill(skill="tooluniverse-product-safety-surveillance")` |
|
||||
| "**variant interpretation**", "VUS", "pathogenicity", "clinical significance", "is [variant] pathogenic" | `Skill(skill="tooluniverse-variant-interpretation")` |
|
||||
| "**clinical guidelines**", "practice guidelines", "treatment guidelines", "dosing recommendations", "standard of care" | `Skill(skill="tooluniverse-clinical-guidelines")` |
|
||||
| **Drug choice for a described patient** — "which of the following is most appropriate for", "which drug should this patient receive"; a vignette naming a modifier (**hepatic/renal impairment**, Child-Pugh, "on a strong CYP3A4 inhibitor", pregnancy, a contraindication) alongside candidate drugs. The deciding fact is in each candidate's FDA label, not recall | `Skill(skill="tooluniverse-biomedical-fact-lookup")` |
|
||||
| "**patient stratification**", "precision medicine", "biomarker stratification", "treatment selection" | `Skill(skill="tooluniverse-precision-medicine-stratification")` |
|
||||
|
||||
### 4. Discovery & Design
|
||||
@@ -149,6 +154,7 @@ These reminders are for fast pattern recognition during routing. Detailed `❌ W
|
||||
| "**small molecule discovery**", "chemical biology", "compound sourcing", "hit finding", "chemical probe" | `Skill(skill="tooluniverse-small-molecule-discovery")` |
|
||||
| "**chemical sourcing**", "buy compound", "vendor search", "Enamine", "MolPort", "compound availability" | `Skill(skill="tooluniverse-chemical-sourcing")` |
|
||||
| "**GPCR**", "G-protein coupled receptor", "GPCRdb", "receptor ligand", "biased agonist" | `Skill(skill="tooluniverse-gpcr-structural-pharmacology")` |
|
||||
| "**dereplicate**", "natural product identification", "NPAtlas", "ChemOnt classification", "ClassyFire", "producing organism" | `Skill(skill="tooluniverse-natural-product-dereplication")` |
|
||||
|
||||
### 5. Genomics & Variant Analysis
|
||||
|
||||
@@ -165,6 +171,13 @@ These reminders are for fast pattern recognition during routing. Detailed `❌ W
|
||||
| "**regulatory variant**", "non-coding variant", "eQTL variant", "regulatory region variant" | `Skill(skill="tooluniverse-regulatory-variant-analysis")` |
|
||||
| "**rare disease genomics**", "Orphanet gene", "rare disease gene", "causative gene", "exome diagnosis" | `Skill(skill="tooluniverse-rare-disease-genomics")` |
|
||||
| "**1000 Genomes**", "IGSR", "population frequency", "superpopulation", "AFR/EUR/EAS/SAS/AMR" | `Skill(skill="tooluniverse-population-genetics-1000genomes")` |
|
||||
| "**PheWAS**", "phenome-wide association", "cross-ancestry replication", "cross-biobank", "FinnGen", "BioBank Japan", "pleiotropy of a variant" | `Skill(skill="tooluniverse-phewas")` |
|
||||
| "**Mendelian randomization**", "MR causal inference", "instrumental variable", "does X cause Y", "genetic causal evidence" | `Skill(skill="tooluniverse-mendelian-randomization")` |
|
||||
| "**loss-of-function mechanism**", "LoF mechanism", "why is this variant LoF", "structural stability vs functional disruption" | `Skill(skill="tooluniverse-protein-lof-mechanism")` |
|
||||
| "**SAE feature**", "sparse autoencoder variant", "ESMC SAE", "mechanistic variant interpretation" | `Skill(skill="tooluniverse-protein-sae-variant-interpretation")` |
|
||||
| "**per-residue annotation**", "binding interface residues", "ligand pocket residues", "buried vs surface residues", "PDB structural annotation" | `Skill(skill="tooluniverse-protein-structural-annotation-pdb")` |
|
||||
| "**why are these residues critical**", "residue functional mechanism", "DMS hotspot interpretation", "catalytic vs structural residue" | `Skill(skill="tooluniverse-residue-functional-mechanism-interpretation")` |
|
||||
| "**validate variant predictor**", "DMS validation", "deep mutational scanning benchmark", "predictor vs experimental effect" | `Skill(skill="tooluniverse-variant-predictor-dms-validation")` |
|
||||
|
||||
### 6. Systems & Network Analysis
|
||||
|
||||
@@ -207,13 +220,14 @@ These reminders are for fast pattern recognition during routing. Detailed `❌ W
|
||||
| "**primer design**", "PCR primers", "qPCR primer", "melting temperature", "Tm calculation", "annealing temperature", "GC clamp", "primer-dimer", "oligo analysis", "amplicon", "forward and reverse primer" | `Skill(skill="tooluniverse-primer-design")` |
|
||||
| "**diagnostic test**", "sensitivity specificity", "ROC curve", "AUC", "PPV", "NPV", "likelihood ratio", "Youden", "optimal cutoff", "post-test probability", "biomarker accuracy", "confusion matrix" | `Skill(skill="tooluniverse-diagnostic-test-evaluation")` |
|
||||
| "**drug synergy**", "drug combination", "Bliss independence", "Loewe additivity", "HSA synergy", "ZIP score", "combination index", "Chou-Talalay", "synergistic antagonistic", "combination therapy analysis" | `Skill(skill="tooluniverse-drug-synergy")` |
|
||||
| "**molecular cloning**", "Gibson Assembly", "Golden Gate", "Type IIS", "BsaI", "BbsI", "assembly overlap", "fragment assembly", "construct design", "domestication" | `Skill(skill="tooluniverse-molecular-cloning")` |
|
||||
| "**molecular cloning**", "Gibson Assembly", "Golden Gate", "Type IIS", "BsaI", "BbsI", "Esp3I", "BsmBI", "SapI", "assembly overlap", "fragment assembly", "construct design", "domestication", **or the reverse direction** — "I combined these plasmids…", "what does the resulting plasmid express", "what does the gRNA target", "virtual digest", "restriction digest of a plasmid" | `Skill(skill="tooluniverse-molecular-cloning")` |
|
||||
| "**metabolomics analysis**", "LC-MS analysis", "metabolite quantification", "metabolic flux" | `Skill(skill="tooluniverse-metabolomics-analysis")` |
|
||||
| "**functional genomics screen**", "CRISPR library", "shRNA screen", "barcode screen" | `Skill(skill="tooluniverse-functional-genomics-screens")` |
|
||||
| "**proteomics data**", "PRIDE", "MassIVE", "ProteomeXchange", "proteomics dataset" | `Skill(skill="tooluniverse-proteomics-data-retrieval")` |
|
||||
| "**protein modification**", "PTM analysis", "phosphorylation site", "ubiquitination", "glycosylation" | `Skill(skill="tooluniverse-protein-modification-analysis")` |
|
||||
| "**structural proteomics**", "cross-linking mass spec", "XL-MS", "HDX-MS", "structural biology" | `Skill(skill="tooluniverse-structural-proteomics")` |
|
||||
| "**protein structure prediction**", "AlphaFold prediction", "structure modeling", "homology modeling" | `Skill(skill="tooluniverse-protein-structure-prediction")` |
|
||||
| "**FASTQ QC**", "FastQC", "MultiQC", "adapter trimming", "fastp", "Cutadapt", "read quality", "sequence duplication" | `Skill(skill="tooluniverse-fastq-qc")` |
|
||||
|
||||
### 8. Clinical Trials & Study Design
|
||||
|
||||
@@ -237,6 +251,7 @@ These reminders are for fast pattern recognition during routing. Detailed `❌ W
|
||||
| "**ecology**", "biodiversity", "invasive species", "pollinator", "food web", "conservation", "community ecology", "trophic" | `Skill(skill="tooluniverse-ecology-biodiversity")` |
|
||||
| "**microbiome**", "gut microbiota", "dysbiosis", "microbiome composition", "16S rRNA" | `Skill(skill="tooluniverse-microbiome-research")` |
|
||||
| "**adverse outcome pathway**", "AOP", "key event", "molecular initiating event", "KER" | `Skill(skill="tooluniverse-adverse-outcome-pathway")` |
|
||||
| "**genome assembly**", "assembly N50", "RefSeq assembly QC", "plasmid count", "NCBI Datasets genome" | `Skill(skill="tooluniverse-microbial-genome-characterization")` |
|
||||
|
||||
### 10. Specialized Biology
|
||||
|
||||
@@ -278,6 +293,7 @@ These reminders are for fast pattern recognition during routing. Detailed `❌ W
|
||||
| "**custom tool**", "add my own tool", "local tool", "create tool", "extend ToolUniverse" | `Skill(skill="tooluniverse-custom-tool")` |
|
||||
| "**SDK**", "Python SDK", "build AI scientist", "programmatic access", "**import tooluniverse**", "**coding API**", "**tu build**", "**typed wrappers**" | `Skill(skill="tooluniverse-sdk")` |
|
||||
| "**install skills**", "missing skills", "skill not found", "add skills" | `Skill(skill="tooluniverse-install-skills")` |
|
||||
| "**self-review**", "eval current work", "evaluate this work", "check my work", "is this complete", "definition of done", "evaluation rubric", "success criteria", "grading criteria", "LLM-as-judge" | `Skill(skill="tooluniverse-self-review")` |
|
||||
|
||||
---
|
||||
|
||||
@@ -297,10 +313,15 @@ These reminders are for fast pattern recognition during routing. Detailed `❌ W
|
||||
3. **Specificity Rule**: More specific beats general.
|
||||
- "cancer treatment" → precision-oncology (not disease-research)
|
||||
|
||||
4. **Data Type Rule**: "get/retrieve/fetch" → retrieval skills.
|
||||
4. **Evaluation Intent Rule**: Route requests to review existing/current work to
|
||||
`tooluniverse-self-review`, but do not route requests to create or run an eval suite,
|
||||
grader, test, or benchmark there. Those are implementation tasks. Within self-review,
|
||||
plain "eval" is qualitative; scoring requires an explicit score/grade/points request.
|
||||
|
||||
5. **Data Type Rule**: "get/retrieve/fetch" → retrieval skills.
|
||||
- "get compound structure" → chemical-compound-retrieval (not drug-research)
|
||||
|
||||
5. **Still ambiguous**: Ask user with AskUserQuestion.
|
||||
6. **Still ambiguous**: Ask user with AskUserQuestion.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
title: "Awesome Drug Discovery [](https://awesome.re)"
|
||||
task: ""
|
||||
lineage_type: import
|
||||
upstream_source: https://github.com/yboulaamane/awesome-drug-discovery/blob/1b8ee074/README.md
|
||||
upstream_sha: 1b8ee074
|
||||
imported_at: 2026-07-16
|
||||
upstream_source: https://github.com/yboulaamane/awesome-drug-discovery/blob/4815deff/README.md
|
||||
upstream_sha: 4815deff
|
||||
imported_at: 2026-08-08
|
||||
prompt_class: catalogue
|
||||
upstream_changes: accepted
|
||||
author: upstream
|
||||
@@ -12,62 +12,56 @@ validated: false
|
||||
---
|
||||
|
||||
# Awesome Drug Discovery [](https://awesome.re)
|
||||
A meticulously curated resource list focused on computational methods for drug discovery.
|
||||
Computational methods for identifying and developing new drug candidates.
|
||||
|
||||
> Drug discovery is the process by which new candidate medications are identified, designed, and developed using experimental, computational, and informational techniques to address complex challenges in biology, chemistry, and medicine. — [Wikipedia](https://en.wikipedia.org/wiki/Drug_discovery)
|
||||
|
||||
---
|
||||
|
||||
## Contents
|
||||
- [Databases and Chemical Libraries](#databases-and-chemical-libraries)
|
||||
- [General Compound Libraries](#general-compound-libraries)
|
||||
- [Natural Product Libraries](#natural-product-libraries)
|
||||
- [Bioactivity Databases](#bioactivity-databases)
|
||||
- [Target and Protein Data](#target-and-protein-data)
|
||||
- [Protein Structures](#protein-structures)
|
||||
- [Binding Site and Pocket Detection](#binding-site-and-pocket-detection)
|
||||
- [Databases and Chemical Libraries](#databases-and-chemical-libraries)
|
||||
- [General Compound Libraries](#general-compound-libraries)
|
||||
- [Natural Product Libraries](#natural-product-libraries)
|
||||
- [Bioactivity Databases](#bioactivity-databases)
|
||||
- [Target and Protein Data](#target-and-protein-data)
|
||||
- [Protein Structures](#protein-structures)
|
||||
- [Binding Site and Pocket Detection](#binding-site-and-pocket-detection)
|
||||
- [Protein Engineering and Modeling](#protein-engineering-and-modeling)
|
||||
- [Network Pharmacology](#network-pharmacology)
|
||||
- [Ligand Design and Optimization](#ligand-design-and-optimization)
|
||||
- [Pharmacophore Modeling](#pharmacophore-modeling)
|
||||
- [QSAR and Descriptor Tools](#qsar-and-descriptor-tools)
|
||||
- [Network Pharmacology](#network-pharmacology)
|
||||
- [Ligand Design and Optimization](#ligand-design-and-optimization)
|
||||
- [Pharmacophore Modeling](#pharmacophore-modeling)
|
||||
- [QSAR and Descriptor Tools](#qsar-and-descriptor-tools)
|
||||
- [Descriptor and Featurization Tools](#descriptor-and-featurization-tools)
|
||||
- [Molecular Property Prediction](#molecular-property-prediction)
|
||||
- [Fragment-Based Drug Design](#fragment-based-drug-design)
|
||||
- [Virtual Screening and Docking](#virtual-screening-and-docking)
|
||||
- [Interaction Analysis and Visualization](#interaction-analysis-and-visualization)
|
||||
- [Molecular Dynamics and Simulation](#molecular-dynamics-and-simulation)
|
||||
- [Engines](#engines)
|
||||
- [Topology and Force Field Tools](#topology-and-force-field-tools)
|
||||
- [Analysis Tools](#analysis-tools)
|
||||
- [Synthesis and Retrosynthesis Planning](#synthesis-and-retrosynthesis-planning)
|
||||
- [Specialized Modalities](#specialized-modalities)
|
||||
- [PROTACs and Ternary Complexes](#protacs-and-ternary-complexes)
|
||||
- [Peptide Design](#peptide-design)
|
||||
- [Machine Learning and AI](#machine-learning-and-ai)
|
||||
- [Core Libraries](#core-libraries)
|
||||
- [Chemistry-focused ML Frameworks](#chemistry-focused-ml-frameworks)
|
||||
- [Pretrained Models](#pretrained-models)
|
||||
- [AutoML and Optimization](#automl-and-optimization)
|
||||
- [Molecule Standardization](#molecule-standardization)
|
||||
- [Utility and Workflow Tools](#utility-and-workflow-tools)
|
||||
- [Learning Resources](#learning-resources)
|
||||
- [Free Courses](#free-courses)
|
||||
- [Blogs](#blogs)
|
||||
- [Molecular Property Prediction](#molecular-property-prediction)
|
||||
- [Fragment-Based Drug Design](#fragment-based-drug-design)
|
||||
- [Virtual Screening and Docking](#virtual-screening-and-docking)
|
||||
- [Interaction Analysis and Visualization](#interaction-analysis-and-visualization)
|
||||
- [Molecular Dynamics and Simulation](#molecular-dynamics-and-simulation)
|
||||
- [Engines](#engines)
|
||||
- [Topology and Force Field Tools](#topology-and-force-field-tools)
|
||||
- [Analysis Tools](#analysis-tools)
|
||||
- [Synthesis and Retrosynthesis Planning](#synthesis-and-retrosynthesis-planning)
|
||||
- [Specialized Modalities](#specialized-modalities)
|
||||
- [PROTACs and Ternary Complexes](#protacs-and-ternary-complexes)
|
||||
- [Peptide Design](#peptide-design)
|
||||
- [Machine Learning and AI](#machine-learning-and-ai)
|
||||
- [Chemistry-focused ML Frameworks](#chemistry-focused-ml-frameworks)
|
||||
- [Pretrained Models](#pretrained-models)
|
||||
- [Molecule Standardization](#molecule-standardization)
|
||||
- [Utility and Workflow Tools](#utility-and-workflow-tools)
|
||||
- [Learning Resources](#learning-resources)
|
||||
- [Free Courses](#free-courses)
|
||||
- [Blogs](#blogs)
|
||||
- [Instructional Notebooks](#instructional-notebooks)
|
||||
- [Labs and Research Groups](#labs-and-research-groups)
|
||||
|
||||
---
|
||||
|
||||
## Databases and Chemical Libraries
|
||||
|
||||
### General Compound Libraries
|
||||
- [DrugBank](https://go.drugbank.com/) - Comprehensive data on approved and investigational drugs.
|
||||
- [ZINC](https://zinc.docking.org/) - Free compounds for screening.
|
||||
- [ChemSpider](http://www.chemspider.com/) - Chemical structures and data.
|
||||
- [DrugSpaceX](https://drugspacex.simm.ac.cn/) - Chemical and biological spaces.
|
||||
- [Mcule](https://mcule.com/) - Virtual screening platform with purchasable compounds.
|
||||
- [Otava Chemicals](https://www.otavachemicals.com/) - Screening compounds and building blocks.
|
||||
- [ZINC](https://zinc.docking.org/) - Free compounds for screening.
|
||||
- [ChemSpider](http://www.chemspider.com/) - Chemical structures and data.
|
||||
- [DrugSpaceX](https://drugspacex.simm.ac.cn/) - Chemical and biological spaces.
|
||||
- [Mcule](https://mcule.com/) - Virtual screening platform with purchasable compounds.
|
||||
- [Otava Chemicals](https://www.otavachemicals.com/) - Screening compounds and building blocks.
|
||||
- [Vitas-M Laboratory](https://vitasmlab.biz/) - Chemical libraries for HTS and lead discovery.
|
||||
- [Eximed](https://eximedlab.com/Screening-Compounds.html) - 60k+ compounds for virtual screening.
|
||||
- [OTAVA NP-like Library](https://otavachemicals.com/sdf) - Screening compounds for prompt delivery.
|
||||
@@ -75,34 +69,32 @@ A meticulously curated resource list focused on computational methods for drug d
|
||||
- [VAST Chemical Space](https://www.aifchem.com/vast) - 4.6 billion synthetically accessible compounds for virtual screening and hit expansion.
|
||||
|
||||
### Natural Product Libraries
|
||||
- [ZINC15 Natural Products](https://zinc15.docking.org/substances/subsets/natural-products/) - 200k+ natural compounds.
|
||||
- [COCONUT](https://coconut.naturalproducts.net/) - 400k+ natural products.
|
||||
- [LOTUS](https://lotus.naturalproducts.net/) - Annotated molecular data with sourcing organisms.
|
||||
- [NPASS](http://bidd.group/NPASS/index.php) - 94k activity-species links.
|
||||
- [ANPDB](https://phabidb.vm.uni-freiburg.de/anpdb/) - 27k+ African medicinal plant compounds.
|
||||
- [SANCDB](https://sancdb.rubi.ru.ac.za/) - Natural compounds from the plant and marine life in and around South Africa.
|
||||
- [CMNPD](https://www.cmnpd.org/) - 31k+ marine natural products.
|
||||
- [The Natural Products Atlas](https://www.npatlas.org/) - An open-access database for microbial natural products structures and metadata.
|
||||
- [CoumarinDB](https://yboulaamane.github.io/CoumarinDB/) - A manually curated database on coumarins from plants.
|
||||
- [ArtemisiaDB](https://yboulaamane.github.io/ArtemisiaDB/) - Artemisia genus compounds.
|
||||
- [BIAdb](https://webs.iiitd.edu.in/raghava/biadb/type.php?tp=natural) - A database for benzylisoquinoline alkaloids.
|
||||
- [IMPPAT](https://cb.imsc.res.in/imppat/home) - Phytochemicals from Indian medicinal plants.
|
||||
- [NP-MRD](https://np-mrd.org/natural_products) - 280k+ NMR-based NP studies.
|
||||
- [IBS Natural Compounds](https://www.ibscreen.com/natural-compounds) - 60k+ compounds.
|
||||
- [PhytoHub](https://phytohub.eu/) - Dietary phytochemicals and metabolites.
|
||||
- [Dr. Duke's Phytochemical DB](https://phytochem.nal.usda.gov/) - Plant compounds and uses.
|
||||
- [CyanoMetDB](https://zenodo.org/records/13854577) - Over 3,000 cyanobacterial metabolites.
|
||||
- [Seaweed Metabolite DB](https://www.swmd.co.in/) - Marine algae compounds.
|
||||
- [FooDB](https://foodb.ca/) - A comprehensive resource on food constituents.
|
||||
- [ZINC15 Natural Products](https://zinc15.docking.org/substances/subsets/natural-products/) - 200k+ natural compounds.
|
||||
- [COCONUT](https://coconut.naturalproducts.net/) - 400k+ natural products.
|
||||
- [LOTUS](https://lotus.naturalproducts.net/) - Annotated molecular data with sourcing organisms.
|
||||
- [NPASS](http://bidd.group/NPASS/index.php) - 94k activity-species links.
|
||||
- [ANPDB](https://phabidb.vm.uni-freiburg.de/anpdb/) - 27k+ African medicinal plant compounds.
|
||||
- [SANCDB](https://sancdb.rubi.ru.ac.za/) - Natural compounds from the plant and marine life in and around South Africa.
|
||||
- [CMNPD](https://www.cmnpd.org/) - 31k+ marine natural products.
|
||||
- [The Natural Products Atlas](https://www.npatlas.org/) - An open-access database for microbial natural products structures and metadata.
|
||||
- [BIAdb](https://webs.iiitd.edu.in/raghava/biadb/type.php?tp=natural) - A database for benzylisoquinoline alkaloids.
|
||||
- [IMPPAT](https://cb.imsc.res.in/imppat/home) - Phytochemicals from Indian medicinal plants.
|
||||
- [NP-MRD](https://np-mrd.org/natural_products) - 280k+ NMR-based NP studies.
|
||||
- [IBS Natural Compounds](https://www.ibscreen.com/natural-compounds) - 60k+ compounds.
|
||||
- [PhytoHub](https://phytohub.eu/) - Dietary phytochemicals and metabolites.
|
||||
- [Dr. Duke's Phytochemical DB](https://phytochem.nal.usda.gov/) - Plant compounds and uses.
|
||||
- [CyanoMetDB](https://zenodo.org/records/13854577) - Over 3,000 cyanobacterial metabolites.
|
||||
- [Seaweed Metabolite DB](https://www.swmd.co.in/) - Marine algae compounds.
|
||||
- [FooDB](https://foodb.ca/) - A comprehensive resource on food constituents.
|
||||
|
||||
### Bioactivity Databases
|
||||
- [ChEMBL](https://www.ebi.ac.uk/chembl/) - Bioactivity and ADMET data.
|
||||
- [SureChEMBL](https://www.surechembl.org/) - Patent chemistry search.
|
||||
- [BindingDB](https://www.bindingdb.org/) - Binding affinities for biomolecules.
|
||||
- [PubChem](https://pubchem.ncbi.nlm.nih.gov/) - Structures, properties, and bioassays.
|
||||
- [PDBbind](http://www.pdbbind.org.cn/index.php) - Protein-ligand affinity data.
|
||||
- [BRENDA](https://www.brenda-enzymes.org/) - Enzyme properties and functions.
|
||||
- [ExCAPE-DB](https://solr.ideaconsult.net/search/excape/) - A large-scale chemogenomics database.
|
||||
- [ChEMBL](https://www.ebi.ac.uk/chembl/) - Bioactivity and ADMET data.
|
||||
- [SureChEMBL](https://www.surechembl.org/) - Patent chemistry search.
|
||||
- [BindingDB](https://www.bindingdb.org/) - Binding affinities for biomolecules.
|
||||
- [PubChem](https://pubchem.ncbi.nlm.nih.gov/) - Structures, properties, and bioassays.
|
||||
- [PDBbind](http://www.pdbbind.org.cn/index.php) - Protein-ligand affinity data.
|
||||
- [BRENDA](https://www.brenda-enzymes.org/) - Enzyme properties and functions.
|
||||
- [ExCAPE-DB](https://solr.ideaconsult.net/search/excape/) - A large-scale chemogenomics database.
|
||||
- [Therapeutics Data Commons](https://tdcommons.ai/) - AI/ML-ready datasets and learning tasks for therapeutics.
|
||||
- [Therapeutic Target Database (TTD)](https://idrblab.net/ttd/) - Drug targets with linked diseases and compounds.
|
||||
- [Aircheck Datasets](https://aircheck.ai/datasets) - Curated DEL datasets for AI‑driven drug discovery, enabling benchmarking and model development.
|
||||
@@ -112,8 +104,6 @@ A meticulously curated resource list focused on computational methods for drug d
|
||||
- [CovalentInDB (CIDB)](https://cadd.zju.edu.cn/cidb/) - A comprehensive database dedicated to covalent inhibitors, targets, and experimental data.
|
||||
- [HSADab](https://github.com/proszxppp/HSADab) - Database of binding thermodynamics, structures, and docking data for human serum albumin.
|
||||
|
||||
---
|
||||
|
||||
## Target and Protein Data
|
||||
|
||||
### Protein Structures
|
||||
@@ -145,8 +135,6 @@ A meticulously curated resource list focused on computational methods for drug d
|
||||
- [RFdiffusion](https://github.com/RosettaCommons/RFdiffusion) - Open-source method for de novo protein design using structure-guided diffusion models.
|
||||
- [Melodia](https://github.com/rwmontalvao/Melodia_py) - Python library for analyzing and comparing protein structure shapes via differential geometry.
|
||||
|
||||
---
|
||||
|
||||
## Network Pharmacology
|
||||
- [GeneCards](https://www.genecards.org/) - Human gene database with genomic, proteomic, and clinical data.
|
||||
- [SwissTargetPrediction](http://www.swisstargetprediction.ch/) - Predicts targets of small molecules via similarity-based screening.
|
||||
@@ -165,8 +153,6 @@ A meticulously curated resource list focused on computational methods for drug d
|
||||
- [Polypharmacology Browser PPB3](https://ppb3.gdb.tools/) - Deep learning tool predicting off-target effects and polypharmacology for bioactive molecules.
|
||||
- [Drug-Target Interaction Explorer](https://github.com/yashhhhhhhhh504/Drug-Target-Interaction-Explorer) - Dashboard for exploring and visualizing drug-target interaction networks.
|
||||
|
||||
---
|
||||
|
||||
## Ligand Design and Optimization
|
||||
|
||||
### Pharmacophore Modeling
|
||||
@@ -184,11 +170,11 @@ A meticulously curated resource list focused on computational methods for drug d
|
||||
- [pyADA](https://github.com/jeffrichardchemistry/pyADA) - Assesses the applicability domain of molecular fingerprints via similarity-based thresholds for QSAR validation.
|
||||
|
||||
### Descriptor and Featurization Tools
|
||||
- [RDKit](https://www.rdkit.org/) - Open-source cheminformatics toolkit with descriptor, fingerprint, and molecular manipulation support.
|
||||
- [PaDEL-Descriptor](http://www.yapcwsoft.com/dd/padeldescriptor/) - Java tool for calculating molecular descriptors and fingerprints.
|
||||
- [Mordred](https://github.com/mordred-descriptor/mordred) - Python library with 1800+ molecular descriptors.
|
||||
- [CDK](https://cdk.github.io/) - Java cheminformatics library with descriptor calculators.
|
||||
- [alvaDesc](https://www.alvascience.com/alvadesc/) - Commercial software for molecular descriptors and fingerprints.
|
||||
- [RDKit](https://www.rdkit.org/) - Open-source cheminformatics toolkit with descriptor, fingerprint, and molecular manipulation support.
|
||||
- [PaDEL-Descriptor](http://www.yapcwsoft.com/dd/padeldescriptor/) - Java tool for calculating molecular descriptors and fingerprints.
|
||||
- [Mordred](https://github.com/mordred-descriptor/mordred) - Python library with 1800+ molecular descriptors.
|
||||
- [CDK](https://cdk.github.io/) - Java cheminformatics library with descriptor calculators.
|
||||
- [alvaDesc](https://www.alvascience.com/alvadesc/) - Commercial software for molecular descriptors and fingerprints.
|
||||
- [MolFeat](https://molfeat.datamol.io/) - Python package for molecular featurization and embeddings.
|
||||
- [Dragon](https://www.talete.mi.it/products/dragon_description.htm) - Commercial molecular descriptor calculator (widely cited).
|
||||
- [ChemDescriptor](https://github.com/darkreactions/chemdescriptor) - Open-source tool for generating chemical descriptors and fingerprints, supporting cheminformatics workflows.
|
||||
@@ -210,13 +196,11 @@ A meticulously curated resource list focused on computational methods for drug d
|
||||
|
||||
- [SwissSidechain](https://www.swisssidechain.ch/) - Fragment and linker library for small molecule design.
|
||||
- [BoBER](http://bober.insilab.org/) - Bioisosteric replacements for lead optimization.
|
||||
- [FragBuilder](https://github.com/andersx/fragbuilder) - Python API for building peptide-like and small molecule fragments.
|
||||
- [FragBuilder](https://github.com/andersx/fragbuilder) - Python API for building peptide-like and small molecule fragments.
|
||||
- [SeeSAR](https://www.biosolveit.de/SeeSAR/) - Fragment growing and linking software (free academic version).
|
||||
- [Enamine Fragment Libraries](https://enamine.net/compound-libraries/fragment-libraries) - Large curated collection of diverse fragments for FBDD.
|
||||
- [FragmentFinder](https://github.com/1JELC1/FragmentFinder) - Computational tool for identifying and matching structural fragments in drug discovery workflows.
|
||||
|
||||
---
|
||||
|
||||
## Virtual Screening and Docking
|
||||
- [OpenBabel](https://openbabel.org/index.html) - Format conversion and ligand prep.
|
||||
- [Meeko](https://github.com/forlilab/Meeko) - Prepares ligands/receptors for AutoDock by assigning partial charges and atom types.
|
||||
@@ -225,8 +209,8 @@ A meticulously curated resource list focused on computational methods for drug d
|
||||
- [AutoDockTools](https://autodocksuite.scripps.edu/adt/) - AutoDock GUI.
|
||||
- [AutoDock Vina](https://vina.scripps.edu/) - Popular docking software.
|
||||
- [AutoDock-GPU](https://github.com/ccsb-scripps/AutoDock-GPU) - GPU-accelerated version of AutoDock for faster ligand-receptor docking.
|
||||
- [DiffDock](https://github.com/gcorso/DiffDock) - Deep learning-based docking tool that predicts ligand poses directly from protein structures using diffusion models.
|
||||
- [EasyDockVina2](https://github.com/S3cr3t-SDN/EasyDockVina2) - Vina automation.
|
||||
- [DiffDock](https://github.com/gcorso/DiffDock) - Deep learning-based docking tool that predicts ligand poses directly from protein structures using diffusion models.
|
||||
- [EasyDockVina2](https://github.com/S3cr3t-SDN/EasyDockVina2) - Vina automation.
|
||||
- [Webina](https://durrantlab.pitt.edu/webina/) - Web-based Vina.
|
||||
- [Smina](https://github.com/mwojcikowski/smina) - Vina fork with extra features.
|
||||
- [Gnina](https://github.com/gnina/gnina) - CNN-scoring docking.
|
||||
@@ -244,8 +228,6 @@ A meticulously curated resource list focused on computational methods for drug d
|
||||
- [Chopdock](https://github.com/JanoschMenke/chopdock) - Molecular docking and cheminformatics tool for structural interaction analysis and fragment-based design.
|
||||
- [Boltzmann Maps](https://boltzmannmaps.com/) - Web application for structure-guided drug design using pre-computed water and chemical fragment maps.
|
||||
|
||||
---
|
||||
|
||||
## Interaction Analysis and Visualization
|
||||
- [PLIP](https://plip-tool.biotec.tu-dresden.de/plip-web/plip/index) - Protein-ligand interaction profiling.
|
||||
- [posecheck-fast](https://github.com/LigandPro/posecheck-fast) - High-throughput docking pose validation with symmetry-corrected RMSD and lightweight distance and clash filters.
|
||||
@@ -258,8 +240,6 @@ A meticulously curated resource list focused on computational methods for drug d
|
||||
- [xyzrender](https://github.com/aligfellow/xyzrender) - CLI for producing publication-quality molecular graphics, GIFs, and SVGs from coordinate files.
|
||||
- [pymol-sifts](https://github.com/connyyu/pymol_sifts/) - PyMOL plugin for integrating and visually mapping SIFTS structural and sequence data.
|
||||
|
||||
---
|
||||
|
||||
## Molecular Dynamics and Simulation
|
||||
|
||||
### Engines
|
||||
@@ -290,8 +270,6 @@ A meticulously curated resource list focused on computational methods for drug d
|
||||
- [cmd-viewer](https://github.com/Kopec-Lab/cmd-viewer) - Tool for visualizing and analyzing MD simulation trajectories and structural data.
|
||||
- [Pharmacon](https://github.com/k-georgiou/pharmacon) - Open-source toolkit for molecular dynamics simulation analysis in medicinal chemistry.
|
||||
|
||||
---
|
||||
|
||||
## Synthesis and Retrosynthesis Planning
|
||||
- [Spaya](https://spaya.ai/app/search) - AI-driven retrosynthesis engine with route ranking and synthetic feasibility scoring.
|
||||
- [AiZynthFinder](https://github.com/MolecularAI/aizynthfinder) - Monte Carlo tree search-based retrosynthesis using trained neural networks.
|
||||
@@ -300,8 +278,6 @@ A meticulously curated resource list focused on computational methods for drug d
|
||||
- [MANIFOLD](https://postera.ai/) - Search engine for synthetically accessible molecules and building blocks.
|
||||
- [onepot.ai](https://www.onepot.ai/) - AI-enabled molecular editor and synthesis planning platform with an encrypted structure environment.
|
||||
|
||||
---
|
||||
|
||||
## Specialized Modalities
|
||||
|
||||
### PROTACs and Ternary Complexes
|
||||
@@ -313,23 +289,11 @@ A meticulously curated resource list focused on computational methods for drug d
|
||||
- [PEP-SiteFinder](https://bioserv.rpbs.univ-paris-diderot.fr/services/PEP-SiteFinder/) - Predicts peptide-binding sites on protein structures using drug-like ligand mapping.
|
||||
- [PEP-FOLD3](https://bioserv.rpbs.univ-paris-diderot.fr/services/PEP-FOLD3/) - De novo peptide structure prediction framework.
|
||||
|
||||
---
|
||||
|
||||
## Machine Learning and AI
|
||||
|
||||
### Core Libraries
|
||||
- [scikit-learn](https://scikit-learn.org/) - General-purpose ML library for classification, regression, clustering, and model evaluation.
|
||||
- [PyTorch](https://pytorch.org/) - Deep learning framework with extensive support for neural network modeling.
|
||||
- [TensorFlow](https://www.tensorflow.org/) - End-to-end ML platform for scalable model development and deployment.
|
||||
- [Keras](https://keras.io/) - High-level neural network API running on top of TensorFlow, designed for fast experimentation.
|
||||
- [NumPy](https://numpy.org/) - Core library for numerical computing with support for arrays, matrices, and linear algebra.
|
||||
- [Pandas](https://pandas.pydata.org/) - Data manipulation and analysis toolkit built on top of NumPy.
|
||||
- [Matplotlib](https://matplotlib.org/) - Comprehensive library for creating static, animated, and interactive visualizations in Python.
|
||||
- [Seaborn](https://seaborn.pydata.org/) - Statistical data visualization library built on top of Matplotlib.
|
||||
|
||||
### Chemistry-focused ML Frameworks
|
||||
- [DeepChem](https://github.com/deepchem/deepchem) - Open-source deep learning framework for chemistry and biology.
|
||||
- [scikit-mol](https://github.com/EBjerrum/scikit-mol) - Open-source toolkit bridging RDKit and scikit-learn for molecular ML workflows.
|
||||
- [scikit-mol](https://github.com/EBjerrum/scikit-mol) - Open-source toolkit bridging RDKit and scikit-learn for molecular ML workflows.
|
||||
- [Chemprop](https://github.com/chemprop/chemprop) - Directed message passing neural networks for molecular property prediction.
|
||||
- [ChemML](https://github.com/hachmannlab/chemml) - Machine learning and informatics suite for analyzing, mining, and modeling chemical and materials data.
|
||||
- [Oloren ChemEngine](https://pypi.org/project/olorenchemengine/) - Unified API for molecular property prediction with uncertainty quantification, interpretability, and model tuning.
|
||||
@@ -348,17 +312,10 @@ A meticulously curated resource list focused on computational methods for drug d
|
||||
- [Boltz-2](https://github.com/jwohlwend/boltz) - A foundation model that jointly predicts structure and binding affinity, rivaling physics-based FEP methods in accuracy.
|
||||
- [Zatom](https://github.com/Zatom-AI/zatom) - AI-driven generative chemistry platform for discovering and analyzing molecular structures.
|
||||
|
||||
### AutoML and Optimization
|
||||
- [Auto-sklearn](https://automl.github.io/auto-sklearn/master/) - Automated machine learning for scikit-learn.
|
||||
- [TPOT](https://epistasislab.github.io/tpot/) - Genetic programming-based AutoML for optimizing ML pipelines.
|
||||
- [Optuna](https://optuna.org/) - Hyperparameter optimization framework for machine learning.
|
||||
|
||||
### Molecule Standardization
|
||||
- [MolVS](https://github.com/mcs07/MolVS) - Molecule validation and standardization library based on RDKit.
|
||||
- [cleanmol](https://github.com/nurtilekgalimov/cleanmol) - Python library for cleaning, standardizing, and preparing molecular structures for cheminformatics workflows.
|
||||
|
||||
---
|
||||
|
||||
## Utility and Workflow Tools
|
||||
- [ProteinsPlus](https://proteins.plus/) - A web-based platform designed to assist life scientists in analyzing and working with protein structures.
|
||||
- [OPSIN](https://opsin.ch.cam.ac.uk) - Convert IUPAC names to chemical structures.
|
||||
@@ -391,8 +348,6 @@ A meticulously curated resource list focused on computational methods for drug d
|
||||
- [PyChem-Pro](https://github.com/vijaymasand/PyChem-Pro) - Pure-Python desktop application for molecular visualization, geometry optimization, and cheminformatics.
|
||||
- [rdkit-agent](https://github.com/scottmreed/rdkit-agent) - Agent-first cheminformatics CLI powered by RDKit WASM for structure validation and format conversion.
|
||||
|
||||
---
|
||||
|
||||
## Learning Resources
|
||||
|
||||
### Free Courses
|
||||
@@ -408,6 +363,10 @@ A meticulously curated resource list focused on computational methods for drug d
|
||||
- [MDTutorials](http://www.mdtutorials.com/gmx/) - Step-by-step tutorials for MD simulations using GROMACS.
|
||||
- [Resources for Learning Bioinformatics](https://learnbioinformatics.org/) - Curated collection of tutorials and materials for bioinformatics and computational biology.
|
||||
- [Synthesis Workshop](https://synthesis-workshop.com/) - Open-access video podcast on advanced organic synthesis and medicinal chemistry.
|
||||
- [AI for Chemistry (ai4chem Book)](https://zzhenglab.github.io/ai4chem/intro.html) - An open-access book and interactive guide to machine learning and AI in chemistry.
|
||||
- [AI for Chemistry Course](https://github.com/schwallergroup/ai4chem_course) - Lecture slides, Jupyter notebooks, and exercises for machine learning in chemistry.
|
||||
- [CCAS Training Materials](https://ccas.nd.edu/research/training-materials/) - Training resources for computer-assisted synthesis tools, reaction modeling, and machine learning.
|
||||
- [ML in Chemistry (CHEM 542)](https://sites.rutgers.edu/sun-lab/teach-chem542/) - Rutgers University course materials covering machine learning applications in chemical sciences.
|
||||
|
||||
### Blogs
|
||||
- [Practical Fragments](http://practicalfragments.blogspot.com/) - Insights into fragment-based drug discovery.
|
||||
@@ -424,8 +383,12 @@ A meticulously curated resource list focused on computational methods for drug d
|
||||
- [Jeremy Monat](https://bertiewooster.github.io/) - Cheminformatics research and academic resources.
|
||||
- [RDKit blog](https://greglandrum.github.io/rdkit-blog/) - A rich collection of tutorials, technical tips, and experimental insights from Greg Landrum.
|
||||
- [DeepMedChem](https://www.deepmedchem.com/) - AI-powered insights, tool reviews, and workflows for modern drug discovery.
|
||||
- [The Data Chemist's Handbook](https://data-chemist-handbook.github.io/) - A curated handbook with guidelines, code snippets, and tools for data-driven chemistry.
|
||||
- [Awesome Learning Digital Chemistry](https://github.com/mlederbauer/awesome-learning-digital-chemistry) - Curated compilation of resources for learning digital chemistry, including courses, tutorials, and books.
|
||||
- [CCAS Data sets, Tools, and Workflows](https://ccas.nd.edu/research/data-sets-tools-and-workflows/) - A repository of datasets and computational workflows for computer-assisted organic synthesis.
|
||||
|
||||
### Instructional Notebooks
|
||||
- [DeepChem Tutorials](https://github.com/deepchem/deepchem/tree/master/examples/tutorials) - Comprehensive set of tutorials covering deep learning for chemistry, biology, and materials science.
|
||||
- [TeachOpenCADD](https://projects.volkamerlab.org/teachopencadd/all_talktorials.html) - Modular Jupyter tutorials for CADD workflows and concepts.
|
||||
- [intro_pharma_ai](https://github.com/kochgroup/intro_pharma_ai) - Notebook-based introduction to AI applications in pharma.
|
||||
- [Practical Cheminformatics Tutorials](https://github.com/PatWalters/practical_cheminformatics_tutorials) - Hands-on Jupyter tutorials for RDKit, SAR, clustering, generative models, and ML pipelines.
|
||||
@@ -438,18 +401,17 @@ A meticulously curated resource list focused on computational methods for drug d
|
||||
|
||||
- [Carlsson Lab](https://www.carlssonlab.org/) - GPCR modeling, receptor-ligand interactions, MD, docking, and AI for drug discovery. (Uppsala University, Sweden)
|
||||
- [InSiliChem](https://insilichem.com/) - Computational chemobiology and metalloenzyme design. (Universitat Autònoma de Barcelona, Spain)
|
||||
- [LCBC](https://sites.google.com/view/lcbc) - Molecular dynamics, free energy calculations, retrosynthesis using machine learning. (Seoul National University, Korea)
|
||||
- [LCBC](https://sites.google.com/view/lcbc) - Molecular dynamics, free energy calculations, retrosynthesis using machine learning. (Seoul National University, Korea)
|
||||
- [Angelo Raymond Rossi](https://angeloraymondrossi.github.io/) - High-performance computing for computational chemistry and cheminformatics. (University of Connecticut, USA)
|
||||
- [Laboratory of Chemoinformatics](https://complex-matter.unistra.fr/en/research-teams/laboratory-of-chemoinformatics/team/) - QSAR/QSPR, chemical similarity, and virtual screening. (Université de Strasbourg / CNRS, France)
|
||||
- [Erastova Lab](https://www.erastova.xyz/) - Molecular modeling of soft matter and biomolecular simulations. (University of Edinburgh, UK)
|
||||
- [The Ballester Group](https://ballestergroup.github.io/) - Developing ML/AI methods for structure-based scoring and virtual screening. (Imperial College London, UK)
|
||||
- [Meiler Lab](https://meilerlab.org/) - Rosetta software, protein design, and ML-based protein engineering. (Vanderbilt / Leipzig University, USA / Germany)
|
||||
- [COMP3D](https://comp3d.univie.ac.at/) - Develops and applies AI methods to design safe, effective pharmaceuticals and agrochemicals. (University of Vienna, Austria)
|
||||
- [COMP3D](https://comp3d.univie.ac.at/) - Develops and applies AI methods to design safe, effective pharmaceuticals and agrochemicals. (University of Vienna, Austria)
|
||||
- [Dral Group](http://dr-dral.com/) - AI-enhanced computational chemistry, quantum chemical methods, and development of MLatom. (Xiamen University, China)
|
||||
- [Bonvin Lab](https://www.bonvinlab.org/) - Computational structural biology, HADDOCK, and integrative modeling. (Utrecht University, Netherlands)
|
||||
- [Volkamer Lab](https://volkamerlab.org/) - Binding site analysis and AI-powered virtual screening. (Saarland University, Germany)
|
||||
- [AI Laboratory for Molecular Engineering](https://ailab.bio/) - PROTACs, molecular glues, and ML for chemistry and life sciences. (Chalmers University, Sweden)
|
||||
- [AI Laboratory for Molecular Engineering](https://ailab.bio/) - PROTACs, molecular glues, and ML for chemistry and life sciences. (Chalmers University, Sweden)
|
||||
- [Loschmidt Labs - PEG](https://loschmidt.chemi.muni.cz/peg/) - Protein and enzyme engineering, AI-assisted enzyme design. (Masaryk University, Czechia)
|
||||
- [QSAR4U](https://qsar4u.com/index.php) - Cheminformatics tools, QSAR modeling, CReM, and EasyDock. (Palacky University, Czechia)
|
||||
- [LBMD](https://www.chem.kuleuven.be/lbmd/index.html) - Computational strategies to understand and engineer biomolecular systems. (KU Leuven, Belgium)
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user