<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def find_sparse_mode(self, core, additional, scaling, weights={}):
 """Find a sparse mode containing reactions of the core subset. Return an iterator of the support of a sparse mode that contains as many reactions from core as possible, and as few reactions from additional as possible (approximately). A dictionary of weights can be supplied which gives further penalties for including specific additional reactions. """


        if len(core) == 0:
            return

        self.lp7(core)
        k = set()
        for reaction_id in core:
            flux = self.get_flux(reaction_id)
            if self.is_flipped(reaction_id):
                flux *= -1
            if flux >= self._epsilon:
                k.add(reaction_id)

        if len(k) == 0:
            return

        self.lp10(k, additional, weights)
        for reaction_id in self._model.reactions:
            flux = self.get_flux(reaction_id)
            if abs(flux) >= self._epsilon / scaling:
                yield reaction_id