Simple tool to wrap and execute sbatch commands from Jupyter Notebook cells with Conda envs
Project description
Jupyter Notebooks 🤝 Conda 🤝 Slurm
An alternative for writing separate sbatch scripts and bash pipelines for them – jb is a simple tool to wrap and execute sbatch comands from Juputer Notebook cells with conda envs:
- ⚙️ Config files with default sbatch parametres – e.g.
--account,--partition - 🚀 Python variables inside sbatch commands – e.g.
for sample in samples: ..., see example №1 - 🐍 Conda envs with
--condaflag, see example №2 - 🔗 Manage dependences for jobs, see example №4
Installation
pip install jbatch
Arguments
| Argument | Description |
|---|---|
--account,-a |
Account to charge for resource usage |
--reservation,-r |
Reservation name |
--partition,-p |
Partition to submit the job to |
--cpus,-c |
Number of CPUs to use (e.g. 4) |
--mem,-m |
Memory in GB without 'G' suffix (e.g. 8) |
--time,-t |
Time in hours (e.g. 24) |
--conda |
Activate conda environment by name or path, Conda executable must be in the $PATH |
--logdir |
Destination directory for .out and .err files |
--name |
Base name for log (.out & .err) files and for the sbatch job, use %cmd for first word in cmd and %j for job id |
--config |
Path to jb_config.yaml file. If no config given, trying to find one in the current dir and in ~/.config/jb |
--verbosity,-v |
Verbosity level: 0 - quiet, 1 - Job ID, 2 - params and cmd |
--dry |
Dry run – simulate job submission without executing commands |
--dependency,-d |
Job dependencies |
Config
Config data in yaml fromat may be located in:
- ~/.config/jb/jb_config.yaml [default]
- ./jb_config.yaml
- anywhere if provided with
--configflag Note: default config is generated in~/.config/jb/jb_config.yaml, but user must add the information there manually
Any argument can be specified here and there are two extra options:
prefixfor a command to be executed before anything else, including conda actiavtionconda_prefixfor a command to be executed before any conda env activation (some clusters require loading anaconda module first) Note: no '&&' are needed in this prefixes – they will be added byjb
Examples
📌 Example №0: Simple execution of sbatch command
! jb bwa index ~/ref/hg38.fa
🚀 Example №1: Using python variables
import glob
ref = "~/ref/hg38.fa"
for sample in glob.glob("~/data/*.fq"):
! jb bwa mem {ref} {sample} -o {sample[:-2] + "sam"}
🐍 Example №2: Using conda environment
path = "~/data/sample1.sam"
! jb --conda ngs samtools view {path}
⚠️ Example №3: Using pipes and redirections
Tip: To use special bash characters like (i.e. "|", ">" or "&") use escape characters "\"
! jb echo "hi!" \> test123 \&\& sleep 5
🔗 Example №4: Managing dependencies
Tip: Use --dry and -v 2 to show command to execute without execution (but dependencies aren't shown)
job_ids = []
job_id = ! jb echo "Hello" \> "hi.txt"
job_ids.append(job_id)
job_id = ! jb echo "World" \>\> "hi.txt"
job_ids.append(job_id)
# convert list of lists into comma-separated job ids string
job_ids = ",".join([_ for __ in job_ids for _ in __])
! jb -d {job_ids} cat "hi.txt"
Also you can just ignore output:
_ = ! jb echo "hi!"
! jb echo "hi!" > /dev/null
Extra
Use err and out commands to cat last created files in the log dir.
Use sc, sa, sq for better scancel (warning! adds --me flag), sacct and squeque
Future features (maybe...)
- ⏱️ Profile submitted jobs for resource usage (cpus, memory, disc i/o, time)
- 🏛️ History of submitted jobs
- ✨ Fancy dependencies
- ➕ Extra arguments for sbatch
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jbatch-0.2.3.tar.gz.
File metadata
- Download URL: jbatch-0.2.3.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.1 Linux/6.1.0-23-amd64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b1411b5c8a5db48f6baee4ec757dfe74424f69ac9a2236b7af55a85356a77ba
|
|
| MD5 |
0310733a01d359f8b19cf1f42195b458
|
|
| BLAKE2b-256 |
37aa31ddd2152def7d1241f8b0dd5fd7a53df16a141bb64263f74fac2fad2cde
|
File details
Details for the file jbatch-0.2.3-py3-none-any.whl.
File metadata
- Download URL: jbatch-0.2.3-py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.1 Linux/6.1.0-23-amd64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19dec25c883adbf1ab02a92209044b2dda2f37f0c0051cdb756b6138002a310e
|
|
| MD5 |
20318099570a8a3a38c0c4af5d73fd9a
|
|
| BLAKE2b-256 |
cfd462d9f8a828e9f3fea525777eb5cbe687d4ce91453b6b5196085c6ba71ebb
|