File size: 1,792 Bytes
bd9425a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/env python3
"""Acquire pointers/manifests, not patient data by default."""
from __future__ import annotations
import argparse, json, subprocess
from pathlib import Path
import requests

CATALOG = {
    "msd": "s3://msd-for-monai/",
    "idc": "https://datacommons.cancer.gov/repository/imaging-data-commons",
    "lung_pet_ct_dx_manifest": "https://www.cancerimagingarchive.net/wp-content/uploads/Lung-PET-CT-Dx-NBIA-Manifest-122220.tcia",
    "hcc_tace_manifest": "https://www.cancerimagingarchive.net/wp-content/uploads/HCC-TACE-Seg_v1_202201.tcia",
    "nsclc_radiomics_manifest": "https://www.cancerimagingarchive.net/wp-content/uploads/NSCLC-Radiomics-Version-4-Oct-2020-NBIA-manifest.tcia",
}

def main():
    p = argparse.ArgumentParser()
    p.add_argument("--dataset", choices=CATALOG, required=True)
    p.add_argument("--out", default="data_sources")
    p.add_argument("--download-manifest", action="store_true")
    a = p.parse_args(); out = Path(a.out); out.mkdir(parents=True, exist_ok=True)
    if a.dataset == "msd":
        subprocess.run(["aws", "s3", "ls", "s3://msd-for-monai/", "--no-sign-request"], check=True)
        print("Use aws s3 cp --no-sign-request for a selected MSD task; do not mirror all tasks unnecessarily.")
    elif a.dataset == "idc":
        (out / "idc_source.json").write_text(json.dumps({"source": CATALOG[a.dataset], "next": "Use idc-index or IDC BigQuery to generate a cohort manifest with license fields."}, indent=2))
    else:
        target = out / (a.dataset + ".tcia")
        if a.download_manifest:
            r = requests.get(CATALOG[a.dataset], timeout=60); r.raise_for_status(); target.write_bytes(r.content)
            print(target)
        else:
            print(CATALOG[a.dataset])

if __name__ == "__main__": main()