Anaconda

Description

According to the page of Anaconda, Anaconda is a Python/R distribution for data science that includes over 7,500 open-source packages, in addition to a package manager and environments.

Available Versions

  • anaconda2/5.1.0

  • anaconda3/4.4.0 (default)

Basic Commands

# List environments
conda info --envs

# Create a new environment
conda create -n meu_ambiente python=3.9

# Activate environment
source activate meu_ambiente

# Install packages
conda install numpy pandas matplotlib
conda install -c bioconda samtools

# Deactivate environment
source deactivate

# Remove environment
conda env remove -n meu_ambiente

Serial Job Submission

submit_anaconda_serial.sh
#!/bin/bash
#SBATCH -J conda_serial
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 02:00:00
#SBATCH --mem=4G

export INPUT="script.py dados.csv"
export OUTPUT="resultados/"

module load miniconda/25.x
source activate meu_ambiente

job-nanny python script.py dados.csv

OpenMP Job Submission

submit_anaconda_omp.sh
#!/bin/bash
#SBATCH -J conda_omp
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 04:00:00
#SBATCH --mem=16G

export INPUT="script_omp.py dados/"
export OUTPUT="resultados_omp/"

module load miniconda/25.x
source activate meu_ambiente

# For programs using multiprocessing
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK

job-nanny python script_omp.py

MPI Job Submission

submit_anaconda_mpi.sh
#!/bin/bash
#SBATCH -J conda_mpi
#SBATCH -N 2
#SBATCH --ntasks-per-node=28
#SBATCH -t 12:00:00
#SBATCH --mem-per-cpu=2G

export INPUT="script_mpi.py dados/"
export OUTPUT="resultados_mpi/"

module load miniconda/25.x
module load openmpi/4.1.5
source activate my_environment

job-nanny mpirun -n 56 python script_mpi.py

Example Python Script with MPI

script_mpi.py
from mpi4py import MPI
import numpy as np

comm = MPI.COMM_WORLD
rank = comm.Get_rank()
size = comm.Get_size()

print(f"Processo {rank} de {size}")

# Distribute work among processes
data = None
if rank == 0:
    data = np.arange(1000)
else:
    data = np.zeros(1000)

comm.Bcast(data, root=0)
print(f"Processo {rank} recebeu dados")

MPI.Finalize()

Creating an Environment with Specific Packages

# Create environment with specific version
conda create -n bioinfo python=3.8
source activate bioinfo
conda install -c bioconda samtools bcftools bedtools
conda install -c conda-forge pandas numpy matplotlib

# Save list of packages
conda list --export > environment.txt

# Recreate environment from list
conda create -n novo_ambiente --file environment.txt

Using in Submission Scripts

submit_com_ambiente.sh
#!/bin/bash
#SBATCH -J environment
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 02:00:00

export INPUT="data.fastq"
export OUTPUT="results/"

module load miniconda/25.x
source activate bioinfo

job-nanny samtools view -bS dados.sam > dados.bam

References

See also