public void AllPartialVariantsSearchTest() { string tempFilename = Path.GetTempFileName(); const long sequenceLength = 8; const ulong itself = Links.Itself; using (var links = new Links(tempFilename, LinksSizeStep)) { var sequence = new ulong[sequenceLength]; for (int i = 0; i < sequenceLength; i++) sequence[i] = links.Create(itself, itself); var sequences = new Sequences(links); var createResults = sequences.CreateAllVariants2(sequence); //var createResultsStrings = createResults.Select(x => x + ": " + sequences.FormatSequence(x)).ToList(); //Global.Trash = createResultsStrings; var partialSequence = new ulong[sequenceLength - 2]; Array.Copy(sequence, 1, partialSequence, 0, sequenceLength - 2); var sw1 = Stopwatch.StartNew(); var searchResults1 = sequences.GetAllPartiallyMatchingSequences0(partialSequence); sw1.Stop(); var sw2 = Stopwatch.StartNew(); var searchResults2 = sequences.GetAllPartiallyMatchingSequences1(partialSequence); sw2.Stop(); //var sw3 = Stopwatch.StartNew(); //var searchResults3 = sequences.GetAllPartiallyMatchingSequences2(partialSequence); sw3.Stop(); //Global.Trash = searchResults3; //var searchResults1Strings = searchResults1.Select(x => x + ": " + sequences.FormatSequence(x)).ToList(); //Global.Trash = searchResults1Strings; var intersection1 = createResults.Intersect(searchResults1).ToList(); Assert.IsTrue(intersection1.Count == createResults.Length); var intersection2 = createResults.Intersect(searchResults2).ToList(); Assert.IsTrue(intersection2.Count == createResults.Length); for (int i = 0; i < sequenceLength; i++) links.Delete(sequence[i]); } File.Delete(tempFilename); }
public void BalancedPartialVariantsSearchTest() { string tempFilename = Path.GetTempFileName(); const long sequenceLength = 200; const ulong itself = Links.Itself; using (var links = new Links(tempFilename, LinksSizeStep)) { var sequence = new ulong[sequenceLength]; for (int i = 0; i < sequenceLength; i++) sequence[i] = links.Create(itself, itself); var sequences = new Sequences(links); var balancedVariant = sequences.CreateBalancedVariant(sequence); var partialSequence = new ulong[sequenceLength - 2]; Array.Copy(sequence, 1, partialSequence, 0, sequenceLength - 2); var sw1 = Stopwatch.StartNew(); var searchResults1 = sequences.GetAllPartiallyMatchingSequences0(partialSequence); sw1.Stop(); var sw2 = Stopwatch.StartNew(); var searchResults2 = sequences.GetAllPartiallyMatchingSequences1(partialSequence); sw2.Stop(); Assert.IsTrue(searchResults1.Count == 1 && balancedVariant == searchResults1[0]); Assert.IsTrue(searchResults2.Count == 1 && balancedVariant == searchResults2.First()); for (int i = 0; i < sequenceLength; i++) links.Delete(sequence[i]); } File.Delete(tempFilename); }