StructureMapper RMSD values
Question:
Answer:
If your RMSDs seem to have strange values, make sure that all the atoms you want to map on each other are actually mapped by the StrucureMapper. You can check this by looking at the number of bijections the StructureMapper finds. Say you have one small molecule in two different positions and want to know how much they differ. To get a reasonable RMSD, you would want the Mapper to map every atom. Check this with the following code:
// Map two molecules with the same number of atoms
StructureMapper structure_mapper(molecule1, molecule2)
// Check, whether the StructureMapper mapped every atom
Size number_of_bijections = structure_mapper.getBijection().size();
if (number_of_bijections != molecule1.countAtoms())
{
Log.warn() << "WARNING: not all atoms were mapped." << std:endl;
}
One reason for a incomplete mapping might be insufficient naming of the atoms in a molecule. if, for instance, your molecule comes from a HyperChem file and all atoms are named "-", then the StructureMapper cannot distinguish between different atoms. Give those atoms unique names and you will be fine.