Download check_data.py from zhui711/omnigen_seg: direct link, hf CLI and curl.
- Browser
- Download file 2.24 kB
-
https://huggingface.co/zhui711/omnigen_seg/resolve/main/check_data.py
- Command line
-
hf download hf://zhui711/omnigen_seg/check_data.py
-
curl -L -o check_data.py https://huggingface.co/zhui711/omnigen_seg/resolve/main/check_data.py
2.24 kB
| import os | |
| from concurrent.futures import ThreadPoolExecutor | |
| from tqdm import tqdm | |
| DATA_DIR = "/home/wenting/zr/Segmentation/data/lidc_TotalSeg" | |
| EXPECTED_COUNT = 3000 | |
| def check_patient(patient_folder): | |
| patient_dir = os.path.join(DATA_DIR, patient_folder) | |
| if not os.path.isdir(patient_dir): | |
| return None | |
| img_dir = os.path.join(patient_dir, "04_drr_256", "cxr") | |
| mask_dir = os.path.join(patient_dir, "04_drr_256", "mask_compact") | |
| meta_path = os.path.join(patient_dir, "02_totalseg", "phase2_metadata.json") | |
| status = {"patient": patient_folder, "imgs": 0, "masks": 0, "has_meta": False, "issue": ""} | |
| # 1. 检查 Metadata | |
| if os.path.exists(meta_path): | |
| status["has_meta"] = True | |
| else: | |
| status["issue"] += "Missing metadata JSON. " | |
| # 2. 检查图片数量 | |
| if os.path.exists(img_dir): | |
| # 快速统计文件数 | |
| status["imgs"] = len([f for f in os.scandir(img_dir) if f.name.endswith('.png')]) | |
| else: | |
| status["issue"] += "Missing cxr dir. " | |
| # 3. 检查Mask数量 | |
| if os.path.exists(mask_dir): | |
| status["masks"] = len([f for f in os.scandir(mask_dir) if f.name.endswith('.npz')]) | |
| else: | |
| status["issue"] += "Missing mask dir. " | |
| if status["imgs"] != EXPECTED_COUNT or status["masks"] != EXPECTED_COUNT or not status["has_meta"]: | |
| return status | |
| return None | |
| def main(): | |
| patients = sorted([d for d in os.listdir(DATA_DIR) if d.startswith("LIDC-IDRI-")]) | |
| print(f"[*] Scanning {len(patients)} patients in {DATA_DIR}...") | |
| anomalies =[] | |
| # 使用多线程加速扫描 | |
| with ThreadPoolExecutor(max_workers=16) as executor: | |
| results = list(tqdm(executor.map(check_patient, patients), total=len(patients))) | |
| for res in results: | |
| if res is not None: | |
| anomalies.append(res) | |
| print("\n" + "="*50) | |
| print(f"[*] Found {len(anomalies)} patients with incomplete data:") | |
| print("="*50) | |
| for a in anomalies: | |
| issue_str = a["issue"] if a["issue"] else f"Incomplete pairs (Imgs: {a['imgs']}, Masks: {a['masks']})" | |
| print(f"- {a['patient']}: {issue_str}") | |
| if __name__ == "__main__": | |
| main() |