Preserve validation manifests in failure sampling

This commit is contained in:
Jens
2026-07-27 12:45:08 +02:00
parent 71c13c95c7
commit 9e2dde2b19
2 changed files with 22 additions and 2 deletions
@@ -11,6 +11,17 @@ MODULE = importlib.util.module_from_spec(SPEC)
SPEC.loader.exec_module(MODULE)
def test_dataset_validation_source_preserves_manifest_path(tmp_path: Path):
source = tmp_path / "dataset.yaml"
source.write_text(
"path: /data/source\ntrain: /data/source/train.txt\n"
"val: /data/source/internal-val.txt\nnames:\n 0: building\n",
encoding="utf-8",
)
assert MODULE.dataset_validation_source(source) == "/data/source/internal-val.txt"
def test_sampling_repeats_only_failed_region_train_tiles() -> None:
manifest = {
"samples": [
+11 -2
View File
@@ -19,6 +19,15 @@ def file_sha256(path: Path) -> str:
return digest.hexdigest()
def dataset_validation_source(source_yaml: Path) -> str:
"""Preserve the source dataset's validation contract verbatim."""
for raw_line in source_yaml.read_text(encoding="utf-8").splitlines():
key, separator, value = raw_line.partition(":")
if separator and key.strip() == "val" and value.strip():
return value.strip()
raise ValueError(f"Source dataset YAML has no validation source: {source_yaml}")
def build_sampling(
*,
summary: dict[str, Any],
@@ -126,12 +135,12 @@ def main() -> int:
train_list = args.output_dir / "train-failure-driven.txt"
train_list.write_text("\n".join(paths) + "\n", encoding="utf-8")
source_yaml = args.summary.parent / "dataset.yaml"
val_dir = args.summary.parent / "images" / "val"
val_source = dataset_validation_source(source_yaml)
dataset_yaml = args.output_dir / "dataset.yaml"
dataset_yaml.write_text(
f"path: {args.output_dir}\n"
f"train: {train_list}\n"
f"val: {val_dir}\n"
f"val: {val_source}\n"
"names:\n 0: building\n",
encoding="utf-8",
)