Source profileQuality 87/100Review permissions

K-Dense-AI/scientific-agent-skills/skills/pytdc/SKILL.md

pytdc

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.

Source repository stars
31,966
Declared platforms
0
Static risk flags
2
Last source update
2026-07-28
Source checked
2026-07-28

Decision brief

What it does—and where it fits

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 eff…

Best for

    Not for

    • Tasks that require unconfirmed production actions or broad system permissions.
    • Environments where the pinned source and install steps cannot be inspected.

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeNot declaredNo explicit evidencePortability before use
    CursorNot declaredNo explicit evidencePortability before use
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/K-Dense-AI/scientific-agent-skills --skill "skills/pytdc"
    Safe inspection promptEditorial

    Inspect the Agent Skill "pytdc" from https://github.com/K-Dense-AI/scientific-agent-skills/blob/e7ac42510774624f327003c95b6650e2883bc01d/skills/pytdc/SKILL.md at commit e7ac42510774624f327003c95b6650e2883bc01d. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      Dataset workflow

      Plan a split without downloading:

      Plan a split without downloading:After the user approves the dataset, license, transfer, and storage:Verified public import patterns include:
    2. 02

      Verified snapshot

      See references/sources.md for dated evidence and known documentation conflicts.

      Research date: 2026-07-23PyPI stable: PyTDC 1.1.15, released 2025-03-31Package/source repository: mims-harvard/TDC
    3. 03

      Installation

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

      Use an isolated CPython 3.11 environment and pin the reviewed snapshot: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…For an ephemeral command:
    4. 04

      Non-negotiable data and network policy

      1. Discover first. Reading tdc.metadata or using scripts/discovermetadata.py does not instantiate a loader or download data. 2. Plan second. Record the exact task/dataset, official task page, license, expected size, cache directory, split, metric, and reproducibility seed. 3. As…

      Discover first. Reading tdc.metadata or usingPlan second. Record the exact task/dataset, official task page, license,Ask the user before downloading. Loader constructors fetch missing data.
    5. 05

      Cache and cost behavior

      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, redi…

      Ordinary loaders default to path="./data" and save files beneath that path.Core downloads use Harvard Dataverse file endpoints when a local filename isadmetgroup(path=...) and other benchmark-group constructors download and

    Permission review

    Static risk signals and limitations

    Runs scripts

    medium · line 53

    The documentation asks the agent to run terminal commands or scripts.

    python scripts/discover_metadata.py --kind tasks

    Network access

    medium · line 69

    The documentation includes network, browsing, or remote request actions.

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

    Runs scripts

    medium · line 104

    The documentation asks the agent to run terminal commands or scripts.

    python scripts/discover_metadata.py --kind datasets --task ADME --limit 50

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score87/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars31,966SourceRepository attention, not individual Skill quality
    Compatibility0 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    K-Dense-AI/scientific-agent-skills
    Skill path
    skills/pytdc/SKILL.md
    Commit
    e7ac42510774624f327003c95b6650e2883bc01d
    License
    MIT
    Collected
    2026-07-28
    Default branch
    main
    View the original SKILL.md

    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

    1. Discover first. Reading tdc.metadata or using scripts/discover_metadata.py does not instantiate a loader or download data.
    2. Plan second. Record the exact task/dataset, official task page, license, expected size, cache directory, split, metric, and reproducibility seed.
    3. 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.
    4. Execute only after approval. In bundled CLIs, --execute acknowledges execution and --download is additionally required for MolGen corpora or supported oracle checkpoints.
    5. 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

    Alternatives

    Compare before choosing

    Computed 9831,966

    K-Dense-AI/scientific-agent-skills

    dask

    Distributed computing for larger-than-RAM pandas/NumPy workflows. Use when you need to scale existing pandas/NumPy code beyond memory or across clusters. Best for parallel file processing, distributed ML, integration with existing pandas code. For out-of-core analytics on single machine use vaex; for in-memory speed use polars.

    Computed 9831,966

    K-Dense-AI/scientific-agent-skills

    medchem

    Medicinal chemistry filters for compound triage. Apply drug-likeness rules (Lipinski, Veber, CNS), structural alert catalogs (PAINS, NIBR, ChEMBL), complexity metrics, and the medchem query language for library filtering.

    Computed 9831,966

    K-Dense-AI/scientific-agent-skills

    neurokit2

    Use NeuroKit2 to build or audit reproducible research workflows for physiological time-series preprocessing, event/interval analysis, multimodal alignment, variability, and complexity. Trigger when code imports neurokit2 or needs its current APIs, schemas, and method-aware validation—not for diagnosis or device validation.

    Computed 9637,126

    github/awesome-copilot

    flowstudio-power-automate-mcp

    Foundation skill for Power Automate via FlowStudio MCP — auth setup, the reusable MCP helper (Python + Node.js), tool discovery via `list_skills` / `tool_search`, and oversized-response handling. Load this skill first when connecting an agent to Power Automate. For specialized workflows, load `flowstudio-power-automate-build`, `flowstudio-power-automate-debug`, `flowstudio-power-automate-monitoring` (Pro+), or `flowstudio-power-automate-governance` (Pro+) — each contains the workflow narrative,