public NodePairingGraph(NodePairings pairings) { _sourceGraphSelfPairings = GraphSimilarityCalc.GetGraphSelfScore(pairings.SourceGraph); _pairings = pairings; ImageGraphNodes = pairings.Pairings.Keys.Select(x => new GoLabeledVertexWrapper(new GoTextNodeHoverable(), x)).ToList(); InitializeComponent(); ScoreLbl.Text = (pairings.TotalScore / _sourceGraphSelfPairings.TotalScore).ToString(); var pairingValues = pairings.Pairings.Values.SelectMany(x => x); var selfPairingValues = _sourceGraphSelfPairings.Pairings.SelectMany(x => x.Value); var moreThanSelf = pairingValues.Select(x => new { Regular = x.Score, Self = selfPairingValues.First(y => y.SourceGraphVertex == x.SourceGraphVertex).Score }).ToList(); }
internal void CalculateScores() { FirstFuncNodesAndEdges = GraphCreator.CompileCode(FirstFunctionCode); SecondFuncNodesAndEdges = GraphCreator.CompileCode(SecondFunctionCode); PairingFirstToSecond = GraphSimilarityCalc.GetDistance(FirstFuncNodesAndEdges.Nodes, SecondFuncNodesAndEdges.Nodes); PairingSecondToFirst = GraphSimilarityCalc.GetDistance(SecondFuncNodesAndEdges.Nodes, FirstFuncNodesAndEdges.Nodes); ScoreFirstContainedInSecond = Math.Round(PairingFirstToSecond.TotalScore / PairingFirstToSecond.SourceSelfPairings.TotalScore, 2); ScoreSecondContainedInFirst = Math.Round(PairingSecondToFirst.TotalScore / PairingSecondToFirst.SourceSelfPairings.TotalScore, 2); ScoreTwoWay = (PairingFirstToSecond.TotalScore + PairingSecondToFirst.TotalScore) / (PairingSecondToFirst.SourceSelfPairings.TotalScore + PairingFirstToSecond.SourceSelfPairings.TotalScore); ScoreTwoWay = Math.Round(ScoreTwoWay.Value, 2); }
private static double GetContainedScore(List <InstructionNode> Graph1, List <InstructionNode> Graph2, bool twoWayScore) { NodePairings pairing1 = GraphSimilarityCalc.GetDistance(Graph1, Graph2); double Graph1ContainedIn2Score = pairing1.TotalScore / pairing1.SourceSelfPairings.TotalScore; if (twoWayScore) { NodePairings pairing2 = GraphSimilarityCalc.GetDistance(Graph2, Graph1); double totalScoreAverage = (pairing1.TotalScore + pairing2.TotalScore) / (pairing1.SourceSelfPairings.TotalScore + pairing1.ImageSelfPairings.TotalScore); return(totalScoreAverage); } else { return(Graph1ContainedIn2Score); } }