From 40df14c3e1998d9f7a6a8a9f987a8c9a7e40979b Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Fri, 7 Mar 2025 16:14:52 +0000 Subject: [PATCH] add job array prefix and fix submit jobs test with newly included CLI params --- src/args.rs | 14 +++++++++++--- src/main.rs | 2 ++ src/submission.rs | 8 ++++++-- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/args.rs b/src/args.rs index 84bbee5..e79e9c1 100644 --- a/src/args.rs +++ b/src/args.rs @@ -57,6 +57,14 @@ pub fn parse_args() -> ArgMatches { ) .required(true) ) + .arg( + Arg::new("job_prefix") + .short('p') + .long("job_prefix") + .value_name("PREFIX") + .help("prefix for job submission name i.e. prefix_job_array") + .default_value("arrayify") + ) .arg( Arg::new("log") .short('l') @@ -70,7 +78,7 @@ pub fn parse_args() -> ArgMatches { .short('m') .long("memory") .value_name("MEMORY_GB") - .help("Amount of memory per job in GB (default: 1GB)") + .help("Amount of memory per job in GB") .default_value("1") ) .arg( @@ -78,7 +86,7 @@ pub fn parse_args() -> ArgMatches { .short('t') .long("threads") .value_name("THREADS") - .help("Number of threads per job (default: 1)") + .help("Number of threads per job") .default_value("1") ) .arg( @@ -94,7 +102,7 @@ pub fn parse_args() -> ArgMatches { .short('q') .long("queue") .value_name("QUEUE") - .help("Bsub queue to submit to (default: normal)") + .help("Bsub queue to submit to") .default_value("normal") ) ) diff --git a/src/main.rs b/src/main.rs index 6c8ecfd..9059f44 100644 --- a/src/main.rs +++ b/src/main.rs @@ -108,6 +108,7 @@ fn main() { } let command_template = sub_matches.get_one::("command").unwrap(); + let job_prefix = sub_matches.get_one::("job_prefix").unwrap(); let log_dir = sub_matches.get_one::("log").unwrap(); let memory_gb: u32 = sub_matches .get_one::("memory") @@ -144,6 +145,7 @@ fn main() { submission::submit_jobs( input_path, command_template, + job_prefix, log_dir, memory_gb, threads, diff --git a/src/submission.rs b/src/submission.rs index 90713d2..5622317 100644 --- a/src/submission.rs +++ b/src/submission.rs @@ -50,6 +50,7 @@ fn print_run_stats(num_jobs: usize, log_dir: &str, log_file_path: &str, job_id: fn submit_jobs_to_scheduler( job_file_path: &str, log_dir: &str, + job_prefix: &str, memory_mb: u32, threads: u32, queue: &str, @@ -57,7 +58,7 @@ fn submit_jobs_to_scheduler( ) -> io::Result { // Count the number of lines in the file to determine the job array size let num_jobs = count_lines_in_file(job_file_path)?; - let job_array = format!("arrayify_job_array[1-{}]%{}", num_jobs, batch_size); + let job_array = format!("{}_job_array[1-{}]%{}", job_prefix, num_jobs, batch_size); let output_log = format!("{}/job_%J_%I.out", log_dir); let error_log = format!("{}/job_%J_%I.err", log_dir); @@ -99,6 +100,7 @@ $COMMAND pub fn submit_jobs( input_path: &str, command_template: &str, + job_prefix: &str, log_dir: &str, memory_gb: u32, threads: u32, @@ -128,7 +130,7 @@ pub fn submit_jobs( // Submit jobs to the scheduler let batch_size = calculate_batch_size(jobs.len(), batch_size); - let job_id = submit_jobs_to_scheduler(&log_file_path, log_dir, memory_mb, threads, queue, batch_size)?; + let job_id = submit_jobs_to_scheduler(&log_file_path, log_dir, job_prefix, memory_mb, threads, queue, batch_size)?; // Print run statistics print_run_stats(jobs.len(), log_dir, &log_file_path, &job_id); @@ -181,9 +183,11 @@ mod tests { let result = submit_jobs( csv_file.path().to_str().unwrap(), "echo {header1}", + "arrayify", "logs", 1, 1, + "normal", None, InputFormat::Csv, );