public void Sorting_Shortlex()
        {
            var a = new string[0];
            var b = new[] { "Athens" };
            var c = new[] { "Añasco", "Madrid" };
            var d = new[] { "Madrid", "Añasco" };
            var e = new[] { "Paris", "Añasco" };
            var f = new[] { "Paris", "Athens" };
            var g = new[] { "Athens", "Madrid", "Añasco" };
            var h = new[] { "Madrid", "Paris", "Añasco" };
            var i = new[] { "Paris", "Añasco", "Athens" };
            var j = new[] { "Paris", "Athens", "Añasco" };
            var k = new[] { "Madrid", "Paris", "Athens", "New York" };
            var l = new[] { "Paris", "Añasco", "Athens", "New York" };
            var m = new[] { "Paris", "Añasco", "Athens", "Madrid", "New York" };

            var source = new[] { h, d, e, l, g, a, m, c, f, j, b, k, i };

            using (new CultureSwapper(PredefinedCulture.EnglishUnitedStates))
            {
                EnumerableAssert.AreEqual(
                    new[] { a, b, c, d, e, f, g, h, i, j, k, l, m },
                    source.OrderBy(s => s, SequenceComparer <string> .Shortlex));

                EnumerableAssert.AreEqual(
                    new[] { a, b, c, d, f, e, g, h, j, i, k, l, m },
                    source.OrderBy(s => s, SequenceComparer.Create(SequenceComparison.Shortlex, StringComparer.Ordinal)));
            }
        }
Example #2
0
        public void TestBasic()
        {
            Variant v = new Variant(new byte[] { 0x01, 0x02, 0x03 });

            Assert.AreEqual(v.Type, Variant.EnumType.Buffer);
            Assert.IsTrue(v.Is(Variant.EnumType.Buffer));
            Assert.IsTrue(SequenceComparer.Compare(v.AsBuffer(), new byte[] { 0x01, 0x02, 0x03 }) == 0);
        }
Example #3
0
        public void SequenceComparer_SecondSequenceSmaller_ReturnsGreaterThan()
        {
            var x      = new int[] { 1, 1, 3 };
            var y      = new int[] { 1, 0, 3 };
            int result = new SequenceComparer <int>().Compare(x, y);

            Assert.IsTrue(result > 0, "Smaller sequence should be less than larger sequence.");
        }
Example #4
0
        public void SequenceComparer_FirstSequenceSmaller_ReturnsLessThan()
        {
            var x      = new int[] { 1, 1, 3 };
            var y      = new int[] { 1, 2, 3 };
            int result = new SequenceComparer <int>().Compare(x, y);

            Assert.IsTrue(result < 0, "Smaller sequence should be less than larger sequence.");
        }
Example #5
0
        public void SequenceComparer_EqualSequences_ReturnsEqual()
        {
            var x      = new int[] { 1, 2, 3 };
            var y      = new int[] { 1, 2, 3 };
            int result = new SequenceComparer <int>().Compare(x, y);

            Assert.IsTrue(result == 0, "Equal sequences should be equal.");
        }
Example #6
0
        public void SequenceComparer_SecondSequenceEmpty_ReturnsGreaterThan()
        {
            var x      = new int[] { 1 };
            var y      = new int[] { };
            int result = new SequenceComparer <int>().Compare(x, y);

            Assert.IsTrue(result > 0, "Empty sequence should be less than non-empty sequence.");
        }
Example #7
0
        public static void GetByIndexTestHelper(IComparer<char> comparer, params string[] strings)
        {
            var target = QIndexedStringSet.Create(strings, comparer);
            var sequenceComparer = new SequenceComparer<char>(comparer);
            var expected = strings.OrderBy(s => s, sequenceComparer).ToArray();

            for (int i = 0; i < expected.Length; i++)
            {
                Assert.AreEqual(expected[i], target.GetByIndex(i));
            }
        }
Example #8
0
        public static void GetByPrefixTestHelper(IComparer<char> comparer, string prefix, params string[] strings)
        {
            var target = QStringSet.Create(strings, comparer);
            var sequenceComparer = new SequenceComparer<char>(comparer);
            var expected =
                strings.Where(s => s.StartsWith(prefix, StringComparison.Ordinal))
                       .OrderBy(s => s, sequenceComparer)
                       .ToArray();

            var actual = target.EnumerateByPrefix(prefix).ToArray();
            CollectionAssert.AreEqual(expected, actual, sequenceComparer);
        }
        public void Compare_Nulls()
        {
            var x = new[] { "Madrid", "Añasco" };

            foreach (var comparisonType in EnumUtility.GetValues <SequenceComparison>())
            {
                var comparer = SequenceComparer.Create <string>(comparisonType);
                CompareAssert.IsLessThan(null, x, comparer);
                CompareAssert.IsEqualTo(null, null, comparer);
                CompareAssert.IsGreaterThan(x, null, comparer);
            }
        }
Example #10
0
 public static void CreateTestHelper(IComparer<char> comparer, params string[] strings)
 {
     var watch = new Stopwatch();
     watch.Start();
     var target = QStringSet.Create(strings, comparer);
     Console.WriteLine(@"QStringSet.Create() took {0}", watch.Elapsed);
     var sequenceComparer = new SequenceComparer<char>(comparer);
     var expected = strings.OrderBy(s => s, sequenceComparer).ToArray();
     watch.Restart();
     string[] actual = target.Enumerate().ToArray();
     Console.WriteLine(@"QStringSet.ToArray() took {0}", watch.Elapsed);
     Assert.AreEqual(strings.Length, target.Count);
     CollectionAssert.AreEqual(expected, actual, sequenceComparer);
 }
        public static void GetByPrefixWithValueTestHelper(
            IComparer<char> comparer, string prefix, params string[] words)
        {
            var map = QStringMap<int>.Create(words, comparer);
            foreach (var word in words)
            {
                map[word] = word.GetHashCode();
            }

            var sequenceComparer = new SequenceComparer<char>(comparer);
            var expected =
                words.Where(s => s.StartsWith(prefix, StringComparison.Ordinal))
                     .OrderBy(s => s, sequenceComparer)
                     .Select(s => new KeyValuePair<string, int>(s, s.GetHashCode()))
                     .ToArray();

            var actual = map.EnumerateByPrefixWithValue(prefix).ToArray();
            CollectionAssert.AreEqual(expected, actual);
        }
        public void Serialize_BinaryFormatter()
        {
            var x = new[] { "abc", "def" };
            var y = new[] { "abc", "DEF" };
            var z = new[] { "xyz" };

            var binaryFormatter = new BinaryFormatter();

            using (var stream = new MemoryStream())
            {
                var original = SequenceComparer.Create(SequenceComparison.Shortlex, StringComparer.OrdinalIgnoreCase);
                binaryFormatter.Serialize(stream, original);
                stream.Position = 0;

                var comparer = (SequenceComparer <string>)binaryFormatter.Deserialize(stream);
                CompareAssert.IsEqualTo(x, y, comparer);
                CompareAssert.IsGreaterThan(x, z, comparer);
            }
        }
        public void Compare_Strings()
        {
            var x = new[] { "Madrid", "Añasco" };
            var y = new[] { "Madrid", "Athens" };

            using (new CultureSwapper(PredefinedCulture.EnglishUnitedStates))
            {
                foreach (var comparisonType in EnumUtility.GetValues <SequenceComparison>())
                {
                    var message  = "'ñ' should be less than 't' for default comparison (current culture, en-US).";
                    var comparer = SequenceComparer.Create <string>(comparisonType);
                    CompareAssert.IsLessThan(x, y, comparer, message);
                    CompareAssert.IsEqualTo(x, x, comparer);
                    CompareAssert.IsGreaterThan(y, x, comparer, message);

                    message  = "'ñ' should be greater than 't' for ordinal comparison.";
                    comparer = SequenceComparer.Create(comparisonType, StringComparer.Ordinal);
                    CompareAssert.IsGreaterThan(x, y, comparer, message);
                    CompareAssert.IsEqualTo(x, x, comparer);
                    CompareAssert.IsLessThan(y, x, comparer, message);
                }
            }
        }
Example #14
0
        private void ReducePsms(IList<InputFile> csvFiles, UniquePeptideType uniquePeptideType, bool isBatched = false)
        {
            string msg = "Converting PSMs into unique peptides based ";
            IEqualityComparer<Peptide> comparer;
            switch (uniquePeptideType)
            {
                default:
                    msg += "on sequence only";
                    comparer = new SequenceComparer();
                    break;
                case UniquePeptideType.Mass:
                    msg += "on mass";
                    comparer = new MassComparer();
                    break;
                case UniquePeptideType.SequenceAndModifications:
                    msg += "on sequence and positional modifications";
                    comparer = new SequenceModComparer();
                    break;
                case UniquePeptideType.SequenceAndModLocations:
                    msg += "on sequence and modification locations";
                    comparer = new SequenceAndModPositionComparer();
                    break;
                case UniquePeptideType.SequenceAndMass:
                    msg += "on sequence and mass";
                    comparer = new SequenceMassComparer();
                    break;
                case UniquePeptideType.Nothing:
                    msg += "on nothing (no reduction)";
                    comparer = new IdentityComparer<Peptide>();
                    break;
            }
            Log(msg);

            foreach (InputFile csvFile in csvFiles)
            {
                csvFile.ReducePsms(comparer);
                Log(string.Format("{0:N0} unique peptides remain from {1:N0} PSMs from {2}", csvFile.Peptides.Count, csvFile.PeptideSpectralMatches.Count, csvFile.Name));
            }

            if (!isBatched)
                return;

            Dictionary<Peptide, Peptide> peptideDictionary = new Dictionary<Peptide, Peptide>(comparer);
            foreach (Peptide peptide in csvFiles.SelectMany(csvFile => csvFile.Peptides))
            {
                Peptide realPeptide;
                if (peptideDictionary.TryGetValue(peptide, out realPeptide))
                {
                    foreach (PSM psm in peptide.PSMs)
                    {
                        realPeptide.AddPsm(psm);
                    }
                }
                else
                {
                    Peptide newPeptide = new Peptide(peptide);
                    peptideDictionary.Add(newPeptide, newPeptide);
                }
            }
            _allPeptides = peptideDictionary.Values.ToList();
            Log(string.Format("{0:N0} unique peptides from all files [Batched]", _allPeptides.Count));
        }