# Installation 

You can install RAPIDS using Docker (the fastest), or native instructions for MacOS and Linux (Ubuntu). Windows is supported through Docker or WSL.

=== "Docker"
    
    1.  Install [Docker](https://docs.docker.com/desktop/)

    2.  Pull our RAPIDS container
        ``` bash
        docker pull moshiresearch/rapids:latest
        ```

    3.  Run RAPIDS\' container (after this step is done you should see a
        prompt in the main RAPIDS folder with its python environment active)

        ``` bash
        docker run -it moshiresearch/rapids:latest
        ```

    4.  Pull the latest version of RAPIDS

        ``` bash
        git pull
        ```
    
    5. Make RAPIDS script executable
        ```bash
        chmod +x rapids
        ```
    
    6.  Check that RAPIDS is working
        ``` bash
        ./rapids -j1
        ```
    7.  *Optional*. You can edit RAPIDS files with `vim` but we recommend using `Visual Studio Code` and its `Remote Containers` extension

        ??? info "How to configure the Remote Containers extension"
            
            - Make sure RAPIDS Docker container is running

            - Install VS Code and its [Remote - Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)

            - Click the `Remote Explorer` icon on the left-hand sidebar (the icon is a computer monitor)

            - On the top right dropdown menu, choose `Containers`

            - Right-click on the `moshiresearch/rapids` container in the `CONTAINERS` tree and select `Attach to Container`. A new VS Code window should open

            - In the new window, open the `/rapids/` folder via the `File/Open...` menu

            - Run RAPIDS inside a terminal in VS Code. Open one with the `Terminal/New Terminal` menu

    !!! warning
        If you installed RAPIDS using Docker for Windows on Windows 10, the container will have [limits](https://stackoverflow.com/questions/43460770/docker-windows-container-memory-limit) on the amount of RAM it can use. If you find that RAPIDS crashes due to running out of memory, [increase](https://stackoverflow.com/a/56583203/6030343) this limit.

=== "MacOS"
    We tested these instructions in Catalina and Big Sur

    ??? info "M1 Macs"
        RAPIDS can run on M1 Macs, the only changes as of Feb 21, 2021 are:

        - R needs to be installed via brew under Rosetta (x86 arch) due to incompatibility issues with some R libraries. To do this, run your terminal [via Rosetta](https://www.youtube.com/watch?v=nv2ylxro7rM&t=138s), then proceed with the usual brew installation command. Use x86 brew to install R and restore RAPIDS' packages (`snakemake -j1 renv_install & snakemake -j1 renv_restore`). 
        - There is a bug related to timezone codes. We set the correct `TZ_DIR` in `renv/activate.R` (line #19) `Sys.setenv("TZDIR" = file.path(R.home(), "share", "zoneinfo"))` (RAPIDS does this automatically).

    1.  Install [brew](https://brew.sh/)

    2.  Install MySQL

        ``` bash
        brew install mysql
        brew services start mysql
        ```

    3.  Install R 4.0, pandoc and rmarkdown. If you have other instances of R, we recommend uninstalling them

        ``` bash
        brew install r
        brew install pandoc
        Rscript --vanilla -e 'install.packages("rmarkdown", repos="http://cran.us.r-project.org")'
        ```

    4.  Install miniconda (restart your terminal afterwards)

        ``` bash
        brew cask install miniconda
        conda init zsh # (or conda init bash)
        ```

    5.  Clone our repo

        ``` bash
        git clone https://github.com/carissalow/rapids
        ```

    6.  Create a python virtual environment

        ``` bash
        cd rapids
        conda env create -f environment.yml -n rapids
        conda activate rapids
        ```

    7.  Install R packages and virtual environment:

        ``` bash
        snakemake -j1 renv_install
        snakemake -j1 renv_restore
           
        ```

        !!! note
            This step could take several minutes to complete, especially if you have less than 3Gb of RAM or packages need to be compiled from source. Please be patient and let it run until completion.
    
    5. Make RAPIDS script executable
        ```bash
        chmod +x rapids
        ```

    8.  Check that RAPIDS is working
        ``` bash
        ./rapids -j1
        ```

=== "Ubuntu"

    We tested RAPIDS on Ubuntu 18.04 & 20.04. Note that the necessary Python and R packages are available in other Linux distributions, so if you decide to give it a try, let us know and we can update these docs.

    1.  Install dependencies

        ``` bash
        sudo apt install libcurl4-openssl-dev
        sudo apt install libssl-dev
        sudo apt install libxml2-dev
        sudo apt install libglpk40
        ```

    2.  Install MySQL

        ``` bash
        sudo apt install libmysqlclient-dev
        sudo apt install mysql-server
        ```

    3.  Add key for R's repository.

        ``` bash
        sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
        ```

    4. Add R's repository

        === "Ubuntu 18.04 Bionic"

            ``` bash
            sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran40/'
            ```

        === "Ubuntu 20.04 Focal"

            ``` bash
            sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/'
            ```

    5. Install R 4.0. If you have other instances of R, we recommend uninstalling them

        ``` bash
        sudo apt update
        sudo apt install r-base
        ```

    6.  Install Pandoc and rmarkdown

        ``` bash
        sudo apt install pandoc
        Rscript --vanilla -e 'install.packages("rmarkdown", repos="http://cran.us.r-project.org")'
        ```

    7.  Install git

        ``` bash
        sudo apt install git
        ```

    8.  Install [miniconda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/linux.html)

    9.  Restart your current shell

    10. Clone our repo:

        ``` bash
        git clone https://github.com/carissalow/rapids
        ```

    11. Create a python virtual environment:

        ``` bash
        cd rapids
        conda env create -f environment.yml -n MY_ENV_NAME
        conda activate MY_ENV_NAME
        ```

    7.  Install the R virtual environment management package (renv)

        ``` bash
        snakemake -j1 renv_install
        ```

    8. Restore the R virtual environment

        === "Ubuntu 18.04 Bionic (fast)"

            Run the following command to restore the R virtual environment using [RSPM](https://packagemanager.rstudio.com/client/#/repos/1/overview) binaries
            ```bash
            R -e 'renv::restore(repos = c(CRAN = "https://packagemanager.rstudio.com/all/__linux__/bionic/latest"))'
            ```

        === "Ubuntu 20.04 Focal (fast)"

            Run the following command to restore the R virtual environment using [RSPM](https://packagemanager.rstudio.com/client/#/repos/1/overview) binaries
            ```bash
            R -e 'renv::restore(repos = c(CRAN = "https://packagemanager.rstudio.com/all/__linux__/focal/latest"))'
            ```
            
        === "Ubuntu (slow)"

            If the fast installation command failed for some reason, you can restore the R virtual environment from source:
            ```bash
            R -e 'renv::restore()'
            ```

        !!! note
            This step could take several minutes to complete, especially if you have less than 3Gb of RAM or packages need to be compiled from source. Please be patient and let it run until completion.

    5. Make RAPIDS script executable
        ```bash
        chmod +x rapids
        ```

    8.  Check that RAPIDS is working
        ``` bash
        ./rapids -j1
        ```
    
=== "Windows"

    There are several options varying in complexity:

    - You can use our Docker instructions (tested)
    - You can use our Ubuntu 20.04 instructions on [WSL2](https://docs.microsoft.com/en-us/windows/wsl/install-win10) (not tested but it will likely work)
    - Native installation (experimental). If you would like to contribute to RAPIDS you could try to install MySQL, miniconda, Python, and R 4.0+ in Windows and restore the Python and R virtual environments using steps 6 and 7 of the instructions for Mac. You can [get in touch](../../team) if you would like to discuss this with the team.
