This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
howto:bioinformatics [2021/06/28 11:40] ischeepers |
howto:bioinformatics [2025/05/21 10:50] (current) nmfuphi [Singularity] |
||
|---|---|---|---|
| Line 84: | Line 84: | ||
| #PBS -q serial | #PBS -q serial | ||
| #PBS -P SHORTNAME | #PBS -P SHORTNAME | ||
| - | #PBS -o /mnt/lustre3p/ | + | #PBS -o /mnt/lustre/ |
| - | #PBS -e /mnt/lustre3p/ | + | #PBS -e /mnt/lustre/ |
| #PBS -N TophatEcoli | #PBS -N TophatEcoli | ||
| #PBS -M myemailaddress@someplace.com | #PBS -M myemailaddress@someplace.com | ||
| Line 148: | Line 148: | ||
| Checkpoint = u | Checkpoint = u | ||
| ctime = Mon Oct 10 06:57:13 2016 | ctime = Mon Oct 10 06:57:13 2016 | ||
| - | Error_Path = login2.cm.cluster:/ | + | Error_Path = login2.cm.cluster:/ |
| exec_host = cnode0962/ | exec_host = cnode0962/ | ||
| exec_vnode = (cnode0962: | exec_vnode = (cnode0962: | ||
| Line 156: | Line 156: | ||
| Mail_Points = a | Mail_Points = a | ||
| mtime = Mon Oct 10 06:57:15 2016 | mtime = Mon Oct 10 06:57:15 2016 | ||
| - | Output_Path = login2.cm.cluster:/ | + | Output_Path = login2.cm.cluster:/ |
| Priority = 0 | Priority = 0 | ||
| qtime = Mon Oct 10 06:57:13 2016 | qtime = Mon Oct 10 06:57:13 2016 | ||
| Line 193: | Line 193: | ||
| username@login01: | username@login01: | ||
| </ | </ | ||
| + | |||
| + | ===== Software Environments ===== | ||
| + | |||
| + | ==== Conda ==== | ||
| + | Many scientific software tools rely on specific versions of libraries, compilers, and dependencies that often conflict with each other or with system-wide installations. **Conda** is a powerful, language-agnostic environment and package manager that helps solve this problem by allowing users to manage **Python**, **R**, **C/C++**, **FORTRAN**, | ||
| + | |||
| + | === Shared Conda Environments === | ||
| + | |||
| + | For most use cases, especially in bioinformatics, | ||
| + | |||
| + | '/ | ||
| + | |||
| + | These environments are curated by CHPC staff to include commonly used tools in genomics, transcriptomics, | ||
| + | |||
| + | === Step-by-step usage === | ||
| + | |||
| + | === Step 1: Load required modules === | ||
| + | To access Conda functionality, | ||
| + | <code bash> | ||
| + | module load chpc/ | ||
| + | module load conda_init | ||
| + | </ | ||
| + | |||
| + | The second module updates your .bashrc file by adding necessary shell variables. | ||
| + | To apply these changes, you can either log out and log back in, or run: <code bash> | ||
| + | After this setup, you won’t need to load additional modules for your jobs—only the eval and conda activate steps are required. | ||
| + | |||
| + | === Step 2: Initialize Conda in your shell === | ||
| + | Activate Conda shell integration: | ||
| + | <code bash> | ||
| + | eval " | ||
| + | </ | ||
| + | |||
| + | This command sets up your shell environment to recognize Conda commands like `conda activate`. | ||
| + | |||
| + | === Step 3: List available environments === | ||
| + | <code bash> | ||
| + | conda info --envs | ||
| + | </ | ||
| + | |||
| + | This will display all available shared Conda environments and their paths. | ||
| + | |||
| + | === Step 4: Activate a shared environment === | ||
| + | <code bash> | ||
| + | conda activate nameOfTheEnv | ||
| + | </ | ||
| + | |||
| + | Replace '' | ||
| + | |||
| + | > **Tip:** If you're unsure which environment to use, contact CHPC support or explore the environment' | ||
| + | |||
| + | > **Note:** You do **not** need to install anything when using shared environments. | ||
| + | |||
| + | === Creating Private Conda Environments === | ||
| + | |||
| + | If you need software that is not included in the shared environments, | ||
| + | |||
| + | > **Important: | ||
| + | |||
| + | === Step-by-step setup === | ||
| + | ssh to username@scp.chpc.ac.za, | ||
| + | === Step 1: Load Conda === | ||
| + | <code bash> | ||
| + | module load chpc/ | ||
| + | module load conda_init | ||
| + | eval " | ||
| + | </ | ||
| + | |||
| + | === Step 2: Create a new environment === | ||
| + | <code bash> | ||
| + | conda create --prefix / | ||
| + | </ | ||
| + | |||
| + | This will create a Conda environment at the specified path with Python 3.10 installed. You can replace the Python version or leave it out if not needed. | ||
| + | |||
| + | === Step 3: Activate your environment === | ||
| + | <code bash> | ||
| + | conda activate / | ||
| + | </ | ||
| + | |||
| + | After activation, you can install any packages you need. | ||
| + | |||
| + | === Step 4: (Optional) Install Mamba for faster package management === | ||
| + | <code bash> | ||
| + | conda install mamba -n base -c conda-forge | ||
| + | </ | ||
| + | |||
| + | > **Tip:** Mamba is a drop-in replacement for Conda that uses a faster dependency solver written in C++. Once installed, you can use `mamba` instead of `conda` for installing packages: | ||
| + | <code bash> | ||
| + | mamba install numpy pandas | ||
| + | </ | ||
| + | |||
| + | This significantly speeds up installations and environment solves, especially when working with large scientific packages. | ||
| + | |||
| + | |||
| + | === Step 5: Install packages === | ||
| + | <code bash> | ||
| + | conda install numpy pandas matplotlib | ||
| + | </ | ||
| + | |||
| + | You can install packages one by one, or include them during environment creation: | ||
| + | <code bash> | ||
| + | conda create --prefix / | ||
| + | </ | ||
| + | |||
| + | === Step 6: Remove unused environments === | ||
| + | Old or unused environments can be removed to free up space: | ||
| + | <code bash> | ||
| + | conda remove --prefix / | ||
| + | </ | ||
| + | |||
| + | === Best Practices === | ||
| + | * ✅ Use **shared environments** whenever possible for consistency and faster setup. | ||
| + | * 📁 Create private environments **only in Lustre** directories, | ||
| + | * ⚠️ Do **not** use Conda in your '' | ||
| + | * 📌 Use the '' | ||
| + | * 🧼 Periodically clean up unused environments with `conda remove --all`. | ||
| + | * 🔁 Reuse environment definitions by exporting and sharing them with others or for reproducibility. | ||
| + | |||
| + | === Troubleshooting === | ||
| + | * ❓ **Conda not recognized? | ||
| + | * 🚫 **Permission denied?** You might be trying to write to a restricted directory like ''/ | ||
| + | * 🔄 **Environment behaving unexpectedly? | ||
| + | * 🧪 **Conflicts during install?** Use `conda clean --all` to clear caches and retry with a minimal environment. | ||
| + | |||
| + | ==== Singularity ==== | ||
| + | |||
| + | Singularity is an open-source, | ||
| + | |||
| + | |||
| + | === Location of Bioinformatics Singularity Images at CHPC === | ||
| + | |||
| + | Singularity images for commonly used bioinformatics tools are stored in the following directories: | ||
| + | |||
| + | < | ||
| + | / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | To view the available .sif images, run the following script: | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | dirs=("/ | ||
| + | |||
| + | # Loop through and search for .sif files only in immediate subdirectories | ||
| + | for dir in " | ||
| + | if [ -d " | ||
| + | echo " | ||
| + | find " | ||
| + | else | ||
| + | echo " | ||
| + | fi | ||
| + | done | ||
| + | </ | ||
| + | |||
| + | === Pulling a Singularity Image === | ||
| + | |||
| + | Before pulling a new image, run the script above to check if it’s not already available. Only proceed with pulling the image yourself if you’re confident in what you’re doing and plan to remove it afterwards. | ||
| + | |||
| + | ⚠️ **Important**: | ||
| + | |||
| + | |||
| + | **To pull Singularity images from public container registries (like DockerHub), follow these steps:** | ||
| + | |||
| + | SSH into the CHPC Globus node: | ||
| + | |||
| + | <code bash> | ||
| + | ssh username@globus.chpc.ac.za | ||
| + | </ | ||
| + | |||
| + | Load the Singularity module: | ||
| + | |||
| + | <code bash> | ||
| + | module load chpc/ | ||
| + | </ | ||
| + | |||
| + | Navigate to your desired working directory: | ||
| + | |||
| + | <code bash> | ||
| + | cd / | ||
| + | </ | ||
| + | |||
| + | Pull the image from DockerHub (or another registry): | ||
| + | |||
| + | <code bash> | ||
| + | singularity pull docker:// | ||
| + | </ | ||
| + | |||
| + | This downloads and converts the image into a local .sif file saved in your current directory. | ||
| + | |||
| + | ===Running Singularity=== | ||
| + | |||
| + | <code bash> | ||
| + | singularity exec / | ||
| + | </ | ||
| + | |||
| + | === Running Singularity with External Databases === | ||
| + | |||
| + | Most bioinformatics containers don’t include large reference datasets. Instead, bind external directories at runtime. | ||
| + | |||
| + | CHPC provides bioinformatics databases at: | ||
| + | |||
| + | < | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | These include reference genomes, annotation and index files used by BWA, BLAST, Kraken2, etc. | ||
| + | |||
| + | ** How to Bind a Database Directory ** | ||
| + | |||
| + | Use the --bind (or -B) option: | ||
| + | |||
| + | <code bash> | ||
| + | singularity exec --bind / | ||
| + | </ | ||
| + | |||
| + | **Explanation**: | ||
| + | |||
| + | / | ||
| + | |||
| + | / | ||
| + | |||
| + | < | ||
| + | |||
| + | Inside the container, always refer to the database as /databases unless specified otherwise on the manual. | ||
| + | |||
| + | == Binding Multiple Directories == | ||
| + | |||
| + | Use a comma-separated list: | ||
| + | |||
| + | <code bash> | ||
| + | singularity exec --bind / | ||
| + | </ | ||
| + | |||
| + | This binds: | ||
| + | |||
| + | - / | ||
| + | - / | ||
| + | |||
| + | Use those paths in your tools or pipelines. | ||
| + | |||
| + | **Best Practices** | ||
| + | |||
| + | 1. Use absolute paths for bindings. | ||
| + | |||
| + | 2. Keep host/ | ||
| + | |||
| + | 3. Clean up containers and intermediate data regularly. | ||
| + | |||
| + | To clean up: | ||
| + | |||
| + | <code bash> | ||
| + | rm / | ||
| + | rm -rf / | ||
| + | </ | ||
| + | |||
| + | **Clean the Singularity cache periodically: | ||
| + | |||
| + | <code bash> | ||
| + | singularity cache clean | ||
| + | </ | ||
| + | |||
| + | === PBS Template for Running a Singularity Container === | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | #PBS -N singularity_job | ||
| + | #PBS -q normal | ||
| + | #PBS -l select=1: | ||
| + | #PBS -l walltime=12: | ||
| + | #PBS -o singularity_output.log | ||
| + | #PBS -e singularity_error.log | ||
| + | #PBS -M your.email@domain.com | ||
| + | #PBS -m abe | ||
| + | |||
| + | # Load necessary modules | ||
| + | module load chpc/ | ||
| + | |||
| + | # Change to your working directory | ||
| + | cd $PBS_O_WORKDIR | ||
| + | |||
| + | # Run your command inside the container | ||
| + | singularity exec --bind / | ||
| + | </ | ||
| + | |||
| + | ==== Nextflow ==== | ||
| + | |||
| + | Nextflow is a free and open-source workflow management system that enables the development and execution of data analysis pipelines. It simplifies complex computational workflows and ensures reproducibility, | ||
| + | [[https:// | ||
| + | |||
| + | === Running Nextflow on the CHPC Cluster === | ||
| + | |||
| + | CHPC supports Nextflow workflows through Singularity containers. Since compute nodes have no internet access, all dependencies must be downloaded in advance on the login node. | ||
| + | |||
| + | === 1. Connect to the Login Node === | ||
| + | |||
| + | Log into the CHPC login node using your Lengau credentials: | ||
| + | |||
| + | <code bash> ssh username@scp.chpc.ac.za </ | ||
| + | |||
| + | Use this session to prepare your workflow and submit jobs. | ||
| + | |||
| + | === 2. Load the Nextflow Module === | ||
| + | |||
| + | Load the necessary environment modules: | ||
| + | |||
| + | <code bash> | ||
| + | module load chpc/ | ||
| + | </ | ||
| + | |||
| + | Note: Modules must be reloaded in every new session unless added to your ~/.bashrc. | ||
| + | |||
| + | === 3. Pull Workflow and Dependencies === | ||
| + | |||
| + | Pull your workflow and dependencies on the login1 node: | ||
| + | |||
| + | Pull the workflow: | ||
| + | <code bash> nextflow pull nf-core/ | ||
| + | |||
| + | Run a test execution: | ||
| + | <code bash> nextflow run nf-core/ | ||
| + | |||
| + | This will: | ||
| + | |||
| + | Cache the workflow in ~/ | ||
| + | |||
| + | Download containers (if configured) | ||
| + | |||
| + | Retrieve auxiliary files and dependencies | ||
| + | |||
| + | === Cached Files and Workflow Structure === | ||
| + | |||
| + | Workflow code is stored in: | ||
| + | < | ||
| + | |||
| + | Container images are stored in: | ||
| + | < | ||
| + | |||
| + | **🗂 Finding the nextflow.config File** | ||
| + | |||
| + | After pulling a workflow, you’ll typically find the nextflow.config file in its root directory. | ||
| + | |||
| + | Example: | ||
| + | <code bash> | ||
| + | cd ~/ | ||
| + | ls | ||
| + | </ | ||
| + | |||
| + | Look for: | ||
| + | < | ||
| + | If missing, config files may reside in the conf/ directory or be fetched remotely. You can always override settings by creating your own nextflow.config. | ||
| + | |||
| + | 🚫 No Manual PBS Scripts Needed | ||
| + | Nextflow automatically generates and submits PBS scripts. You only define resources in nextflow.config. | ||
| + | |||
| + | === ⚙️ Configuration with nextflow.config === | ||
| + | |||
| + | == 🔧 1. Global Resource Settings == | ||
| + | |||
| + | Set default resource usage for all workflow processes: | ||
| + | |||
| + | <code nextflow> | ||
| + | executor = ' | ||
| + | |||
| + | withLabel: big_job { | ||
| + | queue = ' | ||
| + | cpus = 24 | ||
| + | memory = '120 GB' | ||
| + | time = ' | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | == 🏷️ 2. Custom Resource Labels == | ||
| + | |||
| + | Customize resources for specific process groups using labels: | ||
| + | |||
| + | <code nextflow> | ||
| + | process { | ||
| + | executor = ' | ||
| + | |||
| + | withLabel: big_job { | ||
| + | cpus = 16 | ||
| + | memory = '64 GB' | ||
| + | time = ' | ||
| + | queue = ' | ||
| + | } | ||
| + | |||
| + | withLabel: short_job { | ||
| + | cpus = 1 | ||
| + | memory = '1 GB' | ||
| + | time = ' | ||
| + | queue = ' | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | Use the label in your pipeline: | ||
| + | <code nextflow> | ||
| + | process bigTask { | ||
| + | label ' | ||
| + | ... | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | == 📦 3. Singularity Integration == | ||
| + | |||
| + | Enable Singularity support: | ||
| + | |||
| + | <code nextflow> | ||
| + | singularity.autoMounts = true </ | ||
| + | |||
| + | Specify containers: | ||
| + | |||
| + | From Docker Hub: | ||
| + | <code nextflow> | ||
| + | process.container = ' | ||
| + | </ | ||
| + | From local image: | ||
| + | <code nextflow> | ||
| + | process.container = '/ | ||
| + | </ | ||
| + | |||
| + | Set cache directory to avoid re-downloads: | ||
| + | |||
| + | <code nextflow> | ||
| + | == 🖥️ 4. PBS Executor Settings == | ||
| + | |||
| + | Customize PBS job submission: | ||
| + | |||
| + | |||
| + | <code nextflow> | ||
| + | executor { | ||
| + | name = ' | ||
| + | queueSize = 20 | ||
| + | submitOptions = '-V -m abe -M your@email.com' | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | == 📂 5. Using Profiles == | ||
| + | |||
| + | Profiles let you switch configurations easily: | ||
| + | |||
| + | <code nextflow> | ||
| + | standard { | ||
| + | process.executor = ' | ||
| + | process.queue = ' | ||
| + | } | ||
| + | |||
| + | local { | ||
| + | process.executor = ' | ||
| + | docker.enabled = false | ||
| + | } | ||
| + | |||
| + | cluster_singularity { | ||
| + | process.executor = ' | ||
| + | singularity.enabled = true | ||
| + | process.container = ' | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | Run a profile: | ||
| + | |||
| + | <code bash> nextflow run main.nf -profile cluster_singularity </ | ||
| + | |||
| + | == 🚫 Offline Mode == | ||
| + | |||
| + | Run jobs on compute nodes without internet access: | ||
| + | |||
| + | <code bash> nextflow run ~/ | ||
| + | -profile singularity -offline </ | ||
| + | ⚠️ Always include -offline on compute nodes to prevent online fetching. | ||
| + | |||
| + | === 🧭 Debugging and Logs === | ||
| + | |||
| + | Each Nextflow process generates a unique work directory (work/ | ||
| + | |||
| + | .command.run — generated PBS job script | ||
| + | |||
| + | .command.sh — wrapped shell script | ||
| + | |||
| + | .command.log — job output | ||
| + | |||
| + | .exitcode — exit status | ||
| + | |||
| + | To inspect a failed job: | ||
| + | |||
| + | <code bash> cd work/ | ||
| + | less .command.log </ | ||
| + | |||
| + | === ✅ Summary === | ||
| + | |||
| + | nextflow.config centralizes all pipeline settings. | ||
| + | |||
| + | No need to write PBS scripts manually. | ||
| + | |||
| + | Resources, container usage, and submission options are all configurable. | ||
| + | |||
| + | Profiles improve portability and reproducibility. | ||
| + | |||
| + | Offline mode is essential for CHPC compute node compatibility. | ||
| + | |||
| + | 🧠 Tip: For workflows requiring reference data, bind directories just like with containers: | ||
| + | |||
| + | <code bash> nextflow run / | ||
| + | --input / | ||
| + | --genomeDir / | ||
| + | </ | ||
| + | |||
| + | 🧹 Clean Up: | ||
| + | Nextflow stores all its cache files in your home directory, so it's important to clean up these files once you're finished using a workflow to avoid running out of space. | ||
| + | <code bash> | ||
| + | rm -rf ~/ | ||
| + | rm -rf ~/ | ||
| + | rm -rf ~/ | ||
| + | </ | ||
| + | |||
| + | === Need Help? === | ||
| + | If you encounter issues or need a specific tool installed contact the CHPC support team at: | ||
| + | * 📧 help@chpc.ac.za | ||
| + | * https:// | ||
| + | Include your job script and all errors encountered. | ||
| ===== Basic examples ===== | ===== Basic examples ===== | ||
| Line 207: | Line 730: | ||
| #!/bin/bash | #!/bin/bash | ||
| - | WORKDIR="/ | + | WORKDIR="/ |
| INPUT_FASTA=${WORKDIR}/ | INPUT_FASTA=${WORKDIR}/ | ||
| BLAST_E_VAL=" | BLAST_E_VAL=" | ||
| Line 281: | Line 804: | ||
| - The use of job dependencies. We see it in the second //heredoc// in the line "//# | - The use of job dependencies. We see it in the second //heredoc// in the line "//# | ||
| - | ==== Gromacs ==== | ||
| - | |||
| - | If you would like to try running gromacs on the gpu please take a look at [[howto: | ||
| - | |||
| - | The job script that follows is for running an MPI compiled version of gromacs 4.6.1 on nehalem. There are many different versions of gromacs, to see what's available try:< | ||
| - | |||
| - | The following example is for working with one of the " | ||
| - | |||
| - | === Job script === | ||
| - | <file bash gromacs_nehalem.qsub> | ||
| - | #!/bin/bash | ||
| - | #PBS -l select=10: | ||
| - | #PBS -l walltime=00: | ||
| - | #PBS -q workq | ||
| - | #PBS -M user@someinstitution.ac.za | ||
| - | #PBS -m be | ||
| - | #PBS -V | ||
| - | #PBS -e ~/ | ||
| - | #PBS -o ~/ | ||
| - | #PBS -N GROMACS_JOB | ||
| - | #PBS -mb | ||
| - | |||
| - | MODULEPATH=/ | ||
| - | source / | ||
| - | |||
| - | ####### | ||
| - | module add gromacs/ | ||
| - | |||
| - | OMP_NUM_THREADS=1 | ||
| - | |||
| - | NP=`cat ${PBS_NODEFILE} | wc -l` | ||
| - | |||
| - | EXE=" | ||
| - | ARGS=" | ||
| - | |||
| - | cd / | ||
| - | mpirun -np ${NP} -machinefile ${PBS_NODEFILE} ${EXE} ${ARGS} | ||
| - | </ | ||
| - | |||
| - | === Submit your job === | ||
| - | Finally submit your job using:< | ||
| ==== bowtie ==== | ==== bowtie ==== | ||
| Line 327: | Line 809: | ||
| === Job script === | === Job script === | ||
| - | Then your job script called //gromacs_nehalem.qsub// will look something like this: | + | Then your job script called //bowtie_script.qsub// will look something like this: |
| <file bash bowtie_script.qsub> | <file bash bowtie_script.qsub> | ||
| #! /bin/bash | #! /bin/bash | ||
| - | #PBS -l select=1: | + | #PBS -l select=1: |
| #PBS -l place=excl | #PBS -l place=excl | ||
| #PBS -l walltime=06: | #PBS -l walltime=06: | ||
| #PBS -q workq | #PBS -q workq | ||
| - | #PBS -o / | + | #PBS -o / |
| - | #PBS -e / | + | #PBS -e / |
| #PBS -M youremail@address.com | #PBS -M youremail@address.com | ||
| #PBS -m be | #PBS -m be | ||
| Line 376: | Line 858: | ||
| #PBS -l walltime=00: | #PBS -l walltime=00: | ||
| #PBS -q workq | #PBS -q workq | ||
| - | #PBS -o / | + | #PBS -o / |
| - | #PBS -e / | + | #PBS -e / |
| #PBS -m ae | #PBS -m ae | ||
| #PBS -M youremail@address.com | #PBS -M youremail@address.com | ||
| Line 393: | Line 875: | ||
| === Submit your job === | === Submit your job === | ||
| Finally submit your job using:< | Finally submit your job using:< | ||
| - | |||
| - | ==== bowtie ==== | ||
| - | |||
| - | Things to note about this script -- bowtie currently does not run across multiple nodes. So using anything other than // | ||
| - | |||
| - | === Job script === | ||
| - | Then your job script called // | ||
| - | <file bash bowtie_script.qsub> | ||
| - | #! /bin/bash | ||
| - | #PBS -l select=1: | ||
| - | #PBS -l place=excl | ||
| - | #PBS -l walltime=06: | ||
| - | #PBS -q workq | ||
| - | #PBS -o ~/ | ||
| - | #PBS -e ~/ | ||
| - | #PBS -M youremail@address.com | ||
| - | #PBS -m be | ||
| - | #PBS -N bowtiejob | ||
| - | |||
| - | ################## | ||
| - | MODULEPATH=/ | ||
| - | source / | ||
| - | |||
| - | ####### | ||
| - | module add bowtie2/ | ||
| - | |||
| - | NP=`cat ${PBS_NODEFILE} | wc -l` | ||
| - | |||
| - | EXE=" | ||
| - | |||
| - | forward_reads=" | ||
| - | reverse_reads=" | ||
| - | output_file=" | ||
| - | ARGS=" | ||
| - | |||
| - | cd / | ||
| - | ${EXE} ${ARGS} | ||
| - | </ | ||
| - | Note: username should contain your actual user name! | ||
| - | |||
| - | === Submit your job === | ||
| - | Finally submit your job using:< | ||
| ==== R/ | ==== R/ | ||
| - | There is an example here on how one might use R at the chp | + | There is an example here on how one might use R on Lengau |
| http:// | http:// | ||
| Line 459: | Line 899: | ||
| ===== Databases ===== | ===== Databases ===== | ||
| - | Databases are accessible on the cluster in the <code bash>/ | + | Databases are accessible on the cluster in the |
| ===== Support ===== | ===== Support ===== | ||
| - | Please [[http://www.chpc.ac.za/ | + | Please [[https://users.chpc.ac.za/ |