No project description provided
Project description
oh-my-batch
A toolkit to manipulate batch tasks with command line. Designed for scientific computing community.
Features
omb combo
: generate folders/files from different combinations of parametersomb batch
: generate batch scripts from multiple working directoriesomb job
: track the state of job in job schedular
Shell Tips
oh-my-batch
is intended to help you implement computational workflows with shell scripts.
To make the best use of oh-my-batch
, you need to know some shell tips.
Install
pip install oh-my-batch
Use cases
Load useful functions to your shell script
You can load useful functions from oh-my-batch
this way:
omb misc export-shell-func > omb-func.sh && source omb-func.sh
This will load some useful functions to your shell script, for example, checkpoint
function.
Generate files from different combinations of parameters
It's common to generate files with different combinations of parameters in scientific computing.
For example, you have 3 LAMMPS data files in tmp
directory: tmp/1.data
, tmp/2.data
, tmp/3.data
.
And you want to generate a series of input files with different parameters,
for example, different temperatures 300K, 400K, 500K, against each data file.
In this case, you can use omb combo
command to generate a series of input files for you.
# prepare fake data files
mkdir -p tmp/
touch tmp/1.data tmp/2.data tmp/3.data
# prepare a lammps input file template
cat > tmp/in.lmp.tmp <<EOF
read_data $DATA_FILE
velocity all create $TEMP $RANDOM
run 1000
EOF
# prepare a run script template
cat > tmp/run.sh.tmp <<EOF
cat in.lmp # simulate running lammps
EOF
# generate input files
omb combo \
add_files DATA_FILE tmp/*.data - \
add_var TEMP 300 400 500 - \
add_randint RANDOM -n 3 -a 1 -b 1000 --broadcast - \
make_files tmp/in.lmp.tmp tmp/tasks/{i}-T-{TEMP}/in.lmp - \
make_files tmp/run.sh.tmp tmp/tasks/{i}-T-{TEMP}/run.sh --mode 755 - \
done
The above script will generate 9 folders in tmp/tasks
directory
with names from 0-T-300
, 1-T-400
, 2-T-500
, 3-T-300
to 8-T-500
.
Each folder will contain a in.lmp
file and a run.sh
file.
The 9 folders are the combinations of 3 data files and 3 temperatures,
and each input file will have a independent random number between 1 and 1000 as RANDOM
.
You can run the about script by ./examples/omb-combo.sh
,
and you can also run omb combo --help
to see the detailed usage of combo
command.
Generate batch scripts from multiple working directories
It's common to submit a lot of jobs to a job scheduler. omb batch
is designed to help you generate batch scripts from multiple working directories and package them into several batch scripts.
Let's continue the above example, now you have 9 folders in tmp/tasks
directory.
You want to package them into 2 batch scripts to submit to a job scheduler.
You can use omb batch
to generate batch scripts for you like this:
cat > tmp/lammps_header.sh <<EOF
#!/bin/bash
#SBATCH -J lmp
#SBATCH -n 1
#SBATCH -t 1:00:00
EOF
omb batch \
add_work_dirs tmp/tasks/* - \
add_header_files tmp/lammps_header.sh - \
add_cmds "checkpoint lmp.done ./run.sh" - \
make tmp/lmp-{i}.slurm --concurrency 2
You will find batch scripts tmp/lmp-0.slurm
and tmp/lmp-1.slurm
in tmp
directory.
omb batch
will provide some useful functions in the batch script.
For example, checkpoint
will check if the job is done and skip the job if it's done.
You can run the above script by ./examples/omb-batch.sh
,
Track the state of job in job schedular
Let's continue the above example, now you have submitted the batch scripts to the job scheduler.
In this case, you can use omb job
to track the state of the jobs.
omb job slurm submit tmp/*.slurm --max_tries 3 --wait --recovery lammps-jobs.json
The above command will submit the batch scripts to the job scheduler, and wait for the jobs to finish. If the job fails, it will retry for at most 3 times.
The --recovery
option will save the job information to lammps-jobs.json
file.
If omb job
is interrupted, you can rerun the exact same command to recover the job status,
so that you don't need to resubmit the jobs that are still running or completed.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file oh_my_batch-0.2.1.tar.gz
.
File metadata
- Download URL: oh_my_batch-0.2.1.tar.gz
- Upload date:
- Size: 22.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.9.12 Linux/5.15.167.4-microsoft-standard-WSL2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5ea5d1f3cce2416a64fe89766a6bbc67110f564b2f28cea8d7260c8b3cd0d36 |
|
MD5 | 333c147ca565c84d905a59b39407c73f |
|
BLAKE2b-256 | 981266b6ba205f9f9e1b0583e70c902fedb2f86a6cf34e1818f90b157cda5f05 |
File details
Details for the file oh_my_batch-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: oh_my_batch-0.2.1-py3-none-any.whl
- Upload date:
- Size: 23.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.9.12 Linux/5.15.167.4-microsoft-standard-WSL2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3c8384636e1021e5bcd181e27feac7506e261f46140b49c524248f955975cf91 |
|
MD5 | 9e3334299e537033c1121f916f165198 |
|
BLAKE2b-256 | 1b3a376baa401b2865288cd370f2748d0fddbbef0e60dede76af9eff5b87dd2b |