<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def summary(self, variables=None, alpha=0.05, start=0, batches=100, chain=None, roundto=3):
 """ Generate a pretty-printed summary of the model's variables. :Parameters: alpha : float The alpha level for generating posterior intervals. Defaults to 0.05. start : int The starting index from which to summarize (each) chain. Defaults to zero. batches : int Batch size for calculating standard deviation for non-independent samples. Defaults to 100. chain : int The index for which chain to summarize. Defaults to None (all chains). roundto : int The number of digits to round posterior statistics. quantiles : tuple or list The desired quantiles to be calculated. Defaults to (2.5, 25, 50, 75, 97.5). """


        # If no names provided, run them all
        if variables is None:
            variables = self._variables_to_tally
        else:
            variables = [
                self.__dict__[
                    i] for i in variables if self.__dict__[
                        i] in self._variables_to_tally]

        # Loop over nodes
        for variable in variables:
            variable.summary(
                alpha=alpha, start=start, batches=batches, chain=chain,
                roundto=roundto)