public void TestDisplaySpectra(string rawFile, string idFile) { // init var idFileReader = IdFileReaderFactory.CreateReader(idFile); var ids = idFileReader.Read(); var lcms = PbfLcMsRun.GetLcMsRun(rawFile); var idList = ids.ToList(); foreach (var id in idList) { id.LcMs = lcms; id.RawFileName = Path.GetFileNameWithoutExtension(rawFile); } idList.Sort(new PrSm.PrSmScoreComparer()); var prsm = idList[0]; // init XicPlotViewModel var dialogService = new TestableMainDialogService(); var spectrumViewModel = new SpectrumViewModel(dialogService, lcms); // init test ions var baseIonTypes = new List <BaseIonType> { BaseIonType.B, BaseIonType.Y }; var neutralLosses = new List <NeutralLoss> { NeutralLoss.NoLoss }; const int charge = 1; const int minCharge = 1, maxCharge = 2; var ionTypeFactory = new IonTypeFactory(maxCharge); var ionTypes = IonUtils.GetIonTypes(ionTypeFactory, baseIonTypes, neutralLosses, minCharge, maxCharge); var ions = IonUtils.GetFragmentIonLabels(prsm.Sequence, charge, ionTypes); var ionVms = ions.Select(label => new LabeledIonViewModel(label.Composition, label.IonType, label.IsFragmentIon, lcms, label.PrecursorIon, label.IsChargeState, label.Index)).ToList(); }
public void TestDisplaySpectrum(string rawFile, string tsvFile) { // init var idFileReader = IdFileReaderFactory.CreateReader(tsvFile); var ids = idFileReader.Read(); var lcms = PbfLcMsRun.GetLcMsRun(rawFile); var idList = ids.ToList(); foreach (var id in idList) { id.LcMs = lcms; id.RawFileName = Path.GetFileNameWithoutExtension(rawFile); } // init SpectrumPlotViewModel var dialogService = new TestableMainDialogService(); var spectrumPlotViewModel = new SpectrumPlotViewModel(dialogService, new FragmentationSequenceViewModel(), 1.05, false); // init test data idList.Sort(new PrSm.PrSmScoreComparer()); var prsm = idList[0]; // init test ions var ions = new ReactiveList <LabeledIonViewModel>(); spectrumPlotViewModel.Spectrum = prsm.Ms2Spectrum; ////spectrumPlotViewModel.Ions = ions; // plot should not be null Assert.NotNull(spectrumPlotViewModel.PlotModel); // plot should contain 1 stem series (the spectrum stem series) Assert.True(spectrumPlotViewModel.PlotModel.Series.Count == 1); }
public void TestClearFilters() { // init test data var idFileReader = IdFileReaderFactory.CreateReader(idFile); var ids = idFileReader.Read(); var idList = ids.ToList(); foreach (var id in idList) { id.LcMs = null; id.RawFileName = Path.GetFileNameWithoutExtension(rawFile); } var prsms = idList; // init scan vm var scanVm = new ScanViewModel(new TestableMainDialogService(), prsms); scanVm.ClearFilters(); // add filters ////scanVm.AddFilter("Sequence", "EAQ"); var sequenceFilter = scanVm.Filters.FirstOrDefault(x => x.Name == "Sequence") as MultiValueFilterViewModel; Assert.NotNull(sequenceFilter); sequenceFilter.Values.Add("EAQ"); /////scanVm.AddFilter("Protein", "YLR"); var proteinFilter = scanVm.Filters.FirstOrDefault(x => x.Name == "Protein Name") as MultiValueFilterViewModel; Assert.NotNull(proteinFilter); sequenceFilter.Values.Add("YLR"); // Sanity check: there should be fewer PrSms than before Assert.True(scanVm.FilteredData.Length < prsms.Count); // Clear filters scanVm.ClearFilters(); // All prsms should now be showing Assert.True(scanVm.FilteredData.Length == prsms.Count); }
public void TestMassExportPeakLists(string rawFile, string idFile) { // Read files var lcms = PbfLcMsRun.GetLcMsRun(rawFile); var idFileReader = IdFileReaderFactory.CreateReader(idFile); var ids = idFileReader.Read().ToList(); foreach (var id in ids) { id.LcMs = lcms; id.RawFileName = Path.GetFileNameWithoutExtension(rawFile); } var outputDir = MsPathFinderTest.CreateTestResultDirectory("ExporterTest"); var exporter = new SpectrumPeakExporter(outputDir.FullName); exporter.Export(ids.ToList()); }
public void TestMassExportPeakLists(string rawFile, string idFile) { // Read files var lcms = PbfLcMsRun.GetLcMsRun(rawFile); var idFileReader = IdFileReaderFactory.CreateReader(idFile); var ids = idFileReader.Read(); foreach (var id in ids) { id.LcMs = lcms; id.RawFileName = Path.GetFileNameWithoutExtension(rawFile); } var dirPath = @"C:\Users\wilk011\Documents\DataFiles\TestResults\ExporterTest"; Directory.CreateDirectory(dirPath); var exporter = new SpectrumPeakExporter(dirPath); exporter.Export(ids.ToList()); }
public void TestHideUnidentifedScans() { // init test data var idFileReader = IdFileReaderFactory.CreateReader(idFile); var ids = idFileReader.Read(); var idList = ids.ToList(); var lcms = PbfLcMsRun.GetLcMsRun(rawFile); foreach (var id in idList) { id.LcMs = lcms; id.RawFileName = Path.GetFileNameWithoutExtension(rawFile); } var scans = lcms.GetScanNumbers(2); foreach (var scan in scans) { idList.Add(new PrSm { Scan = scan, LcMs = lcms, RawFileName = Path.GetFileNameWithoutExtension(rawFile), Score = double.NaN }); } var prsms = idList; // init scan vm var scanVm = new ScanViewModel(new TestableMainDialogService(), prsms); scanVm.ClearFilters(); Assert.AreEqual(prsms.Count, scanVm.FilteredData.Length); ////scanVm.HideUnidentifiedScans = true; Assert.True(prsms.Count > scanVm.FilteredData.Length); }
/// <summary> /// Implementation for <see cref="StartMsPfSearchCommand" />. /// Gets a command that starts an MSPathFinder with this data set. /// </summary> private void StartMsPfSearchImplementation() { var searchSettings = new SearchSettingsViewModel(this.dialogService, this.MsPfParameters) { SpectrumFilePath = this.rawFilePath, SelectedSearchMode = InternalCleavageType.SingleInternalCleavage, FastaDbFilePath = this.FastaDbFilePath, OutputFilePath = string.Format("{0}\\{1}", Directory.GetCurrentDirectory(), this.Title), SelectedSequence = this.SelectedPrSm.Sequence.Aggregate(string.Empty, (current, aa) => current + aa.Residue) }; // Set feature file path. if (this.FeatureMapViewModel != null) { searchSettings.FeatureFilePath = this.FeatureMapViewModel.FeatureFilePath; } // Select the correct protein if (searchSettings.FastaEntries.Count > 0) { foreach (var entry in searchSettings.FastaEntries) { entry.Selected = entry.ProteinName == this.SelectedPrSm.ProteinName; } } // Set scan number of selected spectrum var scanNum = 0; if (this.SpectrumViewModel.Ms2SpectrumViewModel.Spectrum != null) { scanNum = this.SpectrumViewModel.Ms2SpectrumViewModel.Spectrum.ScanNum; searchSettings.MinScanNumber = scanNum; searchSettings.MaxScanNumber = scanNum; } // TODO: change this so it doesn't use an event and isn't void async searchSettings.ReadyToClose += async(o, e) => { if (searchSettings.Status) { var idFileReader = IdFileReaderFactory.CreateReader(searchSettings.GetIdFilePath()); var prsms = await idFileReader.ReadAsync(); var prsmList = prsms.ToList(); foreach (var prsm in prsmList) { prsm.LcMs = this.LcMs; } prsmList.Sort(new PrSm.PrSmScoreComparer()); this.ScanViewModel.Data.AddRange(prsmList); var scanPrsms = prsmList.Where(prsm => prsm.Scan == scanNum).ToList(); if (scanNum > 0 && scanPrsms.Count > 0) { this.SelectedPrSm = scanPrsms[0]; } else if (prsmList.Count > 0) { this.SelectedPrSm = prsmList[0]; } } }; this.dialogService.SearchSettingsWindow(searchSettings); }
public void TestIsotopePeakAlignment(string rawFilePath, string idFilePath) { var idFileReader = IdFileReaderFactory.CreateReader(idFilePath); var lcms = PbfLcMsRun.GetLcMsRun(rawFilePath); var ids = idFileReader.Read(); var idList = ids.ToList(); var rawFileName = Path.GetFileNameWithoutExtension(rawFilePath); foreach (var id in idList) { id.LcMs = lcms; id.RawFileName = rawFileName; } var prsms = idList.Where(prsm => prsm.Sequence.Count > 0); const double relIntThres = 0.1; var tolerance = new Tolerance(10, ToleranceUnit.Ppm); var toleranceValue = tolerance.GetValue(); const int maxCharge = 15; var ionTypeFactory = new IonTypeFactory(maxCharge); var ionTypes = ionTypeFactory.GetAllKnownIonTypes().ToArray(); var psmsValidated = 0; var ionsValidated = 0; var validationErrors = new List <string>(); foreach (var prsm in prsms) { foreach (var ionType in ionTypes) { var composition = prsm.Sequence.Aggregate(Composition.Zero, (current, aa) => current + aa.Composition); var ion = ionType.GetIon(composition); var observedPeaks = prsm.Ms2Spectrum.GetAllIsotopePeaks(ion, tolerance, relIntThres); if (observedPeaks == null) { continue; } var errors = IonUtils.GetIsotopePpmError(observedPeaks, ion, relIntThres); foreach (var error in errors) { if (error == null) { continue; } if (error > toleranceValue) { validationErrors.Add(string.Format("In scan {0}, PSM {1} has error {2:F1} for ion at {3} m/z", prsm.Scan, prsm.SequenceText, error, ion.GetIsotopeMz(0))); } ionsValidated++; } } psmsValidated++; } Console.WriteLine("Validated {0:N0} ions for {1:N0} PSMs", ionsValidated, psmsValidated); if (validationErrors.Count <= 0) { return; } var validationMsg = string.Format("{0} ions had errors greater than {1} ppm", validationErrors.Count, tolerance); Console.WriteLine(validationMsg); foreach (var item in validationErrors.Take(10)) { Console.WriteLine(item); } Assert.Fail(validationMsg); }