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

ProgramWhat it is forInstall
Windows TerminalThe standard Windows terminal; opens WSL and PowerShell in tabsincluded in Windows 11; Microsoft Store
iTerm2macOS terminal with good split panes and searchbrew: --cask iterm2
MobaXtermWindows ssh client with an SFTP side panel and a built-in X11 serverwebsite (free Home edition)
VS Code + Remote-SSHEdit cluster files as if they were local; uses your ~/.ssh/config aliaseswebsite; brew: --cask visual-studio-code

Editors

ProgramWhat it is forInstall
nanoShows its shortcuts at the bottom, so it is easy on day one. Fine for changing a few lines of an input fileusually preinstalled; apt: nano
vimAvailable on every cluster. Takes time to learn but is fast over ssh. Start with vimtutorusually preinstalled; apt: vim
VS CodeLocal editing and scripting; remote files through Remote-SSHwebsite

File transfer GUIs

ProgramOSInstall
WinSCPWindowswebsite
FileZillaWindows, macOS, Linuxwebsite; apt: filezilla
CyberduckWindows, macOSwebsite; 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.

ToolWhat it is forInstall
htop, btopFriendlier process, CPU and memory monitors than top. Useful in an interactive job to check that all cores are busyapt, brew: htop / btop; conda: btop
treePrint a directory structure as a treeapt, brew: tree
ncduBrowse interactively to find what is using your disk space, for when the quota is fullapt, brew, conda: ncdu
fdFind 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 outputsapt, brew, conda: ripgrep
fzfFuzzy-pick from any list by typing a few letters; makes Ctrl-R history search much betterapt, brew, conda: fzf
batcat with line numbers and syntax coloursapt: bat (command is batcat); brew, conda: bat
jqRead and extract values from JSON, which some programs and workflow tools write their results inapt, brew, conda: jq

Python environments

ToolWhat it is forInstall
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 commandsinstaller script from the official GitHub releases
pipInstalls packages from PyPI. Inside a conda environment, use pip only for what conda does not havecomes with Python
venvPython's built-in virtual environments: python3 -m venv ~/venvs/chemcomes 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.

ProgramGood atInstall
Avogadro 2Building molecules, generating input files, viewing optimisation paths and normal modeswebsite; apt: avogadro
VMDMD trajectories and large systems; reads LAMMPS dumpswebsite (free, registration required)
JmolLight, quick molecule viewer; vibration animationswebsite; apt: jmol
ChimeraXBiomolecules and publication-quality imageswebsite (free for academic use)
PyMOL (open-source)Proteins and ligands; scripted figuresapt: pymol; conda: pymol-open-source
VESTACrystal structures and charge-density isosurfaces; Quantum ESPRESSO resultswebsite
OVITOAnalysing and rendering MD trajectories with tens of thousands of atoms or morewebsite (basic version free)

Chemistry libraries and converters

ToolWhat it is forInstall
Open BabelFile format conversion (obabel mol.sdf -O mol.xyz), 3D structures from SMILESapt: openbabel; brew: open-babel; conda: openbabel
RDKitSMILES handling, conformer generation, descriptors; a Python libraryconda: rdkit
ASEReading and writing structures, writing inputs for and reading results from many codesconda: ase
pymatgenCrystal structures, symmetry, Materials Project dataconda: pymatgen
cclibParses energies, geometries and frequencies from ORCA, Gaussian and other quantum chemistry outputsconda: 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

ToolWhat it is forInstall
gnuplotQuick plots straight from the terminal: optimisation energies, LAMMPS thermo outputapt, brew, conda: gnuplot
matplotlibPython plotting library; figures for papersconda: matplotlib
xmgraceOld, but some programs such as GROMACS write results in its .xvg formatapt: 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.