public void startInference(UDCTree UDCHierarchy, int depth = 0) { SubtypeMiner miner = null; var typesAtDepth = UDCHierarchy.GetAllTypesAtDepth(depth); foreach (var v in typesAtDepth) { UDCTree subTree = new UDCTree(v); Console.WriteLine("Running Inference for {0} ...", v.Value.MetadataName); var typeNamesOfDescendants = UDCHierarchy.GetTypeNamesOfDescendants(v); miner = new SubtypeMiner(new HashSet <string>(typeNamesOfDescendants), _typeRelations, 50); SubTreeResults res = new SubTreeResults(subTree, miner); MiningResults.Add(res); if (miner.NumRelationships == 0) { continue; } res.computeScores(); try { _typeRelations.ToDot("results/" + v.Value.ToDisplayString() + ".dot", _pathProcessor, res.clusteringResult); writeResultsToDisk(_pathProcessor, res, ResultsDirectory + v.Value.ToDisplayString() + "_result.txt"); } catch (Exception e) { Console.WriteLine("{0}", e.Message); continue; } } }
private void ShowResults(MiningResults rslt) { if (InvokeRequired) { var a = new Action <MiningResults>(ShowResults); Invoke(a, new object[] { rslt }); } else { ClearListBoxs(); if (param.MineFrequent) { foreach (var v in rslt.FrequentPatterns) { lboxFrequent.Items.Add(v); } lblFrequent.Text = "Frequent = " + lboxFrequent.Items.Count; } if (param.MineClosed) { foreach (var v in rslt.ClosedPatterns) { lboxClosed.Items.Add(v); } lblClosed.Text = "Closed = " + lboxClosed.Items.Count; } if (param.MineMaximal) { foreach (var v in rslt.MaximalPatterns) { lboxMaximal.Items.Add(v); } lblMaximal.Text = "Maximal = " + lboxMaximal.Items.Count; } miningResults = rslt; lblMiningParams.Text = rslt.MiningParams.ToString(); lblMiningResult.Text = rslt.ToString().Substring(lblMiningParams.Text.Length + 2); MessageBox.Show(rslt.ToString()); } }
public void startTypeSpecificNameFlowInference(UDCTree UDCHierarchy, int depth = 0) { var typeLocationDict = UDCHierarchy.getUDTLineSpans(); SubtypeMiner miner = null; var typesAtDepth = UDCHierarchy.GetAllTypesAtDepth(depth); foreach (var v in UDCHierarchy.getAllTypes()) { if (v.Value.Locations.Length == 0 || !v.Value.Locations.All(x => x.IsInSource)) { continue; } UDCTree subTree = new UDCTree(v); Console.WriteLine("Running Inference for {0} ...", v.Value.MetadataName); miner = new SubtypeMiner(null, _typeRelations, 50, true, v.Value); SubTreeResults res = new SubTreeResults(subTree, miner); try { MiningResults.Add(res); if (miner.NumRelationships == 0) { continue; } res.computeScores(); } catch (Exception e) { Console.WriteLine("{0}", e.Message); continue; } try { //_typeRelations.ToDot(ResultsDirectory + v.Value.ToDisplayString() + ".dot", _pathProcessor, res.clusteringResult); writeResultsToDisk(_pathProcessor, res, ResultsDirectory + v.Value.ToDisplayString() + "_result.txt", miner.GetLineSpanOfType(v.Value)); } catch (Exception e) { Console.WriteLine("{0}", e.Message); continue; } } }
public void startConsolidatedInference(UDCTree UDCHierarchy, int depth = 0) { SubtypeMiner miner = null; List <string> alltypes = new List <string>(); var typesAtDepth = UDCHierarchy.GetAllTypesAtDepth(depth); foreach (var v in typesAtDepth) { List <string> typeNamesOfDescendants = new List <string>(); Console.WriteLine("Running Inference for {0} ...", v.Value.MetadataName); try{ typeNamesOfDescendants = UDCHierarchy.GetTypeNamesOfDescendants(v); } catch (Exception ex) { Console.WriteLine(ex.Message); } alltypes = alltypes.Concat(typeNamesOfDescendants).ToList(); } alltypes = randomUniformSample(alltypes); UDCTree subTree = new UDCTree(typesAtDepth.First()); miner = new SubtypeMiner(new HashSet <string>(alltypes), _typeRelations, 50); SubTreeResults res = new SubTreeResults(subTree, miner); MiningResults.Add(res); if (miner.NumRelationships > 0) { res.computeScores(); try { //_typeRelations.ToDot(ResultsDirectory + "consolidated.dot", _pathProcessor, res.clusteringResult); writeResultsToDisk(_pathProcessor, res, ResultsDirectory + "consolidated" + "_result.txt"); } catch (Exception e) { Console.WriteLine("{0}", e.Message); } } }