moved_repo_first_update

This commit is contained in:
rpotter6298
2026-02-24 10:39:48 +01:00
commit 9894a23f09
98 changed files with 35387 additions and 0 deletions
+78
View File
@@ -0,0 +1,78 @@
"""Filter segmentation metrics rows with near-zero Dice scores."""
from __future__ import annotations
import argparse
from pathlib import Path
import pandas as pd
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(
description=(
"Drop samples where both disc and cup Dice are below a threshold "
"(default 0.01) and report how many were removed."
)
)
parser.add_argument("input", type=Path, help="Path to metrics CSV to filter")
parser.add_argument(
"--output",
type=Path,
help="Destination CSV. Defaults to <input stem>_filtered.csv in the same directory.",
)
parser.add_argument(
"--threshold",
type=float,
default=0.01,
help="Dice cutoff; rows with both dice_disc and dice_cup below this are removed.",
)
parser.add_argument(
"--keep-summary",
action="store_true",
help="Always keep summary rows (sample_id == '__mean__').",
)
return parser.parse_args()
def main() -> None:
args = parse_args()
df = pd.read_csv(args.input)
mask_low = (df["dice_disc"] < args.threshold) & (df["dice_cup"] < args.threshold)
if args.keep_summary and "sample_id" in df.columns:
mask_low &= df["sample_id"].ne("__mean__")
removed = int(mask_low.sum())
filtered = df.loc[~mask_low].copy()
# Recompute summary if original file contained one
if "sample_id" in filtered.columns:
summary_mask = filtered["sample_id"].eq("__mean__")
filtered = filtered.loc[~summary_mask].copy()
if not filtered.empty:
summary = filtered[["dice_disc", "dice_cup"]].mean()
summary_row = {
"sample_id": "__mean__",
"dataset": "summary",
"split": "summary",
"dice_disc": summary["dice_disc"],
"dice_cup": summary["dice_cup"],
}
filtered = pd.concat([filtered, pd.DataFrame([summary_row])], ignore_index=True)
remaining = len(filtered)
output_path = args.output
if output_path is None:
output_path = args.input.with_name(f"{args.input.stem}_filtered.csv")
filtered.to_csv(output_path, index=False)
print(f"Removed rows: {removed}")
print(f"Remaining rows: {remaining}")
print(f"Filtered metrics saved to: {output_path}")
if __name__ == "__main__":
main()