public TestDataFile(PeptideWithSetModifications pepWithSetMods, int charge, double intensity, double rt) : base(2, new SourceFile(null, null, null, null, null)) { var mz1 = new double[] { pepWithSetMods.MonoisotopicMass.ToMz(charge), (pepWithSetMods.MonoisotopicMass + 1.003).ToMz(charge), (pepWithSetMods.MonoisotopicMass + 2.005).ToMz(charge) }; var intensities1 = new double[] { intensity, intensity * 10, intensity / 10 }; var MassSpectrum1 = new MzmlMzSpectrum(mz1, intensities1, false); var ScansHere = new List <IMzmlScan> { new MzmlScan(1, MassSpectrum1, 1, true, Polarity.Positive, rt, new MzLibUtil.MzRange(0, 10000), "ff", MZAnalyzerType.Unknown, 1000, 1, "scan=1") }; List <double> mz2 = new List <double>(); List <double> intensities2 = new List <double>(); foreach (var aok in pepWithSetMods.CompactPeptide(TerminusType.None).ProductMassesMightHaveDuplicatesAndNaNs(new List <ProductType> { ProductType.B, ProductType.Y })) { mz2.Add(aok.ToMz(1)); mz2.Add((aok + 1.003).ToMz(1)); intensities2.Add(intensity); intensities2.Add(intensity); } var MassSpectrum2 = new MzmlMzSpectrum(mz2.OrderBy(b => b).ToArray(), intensities2.ToArray(), false); var scan2 = new MzmlScanWithPrecursor(2, MassSpectrum2, 2, true, Polarity.Positive, rt + 0.01, new MzLibUtil.MzRange(0, 10000), "df", MZAnalyzerType.Orbitrap, 234734, pepWithSetMods.MonoisotopicMass.ToMz(2), 2, 1, pepWithSetMods.MonoisotopicMass.ToMz(2), 2, DissociationType.HCD, 1, pepWithSetMods.MonoisotopicMass.ToMz(2), 1, "scan=2"); scan2.ComputeSelectedPeakIntensity(MassSpectrum1); scan2.ComputeMonoisotopicPeakIntensity(MassSpectrum1); ScansHere.Add(scan2); Scans = ScansHere.ToArray(); }
public void Setup() { double[] mz = { 328.73795, 329.23935, 447.73849, 448.23987, 482.23792, 482.57089, 482.90393, 500.95358, 501.28732, 501.62131, 611.99377, 612.32806, 612.66187, 722.85217, 723.35345 }; double[] intensities = { 81007096.0, 28604418.0, 78353512.0, 39291696.0, 122781408.0, 94147520.0, 44238040.0, 71198680.0, 54184096.0, 21975364.0, 44514172.0, 43061628.0, 23599424.0, 56022696.0, 41019144.0 }; _mzSpectrumA = new MzmlMzSpectrum(mz, intensities, false); }
public static void DifferentAnalyzersTest() { IMzmlScan[] scans = new IMzmlScan[2]; double[] intensities1 = new double[] { 1 }; double[] mz1 = new double[] { 50 }; MzmlMzSpectrum massSpec1 = new MzmlMzSpectrum(mz1, intensities1, false); scans[0] = new MzmlScan(1, massSpec1, 1, true, Polarity.Positive, 1, new MzRange(1, 100), "f", MZAnalyzerType.Orbitrap, massSpec1.SumOfAllY, null, "1"); double[] intensities2 = new double[] { 1 }; double[] mz2 = new double[] { 30 }; MzmlMzSpectrum massSpec2 = new MzmlMzSpectrum(mz2, intensities2, false); scans[1] = new MzmlScanWithPrecursor(2, massSpec2, 2, true, Polarity.Positive, 2, new MzRange(1, 100), "f", MZAnalyzerType.IonTrap3D, massSpec2.SumOfAllY, 50, null, null, 50, 1, DissociationType.CID, 1, null, null, "2"); FakeMsDataFile f = new FakeMsDataFile(scans); MzmlMethods.CreateAndWriteMyMzmlWithCalibratedSpectra(f, Path.Combine(TestContext.CurrentContext.TestDirectory, "asdfefsf.mzML"), false); Mzml ok = Mzml.LoadAllStaticData(Path.Combine(TestContext.CurrentContext.TestDirectory, "asdfefsf.mzML")); Assert.AreEqual(MZAnalyzerType.Orbitrap, ok.First().MzAnalyzer); Assert.AreEqual(MZAnalyzerType.IonTrap3D, ok.Last().MzAnalyzer); }
private MzmlMzSpectrum CreateSpectrum(ChemicalFormula f, double lowerBound, double upperBound, int minCharge) { IsotopicDistribution isodist = IsotopicDistribution.GetDistribution(f, 0.1, 0.001); MzmlMzSpectrum notActuallyMzS = new MzmlMzSpectrum(isodist.Masses.ToArray(), isodist.Intensities.ToArray(), false); notActuallyMzS.ReplaceXbyApplyingFunction(b => b.X.ToMz(1)); List <double> allMasses = new List <double>(); List <double> allIntensitiess = new List <double>(); while (notActuallyMzS.FirstX > lowerBound) { foreach (var thisPeak in notActuallyMzS) { if (thisPeak.Mz > lowerBound && thisPeak.Mz < upperBound) { allMasses.Add(thisPeak.Mz); allIntensitiess.Add(thisPeak.Intensity); } } minCharge += 1; notActuallyMzS = new MzmlMzSpectrum(isodist.Masses.ToArray(), isodist.Intensities.ToArray(), false); notActuallyMzS.ReplaceXbyApplyingFunction(s => s.X.ToMz(minCharge)); } var allMassesArray = allMasses.ToArray(); var allIntensitiessArray = allIntensitiess.ToArray(); Array.Sort(allMassesArray, allIntensitiessArray); return(new MzmlMzSpectrum(allMassesArray, allIntensitiessArray, false)); }
public TestDataFile(PeptideWithSetModifications pepWithSetMods, string v) : base(2, new SourceFile(null, null, null, null, null)) { if (v.Equals("quadratic")) { // Add three ms1 peaks with charge 2, exact var MassSpectrum1 = new MzmlMzSpectrum(new double[] { pepWithSetMods.MonoisotopicMass.ToMz(2), (pepWithSetMods.MonoisotopicMass + 1.003).ToMz(2), (pepWithSetMods.MonoisotopicMass + 2.005).ToMz(2) }, new double[] { 1, 1, 1 }, false); List <double> mz2 = new List <double>(); List <double> intensities2 = new List <double>(); foreach (var aok in pepWithSetMods.CompactPeptide(TerminusType.None).ProductMassesMightHaveDuplicatesAndNaNs(new List <ProductType> { ProductType.B, ProductType.Y })) { var t1 = aok.ToMz(1); var c = 0.0000001; mz2.Add(t1 + c * Math.Pow(t1, 2)); var t2 = (aok + 1.003).ToMz(1); mz2.Add(t2 + c * Math.Pow(t2, 2)); intensities2.Add(1); intensities2.Add(1); } var MassSpectrum2 = new MzmlMzSpectrum(mz2.OrderBy(b => b).ToArray(), intensities2.ToArray(), false); var scan2 = new MzmlScanWithPrecursor(2, MassSpectrum2, 2, true, Polarity.Positive, 2, new MzLibUtil.MzRange(0, 10000), "df", MZAnalyzerType.Orbitrap, 234734, pepWithSetMods.MonoisotopicMass.ToMz(2), 2, 1, pepWithSetMods.MonoisotopicMass.ToMz(2), 2, DissociationType.HCD, 1, pepWithSetMods.MonoisotopicMass.ToMz(2), 1, "scan=2"); scan2.ComputeSelectedPeakIntensity(MassSpectrum1); scan2.ComputeMonoisotopicPeakIntensity(MassSpectrum1); var ScansHere = new List <IMzmlScan> { new MzmlScan(1, MassSpectrum1, 1, true, Polarity.Positive, 1, new MzLibUtil.MzRange(0, 10000), "ff", MZAnalyzerType.Unknown, 1000, 1, "scan=1"), scan2 }; Scans = ScansHere.ToArray(); } }
public void FilterByNumberOfMostIntenseRobTest() { double[] x = new double[] { 50, 60, 70, 147.0764, 257.1244, 258.127, 275.135 }; double[] y = new double[] { 1, 1, 1, 1, 1, 1, 1 }; MzmlMzSpectrum spectrum = new MzmlMzSpectrum(x, y, false); Assert.AreEqual(7, spectrum.FilterByNumberOfMostIntense(200).Count()); }
public TestScan(int OneBasedScanNumber, double RetentionTime, MzmlMzSpectrum MassSpectrum, double InjectionTime) { MsnOrder = 1; this.OneBasedScanNumber = OneBasedScanNumber; this.RetentionTime = RetentionTime; this.MassSpectrum = MassSpectrum; this.InjectionTime = InjectionTime; }
public static void TestVeryCloseExperimentalsModern() { IDictionary <int, List <Modification> > mods = new Dictionary <int, List <Modification> >(); ModificationMotif.TryGetMotif("M", out ModificationMotif motif); var prot = new Protein("MMMM", null, null, null, mods); DigestionParams digestionParams = new DigestionParams { MinPeptideLength = 1, }; var thePep = prot.Digest(digestionParams, new List <ModificationWithMass>(), new List <ModificationWithMass>()).First(); var massArray = thePep.CompactPeptide(TerminusType.None).ProductMassesMightHaveDuplicatesAndNaNs(new List <ProductType> { ProductType.B, ProductType.Y }); Array.Sort(massArray); double[] intensities = new double[] { 1, 1, 1, 1 }; double[] mz = new double[] { 1, 2, massArray[4].ToMz(1), massArray[4].ToMz(1) + 1e-9 }; MzmlMzSpectrum massSpectrum = new MzmlMzSpectrum(mz, intensities, false); IMsDataScanWithPrecursor <IMzSpectrum <IMzPeak> > scan = new MzmlScanWithPrecursor(1, massSpectrum, 1, true, Polarity.Positive, 1, new MzRange(300, 2000), "", MZAnalyzerType.Unknown, massSpectrum.SumOfAllY, 0, null, null, 0, null, DissociationType.Unknown, 1, null, null, "scan=1"); PeptideSpectralMatch[] globalPsms = new PeptideSpectralMatch[1]; Ms2ScanWithSpecificMass[] arrayOfSortedMS2Scans = { new Ms2ScanWithSpecificMass(scan, 600, 1, null) }; CommonParameters CommonParameters = new CommonParameters { ProductMassTolerance = new PpmTolerance(5), DigestionParams = new DigestionParams { MaxMissedCleavages = 0, MinPeptideLength = null, MaxModificationIsoforms = int.MaxValue, InitiatorMethionineBehavior = InitiatorMethionineBehavior.Retain, }, ConserveMemory = false, ScoreCutoff = 1 }; var indexEngine = new IndexingEngine(new List <Protein> { prot }, new List <ModificationWithMass>(), new List <ModificationWithMass>(), new List <ProductType> { ProductType.B, ProductType.Y }, 1, DecoyType.Reverse, new List <IDigestionParams> { CommonParameters.DigestionParams }, CommonParameters, 30000, new List <string>()); var indexResults = (IndexingResults)indexEngine.Run(); var cse = new ModernSearchEngine(globalPsms, arrayOfSortedMS2Scans, indexResults.PeptideIndex, indexResults.FragmentIndex, new List <ProductType> { ProductType.B, ProductType.Y }, 0, CommonParameters, false, new OpenSearchMode(), 0, new List <string>()); cse.Run(); Assert.Less(globalPsms[0].Score, 2); Assert.Greater(globalPsms[0].Score, 1); }
public static void TestIdenticalPeaks() { IDictionary <int, List <Modification> > mods = new Dictionary <int, List <Modification> >(); ModificationMotif.TryGetMotif("M", out ModificationMotif motif); mods.Add(1, new List <Modification> { new ModificationWithMass("Hehe", null, motif, TerminusLocalization.NProt, 18.010565, null, null, null, null) }); var prot = new Protein("MMMM", null, null, null, mods); DigestionParams digestionParams = new DigestionParams { MinPeptideLength = 1, }; var ye = prot.Digest(digestionParams, new List <ModificationWithMass>(), new List <ModificationWithMass>()).First(); var massArray = ye.CompactPeptide(TerminusType.None).ProductMassesMightHaveDuplicatesAndNaNs(new List <ProductType> { ProductType.B, ProductType.Y }); Array.Sort(massArray); double[] intensities = new double[] { 1, 1, 1, 1 }; double[] mz = new double[] { massArray[0].ToMz(1), massArray[2].ToMz(1), massArray[4].ToMz(1), 10000 }; MzmlMzSpectrum massSpectrum = new MzmlMzSpectrum(mz, intensities, false); IMsDataScanWithPrecursor <IMzSpectrum <IMzPeak> > scan = new MzmlScanWithPrecursor(1, massSpectrum, 1, true, Polarity.Positive, 1, new MzRange(300, 2000), "", MZAnalyzerType.Unknown, massSpectrum.SumOfAllY, 0, null, null, 0, null, DissociationType.Unknown, 1, null, null, "scan=1"); PeptideSpectralMatch[] globalPsms = new PeptideSpectralMatch[1]; Ms2ScanWithSpecificMass[] arrayOfSortedMS2Scans = { new Ms2ScanWithSpecificMass(scan, 0, 0, null) }; CommonParameters CommonParameters = new CommonParameters { DigestionParams = new DigestionParams { MaxMissedCleavages = 0, MinPeptideLength = null, MaxModificationIsoforms = int.MaxValue, InitiatorMethionineBehavior = InitiatorMethionineBehavior.Retain, }, ProductMassTolerance = new PpmTolerance(5), ConserveMemory = false, ScoreCutoff = 1 }; ClassicSearchEngine cse = new ClassicSearchEngine(globalPsms, arrayOfSortedMS2Scans, new List <ModificationWithMass>(), new List <ModificationWithMass>(), new List <Protein> { prot }, new List <ProductType> { ProductType.B, ProductType.Y }, new OpenSearchMode(), false, CommonParameters, CommonParameters.ProductMassTolerance, new List <string>()); cse.Run(); Assert.Less(globalPsms[0].Score, 4); Assert.Greater(globalPsms[0].Score, 3); }
public static void WriteEmptyScan() { double[] intensities1 = new double[] { }; double[] mz1 = new double[] { }; MzmlMzSpectrum massSpec1 = new MzmlMzSpectrum(mz1, intensities1, false); IMzmlScan[] scans = new IMzmlScan[] { new MzmlScan(1, massSpec1, 1, true, Polarity.Positive, 1, new MzRange(1, 100), "f", MZAnalyzerType.Orbitrap, massSpec1.SumOfAllY, null, "1") }; FakeMsDataFile f = new FakeMsDataFile(scans); MzmlMethods.CreateAndWriteMyMzmlWithCalibratedSpectra(f, Path.Combine(TestContext.CurrentContext.TestDirectory, "mzmlWithEmptyScan.mzML"), false); Mzml ok = Mzml.LoadAllStaticData(Path.Combine(TestContext.CurrentContext.TestDirectory, "mzmlWithEmptyScan.mzML")); MzmlMethods.CreateAndWriteMyMzmlWithCalibratedSpectra(ok, Path.Combine(TestContext.CurrentContext.TestDirectory, "mzmlWithEmptyScan2.mzML"), false); }
public void WriteMzmlTest() { var peptide = new Peptide("GPEAPPPALPAGAPPPCTAVTSDHLNSLLGNILR"); OldSchoolChemicalFormulaModification carbamidomethylationOfCMod = new OldSchoolChemicalFormulaModification(ChemicalFormula.ParseFormula("H3C2NO"), "carbamidomethylation of C", ModificationSites.C); peptide.AddModification(carbamidomethylationOfCMod); MzmlMzSpectrum MS1 = CreateSpectrum(peptide.GetChemicalFormula(), 300, 2000, 1); MzmlMzSpectrum MS2 = CreateMS2spectrum(peptide.Fragment(FragmentTypes.b | FragmentTypes.y, true), 100, 1500); IMzmlScan[] Scans = new IMzmlScan[2]; Scans[0] = new MzmlScan(1, MS1, 1, true, Polarity.Positive, 1.0, new MzRange(300, 2000), " first spectrum", MZAnalyzerType.Unknown, MS1.SumOfAllY, 1, "scan=1"); Scans[1] = new MzmlScanWithPrecursor(2, MS2, 2, true, Polarity.Positive, 2.0, new MzRange(100, 1500), " second spectrum", MZAnalyzerType.Unknown, MS2.SumOfAllY, 1134.26091302033, 3, 0.141146966879759, 1134.3, 1, DissociationType.Unknown, 1, 1134.26091302033, 1, "scan=2"); var myMsDataFile = new FakeMsDataFile(Scans); var oldFirstValue = myMsDataFile.GetOneBasedScan(1).MassSpectrum.FirstX; var secondScan = myMsDataFile.GetOneBasedScan(2) as IMsDataScanWithPrecursor <MzmlMzSpectrum>; Assert.AreEqual(1, secondScan.IsolationRange.Maximum - secondScan.IsolationRange.Minimum); MzmlMethods.CreateAndWriteMyMzmlWithCalibratedSpectra(myMsDataFile, "argh.mzML", false); Mzml okay = Mzml.LoadAllStaticData(@"argh.mzML"); okay.GetOneBasedScan(2); Assert.AreEqual(1, okay.GetClosestOneBasedSpectrumNumber(1)); Assert.AreEqual(2, okay.GetClosestOneBasedSpectrumNumber(2)); var newFirstValue = okay.GetOneBasedScan(1).MassSpectrum.FirstX; Assert.AreEqual(oldFirstValue.Value, newFirstValue.Value, 1e-9); var secondScan2 = okay.GetOneBasedScan(2) as IMsDataScanWithPrecursor <MzmlMzSpectrum>; Assert.AreEqual(1, secondScan2.IsolationRange.Maximum - secondScan2.IsolationRange.Minimum); secondScan2.MassSpectrum.ReplaceXbyApplyingFunction((a) => 44); Assert.AreEqual(44, secondScan2.MassSpectrum.LastX); }
public TestDataFile(string slightlyLargerDataFile) : base(2, new SourceFile(null, null, null, null, null)) { var mz1 = new double[] { 50, 60, 70, 80, 90, 630.27216.ToMz(2) }; var intensities1 = new double[] { 1, 1, 1, 1, 1, 1 }; var MassSpectrum1 = new MzmlMzSpectrum(mz1, intensities1, false); var ScansHere = new List <IMzmlScan> { new MzmlScan(1, MassSpectrum1, 1, true, Polarity.Positive, 1, new MzLibUtil.MzRange(0, 10000), "ff", MZAnalyzerType.Unknown, 1000, 1, "scan=1") }; var mz2 = new double[] { 50, 60, 70, 76.0393, 133.0608, 147.0764, 190.0822, 247.1037, 257.1244, 258.127, 275.1350, 385.1830, 442.2045, 630.27216 }; var intensities2 = new double[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; var MassSpectrum2 = new MzmlMzSpectrum(mz2, intensities2, false); ScansHere.Add(new MzmlScanWithPrecursor(2, MassSpectrum2, 2, true, Polarity.Positive, 2, new MzLibUtil.MzRange(0, 10000), "f", MZAnalyzerType.Unknown, 100000, 630.27216.ToMz(2), 2, 1, 630.27216.ToMz(2), 2, DissociationType.HCD, 1, 630.27216.ToMz(2), 1, "scan=2")); Scans = ScansHere.ToArray(); }
public TestDataFile(bool emptyScan) : base(2, new SourceFile(null, null, null, null, null)) { var mz1 = new double[] { 50 }; var intensities1 = new double[] { 1 }; var MassSpectrum1 = new MzmlMzSpectrum(mz1, intensities1, false); var ScansHere = new List <IMzmlScan> { new MzmlScan(1, MassSpectrum1, 1, true, Polarity.Positive, 1, new MzLibUtil.MzRange(0, 10000), "ff", MZAnalyzerType.Unknown, 1000, 1, "scan=1") }; var mz2 = new double[] { 1 }; var intensities2 = new double[] { 1 }; var MassSpectrum2 = new MzmlMzSpectrum(mz2, intensities2, false); ScansHere.Add(new MzmlScanWithPrecursor(2, MassSpectrum2, 2, true, Polarity.Positive, 2, new MzLibUtil.MzRange(0, 10000), "f", MZAnalyzerType.Unknown, 100000, 402.18629720155.ToMz(2), 2, 1, 402.18629720155.ToMz(2), 2, DissociationType.HCD, 1, 402.18629720155.ToMz(2), 1, "scan=2")); Scans = ScansHere.ToArray(); }
public TestDataFile(double closeMassDifference) : base(2, new SourceFile(null, null, null, null, null)) { var mz1 = new double[] { 50, 60, 70, 80, 90, 402.18629720155.ToMz(2) }; var intensities1 = new double[] { 1, 1, 1, 1, 1, 1 }; var MassSpectrum1 = new MzmlMzSpectrum(mz1, intensities1, false); var ScansHere = new List <IMzmlScan> { new MzmlScan(1, MassSpectrum1, 1, true, Polarity.Positive, 1, new MzLibUtil.MzRange(0, 10000), "ff", MZAnalyzerType.Unknown, 1000, 1, "scan=1") }; var mz2 = new double[] { 50, 60, 70, 147.0764, 258.132 - closeMassDifference - Constants.protonMass, 258.132 - Constants.protonMass, 275.1350 }; var intensities2 = new double[] { 1, 1, 1, 1, 1, 1, 1 }; var MassSpectrum2 = new MzmlMzSpectrum(mz2, intensities2, false); ScansHere.Add(new MzmlScanWithPrecursor(2, MassSpectrum2, 2, true, Polarity.Positive, 2, new MzLibUtil.MzRange(0, 10000), "f", MZAnalyzerType.Unknown, 100000, 402.18629720155.ToMz(2), 2, 1, 402.18629720155.ToMz(2), 2, DissociationType.HCD, 1, 402.18629720155.ToMz(2), 1, "scan=2")); Scans = ScansHere.ToArray(); }
public void TestCoIsolationDifferentCharges() { Peptide pep1 = new Peptide("AAAAAA"); Peptide pep2 = new Peptide("AAAAAAA[H21]AAAAA"); var dist1 = IsotopicDistribution.GetDistribution(pep1.GetChemicalFormula(), 0.1, 0.01); var dist2 = IsotopicDistribution.GetDistribution(pep2.GetChemicalFormula(), 0.1, 0.01); IMzmlScan[] Scans = new IMzmlScan[2]; double[] ms1intensities = new double[] { 0.8, 0.8, 0.2, 0.02, 0.2, 0.02 }; double[] ms1mzs = dist1.Masses.Select(b => b.ToMz(1)).Concat(dist2.Masses.Select(b => b.ToMz(2))).OrderBy(b => b).ToArray(); double selectedIonMz = ms1mzs[1]; MzmlMzSpectrum MS1 = new MzmlMzSpectrum(ms1mzs, ms1intensities, false); Scans[0] = new MzmlScan(1, MS1, 1, false, Polarity.Positive, 1.0, new MzRange(300, 2000), "first spectrum", MZAnalyzerType.Unknown, MS1.SumOfAllY, null); // Horrible fragmentation, but we don't care about this! double[] ms2intensities = new double[] { 1000 }; double[] ms2mzs = new double[] { 1000 }; MzmlMzSpectrum MS2 = new MzmlMzSpectrum(ms2mzs, ms2intensities, false); double isolationMZ = selectedIonMz; Scans[1] = new MzmlScanWithPrecursor(2, MS2, 2, false, Polarity.Positive, 2.0, new MzRange(100, 1500), "second spectrum", MZAnalyzerType.Unknown, MS2.SumOfAllY, selectedIonMz, null, null, isolationMZ, 2.5, DissociationType.HCD, 1, null, null); var myMsDataFile = new FakeMsDataFile(Scans); var cool = myMsDataFile.Last() as IMsDataScanWithPrecursor <MzmlMzSpectrum>; int maxAssumedChargeState = 2; Tolerance massTolerance = new Tolerance("10 PPM"); var isolatedMasses = cool.GetIsolatedMassesAndCharges(myMsDataFile.GetOneBasedScan(cool.OneBasedPrecursorScanNumber).MassSpectrum, maxAssumedChargeState, massTolerance, 5).ToList(); Assert.AreEqual(2, isolatedMasses.Count); Assert.AreEqual(1, isolatedMasses.Count(b => b.Item2 == 1)); Assert.AreEqual(1, isolatedMasses.Count(b => b.Item2 == 2)); Assert.AreEqual(pep1.MonoisotopicMass, isolatedMasses.Select(b => b.Item1.First().Mz.ToMass(b.Item2)).Min(), 1e-9); Assert.AreEqual(pep2.MonoisotopicMass, isolatedMasses.Select(b => b.Item1.First().Mz.ToMass(b.Item2)).Max(), 1e-9); }
public TestDataFile(List <PeptideWithSetModifications> pepWithSetModss, bool additionalMasses = false) : base(pepWithSetModss.Count * 2, new SourceFile(@"no nativeID format", "mzML format", null, "SHA-1", @"C:\fake.mzML", null)) { var ScansHere = new List <IMzmlScan>(); for (int i = 0; i < pepWithSetModss.Count; i++) { var pepWithSetMods = pepWithSetModss[i]; var mz1 = new double[] { pepWithSetMods.MonoisotopicMass.ToMz(3), (pepWithSetMods.MonoisotopicMass + 1.003).ToMz(3), (pepWithSetMods.MonoisotopicMass + 2.005).ToMz(3), pepWithSetMods.MonoisotopicMass.ToMz(2), (pepWithSetMods.MonoisotopicMass + 1.003).ToMz(2), (pepWithSetMods.MonoisotopicMass + 2.005).ToMz(2) }; var intensities1 = new double[] { 1, 1, 1, 1, 1, 1 }; var MassSpectrum1 = new MzmlMzSpectrum(mz1, intensities1, false); ScansHere.Add(new MzmlScan(2 * i + 1, MassSpectrum1, 1, true, Polarity.Positive, 2 * i, new MzLibUtil.MzRange(0, 10000), "gg", MZAnalyzerType.Orbitrap, 1000, 1, "scan=1")); List <double> mz2 = new List <double>(); List <double> intensities2 = new List <double>(); IEnumerable <double> additionalMassesArray; if (additionalMasses) { additionalMassesArray = new List <double> { 260.08307817722, 397.14199003569, 498.18966850487, 612.23259594625, 683.2697097314, 146.10552769922, 217.14264148437 } } ; else { additionalMassesArray = new List <double>(); } foreach (var aok in pepWithSetMods.CompactPeptide(TerminusType.None).ProductMassesMightHaveDuplicatesAndNaNs(new List <ProductType> { ProductType.B, ProductType.Y }).Concat(additionalMassesArray)) { mz2.Add(aok.ToMz(1)); mz2.Add((aok + 1.003).ToMz(1)); intensities2.Add(1); intensities2.Add(1); } var MassSpectrum2 = new MzmlMzSpectrum(mz2.OrderBy(b => b).ToArray(), intensities2.ToArray(), false); ScansHere.Add(new MzmlScanWithPrecursor(2 * i + 2, MassSpectrum2, 2, true, Polarity.Positive, 2 * i + 1, new MzLibUtil.MzRange(0, 10000), "gg", MZAnalyzerType.Orbitrap, 234734, pepWithSetMods.MonoisotopicMass.ToMz(2), 2, 1, pepWithSetMods.MonoisotopicMass.ToMz(2), 2, DissociationType.HCD, 2 * i + 1, pepWithSetMods.MonoisotopicMass.ToMz(2), 1, "scan=2")); } Scans = ScansHere.ToArray(); }
public TestDataFile(int MS3 = 5) : base(MS3, new SourceFile(null, null, null, null, null)) { var mz1 = new double[] { 50, 60, 70, 80, 90, 764.1376.ToMz(2) }; var intensities1 = new double[] { 1, 1, 1, 1, 1, 1 }; var MassSpectrum1 = new MzmlMzSpectrum(mz1, intensities1, false); var ScansHere = new List <IMzmlScan> { new MzmlScan(1, MassSpectrum1, 1, true, Polarity.Positive, 1, new MzLibUtil.MzRange(0, 10000), "ff", MZAnalyzerType.Unknown, 1000, 1, "scan=1") }; var mz2 = new double[] { 52, 62, 72, 147.0764, 257.1244, 258.127, 275.1350, 502 }; var intensities2 = new double[] { 1, 1, 1, 1, 1, 1, 1, 1 }; var MassSpectrum2 = new MzmlMzSpectrum(mz2, intensities2, false); ScansHere.Add(new MzmlScanWithPrecursor(2, MassSpectrum2, 2, true, Polarity.Positive, 2, new MzLibUtil.MzRange(0, 10000), "f", MZAnalyzerType.Unknown, 100000, 764.1376.ToMz(2), 2, 1, 764.1376.ToMz(2), 2, DissociationType.CID, 1, 764.1376.ToMz(1), 1, "scan=2")); var mz3 = new double[] { 53, 63, 73, 148.0764, 258.1244, 259.127, 276.1350, 503 }; var intensities3 = new double[] { 1, 1, 1, 1, 1, 1, 1, 1 }; var MassSpectrum3 = new MzmlMzSpectrum(mz3, intensities3, false); ScansHere.Add(new MzmlScanWithPrecursor(3, MassSpectrum3, 2, true, Polarity.Positive, 2, new MzLibUtil.MzRange(0, 10000), "f", MZAnalyzerType.Unknown, 100000, 764.1376.ToMz(2), 2, 1, 764.1376.ToMz(2), 2, DissociationType.ETD, 1, 764.1376.ToMz(1), 1, "scan=3")); var mz4 = new double[] { 54, 64, 74, 149.0764, 259.1244, 260.127, 277.1350, 504 }; var intensities4 = new double[] { 1, 1, 1, 1, 1, 1, 1, 1 }; var MassSpectrum4 = new MzmlMzSpectrum(mz4, intensities4, false); ScansHere.Add(new MzmlScanWithPrecursor(4, MassSpectrum4, 3, true, Polarity.Positive, 2, new MzLibUtil.MzRange(0, 10000), "f", MZAnalyzerType.Unknown, 100000, 275.1350.ToMz(1), 1, 1, 275.1350.ToMz(1), 1, DissociationType.HCD, 2, 275.1350.ToMz(1), 1, "scan=4")); var mz5 = new double[] { 55, 65, 75, 150.0764, 260.1244, 261.127, 278.1350, 505 }; var intensities5 = new double[] { 1, 1, 1, 1, 1, 1, 1, 1 }; var MassSpectrum5 = new MzmlMzSpectrum(mz5, intensities5, false); ScansHere.Add(new MzmlScanWithPrecursor(5, MassSpectrum5, 3, true, Polarity.Positive, 2, new MzLibUtil.MzRange(0, 10000), "f", MZAnalyzerType.Unknown, 100000, 257.1244.ToMz(1), 1, 1, 257.1244.ToMz(1), 1, DissociationType.HCD, 2, 257.1244.ToMz(1), 1, "scan=5")); Scans = ScansHere.ToArray(); }
public static void AnotherMzMLtest() { IMzmlScan[] scans = new IMzmlScan[4]; double[] intensities1 = new double[] { 1 }; double[] mz1 = new double[] { 50 }; MzmlMzSpectrum massSpec1 = new MzmlMzSpectrum(mz1, intensities1, false); scans[0] = new MzmlScan(1, massSpec1, 1, true, Polarity.Positive, 1, new MzRange(1, 100), "f", MZAnalyzerType.Orbitrap, massSpec1.SumOfAllY, null, "1"); double[] intensities2 = new double[] { 1 }; double[] mz2 = new double[] { 30 }; MzmlMzSpectrum massSpec2 = new MzmlMzSpectrum(mz2, intensities2, false); scans[1] = new MzmlScanWithPrecursor(2, massSpec2, 2, true, Polarity.Positive, 2, new MzRange(1, 100), "f", MZAnalyzerType.Orbitrap, massSpec2.SumOfAllY, 50, null, null, 50, 1, DissociationType.CID, 1, null, null, "2"); double[] intensities3 = new double[] { 1 }; double[] mz3 = new double[] { 50 }; MzmlMzSpectrum massSpec3 = new MzmlMzSpectrum(mz3, intensities3, false); scans[2] = new MzmlScan(3, massSpec3, 1, true, Polarity.Positive, 1, new MzRange(1, 100), "f", MZAnalyzerType.Orbitrap, massSpec1.SumOfAllY, null, "3"); double[] intensities4 = new double[] { 1 }; double[] mz4 = new double[] { 30 }; MzmlMzSpectrum massSpec4 = new MzmlMzSpectrum(mz4, intensities4, false); scans[3] = new MzmlScanWithPrecursor(4, massSpec4, 2, true, Polarity.Positive, 2, new MzRange(1, 100), "f", MZAnalyzerType.Orbitrap, massSpec2.SumOfAllY, 50, null, null, 50, 1, DissociationType.CID, 3, null, null, "4"); FakeMsDataFile f = new FakeMsDataFile(scans); MzmlMethods.CreateAndWriteMyMzmlWithCalibratedSpectra(f, Path.Combine(TestContext.CurrentContext.TestDirectory, "what.mzML"), false); Mzml ok = Mzml.LoadAllStaticData(Path.Combine(TestContext.CurrentContext.TestDirectory, "what.mzML")); var scanWithPrecursor = ok.Last(b => b is IMsDataScanWithPrecursor <IMzSpectrum <IMzPeak> >) as IMsDataScanWithPrecursor <IMzSpectrum <IMzPeak> >; Assert.AreEqual(3, scanWithPrecursor.OneBasedPrecursorScanNumber); }
public void Setup() { Environment.CurrentDirectory = TestContext.CurrentContext.TestDirectory; UsefulProteomicsDatabases.Loaders.LoadElements(@"elements.dat"); double[] mz = { 328.73795, 329.23935, 447.73849, 448.23987, 482.23792, 482.57089, 482.90393, 500.95358, 501.28732, 501.62131, 611.99377, 612.32806, 612.66187, 722.85217, 723.35345 }; double[] intensities = { 81007096.0, 28604418.0, 78353512.0, 39291696.0, 122781408.0, 94147520.0, 44238040.0, 71198680.0, 54184096.0, 21975364.0, 44514172.0, 43061628.0, 23599424.0, 56022696.0, 41019144.0 }; _mzSpectrumA = new MzmlMzSpectrum(mz, intensities, false); var peptide = new Peptide("KQEEQMETEQQNKDEGK"); MzmlMzSpectrum MS1 = CreateSpectrum(peptide.GetChemicalFormula(), 300, 2000, 1); MzmlMzSpectrum MS2 = CreateMS2spectrum(peptide.Fragment(FragmentTypes.b | FragmentTypes.y, true), 100, 1500); IMzmlScan[] Scans = new IMzmlScan[2]; Scans[0] = new MzmlScan(1, MS1, 1, false, Polarity.Positive, 1.0, new MzRange(300, 2000), "first spectrum", MZAnalyzerType.Unknown, MS1.SumOfAllY, 1); Scans[1] = new MzmlScanWithPrecursor(2, MS2, 2, false, Polarity.Positive, 2.0, new MzRange(100, 1500), "second spectrum", MZAnalyzerType.Unknown, MS2.SumOfAllY, 693.9892, 3, .3872, 693.99, 1, DissociationType.Unknown, 1, 693.6550, 1); myMsDataFile = new FakeMsDataFile(Scans); }
public void ReplaceFirstScanArrays(double[] mz, double[] intensities) { MzmlMzSpectrum massSpectrum = new MzmlMzSpectrum(mz, intensities, false); Scans[0] = new MzmlScan(Scans[0].OneBasedScanNumber, massSpectrum, Scans[0].MsnOrder, Scans[0].IsCentroid, Scans[0].Polarity, Scans[0].RetentionTime, Scans[0].ScanWindowRange, Scans[0].ScanFilter, Scans[0].MzAnalyzer, massSpectrum.SumOfAllY, Scans[0].InjectionTime, Scans[0].NativeId); }
public void TestNumPeaksWithinRange() { double[] xArray = { 1, 2, 3, 4, 5, 6, 7 }; double[] yArray = { 1, 2, 1, 5, 1, 2, 1 }; var thisSpectrum = new MzmlMzSpectrum(xArray, yArray, false); Assert.AreEqual(7, thisSpectrum.NumPeaksWithinRange(double.MinValue, double.MaxValue)); Assert.AreEqual(6, thisSpectrum.NumPeaksWithinRange(1, 7)); Assert.AreEqual(0, thisSpectrum.NumPeaksWithinRange(1, 1)); Assert.AreEqual(1, thisSpectrum.NumPeaksWithinRange(1, 2)); Assert.AreEqual(2, thisSpectrum.NumPeaksWithinRange(0.001, 2.999)); Assert.AreEqual(1, thisSpectrum.NumPeaksWithinRange(0, 1.5)); Assert.AreEqual(1, thisSpectrum.NumPeaksWithinRange(6.5, 8)); Assert.AreEqual(2, thisSpectrum.NumPeaksWithinRange(3, 5)); Assert.AreEqual(2, thisSpectrum.NumPeaksWithinRange(3.5, 5.5)); Assert.AreEqual(1, thisSpectrum.NumPeaksWithinRange(7, 8)); Assert.AreEqual(0, thisSpectrum.NumPeaksWithinRange(8, 9)); Assert.AreEqual(0, thisSpectrum.NumPeaksWithinRange(-2, -1)); Assert.AreEqual("[1 to 7] m/z (Peaks 7)", thisSpectrum.ToString()); //Assert.AreEqual(7, thisSpectrum.FilterByNumberOfMostIntense(7).Size); //Assert.AreEqual(1, thisSpectrum.FilterByNumberOfMostIntense(1).Size); //Assert.AreEqual(4, thisSpectrum.FilterByNumberOfMostIntense(1).FirstX); //Assert.AreEqual(2, thisSpectrum.FilterByNumberOfMostIntense(3).FirstX); //Assert.AreEqual(0, thisSpectrum.FilterByNumberOfMostIntense(0).Size); //Assert.AreEqual(2, thisSpectrum.WithRangeRemoved(2, 6).Size); //Assert.AreEqual(0, thisSpectrum.WithRangeRemoved(0, 100).Size); //Assert.AreEqual(6, thisSpectrum.WithRangeRemoved(7, 100).Size); //Assert.AreEqual(1, thisSpectrum.WithRangeRemoved(new DoubleRange(double.MinValue, 6)).Size); List <DoubleRange> xRanges = new List <DoubleRange> { new DoubleRange(2, 5), new DoubleRange(3, 6) }; //Assert.AreEqual(2, thisSpectrum.WithRangesRemoved(xRanges).Size); //Assert.AreEqual(3, thisSpectrum.Extract(new DoubleRange(4.5, 10)).Size); //Assert.AreEqual(2, thisSpectrum.FilterByY(new DoubleRange(1.5, 2.5)).Size); //Assert.AreEqual(3, thisSpectrum.FilterByY(1.5, double.MaxValue).Size); //Assert.AreEqual(2, thisSpectrum.ApplyFunctionToX(b => b * 2).FirstX); Assert.AreEqual(1, thisSpectrum.GetClosestPeak(-100).X); Assert.AreEqual(7, thisSpectrum.GetClosestPeak(6.6).X); Assert.AreEqual(7, thisSpectrum.GetClosestPeak(7).X); Assert.AreEqual(7, thisSpectrum.GetClosestPeak(8).X); IEnumerable hnm = thisSpectrum; double dudu = 0; foreach (var ikik in hnm) { dudu += ((Peak)ikik).X; } Assert.AreEqual(1 + 2 + 3 + 4 + 5 + 6 + 7, dudu); }
public static void TestCoIsolation() { CommonParameters CommonParameters = new CommonParameters { DigestionParams = new DigestionParams { Protease = new Protease("Custom Protease", new List <string> { "K" }, new List <string>(), TerminusType.C, CleavageSpecificity.Full, null, null, null), MinPeptideLength = null, }, ConserveMemory = false, ScoreCutoff = 1, DeconvolutionIntensityRatio = 50 }; var variableModifications = new List <ModificationWithMass>(); var fixedModifications = new List <ModificationWithMass>(); var proteinList = new List <Protein> { new Protein("MNNNKNDNK", null) }; var searchModes = new SinglePpmAroundZeroSearchMode(5); Proteomics.Peptide pep1 = new Proteomics.Peptide("NNNK"); Proteomics.Peptide pep2 = new Proteomics.Peptide("NDNK"); var dist1 = IsotopicDistribution.GetDistribution(pep1.GetChemicalFormula(), 0.1, 0.01); var dist2 = IsotopicDistribution.GetDistribution(pep2.GetChemicalFormula(), 0.1, 0.01); IMzmlScan[] Scans = new IMzmlScan[2]; double[] ms1intensities = new double[] { 0.8, 0.8, 0.2, 0.02, 0.2, 0.02 }; double[] ms1mzs = dist1.Masses.Concat(dist2.Masses).OrderBy(b => b).Select(b => b.ToMz(1)).ToArray(); double selectedIonMz = ms1mzs[1]; MzmlMzSpectrum MS1 = new MzmlMzSpectrum(ms1mzs, ms1intensities, false); Scans[0] = new MzmlScan(1, MS1, 1, false, Polarity.Positive, 1.0, new MzRange(300, 2000), "first spectrum", MZAnalyzerType.Unknown, MS1.SumOfAllY, null, "scan=1"); double[] ms2intensities = new double[] { 1, 1, 1, 1, 1 }; double[] ms2mzs = new double[] { 146.106.ToMz(1), 228.086.ToMz(1), 229.07.ToMz(1), 260.148.ToMz(1), 342.129.ToMz(1) }; MzmlMzSpectrum MS2 = new MzmlMzSpectrum(ms2mzs, ms2intensities, false); double isolationMZ = selectedIonMz; Scans[1] = new MzmlScanWithPrecursor(2, MS2, 2, false, Polarity.Positive, 2.0, new MzRange(100, 1500), "second spectrum", MZAnalyzerType.Unknown, MS2.SumOfAllY, selectedIonMz, null, null, isolationMZ, 2.5, DissociationType.HCD, 1, null, null, "scan=2"); var myMsDataFile = new FakeMsDataFile(Scans); bool DoPrecursorDeconvolution = true; bool UseProvidedPrecursorInfo = true; double DeconvolutionIntensityRatio = 50; int DeconvolutionMaxAssumedChargeState = 10; Tolerance DeconvolutionMassTolerance = new PpmTolerance(5); var listOfSortedms2Scans = MetaMorpheusTask.GetMs2Scans(myMsDataFile, null, DoPrecursorDeconvolution, UseProvidedPrecursorInfo, DeconvolutionIntensityRatio, DeconvolutionMaxAssumedChargeState, DeconvolutionMassTolerance).OrderBy(b => b.PrecursorMass).ToArray(); PeptideSpectralMatch[] allPsmsArray = new PeptideSpectralMatch[listOfSortedms2Scans.Length]; List <ProductType> lp = new List <ProductType> { ProductType.B, ProductType.Y }; new ClassicSearchEngine(allPsmsArray, listOfSortedms2Scans, variableModifications, fixedModifications, proteinList, lp, searchModes, false, CommonParameters, CommonParameters.ProductMassTolerance, new List <string>()).Run(); // Two matches for this single scan! Corresponding to two co-isolated masses Assert.AreEqual(2, allPsmsArray.Length); Assert.IsTrue(allPsmsArray[0].Score > 1); Assert.AreEqual(2, allPsmsArray[0].ScanNumber); var ojdfkj = (SequencesToActualProteinPeptidesEngineResults) new SequencesToActualProteinPeptidesEngine(new List <PeptideSpectralMatch> { allPsmsArray[0], allPsmsArray[1] }, proteinList, fixedModifications, variableModifications, lp, new List <IDigestionParams> { CommonParameters.DigestionParams }, CommonParameters.ReportAllAmbiguity, new List <string>()).Run(); foreach (var huh in allPsmsArray) { if (huh != null) { huh.MatchToProteinLinkedPeptides(ojdfkj.CompactPeptideToProteinPeptideMatching); } } Assert.AreEqual("NNNK", allPsmsArray[0].BaseSequence); Assert.AreEqual("NDNK", allPsmsArray[1].BaseSequence); }
//[Test] public static void TestGetCombinedMs2Scans() { var myMsDataFile = new TestDataFile(5); bool DoPrecursorDeconvolution = true; bool UseProvidedPrecursorInfo = true; double DeconvolutionIntensityRatio = 4; int DeconvolutionMaxAssumedChargeState = 10; Tolerance DeconvolutionMassTolerance = new PpmTolerance(5); var listOfSortedms2Scans = MetaMorpheusTask.GetMs2Scans(myMsDataFile, null, DoPrecursorDeconvolution, UseProvidedPrecursorInfo, DeconvolutionIntensityRatio, DeconvolutionMaxAssumedChargeState, DeconvolutionMassTolerance).OrderBy(b => b.PrecursorMass).ToArray(); //Write prime code to combine MS2MS3 Dictionary <int, double> listOfScanPrecusor = new Dictionary <int, double>(); List <IMzmlScan> ListOfSortedMsScans = new List <IMzmlScan>(); List <Ms2ScanWithSpecificMass> test = new List <Ms2ScanWithSpecificMass>(); foreach (var ms2scan in myMsDataFile.OfType <IMsDataScanWithPrecursor <IMzSpectrum <IMzPeak> > >()) { if (ms2scan.MsnOrder == 2 && !listOfScanPrecusor.Contains(new KeyValuePair <int, double>(ms2scan.OneBasedPrecursorScanNumber.Value, ms2scan.SelectedIonMZ))) { if (ms2scan.OneBasedPrecursorScanNumber.HasValue) { listOfScanPrecusor.Add(ms2scan.OneBasedPrecursorScanNumber.Value, ms2scan.SelectedIonMZ); List <int> currentScanMS2OneBasedScanNumber = new List <int>(); currentScanMS2OneBasedScanNumber.Add(ms2scan.OneBasedScanNumber); var mz2 = ms2scan.MassSpectrum.XArray.ToList(); var intensities2 = ms2scan.MassSpectrum.YArray.ToList(); for (int i = 1; i < 7; i++) { if (ms2scan.OneBasedScanNumber + i <= myMsDataFile.NumSpectra) { var x = myMsDataFile.GetOneBasedScan(ms2scan.OneBasedScanNumber + i) as IMsDataScanWithPrecursor <IMzSpectrum <IMzPeak> >; //var x = myMsDataFile.OfType<IMsDataScanWithPrecursor<IMzSpectrum<IMzPeak>>>().ElementAt(i); if (x.MsnOrder == 2 && x.SelectedIonMZ == ms2scan.SelectedIonMZ) { currentScanMS2OneBasedScanNumber.Add(x.OneBasedScanNumber); mz2.AddRange(x.MassSpectrum.XArray.ToList()); intensities2.AddRange(x.MassSpectrum.YArray.ToList()); } if (x.MsnOrder == 3 && currentScanMS2OneBasedScanNumber.Contains(x.OneBasedPrecursorScanNumber.Value)) { mz2.AddRange(x.MassSpectrum.XArray.ToList()); intensities2.AddRange(x.MassSpectrum.YArray.ToList()); } } } var MassSpectrum2 = new MzmlMzSpectrum(mz2.ToArray(), intensities2.ToArray(), false); ListOfSortedMsScans.Add(new MzmlScanWithPrecursor(ms2scan.OneBasedScanNumber, MassSpectrum2, ms2scan.MsnOrder, ms2scan.IsCentroid, Polarity.Positive, ms2scan.RetentionTime, ms2scan.ScanWindowRange, ms2scan.ScanFilter, ms2scan.MzAnalyzer, ms2scan.TotalIonCurrent, ms2scan.SelectedIonMZ, ms2scan.SelectedIonChargeStateGuess, ms2scan.SelectedIonIntensity, ms2scan.IsolationMz, null, ms2scan.DissociationType, ms2scan.OneBasedPrecursorScanNumber, ms2scan.SelectedIonMonoisotopicGuessMz, ms2scan.InjectionTime, "")); } } } foreach (var ms2scan in ListOfSortedMsScans.OfType <IMsDataScanWithPrecursor <IMzSpectrum <IMzPeak> > >()) { test.Add(new Ms2ScanWithSpecificMass(ms2scan, ms2scan.SelectedIonMonoisotopicGuessMz.Value, ms2scan.SelectedIonChargeStateGuess.Value, "")); } var testToArray = test.OrderBy(b => b.PrecursorMass).ToArray(); //Using function to combine MS2MS3 //var listOfSortedms2Scans2 = MetaMorpheusTask.GetCombinedMs2Scans(myMsDataFile, null, DoPrecursorDeconvolution, UseProvidedPrecursorInfo, DeconvolutionIntensityRatio, DeconvolutionMaxAssumedChargeState, DeconvolutionMassTolerance).OrderBy(b => b.PrecursorMass).ToArray(); //Assert.AreEqual(5, myMsDataFile.NumSpectra); //Assert.AreEqual(1, listOfSortedms2Scans2.Count()); }
public void CorrectOrder() { _mzSpectrumA = new MzmlMzSpectrum(new double[] { 5, 6, 7 }, new double[] { 1, 2, 3 }, false); Assert.IsTrue(_mzSpectrumA.FilterByNumberOfMostIntense(2).First().Mz < _mzSpectrumA.FilterByNumberOfMostIntense(2).ToList()[1].Mz); }