def aggregate_permuted_network(observed_networks):
    """This method handles the case where multiple observed networks are
    generated (e.g. from models produced by different random seed
    initializations of an unsupervised feature construction algorithm).
    We handle analysis of multiple networks by aggregating them; likewise,
    we require that the permutation test generates N aggregate permuted
    networks.

    Parameters
    -----------
    observed_networks : list(CoNetwork)
      the list of observed networks, generated from models produced by
      different random seed initializations of the same unsupervised feature
      construction algorithm

    Returns
    -----------
    CoNetwork, the aggregate permuted network created by generating
      a permutation for each individual observed network and then aggregating
      them into a single network
    """
    aggregate_permuted_network = None
    for pathcore_network in observed_networks:
        permuted_network = pathcore_network.permute_pathways_across_features()
        if not aggregate_permuted_network:
            aggregate_permuted_network = permuted_network
        else:
            aggregate_permuted_network.aggregate(permuted_network)
    return aggregate_permuted_network