public static void RunExperiment(string name, string folder, string prefix, string outputDirectory = "") { if (outputDirectory == String.Empty) { outputDirectory = Path.Combine(Drive.GetDriveRoot(), BenchmarkDirectory); //Environment.GetFolderPath(Environment.SpecialFolder.Desktop); } var drive = new Drive(folder, Drive.Reason.Read); var experiment = new Experiment(drive.Files(prefix).ToList(), UseOcr); var mixed = experiment.MixedOrder; var normal = experiment.CorrectOrder; var results = Reconstructor.NaiveKruskalAlgorithm(mixed); var difference = experiment.Diff(results); var resultImg = Path.Combine(outputDirectory, name + "_result.png"); Stitcher.ExportImage((Cluster)results.First().Root(), resultImg); var sb = new StringBuilder(); sb.AppendLine(name); sb.AppendLine(folder); sb.AppendLine(difference.ToString()); mixed.ForEach(shred => sb.Append(" " + shred.Id + ", ")); sb.AppendLine(); normal.ForEach(shred => sb.Append(" " + shred.Id + ", ")); sb.AppendLine(); results.ForEach(shred => sb.Append(" " + shred.Id + ", ")); sb.AppendLine(); Console.WriteLine(sb.ToString()); File.WriteAllText(Path.Combine(outputDirectory, name + ".txt"), sb.ToString()); }
public void NaiveKruskalArtificial() { Shred.BUFFER = 0; Shred.SAMPLE_SIZE = 4; var path = Path.Combine(Drive.GetDriveRoot(), Dir.ArtificialTestDirectory, Dir.NaiveKruskalHttpDocument); var shreds = Shred.Factory("image", path, false); var results = Reconstructor.NaiveKruskalAlgorithm(shreds); var checker = Helpers.BuildChecker(Path.Combine(path, Helpers.CheckFile)); shreds.ForEach(shred => Console.Write(" " + shred.Id + ", ")); Console.WriteLine(); results.ForEach(shred => Console.Write(" " + shred.Id + ", ")); Console.WriteLine(); var indicies = results.Select((t, pos) => new Tuple <int, Shred>(pos, t)).ToList(); var result = indicies.Select(pair => { var filename = Path.GetFileName(pair.Item2.Filepath); Assert.IsNotNull(filename); Assert.IsNotNull(checker[filename]); var expected = checker[filename]; var actual = pair.Item1; Console.WriteLine("Actual " + actual + " vs. " + expected + " | File: " + filename); return(actual.ToString(CultureInfo.InvariantCulture) == expected); }).ToList(); // var diff = Differ.DiffShredByOrder(results.Select(shred => shred.Id).ToList(), //Enumerable.Range(0, results.Count).Select(ii => (long)ii).ToList()); // Console.WriteLine("Difference : " + diff); ExportResult((Cluster)shreds.First().Root(), "../../visualizer/NaiveKruskalArtifical.png"); }
public static void Reconstruct(string prefix, string dir, bool display) { Console.WriteLine("Loading Shreds"); var shreds = Shred.Factory(prefix, dir, false); Console.WriteLine("Comparing And Clusering"); var results = Reconstructor.NaiveKruskalAlgorithm(shreds); Console.WriteLine("Exporting Results"); NaiveKruskalTests.ExportResult((Cluster)results.First().Root(), Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "output.png"), Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "json.js")); }
public void NaiveKruskalAuthentic() { var path = Path.Combine(Drive.GetDriveRoot(), Dir.PdfRequiremnetTestDirectory, Dir.PdfRequiremnetTestFullOne); var shreds = Shred.Factory("image", path, false); var results = Reconstructor.NaiveKruskalAlgorithm(shreds); shreds.ForEach(shred => Console.Write(" " + shred.Id + ", ")); Console.WriteLine(); results.ForEach(shred => Console.Write(" " + shred.Id + ", ")); Console.WriteLine(); var diff = Differ.DiffShredByOrder(results.Select(shred => shred.Id).ToList(), Enumerable.Range(0, results.Count).Select(ii => (long)ii).ToList()); Console.WriteLine("Difference : " + diff); ExportResult((Cluster)results.First().Root(), "../../visualizer/NaiveKruskalAuthentic.png"); }
public string Reconstruct(string prefix, string dir, bool display) { StringBuilder sb = new StringBuilder(); WriteToLog("Loading Shreds"); var shreds = Shred.Factory(prefix, dir, false); WriteToLog("Comparing And Clusering"); var results = Reconstructor.NaiveKruskalAlgorithm(shreds); WriteToLog("Exporting Results"); string currentDir = Directory.GetCurrentDirectory(); NaiveKruskalTests.ExportResult((Cluster)results.First().Root(), Path.Combine(currentDir, "output.png"), Path.Combine(currentDir, "json.js")); WriteToLog("Export Complete"); return(sb.ToString()); }
public void NaiveKruskalPrimitive() { Shred.BUFFER = 0; Shred.SAMPLE_SIZE = 1; var folder = Path.Combine(Drive.GetDriveRoot(), Dir.NaiveKruskalTestDirectory); var paths = new List <string>(); paths.Add(Path.Combine(folder, NaiveThree)); paths.Add(Path.Combine(folder, NaiveSix)); paths.Add(Path.Combine(folder, NaiveTen)); foreach (var path in paths) { var shreds = Shred.Factory("Shred", path, false); var checker = Helpers.BuildChecker(Path.Combine(path, Helpers.CheckFile)); var results = Reconstructor.NaiveKruskalAlgorithm(shreds); var indicies = results.Select((t, pos) => new Tuple <int, Shred>(pos, t)).ToList(); Console.WriteLine(" ---- " + path + "----"); var result = indicies.Select(pair => { var filename = Path.GetFileName(pair.Item2.Filepath); Assert.IsNotNull(filename); Assert.IsNotNull(checker[filename]); var expected = checker[filename]; var actual = pair.Item1; Console.WriteLine("Actual " + actual + " vs. " + expected + " | File: " + filename); return(actual.ToString(CultureInfo.InvariantCulture) == expected); }).ToList(); Exporter.ExportJson(results.First().Root()); Console.WriteLine(); result.ForEach(Assert.IsTrue); } }