Video tutorial at: https://youtu.be/j63OKiLpUec
To build a Singularity container copy the lines below to a Singularity.def
recipe/definition text file and then execute sudo singularity build container.sif Singularity.def
. For more information on how to build a Singularity containers follow the instructions in the README
of https://github.com/rohitfarmer/singularity-defs or check out the documentation at https://sylabs.io/.
BootStrap: docker
From: debian:buster
%labels
APPLICATION_NAME Nvim-R in Singularity Container
AUTHOR_NAME Rohit Farmer
AUTHOR_EMAIL rohit.farmer@gmail.com
YEAR 2020
%help
This container is based on debian buster and contains R 3.5 and Python 3.6.
%environment
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
LANG=C.UTF-8 LC_ALL=C.UTF-8
%post
# Install Development Tools & Essential Packages
cd /tmp
apt-get -qq -y update
export DEBIAN_FRONTEND=noninteractive
apt-get -qq install -y --no-install-recommends tzdata apt-utils
ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime
dpkg-reconfigure --frontend noninteractive tzdata
apt-get -y update
apt-get install -y --no-install-recommends \
autoconf \
automake \
build-essential \
bzip2 \
ca-certificates \
cmake \
gcc \
g++ \
gfortran \
git \
graphviz \
libtool \
libjpeg-dev \
libpng-dev \
libtiff-dev \
libatlas-base-dev \
libxml2-dev \
libcairo2-dev \
libeigen3-dev \
libpcre3-dev \
libssl-dev \
libcurl4-openssl-dev \
libboost-all-dev \
libgtk2.0-dev \
libreadline-dev \
libbz2-dev \
liblzma-dev \
libzmq3-dev \
libpcre++-dev \
libpango1.0-dev \
libopenblas-base \
libopenblas-dev \
liblapack-dev \
libxt-dev \
neovim \
openjdk-11-jdk \
python3 \
python3-dev \
python3-pip \
python3-setuptools \
r-base \
r-base-dev \
texlive \
texlive-fonts-extra \
texinfo \
vim \
wget \
xvfb \
xauth \
xfonts-base \
zip \
zlib1g-dev
export LANG=C.UTF-8 LC_ALL=C.UTF-8
# Install Jupyter notebook
python3 -m pip --no-cache-dir install jupyter
R --quiet --slave -e 'install.packages(c("IRkernel"), repos="https://cloud.r-project.org/")'
# Install Python client to Neovim
python3 -m pip --no-cache-dir install pynvim
# Install R packages
apt-get install -y --no-install-recommends \
r-cran-tidyverse
# Cleanup
apt-get -qq clean
rm -rf /var/lib/apt/lists/*
To invoke a shell inside the container
singularity shell container.sif
Now run nvim
as you would normally run in a terminal.
To execute a Jupyter notebook inside the container first run
singularity exec container.sif R --quiet --slave -e 'IRkernel::installspec()'
NOTE: You only have to do it once to install kernelspec
.
Now execute
singularity exec container.sif jupyter notebook --no-browser --ip=127.0.0.1 --port=8888
- SSH to the HPC.
- Claim an interactive node.
- Navigate to your project directory. Singularity container should be in your project directory.
- Execute
singularity exec container.sif jupyter notebook --no-browser --ip='0.0.0.0'
- Keep the SSH session and Jupyter notebook session running. Copy the URL on your local browser.
NOTE: On some HPCs, you may have to initiate an additional SSH tunnel connecting your local machine to the interactive node on the HPC. In that case, ask your system administrator.
For a detailed tutorial on how to use Neovim or VIM editor as an IDE for R please watch the video below.