Source code for dandi_compute_code.aind_ephys_pipeline._handle_template

import pathlib

import jinja2
import pydantic

from ._globals import _RAW_TEMPLATE_FILE_PATH


[docs] @pydantic.validate_call def generate_aind_ephys_submission_script( script_file_path: pathlib.Path, log_directory: str, nwb_file_path: str, results_directory: str, work_directory: str, apptainer_cache_directory: str, environment_directory: str, config_file_path: str, pipeline_file_path: str, pipeline_repo_directory: str, pipeline_version: str, temp_name: str, done_tracker_file_path: str, params_file_path: str, ) -> None: """ Generate AIND Ephys submission script from template. Arguments are ordered as they occur in the submission template. :param script_file_path: Where to write the submission script. :type script_file_path: pathlib.Path :param log_directory: The log directory. :type log_directory: str :param nwb_file_path: The input NWB file path. :type nwb_file_path: str :param results_directory: The results directory. :type results_directory: str :param work_directory: The work directory. :type work_directory: str :param apptainer_cache_directory: The Apptainer cache directory. :type apptainer_cache_directory: str :param environment_directory: The conda environment to activate. :type environment_directory: str :param config_file_path: The configuration file path. :type config_file_path: str :param pipeline_file_path: The pipeline file path. :type pipeline_file_path: str :param pipeline_repo_directory: Path to the base pipeline repository intended to be used. :type pipeline_repo_directory: str :param pipeline_version: The pipeline version, which is used to checkout a branch of the pipeline repository. :type pipeline_version: str, optional :param temp_name: The name of the temporary processing directory. :type temp_name: str :param done_tracker_file_path: The path to the 'done' tracker file. :type done_tracker_file_path: str :param params_file_path: The parameters file path. :type params_file_path: str """ raw_template = _RAW_TEMPLATE_FILE_PATH.read_text() template = jinja2.Template(source=raw_template) script = template.render( log_directory=log_directory, nwb_file_path=nwb_file_path, data_path=str(pathlib.Path(nwb_file_path).parent), results_directory=results_directory, work_directory=work_directory, apptainer_cache_directory=apptainer_cache_directory, environment_directory=environment_directory, config_file_path=config_file_path, pipeline_file_path=pipeline_file_path, pipeline_repo_directory=pipeline_repo_directory, pipeline_version=pipeline_version, params_file_path=params_file_path, temp_name=temp_name, done_tracker_file_path=done_tracker_file_path, ) script_file_path.write_text(data=f"{script}\n") # Extra newline to prevent improper console wrapping in manual mode