private void CollapsCluster(ClusterNodeModel clusterNodeModel) { // if(!clusterNodeModel.IsExpanded || clusterNodeModel.ParrentCluster == null) { return; } ClusterNodeModel clusterNode; if (clusterNodeModel.IsExpanded && !clusterNodeModel.IsLiefNode) { clusterNode = clusterNodeModel; } else { clusterNode = clusterNodeModel.ParrentCluster; } clusterNode.IsExpanded = false; clusterNode.IsLiefNode = true; var clusterChildren = clusterNode.Cluster.Children == null? clusterNode.Cluster.FlattenChildren: clusterNode.Cluster.FlattenChildren.Concat(clusterNode.Cluster.Children); if (!clusterChildren.IsNullOrEmpty()) { foreach (var node in this.Nodes.ToArray()) { if (clusterChildren.Contains(node.Cluster)) { this.Nodes.Remove(node); } } } this.UpdatePrecMeter(); }
private void InitializeClusters(ApplicationProtocolClassificationStatisticsMeter precMeasure) { if (this.PrecMeasure == precMeasure) { return; } var cluesters = this.AppIdentMainVm.AppProtoModelEval.ApplicationProtocolModelsHierachivalClustering(); this.Nodes.Clear(); if (cluesters == null) { return; } foreach (var cluster in cluesters) { cluster.UpdateStatistics(precMeasure); var clusterNode = new ClusterNodeModel { Cluster = cluster }; clusterNode.ParrentCluster = clusterNode; this.Nodes.Add(clusterNode); } }
private void ExpandCluster(ClusterNodeModel clusterNodeModel) { if (clusterNodeModel.IsExpanded) { return; } clusterNodeModel.IsExpanded = true; clusterNodeModel.IsLiefNode = false; var clusterChildren = clusterNodeModel.Cluster.Children; if (!clusterChildren.IsNullOrEmpty()) { var newClusterNodes = new List <ClusterNodeModel>(); foreach (var cluster in clusterChildren) { var clusterNode = new ClusterNodeModel { Cluster = cluster, ParrentCluster = clusterNodeModel }; this.Nodes.Add(clusterNode); newClusterNodes.Add(clusterNode); } foreach (var clusterNode in newClusterNodes) { clusterNode.Connections.Add(new ConnectionModel { Target = clusterNodeModel }); clusterNodeModel.Connections.Add(new ConnectionModel { Target = clusterNode }); } } this.UpdatePrecMeter(); }
private void RecalculateNodes(ClusterNodeModel parrent, ITrieNode <char, SIPMsg> current, int depth) { if (depth <= 0) { return; } var node = new ClusterNodeModel(); while (true) { node.Label += current.KeyBit; if (current.Count == 1) { current = current.Children.First(); } else { break; } } node.Label = ReverseString(node.Label); if (parrent != null) { node.Connections.Add(new ConnectionModel { Target = parrent }); parrent.Connections.Add(new ConnectionModel { Target = node }); } this.PrepareNodes.Add(node); foreach (var descendant in current.Children) { this.RecalculateNodes(node, descendant, depth - 1); } }