<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def from_coarse_partition(self, partition, coarse_node=None):
 """ Update current partition according to coarser partition. Parameters partition : :class:`~VertexPartition.MutableVertexPartition` The coarser partition used to update the current partition. coarse_node : list of int The coarser node which represent the current node in the partition. Notes ----- This function is to be used to determine the correct partition for an aggregated graph. In particular, suppose we move nodes and then get an aggregate graph. Now we also move nodes in the aggregate partition Now we improved the quality function of ``aggregate_partition``, but this is not yet reflected in the original ``partition``. We can thus call so that ``partition`` now reflects the changes made to ``aggregate_partition``. The ``coarse_node`` can be used it the ``aggregate_partition`` is not defined based on the membership of this partition. In particular the membership of this partition is defined as follows: If ``coarse_node`` is :obj:`None` it is assumed the coarse node was defined based on the membership of the current partition, so that This can be useful when the aggregate partition is defined on a more refined partition. """

    # Read the coarser partition
    _c_leiden._MutableVertexPartition_from_coarse_partition(self._partition,
                                                             partition.membership, coarse_node)
    self._update_internal_membership()