Start the Q&A
For protein–protein or protein–peptide systems, select the matching system type. Choose dodecahedron unless you have a specific reason to use another box.
python pymacs_run.py configureUniversity of Miami · Triton
Each structure gets its own folder. The guided PyMACS runner records your choices, prepares the system with gmx_mpi, and submits one checkpoint-safe GPU job through Triton’s LSF scheduler.
gmx_mpiOne folder · one structure · one simulationGPU submission and restart support
Before you start
This walkthrough is for University of Miami users who can log into the Triton cluster. It does not replace the normal local Install & Run guide.
ssh triton from a configured UM account.Start in a clean folder containing one .pdb, .cif, or .mmcif structure.Protein–protein and protein–peptide systems do not require CGenFF ligand parameterization.Connect to Triton
Triton access requires an active IDSC account. The cluster login host is t2.idsc.miami.edu; use your University of Miami CaneID as the username. See the official IDSC Triton page for account access, policies, and support.
ssh YOUR_CANEID@t2.idsc.miami.eduConnect through the University of Miami VPN first if your network configuration requires it. Once logged in, confirm the host with hostname and work from your project/home location rather than a local laptop path.
Step 1 — Install PyMACS into this run folder
Make and enter a folder for one system, put the input structure there, then run the installer shown here. New installs include the guided pymacs_run.py helper and the Triton LSF profile.
bash <<'EOF'
set -e
REPO_URL="https://github.com/schurerlab/Pymacs.git"
TMP_DIR="$(mktemp -d)"
TARGET_DIR="$(pwd)"
cleanup() {
rm -rf "$TMP_DIR"
}
trap cleanup EXIT
echo "======================================"
echo " PyMACS Quick Start Install"
echo "======================================"
echo
echo "This will copy a fresh PyMACS instance into:"
echo " $TARGET_DIR"
echo
if ! command -v git >/dev/null 2>&1; then
echo "ERROR: git is not installed or not available in PATH."
echo "Please install git first, then run this command again."
exit 1
fi
if [ "$(find "$TARGET_DIR" -mindepth 1 -maxdepth 1 | wc -l)" -gt 0 ]; then
echo "WARNING: This directory is not empty."
echo "Files with the same names as PyMACS files may be overwritten."
echo
printf "Continue copying PyMACS into this directory? [y/N]: "
read -r answer </dev/tty
case "$answer" in
y|Y|yes|YES) ;;
*)
echo "Install cancelled."
exit 0
;;
esac
fi
echo
echo "Cloning PyMACS into a temporary folder..."
git clone "$REPO_URL" "$TMP_DIR/pymacs"
cd "$TMP_DIR/pymacs"
if command -v git-lfs >/dev/null 2>&1 || git lfs version >/dev/null 2>&1; then
echo "Git LFS detected. Pulling large tracked files..."
git lfs install
git lfs pull
else
echo "WARNING: Git LFS was not detected."
echo "Core PyMACS files will still be copied, but large example assets may remain as LFS pointer files."
echo "Install Git LFS later and re-run this installer if you need the full example datasets."
fi
echo
echo "Copying PyMACS files into your current directory..."
shopt -s dotglob nullglob
for item in "$TMP_DIR/pymacs"/*; do
base="$(basename "$item")"
if [ "$base" = ".git" ]; then
continue
fi
if [ -e "$TARGET_DIR/$base" ]; then
printf "Overwrite existing %s? [y/N]: " "$base"
read -r overwrite </dev/tty
case "$overwrite" in
y|Y|yes|YES)
rm -rf "$TARGET_DIR/$base"
;;
*)
echo "Skipping $base"
continue
;;
esac
fi
cp -R "$item" "$TARGET_DIR/"
done
echo "Cleaning up temporary clone..."
cleanup
trap - EXIT
cd "$TARGET_DIR"
echo
echo "Done. PyMACS has been copied into:"
echo " $TARGET_DIR"
echo
echo "Next recommended steps:"
echo " conda env create -f environment_cgenff.yml"
echo " conda env create -f environment_mdanalysis.yml"
echo
echo "Then follow the Step 1 / Step 2 / Step 3 workflow on this page."
EOFStep 2 — Install Miniforge and create the environments
Triton uses linux-ppc64le, so install the matching Miniforge distribution in your home directory. It includes the fast libmamba solver; the cluster Miniconda module uses Conda's legacy solver and can take an impractical amount of time to resolve the analysis environment.
curl -fsSLo "$HOME/Miniforge3-Linux-ppc64le.sh" https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-ppc64le.sh
bash "$HOME/Miniforge3-Linux-ppc64le.sh" -b -p "$HOME/miniforge3"
source "$HOME/miniforge3/etc/profile.d/conda.sh"
conda config --set solver libmamba
conda init bash
conda env create -f environment_triton_setup.yml
conda env create -f environment_triton_analysis.yml
module purge
module load gcc-runtime/13.4.0-none-none-gh6rpjx
module load gromacs/2025.1-gcc-13.4.0-6vq7xfo
gmx_mpi --version
conda env list
conda activate cgenff
python --version
conda activate mdanalysis
python --versionAfter the one-time conda init bash command, Conda starts automatically in new shells. Activate the environment you need with conda activate cgenff or conda activate mdanalysis. Before any interactive GROMACS command, run module purge, then load the GCC runtime and GROMACS modules shown above. The PyMACS LSF jobs handle Conda and modules automatically.
Protein–ligand runs only — private CGenFF access
Protein–protein and protein–peptide runs can skip this section. For protein–small-molecule runs, request the private Funnel address, access token, and one-time terminal command. Do not place the token itself in ~/.bashrc, a job folder, or a repository.
# Replace only PRIVATE_FUNNEL_URL with the value sent by the PyMACS administrator.
# The token is stored separately in ~/.config/pymacs/cgenff-funnel.token.
cat >> "$HOME/.bashrc" <<'EOF'
export PYMACS_CGENFF_FUNNEL_URL="PRIVATE_FUNNEL_URL"
export PYMACS_CGENFF_TOKEN_FILE="$HOME/.config/pymacs/cgenff-funnel.token"
EOF
source "$HOME/.bashrc"PYMACS_CGENFF_FUNNEL_URL identifies the private Kyle parameterization service; PYMACS_CGENFF_TOKEN_FILE points to a local, permission-restricted token file. Once the administrator’s one-time command has installed the token, these exports persist for future Triton logins. In python pymacs_run.py configure, choose option 5, remote CGenFF via Kyle Funnel.
Private access folder — copy it to Triton
After your access request is approved, you will receive a private folder. Keep your University of Miami VPN connected while copying it to Triton. Download that folder to your computer first; if it downloads as a ZIP file, unzip it. The commands below assume it is in your Downloads folder.
# Replace YOUR_ACCESS_FOLDER with the folder you received.
# Replace YOUR_CANEID with your Triton username.
scp -r "$HOME/Downloads/YOUR_ACCESS_FOLDER" YOUR_CANEID@t2.idsc.miami.edu:~/
# Enter your CaneID password if prompted. Then log in:
ssh YOUR_CANEID@t2.idsc.miami.edu
# On Triton, enter the copied folder and install access:
cd ~/YOUR_ACCESS_FOLDER
bash install_pymacs_kyle_funnel_access.sh
source "$HOME/.bashrc"Confirm that the VPN is connected, that you replaced both placeholders, and that the folder is really in ~/Downloads. In Finder, you can drag the folder into Terminal after scp -r to insert its exact path, then add a space followed by YOUR_CANEID@t2.idsc.miami.edu:~/.
Step 3 — Guided configuration
The Q&A finds structures, detects PDB/mmCIF chains, lets you retain intended chains, names them, and presents numbered box options. It writes pymacs_run.json, which later commands read without repeating questions.
For protein–protein or protein–peptide systems, select the matching system type. Choose dodecahedron unless you have a specific reason to use another box.
python pymacs_run.py configureValidation confirms the input structure and required choices before PyMACS changes the folder.
python pymacs_run.py validateStep 4 — Prepare the system
This creates the topology, box, solvated/ionized system, and em.tpr. It is the required checkpoint before an LSF GPU job can be submitted.
conda activate cgenff
module purge
module load gcc-runtime/13.4.0-none-none-gh6rpjx
module load gromacs/2025.1-gcc-13.4.0-6vq7xfo
python pymacs_run.py setup
python pymacs_run.py statusThe submit command checks for topol.top, solv_ions.gro, and em.tpr. Missing inputs stop the submission rather than sending an invalid job to the queue.
Step 5 — Submit MD, analysis, and reporting
The Triton profile submits the 1-GPU Step 2 job plus a separate dependent CPU job. Both scripts charge the lab’s brd LSF project. The CPU job waits for successful MD, runs memory-safe chunked Step 3A, dispatches 3B or 3C when appropriate, and generates the Step 4 figurebook.
python pymacs_run.py submit --profile triton --with-analysis
# Replace JOBID with the number printed by submission
bjobs -u "$USER" -w
bpeek JOBID
tail -f mdrun.logAutomatic post-MD analysis
The configuration Q&A records analysis threads, chunk size, interface or ligand settings, and whether to build the figurebook. The default chunk size is 1,000 frames, so large trajectories are processed incrementally rather than loaded entirely into memory.
--with-analysis to submit both jobs together.Use python pymacs_run.py submit-analysis --profile triton to run analysis separately later.Step 6 — Resume safely
Triton jobs have a walltime limit. PyMACS writes GROMACS checkpoints during production; use the resume command to submit the same folder again from its latest checkpoint.
python pymacs_run.py resume --profile tritonpython pymacs_run.py status before resubmitting.Keep all generated files in the same run folder.Use Step 3A analysis after production MD completes.The whole Triton path
source "$HOME/miniforge3/etc/profile.d/conda.sh"
python pymacs_run.py configure
python pymacs_run.py validate
conda activate cgenff && module purge && module load gcc-runtime/13.4.0-none-none-gh6rpjx && module load gromacs/2025.1-gcc-13.4.0-6vq7xfo
python pymacs_run.py setup
python pymacs_run.py submit --profile triton --with-analysis
python pymacs_run.py resume --profile triton # only if production needs continuation