schrodinger.tasks.queue module

class schrodinger.tasks.queue.QueueReport(*args, _param_type=<object object>, **kwargs)

Bases: CompoundParam

num_tasks: int

A parameter of the class.

num_done_tasks: int

A parameter of the class.

num_failed_tasks: int

A parameter of the class.

failure_infos: Dict[str, FailureInfo]

A parameter of the class.

failure_infosChanged

A pyqtSignal emitted by instances of the class.

failure_infosReplaced

A pyqtSignal emitted by instances of the class.

num_done_tasksChanged

A pyqtSignal emitted by instances of the class.

num_done_tasksReplaced

A pyqtSignal emitted by instances of the class.

num_failed_tasksChanged

A pyqtSignal emitted by instances of the class.

num_failed_tasksReplaced

A pyqtSignal emitted by instances of the class.

num_tasksChanged

A pyqtSignal emitted by instances of the class.

num_tasksReplaced

A pyqtSignal emitted by instances of the class.

class schrodinger.tasks.queue.QueueResults(*args, _param_type=<object object>, **kwargs)

Bases: CompoundParam

Data class to store the results of a queued task run and report them if requested.

We implement several dunder methods to make this class behave like a list of done tasks in order to maintain backwards compatibility with existing code.

done_tasks: List[AbstractTask]

A parameter of the class.

failed_tasks: List[AbstractTask]

A parameter of the class.

__len__() int
addTasks(tasks: List[AbstractTask]) None
makeReport() QueueReport
done_tasksChanged

A pyqtSignal emitted by instances of the class.

done_tasksReplaced

A pyqtSignal emitted by instances of the class.

failed_tasksChanged

A pyqtSignal emitted by instances of the class.

failed_tasksReplaced

A pyqtSignal emitted by instances of the class.

class schrodinger.tasks.queue.TaskQueue(*args, _param_type=<object object>, **kwargs)

Bases: SignalTask

A task that runs a queue of tasks. The TaskQueue is done when all its added tasks have completed, regardless of whether they completed successfully or failed. To use, add tasks with addTask and then start the task queue.

queuedTaskFinished

A pyqtSignal emitted by instances of the class.

queueDone

A pyqtSignal emitted by instances of the class.

max_running_tasks: int

A parameter of the class.

__init__(*args, **kwargs)
addTask(task)
getTasks()

Return all tasks in the queue.

Return type:

tuple[tasks.AbstractTask]

setUpMain()
start(*args, **kwargs)

This is the main method for starting a task. Start will check if a task is not already running, run preprocessing, and then run the task.

Failures in preprocessing will interrupt the task start, and the task will never enter the RUNNING state.

Parameters:

skip_preprocessing (bool) – whether to skip preprocessing. This can be useful if preprocessing was already performed prior to calling start.

calling_contextChanged

A pyqtSignal emitted by instances of the class.

calling_contextReplaced

A pyqtSignal emitted by instances of the class.

failure_infoChanged

A pyqtSignal emitted by instances of the class.

failure_infoReplaced

A pyqtSignal emitted by instances of the class.

inputChanged

A pyqtSignal emitted by instances of the class.

inputReplaced

A pyqtSignal emitted by instances of the class.

max_progressChanged

A pyqtSignal emitted by instances of the class.

max_progressReplaced

A pyqtSignal emitted by instances of the class.

max_running_tasksChanged

A pyqtSignal emitted by instances of the class.

max_running_tasksReplaced

A pyqtSignal emitted by instances of the class.

nameChanged

A pyqtSignal emitted by instances of the class.

nameReplaced

A pyqtSignal emitted by instances of the class.

outputChanged

A pyqtSignal emitted by instances of the class.

outputReplaced

A pyqtSignal emitted by instances of the class.

progressChanged

A pyqtSignal emitted by instances of the class.

progressReplaced

A pyqtSignal emitted by instances of the class.

progress_stringChanged

A pyqtSignal emitted by instances of the class.

progress_stringReplaced

A pyqtSignal emitted by instances of the class.

statusChanged

A pyqtSignal emitted by instances of the class.

statusReplaced

A pyqtSignal emitted by instances of the class.

class schrodinger.tasks.queue.AutoFileMode

Bases: IntEnum

FAILED_LOG = 1
FAILED_ALL = 2
NONE = 3
LOG = 4
ALL = 5
schrodinger.tasks.queue.run_tasks_in_parallel(task_list, autoname=True, basename=None, basedir=None)

This functions provides a convenient way of launching multiple tasks in parallel while taking care of boilerplate and prevents common mistakes.

By default, this function will:

  • Give each task a unique name

  • Give each task its own directory

  • Create a new JobDJ or TaskQueue

  • Run it with the provided tasks

  • Register the log files of any failed tasks with jobserver if using

    jobtasks

This can be used with either JobTasks or SubprocessTasks. SubprocessTasks will be run on a TaskQueue while JobTasks will be run on JobDJ.

Parameters:
  • task_list (list of tasks.AbstractTask) – the tasks to run

  • autoname (bool) – whether to automatically give each task a unique name

  • basename (str) – basename to be used in autonaming each task. Has no effect if autoname is set to False

  • basedir (str) – Base directory; all task taskdirs will be created inside. Defaults to cwd, and relative paths will be taken relative to cwd.

Returns:

the queue results, which can be used to generate a queue report.

Return type:

QueueResults

schrodinger.tasks.queue.run_tasks_on_queue(task_list, autoname=True, basename=None, basedir=None, max_running_tasks=None)

Launch multiple SubprocessTasks on a TaskQueue.

See run_tasks_in_parallel for more details. :param max_running_tasks: specifies how many tasks can be run simultaneously :type max_running_tasks: int

schrodinger.tasks.queue.run_tasks_on_dj(task_list, dj=None, autoname=True, basename=None, basedir=None, create_taskdirs=True, auto_file_mode=AutoFileMode.FAILED_LOG, dj_init_kwargs: dict = None, dj_addJob_kwargs: dict = None, dj_run_kwargs: dict = None)

Launch multiple jobtasks on a jobdj. Use this function over run_tasks_in_parallel if you know you’ll be running jobtasks and you want to further customize how they’re run.

Parameters:
  • dj (schrodinger.job.queue.JobDJ) – A JobDJ to run the tasks on. This is optional and useful if want a jobdj with specific settings.

  • autoname (bool) – whether to automatically give each task a unique name

  • basename (str) – basename to be used in autonaming each task. Has no effect if autoname is set to False

  • basedir (str) – Base directory; all task taskdirs will be created inside. Defaults to cwd, and relative paths will be taken relative to cwd.

  • create_taskdirs (bool) – whether to create the taskdirs. If False, the task will use base directory and relative directories will not be created.

  • auto_file_mode (AutoFileMode) – what subtask files to register with the parent job to be copied back by jobcontrol. Only has an effect if this function is called from inside a jobcontrol backend.

  • dj_init_kwargs – A dictionary of keyword arguments to pass to JobDJ.__init__

  • dj_run_kwargs – A dictionary of keyword arguments to pass to JobDJ.run

  • dj_addJob_kwargs – A dictionary of keyword arguments to pass to JobDJ.addJob for each jobtask.

schrodinger.tasks.queue.autoname_tasks(task_list, basename=None)

Sets unique names on all the tasks provided with an incrementing integer suffix. See run_tasks_on_dj for details.

schrodinger.tasks.queue.configure_taskdirs(task_list, autoname=True, basename=None, basedir=None, create_taskdirs=True)

Automatically configure task names and taskdirs to commonly used values.

Parameters:
  • task_list (list of tasks.AbstractTask) – the tasks to run

  • autoname (bool) – whether to automatically give each task a unique name

  • basename (str) – basename to be used in autonaming each task. Has no effect if autoname is set to False

  • basedir (str) – Base directory; all task taskdirs will be created inside. Defaults to cwd, and relative paths will be taken relative to cwd.

  • create_taskdirs (bool) – whether to create the taskdirs. If False, the task will use base directory and relative directories will not be created.

schrodinger.tasks.queue.auto_register_files(task_list, auto_file_mode=AutoFileMode.FAILED_LOG)

Automatically registers files from the subtask with the parent job (if applicable).