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)