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)