schrodinger.application.desmond.stage.launcher module

class schrodinger.application.desmond.stage.launcher.Multisim(should_pack=True)

Bases: schrodinger.application.desmond.cmj.StageBase

This stage launches a set of subjobs for each job in _pre_jobs. The job param is a list of job commands, optionally containing sea macros. Each job command will be called with each input file as an additional argument.

NAME = 'multisim'
RESTARTABLE = True
PARAM = <schrodinger.utils.sea.sea.Map object>
RELAY_KEYS = ['RETRIES', 'DEBUG', 'debug', 'verbose']
crunch()

This is where jobs of this stage are created. This function should be overriden by the subclass.

restart_subjobs(jobs: List[schrodinger.application.desmond.cmj.Job])

Subclass should override this if it supports subjob restarting.

collect_inputfile(job_arg_lists: Optional[schrodinger.utils.sea.sea.List] = None) List[str]

Returns a list of input fnames for the given jobs. If jobs is passed in, use it instead of the job associated with this object. This is used for subclasses to override the jobs list used.

Parameters

jobs – List of jobs to include.

Returns

The filenames needed to run this stage.

class schrodinger.application.desmond.stage.launcher.FepLauncher(should_pack=True)

Bases: schrodinger.application.desmond.stage.launcher.Multisim

This stage launches a set of subjobs for each job in _pre_jobs. The dispatch param is a map of simulation protocols to a list of job commands, optionally containing sea macros. The edge matching the structure file for each pre-job is used to determine which list of job commands gets used. Then, each job command from this list will be called with that input file as an additional argument.

NAME = 'fep_launcher'
PARAM = <schrodinger.utils.sea.sea.Map object>
get_edge_from_struct_file(struct_file: Union[str, pathlib.Path], g: graph.Graph)
collect_inputfile(job_arg_lists: Optional[schrodinger.utils.sea.sea.List] = None) List[str]

Returns a list of input fnames for the given jobs. If jobs is passed in, use it instead of the job associated with this object. This is used for subclasses to override the jobs list used.

Parameters

jobs – List of jobs to include.

Returns

The filenames needed to run this stage.

restart_subjobs(jobs: List[schrodinger.application.desmond.cmj.Job])

Subclass should override this if it supports subjob restarting.

restart_edges(edge_ids: List[str], sim_protocols: Optional[Dict[str, str]] = None)

Restart the jobs for a given list of edges. Each edge_id is specified as ‘{from_short_id}_{to_short_id}’. This will create the jobs if missing from the list of existing jobs.

Parameters

sim_protocols – This will be used for reconstructing missing jobs (if any).

class schrodinger.application.desmond.stage.launcher.FepMembraneLauncher(should_pack=True)

Bases: schrodinger.application.desmond.stage.launcher.Multisim

This stage launches a multisim job which first adds a lipid membrane to the input graph’s protein receptor. The protein-membrane system and a representative ligand are then equilibrated by the membrane relaxation protocol. The relaxed protein-membrane-water CTs are then added back to the fmp for subsequent FEP simulations.

NAME = 'fep_membrane_launcher'
INPUT_FNAME = 'input.mae'
CMS_OUT_FNAME = 'relaxed.cms'
PARAM = <schrodinger.utils.sea.sea.Map object>
crunch()

If the input fmp doesnt already have a membrane, create a multisim job which will automate membrane creation and relaxation, otherwise, skip running a job in this stage.

hook_captured_successful_job(job)

After equilibration is complete, collect and process its output, and place the results into the fmp archive.

schrodinger.application.desmond.stage.launcher.create_fep_launcher_jobs(edge_mae_files: List[str], stage: schrodinger.application.desmond.cmj.StageBase, parent_job: schrodinger.application.desmond.cmj.Job, job_dir: str, fmp_fname: str, tag: str = None) List[schrodinger.application.desmond.cmj.Job]

Create jobs for the FEP launcher stage using the input edge structures specified by edge_mae_files

schrodinger.application.desmond.stage.launcher.get_edge_from_struct_file(struct_file: Union[str, pathlib.Path], g: graph.Graph)