--- title: "Manual Virtual Environment Setup Tutorial" date: "`r format(Sys.Date(), '%Y-%m-%d')`" output: rmarkdown::html_vignette: toc: true toc_depth: 3 fig_width: 7 fig_height: 5 dpi: 600 vignette: > %\VignetteIndexEntry{Manual Virtual Environment Setup Tutorial} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include=FALSE} knitr::opts_chunk$set( echo = TRUE, warning = FALSE, error = FALSE, fig.width = 7, fig.height = 5, dpi = 600, collapse = TRUE, comment = "#>" ) ``` If the `create_cissvae_env()` helper function fails or you prefer to set up your environment manually, you can create a Python virtual environment using either R (via reticulate) or the command line. ### Prerequisites Before starting, ensure you have: - Python 3.10 or 3.11 installed on your system - R with the `reticulate` package installed ```{r eval=FALSE} install.packages("reticulate") ``` You can check your Python version by running the following from your terminal: ```bash python --version # or python3 --version ``` --- ## Method 1: Creating Virtual Environment with R (reticulate) ### Step 1: Install reticulate (if not already installed) ```{r eval=FALSE} install.packages("reticulate") library(reticulate) ``` ### Step 2: Check available Python versions ```{r eval=FALSE} # Find Python installations on your system reticulate::py_discover_config() # Or check for a specific version reticulate::virtualenv_starter("3.10") ``` #### Installing Python via reticulate (if needed) If no suitable Python version is found, you can install Python directly through reticulate: ```{r eval=FALSE} # Install Python 3.10 (recommended) reticulate::install_python(version = "3.10") # Or install Python 3.11 reticulate::install_python(version = "3.11") # Check available versions after installation reticulate::py_versions() # Verify the installation worked reticulate::virtualenv_starter("3.10") ``` **Note:** `reticulate::install_python()` will: - Download and install a standalone Python version managed by reticulate - Install it to a location that doesn't interfere with system Python - Work across Windows, macOS, and Linux - Automatically configure the PATH for reticulate to find it If the installation fails or you prefer more control, you can also install Python manually: - **Windows**: Download from [python.org](https://www.python.org/downloads/windows/) and check "Add Python to PATH" - **macOS**: Use Homebrew (`brew install python@3.10`) or download from python.org - **Linux**: Use your package manager (`sudo apt install python3.10` on Ubuntu) After manual installation, restart R and rerun `reticulate::py_discover_config()` to verify reticulate can find the new Python installation. ### Step 3: Create the virtual environment Once you've identified the python installation you want to use, you can use the reticulate package to create your virtual environment either in the default location (`~/.virtualenvs/`) or in a directory of your choice. ```{r eval=FALSE} # Create virtual environment in default location (~/.virtualenvs/) reticulate::virtualenv_create( envname = "cissvae_env", python = NULL, # Use system default Python packages = c("pip", "setuptools", "wheel") ) # Alternative: Create in a specific directory reticulate::virtualenv_create( envname = "./my_venvs/cissvae_env", # Relative path python = "/usr/bin/python3.10", # Specific Python version packages = c("pip", "setuptools", "wheel") ) ``` ### Step 4: Activate the environment In order to use your virtual environment, you have to tell reticulate to activate and use it with the command below. You will repeat this command in each new R session that you want to use the virtual environment in. ```{r eval=FALSE} # Activate environment (default location) reticulate::use_virtualenv("cissvae_env", required = TRUE) # Or activate from specific path reticulate::use_virtualenv("./my_venvs/cissvae_env", required = TRUE) ``` ### Step 5: Install required packages Before using the virtual environment for the first time, install the necessary dependencies and the `ciss-vae` python package to the environment. This only needs to be done once per environment (unless you want to update the packages later). ```{r eval=FALSE} # Install core dependencies first reticulate::virtualenv_install( envname = "cissvae_env", packages = c( "numpy", "pandas", "torch", "scikit-learn", "optuna", "rich", "matplotlib", "leiden-alg", "python-igraph" ) ) # Install CISS-VAE from PyPI reticulate::virtualenv_install( envname = "cissvae_env", packages = "ciss-vae" ) ``` ### Step 6: Verify installation After installing the packages, you can use the following commands to make sure the ciss_vae package installed correctly. ```{r eval=FALSE} # Check if CISS-VAE installed correctly reticulate::py_run_string("import ciss_vae; print('CISS-VAE version:', ciss_vae.__version__)") # List all installed packages reticulate::virtualenv_install(envname = "cissvae_env", packages = character(0)) ``` --- ## Method 2: Creating Virtual Environment from Command Line ### Step 1: Open terminal/command prompt Navigate to your desired directory: ```bash cd /path/to/your/project ``` ### Step 2: Create virtual environment Please note, python must be installed for this to work. ```bash # Using venv (Python 3.3+) python -m venv cissvae_env # Or using python3 explicitly python3 -m venv cissvae_env # For specific Python version python3.10 -m venv cissvae_env ``` ### Step 3: Activate the environment **On Windows:** On Windows OS, the command to activate the environment differs based on the terminal you are using. ```bash # Command Prompt cissvae_env\Scripts\activate # PowerShell cissvae_env\Scripts\Activate.ps1 # Git Bash source cissvae_env/Scripts/activate ``` **On macOS/Linux:** ```bash source cissvae_env/bin/activate ``` You should see `(cissvae_env)` at the beginning of your prompt when activated. ### Step 4: Upgrade pip and install packages ```bash # Upgrade pip first (optional) pip install --upgrade pip setuptools wheel # Install core scientific packages pip install numpy pandas matplotlib scikit-learn # Install machine learning frameworks pip install torch optuna rich hdbscan # Install CISS-VAE pip install ciss-vae ``` ### Step 5: Verify installation ```bash # Check Python version in environment python --version # List installed packages pip list # Test CISS-VAE import python -c "import ciss_vae; print('CISS-VAE installed successfully!')" ``` ### Step 6: Connect R to your environment After creating the environment via command line, tell R where to find it: ```{r eval=FALSE} library(reticulate) # Point to your manually created environment reticulate::use_virtualenv("/path/to/your/project/cissvae_env", required = TRUE) # On Windows, the path might look like: # reticulate::use_virtualenv("C:/Users/YourName/project/cissvae_env", required = TRUE) # Verify connection reticulate::py_config() ``` --- ## Alternative: Using Conda Environment If you prefer conda over venv: ### Command Line Approach: ```bash # Create conda environment conda create -n cissvae_env python=3.10 # Activate environment conda activate cissvae_env # Install packages conda install numpy pandas matplotlib scikit-learn pip install torch optuna rich hdbscan ciss-vae ``` ### R Approach: ```{r eval=FALSE} # Create conda environment from R reticulate::conda_create( envname = "cissvae_env", python_version = "3.10", packages = c("numpy", "pandas", "matplotlib", "scikit-learn") ) # Activate and install additional packages reticulate::use_condaenv("cissvae_env", required = TRUE) reticulate::conda_install("cissvae_env", c("torch", "optuna", "rich", "hdbscan", "ciss-vae")) ``` --- ## Troubleshooting Common Issues ### Issue 1: "Python not found" **Solution:** Ensure Python is in your system PATH, or specify the full path: ```{r eval=FALSE} reticulate::virtualenv_create( envname = "cissvae_env", python = "/usr/local/bin/python3.10" # Full path to Python ) ``` ### Issue 2: "Permission denied" errors **Solution:** - On Windows: Run R/RStudio as Administrator - On macOS/Linux: Check directory permissions or use a different location ### Issue 3: Package installation fails **Solution:** Install packages one by one to identify the problematic package: ```{r eval=FALSE} packages <- c("numpy", "pandas", "torch", "ciss-vae") for (pkg in packages) { cat("Installing", pkg, "...\n") reticulate::virtualenv_install("cissvae_env", pkg) } ``` ### Issue 4: CISS-VAE import fails in R **Solution:** Verify the environment is properly activated: ```{r eval=FALSE} # Check Python configuration reticulate::py_config() # Test import manually reticulate::py_run_string(" try: import ciss_vae print('Success: ciss_vae imported') print('Version:', ciss_vae.__version__) except ImportError as e: print('Error importing ciss_vae:', e) ") ``` ### Issue 5: Environment not persisting between R sessions **Solution:** Always activate your environment at the start of each R session: ```{r eval=FALSE} # Add this to the top of your R scripts library(reticulate) reticulate::use_virtualenv("cissvae_env", required = TRUE) # Or add to your .Rprofile for automatic loading cat('reticulate::use_virtualenv("cissvae_env", required = TRUE)\n', file = "~/.Rprofile", append = TRUE) ```