Skill Tracer
Skills › Scientific Agent Skills › pytdc › sources.md

sources.md

221 lines · skills/pytdc/references/sources.md at 5f2bc03

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# Sources and verification record
2
3Reviewed **2026-10-01** against current official documentation, PyPI metadata,
4and a freshly fetched, SHA-256-verified PyTDC 1.1.15 source distribution. Current
5upstream `main` was also inspected at commit
6`c310c35f27e3f506411018ac43d97b8ba23ca652`. Executed checks used the installed
7PyTDC runtime with small local synthetic files and blocked HTTP calls, except
8separate explicitly bounded public Dataverse probes. No full dataset, checkpoint,
9remote oracle, docking, or authenticated scientific workflow was run.

Sources and verification record

Reviewed 2026-10-01 against current official documentation, PyPI metadata, and a freshly fetched, SHA-256-verified PyTDC 1.1.15 source distribution. Current upstream main was also inspected at commit c310c35f27e3f506411018ac43d97b8ba23ca652. Executed checks used the installed PyTDC runtime with small local synthetic files and blocked HTTP calls, except separate explicitly bounded public Dataverse probes. No full dataset, checkpoint, remote oracle, docking, or authenticated scientific workflow was run.

Raw lines 1 to 10
11## Release and package metadata
131. [PyTDC on PyPI](https://pypi.org/project/pytdc/)
14 - Stable release: **1.1.15**
15 - Uploaded: **2025-03-31**
16 - Distribution: source tarball only, 154,168 bytes
17 - SHA-256:
18 `cd6164859af7b9b6f60e0c6d6e50679eacaffd09cfdea1acfc8bb7360e8e2205`
19 - License metadata: MIT
20 - No `Requires-Python` or Python classifiers
212. [PyPI JSON for 1.1.15](https://pypi.org/pypi/PyTDC/1.1.15/json)
22 - Used to verify exact `Requires-Dist`, artifact metadata, and absence of
23 `Requires-Python`.
243. [Official setup.py](https://github.com/mims-harvard/TDC/blob/main/setup.py)
25 - Package name `pytdc`; version loaded from `tdc/version.py`; dependencies loaded
26 from `requirements.txt`; no `python_requires`.
274. [Official requirements.txt](https://github.com/mims-harvard/TDC/blob/main/requirements.txt)
28 - 1.1.15 pins/constrains a large dependency graph, including
29 `cellxgene-census==1.15.0`, NumPy `<2`, RDKit `<2024.3.1`, Hugging Face
30 packages, and TileDB-SOMA.
315. [cellxgene-census 1.15.0 JSON](https://pypi.org/pypi/cellxgene-census/1.15.0/json)
32 - Declares `Requires-Python: >=3.8,<3.12`.
336. [RDKit 2023.9.6 JSON](https://pypi.org/pypi/rdkit/2023.9.6/json)
34 - Provides CPython 3.8–3.12 wheels for common platforms, including macOS ARM64,
35 but no CPython 3.13 wheel.
367. [Setuptools release history](https://setuptools.pypa.io/en/stable/history.html)
37 - `pkg_resources` was deprecated long before this snapshot and removed in
38 setuptools 82.0.0 (2026-02-08).
39 - PyTDC 1.1.15 still imports it at runtime. The isolated smoke test therefore
40 pins the verified compatibility release `setuptools==80.9.0`.
42The pinned smoke environment uses CPython 3.11. PyTDC itself does not publish a
43supported Python range, so this skill describes Python 3.11 plus setuptools 80.9.0
44as the verified target rather than claiming broader upstream support. On the current tested
45macOS ARM64 resolver, the test environment contained 128 packages (including pytest) and included large
46Torch, RDKit, TileDB, Arrow, and scientific-Python artifacts.

Release and package metadata

  1. PyTDC on PyPI
  2. Stable release: 1.1.15
  3. Uploaded: 2025-03-31
  4. Distribution: source tarball only, 154,168 bytes
  5. SHA-256: cd6164859af7b9b6f60e0c6d6e50679eacaffd09cfdea1acfc8bb7360e8e2205
  6. License metadata: MIT
  7. No Requires-Python or Python classifiers
  8. PyPI JSON for 1.1.15
  9. Used to verify exact Requires-Dist, artifact metadata, and absence of Requires-Python.
  10. Official setup.py
  11. Package name pytdc; version loaded from tdc/version.py; dependencies loaded from requirements.txt; no python_requires.
  12. Official requirements.txt
  13. 1.1.15 pins/constrains a large dependency graph, including cellxgene-census==1.15.0, NumPy <2, RDKit <2024.3.1, Hugging Face packages, and TileDB-SOMA.
  14. cellxgene-census 1.15.0 JSON
  15. Declares Requires-Python: >=3.8,<3.12.
  16. RDKit 2023.9.6 JSON
  17. Provides CPython 3.8–3.12 wheels for common platforms, including macOS ARM64, but no CPython 3.13 wheel.
  18. Setuptools release history
  19. pkg_resources was deprecated long before this snapshot and removed in setuptools 82.0.0 (2026-02-08).
  20. PyTDC 1.1.15 still imports it at runtime. The isolated smoke test therefore pins the verified compatibility release setuptools==80.9.0.

The pinned smoke environment uses CPython 3.11. PyTDC itself does not publish a supported Python range, so this skill describes Python 3.11 plus setuptools 80.9.0 as the verified target rather than claiming broader upstream support. On the current tested macOS ARM64 resolver, the test environment contained 128 packages (including pytest) and included large Torch, RDKit, TileDB, Arrow, and scientific-Python artifacts.

Raw lines 11 to 47
48## Official source used for API verification
501. [Package metadata registry](https://github.com/mims-harvard/TDC/blob/main/tdc/metadata.py)
51 - Task/dataset names, evaluator names, oracle categories, benchmark names,
52 benchmark metrics, and split metadata.
532. [Top-level public imports](https://github.com/mims-harvard/TDC/blob/main/tdc/__init__.py)
54 - `Evaluator`, `Oracle`, and deprecated generic `BenchmarkGroup`.
553. [Single-prediction imports](https://github.com/mims-harvard/TDC/blob/main/tdc/single_pred/__init__.py)
564. [Multi-prediction imports](https://github.com/mims-harvard/TDC/blob/main/tdc/multi_pred/__init__.py)
575. [Generation imports](https://github.com/mims-harvard/TDC/blob/main/tdc/generation/__init__.py)
586. [Base loader](https://github.com/mims-harvard/TDC/blob/main/tdc/base_dataset.py)
597. [Single-prediction loader](https://github.com/mims-harvard/TDC/blob/main/tdc/single_pred/single_pred_dataset.py)
608. [Pair-prediction loader](https://github.com/mims-harvard/TDC/blob/main/tdc/multi_pred/bi_pred_dataset.py)
619. [General multi-prediction loader](https://github.com/mims-harvard/TDC/blob/main/tdc/multi_pred/multi_pred_dataset.py)
6210. [Generation loader](https://github.com/mims-harvard/TDC/blob/main/tdc/generation/generation_dataset.py)
6311. [Split implementations](https://github.com/mims-harvard/TDC/blob/main/tdc/utils/split.py)
6412. [Evaluator implementation](https://github.com/mims-harvard/TDC/blob/main/tdc/evaluator.py)
6513. [Oracle implementation](https://github.com/mims-harvard/TDC/blob/main/tdc/oracles.py)
6614. [Download/load implementation](https://github.com/mims-harvard/TDC/blob/main/tdc/utils/load.py)
6715. [Metadata retrieval helpers](https://github.com/mims-harvard/TDC/blob/main/tdc/utils/retrieve.py)
6816. [Specialized BenchmarkGroup base](https://github.com/mims-harvard/TDC/blob/main/tdc/benchmark_group/base_group.py)
6917. [Deprecated generic BenchmarkGroup](https://github.com/mims-harvard/TDC/blob/main/tdc/benchmark_deprecated.py)
71The stable PyPI source distribution was inspected directly rather than assuming
72that `main` or old generated documentation exactly matched 1.1.15.

Official source used for API verification

  1. Package metadata registry
  2. Task/dataset names, evaluator names, oracle categories, benchmark names, benchmark metrics, and split metadata.
  3. Top-level public imports
  4. Evaluator, Oracle, and deprecated generic BenchmarkGroup.
  5. Single-prediction imports
  6. Multi-prediction imports
  7. Generation imports
  8. Base loader
  9. Single-prediction loader
  10. Pair-prediction loader
  11. General multi-prediction loader
  12. Generation loader
  13. Split implementations
  14. Evaluator implementation
  15. Oracle implementation
  16. Download/load implementation
  17. Metadata retrieval helpers
  18. Specialized BenchmarkGroup base
  19. Deprecated generic BenchmarkGroup

The stable PyPI source distribution was inspected directly rather than assuming that main or old generated documentation exactly matched 1.1.15.

Raw lines 48 to 73
74## Official user documentation
761. [TDC quick start](https://tdcommons.ai/start/)
77 - Problem/task/dataset hierarchy and constructor/get-data/get-split workflow.
782. [Dataset splits](https://tdcommons.ai/functions/data_split/)
79 - Random defaults, documented scaffold scope, `cold_split` plus `column_name`,
80 and combination split.
813. [Model evaluation](https://tdcommons.ai/functions/data_evaluation/)
82 - Exact evaluator examples, input types, thresholds, and metric definitions.
834. [Benchmark/leaderboard guide](https://tdcommons.ai/benchmark/overview/)
84 - `get`, `get_train_valid_split`, `evaluate`, `evaluate_many`, fixed test set,
85 and at least five independent runs.
865. [ADMET benchmark group](https://tdcommons.ai/benchmark/admet_group/overview)
87 - Dataset-specific benchmark metrics and scaffold protocol.
886. [Oracle documentation](https://tdcommons.ai/functions/oracles/)
89 - Local, checkpoint, synthesis-service, and docking examples/requirements.
907. [Molecule generation task](https://tdcommons.ai/generation_tasks/molgen)
91 - Stable MolGen names and random split examples.
928. [ADME task](https://tdcommons.ai/single_pred_tasks/adme)
93 - Dataset-specific descriptions, splits, citations, and heterogeneous license
94 labels.
959. [DTI task](https://tdcommons.ai/multi_pred_tasks/dti/)
96 - DTI datasets, cold-drug/protein intent, and per-dataset licenses.
9710. [Trial outcome task](https://tdcommons.ai/multi_pred_tasks/trialoutcome/)
98 - Evidence that some TDC datasets carry non-commercial terms.
9911. [TDC 0.4.1 ReadTheDocs](https://tdc.readthedocs.io/)
100 - Generated API signatures and source links used only as a cross-check. Its
101 displayed release is behind PyPI 1.1.15.
10212. [Harvard Dataverse TDC collection](https://doi.org/10.7910/DVN/21LKWG)
103 - Persistent collection identifier linked by the official README. The landing
104 page is not treated as a universal license for individual datasets.
10513. [Dataverse Data Access API](https://guides.dataverse.org/en/latest/api/dataaccess.html)
106 - GET file bytes by numeric ID, public/restricted access distinction, and
107 optional format behavior; PyTDC supplies no auth or pagination.
10814. [PrimeKG resource source](https://github.com/mims-harvard/TDC/blob/main/tdc/resource/primekg.py)
109 - Grouped graph mapping, `node_type` parameter, feature files and lossy
110 undirected display-name graph.
11115. [Chemical evaluator source](https://github.com/mims-harvard/TDC/blob/main/tdc/chem_utils/evaluator.py)
112 - Actual KL/FCD transformations and SciPy compatibility failure.

Official user documentation

  1. TDC quick start
  2. Problem/task/dataset hierarchy and constructor/get-data/get-split workflow.
  3. Dataset splits
  4. Random defaults, documented scaffold scope, cold_split plus column_name, and combination split.
  5. Model evaluation
  6. Exact evaluator examples, input types, thresholds, and metric definitions.
  7. Benchmark/leaderboard guide
  8. get, get_train_valid_split, evaluate, evaluate_many, fixed test set, and at least five independent runs.
  9. ADMET benchmark group
  10. Dataset-specific benchmark metrics and scaffold protocol.
  11. Oracle documentation
  12. Local, checkpoint, synthesis-service, and docking examples/requirements.
  13. Molecule generation task
  14. Stable MolGen names and random split examples.
  15. ADME task
  16. Dataset-specific descriptions, splits, citations, and heterogeneous license labels.
  17. DTI task
  18. DTI datasets, cold-drug/protein intent, and per-dataset licenses.
  19. Trial outcome task
  20. Evidence that some TDC datasets carry non-commercial terms.
  21. TDC 0.4.1 ReadTheDocs
  22. Generated API signatures and source links used only as a cross-check. Its displayed release is behind PyPI 1.1.15.
  23. Harvard Dataverse TDC collection
  24. Persistent collection identifier linked by the official README. The landing page is not treated as a universal license for individual datasets.
  25. Dataverse Data Access API
  26. GET file bytes by numeric ID, public/restricted access distinction, and optional format behavior; PyTDC supplies no auth or pagination.
  27. PrimeKG resource source
  28. Grouped graph mapping, node_type parameter, feature files and lossy undirected display-name graph.
  29. Chemical evaluator source
  30. Actual KL/FCD transformations and SciPy compatibility failure.
Raw lines 74 to 113
114## Primary TDC papers
1161. Huang, K., Fu, T., Gao, W. *et al.* (2021).
117 [Therapeutics Data Commons: Machine Learning Datasets and Tasks for Drug
118 Discovery and Development](https://datasets-benchmarks-proceedings.neurips.cc/paper_files/paper/2021/hash/4c56ff4ce4aaf9573aa5dff913df997a-Abstract-round1.html).
119 NeurIPS Datasets and Benchmarks 2021. Published 2021-12-06.
120 - Defines the original TDC task/dataset/benchmark/data-function scope.
1212. Huang, K., Fu, T., Gao, W. *et al.* (2022).
122 [Artificial intelligence foundation for therapeutic
123 science](https://doi.org/10.1038/s41589-022-01131-2).
124 *Nature Chemical Biology* 18, 1033–1036. Published 2022-09-21.
125 - Describes the Commons as infrastructure for AI-ready tasks, datasets, and
126 benchmarks across therapeutic science.
128Papers support the Commons design and citation guidance; current Python signatures
129come from package source and official API documentation.

Primary TDC papers

  1. Huang, K., Fu, T., Gao, W. et al. (2021). Therapeutics Data Commons: Machine Learning Datasets and Tasks for Drug Discovery and Development. NeurIPS Datasets and Benchmarks 2021. Published 2021-12-06.
  2. Defines the original TDC task/dataset/benchmark/data-function scope.
  3. Huang, K., Fu, T., Gao, W. et al. (2022). Artificial intelligence foundation for therapeutic science. Nature Chemical Biology 18, 1033–1036. Published 2022-09-21.
  4. Describes the Commons as infrastructure for AI-ready tasks, datasets, and benchmarks across therapeutic science.

Papers support the Commons design and citation guidance; current Python signatures come from package source and official API documentation.

Raw lines 114 to 130
131## Confirmed migrations and removed stale guidance
133- `from tdc import BenchmarkGroup` is implemented in
134 `benchmark_deprecated.py` and prints a deprecation message. Prefer
135 `from tdc.benchmark_group import admet_group` (or another specialized group).
136- `group.get(name)` returns `train_val`, `test`, and normalized `name`; it is not
137 indexed by seed.
138- Multi-run input is a list of prediction dictionaries passed to
139 `evaluate_many`, with at least five runs for non-docking groups.
140- Generic cold split is `method="cold_split", column_name=...`.
141 `cold_drug_target` is not implemented.
142- Pair temporal split is `method="time", time_column=...`; `temporal` is not
143 implemented.
144- `stratified=True` is not a loader split argument.
145- Registered Pearson correlation is `PCC`, not `Pearson`.
146- Public generation imports are `MolGen`, `Reaction`, `RetroSyn`, and `SBDD`;
147 `PairMolGen` is absent.

Confirmed migrations and removed stale guidance

  • from tdc import BenchmarkGroup is implemented in benchmark_deprecated.py and prints a deprecation message. Prefer from tdc.benchmark_group import admet_group (or another specialized group).
  • group.get(name) returns train_val, test, and normalized name; it is not indexed by seed.
  • Multi-run input is a list of prediction dictionaries passed to evaluate_many, with at least five runs for non-docking groups.
  • Generic cold split is method="cold_split", column_name=.... cold_drug_target is not implemented.
  • Pair temporal split is method="time", time_column=...; temporal is not implemented.
  • stratified=True is not a loader split argument.
  • Registered Pearson correlation is PCC, not Pearson.
  • Public generation imports are MolGen, Reaction, RetroSyn, and SBDD; PairMolGen is absent.
Raw lines 131 to 148
149## Unresolved upstream uncertainty
1511. **No changelog, tags, or GitHub Releases.** PyPI release history establishes
152 version/date, but upstream does not document a complete 0.4.x → 1.1.x migration.
1532. **Python support is undeclared.** `Requires-Python` is absent, while transitive
154 pins constrain viable interpreters/platforms. Re-run resolver/import smoke tests
155 before changing Python or platform.
1563. **Legacy runtime dependency.** PyTDC still imports deprecated `pkg_resources`;
157 environments with setuptools 82+ fail unless upstream migrates or setuptools is
158 pinned to a compatible release.
1594. **Unmarked backport dependency.** PyTDC requires the `dataclasses` backport on
160 modern Python without an environment marker even though Python 3.11 includes
161 `dataclasses` in the standard library. Strict resolvers may handle that stale
162 metadata differently.
1635. **ReadTheDocs lags PyPI.** It identifies as 0.4.1 while PyPI is 1.1.15.
1646. **Website/source drift exists.** Some website snippets use old names or output
165 comments; stable source controls exact executable behavior.
1667. **Ambiguous dataset license labels.** Some pages render “Not Specified” next to a
167 Creative Commons link. Resolve terms from the original provider rather than
168 inferring a license.
1698. **Evaluator metadata inconsistency.** `smina` appears in the evaluator registry,
170 but 1.1.15 does not bind it in `Evaluator.assign_evaluator`.
1719. **Oracle metadata understates side effects.** `logp` and `sa` are grouped with
172 trivial oracles, but their stable implementations call `calculateScore`, which
173 downloads the `fpscores` artifact when it is absent.
17410. **Separate fork/package.** `pytdc-nextml` is a distinct package/repository and
175 was not treated as an upgrade or replacement for official PyPI `PyTDC`.

Unresolved upstream uncertainty

  1. No changelog, tags, or GitHub Releases. PyPI release history establishes version/date, but upstream does not document a complete 0.4.x → 1.1.x migration.
  2. Python support is undeclared. Requires-Python is absent, while transitive pins constrain viable interpreters/platforms. Re-run resolver/import smoke tests before changing Python or platform.
  3. Legacy runtime dependency. PyTDC still imports deprecated pkg_resources; environments with setuptools 82+ fail unless upstream migrates or setuptools is pinned to a compatible release.
  4. Unmarked backport dependency. PyTDC requires the dataclasses backport on modern Python without an environment marker even though Python 3.11 includes dataclasses in the standard library. Strict resolvers may handle that stale metadata differently.
  5. ReadTheDocs lags PyPI. It identifies as 0.4.1 while PyPI is 1.1.15.
  6. Website/source drift exists. Some website snippets use old names or output comments; stable source controls exact executable behavior.
  7. Ambiguous dataset license labels. Some pages render “Not Specified” next to a Creative Commons link. Resolve terms from the original provider rather than inferring a license.
  8. Evaluator metadata inconsistency. smina appears in the evaluator registry, but 1.1.15 does not bind it in Evaluator.assign_evaluator.
  9. Oracle metadata understates side effects. logp and sa are grouped with trivial oracles, but their stable implementations call calculateScore, which downloads the fpscores artifact when it is absent.
  10. Separate fork/package. pytdc-nextml is a distinct package/repository and was not treated as an upgrade or replacement for official PyPI PyTDC.
Raw lines 149 to 176
177## Current executed evidence and corrections
179- CPython 3.11.11, PyTDC 1.1.15, setuptools 80.9.0, NumPy 1.26.4, pandas 2.3.3,
180 scikit-learn 1.9.1, RDKit 2023.9.6. Unpinned setuptools caused an actual
181 `ModuleNotFoundError: pkg_resources`; the pinned runtime imports successfully.
182- All bundled task imports, registry keys, constructor names and generic split
183 defaults were checked against the installed package. CLI help/discovery/plan
184 commands and local ADME, label selection, random/scaffold/cold splits, QED,
185 cached benchmark evaluation and local PrimeKG semantics were exercised.
186- Public `Evaluator` forwards threshold **0.5** to `pr@k` and `rp@k`, despite
187 upstream prose and the lower-level functions documenting 0.9. Regression arrays
188 produce different results at the two thresholds. `pr-auc` is average precision.
189- KL returns mean `exp(-KL)`, higher for closer distributions. Unpatched native
190 execution fails on modern SciPy's missing `histogram` export. A **test-only**
191 NumPy histogram alias tested identical and changed molecular distributions;
192 this is not evidence of an unpatched compatible workflow. The legacy histogram
193 also can produce NaN when all sampled values fall outside reference bins.
194- FCD TensorFlow transforms raw distance by `exp(-0.2 * FCD)`; PyTorch returns
195 raw distance. Both adapters were tested with controlled model outputs, with
196 no ChemNet weights or real embedding inference. This is adapter testing only.
197- Kabsch wrapper ignores `translate`; direct `kabsch_rmsd(..., translate=True)`
198 aligns a translated tiny coordinate fixture. Benchmark scores are rounded
199 before mean/population-SD aggregation. Zero-test-fraction random train/valid
200 splits stay identical across requested seeds.
201- The bundled molecular helper now marks invalid/zero-atom inputs with null scores
202 and preserves positions. Benchmark input rejects normalized-name collisions,
203 inconsistent run coverage/lengths, and mismatched fixed-test counts. The cache
204 audit no longer reports a truncated scan complete at a directory boundary.
205- Official release/tag APIs returned empty lists. ReadTheDocs still identifies
206 0.4.1. No separate fork was substituted for official PyTDC.
208Public Dataverse verification used read-only `GET /api/files/{file_id}/metadata`
209for Caco2 4259569, Davis 5219748, BindingDB Patent 4724851, MOSES 4170962,
210PrimeKG 6180626, ADMET group 4426004, drug-combination group 4426002 and DTI DG
211group 4742443. Curl returned HTTP 200, expected artifact labels, and
212`restricted: false` for each. Python urllib requests received HTTP 403 in this
213environment, so these are curl/public endpoint checks, not proof that the package
214downloader works end to end. HTTP range GETs of Caco2 and PrimeKG returned 512
215bytes each and the expected tabular headers; full downloads were not performed.
216The metadata response's `id` belongs to the file-metadata record; retain the
217requested datafile ID for download rather than replacing it with that value.
219`python tests/run_all.py --isolated pytdc` passed 30 tests; spec validation and
220nine metadata/plan CLI invocations passed. Real local runtime checks are separate
221from the two controlled FCD adapters and the explicit KL compatibility alias.

Current executed evidence and corrections

  • CPython 3.11.11, PyTDC 1.1.15, setuptools 80.9.0, NumPy 1.26.4, pandas 2.3.3, scikit-learn 1.9.1, RDKit 2023.9.6. Unpinned setuptools caused an actual ModuleNotFoundError: pkg_resources; the pinned runtime imports successfully.
  • All bundled task imports, registry keys, constructor names and generic split defaults were checked against the installed package. CLI help/discovery/plan commands and local ADME, label selection, random/scaffold/cold splits, QED, cached benchmark evaluation and local PrimeKG semantics were exercised.
  • Public Evaluator forwards threshold 0.5 to pr@k and rp@k, despite upstream prose and the lower-level functions documenting 0.9. Regression arrays produce different results at the two thresholds. pr-auc is average precision.
  • KL returns mean exp(-KL), higher for closer distributions. Unpatched native execution fails on modern SciPy's missing histogram export. A test-only NumPy histogram alias tested identical and changed molecular distributions; this is not evidence of an unpatched compatible workflow. The legacy histogram also can produce NaN when all sampled values fall outside reference bins.
  • FCD TensorFlow transforms raw distance by exp(-0.2 * FCD); PyTorch returns raw distance. Both adapters were tested with controlled model outputs, with no ChemNet weights or real embedding inference. This is adapter testing only.
  • Kabsch wrapper ignores translate; direct kabsch_rmsd(..., translate=True) aligns a translated tiny coordinate fixture. Benchmark scores are rounded before mean/population-SD aggregation. Zero-test-fraction random train/valid splits stay identical across requested seeds.
  • The bundled molecular helper now marks invalid/zero-atom inputs with null scores and preserves positions. Benchmark input rejects normalized-name collisions, inconsistent run coverage/lengths, and mismatched fixed-test counts. The cache audit no longer reports a truncated scan complete at a directory boundary.
  • Official release/tag APIs returned empty lists. ReadTheDocs still identifies 0.4.1. No separate fork was substituted for official PyTDC.

Public Dataverse verification used read-only GET /api/files/{file_id}/metadata for Caco2 4259569, Davis 5219748, BindingDB Patent 4724851, MOSES 4170962, PrimeKG 6180626, ADMET group 4426004, drug-combination group 4426002 and DTI DG group 4742443. Curl returned HTTP 200, expected artifact labels, and restricted: false for each. Python urllib requests received HTTP 403 in this environment, so these are curl/public endpoint checks, not proof that the package downloader works end to end. HTTP range GETs of Caco2 and PrimeKG returned 512 bytes each and the expected tabular headers; full downloads were not performed. The metadata response's id belongs to the file-metadata record; retain the requested datafile ID for download rather than replacing it with that value.

python tests/run_all.py --isolated pytdc passed 30 tests; spec validation and nine metadata/plan CLI invocations passed. Real local runtime checks are separate from the two controlled FCD adapters and the explicit KL compatibility alias.

Raw lines 177 to 221
Runs code python tests/run_all.py :219