From d63b2cd905abb118fa8ed95fceea8a6b117e14f8 Mon Sep 17 00:00:00 2001 From: Shyam D Date: Mon, 28 Sep 2020 15:59:46 -0700 Subject: [PATCH] build material per sandbox set --- emmet-builders/emmet/builders/vasp/materials.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/emmet-builders/emmet/builders/vasp/materials.py b/emmet-builders/emmet/builders/vasp/materials.py index bee0cf96fb..29281f708c 100644 --- a/emmet-builders/emmet/builders/vasp/materials.py +++ b/emmet-builders/emmet/builders/vasp/materials.py @@ -259,7 +259,18 @@ def filter_and_group_tasks(self, tasks: List[Dict]) -> Iterator[List[Dict]]: ) for group in grouped_structures: - yield [filtered_tasks[struc.index] for struc in group] + grouped_tasks = [filtered_tasks[struc.index] for struc in group] + sandboxes = [ + task["sandboxes"] for task in grouped_tasks if "sandboxes" in task + ] + + for sbx_set in maximal_spanning_non_intersecting_subsets(sandboxes): + yield [ + task + for task in grouped_tasks + if len(set(task.get("sandboxes", ["core"])).intersection(sbx_set)) + > 0 + ] def make_mat(self, task_group: List[Dict]) -> Dict: """