Python API Guide
Use the Python API when you need structured metadata in notebooks, training scripts, validation manifests, or internal dataset audits.
Query The Catalog
import eyedatahub as edh
print(len(edh.REGISTRY.list_datasets()))
ds = edh.REGISTRY.get_dataset("airogs")
print(ds.info.full_name)
print(ds.info.license_family)
Filter Datasets
import eyedatahub as edh
oct_datasets = [
ds for ds in edh.REGISTRY.list_datasets()
if ds.info.modality == "oct"
]
standard_labels_without_explicit_nc = {
"cc0", "cc-by", "cc-by-sa", "mit", "apache", "odc-by"
}
source_term_candidates = [
ds for ds in edh.REGISTRY.list_datasets()
if ds.info.license_family in standard_labels_without_explicit_nc
]
This descriptive grouping is not a permission finding. Check the exact current source terms, evidence URL, and scope before deciding whether a proposed use is allowed.
Preflight And Explicit Acquisition
from pathlib import Path
import eyedatahub as edh
from eyedatahub.acquisition import acquire_dataset, preflight_dataset
data_dir = Path("~/.eyedatahub/data").expanduser()
ds = edh.REGISTRY.get_dataset("ophthalwechat")
plan = preflight_dataset(ds, data_dir) # read-only
print(plan["source_terms"])
print(plan["terms_evidence_url"])
print(plan["access_requirements"])
if plan["automation_allowed"]:
result = acquire_dataset(ds, data_dir) # explicit transfer request
print(result.status, result.manifest_path)
else:
print(plan["status"], plan["blocked_reason"])
Manual, controlled, author-contact, unavailable, and unsupported routes return a structured blocked status rather than bypassing source controls. EyeDataHub does not accept click-through terms or agreements for the user.
Build A Manifest
import json
import eyedatahub as edh
manifest = []
for ds in edh.REGISTRY.list_datasets():
i = ds.info
manifest.append({
"name": i.name,
"full_name": i.full_name,
"modality": i.modality,
"tasks": i.tasks,
"license_family": i.license_family,
"download_type": i.download_type,
"url": i.download_url,
})
with open("eyedatahub_manifest.json", "w", encoding="utf-8") as f:
json.dump(manifest, f, indent=2)
Practical Caveats
- Source-term values are catalog classifications, not legal advice.
- Sample counts are source-reported units and may refer to images, videos, reports, records, or visual-field tests depending on the source.
- Patient-level counts, duplicate-image detection, and label harmonization are not inferred unless source documentation provides them.