#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
use crate::partition::Partition;
#[derive(Debug, Clone)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct HierarchyLevel {
pub node_count: usize,
pub num_communities: usize,
pub quality: f64,
pub membership: Vec<usize>,
}
#[derive(Debug, Clone)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct HierarchicalOutput {
pub levels: Vec<HierarchyLevel>,
pub partition: Partition,
pub quality: f64,
}
impl HierarchicalOutput {
pub fn num_levels(&self) -> usize {
self.levels.len()
}
pub fn community_of_at_level(&self, node: usize, level: usize) -> usize {
self.levels[level].membership[node]
}
pub fn membership_at_level(&self, level: usize) -> &[usize] {
&self.levels[level].membership
}
}