stilt.execution.submit#

stilt.execution.submit(project, *, receptors=None, execution=None, skip_existing=True, compute_root=None)[source]#

Submit every simulation of a project that has not finished to Slurm.

The receptors with missing results are split among up to n_workers tasks of one job array, and this returns once it is submitted. The submission is a folder _slurm/<date_time>_<id>/ in the project: receptors.txt lists the receptors to run, receptors.parquet holds their checked rows from receptors.csv, execution.yaml holds the execution settings, job.sh is the script given to sbatch, and <task>.log is each task’s log. Task i runs stilt run <project> --receptors receptors.parquet --task i/N, so it does not read and check all of receptors.csv again. A task that is preempted or nears its time limit requeues itself and skips what it finished (see run()).

Parameters:
Returns:

The Slurm job id of the array, or None when nothing needs to run. squeue -j <id> follows it and scancel <id> stops it.

Return type:

str | None

Raises:

ValueError – If the execution backend is not Slurm.