[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MAWMJ24MH4GE5ESZEDSCF0":3,"skill-same:01M6MAWMJ24MH4GE5ESZEDSCF0":118},{"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":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":55,"ownerHtmlUrl":56,"ownerBlogUrl":57,"ownerDescription":58,"updatedAt":59,"install":60,"resources":73},"01M6MAWMJ24MH4GE5ESZEDSCF0","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.","hashgraph-online\u002Fawesome-codex-plugins","hashgraph-online","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F160371962?v=4","01M6CNB6NRJVNNGN14TR01Q6D3","HOL (Hashgraph Online)","01M6JT1HSKKG9V68KQAQGBA7XP",1559,"MIT","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fskills\u002Fpytdc\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"scoring","for","remote","scientific","cold","resources","import","free","as","time","training","uv","edit","write","read","plan","discovery","Evaluation","run","2026-11-10 10:12:30",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":43,"description":7,"allowed-tools":48,"compatibility":49},{"tags":44,"version":45,"category":46,"maintainer":47},"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","2b63f856ce19c2a797929cacabd9e0fc936812fa","plugins\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fskills\u002Fpytdc",474,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins","https:\u002F\u002Fhol.org\u002Fplugins\u002Fbest-codex-plugins","https:\u002F\u002Fgithub.com\u002Fhashgraph-online","https:\u002F\u002Fhol.org","Open-source standards and developer tools for interoperable AI agents: discovery, identity, communication, payments, privacy and security.","2026-11-11 14:40:14",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add hashgraph-online\u002Fawesome-codex-plugins --skill pytdc",{"tool":66,"command":67},"bunx","bunx skills add hashgraph-online\u002Fawesome-codex-plugins --skill pytdc",{"tool":69,"command":70},"pnpm","pnpm dlx skills add hashgraph-online\u002Fawesome-codex-plugins --skill pytdc","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fskills\u002Fpytdc\u002FSKILL.md",true,[74,80,84,88,92,98,102,106,110,114],{"path":75,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":78,"sourceHtmlUrl":79},"references\u002Fdatasets.md","REFERENCE","参考文档",7991,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fskills\u002Fpytdc\u002Freferences\u002Fdatasets.md",{"path":81,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":82,"sourceHtmlUrl":83},"references\u002Foracles.md",9564,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fskills\u002Fpytdc\u002Freferences\u002Foracles.md",{"path":85,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":86,"sourceHtmlUrl":87},"references\u002Fsources.md",10184,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fskills\u002Fpytdc\u002Freferences\u002Fsources.md",{"path":89,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":90,"sourceHtmlUrl":91},"references\u002Futilities.md",11877,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fskills\u002Fpytdc\u002Freferences\u002Futilities.md",{"path":93,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":96,"sourceHtmlUrl":97},"scripts\u002F_common.py","SCRIPT","脚本",7346,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fskills\u002Fpytdc\u002Fscripts\u002F_common.py",{"path":99,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":100,"sourceHtmlUrl":101},"scripts\u002Fbenchmark_evaluation.py",12498,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fskills\u002Fpytdc\u002Fscripts\u002Fbenchmark_evaluation.py",{"path":103,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":104,"sourceHtmlUrl":105},"scripts\u002Fcache_audit.py",4574,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fskills\u002Fpytdc\u002Fscripts\u002Fcache_audit.py",{"path":107,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":108,"sourceHtmlUrl":109},"scripts\u002Fdiscover_metadata.py",5066,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fskills\u002Fpytdc\u002Fscripts\u002Fdiscover_metadata.py",{"path":111,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":112,"sourceHtmlUrl":113},"scripts\u002Fload_and_split_data.py",12594,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fskills\u002Fpytdc\u002Fscripts\u002Fload_and_split_data.py",{"path":115,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":116,"sourceHtmlUrl":117},"scripts\u002Fmolecular_generation.py",13619,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FKalarisLabs\u002Fresearch-agent-skills\u002Fskills\u002Fpytdc\u002Fscripts\u002Fmolecular_generation.py",[119,128,135,142,169,194],{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":123,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":126,"publishedAt":127},"01M746ZWACVKMZ1BJXJZHYJSSX","migrate-to-e2e","Moves an existing Playwright, Cypress, Selenium, Appium, Detox, Maestro, or TesterArmy suite to e2e one slice at a time, with the old suite running beside the new one until each ported test is proven. Keeps a MIGRATION.md progress file so any later session resumes where the last stopped. Optionally plants a defect to show both suites catch it. Use for \u002Fmigrate-to-e2e, \"migrate our tests to e2e\", \"port these Maestro flows\", \"move our TesterArmy tests\", or when a project has an e2e config and an older suite still running.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fmigrate-to-e2e\u002FSKILL.md",[],[],"2026-11-11 15:11:14",{"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":123,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":127},"01M746ZPTAX1Q0FBKAB1CYND7E","e2e","Writes, runs, and debugs end-to-end tests for web and mobile apps with e2e, the agentic test runner, which mixes agent.act goals with exact locator assertions on a Playwright browser or an iOS or Android device. Also drives a project's running app live over the e2e MCP server to look at a screen, check a UI change, take a screenshot or record a video, and try a locator; and runs bug bashes, parallel e2e explore runs with each bug proven by a repro test. Use when a project depends on e2e or has an e2e.config.ts, when asked for end-to-end, browser, mobile, or agentic UI tests, to check a change in the running app, to QA or bug bash an app or branch, or when an e2e run fails.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fe2e\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":123,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":127},"01M746ZJN784HVHMDP9MQGCSGG","create-verification-skill","Generate a project-local verify-\u003Capp> skill on top of e2e, so any coding agent can launch the app, check it is worth driving, exercise a feature the way a user does, keep evidence, and bug bash it. Writes the skill, a feature map with one explore charter per feature, and proves it once. Use for \u002Fcreate-verification-skill, \"make a verification skill for this repo\", or when a project has no scripted way to prove UI behavior.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fcreate-verification-skill\u002FSKILL.md",[],[],{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":123,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":148,"publishedAt":38},"01M716A6ETNB9B1SQ3GXZC75VR","deja-search","deja-vu memory — search the user's past AI coding sessions with the deja CLI. Holds what they already settled and never wrote into the repo (naming rules, banned or already-tried tools, required checks before merge, preferred values, who owns what). Use before your first edit in a task, before you call a change done or ready to merge, before you recommend a tool, library, design or reviewer, before re-debugging an error that may already be solved, when they say 'didn't we fix this before', 'what did we decide about X' or 'I already have that', and before telling them something on this machine does not exist.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fvshulcz\u002Fdeja-vu\u002Fskills\u002Fdeja-search\u002FSKILL.md",[],[149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168],"search","deja search","never","error","ready","memory","re","decide","fix","design","debugging","when","you","done","reviewer","io","change","cli","merge","past",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":123,"licenseFileUrl":6,"sourceHtmlUrl":173,"categories":174,"keywords":175,"publishedAt":38},"01M716A3J2W5SENSE9VGMXB375","deja-reflect","End-of-session reflection and memory curation with deja-vu. Review what was decided, what commands broke and what repaired them, and record durable project rules or decisions with deja remember so the next session starts with them.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fvshulcz\u002Fdeja-vu\u002Fskills\u002Fdeja-reflect\u002FSKILL.md",[],[176,177,178,164,179,180,181,182,183,184,185,186,187,188,154,189,190,191,192,193],"deja reflect","reflect","review","with","record","github","next","https","node","Rules","decisions","brew","remember","project rules","project","session","end","reflection",{"skillNo":195,"name":196,"nameZh":6,"description":197,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":123,"licenseFileUrl":6,"sourceHtmlUrl":198,"categories":199,"keywords":211,"publishedAt":38},"01M715T3RR4BAYSR57HPPTJ0PF","revid","Make, edit, export and post AI videos with Revid (revid.ai) through the Revid MCP server. Use whenever the user wants a short-form or long-form video made (from an idea, a script, a URL, an article, a PDF, a tweet, a product page, their own clips, or a song), wants to find what is going viral on TikTok, YouTube, Instagram or X before making something, wants to edit or re-export an existing Revid project, generate a standalone AI image or clip, make a series episode, or publish and schedule a finished video to connected social accounts. Covers setup (hosted MCP with OAuth, or an API key), the 36 tools, credits, polling and the rules for publishing. Routes to the more specific revid-* skills when one fits.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftmakersas\u002Frevid-skills\u002Fskills\u002Frevid\u002FSKILL.md",[200,205,208],{"categoryNo":201,"categoryName":202,"taxonomyType":203,"taxonomyTypeDesc":204},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",{"categoryNo":206,"categoryName":207,"taxonomyType":203,"taxonomyTypeDesc":204},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":209,"categoryName":210,"taxonomyType":203,"taxonomyTypeDesc":204},"01JBSEEDCAT000000000000010","后端与接口",[196,212,213,214,215,216,217,190,218,155,219,220,221,222,160,223,224,225,226,227],"URL","Video","short-form","standalone","PDF","viral","tiktok","short","social","MCP","song","image","mcp server","schedule","api","publish"]