mcpbeat Sign in

Pytdc Agent Skill

Use Therapeutics Data Commons through the PyTDC Python package for registry discovery, approved dataset access, task-aware splits, evaluator metrics, benchmark groups, and bounded molecular-oracle workflows.

27k tokens
context cost
the whole folder, loaded on every use
11
files
ships runnable scripts
1
copies elsewhere
how many repositories repackaged it
32514
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/K-Dense-AI/scientific-agent-skills --skill pytdc

The instruction itself

14 sections, as written by the author

PyTDC (Therapeutics Data Commons)

Use the official PyTDC distribution (import tdc) to discover therapeutic ML

tasks, load approved datasets, apply task-appropriate splits, evaluate predictions,

and work with curated benchmark groups. Prefer package metadata over copied dataset

lists, and plan network/storage effects before constructing any loader.

Verified snapshot

  • Research date: 2026-07-23
  • PyPI stable: PyTDC 1.1.15, released 2025-03-31
  • Package/source repository: mims-harvard/TDC
  • Code license: MIT
  • PyPI supplies only a source distribution and declares no Requires-Python
  • The dependency graph makes CPython 3.11 the reproducible target used here:

cellxgene-census==1.15.0 excludes Python 3.12, and PyTDC's constrained

RDKit release has no CPython 3.13 wheel

  • PyTDC imports deprecated pkg_resources at runtime. Setuptools 82 removed that

module; pin the verified compatibility release setuptools 80.9.0.

  • tdc.readthedocs.io still identifies itself as TDC 0.4.1; use it as API

cross-reference, not as release-version evidence

  • Upstream publishes no GitHub tags/releases or maintained changelog. Treat

undocumented migration claims as uncertainty and verify against the installed

1.1.15 source/metadata.

See references/sources.md for dated evidence and known

documentation conflicts.

Installation

Use an isolated CPython 3.11 environment and pin the reviewed snapshot:

uv venv --python 3.11 .venv-pytdc
uv pip install --dry-run --python .venv-pytdc/bin/python \
  "setuptools==80.9.0" "PyTDC==1.1.15"
uv pip install --python .venv-pytdc/bin/python \
  "setuptools==80.9.0" "PyTDC==1.1.15"

The tested macOS ARM64 resolution installed 123 packages, including large

scientific/ML dependencies, so the environment itself can transfer and occupy

hundreds of megabytes before any dataset is downloaded. Review the dry run and

available disk first. The direct pins identify the reviewed API snapshot; generate

a platform-specific uv.lock in the user's project when every transitive version

must also be frozen.

For an ephemeral command:

uv run --python 3.11 \
  --with "setuptools==80.9.0" --with "PyTDC==1.1.15" \
  python scripts/discover_metadata.py --kind tasks

To check for a newer release, inspect the PyPI release history at

<https://pypi.org/project/pytdc/>. Before changing the pin, compare its source

distribution, dependencies, official repository, task registries, and smoke tests;

do not silently substitute the separate pytdc-nextml package.

Non-negotiable data and network policy

  • Discover first. Reading tdc.metadata or using

scripts/discover_metadata.py does not instantiate a loader or download data.

  • Plan second. Record the exact task/dataset, official task page, license,

expected size, cache directory, split, metric, and reproducibility seed.

  • Ask the user before downloading. Loader constructors fetch missing data.

Some datasets and benchmark-group archives are large; model-backed oracles can

fetch checkpoints; remote/docking oracles can transmit molecular structures.

  • Execute only after approval. In bundled CLIs, --execute acknowledges

execution and --download is additionally required for MolGen corpora or

supported oracle checkpoints.

  • Keep outputs bounded. Emit counts, schema, and small previews rather than

full datasets, sequences, prediction arrays, or molecule corpora.

Cache and cost behavior

  • Ordinary loaders default to path="./data" and save files beneath that path.

The bundled scripts instead default to explicit .pytdc-* directories.

  • Core downloads use Harvard Dataverse file endpoints when a local filename is

absent. Newer resource classes may use other upstream services.

  • admet_group(path=...) and other benchmark-group constructors download and

extract the group archive when <path>/<group> is absent.

  • Download-backed Oracle(...) construction uses ./oracle internally. The

bundled oracle CLI changes into a safe runtime directory before approved calls.

  • PyTDC 1.1.15 does not provide a universal cache quota, eviction policy, or

dataset-wide checksum manifest. Use scripts/cache_audit.py and manage disk

retention explicitly.

  • Network transfer, local storage, decompression, parsing, feature generation,

docking, and external service calls can all incur time or monetary cost.

The PyTDC code is MIT. Dataset/task licenses are heterogeneous: official task

pages include per-dataset terms ranging from Creative Commons licenses to

non-commercial restrictions or “Not Specified.” Verify the exact dataset's page and

original source terms before download, redistribution, publication, or commercial

use. Cite both TDC and the original dataset.

Start with metadata-only discovery

From this skill directory:

uv run --python 3.11 --with "setuptools==80.9.0" --with "PyTDC==1.1.15" \
  python scripts/discover_metadata.py --kind datasets --task ADME --limit 50

uv run --python 3.11 --with "setuptools==80.9.0" --with "PyTDC==1.1.15" \
  python scripts/discover_metadata.py --kind benchmarks --limit 50

uv run --python 3.11 --with "setuptools==80.9.0" --with "PyTDC==1.1.15" \
  python scripts/discover_metadata.py --kind evaluators --limit 100

The package API is also metadata-only:

from tdc.utils import retrieve_dataset_names, retrieve_benchmark_names

adme_names = retrieve_dataset_names("ADME")
admet_benchmarks = retrieve_benchmark_names("admet_group")

Use exact returned names. PyTDC performs fuzzy matching internally, but explicit

matching avoids silently selecting the wrong dataset/oracle.

Dataset workflow

Plan a split without downloading:

uv run --python 3.11 --with "setuptools==80.9.0" --with "PyTDC==1.1.15" \
  python scripts/load_and_split_data.py \
  --task ADME --dataset Caco2_Wang --method scaffold \
  --seed 42 --data-dir .pytdc-data

After the user approves the dataset, license, transfer, and storage:

uv run --python 3.11 --with "setuptools==80.9.0" --with "PyTDC==1.1.15" \
  python scripts/load_and_split_data.py \
  --task ADME --dataset Caco2_Wang --method scaffold \
  --seed 42 --data-dir .pytdc-data --execute

Verified public import patterns include:

from tdc.single_pred import ADME, Tox
from tdc.multi_pred import DDI, DTI
from tdc.generation import MolGen, Reaction, RetroSyn

Constructors perform data access, so do not run them before approval:

data = ADME(name="Caco2_Wang", path=".pytdc-data")
frame = data.get_data(format="df")
split = data.get_split(
    method="scaffold",
    seed=42,
    frac=[0.7, 0.1, 0.2],
)
# split keys are: train, valid, test

Read references/datasets.md before choosing a task or

dataset.

Split selection without overclaiming leakage control

  • random: default for loaders; default seed 42 and fractions 0.7/0.1/0.2.
  • scaffold: documented generic support for molecule-based ADME, Tox, and HTS.

PyTDC groups RDKit Bemis–Murcko scaffold strings (chirality disabled), but that

does not prove absence of analog, duplicate, label, temporal, or provenance

leakage.

  • cold_split: multi-instance API. Pass exact dataframe columns, for example

method="cold_split", column_name=["Drug", "Target"]. Multi-column splitting can

discard cross-partition rows and need not preserve requested row fractions.

  • combination: built-in DrugSyn combination split.
  • time: pair-loader API requiring time_column; the verified built-in case is

BindingDB_Patent with its Year column. The API spelling is time, not

temporal.

Do not use undocumented cold_drug_target, temporal, or stratified=True

examples. For every split, record PyTDC version, parameters, row counts, and exact

entity overlap audits. PyTDC 1.1.15's random splitter uses the supplied seed for

test sampling but a fixed random_state=1 for validation sampling; do not describe

all partitions as independently varying with the seed.

Detailed semantics and caveats are in

references/utilities.md.

Evaluators

Use exact names from the installed evaluator registry:

from tdc import Evaluator

mae = Evaluator(name="MAE")(y_true, y_pred)
auroc = Evaluator(name="ROC-AUC")(y_true_binary, predicted_scores)
pcc = Evaluator(name="PCC")(y_true, y_pred)

PCC is the registered Pearson-correlation name; Pearson is not. Multi-class

registry names are micro-f1, macro-f1, and kappa. Thresholded binary metrics

default to 0.5. Metric direction and input shape are metric-specific; use the

official task/benchmark metric rather than choosing from task type alone.

Benchmark groups

Use specialized classes. Top-level from tdc import BenchmarkGroup is retained

only as a deprecated compatibility path in 1.1.15.

from tdc.benchmark_group import admet_group

# Run only after approval: construction may download the group archive.
group = admet_group(path=".pytdc-benchmarks")
benchmark = group.get("Caco2_Wang")
train_val = benchmark["train_val"]
test = benchmark["test"]
train, valid = group.get_train_valid_split(
    seed=1,
    benchmark=benchmark["name"],
    split_type="default",
)

For one run, group.evaluate({name: test_predictions}) returns metric results.

For leaderboard aggregation, pass a **list of at least five prediction

dictionaries** to group.evaluate_many(...). Do not index group.get(...) by

seed, and do not derive dummy predictions from test labels.

Use scripts/benchmark_evaluation.py to validate a bounded JSON prediction plan

before any group download. See references/utilities.md

for the exact JSON shape and API behavior.

Molecular generation and oracles

PyTDC supplies molecule corpora, evaluators, and oracles; it does not train or

provide a generic molecule generator in the core workflow. Discover current names:

uv run --python 3.11 --with "setuptools==80.9.0" --with "PyTDC==1.1.15" \
  python scripts/discover_metadata.py --kind oracles --limit 100

Plan bounded local QED scoring:

uv run --python 3.11 --with "setuptools==80.9.0" --with "PyTDC==1.1.15" \
  python scripts/molecular_generation.py score --oracle QED --smiles CCO

Add --execute only after review. LogP and SA call the downloadable fpscores

artifact in 1.1.15; they and DRD2/GSK3B/JNK3/CYP3A4_Veith also require

--download. The helper intentionally refuses remote services, docking,

distribution, and composite oracles. It preserves input order and never assumes

score direction.

Read references/oracles.md before any oracle call.

Bundled resources

Scripts

  • scripts/discover_metadata.py — download-free package registry discovery
  • scripts/load_and_split_data.py — task-aware split plan/explicit execution
  • scripts/benchmark_evaluation.py — prediction validation and explicit evaluation
  • scripts/molecular_generation.py — bounded local/checkpoint scoring and MolGen plan
  • scripts/cache_audit.py — read-only bounded cache manifest

Every CLI uses lazy optional imports, safe relative output/cache paths, JSON

summaries, bounded output, and no implicit dataset/model download.

References

  • references/datasets.md — task discovery, data access,

cache behavior, and licensing

  • references/utilities.md — splits, evaluators, and

benchmark-group APIs

  • references/oracles.md — oracle categories, side effects,

and safe execution

  • references/sources.md — dated authoritative sources and

unresolved upstream gaps

Other skills for the same job

different authors, same section of the catalogue
At Dispatch V2
by pytorch
vendor ×3

Convert PyTorch AT_DISPATCH macros to AT_DISPATCH_V2 format in ATen C++ code. Use when porting AT_DISPATCH_ALL_TYPES_AND*, AT_DISPATCH_FLOATING_TYPES*, or other dispatch macros to the new v2 API. For ATen kernel files, CUDA kernels, and native operator implementations.

2k tokens
Docstring
by pytorch
vendor ×3

Write docstrings for PyTorch functions and methods following PyTorch conventions. Use when writing or updating docstrings in PyTorch code.

3k tokens
Statsmodels
by christophacham
×3

Statistical models library for Python. Use when you need specific model classes (OLS, GLM, mixed models, ARIMA) with detailed diagnostics, residuals, and inference. Best for econometrics, time series, rigorous inference with coefficient tables. For guided statistical test selection with APA reporting use statistical-analysis.

27k tokens
AI SDK
by vercel-labs
vendor ×2

Answer questions about the AI SDK and help build AI-powered features. Use when developers: (1) Ask about AI SDK functions like generateText, streamText, ToolLoopAgent, embed, or tools, (2) Want to build AI agents, chatbots, RAG systems, or text generation features, (3) Have questions about AI providers (OpenAI, Anthropic, Google, etc.), streaming, tool calling, structured output, or embeddings, (4) Use React hooks like useChat or useCompletion. Triggers on: "AI SDK", "Vercel AI SDK", "generateText", "streamText", "add AI to my app", "build an agent", "tool calling", "structured output", "useChat".

6k tokens
Create Llms
by github
vendor ×1

Create an llms.txt file from scratch based on repository structure following the llms.txt specification at https://llmstxt.org/

2k tokens
Huggingface Zerogpu
by huggingface
vendor ×1

AI demos and GPU compute with Gradio Spaces and Hugging Face Spaces ZeroGPU. Use when writing or reviewing code that uses `@spaces.GPU`, configuring `python_version` or `requirements.txt` for a ZeroGPU Space, or handling ZeroGPU-specific code constraints — pickle-based process isolation, `gr.State` semantics across the worker boundary, no `torch.compile` (use AoTI instead), CUDA wheel-only builds (no `nvcc` at build or runtime), large vs xlarge sizing, and dynamic duration callables. Make sure to use this skill whenever the user mentions ZeroGPU, `@spaces.GPU`, or the `spaces` Python package, or hits ZeroGPU-specific code errors like `PicklingError` across the worker boundary, `illegal duration`, or `flash-attn` wheel-build failures — even when the user does not explicitly ask for ZeroGPU coding guidance. Trigger on `import spaces` or `@spaces.GPU` in code.

9k tokens
Statsmodels
by zLanqing
×1

Statistical models library for Python. Use when you need specific model classes (OLS, GLM, mixed models, ARIMA) with detailed diagnostics, residuals, and inference. Best for econometrics, time series, rigorous inference with coefficient tables. For guided statistical test selection with APA reporting use statistical-analysis.

26k tokens
0g Compute
by internet-court
×1

0G Compute Network guide for decentralized AI inference, fine-tuning, and GPU services. Covers chatbots, image generation, speech-to-text, SDK integration (0g-serving-broker), processResponse API, broker.inference methods, CLI commands (0g-compute-cli), and account management. Use this skill for any 0G compute, 0G AI, or decentralized GPU question.

31k tokens

How to use it

Copy the folder

Take k-dense-ai/pytdc from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.

Install what it needs

The instructions reference pip, uv. Without those the skill loads but fails at the first command.