18 using System.Collections.Generic;
21 using TraceLabSDK.Types;
23 namespace TraceLab.Components.DevelopmentKit.Postprocessors.CSTI
36 public static TLSimilarityMatrix
Compute(TLSimilarityMatrix matrix, TLSimilarityMatrix relationships)
40 Dictionary<string, Dictionary<string, double>> storage =
new Dictionary<string, Dictionary<string, double>>();
41 foreach (TLSingleLink link
in matrix.AllLinks)
43 if (!storage.ContainsKey(link.SourceArtifactId))
45 storage.Add(link.SourceArtifactId,
new Dictionary<string, double>());
47 storage[link.SourceArtifactId].Add(link.TargetArtifactId, link.Score);
52 TLLinksList links = matrix.AllLinks;
54 foreach (TLSingleLink link
in links)
58 foreach (
string relatedArtifact
in relationships.GetSetOfTargetArtifactIdsAboveThresholdForSourceArtifact(link.TargetArtifactId))
60 storage[link.SourceArtifactId][relatedArtifact] += storage[link.SourceArtifactId][relatedArtifact] * delta;
64 TLLinksList newLinks =
new TLLinksList();
65 foreach (
string source
in storage.Keys)
67 foreach (
string target
in storage[source].Keys)
69 newLinks.Add(
new TLSingleLink(source, target, storage[source][target]));
73 TLSimilarityMatrix newMatrix =
new TLSimilarityMatrix();
74 foreach (TLSingleLink link
in newLinks)
76 newMatrix.AddLink(link.SourceArtifactId, link.TargetArtifactId, link.Score);