Rebuilds the top scoring model from an optimisation.

        Returns
        -------
        model: AMPAL
            Returns an AMPAL model of the top scoring parameters.

        Raises
        ------
        NameError:
            Raises a name error if the optimiser has not been run.

def best_model(self):
        """Rebuilds the top scoring model from an optimisation.

        Returns
        -------
        model: AMPAL
            Returns an AMPAL model of the top scoring parameters.

        Raises
        ------
        NameError:
            Raises a name error if the optimiser has not been run.
        """
        if hasattr(self, 'halloffame'):
            model = self._params['specification'](
                *self.parse_individual(self.halloffame[0]))
            model.pack_new_sequences(self._params['sequence'])
            return model
        else:
            raise NameError('No best model found, have you ran the optimiser?')