Пример #1
0
        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();
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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());
        }
Пример #5
0
        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());
        }
Пример #6
0
        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);
        }
Пример #7
0
        /// <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);
        }
Пример #8
0
        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);
        }