This repository contains scripts to help migrate from the old HPC cluster to the new HIVE cluster.
- Getting Started
- HIVE vs Cacao Comparison
- File Structure
- Important Notes
- Troubleshooting
- Example Scripts
- Cluster Transition Tools (Legacy)
- Contributing
Before getting started, it's important to understand the difference between .bashrc and .bash_profile:
.bash_profile:
- Sourced for login shells (when you SSH into a server)
- Runs once when you first log in
- Best for setting up environment variables, PATH, and one-time setup
.bashrc:
- Sourced for non-login interactive shells (when you open a new terminal window or run
bash) - Runs every time you start a new shell
- Best for aliases, functions, and shell settings
HIVE Configuration:
On HIVE, we use a minimal .bash_profile that sources .bashrc. This gives us the best of both worlds:
- Your environment loads automatically when you SSH in (via
.bash_profile) - All your customizations live in
.bashrcfor consistency
The bash_profile_migration.py script sets this up automatically. If you didn't use the migration script, your .bash_profile should contain:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fiIf your .bash_profile doesn't have this, you can manually load your environment after logging in:
source ~/.bashrcTo access the HIVE cluster, use SSH with your campus credentials:
ssh username@hive.hpc.ucdavis.eduYour environment will be automatically loaded if your .bash_profile sources .bashrc (which the migration script sets up for you).
On Cacao, we were used to running commands directly on the head node for quick testing and development. On HIVE, running jobs on the head node is not allowed. Instead, we use interactive sessions to create a sandbox-like environment similar to what we had on Cacao.
Interactive sessions allocate resources on compute nodes where you can run commands interactively. Here are the commands and convenient aliases:
High Priority CPU Session:
# Full command:
srun -p high -c 8 --mem=16G -t 1-00:00:00 --pty bash
# Convenient alias (if you used bash_profile_migration.py):
sandboxLow Priority CPU Session:
# Full command:
srun -p low -c 16 --mem=32G -t 1-00:00:00 --requeue --pty bash
# Convenient alias:
sandboxlowHigh Priority GPU Session:
# Full command:
srun -p gpu-a100 --account=genome-center-grp -c 8 --mem=16G --gres=gpu:1 -t 1-00:00:00 --pty bash
# Convenient alias:
sandboxgpuLow Priority GPU Session:
# Full command:
srun -p gpu-a100 --account=genome-center-grp -c 8 --mem=16G --gres=gpu:1 -t 1-00:00:00 --requeue --pty bash
# Convenient alias:
sandboxlowgpuNote: The aliases (sandbox, sandboxlow, etc.) are automatically added to your .bashrc if you used the bash_profile_migration.py script. If you didn't use the migration script, you can still use the full srun commands above, or add the aliases manually to your .bashrc.
| Component | Cacao (Old Cluster) | HIVE (New Cluster) |
|---|---|---|
| Storage Path | /share/siegellab/ |
/quobyte/jbsiegelgrp/ |
| Home Directory Size | 1GB limit | 20GB limit |
| Shell Config | .bash_profile |
.bashrc (with minimal .bash_profile) |
| Conda/Python | Local installations (~/miniconda3, etc.) | module load conda/latest |
| CUDA | Various local installations | module load cuda/12.6.2 |
| GPU Partition | jbsiegel-gpu |
gpu-a100 |
| GPU Account | Not required | --account=genome-center-grp required |
| CPU Partitions | production |
low (3 day max) or high (30 day max) |
| Job Requeue | Not standard | --requeue flag for low partition |
| Software | Cacao Path | HIVE Path |
|---|---|---|
| ColabFold | /toolbox/LocalColabFold/ |
/quobyte/jbsiegelgrp/software/LocalColabFold/ |
| LigandMPNN | /toolbox/ligandMPNN/ |
/quobyte/jbsiegelgrp/ligandMPNN/ |
| RFdiffusion | Various (~/RFdiffusion, /toolbox/RFdiffusion, etc.) | /quobyte/jbsiegelgrp/software/RFdiffusion/ |
| RFdiff Conda Env | Various (SE3nv, rfdiffusion, etc.) | /quobyte/jbsiegelgrp/software/envs/SE3nv |
| Rosetta | /share/siegellab/software/kschu/Rosetta/main/ |
/quobyte/jbsiegelgrp/software/Rosetta_314/rosetta/main/ |
| Rosetta Version | Older version | Rosetta 3.14 |
| Rosetta Binaries | .default.linuxgccrelease |
.static.linuxgccrelease |
| Storage Type | Cacao | HIVE |
|---|---|---|
| Conda Packages | ~/.conda/pkgs |
/quobyte/jbsiegelgrp/{user}/.conda/pkgs |
| Conda Environments | ~/.conda/envs or local |
/quobyte/jbsiegelgrp/{user}/.conda/envs |
| Pip Cache | ~/.cache/pip |
/quobyte/jbsiegelgrp/{user}/.cache/pip |
| HuggingFace Cache | ~/.cache/huggingface |
/quobyte/jbsiegelgrp/{user}/.cache/huggingface |
| PyTorch Cache | ~/.cache/torch |
/quobyte/jbsiegelgrp/{user}/.cache/torch |
| Transformers Cache | ~/.cache/transformers |
/quobyte/jbsiegelgrp/{user}/.cache/transformers |
| Parameter | Cacao | HIVE |
|---|---|---|
| GPU Jobs | #SBATCH -p jbsiegel-gpu |
#SBATCH -p gpu-a100#SBATCH --account=genome-center-grp |
| CPU Jobs | #SBATCH -p production |
#SBATCH -p low (default) or#SBATCH -p high (long jobs) |
| Low Priority | N/A | #SBATCH --requeue (auto-requeue if preempted) |
| Time Limits | 30 days max | low: 3 days maxhigh: 30 days max |
Convenient aliases and their full srun commands for interactive sessions:
| Alias | Full Command | Resources | Partition |
|---|---|---|---|
sandbox |
srun -p high -c 8 --mem=16G -t 1-00:00:00 --pty bash |
8 CPU, 16GB RAM, 1 day | high |
sandboxlow |
srun -p low -c 16 --mem=32G -t 1-00:00:00 --requeue --pty bash |
16 CPU, 32GB RAM, 1 day | low |
sandboxgpu |
srun -p gpu-a100 --account=genome-center-grp -c 8 --mem=16G --gres=gpu:1 -t 1-00:00:00 --pty bash |
8 CPU, 16GB RAM, 1 GPU, 1 day | gpu-a100 |
sandboxlowgpu |
srun -p gpu-a100 --account=genome-center-grp -c 8 --mem=16G --gres=gpu:1 -t 1-00:00:00 --requeue --pty bash |
8 CPU, 16GB RAM, 1 GPU, 1 day | gpu-a100 (low priority) |
Note: These aliases are added automatically by the bash_profile_migration.py script. See Getting Started for more information on interactive sessions.
HiveTransition/
├── .gitignore
├── README.md
├── CLAUDE.md
├── CHANGELOG.md
├── docs/
│ ├── migrate.md
│ ├── transition_tools.md
│ ├── partitions.md
│ ├── colabfold.md
│ ├── alphafold3.md
│ ├── af2_initial_guess.md
│ ├── run_boltz.md
│ ├── chai_to_boltz.md
│ ├── run_chai.md
│ ├── chai_with_msa.md
│ ├── submit_chai.md
│ ├── ligandmpnn.md
│ ├── rf_diffusion_aa.md
│ ├── mpnnp_pipeline.md
│ ├── galigand_dock.md
│ ├── relax.md
│ ├── path_migrator.md
│ ├── colab_fix.md
│ ├── ligandmpnn_fix.md
│ ├── rfdiffusion_fix.md
│ ├── rosetta_fix.md
│ ├── bash_profile_migration.md
│ └── broken.md
│
├── example_scripts/
│ ├── partitions/
│ │ ├── low_cpus.sh
│ │ ├── high_cpus.sh
│ │ └── gbsf_cpus.sh
│ │
│ ├── folding/
│ │ ├── alphafold2/
│ │ │ ├── local_colabfold/
│ │ │ │ └── colabfold.sh
│ │ │ └── af2_initial_guess/
│ │ │ ├── run_af2_initial_guess.py
│ │ │ └── submit_af2_initial_guess.sh
│ │ ├── alphafold3/
│ │ │ ├── submit_af3_single.sh
│ │ │ └── submit_af3_bulk.py
│ │ ├── boltz2/
│ │ │ ├── runners/
│ │ │ │ └── run_boltz.sh
│ │ │ └── helpers/
│ │ │ └── chai_to_boltz.py
│ │ └── chai/
│ │ ├── run_chai.py
│ │ ├── chai_with_msa.py
│ │ ├── submit_chai.sh
│ │ └── submit_chai_with_msa.sh
│ │
│ ├── design/
│ │ ├── diffusion/
│ │ │ └── rf_diffusion_aa.sh
│ │ ├── ligandmpnn/
│ │ │ └── submit_ligandmpnn.sh
│ │ └── mpnnp_pipeline/
│ │ └── run_pipeline.py
│ │
│ └── docking/
│ ├── galigand_dock/
│ │ └── submit.sh
│ └── relaxation/
│ └── relax.sh
│
└── transition_tools_old/
├── migrate.py
├── path_migrator.py
├── colab_fix.py
├── ligandmpnn_fix.py
├── rfdiffusion_fix.py
├── rosetta_fix.py
├── bash_profile_migration.py
└── broken.py
- Home directory: 20GB limit
- Store everything in
/quobyte/jbsiegelgrp/{your_directory}/ - Conda environments go in
.conda/envs/ - Package caches go in
.cache/
Instead of local conda:
module load conda/latest
module load cuda/12.6.2 # For GPU jobs Good to have even when you're not using a GPU so you have the drivers up!IF YOU USED MY BASH MIGRATION TOOL IT WILL PUT IT IN YOUR BASHRC
- Use
lowfor most jobs (< 3 days) - Use
highfor long jobs (> 3 days) - GPU jobs need
--account=genome-center-grp
-
"Module not found"
- Use
module avail <name>to find the new module name - Some modules have different names on HIVE
- Use
-
"Permission denied"
- Check you're writing to your quobyte directory
- Create directories if they don't exist
-
"Command not found"
- Ensure you've sourced
~/.bashrc - Check if software is in a different location
- Ensure you've sourced
-
Time limit errors
- Use
--highflag for Rosetta jobs > 3 days - Break large jobs into smaller chunks
- Use
-
Check documentation:
- See
docs/folder for detailed guides - Each script has
--helpoption
- See
-
Report issues:
python transition_tools_old/broken.py problematic_script.sh
-
GitHub Issues:
This project includes example scripts to demonstrate how to run common bioinformatics tools in a cluster environment.
- Scripts:
example_scripts/partitions/low_cpus.sh,example_scripts/partitions/high_cpus.sh,example_scripts/partitions/gbsf_cpus.sh - Description: Example SLURM submission scripts demonstrating how to use different partitions on HIVE.
- Full Documentation
- Script:
example_scripts/folding/alphafold2/local_colabfold/colabfold.sh - Description: SLURM submission script for running ColabFold structure predictions.
- Full Documentation
- Scripts:
example_scripts/folding/alphafold3/submit_af3_single.sh,example_scripts/folding/alphafold3/submit_af3_bulk.py - Description: SLURM submission scripts for AlphaFold 3 predictions. Supports single predictions and bulk array jobs with GPU monitoring.
- Full Documentation
- Scripts:
example_scripts/folding/alphafold2/af2_initial_guess/run_af2_initial_guess.py,example_scripts/folding/alphafold2/af2_initial_guess/submit_af2_initial_guess.sh - Description: Runs AlphaFold 2 predictions using a reference PDB structure as a template.
- Full Documentation
- Script:
example_scripts/folding/boltz2/runners/run_boltz.sh - Description: SLURM submission script for Boltz2 structure predictions. Supports proteins, nucleic acids, and small molecules.
- Helper:
chai_to_boltz.pyconverts Chai FASTA format to Boltz2 YAML format. - Full Documentation | chai_to_boltz.md
- Scripts:
example_scripts/folding/chai/submit_chai.sh,example_scripts/folding/chai/submit_chai_with_msa.sh - Description: SLURM submission scripts for Chai structure predictions with or without MSA.
- Full Documentation | run_chai.md | chai_with_msa.md
- Script:
example_scripts/design/ligandmpnn/submit_ligandmpnn.sh - Description: SLURM submission script for LigandMPNN protein design.
- Full Documentation
- Script:
example_scripts/design/diffusion/rf_diffusion_aa.sh - Description: A SLURM submission script for running RFdiffusion for de novo protein design. It is pre-configured with common parameters for protein design tasks.
- Full Documentation
- Script:
example_scripts/design/mpnnp_pipeline/run_pipeline.py - Description: A unified, automated protein design pipeline that integrates MSA generation, conservation analysis, structure prediction, and LigandMPNN design. Takes a protein sequence and produces structurally-validated designed variants.
- Full Documentation
- Script:
example_scripts/docking/galigand_dock/submit.sh - Description: A SLURM submission script for running the GALigandDock protocol. It is pre-configured with resource requests and sets up the necessary environment.
- Full Documentation
- Script:
example_scripts/docking/relaxation/relax.sh - Description: A SLURM submission script for running Rosetta relaxation. It is pre-configured with resource requests and sets up the necessary environment.
- Full Documentation
These tools were created to help migrate from the old Cacao/Barbera HPC cluster to the new HIVE cluster. As the transition is largely complete, these tools are now considered legacy and are archived in the transition_tools_old/ directory.
For detailed information about all available transition tools (path_migrator.py, bash_profile_migration.py, colab_fix.py, ligandmpnn_fix.py, rfdiffusion_fix.py, rosetta_fix.py, and broken.py), see:
Cluster Transition Tools Documentation
If you find issues or have improvements:
- Use
transition_tools_old/broken.pyto report script issues - Submit pull requests for fixes
- Share working examples with the lab
Changes to this working document can be found in CHANGELOG.md.