Source code for schrodinger.application.desmond.starter.starter

"""
Command line helper

Copyright Schrodinger, LLC. All rights reserved.
"""

# Contributors: Yujie Wu

import sys


[docs]def dummy(dat): return dat
[docs]def default_accounter(job): """ Assuming `job` is a `jobcontrol.Job` object. """ print("JobId:", job.job_id)
[docs]class Starter(object):
[docs] def __init__(self, ui, generator, launcher, accounter=default_accounter, plugin0=dummy, plugin1=dummy, plugin2=dummy): self._ui = ui if callable(ui) else ui.ui self._generator = generator if callable( generator) else generator.generate self._launcher = launcher if callable(launcher) else launcher.launch_job self._accounter = accounter self._plugin0 = plugin0 self._plugin1 = plugin1 self._plugin2 = plugin2
[docs] def run(self): raw_in = self._ui(sys.argv) raw_in = self._plugin0(raw_in) cmd = self._generator(raw_in) if raw_in.prepare: sys.exit(0) cmd = self._plugin1(cmd) dat = self._launcher(cmd) end = self._accounter(dat) return self._plugin2(end)