def _write_bash_header(self, script): # bash_line = '#PBS -S /bin/bash' bash_line = '#!/bin/bash' file_utils.wl(script, bash_line) file_utils.wl(script, '')
def _write_die_function(self, script): file_utils.wl(script, 'die()') file_utils.wl(script, '{') # file_utils.wl(script, ' xnat_workflow_fail ' + str_utils.get_server_name(self.server) # + ' ' + self.username + ' ' + self.password + ' ' + self._workflow_id) file_utils.wl(script, ' exit 1') file_utils.wl(script, '}') file_utils.wl(script, '')
def _write_env_setup(self, script): setup_file = open(self.setup_script, 'r') for line in setup_file: script.write(line) file_utils.wl(script, '') setup_file.close()
def _write_bedpostx_call(self, script): bedpostx_call_line = '${FSLDIR}/bin/bedpostx_gpu.tbb' + ' ' bedpostx_call_line += self._working_directory_name + os.sep bedpostx_call_line += self.subject + os.sep bedpostx_call_line += 'T1w' + os.sep + 'Diffusion' + ' ' bedpostx_call_line += '-n 3 -b 3000 -model 3 -g --rician' file_utils.wl(script, 'echo "Calling bedpostx_gpu"') file_utils.wl(script, bedpostx_call_line) file_utils.wl(script, '')
def _write_rm_old_starttime_file_section(self, script): file_utils.wl(script, 'echo "Create a start time file"') file_utils.wl(script, 'start_time_file=' + self._starttime_file_name()) file_utils.wl(script, 'if [ -e "${start_time_file}" ]; then') file_utils.wl(script, ' echo "Removing old ${start_time_file}"') file_utils.wl(script, ' rm -f ${start_time_file}') file_utils.wl(script, 'fi') file_utils.wl(script, '')
def _write_platform_info_section(self, script): file_utils.wl(script, 'echo "----- Platform Information: Begin -----"') file_utils.wl(script, 'uname -a') file_utils.wl(script, 'echo "----- Platform Information: End -----"') file_utils.wl(script, '')
def _write_host_id_section(self, script): file_utils.wl(script, 'echo "Job started on `hostname` at `date`"') file_utils.wl(script, '')
def _write_doc_header(self, script): file_utils.wl(script, '') file_utils.wl( script, "# Copyright (C) " + str(datetime.datetime.now().year) + " The Human Connectome Project") file_utils.wl(script, "#") file_utils.wl( script, "# This file was autogenerated to run the " + self.PIPELINE_NAME + " pipeline") file_utils.wl(script, "# for subject: " + self.subject) file_utils.wl(script, '')
def _write_starttime_creation_section(self, script): file_utils.wl(script, 'echo "Creating start time file: ${start_time_file}"') file_utils.wl(script, 'touch ${start_time_file} || die') file_utils.wl(script, 'ls -l ${start_time_file}') file_utils.wl(script, '')
def _write_bash_header(self, script): bash_line = "#PBS -S /bin/bash" file_utils.wl(script, bash_line)
def _write_doc_header(self, script): file_utils.wl(script, '') file_utils.wl(script, "# Copyright (C) " + str(datetime.datetime.now().year) + " The Human Connectome Project") file_utils.wl(script, "#") file_utils.wl(script, "# This file was autogenerated to run the " + self.PIPELINE_NAME + " pipeline") file_utils.wl(script, "# for subject: " + self.subject) file_utils.wl(script, '')
def _create_work_script(self): logger.debug(debug_utils.get_name()) script_name = self._work_script_name() with contextlib.suppress(FileNotFoundError): os.remove(script_name) walltime_limit = str(self.walltime_limit_hours) + ':00:00' vmem_limit = str(self.vmem_limit_gbs) + 'gb' resources_line = '#PBS -l nodes=1:ppn=1,walltime=' + walltime_limit + ',vmem=' + vmem_limit stdout_line = '#PBS -o ' + self._working_directory_name stderr_line = '#PBS -e ' + self._working_directory_name script_line = self.xnat_pbs_jobs_home + os.sep + self.PIPELINE_NAME + os.sep + self.PIPELINE_NAME + '.XNAT.sh' user_line = ' --user='******' --password='******' --server=' + str_utils.get_server_name(self.server) project_line = ' --project=' + self.project subject_line = ' --subject=' + self.subject session_line = ' --session=' + self.session scan_line = ' --scan=' + self.scan wdir_line = ' --working-dir=' + self._working_directory_name setup_line = ' --setup-script=' + self.xnat_pbs_jobs_home + os.sep + self.PIPELINE_NAME + os.sep + self.setup_script reg_name_line = ' --reg-name=' + self.reg_name work_script = open(self._work_script_name(), 'w') futils.wl(work_script, resources_line) futils.wl(work_script, stdout_line) futils.wl(work_script, stderr_line) futils.wl(work_script, '') futils.wl(work_script, script_line + self._continue) futils.wl(work_script, user_line + self._continue) futils.wl(work_script, password_line + self._continue) futils.wl(work_script, server_line + self._continue) futils.wl(work_script, project_line + self._continue) futils.wl(work_script, subject_line + self._continue) futils.wl(work_script, session_line + self._continue) futils.wl(work_script, scan_line + self._continue) futils.wl(work_script, wdir_line + self._continue) if self.reg_name != 'MSMSulc': futils.wl(work_script, reg_name_line + self._continue) futils.wl(work_script, setup_line) work_script.close() os.chmod(self._work_script_name(), stat.S_IRWXU | stat.S_IRWXG)
def _create_work_script(self, scan): logger.debug("_create_work_script - scan: " + scan) with contextlib.suppress(FileNotFoundError): os.remove(self._work_script_name(scan)) walltime_limit = str(self.walltime_limit_hours) + ':00:00' vmem_limit = str(self.vmem_limit_gbs) + 'gb' resources_line = '#PBS -l nodes=1:ppn=1,walltime=' + walltime_limit resources_line += ',vmem=' + vmem_limit stdout_line = '#PBS -o ' + self._working_directory_name stderr_line = '#PBS -e ' + self._working_directory_name script_line = self.xnat_pbs_jobs_home + os.sep + '7T' + os.sep script_line += self.PIPELINE_NAME + os.sep + self.PIPELINE_NAME + '.XNAT.sh' user_line = ' --user='******' --password='******' --server=' + str_utils.get_server_name(self.server) project_line = ' --project=' + self.project subject_line = ' --subject=' + self.subject session_line = ' --session=' + self.session ref_proj_line = ' --structural-reference-project=' + self.structural_reference_project ref_sess_line = ' --structural-reference-session=' + self.structural_reference_session scan_line = ' --scan=' + scan wdir_line = ' --working-dir=' + self._working_directory_name workflow_line = ' --workflow-id=' + self._workflow_id setup_line = ' --setup-script=' + self.setup_script work_script = open(self._work_script_name(scan), 'w') futils.wl(work_script, resources_line) futils.wl(work_script, stdout_line) futils.wl(work_script, stderr_line) futils.wl(work_script, '') futils.wl(work_script, script_line + self._continue) futils.wl(work_script, user_line + self._continue) futils.wl(work_script, password_line + self._continue) futils.wl(work_script, server_line + self._continue) futils.wl(work_script, project_line + self._continue) futils.wl(work_script, subject_line + self._continue) futils.wl(work_script, session_line + self._continue) futils.wl(work_script, ref_proj_line + self._continue) futils.wl(work_script, ref_sess_line + self._continue) futils.wl(work_script, scan_line + self._continue) futils.wl(work_script, wdir_line + self._continue) futils.wl(work_script, workflow_line + self._continue) futils.wl(work_script, setup_line) work_script.close() os.chmod(self._work_script_name(scan), stat.S_IRWXU | stat.S_IRWXG)
def _create_post_eddy_script(self): _debug("_create_post_eddy_script") with contextlib.suppress(FileNotFoundError): os.remove(self._post_eddy_script_name) walltime_limit = str(self.post_eddy_walltime_limit_hours) + ':00:00' vmem_limit = str(self.post_eddy_vmem_limit_gbs) + 'gb' resources_line = '#PBS -l nodes=1:ppn=1,walltime=' + walltime_limit resources_line += ',vmem=' + vmem_limit stdout_line = '#PBS -o ' + self._working_directory_name stderr_line = '#PBS -e ' + self._working_directory_name script_line = self.xnat_pbs_jobs_home + os.sep + '7T' + os.sep script_line += 'DiffusionPreprocessingHCP7T' + os.sep script_line += 'DiffusionPreprocessingHCP7T_PostEddy.XNAT.sh' user_line = ' --user="******"' password_line = ' --password="******"' server_line = ' --server="' + str_utils.get_server_name( self.server) + '"' subject_line = ' --subject="' + self.subject + '"' wdir_line = ' --working-dir="' + self._working_directory_name + '"' workflow_line = ' --workflow-id="' + self._workflow_id + '"' setup_line = ' --setup-script=' + self.setup_script post_eddy_script = open(self._post_eddy_script_name, 'w') futils.wl(post_eddy_script, resources_line) futils.wl(post_eddy_script, stdout_line) futils.wl(post_eddy_script, stderr_line) futils.wl(post_eddy_script, '') futils.wl(post_eddy_script, script_line + self._continue) futils.wl(post_eddy_script, user_line + self._continue) futils.wl(post_eddy_script, password_line + self._continue) futils.wl(post_eddy_script, server_line + self._continue) futils.wl(post_eddy_script, subject_line + self._continue) futils.wl(post_eddy_script, wdir_line + self._continue) futils.wl(post_eddy_script, workflow_line + self._continue) futils.wl(post_eddy_script, setup_line) post_eddy_script.close() os.chmod(self._post_eddy_script_name, stat.S_IRWXU | stat.S_IRWXG)
def _write_sleep_section(self, script): file_utils.wl(script, 'echo "Sleep for 1 minute"') file_utils.wl(script, 'sleep 1m || die') file_utils.wl(script, '')
def _write_doc_header(self, script): file_utils.wl( script, "# Copyright (C) " + str(datetime.datetime.now().year) + " The Human Connectome Project") file_utils.wl(script, "#") file_utils.wl( script, "# This file was autogenerated to run the " + self.WORK_DESC + " for") file_utils.wl(script, "# subject: " + self.subject) file_utils.wl(script, "# project: " + self.project) file_utils.wl(script, "# session: " + self.session) file_utils.wl(script, "")
def _create_post_eddy_script(self): _debug("_create_post_eddy_script") with contextlib.suppress(FileNotFoundError): os.remove(self._post_eddy_script_name) walltime_limit = str(self.post_eddy_walltime_limit_hours) + ':00:00' vmem_limit = str(self.post_eddy_vmem_limit_gbs) + 'gb' resources_line = '#PBS -l nodes=1:ppn=1,walltime=' + walltime_limit resources_line += ',vmem=' + vmem_limit stdout_line = '#PBS -o ' + self._working_directory_name stderr_line = '#PBS -e ' + self._working_directory_name script_line = self.xnat_pbs_jobs_home + os.sep + '7T' + os.sep script_line += 'DiffusionPreprocessingHCP7T' + os.sep script_line += 'DiffusionPreprocessingHCP7T_PostEddy.XNAT.sh' user_line = ' --user="******"' password_line = ' --password="******"' server_line = ' --server="' + str_utils.get_server_name(self.server) + '"' subject_line = ' --subject="' + self.subject + '"' wdir_line = ' --working-dir="' + self._working_directory_name + '"' workflow_line = ' --workflow-id="' + self._workflow_id + '"' setup_line = ' --setup-script=' + self.setup_script post_eddy_script = open(self._post_eddy_script_name, 'w') futils.wl(post_eddy_script, resources_line) futils.wl(post_eddy_script, stdout_line) futils.wl(post_eddy_script, stderr_line) futils.wl(post_eddy_script, '') futils.wl(post_eddy_script, script_line + self._continue) futils.wl(post_eddy_script, user_line + self._continue) futils.wl(post_eddy_script, password_line + self._continue) futils.wl(post_eddy_script, server_line + self._continue) futils.wl(post_eddy_script, subject_line + self._continue) futils.wl(post_eddy_script, wdir_line + self._continue) futils.wl(post_eddy_script, workflow_line + self._continue) futils.wl(post_eddy_script, setup_line) post_eddy_script.close() os.chmod(self._post_eddy_script_name, stat.S_IRWXU | stat.S_IRWXG)