def get_script_str(self, job_name, launch_dir, executable, qout_path, qerr_path, stdin=None, stdout=None, stderr=None): """ Returns a (multi-line) String representing the queue script, e.g. PBS script. Uses the template_file along with internal parameters to create the script. Args: launch_dir: (str) The directory the job will be launched in. qout_path Path of the Queue manager output file. qerr_path: Path of the Queue manager error file. """ # Construct the header for the Queue Manager. qheader = self._make_qheader(job_name, qout_path, qerr_path) # Add the bash section. se = ScriptEditor() if self.setup: se.add_comment("Setup section") se.add_lines(self.setup) if self.modules: se.add_comment("Load Modules") se.add_line("module purge") se.load_modules(self.modules) if self.has_omp: se.add_comment("OpenMp Environment") se.declare_vars(self.omp_env) if self.shell_env: se.add_comment("Shell Environment") se.declare_vars(self.shell_env) # Cd to launch_dir se.add_line("cd " + os.path.abspath(launch_dir)) if self.pre_run: se.add_comment("Commands before execution") se.add_lines(self.pre_run) # Construct the string to run the executable with MPI and mpi_ncpus. mpi_ncpus = self.mpi_ncpus line = self.mpi_runner.string_to_run(executable, mpi_ncpus, stdin=stdin, stdout=stdout, stderr=stderr) se.add_line(line) if self.post_run: se.add_comment("Commands after execution") se.add_lines(self.post_run) shell_text = se.get_script_str() return qheader + shell_text
def test_base(self): "base test" se = ScriptEditor() se.shebang() se.declare_var("FOO", "BAR") se.add_emptyline() se.add_comment("This is a comment") se.declare_vars({"FOO1": "BAR1"}) se.load_modules(["module1", "module2"]) print(se.get_script_str())