Download parse_results.py from kabiriitb/rockglacierNET: direct link, hf CLI and curl.
- Browser
- Download file 3.28 kB
-
https://huggingface.co/kabiriitb/rockglacierNET/resolve/main/parse_results.py
- Command line
-
hf download hf://kabiriitb/rockglacierNET/parse_results.py
-
curl -L -o parse_results.py https://huggingface.co/kabiriitb/rockglacierNET/resolve/main/parse_results.py
3.28 kB
| import os | |
| import pandas as pd | |
| import json | |
| experiments = { | |
| "all": ["(all 35 bands)"], | |
| "17": ["TPI", "ROUGHNESS", "LST_winter", "NDWI", "LST_summer", "REL_RELIEF", "ASPECT", "LST_anomaly", "ELEV_COP", "B2", "HILLSHADE", "B8A", "NDMI", "B12", "B3", "B4", "B8"], | |
| "14": ["TPI", "ROUGHNESS", "LST_winter", "NDWI", "LST_summer", "REL_RELIEF", "ASPECT", "LST_anomaly", "ELEV_COP", "B2", "HILLSHADE", "B8A", "NDMI", "B12"], | |
| "opt_idx": ["B2", "B3", "B4", "B8", "B8A", "B11", "B12", "NDVI", "NDWI", "NDMI", "NDSI", "BSI", "ALBEDO", "ELEV_COP"], | |
| "terr_therm": ["TPI", "ROUGHNESS", "SLOPE", "ASPECT", "REL_RELIEF", "HILLSHADE", "CURVATURE", "ELEV_COP", "LST_winter", "LST_summer", "LST_annual", "LST_anomaly"], | |
| "mixed_16": ["TPI", "ROUGHNESS", "REL_RELIEF", "ELEV_COP", "SLOPE", "LST_winter", "LST_summer", "NDWI", "NDVI", "B2", "B3", "B4", "B8", "B12", "NDMI", "BSI"], | |
| "top_20": ["TPI", "ROUGHNESS", "LST_winter", "NDWI", "LST_summer", "REL_RELIEF", "ASPECT", "LST_anomaly", "ELEV_COP", "B2", "HILLSHADE", "B8A", "NDMI", "B12", "B3", "B4", "B8", "NDVI", "SLOPE", "CURVATURE"] | |
| } | |
| results = [] | |
| for exp, bands in experiments.items(): | |
| if exp == "all": | |
| ckpt_dir = "all_data/checkpoint" | |
| res_dir = "all_data/result" | |
| n_bands = 35 | |
| else: | |
| ckpt_dir = f"all_data/checkpoint_{exp}band" | |
| res_dir = f"all_data/result_{exp}band" | |
| n_bands = len(bands) | |
| # Parse val metrics | |
| try: | |
| df = pd.read_csv(f"{ckpt_dir}/training_history.csv") | |
| best_row = df.loc[df['val_dice_coef'].idxmax()] | |
| val_dice = best_row['val_dice_coef'] | |
| val_iou = best_row['val_iou_m'] | |
| except Exception as e: | |
| val_dice = 0 | |
| val_iou = 0 | |
| # Parse test metrics | |
| test_dice, test_iou, precision, recall = 0, 0, 0, 0 | |
| try: | |
| with open(f"{res_dir}/evaluation_summary.txt", "r") as f: | |
| for line in f: | |
| if "dice :" in line or "dice :" in line: | |
| test_dice = float(line.split(":")[1].strip()) | |
| elif "iou :" in line or "iou :" in line: | |
| test_iou = float(line.split(":")[1].strip()) | |
| elif "precision :" in line: | |
| precision = float(line.split(":")[1].strip()) | |
| elif "recall :" in line or "recall :" in line: | |
| recall = float(line.split(":")[1].strip()) | |
| except Exception as e: | |
| pass | |
| results.append({ | |
| "run_name": exp, | |
| "n_bands": n_bands, | |
| "bands": ",".join(bands), | |
| "val_dice": val_dice, | |
| "val_iou": val_iou, | |
| "test_dice": test_dice, | |
| "test_iou": test_iou, | |
| "precision": precision, | |
| "recall": recall | |
| }) | |
| # Sort by test_dice descending | |
| results.sort(key=lambda x: x['test_dice'], reverse=True) | |
| # Print as markdown table | |
| print("| run_name | n_bands | val_dice | val_iou | test_dice | test_iou | precision | recall | bands |") | |
| print("|----------|---------|----------|---------|-----------|----------|-----------|--------|-------|") | |
| for r in results: | |
| print(f"| {r['run_name']} | {r['n_bands']} | {r['val_dice']:.4f} | {r['val_iou']:.4f} | {r['test_dice']:.4f} | {r['test_iou']:.4f} | {r['precision']:.4f} | {r['recall']:.4f} | {r['bands']} |") | |