public void CompressMissedMonoisotopics() { cList.Clear(); L.neucode_labeled = false; List <double> possibleMissedMonoisotopicsList = Enumerable.Range(-3, 7).Select(x => 1000d + ((double)x) * Lollipop.MONOISOTOPIC_UNIT_MASS).ToList(); int counter = 0; foreach (double mass in possibleMissedMonoisotopicsList) { Component c = new Component(); InputFile i = new InputFile("path", Purpose.Identification); c.input_file = i; c.id = counter.ToString(); c.weighted_monoisotopic_mass = mass; if (counter == 3) { ChargeState cs1 = new ChargeState(10, 100d, (mass + 10d * Lollipop.PROTON_MASS) / 10d);//(int charge_count, double intensity, double mz_centroid) c.charge_states.Add(cs1); } else { ChargeState cs1 = new ChargeState(10, 50d, (mass + 10d * Lollipop.PROTON_MASS) / 10d);//(int charge_count, double intensity, double mz_centroid) c.charge_states.Add(cs1); } c.min_scan = 1; c.max_scan = 2; c.calculate_properties(); cList.Add(c); counter++; } List <Component> compressed = new List <Component>(cr.remove_monoisotopic_duplicates_harmonics_from_same_scan(cList)); Assert.AreEqual(1, compressed.Count); Assert.AreEqual(400d, compressed.FirstOrDefault().intensity_sum); foreach (double mass in possibleMissedMonoisotopicsList) { Component c = new Component(); InputFile i = new InputFile("path", Purpose.Identification); c.input_file = i; c.id = counter.ToString(); c.weighted_monoisotopic_mass = mass + 1000d; if (counter == 10) { ChargeState cs1 = new ChargeState(10, 100d, (c.weighted_monoisotopic_mass + 10d * Lollipop.PROTON_MASS) / 10d);//(int charge_count, double intensity, double mz_centroid) c.charge_states.Add(cs1); } else { ChargeState cs1 = new ChargeState(10, 50d, (c.weighted_monoisotopic_mass + 10d * Lollipop.PROTON_MASS) / 10d);//(int charge_count, double intensity, double mz_centroid) c.charge_states.Add(cs1); } c.min_scan = 3; c.max_scan = 4; c.calculate_properties(); cList.Add(c); counter++; } compressed = cr.remove_monoisotopic_duplicates_harmonics_from_same_scan(cList); Assert.AreEqual(2, compressed.Count); }