#################################################################
# Dockerfile
#
# Software:         BioWardrobe PCA script
# Software Version: v0.0.9
# Description:      Dockerized version of PCA script from BioWardrobe
# Website:          https://github.com/Barski-lab/workflows
# Provides:         PCA script from BioWardrobe
# Base Image:       r-base:4.0.4
# Build Cmd:        docker build --rm -t biowardrobe2/pca:v0.0.9 -f pca-Dockerfile .
# Pull Cmd:         docker pull biowardrobe2/pca:v0.0.9
# Run Cmd:          docker run --rm -ti biowardrobe2/pca:v0.0.9
#################################################################
# Argparse, jsonlite, scatterplot3d and FindPython are set to the
# specific versions to garantee that they will work on R 3.2.3-4
# inherited from the base image.
#
# v0.0.9
# - Use r-base:4.0.4
# - Reports loadings, PDF, no 3d plot in PNG anymore
#
# v0.0.8
# - add ggrepel package for proper label visualization
#
# v0.0.7
# - switch to r-base:4.0.2 as base image
# - update run_pca.R script to use ggplot and plotly
#
# v0.0.6
# Updated run_pca.R script
# - use genelist file to limit input genes
#
# v0.0.5
# Updated run_pca.R script
# - increased marker size
#
# v0.0.4
# Updated run_pca.R script
# - use default value for --combine RefseqId, GeneId, Chrom, TxStart, TxEnd, Strand
#   if not provided
#
# v0.0.3
# Updated run_pca.R script
# - if --name was not provided, set it from --input basenames
#
# v0.0.2
# Updated run_pca.R script
# - to produce images with 800x800 size
# - to save TSV file with the name for the first column
#################################################################


### Base Image
FROM r-base:4.0.4
LABEL maintainer="misha.kotliar@gmail.com"
ENV DEBIAN_FRONTEND noninteractive


################## BEGIN INSTALLATION ######################

WORKDIR /tmp

COPY ./scripts/run_pca.R /usr/local/bin/run_pca.R

### Installing dependencies
RUN apt-get update && \
    apt-get install libgcc-10-dev python3-dev python3-pip libxml2-dev libcurl4-openssl-dev libssl-dev pandoc -y && \
### Installing dependencies
    R -e 'install.packages("argparse", repo = "https://cloud.r-project.org/")' && \
    R -e 'install.packages("scatterplot3d", repo = "https://cloud.r-project.org/")' && \
    R -e 'install.packages("ggplot2", repo = "https://cloud.r-project.org/")' && \
    R -e 'install.packages("plotly", repo = "https://cloud.r-project.org/")' && \
    R -e 'install.packages("htmlwidgets", repo = "https://cloud.r-project.org/")' && \
    R -e 'install.packages("ggrepel", repo = "https://cloud.r-project.org/")' && \
### Installing run_pca.R R script
    chmod +x /usr/local/bin/run_pca.R && \
### Cleaning
    apt-get clean && \
    apt-get purge && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* && \
    strip /usr/local/bin/*; true
