dev_df = manifest[manifest[cfg.test_column] != cfg.test_group] test_df = manifest[manifest[cfg.test_column] == cfg.test_group] train_df = dev_df[dev_df[cfg.fold_column] != cfg.val_fold] val_df = dev_df[dev_df[cfg.fold_column] == cfg.val_fold] # no patient may appear in more than one split for a, b in [(train_df, val_df), (train_df, test_df), (val_df, test_df)]: assert not (set(a["Case"]) & set(b["Case"])), "patient leakage"