Run Neovim/VIM & Jupyter inside a Singularity Container for R Programming
Video tutorial at: https://youtu.be/j63OKiLpUec
Build a Singularity Container
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/*
Invoke a Shell inside the Container
To invoke a shell inside the container
Now runnvim
as you would normally run in a terminal.
Execute a Jupyter notebook in the Container
To execute a Jupyter notebook inside the container first run
NOTE: You only have to do it once to install kernelspec
.
Now execute
Running on an HPC
- 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.
How to use Neovim or VIM Editor as an IDE for R
For a detailed tutorial on how to use Neovim or VIM editor as an IDE for R please watch the video below.