Calculates the interaction energy of the AMPAL object.

        Parameters
        ----------
        assign_ff: bool, optional
            If true the force field will be updated if required.
        ff: BuffForceField, optional
            The force field to be used for scoring.
        mol2: bool, optional
            If true, mol2 style labels will also be used.
        force_ff_assign: bool, optional
            If true, the force field will be completely reassigned, 
            ignoring the cached parameters.

        Returns
        -------
        buff_score: buff.BUFFScore
            A BUFFScore object with information about each of the
            interactions and the `Atoms` involved.

        Raises
        ------
        AttributeError
            Raise if a component molecule does not have an `update_ff`
            method.

def get_interaction_energy(self, assign_ff=True, ff=None, mol2=False,
                               force_ff_assign=False):
        """Calculates the interaction energy of the AMPAL object.

        Parameters
        ----------
        assign_ff: bool, optional
            If true the force field will be updated if required.
        ff: BuffForceField, optional
            The force field to be used for scoring.
        mol2: bool, optional
            If true, mol2 style labels will also be used.
        force_ff_assign: bool, optional
            If true, the force field will be completely reassigned, 
            ignoring the cached parameters.

        Returns
        -------
        buff_score: buff.BUFFScore
            A BUFFScore object with information about each of the
            interactions and the `Atoms` involved.

        Raises
        ------
        AttributeError
            Raise if a component molecule does not have an `update_ff`
            method.
        """
        if not ff:
            ff = global_settings['buff']['force_field']
        if assign_ff:
            for molecule in self._molecules:
                if hasattr(molecule, 'update_ff'):
                    molecule.update_ff(
                        ff, mol2=mol2, force_ff_assign=force_ff_assign)
                else:
                    raise AttributeError(
                        'The following molecule does not have a update_ff'
                        'method:\n{}\nIf this is a custom molecule type it'
                        'should inherit from BaseAmpal:'.format(molecule))
        interactions = find_inter_ampal(self, ff.distance_cutoff)
        buff_score = score_interactions(interactions, ff)
        return buff_score