Lesson 10 of 13 · 11 min
Bootstrapping and Branch Support
Maximum likelihood hands you one tree, the single topology that fits your alignment best under the chosen model. That point estimate hides how strongly the data actually constrain each grouping, so some clades in it are rock solid while others would flip given one more column of sequence. Branch support quantifies that confidence clade by clade instead of trusting the whole tree equally.
Resampling the columns
The nonparametric bootstrap asks how stable each clade is under resampling of the data. You build new alignments the same width as the original by sampling its columns with replacement, re-infer a tree from each pseudo-replicate, and record how often each clade reappears. A clade recovered in 95 of 100 replicates gets a bootstrap value of 95.
# Standard nonparametric bootstrap: accurate but slow (re-optimizes a full tree per replicate)
iqtree2 -s primates.fa -m GTR+G -b 100 -T AUTO --prefix primates_npUltrafast bootstrap and SH-aLRT
IQ-TREE's ultrafast bootstrap (UFBoot) approximates that resampling far more efficiently, so 1000 replicates finish in the time a handful of standard ones would take. The SH-aLRT test is a separate likelihood-ratio check on each branch rather than a resampling method. Running both with -B 1000 and -alrt 1000 gives you two independent support values to cross-check on every node.
iqtree2 -s primates.fa -m MFP -B 1000 -alrt 1000 -T AUTO --seed 12345 --prefix primates_ufb
# -m MFP : ModelFinder picks the substitution model
# -B 1000 : ultrafast bootstrap, 1000 replicates
# -alrt 1000 : SH-aLRT branch test, 1000 replicatesGenerating 1000 samples for ultrafast bootstrap (seed: 12345)...
ModelFinder: best-fit model is HKY+F+G4
Performing ultrafast bootstrap approximation...
NOTE: SH-aLRT >= 80% and UFBoot >= 95% together indicate a well-supported clade.
Analysis results written to:
IQ-TREE report: primates_ufb.iqtree
Maximum-likelihood tree: primates_ufb.treefile
Consensus tree: primates_ufb.contree
Total wall-clock time for run: 41.8 sec
cat primates_ufb.treefile(Gibbon:0.0189,Orangutan:0.0165,(Gorilla:0.0071,(Human:0.0089,Chimp:0.0038)98.5/100:0.0021)76.2/91:0.0143);
Each internal branch label reads as SH-aLRT / UFBoot, so the human-chimp clade at 98.5/100 is strong on both scores while the deeper node at 76.2/91 fails both thresholds and should be treated as unresolved. The older standard bootstrap is conservative, so a value near 70 there can already signal a solid clade, which is why UFBoot instead uses a stricter 95 cutoff. Bayesian posterior probabilities from MrBayes or BEAST answer a different question, the probability that a clade is true given the model and priors, so their 0.95 cutoff is not interchangeable with a bootstrap percentage.
Try it yourself: Take a small gene or protein alignment (or IQ-TREE's bundled example.phy) and run iqtree2 -s your_aln.fa -m MFP -B 1000 -alrt 1000 -T AUTO --prefix run1. Open run1.treefile in FigTree or iTOL, then list every clade whose label fails either threshold (SH-aLRT < 80 or UFBoot < 95) and decide which relationships you would not yet report as resolved. As a stretch, add -bnni and compare whether any borderline UFBoot values change.