How to read the install column
You do not need all of this. To start, a terminal, one editor and one viewer are enough. The install column means:
apt: sudo apt install NAME on Ubuntu and WSL
brew: brew install NAME with Homebrew on macOS; GUI apps use brew install --cask NAME
conda: conda install -c conda-forge NAME, which also works on clusters without admin rights
- website: download the installer from the project's site
On a cluster you cannot use sudo. Check module avail first, and if the tool is not there, install it into your home
directory with conda (chapter 09).
Terminals and remote access
| Program | What it is for | Install |
| Windows Terminal | The standard Windows terminal; opens WSL and PowerShell in tabs | included in Windows 11; Microsoft Store |
| iTerm2 | macOS terminal with good split panes and search | brew: --cask iterm2 |
| MobaXterm | Windows ssh client with an SFTP side panel and a built-in X11 server | website (free Home edition) |
| VS Code + Remote-SSH | Edit cluster files as if they were local; uses your ~/.ssh/config aliases | website; brew: --cask visual-studio-code |
Editors
| Program | What it is for | Install |
| nano | Shows its shortcuts at the bottom, so it is easy on day one. Fine for changing a few lines of an input file | usually preinstalled; apt: nano |
| vim | Available on every cluster. Takes time to learn but is fast over ssh. Start with vimtutor | usually preinstalled; apt: vim |
| VS Code | Local editing and scripting; remote files through Remote-SSH | website |
File transfer GUIs
| Program | OS | Install |
| WinSCP | Windows | website |
| FileZilla | Windows, macOS, Linux | website; apt: filezilla |
| Cyberduck | Windows, macOS | website; brew: --cask cyberduck |
The command-line way is in chapter 07.
Command-line tools
None of these are required, but each saves a little time every day. If a cluster lacks them, most can be installed into your home directory from conda-forge.
| Tool | What it is for | Install |
htop, btop | Friendlier process, CPU and memory monitors than top. Useful in an interactive job to check that all cores are busy | apt, brew: htop / btop; conda: btop |
tree | Print a directory structure as a tree | apt, brew: tree |
ncdu | Browse interactively to find what is using your disk space, for when the quota is full | apt, brew, conda: ncdu |
fd | Find files with a shorter syntax than find: fd '\.out$' | apt: fd-find (command is fdfind); brew: fd; conda: fd-find |
rg (ripgrep) | A fast grep -r, e.g. for FINAL SINGLE POINT ENERGY across hundreds of outputs | apt, brew, conda: ripgrep |
fzf | Fuzzy-pick from any list by typing a few letters; makes Ctrl-R history search much better | apt, brew, conda: fzf |
bat | cat with line numbers and syntax colours | apt: bat (command is batcat); brew, conda: bat |
jq | Read and extract values from JSON, which some programs and workflow tools write their results in | apt, brew, conda: jq |
Python environments
| Tool | What it is for | Install |
| miniforge (conda, mamba) | A conda distribution that uses conda-forge by default, where most chemistry packages live. mamba is a faster drop-in for the same commands | installer script from the official GitHub releases |
| pip | Installs packages from PyPI. Inside a conda environment, use pip only for what conda does not have | comes with Python |
| venv | Python's built-in virtual environments: python3 -m venv ~/venvs/chem | comes with Python; on Ubuntu, apt: python3-venv |
Molecular and crystal visualisation
These open .xyz, .cif, ORCA outputs, LAMMPS trajectories and similar files. Install them on your laptop and copy files over from the cluster.
| Program | Good at | Install |
| Avogadro 2 | Building molecules, generating input files, viewing optimisation paths and normal modes | website; apt: avogadro |
| VMD | MD trajectories and large systems; reads LAMMPS dumps | website (free, registration required) |
| Jmol | Light, quick molecule viewer; vibration animations | website; apt: jmol |
| ChimeraX | Biomolecules and publication-quality images | website (free for academic use) |
| PyMOL (open-source) | Proteins and ligands; scripted figures | apt: pymol; conda: pymol-open-source |
| VESTA | Crystal structures and charge-density isosurfaces; Quantum ESPRESSO results | website |
| OVITO | Analysing and rendering MD trajectories with tens of thousands of atoms or more | website (basic version free) |
| Tool | What it is for | Install |
| Open Babel | File format conversion (obabel mol.sdf -O mol.xyz), 3D structures from SMILES | apt: openbabel; brew: open-babel; conda: openbabel |
| RDKit | SMILES handling, conformer generation, descriptors; a Python library | conda: rdkit |
| ASE | Reading and writing structures, writing inputs for and reading results from many codes | conda: ase |
| pymatgen | Crystal structures, symmetry, Materials Project data | conda: pymatgen |
| cclib | Parses energies, geometries and frequencies from ORCA, Gaussian and other quantum chemistry outputs | conda: cclib |
For one or two numbers from an output, grep and awk are enough (extracting values from output files).
cclib or ASE pay off when you handle many values in a structured way.
Plotting
| Tool | What it is for | Install |
| gnuplot | Quick plots straight from the terminal: optimisation energies, LAMMPS thermo output | apt, brew, conda: gnuplot |
| matplotlib | Python plotting library; figures for papers | conda: matplotlib |
| xmgrace | Old, but some programs such as GROMACS write results in its .xvg format | apt: grace |
Version control
git records the history of changes to files. Keeping analysis scripts, job script templates and sets of input files in a git repository lets you
answer "what settings did I use last month?". Leave large outputs and wavefunction files out of the repository.
Most clusters have git; locally it is git in both apt and brew.