def aggregate_partition(self, membership_partition=None):
partition_agg = self._FromCPartition(_c_louvain._MutableVertexPartition_aggregate_partition(self._partition))<EOL>if (not membership_partition is None):<EOL><INDENT>membership = partition_agg.membership<EOL>for v in self.graph.vs:<EOL><INDENT>membership[self.membership[v.index]] = membership_partition.membership[v.index]<EOL><DEDENT>partition_agg.set_membership(membership)<EOL><DEDENT>return partition_agg<EOL>
Aggregate the graph according to the current partition and provide a
        default partition for it.

        The aggregated graph can then be found as a parameter of the partition
        ``partition.graph``.

        Notes
        -----
        This function contrasts to the function ``cluster_graph`` in igraph itself,
        which also provides the aggregate graph, but we may require setting
        the appropriate ``resolution_parameter``, ``weights`` and ``node_sizes``.
        In particular, this function also ensures that the quality defined on the
        aggregate partition is identical to the quality defined on the original
        partition.

        Examples
        --------
        >>> G = ig.Graph.Famous('Zachary')
        >>> partition = louvain.find_partition(G, louvain.ModularityVertexPartition)
        >>> aggregate_partition = partition.aggregate_partition(partition)
        >>> aggregate_graph = aggregate_partition.graph
        >>> aggregate_partition.quality() == partition.quality()
        True