Submit an R Job
This page gives examples of submitting R scripts using Slurm.
1 Example 1: Simple R job
This example checks that R can run through Slurm.
1.1 Example R script
Create analysis.R:
print("Running R analysis")
print(Sys.info())
print(Sys.time())1.2 Example Slurm script
Create run-r.sh:
#!/bin/bash
#SBATCH --job-name=r-test
#SBATCH --cpus-per-task=1
#SBATCH --mem=2G
#SBATCH --output=r-test.out
#SBATCH --error=r-test.err
conda activate R-4.4
Rscript analysis.R1.3 Submit the job
sbatch run-r.sh1.4 Check the queue
squeue -u $USER1.5 Check output
cat r-test.out2 Example 2: Fit a Bayesian model using BayesianTools
This example fits a simple Bayesian normal model using the BayesianTools package.
The aim is to estimate the mean and standard deviation of simulated data using MCMC.
2.1 Install required packages
For a quick personal test:
conda activate R-4.4
RThen inside R:
install.packages("BayesianTools")For a proper project, use renv:
install.packages("renv")
renv::init()
install.packages("BayesianTools")
renv::snapshot()2.2 Example R script
Create fit-bayesiantools.R:
library(BayesianTools)
set.seed(123)
# Simulated observed data
y <- rnorm(100, mean = 5, sd = 2)
# Log-likelihood function
likelihood <- function(par) {
mu <- par[1]
sigma <- par[2]
if (sigma <= 0) {
return(-Inf)
}
sum(dnorm(y, mean = mu, sd = sigma, log = TRUE))
}
# Uniform prior ranges
lower <- c(mu = 0, sigma = 0.1)
upper <- c(mu = 10, sigma = 10)
prior <- createUniformPrior(
lower = lower,
upper = upper
)
bayesian_setup <- createBayesianSetup(
likelihood = likelihood,
prior = prior
)
# MCMC settings
settings <- list(
iterations = 10000,
nrChains = 3
)
# Run MCMC
mcmc_output <- runMCMC(
bayesianSetup = bayesian_setup,
sampler = "DEzs",
settings = settings
)
# Print summary
print(summary(mcmc_output))
# Extract posterior samples
samples <- getSample(mcmc_output, coda = FALSE)
# Save results
dir.create("results", showWarnings = FALSE)
write.csv(samples, "results/bayesiantools-mcmc-samples.csv", row.names = FALSE)
# Save diagnostic plots
pdf("results/bayesiantools-mcmc-diagnostics.pdf")
plot(mcmc_output)
dev.off()2.3 Example Slurm script
Create run-bayesiantools.sh:
#!/bin/bash
#SBATCH --job-name=bt-mcmc
#SBATCH --cpus-per-task=3
#SBATCH --mem=4G
#SBATCH --time=02:00:00
#SBATCH --output=bt-mcmc.out
#SBATCH --error=bt-mcmc.err
conda activate R-4.4
Rscript fit-bayesiantools.R2.4 Submit the job
sbatch run-bayesiantools.sh2.5 Check job status
squeue -u $USER2.6 Check output
cat bt-mcmc.out
cat bt-mcmc.err2.7 Check results
ls -lh results/Expected files:
bayesiantools-mcmc-samples.csv
bayesiantools-mcmc-diagnostics.pdf
3 Notes
BayesianTools provides general-purpose MCMC and SMC samplers for Bayesian inference. Its main workflow is to create a Bayesian setup with createBayesianSetup() and then run samplers using runMCMC().
For real research projects:
- run more iterations
- check convergence diagnostics
- inspect trace plots
- use multiple chains
- save your model code and results
- use
renvto record package versions
4 Common problems
4.1 Package not found
If you see:
there is no package called 'BayesianTools'
install the package inside the R environment or project renv library.
4.2 Conda activation fails inside Slurm
If this line fails:
conda activate R-4.4you may need to initialise conda in the script. Ask the administrator for the correct conda setup on the workstation.
4.3 Job runs out of memory
Increase memory:
#SBATCH --mem=8G4.4 Job takes too long
Increase time:
#SBATCH --time=08:00:00