def submit(self, previous_job = None): from xfel.command_line.cxi_mpi_submit import do_submit output_path = self.get_global_path() if not os.path.exists(output_path): os.makedirs(output_path) identifier_string = self.get_identifier_string() target_phil_path = os.path.join(output_path, identifier_string + "_params.phil") with open(target_phil_path, 'w') as f: expt_suffix = refl_suffix = None for job in self.dataset_version.jobs: input_folder, _expt_suffix, _refl_suffix, _, _ = job.get_output_files() if expt_suffix is None: expt_suffix = _expt_suffix else: assert expt_suffix == _expt_suffix if refl_suffix is None: refl_suffix = _refl_suffix else: assert refl_suffix == _refl_suffix f.write("input.path=%s\n"%input_folder) f.write("input.experiments_suffix=%s\n"%expt_suffix) f.write("input.reflections_suffix=%s\n"%refl_suffix) f.write("output.output_dir=%s\n"%output_path) f.write("output.prefix=%s_v%03d\n"%(self.dataset.name, self.dataset_version.version)) f.write(self.task.parameters) command = "cctbx.xfel.merge %s"%target_phil_path submit_path = os.path.join(output_path, identifier_string + "_submit.sh") params = self.app.params.mp if params.nnodes_merge: params = copy.deepcopy(params) params.nnodes = params.nnodes_merge return do_submit(command, submit_path, output_path, params, identifier_string)
def submit(self, previous_job = None): from xfel.command_line.cxi_mpi_submit import do_submit output_path = self.get_global_path() if not os.path.exists(output_path): os.makedirs(output_path) identifier_string = self.get_identifier_string() target_phil_path = os.path.join(output_path, identifier_string + "_params.phil") input_folder, _, _, input_mtz, _ = previous_job.get_output_files() command = self.task.parameters.split('\n')[0] phil_params = '\n'.join(self.task.parameters.split('\n')[1:]) phil_params = phil_params.replace('<PREVIOUS_TASK_MTZ>', os.path.join(input_folder, input_mtz)) phil_params = phil_params.replace('<PREVIOUS_TASK_FOLDER>', input_folder) phil_params = phil_params.replace('<DATASET_NAME>', self.dataset.name) phil_params = phil_params.replace('<DATASET_VERSION>', str(self.dataset_version.version)) with open(target_phil_path, 'w') as f: f.write(phil_params) command = "%s %s"%(command, target_phil_path) submit_path = os.path.join(output_path, identifier_string + "_submit.sh") params = copy.deepcopy(self.app.params.mp) if params.nnodes_merge: params.nnodes = params.nnodes_merge params.use_mpi = False if 'upload' not in command: params.env_script = params.phenix_script return do_submit(command, submit_path, output_path, params, identifier_string)
def submit(self, previous_job = None): from xfel.command_line.cxi_mpi_submit import do_submit output_path = self.get_global_path() if not os.path.exists(output_path): os.makedirs(output_path) identifier_string = self.get_identifier_string() target_phil_path = os.path.join(output_path, identifier_string + "_params.phil") input_folder, _, _, input_mtz, _ = previous_job.get_output_files() command = self.task.parameters.split('\n')[0] phil_params = '\n'.join(self.task.parameters.split('\n')[1:]) phil_params = phil_params.replace('<PREVIOUS_TASK_MTZ>', os.path.join(input_folder, input_mtz)) phil_params = phil_params.replace('<PREVIOUS_TASK_FOLDER>', input_folder) phil_params = phil_params.replace('<DATASET_NAME>', self.dataset.name) phil_params = phil_params.replace('<DATASET_VERSION>', str(self.dataset_version.version)) with open(target_phil_path, 'w') as f: f.write(phil_params) command = "%s %s"%(command, target_phil_path) submit_path = os.path.join(output_path, identifier_string + "_submit.sh") params = copy.deepcopy(self.app.params.mp) if params.nnodes_merge: params.nnodes = params.nnodes_merge params.use_mpi = False params.shifter.staging = None if 'upload' in command: params.nnodes = 1 params.nproc_per_node = 1 #params.queue = 'shared' else: params.env_script = params.phenix_script if params.method == 'shifter' and 'upload' not in command: import libtbx.load_env params.shifter.sbatch_script_template = os.path.join( \ libtbx.env.find_in_repositories("xfel/ui/db/cfgs"), "phenix_sbatch.sh") params.shifter.srun_script_template = os.path.join( \ libtbx.env.find_in_repositories("xfel/ui/db/cfgs"), "phenix_srun.sh") return do_submit(command, submit_path, output_path, params, identifier_string)