diff --git a/src/f3dasm/_src/experimentdata/_jobqueue.py b/src/f3dasm/_src/experimentdata/_jobqueue.py index 10ecbe11..cee1e9e5 100644 --- a/src/f3dasm/_src/experimentdata/_jobqueue.py +++ b/src/f3dasm/_src/experimentdata/_jobqueue.py @@ -167,6 +167,24 @@ def reset(self) -> None: """Resets the job queue.""" self.jobs = pd.Series(dtype='string') + # Select + # ========================================================================= + + def select_all(self, status: str) -> _JobQueue: + """Selects all jobs with a certain status. + + Parameters + ---------- + status : str + Status of the jobs to select + + Returns + ------- + JobQueue + JobQueue object containing the selected jobs. + """ + return _JobQueue(self.jobs[self.jobs == status]) + # Export # ========================================================================= diff --git a/src/f3dasm/_src/experimentdata/experimentdata.py b/src/f3dasm/_src/experimentdata/experimentdata.py index 5ae1f1c6..34855e8f 100644 --- a/src/f3dasm/_src/experimentdata/experimentdata.py +++ b/src/f3dasm/_src/experimentdata/experimentdata.py @@ -377,6 +377,34 @@ def select(self, indices: int | Iterable[int]) -> ExperimentData: jobs=self._jobs[indices], domain=self.domain, project_dir=self.project_dir) + def select_with_status(self, status: Literal['open', 'in progress', + 'finished', 'error'] + ) -> ExperimentData: + """Select a subset of the ExperimentData object with a given status + + Parameters + ---------- + status : Literal['open', 'in progress', 'finished', 'error'] + The status to select. + + Returns + ------- + ExperimentData + The selected ExperimentData object with only the selected status. + + Raises + ------ + ValueError + Raised when invalid status is specified + """ + if status not in [s.value for s in Status]: + raise ValueError(f"Invalid status {status} given. " + f"\nChoose from values: " + f"{', '.join([s.value for s in Status])}") + + _indices = self._jobs.select_all(status).indices + return self.select(_indices) + def get_input_data(self, parameter_names: Optional[str | Iterable[str]] = None ) -> ExperimentData: