[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M74ZBKRBFVR2P98B26CVX4MW":3,"skill-same:01M74ZBKRBFVR2P98B26CVX4MW":99},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":31,"commitSha":32,"skillDirectory":33,"forksCount":34,"repositoryHtmlUrl":35,"repositoryHomepageUrl":36,"ownerHtmlUrl":37,"ownerBlogUrl":38,"ownerDescription":39,"updatedAt":40,"install":41,"resources":54},"01M74ZBKRBFVR2P98B26CVX4MW","pytdc",null,"Uses the PyTDC package (import tdc, Therapeutics Data Commons) to discover therapeutic ML tasks from tdc.metadata, plan and load approved datasets, apply task-aware splits (random, scaffold, cold_split, combination, time), run evaluator metrics, evaluate benchmark groups such as admet_group, and run bounded molecular-oracle scoring. Use when selecting a TDC task or dataset, planning a download-free split, scoring predictions with TDC evaluators, running a benchmark group evaluation, or checking dataset licenses and cache effects before downloading. Use when scoring molecules with TDC oracles like QED. Not for generic RDKit cheminformatics or training molecule generators.","KalarisLabs\u002Fresearch-agent-skills","KalarisLabs","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F300878568?v=4","01M74Y7MT23GXXC56VM6TVSXZY","Kalarislabs","01M74Y7MTQM9REXZX4SNXWX95C",118,"MIT","https:\u002F\u002Fgithub.com\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fpytdc\u002FSKILL.md",[],[],"2026-11-11 17:47:46",false,"---\nname: pytdc\ndescription: Uses the PyTDC package (import tdc, Therapeutics Data Commons) to discover therapeutic ML tasks from tdc.metadata, plan and load approved datasets, apply task-aware splits (random, scaffold, cold_split, combination, time), run evaluator metrics, evaluate benchmark groups such as admet_group, and run bounded molecular-oracle scoring. Use when selecting a TDC task or dataset, planning a download-free split, scoring predictions with TDC evaluators, running a benchmark group evaluation, or checking dataset licenses and cache effects before downloading. Use when scoring molecules with TDC oracles like QED. Not for generic RDKit cheminformatics or training molecule generators.\nlicense: MIT\ncompatibility: Requires uv, CPython 3.11, PyTDC 1.1.15, and setuptools 80.9.0 for its legacy pkg_resources runtime import. Dataset, benchmark, checkpoint, and remote-oracle operations require network\u002Fstorage review and explicit user approval.\nallowed-tools: Read Write Edit Bash\nmetadata:\n  version: '1.2'\n  category: scientific-databases\n  maintainer: Kalaris Labs\n  tags: therapeutics, drug discovery datasets, benchmarks, machine learning, ADMET\n---\n\n# PyTDC (Therapeutics Data Commons)\n\nUse the official `PyTDC` distribution (`import tdc`) to discover therapeutic ML\ntasks, load approved datasets, apply task-appropriate splits, evaluate predictions,\nand work with curated benchmark groups. Prefer package metadata over copied dataset\nlists, and plan network\u002Fstorage effects before constructing any loader.\n\n## Verified snapshot\n\n- Research date: **2026-07-23**\n- PyPI stable: **PyTDC 1.1.15**, released 2025-03-31\n- Package\u002Fsource repository: `mims-harvard\u002FTDC`\n- Code license: MIT\n- PyPI supplies only a source distribution and declares no `Requires-Python`\n- The dependency graph makes **CPython 3.11** the reproducible target used here:\n  `cellxgene-census==1.15.0` excludes Python 3.12, and PyTDC's constrained\n  RDKit release has no CPython 3.13 wheel\n- PyTDC imports deprecated `pkg_resources` at runtime. Setuptools 82 removed that\n  module; pin the verified compatibility release **setuptools 80.9.0**.\n- `tdc.readthedocs.io` still identifies itself as TDC 0.4.1; use it as API\n  cross-reference, not as release-version evidence\n- Upstream publishes no GitHub tags\u002Freleases or maintained changelog. Treat\n  undocumented migration claims as uncertainty and verify against the installed\n  1.1.15 source\u002Fmetadata.\n\nSee [references\u002Fsources.md](references\u002Fsources.md) for dated evidence and known\ndocumentation conflicts.\n\n## Installation\n\nUse an isolated CPython 3.11 environment and pin the reviewed snapshot:\n\n```bash\nuv venv --python 3.11 .venv-pytdc\nuv pip install --dry-run --python .venv-pytdc\u002Fbin\u002Fpython \\\n  \"setuptools==80.9.0\" \"PyTDC==1.1.15\"\nuv pip install --python .venv-pytdc\u002Fbin\u002Fpython \\\n  \"setuptools==80.9.0\" \"PyTDC==1.1.15\"\n```\n\nThe tested macOS ARM64 resolution installed 123 packages, including large\nscientific\u002FML dependencies, so the environment itself can transfer and occupy\nhundreds of megabytes before any dataset is downloaded. Review the dry run and\navailable disk first. The direct pins identify the reviewed API snapshot; generate\na platform-specific `uv.lock` in the user's project when every transitive version\nmust also be frozen.\n\nFor an ephemeral command:\n\n```bash\nuv run --python 3.11 \\\n  --with \"setuptools==80.9.0\" --with \"PyTDC==1.1.15\" \\\n  python scripts\u002Fdiscover_metadata.py --kind tasks\n```\n\nTo check for a newer release, inspect the PyPI release history at\n\u003Chttps:\u002F\u002Fpypi.org\u002Fproject\u002Fpytdc\u002F>. Before changing the pin, compare its source\ndistribution, dependencies, official repository, task registries, and smoke tests;\ndo not silently substitute the separate `pytdc-nextml` package.\n\n## Non-negotiable data and network policy\n\n1. **Discover first.** Reading `tdc.metadata` or using\n   `scripts\u002Fdiscover_metadata.py` does not instantiate a loader or download data.\n2. **Plan second.** Record the exact task\u002Fdataset, official task page, license,\n   expected size, cache directory, split, metric, and reproducibility seed.\n3. **Ask the user before downloading.** Loader constructors fetch missing data.\n   Some datasets and benchmark-group archives are large; model-backed oracles can\n   fetch checkpoints; remote\u002Fdocking oracles can transmit molecular structures.\n4. **Execute only after approval.** In bundled CLIs, `--execute` acknowledges\n   execution and `--download` is additionally required for MolGen corpora or\n   supported oracle checkpoints.\n5. **Keep outputs bounded.** Emit counts, schema, and small previews rather than\n   full datasets, sequences, prediction arrays, or molecule corpora.\n\n### Cache and cost behavior\n\n- Ordinary loaders default to `path=\".\u002Fdata\"` and save files beneath that path.\n  The bundled scripts instead default to explicit `.pytdc-*` directories.\n- Core downloads use Harvard Dataverse file endpoints when a local filename is\n  absent. Newer resource classes may use other upstream services.\n- `admet_group(path=...)` and other benchmark-group constructors download and\n  extract the group archive when `\u003Cpath>\u002F\u003Cgroup>` is absent.\n- Download-backed `Oracle(...)` construction uses `.\u002Foracle` internally. The\n  bundled oracle CLI changes into a safe runtime directory before approved calls.\n- PyTDC 1.1.15 does not provide a universal cache quota, eviction policy, or\n  dataset-wide checksum manifest. Use `scripts\u002Fcache_audit.py` and manage disk\n  retention explicitly.\n- Network transfer, local storage, decompression, parsing, feature generation,\n  docking, and external service calls can all incur time or monetary cost.\n\nThe PyTDC **code** is MIT. Dataset\u002Ftask licenses are heterogeneous: official task\npages include per-dataset terms ranging from Creative Commons licenses to\nnon-commercial restrictions or “Not Specified.” Verify the exact dataset's page and\noriginal source terms before download, redistribution, publication, or commercial\nuse. Cite both TDC and the original dataset.\n\n## Start with metadata-only discovery\n\nFrom this skill directory:\n\n```bash\nuv run --python 3.11 --with \"setuptools==80.9.0\" --with \"PyTDC==1.1.15\" \\\n  python scripts\u002Fdiscover_metadata.py --kind datasets --task ADME --limit 50\n\nuv run --python 3.11 --with \"setuptools==80.9.0\" --with \"PyTDC==1.1.15\" \\\n  python scripts\u002Fdiscover_metadata.py --kind benchmarks --limit 50\n\nuv run --python 3.11 --with \"setuptools==80.9.0\" --with \"PyTDC==1.1.15\" \\\n  python scripts\u002Fdiscover_metadata.py --kind evaluators --limit 100\n```\n\nThe package API is also metadata-only:\n\n```python\nfrom tdc.utils import retrieve_dataset_names, retrieve_benchmark_names\n\nadme_names = retrieve_dataset_names(\"ADME\")\nadmet_benchmarks = retrieve_benchmark_names(\"admet_group\")\n```\n\nUse exact returned names. PyTDC performs fuzzy matching internally, but explicit\nmatching avoids silently selecting the wrong dataset\u002Foracle.\n\n## Dataset workflow\n\nPlan a split without downloading:\n\n```bash\nuv run --python 3.11 --with \"setuptools==80.9.0\" --with \"PyTDC==1.1.15\" \\\n  python scripts\u002Fload_and_split_data.py \\\n  --task ADME --dataset Caco2_Wang --method scaffold \\\n  --seed 42 --data-dir .pytdc-data\n```\n\nAfter the user approves the dataset, license, transfer, and storage:\n\n```bash\nuv run --python 3.11 --with \"setuptools==80.9.0\" --with \"PyTDC==1.1.15\" \\\n  python scripts\u002Fload_and_split_data.py \\\n  --task ADME --dataset Caco2_Wang --method scaffold \\\n  --seed 42 --data-dir .pytdc-data --execute\n```\n\nVerified public import patterns include:\n\n```python\nfrom tdc.single_pred import ADME, Tox\nfrom tdc.multi_pred import DDI, DTI\nfrom tdc.generation import MolGen, Reaction, RetroSyn\n```\n\nConstructors perform data access, so do not run them before approval:\n\n```python\ndata = ADME(name=\"Caco2_Wang\", path=\".pytdc-data\")\nframe = data.get_data(format=\"df\")\nsplit = data.get_split(\n    method=\"scaffold\",\n    seed=42,\n    frac=[0.7, 0.1, 0.2],\n)\n# split keys are: train, valid, test\n```\n\nRead [references\u002Fdatasets.md](references\u002Fdatasets.md) before choosing a task or\ndataset.\n\n## Split selection without overclaiming leakage control\n\n- `random`: default for loaders; default seed 42 and fractions 0.7\u002F0.1\u002F0.2.\n- `scaffold`: documented generic support for molecule-based ADME, Tox, and HTS.\n  PyTDC groups RDKit Bemis–Murcko scaffold strings (chirality disabled), but that\n  does **not** prove absence of analog, duplicate, label, temporal, or provenance\n  leakage.\n- `cold_split`: multi-instance API. Pass exact dataframe columns, for example\n  `method=\"cold_split\", column_name=[\"Drug\", \"Target\"]`. Multi-column splitting can\n  discard cross-partition rows and need not preserve requested row fractions.\n- `combination`: built-in DrugSyn combination split.\n- `time`: pair-loader API requiring `time_column`; the verified built-in case is\n  `BindingDB_Patent` with its `Year` column. The API spelling is `time`, not\n  `temporal`.\n\nDo not use undocumented `cold_drug_target`, `temporal`, or `stratified=True`\nexamples. For every split, record PyTDC version, parameters, row counts, and exact\nentity overlap audits. PyTDC 1.1.15's random splitter uses the supplied seed for\ntest sampling but a fixed `random_state=1` for validation sampling; do not describe\nall partitions as independently varying with the seed.\n\nDetailed semantics and caveats are in\n[references\u002Futilities.md](references\u002Futilities.md).\n\n## Evaluators\n\nUse exact names from the installed evaluator registry:\n\n```python\nfrom tdc import Evaluator\n\nmae = Evaluator(name=\"MAE\")(y_true, y_pred)\nauroc = Evaluator(name=\"ROC-AUC\")(y_true_binary, predicted_scores)\npcc = Evaluator(name=\"PCC\")(y_true, y_pred)\n```\n\n`PCC` is the registered Pearson-correlation name; `Pearson` is not. Multi-class\nregistry names are `micro-f1`, `macro-f1`, and `kappa`. Thresholded binary metrics\ndefault to 0.5. Metric direction and input shape are metric-specific; use the\nofficial task\u002Fbenchmark metric rather than choosing from task type alone.\n\n## Benchmark groups\n\nUse specialized classes. Top-level `from tdc import BenchmarkGroup` is retained\nonly as a deprecated compatibility path in 1.1.15.\n\n```python\nfrom tdc.benchmark_group import admet_group\n\n# Run only after approval: construction may download the group archive.\ngroup = admet_group(path=\".pytdc-benchmarks\")\nbenchmark = group.get(\"Caco2_Wang\")\ntrain_val = benchmark[\"train_val\"]\ntest = benchmark[\"test\"]\ntrain, valid = group.get_train_valid_split(\n    seed=1,\n    benchmark=benchmark[\"name\"],\n    split_type=\"default\",\n)\n```\n\nFor one run, `group.evaluate({name: test_predictions})` returns metric results.\nFor leaderboard aggregation, pass a **list of at least five prediction\ndictionaries** to `group.evaluate_many(...)`. Do not index `group.get(...)` by\nseed, and do not derive dummy predictions from test labels.\n\nUse `scripts\u002Fbenchmark_evaluation.py` to validate a bounded JSON prediction plan\nbefore any group download. See [references\u002Futilities.md](references\u002Futilities.md)\nfor the exact JSON shape and API behavior.\n\n## Molecular generation and oracles\n\nPyTDC supplies molecule corpora, evaluators, and oracles; it does not train or\nprovide a generic molecule generator in the core workflow. Discover current names:\n\n```bash\nuv run --python 3.11 --with \"setuptools==80.9.0\" --with \"PyTDC==1.1.15\" \\\n  python scripts\u002Fdiscover_metadata.py --kind oracles --limit 100\n```\n\nPlan bounded local QED scoring:\n\n```bash\nuv run --python 3.11 --with \"setuptools==80.9.0\" --with \"PyTDC==1.1.15\" \\\n  python scripts\u002Fmolecular_generation.py score --oracle QED --smiles CCO\n```\n\nAdd `--execute` only after review. LogP and SA call the downloadable `fpscores`\nartifact in 1.1.15; they and DRD2\u002FGSK3B\u002FJNK3\u002FCYP3A4_Veith also require\n`--download`. The helper intentionally refuses remote services, docking,\ndistribution, and composite oracles. It preserves input order and never assumes\nscore direction.\n\nRead [references\u002Foracles.md](references\u002Foracles.md) before any oracle call.\n\n## Bundled resources\n\n### Scripts\n\n- `scripts\u002Fdiscover_metadata.py` — download-free package registry discovery\n- `scripts\u002Fload_and_split_data.py` — task-aware split plan\u002Fexplicit execution\n- `scripts\u002Fbenchmark_evaluation.py` — prediction validation and explicit evaluation\n- `scripts\u002Fmolecular_generation.py` — bounded local\u002Fcheckpoint scoring and MolGen plan\n- `scripts\u002Fcache_audit.py` — read-only bounded cache manifest\n\nEvery CLI uses lazy optional imports, safe relative output\u002Fcache paths, JSON\nsummaries, bounded output, and no implicit dataset\u002Fmodel download.\n\n### References\n\n- [references\u002Fdatasets.md](references\u002Fdatasets.md) — task discovery, data access,\n  cache behavior, and licensing\n- [references\u002Futilities.md](references\u002Futilities.md) — splits, evaluators, and\n  benchmark-group APIs\n- [references\u002Foracles.md](references\u002Foracles.md) — oracle categories, side effects,\n  and safe execution\n- [references\u002Fsources.md](references\u002Fsources.md) — dated authoritative sources and\n  unresolved upstream gaps\n\n## Agent operating procedure\n\n1. **Check the environment.** Confirm network access, API keys (if required) and the database's current API documentation and rate limits.\n2. **Pin down the inputs.** Confirm formats, identifiers and parameters from the data or the user. Ask rather than guess any value that changes the result.\n3. **Run a small version first.** Fetch a single known record and check the response format before bulk queries.\n4. **Execute the full task** using the instructions and references above.\n5. **Validate the result.** Identifiers resolve, record counts are reported, and the database version or access date is recorded.\n6. **Report.** State what was run (versions, commands, parameters), what was checked, and what is still uncertain.\n\n| If this happens | Do this |\n|---|---|\n| HTTP 429 or 5xx errors | Respect rate limits with backoff, batch requests, and report partial results honestly. |\n| A function, flag or endpoint in these instructions is missing in the installed version | Check the installed version's own documentation (`help()`, `--help`, official docs), adapt, and tell the user. Never invent an API. |\n| A required input, identifier or parameter is ambiguous | Ask the user, or state the assumption explicitly before running. |\n\n**Integrity rules**\n\n- Never fabricate results, parameters, identifiers, citations or statistics. If something cannot be run or verified, say so plainly.\n- Never invent accession numbers, IDs or records; report 'not found' instead.\n- Treat version-specific details here as possibly outdated: confirm them against the official documentation for the installed version.\n- Ask before actions that cost money, consume shared GPUs or cloud quota, touch personal or patient data, or cannot be undone.\n\n## Related skills\n\n- `deepchem`: Molecular ML with diverse featurizers and pre-built datasets.\n","# PyTDC (Therapeutics Data Commons)\n\nUse the official `PyTDC` distribution (`import tdc`) to discover therapeutic ML\ntasks, load approved datasets, apply task-appropriate splits, evaluate predictions,\nand work with curated benchmark groups. Prefer package metadata over copied dataset\nlists, and plan network\u002Fstorage effects before constructing any loader.\n\n## Verified snapshot\n\n- Research date: **2026-07-23**\n- PyPI stable: **PyTDC 1.1.15**, released 2025-03-31\n- Package\u002Fsource repository: `mims-harvard\u002FTDC`\n- Code license: MIT\n- PyPI supplies only a source distribution and declares no `Requires-Python`\n- The dependency graph makes **CPython 3.11** the reproducible target used here:\n  `cellxgene-census==1.15.0` excludes Python 3.12, and PyTDC's constrained\n  RDKit release has no CPython 3.13 wheel\n- PyTDC imports deprecated `pkg_resources` at runtime. Setuptools 82 removed that\n  module; pin the verified compatibility release **setuptools 80.9.0**.\n- `tdc.readthedocs.io` still identifies itself as TDC 0.4.1; use it as API\n  cross-reference, not as release-version evidence\n- Upstream publishes no GitHub tags\u002Freleases or maintained changelog. Treat\n  undocumented migration claims as uncertainty and verify against the installed\n  1.1.15 source\u002Fmetadata.\n\nSee [references\u002Fsources.md](references\u002Fsources.md) for dated evidence and known\ndocumentation conflicts.\n\n## Installation\n\nUse an isolated CPython 3.11 environment and pin the reviewed snapshot:\n\n```bash\nuv venv --python 3.11 .venv-pytdc\nuv pip install --dry-run --python .venv-pytdc\u002Fbin\u002Fpython \\\n  \"setuptools==80.9.0\" \"PyTDC==1.1.15\"\nuv pip install --python .venv-pytdc\u002Fbin\u002Fpython \\\n  \"setuptools==80.9.0\" \"PyTDC==1.1.15\"\n```\n\nThe tested macOS ARM64 resolution installed 123 packages, including large\nscientific\u002FML dependencies, so the environment itself can transfer and occupy\nhundreds of megabytes before any dataset is downloaded. Review the dry run and\navailable disk first. The direct pins identify the reviewed API snapshot; generate\na platform-specific `uv.lock` in the user's project when every transitive version\nmust also be frozen.\n\nFor an ephemeral command:\n\n```bash\nuv run --python 3.11 \\\n  --with \"setuptools==80.9.0\" --with \"PyTDC==1.1.15\" \\\n  python scripts\u002Fdiscover_metadata.py --kind tasks\n```\n\nTo check for a newer release, inspect the PyPI release history at\n\u003Chttps:\u002F\u002Fpypi.org\u002Fproject\u002Fpytdc\u002F>. Before changing the pin, compare its source\ndistribution, dependencies, official repository, task registries, and smoke tests;\ndo not silently substitute the separate `pytdc-nextml` package.\n\n## Non-negotiable data and network policy\n\n1. **Discover first.** Reading `tdc.metadata` or using\n   `scripts\u002Fdiscover_metadata.py` does not instantiate a loader or download data.\n2. **Plan second.** Record the exact task\u002Fdataset, official task page, license,\n   expected size, cache directory, split, metric, and reproducibility seed.\n3. **Ask the user before downloading.** Loader constructors fetch missing data.\n   Some datasets and benchmark-group archives are large; model-backed oracles can\n   fetch checkpoints; remote\u002Fdocking oracles can transmit molecular structures.\n4. **Execute only after approval.** In bundled CLIs, `--execute` acknowledges\n   execution and `--download` is additionally required for MolGen corpora or\n   supported oracle checkpoints.\n5. **Keep outputs bounded.** Emit counts, schema, and small previews rather than\n   full datasets, sequences, prediction arrays, or molecule corpora.\n\n### Cache and cost behavior\n\n- Ordinary loaders default to `path=\".\u002Fdata\"` and save files beneath that path.\n  The bundled scripts instead default to explicit `.pytdc-*` directories.\n- Core downloads use Harvard Dataverse file endpoints when a local filename is\n  absent. Newer resource classes may use other upstream services.\n- `admet_group(path=...)` and other benchmark-group constructors download and\n  extract the group archive when `\u003Cpath>\u002F\u003Cgroup>` is absent.\n- Download-backed `Oracle(...)` construction uses `.\u002Foracle` internally. The\n  bundled oracle CLI changes into a safe runtime directory before approved calls.\n- PyTDC 1.1.15 does not provide a universal cache quota, eviction policy, or\n  dataset-wide checksum manifest. Use `scripts\u002Fcache_audit.py` and manage disk\n  retention explicitly.\n- Network transfer, local storage, decompression, parsing, feature generation,\n  docking, and external service calls can all incur time or monetary cost.\n\nThe PyTDC **code** is MIT. Dataset\u002Ftask licenses are heterogeneous: official task\npages include per-dataset terms ranging from Creative Commons licenses to\nnon-commercial restrictions or “Not Specified.” Verify the exact dataset's page and\noriginal source terms before download, redistribution, publication, or commercial\nuse. Cite both TDC and the original dataset.\n\n## Start with metadata-only discovery\n\nFrom this skill directory:\n\n```bash\nuv run --python 3.11 --with \"setuptools==80.9.0\" --with \"PyTDC==1.1.15\" \\\n  python scripts\u002Fdiscover_metadata.py --kind datasets --task ADME --limit 50\n\nuv run --python 3.11 --with \"setuptools==80.9.0\" --with \"PyTDC==1.1.15\" \\\n  python scripts\u002Fdiscover_metadata.py --kind benchmarks --limit 50\n\nuv run --python 3.11 --with \"setuptools==80.9.0\" --with \"PyTDC==1.1.15\" \\\n  python scripts\u002Fdiscover_metadata.py --kind evaluators --limit 100\n```\n\nThe package API is also metadata-only:\n\n```python\nfrom tdc.utils import retrieve_dataset_names, retrieve_benchmark_names\n\nadme_names = retrieve_dataset_names(\"ADME\")\nadmet_benchmarks = retrieve_benchmark_names(\"admet_group\")\n```\n\nUse exact returned names. PyTDC performs fuzzy matching internally, but explicit\nmatching avoids silently selecting the wrong dataset\u002Foracle.\n\n## Dataset workflow\n\nPlan a split without downloading:\n\n```bash\nuv run --python 3.11 --with \"setuptools==80.9.0\" --with \"PyTDC==1.1.15\" \\\n  python scripts\u002Fload_and_split_data.py \\\n  --task ADME --dataset Caco2_Wang --method scaffold \\\n  --seed 42 --data-dir .pytdc-data\n```\n\nAfter the user approves the dataset, license, transfer, and storage:\n\n```bash\nuv run --python 3.11 --with \"setuptools==80.9.0\" --with \"PyTDC==1.1.15\" \\\n  python scripts\u002Fload_and_split_data.py \\\n  --task ADME --dataset Caco2_Wang --method scaffold \\\n  --seed 42 --data-dir .pytdc-data --execute\n```\n\nVerified public import patterns include:\n\n```python\nfrom tdc.single_pred import ADME, Tox\nfrom tdc.multi_pred import DDI, DTI\nfrom tdc.generation import MolGen, Reaction, RetroSyn\n```\n\nConstructors perform data access, so do not run them before approval:\n\n```python\ndata = ADME(name=\"Caco2_Wang\", path=\".pytdc-data\")\nframe = data.get_data(format=\"df\")\nsplit = data.get_split(\n    method=\"scaffold\",\n    seed=42,\n    frac=[0.7, 0.1, 0.2],\n)\n# split keys are: train, valid, test\n```\n\nRead [references\u002Fdatasets.md](references\u002Fdatasets.md) before choosing a task or\ndataset.\n\n## Split selection without overclaiming leakage control\n\n- `random`: default for loaders; default seed 42 and fractions 0.7\u002F0.1\u002F0.2.\n- `scaffold`: documented generic support for molecule-based ADME, Tox, and HTS.\n  PyTDC groups RDKit Bemis–Murcko scaffold strings (chirality disabled), but that\n  does **not** prove absence of analog, duplicate, label, temporal, or provenance\n  leakage.\n- `cold_split`: multi-instance API. Pass exact dataframe columns, for example\n  `method=\"cold_split\", column_name=[\"Drug\", \"Target\"]`. Multi-column splitting can\n  discard cross-partition rows and need not preserve requested row fractions.\n- `combination`: built-in DrugSyn combination split.\n- `time`: pair-loader API requiring `time_column`; the verified built-in case is\n  `BindingDB_Patent` with its `Year` column. The API spelling is `time`, not\n  `temporal`.\n\nDo not use undocumented `cold_drug_target`, `temporal`, or `stratified=True`\nexamples. For every split, record PyTDC version, parameters, row counts, and exact\nentity overlap audits. PyTDC 1.1.15's random splitter uses the supplied seed for\ntest sampling but a fixed `random_state=1` for validation sampling; do not describe\nall partitions as independently varying with the seed.\n\nDetailed semantics and caveats are in\n[references\u002Futilities.md](references\u002Futilities.md).\n\n## Evaluators\n\nUse exact names from the installed evaluator registry:\n\n```python\nfrom tdc import Evaluator\n\nmae = Evaluator(name=\"MAE\")(y_true, y_pred)\nauroc = Evaluator(name=\"ROC-AUC\")(y_true_binary, predicted_scores)\npcc = Evaluator(name=\"PCC\")(y_true, y_pred)\n```\n\n`PCC` is the registered Pearson-correlation name; `Pearson` is not. Multi-class\nregistry names are `micro-f1`, `macro-f1`, and `kappa`. Thresholded binary metrics\ndefault to 0.5. Metric direction and input shape are metric-specific; use the\nofficial task\u002Fbenchmark metric rather than choosing from task type alone.\n\n## Benchmark groups\n\nUse specialized classes. Top-level `from tdc import BenchmarkGroup` is retained\nonly as a deprecated compatibility path in 1.1.15.\n\n```python\nfrom tdc.benchmark_group import admet_group\n\n# Run only after approval: construction may download the group archive.\ngroup = admet_group(path=\".pytdc-benchmarks\")\nbenchmark = group.get(\"Caco2_Wang\")\ntrain_val = benchmark[\"train_val\"]\ntest = benchmark[\"test\"]\ntrain, valid = group.get_train_valid_split(\n    seed=1,\n    benchmark=benchmark[\"name\"],\n    split_type=\"default\",\n)\n```\n\nFor one run, `group.evaluate({name: test_predictions})` returns metric results.\nFor leaderboard aggregation, pass a **list of at least five prediction\ndictionaries** to `group.evaluate_many(...)`. Do not index `group.get(...)` by\nseed, and do not derive dummy predictions from test labels.\n\nUse `scripts\u002Fbenchmark_evaluation.py` to validate a bounded JSON prediction plan\nbefore any group download. See [references\u002Futilities.md](references\u002Futilities.md)\nfor the exact JSON shape and API behavior.\n\n## Molecular generation and oracles\n\nPyTDC supplies molecule corpora, evaluators, and oracles; it does not train or\nprovide a generic molecule generator in the core workflow. Discover current names:\n\n```bash\nuv run --python 3.11 --with \"setuptools==80.9.0\" --with \"PyTDC==1.1.15\" \\\n  python scripts\u002Fdiscover_metadata.py --kind oracles --limit 100\n```\n\nPlan bounded local QED scoring:\n\n```bash\nuv run --python 3.11 --with \"setuptools==80.9.0\" --with \"PyTDC==1.1.15\" \\\n  python scripts\u002Fmolecular_generation.py score --oracle QED --smiles CCO\n```\n\nAdd `--execute` only after review. LogP and SA call the downloadable `fpscores`\nartifact in 1.1.15; they and DRD2\u002FGSK3B\u002FJNK3\u002FCYP3A4_Veith also require\n`--download`. The helper intentionally refuses remote services, docking,\ndistribution, and composite oracles. It preserves input order and never assumes\nscore direction.\n\nRead [references\u002Foracles.md](references\u002Foracles.md) before any oracle call.\n\n## Bundled resources\n\n### Scripts\n\n- `scripts\u002Fdiscover_metadata.py` — download-free package registry discovery\n- `scripts\u002Fload_and_split_data.py` — task-aware split plan\u002Fexplicit execution\n- `scripts\u002Fbenchmark_evaluation.py` — prediction validation and explicit evaluation\n- `scripts\u002Fmolecular_generation.py` — bounded local\u002Fcheckpoint scoring and MolGen plan\n- `scripts\u002Fcache_audit.py` — read-only bounded cache manifest\n\nEvery CLI uses lazy optional imports, safe relative output\u002Fcache paths, JSON\nsummaries, bounded output, and no implicit dataset\u002Fmodel download.\n\n### References\n\n- [references\u002Fdatasets.md](references\u002Fdatasets.md) — task discovery, data access,\n  cache behavior, and licensing\n- [references\u002Futilities.md](references\u002Futilities.md) — splits, evaluators, and\n  benchmark-group APIs\n- [references\u002Foracles.md](references\u002Foracles.md) — oracle categories, side effects,\n  and safe execution\n- [references\u002Fsources.md](references\u002Fsources.md) — dated authoritative sources and\n  unresolved upstream gaps\n\n## Agent operating procedure\n\n1. **Check the environment.** Confirm network access, API keys (if required) and the database's current API documentation and rate limits.\n2. **Pin down the inputs.** Confirm formats, identifiers and parameters from the data or the user. Ask rather than guess any value that changes the result.\n3. **Run a small version first.** Fetch a single known record and check the response format before bulk queries.\n4. **Execute the full task** using the instructions and references above.\n5. **Validate the result.** Identifiers resolve, record counts are reported, and the database version or access date is recorded.\n6. **Report.** State what was run (versions, commands, parameters), what was checked, and what is still uncertain.\n\n| If this happens | Do this |\n|---|---|\n| HTTP 429 or 5xx errors | Respect rate limits with backoff, batch requests, and report partial results honestly. |\n| A function, flag or endpoint in these instructions is missing in the installed version | Check the installed version's own documentation (`help()`, `--help`, official docs), adapt, and tell the user. Never invent an API. |\n| A required input, identifier or parameter is ambiguous | Ask the user, or state the assumption explicitly before running. |\n\n**Integrity rules**\n\n- Never fabricate results, parameters, identifiers, citations or statistics. If something cannot be run or verified, say so plainly.\n- Never invent accession numbers, IDs or records; report 'not found' instead.\n- Treat version-specific details here as possibly outdated: confirm them against the official documentation for the installed version.\n- Ask before actions that cost money, consume shared GPUs or cloud quota, touch personal or patient data, or cannot be undone.\n\n## Related skills\n\n- `deepchem`: Molecular ML with diverse featurizers and pre-built datasets.\n",{"name":5,"license":15,"metadata":24,"description":7,"allowed-tools":29,"compatibility":30},{"tags":25,"version":26,"category":27,"maintainer":28},"therapeutics, drug discovery datasets, benchmarks, machine learning, ADMET","1.2","scientific-databases","Kalaris Labs","Read Write Edit Bash","Requires uv, CPython 3.11, PyTDC 1.1.15, and setuptools 80.9.0 for its legacy pkg_resources runtime import. Dataset, benchmark, checkpoint, and remote-oracle operations require network\u002Fstorage review and explicit user approval.","main","29fe36d26127205057d5e0ed8425f6b0e9a8c13a","skills\u002Fpytdc",12,"https:\u002F\u002Fgithub.com\u002FKalarisLabs\u002Fresearch-agent-skills","https:\u002F\u002Fdocs.kalarislabs.com\u002Fresearch-agent-skills","https:\u002F\u002Fgithub.com\u002FKalarisLabs","kalarislabs.com","Applied AI lab building the infrastructure for the agentic era","2026-11-07 15:22:41",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add KalarisLabs\u002Fresearch-agent-skills --skill pytdc",{"tool":47,"command":48},"bunx","bunx skills add KalarisLabs\u002Fresearch-agent-skills --skill pytdc",{"tool":50,"command":51},"pnpm","pnpm dlx skills add KalarisLabs\u002Fresearch-agent-skills --skill pytdc","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fpytdc\u002FSKILL.md",true,[55,61,65,69,73,79,83,87,91,95],{"path":56,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":60},"references\u002Fdatasets.md","REFERENCE","参考文档",7991,"https:\u002F\u002Fgithub.com\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fpytdc\u002Freferences\u002Fdatasets.md",{"path":62,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":63,"sourceHtmlUrl":64},"references\u002Foracles.md",9564,"https:\u002F\u002Fgithub.com\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fpytdc\u002Freferences\u002Foracles.md",{"path":66,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":67,"sourceHtmlUrl":68},"references\u002Fsources.md",10184,"https:\u002F\u002Fgithub.com\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fpytdc\u002Freferences\u002Fsources.md",{"path":70,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":71,"sourceHtmlUrl":72},"references\u002Futilities.md",11877,"https:\u002F\u002Fgithub.com\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fpytdc\u002Freferences\u002Futilities.md",{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"scripts\u002F_common.py","SCRIPT","脚本",7383,"https:\u002F\u002Fgithub.com\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fpytdc\u002Fscripts\u002F_common.py",{"path":80,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":81,"sourceHtmlUrl":82},"scripts\u002Fbenchmark_evaluation.py",12800,"https:\u002F\u002Fgithub.com\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fpytdc\u002Fscripts\u002Fbenchmark_evaluation.py",{"path":84,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":85,"sourceHtmlUrl":86},"scripts\u002Fcache_audit.py",4671,"https:\u002F\u002Fgithub.com\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fpytdc\u002Fscripts\u002Fcache_audit.py",{"path":88,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":89,"sourceHtmlUrl":90},"scripts\u002Fdiscover_metadata.py",5157,"https:\u002F\u002Fgithub.com\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fpytdc\u002Fscripts\u002Fdiscover_metadata.py",{"path":92,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":93,"sourceHtmlUrl":94},"scripts\u002Fload_and_split_data.py",12878,"https:\u002F\u002Fgithub.com\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fpytdc\u002Fscripts\u002Fload_and_split_data.py",{"path":96,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":97,"sourceHtmlUrl":98},"scripts\u002Fmolecular_generation.py",13937,"https:\u002F\u002Fgithub.com\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fpytdc\u002Fscripts\u002Fmolecular_generation.py",[100,107,114,121,128,135],{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":19},"01M74ZSRSWD92NYM8TNJRH35DK","zarr-python","Guides use of Zarr-Python 3 for storing chunked, compressed N-dimensional arrays and groups, with local, in-memory, ZIP, and fsspec-backed S3\u002FGCS\u002FHTTP stores, plus NumPy, Dask, and Xarray integration. Covers array creation, resizing and appending, attributes, chunk and shard sizing, codecs, consolidated metadata, and v2-to-v3 migration. Use when creating or opening Zarr arrays or groups, choosing chunk sizes or compression for large datasets, reading or writing arrays on S3 or GCS, appending to time-series arrays, or migrating code from Zarr-Python 2 to 3. Use when setting up parallel I\u002FO with Dask or Xarray. For labeled multi-dimensional datasets, use Xarray instead.","https:\u002F\u002Fgithub.com\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzarr-python\u002FSKILL.md",[],[],{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"publishedAt":19},"01M74ZSK6JG5HKNC1AHF4D97G9","whisper","Transcribes and translates audio with OpenAI's Whisper (openai-whisper Python package and whisper CLI), covering model sizes from tiny to large plus turbo, language specification, initial prompts, word and segment timestamps, temperature fallback, batch processing, and subtitle generation. Use when transcribing speech, podcasts, meetings, or video audio to text. Use when translating non-English speech to English. Use when working with noisy or multilingual audio in any of 99 languages. Use when choosing a Whisper model size for available VRAM. Use when generating subtitles from audio. Not for speaker diarization or live captioning; use AssemblyAI or Deepgram instead.","https:\u002F\u002Fgithub.com\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fwhisper\u002FSKILL.md",[],[],{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":19},"01M74ZSBYQ2EGDFTTA4ZK6K5TR","weights-and-biases","Logs and tracks machine learning experiments with Weights & Biases (W&B, wandb): metrics, hyperparameters, checkpoints, sweeps, artifacts with lineage, model registry, custom charts and shareable reports. Includes integrations for PyTorch, HuggingFace Transformers, PyTorch Lightning and Keras\u002FTensorFlow. Use when logging training runs and comparing them across configurations, running automated hyperparameter sweeps, versioning datasets and models as artifacts, registering model versions, or sharing results with a team workspace. Use when setting up wandb.init for offline or unstable-connection training. Not for general data versioning outside ML runs.","https:\u002F\u002Fgithub.com\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fweights-and-biases\u002FSKILL.md",[],[],{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":127,"publishedAt":19},"01M74ZS5MZTK84WHEQXCVDZ6GB","waypoint-bio","Use when working with Outpost Bio's open microbiome foundation models - the Waypoint checkpoints (Waypoint-6m, Waypoint-45m, Waypoint-170m), the Atlas pretraining corpus, the Compass eight-task benchmark, or the `waypoint` CLI from the `waypoint-bio` package. Covers embedding microbiome samples, fine-tuning on taxonomic abundance data, benchmarking a checkpoint on Compass, pretraining a GPT-2 model on taxonomic abundance profiles, and converting MetaPhlAn, Kraken2, QIIME 2, or MGnify abundance tables into waypoint format.","https:\u002F\u002Fgithub.com\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fwaypoint-bio\u002FSKILL.md",[],[],{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":19},"01M74ZS0TCW96WJAKSG07C5Z7A","verl-rl-training","Provides guidance for training LLMs with reinforcement learning using verl (Volcano Engine RL). Use when implementing RLHF, GRPO, PPO, or other RL algorithms for LLM post-training at scale with flexible infrastructure backends.","https:\u002F\u002Fgithub.com\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fverl-rl-training\u002FSKILL.md",[],[],{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":19},"01M74ZRVG6SSWGT1N3Q55134KA","venue-templates","Prepare journal manuscripts, conference papers, research posters, and grant documents using venue-specific formatting guidance and bundled LaTeX scaffolds. Use when selecting an official template, checking current page or anonymity rules, adapting academic writing to a venue, or inspecting a submission PDF.","https:\u002F\u002Fgithub.com\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fvenue-templates\u002FSKILL.md",[],[]]