So, it turns out, the first problem is, I was looking for lrms with an L, not Irms with a capital I. So much for sans-serif fonts.
You have found the correct code for the calculation. The calculation line is rmsd_with_super_subset, which will take two proteins, superpose over a subset of atoms (the interface), and calculate rmsd over the same subset (the interface).
The interface distance here is hardcoded to be 8 angstroms. The Interface class is being used to determine what residues (it’s residue-based, not atom based) are in the interface. I’m not a fan of how this class works. It’s a long story, but this 8 angstroms is measured between the “neighbor atoms” which are atoms designated separately for each residue type. It examines the EnergyGraph for the Pose, looks at all the graph Edges across the interface (meaning, between chains), and checks that the Edge’s distance (distance between “neighbor atoms”) is >= 8 angstroms.
The easiest way to figure out what’s in the interface is modify the calc_Irmsd function to spit out what residues it thinks are in the interface, after interface->calculate but before rmsd_with_super_subset.
You could then superimpose/calculate on those and see if it matches Rosetta?