exp show: Add --only-changed option.

Use TabularData `drop_duplicates` to only show metrics/params with values varying across the selected experiments.

Fixes #5966
This commit is contained in:
David de la Iglesia Castro
2021-11-10 16:52:18 +02:00
committed by Ruslan Kuprieiev
parent cb6f625dd9
commit 72066f233b
2 changed files with 57 additions and 0 deletions
+13
View File
@@ -471,6 +471,9 @@ def show_experiments(
}
)
if kwargs.get("only_changed", False):
td.drop_duplicates("cols")
td.render(
pager=pager,
borders=True,
@@ -537,6 +540,7 @@ class CmdExperimentsShow(CmdBase):
pager=not self.args.no_pager,
csv=self.args.csv,
markdown=self.args.markdown,
only_changed=self.args.only_changed,
)
return 0
@@ -1033,6 +1037,15 @@ def add_parser(subparsers, parent_parser):
),
metavar="<n>",
)
experiments_show_parser.add_argument(
"--only-changed",
action="store_true",
default=False,
help=(
"Only show metrics/params with values varying "
"across the selected experiments."
),
)
experiments_show_parser.set_defaults(func=CmdExperimentsShow)
EXPERIMENTS_APPLY_HELP = (
+44
View File
@@ -538,3 +538,47 @@ def test_show_csv(tmp_dir, scm, dvc, exp_stage, capsys):
)
in cap.out
)
def test_show_only_changed(tmp_dir, dvc, scm, capsys):
tmp_dir.gen("copy.py", COPY_SCRIPT)
params_file = tmp_dir / "params.yaml"
params_data = {
"foo": 1,
"bar": 1,
}
(tmp_dir / params_file).dump(params_data)
dvc.run(
cmd="python copy.py params.yaml metrics.yaml",
metrics_no_cache=["metrics.yaml"],
params=["foo", "bar"],
name="copy-file",
deps=["copy.py"],
)
scm.add(
[
"dvc.yaml",
"dvc.lock",
"copy.py",
"params.yaml",
"metrics.yaml",
".gitignore",
]
)
scm.commit("init")
dvc.experiments.run(params=["foo=2"])
capsys.readouterr()
assert main(["exp", "show"]) == 0
cap = capsys.readouterr()
print(cap)
assert "bar" in cap.out
capsys.readouterr()
assert main(["exp", "show", "--only-changed"]) == 0
cap = capsys.readouterr()
assert "bar" not in cap.out