Run charge balance command

def run(self):
        """Run charge balance command"""

        # Load compound information
        def compound_name(id):
            if id not in self._model.compounds:
                return id
            return self._model.compounds[id].properties.get('name', id)

        # Create a set of excluded reactions
        exclude = set(self._args.exclude)
        count = 0
        unbalanced = 0
        unchecked = 0
        for reaction, charge in charge_balance(self._model):
            count += 1

            if reaction.id in exclude or reaction.equation is None:
                continue

            if math.isnan(charge):
                logger.debug('Not checking reaction {};'
                             ' missing charge'.format(reaction.id))
                unchecked += 1
            elif abs(charge) > self._args.epsilon:
                unbalanced += 1
                rxt = reaction.equation.translated_compounds(compound_name)
                print('{}\t{}\t{}'.format(reaction.id, charge, rxt))

        logger.info('Unbalanced reactions: {}/{}'.format(unbalanced, count))
        logger.info('Unchecked reactions due to missing charge: {}/{}'.format(
            unchecked, count))
        logger.info('Reactions excluded from check: {}/{}'.format(
            len(exclude), count))