public Associations Associate(SGF query, List <SGF> queryResult) { //add new queries AddQueriesFromResultsSgf(queryResult); //remove old query Queries.Remove(query); //add graph edges var queryDecomposed = query.Decompose(); foreach (var sgf in queryResult) { foreach (var msgfTo in sgf.Decompose()) { foreach (var msgfFrom in queryDecomposed) { Graph.AddEdge(msgfFrom, msgfTo); } } } //update limits UnitsLimit.UpdateCurrentValues( (uint)Math.Max(QueriesList.Count(), Queries.Count) , Graph.GetNodeCount() , Graph.GetEdgeCount()); return(this); }
public AssociationsResult ExportToTextFile(string fileName) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileName)) { file.WriteLine(ProbabilityGraph.GetNodeCount()); Dictionary <int, MSGF> orderByInt = new Dictionary <int, MSGF>(); Dictionary <MSGF, int> orderByVal = new Dictionary <MSGF, int>(new MsgfEqualityComparer()); foreach (var node in ProbabilityGraph.GetAllNodes()) { orderByInt.Add(orderByInt.Count(), node); orderByVal.Add(node, orderByVal.Count()); file.Write(" " + node.GetContent()); } file.WriteLine(); for (int i = 0; i < orderByInt.Count(); ++i) { file.Write(" " + NodesProbability[orderByInt[i]]); } file.WriteLine(); for (int i = 0; i < orderByInt.Count(); ++i) { var nodeFrom = orderByInt[i]; var nodesTo = ProbabilityGraph.GetOutgoingNodes(nodeFrom); file.Write(" " + nodesTo.Count()); foreach (var nodeTo in nodesTo) { file.Write(" " + orderByVal[nodeTo] + " " + ProbabilityGraph.GetEdgeFreq(nodeFrom, nodeTo)); } file.WriteLine(); } } return(this); }