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.R

1.3 Submit the job

sbatch run-r.sh

1.4 Check the queue

squeue -u $USER

1.5 Check output

cat r-test.out

2 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
R

Then 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.R

2.4 Submit the job

sbatch run-bayesiantools.sh

2.5 Check job status

squeue -u $USER

2.6 Check output

cat bt-mcmc.out
cat bt-mcmc.err

2.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 renv to 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.4

you 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=8G

4.4 Job takes too long

Increase time:

#SBATCH --time=08:00:00