diff --git a/src/niftyone/__main__.py b/src/niftyone/__main__.py index 1cfabe8..067b69d 100644 --- a/src/niftyone/__main__.py +++ b/src/niftyone/__main__.py @@ -19,10 +19,9 @@ def main() -> None: out_dir = Path(args.out_dir) out_dir.mkdir(exist_ok=True, parents=True) - bids.make_dataset_description(out_dir=out_dir) - match args.analysis_level: case "participant": + bids.make_dataset_description(out_dir=out_dir, overwrite=args.overwrite) analysis_levels.participant( bids_dir=args.bids_dir, out_dir=out_dir, diff --git a/src/niftyone/metadata/bids.py b/src/niftyone/metadata/bids.py index 0bb39ea..9bd5767 100644 --- a/src/niftyone/metadata/bids.py +++ b/src/niftyone/metadata/bids.py @@ -6,7 +6,7 @@ import niftyone -def make_dataset_description(out_dir: Path) -> None: +def make_dataset_description(out_dir: Path, overwrite: bool) -> None: """Create dataset_description.json for BIDS dataset.""" description = { "Name": "NiftyOne", @@ -23,5 +23,7 @@ def make_dataset_description(out_dir: Path) -> None: "License": "LGPL-2.1", } - with (out_dir / "dataset_description.json").open("w") as f: - json.dump(description, f, indent=4) + ds_fpath = out_dir.joinpath("dataset_description.json") + if not ds_fpath.exists() or overwrite: + with ds_fpath.open("w") as f: + json.dump(description, f, indent=4) diff --git a/tests/unit/niftyone/metadata/test_bids.py b/tests/unit/niftyone/metadata/test_bids.py index 9104ac7..4905ed0 100644 --- a/tests/unit/niftyone/metadata/test_bids.py +++ b/tests/unit/niftyone/metadata/test_bids.py @@ -1,13 +1,16 @@ import json from pathlib import Path +import pytest + import niftyone from niftyone.metadata import bids -def test_make_dataset_description(tmp_path: Path) -> None: +@pytest.mark.parametrize("overwrite", [(True), (False)]) +def test_make_dataset_description(tmp_path: Path, overwrite: bool) -> None: out_dir = tmp_path - bids.make_dataset_description(out_dir=out_dir) + bids.make_dataset_description(out_dir=out_dir, overwrite=overwrite) # Check file created json_fpath = out_dir / "dataset_description.json"