Failed to add residue HME at position 209 to surface - cannot find radius for FE1
When my molecule includes a metal atom (FE1) with 2-letter atomtype, Rosetta produces the following error:
core.scoring.sc.MolecularSurfaceCalculator: [ ERROR ] Failed to add residue HME at position 209 to surface - cannot find radius for FE1
I tried resolving this by adding a line like * FE* 1.41 to the sc_radii.lib file, but the error persists.
Root Cause Analysis
After investigating the relevant code:
https://github.com/RosettaCommons/rosetta/blob/695b0f21aed8ace84a900449ce857ab632f8e4d1/source/src/core/scoring/sc/MolecularSurfaceCalculator.cc#L325-L330
I believe the issue occurs when copying residue.atom_name(i) to scatom.atom, as the code skips the first character. However, when generating the error message, it prints the full residue.atom_name(i), which is misleading.
Workaround
Instead of adding * FE* 1.41 to sc_radii.lib, adding * E* 1.41 works correctly. This confirms that the code is looking for the atom name without the first character.
Note that the default radii for the MolecularSurfaceCalculator are really only intended for use with protein-only structures. For general usage which includes non-protein or non-canonical residues, you may want to enable the use_rosetta_radii setting on MolecularSurfaceCalculator::settings -- I believe most end-user usage of MolecularSurfaceCalculator has this as an option.