Skip to main content

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 --conda flag, 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 --config flag 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:

  • prefix for a command to be executed before anything else, including conda actiavtion
  • conda_prefix for 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 by jb

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jbatch-0.2.3.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jbatch-0.2.3-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

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

Hashes for jbatch-0.2.3.tar.gz
Algorithm Hash digest
SHA256 2b1411b5c8a5db48f6baee4ec757dfe74424f69ac9a2236b7af55a85356a77ba
MD5 0310733a01d359f8b19cf1f42195b458
BLAKE2b-256 37aa31ddd2152def7d1241f8b0dd5fd7a53df16a141bb64263f74fac2fad2cde

See more details on using hashes here.

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

Hashes for jbatch-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 19dec25c883adbf1ab02a92209044b2dda2f37f0c0051cdb756b6138002a310e
MD5 20318099570a8a3a38c0c4af5d73fd9a
BLAKE2b-256 cfd462d9f8a828e9f3fea525777eb5cbe687d4ce91453b6b5196085c6ba71ebb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page