Esempio n. 1
0
        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);
        }