Esempio n. 1
0
        public XYData GetChromatogram(int startFrame, int stopFrame, int startIMSScan, int stopIMSScan, double targetMZ, double toleranceInPPM)
        {
            var toleranceInMZ = toleranceInPPM / 1e6 * targetMZ;
            var lowerMZ       = targetMZ - toleranceInMZ;
            var upperMZ       = targetMZ + toleranceInMZ;

            var frameVals     = new List <double>();
            var intensityVals = new List <double>();

            for (var frame = startFrame; frame <= stopFrame; frame++)
            {
                var frameSet = new ScanSet(frame);
                var scan     = new ScanSet(startIMSScan, startIMSScan, stopIMSScan);
                var xyData   = GetMassSpectrum(frameSet, scan, lowerMZ, upperMZ);

                double sumIntensities = 0;

                if (xyData?.Yvalues != null && xyData.Yvalues.Length > 0)
                {
                    sumIntensities = xyData.Yvalues.Sum();
                }

                frameVals.Add(frame);
                intensityVals.Add(sumIntensities);
            }

            var chromXYData = new XYData
            {
                Xvalues = frameVals.ToArray(),
                Yvalues = intensityVals.ToArray()
            };

            return(chromXYData);
        }
Esempio n. 2
0
        public override XYData GetMassSpectrum(ScanSet scanset)
        {
            double[] xvals;
            double[] yvals;


            if (scanset.PrimaryScanNumber > MaxLCScan)
            {
                throw new ArgumentOutOfRangeException("Cannot get mass spectrum. Exceeded max scan (which = " + MaxLCScan + ")");
            }

            if (scanset.PrimaryScanNumber < MinLCScan)
            {
                throw new ArgumentOutOfRangeException("Cannot get mass spectrum. Exceeded min scan (which = " + MinLCScan + ")");
            }



            _reader.GetSpectrum(scanset.PrimaryScanNumber, out xvals, out yvals);
            var xydata = new XYData {
                Xvalues = xvals, Yvalues = yvals
            };

            return(xydata);
        }
Esempio n. 3
0
        public void PeakDetectorDemo1()
        {
            //In this list on Scan 6005 we can see what the peak of the parent is. Slide 4 1059.45898 is the Monoisotopic peak of Scan 6009
            var run = new RunFactory().CreateRun(FileRefs.RawDataMSFiles.OrbitrapStdFile1);

            var testScan = new ScanSet(6009);

            run.CurrentScanSet = testScan;

            var msgen = MSGeneratorFactory.CreateMSGenerator(run.MSFileType);

            var peakDetector = new DeconToolsPeakDetectorV2();

            msgen.Execute(run.ResultCollection);
            peakDetector.Execute(run.ResultCollection);

            var sb = new StringBuilder();

            foreach (var peak in run.PeakList)
            {
                sb.Append(peak.XValue + "\t" + peak.Height + "\t" + peak.Width + "\n");
            }

            Console.WriteLine("----------------------PeakList---------------");
            Console.WriteLine("m/z\tintensity\twidth");
            Console.WriteLine(sb.ToString());
        }
Esempio n. 4
0
        public override XYData GetMassSpectrum(ScanSet scanSet)
        {
            Check.Require(scanSet != null, "Can't get mass spectrum; inputted set of scans is null");
            Check.Require(scanSet.IndexValues.Count > 0, "Can't get mass spectrum; no scan numbers inputted");

            if (scanSet == null)
            {
                return(null);
            }

            var xyData = new XYData();

            if (scanSet.IndexValues.Count == 1)            //this is the case of only wanting one MS spectrum
            {
                getAgilentSpectrum(scanSet.PrimaryScanNumber);

                xyData.Xvalues = m_spec.XArray;
                xyData.Yvalues = m_spec.YArray.Select(p => (double)p).ToArray();
            }
            else
            {
                //throw new NotImplementedException("Summing isn't supported for Agilent.D files - yet");

                //this is an implementation of Anuj's summing algorithm 4-2-2012.
                double[] xVals = null;
                float[]  yVals = null;
                double   minMZ = 0; double maxMZ = 0;
                getSummedSpectrum(scanSet, ref xVals, ref yVals, minMZ, maxMZ);
                xyData.Xvalues = xVals;
                xyData.Yvalues = yVals.Select(p => (double)p).ToArray();
            }

            return(xyData);
        }
        public void PeakDetectorOnCentroidedDataTest2()
        {
            var run = new RunFactory().CreateRun(FileRefs.RawDataMSFiles.OrbitrapStdFile1);

            var scan = new ScanSet(6006);   //this is a MS2 scan


            var msgen = MSGeneratorFactory.CreateMSGenerator(run.MSFileType);

            // Note that setting the PeakFitType to Apex will not matter since RawDataType is Centroided
            // It would only matter if the RawDataType was Profile

            var peakDetector = new DeconToolsPeakDetectorV2(0, 0, Globals.PeakFitType.APEX, true);

            peakDetector.RawDataType            = Globals.RawDataType.Centroided;
            peakDetector.SignalToNoiseThreshold = 0;
            peakDetector.PeakToBackgroundRatio  = 0;
            peakDetector.IsDataThresholded      = true;

            run.CurrentScanSet = scan;

            msgen.Execute(run.ResultCollection);

            peakDetector.Execute(run.ResultCollection);

            Console.WriteLine("Num XY datapoints in mass spectrum= " + run.XYData.Xvalues.Length);
            Console.WriteLine("numPeaks = " + run.PeakList.Count);

            Assert.AreEqual(run.XYData.Xvalues.Length, run.PeakList.Count);
            //TestUtilities.DisplayXYValues(run.XYData);
            //TestUtilities.DisplayPeaks(run.PeakList);
        }
Esempio n. 6
0
        public void getMSMSDataTest1()
        {
            //Create the run
            var runFactory = new RunFactory();
            var run        = runFactory.CreateRun(FileRefs.RawDataMSFiles.OrbitrapStdFile1);

            //Create the task
            Task msgen = MSGeneratorFactory.CreateMSGenerator(run.MSFileType);

            var peakdetector = new DeconToolsPeakDetectorV2();

            var startScan = 6000;
            var stopScan  = 7000;

            for (var i = startScan; i < stopScan; i++)
            {
                if (run.GetMSLevel(i) == 2)
                {
                    var scanset = new ScanSet(i);
                    run.CurrentScanSet = scanset;
                    msgen.Execute(run.ResultCollection);
                    peakdetector.Execute(run.ResultCollection);

                    Console.Write("Working on Scan " + scanset.PrimaryScanNumber);
                    Console.WriteLine("; XYPair count = " + run.XYData.Xvalues.Length);

                    Console.WriteLine("num peaks= " + run.PeakList.Count);
                }
            }
        }
        public void PeakDetectorOnCentroidedDataTest1()
        {
            var run = new RunFactory().CreateRun(FileRefs.RawDataMSFiles.OrbitrapStdFile1);

            var scan = new ScanSet(6006);   //this is a centroided MS2 scan


            var msgen        = MSGeneratorFactory.CreateMSGenerator(run.MSFileType);
            var peakDetector = new DeconToolsPeakDetectorV2(0, 0, Globals.PeakFitType.QUADRATIC, true);

            peakDetector.RawDataType       = Globals.RawDataType.Centroided;
            peakDetector.IsDataThresholded = true;

            run.CurrentScanSet = scan;

            msgen.Execute(run.ResultCollection);

            peakDetector.Execute(run.ResultCollection);

            Console.WriteLine("Num XY datapoints in mass spectrum= " + run.XYData.Xvalues.Length);
            Console.WriteLine("numPeaks = " + run.PeakList.Count);

            Assert.AreEqual(run.XYData.Xvalues.Length, run.PeakList.Count);
            //TestUtilities.DisplayXYValues(run.XYData);
            //TestUtilities.DisplayPeaks(run.PeakList);
        }
        public void peak_interference_UIMF_expectInterference_test1()
        {
            var uimfFrame1200_142 = FileRefs.RawDataBasePath + @"\UIMF\Sarc_MS_90_21Aug10_Cheetah_10-08-02_0000_frame1200_scan142.txt";

            Run run = new DeconTools.Backend.Runs.MSScanFromTextFileRun(uimfFrame1200_142);

            var scanSet = new ScanSet(0);

            run.CurrentScanSet = scanSet;

            var msgen = MSGeneratorFactory.CreateMSGenerator(run.MSFileType);

            msgen.MinMZ = 200;
            msgen.MaxMZ = 2000;

            var peakDetector = new DeconToolsPeakDetectorV2(4, 3, DeconTools.Backend.Globals.PeakFitType.QUADRATIC, true);

            var decon = new HornDeconvolutor();

            decon.MinIntensityForScore     = 10;
            decon.DeleteIntensityThreshold = 10;
            decon.MaxFitAllowed            = 0.4;
            decon.MinMZ         = 200;
            decon.MaxMZ         = 2000;
            decon.IsMZRangeUsed = false;


            var zeroFiller = new DeconToolsZeroFiller();

            msgen.Execute(run.ResultCollection);
            zeroFiller.Execute(run.ResultCollection);

            peakDetector.Execute(run.ResultCollection);
            decon.Execute(run.ResultCollection);

            //Assert.AreEqual(93, run.ResultCollection.ResultList.Count);

            var testResult = run.ResultCollection.ResultList.Where(p => p.IsotopicProfile.MonoPeakMZ > 428 && p.IsotopicProfile.MonoPeakMZ < 430).First();

            var monoPeak = testResult.IsotopicProfile.getMonoPeak();
            var lastPeak = testResult.IsotopicProfile.Peaklist[testResult.IsotopicProfile.Peaklist.Count - 1];

            var startIndexOfXYData = MathUtils.BinarySearchWithTolerance(run.XYData.Xvalues, monoPeak.XValue - 3, 0, (run.XYData.Xvalues.Length - 1), 2);

            //interference scorer

            var interferenceScorer = new InterferenceScorer();

            var stopwatch = new Stopwatch();

            stopwatch.Start();
            var scanPeaks         = run.PeakList.Select <Peak, MSPeak>(i => (MSPeak)i).ToList();
            var interferenceScore = interferenceScorer.GetInterferenceScore(scanPeaks, testResult.IsotopicProfile.Peaklist, monoPeak.XValue - 1.1,
                                                                            lastPeak.XValue + lastPeak.Width);

            stopwatch.Stop();

            Console.WriteLine("interference= " + interferenceScore);
            Console.WriteLine("Time taken = " + stopwatch.ElapsedMilliseconds);
        }
        public void CheckBackgroundIntensityTest1()
        {
            Run run = new XCaliburRun2(FileRefs.RawDataMSFiles.OrbitrapStdFile1);

            var scan = new ScanSet(6005);

            var msgen        = MSGeneratorFactory.CreateMSGenerator(run.MSFileType);
            var peakDetector = new DeconToolsPeakDetectorV2();

            peakDetector.PeakToBackgroundRatio  = 1.3;
            peakDetector.SignalToNoiseThreshold = 2;
            peakDetector.PeakFitType            = Globals.PeakFitType.QUADRATIC;
            peakDetector.IsDataThresholded      = true;


            var oldPeakDetector = new DeconToolsPeakDetectorV2(1.3, 2, DeconTools.Backend.Globals.PeakFitType.QUADRATIC, true);

            peakDetector.IsDataThresholded = true;

            run.CurrentScanSet = scan;
            msgen.Execute(run.ResultCollection);

            peakDetector.Execute(run.ResultCollection);
            oldPeakDetector.Execute(run.ResultCollection);

            //Assert.AreEqual(peakDetector.BackgroundIntensity, oldPeakDetector.BackgroundIntensity);
        }
Esempio n. 10
0
        public override XYData GenerateMS(Run run, ScanSet lcScanset, ScanSet imsscanset = null)
        {
            Check.Require(run != null, "MS_Generator failed;  'Run' has not yet been defined");
            if (run == null)
            {
                return(null);
            }

            Check.Require(!(run is UIMFRun), "MS Generator failed; You tried to use the 'Generic_MS_Generator.' Try using the 'UIMF_MSGenerator' instead");

            if (lcScanset == null)
            {
                return(null);
            }

            var xydata = run.GetMassSpectrum(lcScanset, MinMZ, MaxMZ);

            //TODO: this doesn't really belong here!
            if (IsTICRequested)
            {
                lcScanset.TICValue = GetTIC(xydata, this.MinMZ, this.MaxMZ);
            }

            return(xydata);
        }
Esempio n. 11
0
        public void agilentDeconTest1()
        {
            RunFactory runFact = new RunFactory();
            Run        run     = runFact.CreateRun(agilentFile);

            MSGeneratorFactory msfactory = new MSGeneratorFactory();
            Task msgen = msfactory.CreateMSGenerator(run.MSFileType);

            DeconToolsPeakDetector peakDet = new DeconToolsPeakDetector();

            peakDet.PeakBackgroundRatio = 7;
            peakDet.SigNoiseThreshold   = 3;

            HornDeconvolutor decon    = new HornDeconvolutor();
            ScanSet          scan1821 = new ScanSet(1821);

            run.CurrentScanSet = scan1821;

            msgen.Execute(run.ResultCollection);
            run.XYData = run.XYData.TrimData(450, 520, TODO);

            peakDet.Execute(run.ResultCollection);
            decon.Execute(run.ResultCollection);

            TestUtilities.DisplayMSFeatures(run.ResultCollection.ResultList);
        }
Esempio n. 12
0
        public override XYData GetMassSpectrum(ScanSet scanset, double minMZ, double maxMZ)
        {
            Check.Require(scanset != null, "Can't get mass spectrum; inputted set of scans is null");
            Check.Require(scanset.IndexValues.Count > 0, "Can't get mass spectrum; no scan numbers inputted");

            var totScans = this.GetNumMSScans();

            var xvals = new double[0];
            var yvals = new double[0];

            if (scanset.IndexValues.Count == 1)            //this is the case of only wanting one MS spectrum
            {
                //TODO:  Old DeconTools reference!!
                this.RawData.GetSpectrum(scanset.IndexValues[0], ref xvals, ref yvals, false);
            }
            else
            {
                throw new NotImplementedException("Summing is not yet supported for ICR2LS_MS Data files.");
                //this.rawData.GetSummedSpectra(scanset.getLowestScanNumber(), scanset.getHighestScanNumber(), minMZ, maxMZ, ref xvals, ref yvals);
            }

            var xydata = new XYData();

            xydata.Xvalues = xvals;
            xydata.Yvalues = yvals;

            xydata = xydata.TrimData(minMZ, maxMZ);
            return(xydata);
        }
Esempio n. 13
0
        public override XYData GetMassSpectrum(ScanSet scanset)
        {
            //if (scanset.IndexValues.Count > 1)
            //{
            //    throw new NotImplementedException("Summing was attempted on YafMS data, but summing hasn't been implemented");
            //}
            //double[] xvals = null;
            //float[] yvals = null;

            // m_reader.GetSpectrum(this.SpectraID, scanset.PrimaryScanNumber, ref xvals, ref yvals);

            //TODO: This simple scanset only method is not implemented in XCaliburRun

            double[] xvals = null;
            float[]  yvals = null;

            if (scanset.IndexValues.Count <= 1)
            {
                m_reader.GetSpectrum(this.SpectraID, scanset.PrimaryScanNumber, ref xvals, ref yvals);
            }
            else
            {
                xvals = new double[0];
                yvals = new float[0];

                this.getSummedSpectrum(scanset, ref xvals, ref yvals);
            }

            var xydata = new XYData();

            xydata.Xvalues = xvals;
            xydata.Yvalues = yvals.Select(p => (double)p).ToArray();
            return(xydata);
        }
Esempio n. 14
0
        public void GetMassSpectrumWithSummingTest1()
        {
            var run = new UIMFRun(FileRefs.RawDataMSFiles.UIMFStdFile3);

            var frame = new ScanSet(163, 162, 164);
            var scan  = new IMSScanSet(121);

            var xydata = run.GetMassSpectrum(frame, scan, 0, 50000);

            var testMZ = 627.2655682;
            var maxIntensityForTestMZ = 0;


            for (var i = 0; i < xydata.Xvalues.Length; i++)
            {
                if (xydata.Xvalues[i] > (testMZ - 0.1) && xydata.Xvalues[i] < (testMZ + 0.1))
                {
                    if (xydata.Yvalues[i] > maxIntensityForTestMZ)
                    {
                        maxIntensityForTestMZ = (int)xydata.Yvalues[i];
                    }
                }
            }

            Assert.AreEqual(126568, maxIntensityForTestMZ);
        }
Esempio n. 15
0
        public override XYData GetMassSpectrum(ScanSet scanset, double minMZ, double maxMZ)
        {
            //TODO: Update upon error fix....  the YAFMS library is throwing an error if I give an m/z outside it's expected range. So until that is fixed, I'll go get all the m/z values and trim them myself

            double[] xvals = null;
            float[]  yvals = null;

            if (scanset.IndexValues.Count <= 1)
            {
                m_reader.GetSpectrum(SpectraID, scanset.PrimaryScanNumber, ref xvals, ref yvals);
            }
            else
            {
                xvals = new double[0];
                yvals = new float[0];

                getSummedSpectrum(scanset, ref xvals, ref yvals, minMZ, maxMZ);
            }

            var xydata = new XYData
            {
                Xvalues = xvals,
                Yvalues = yvals.Select(p => (double)p).ToArray()
            };

            return(xydata);
        }
Esempio n. 16
0
        public void Test1()
        {
            string testfile = @"D:\Data\From_Nicola\AC2_Neg_highpH_14Apr13_Sauron_13-04-03.raw";

            Run run = new RunFactory().CreateRun(testfile);

            TestUtilities.DisplayRunInformation(run);

            var msgen = MSGeneratorFactory.CreateMSGenerator(run.MSFileType);

            ScanSet scanSet = new ScanSet(4100);

            run.CurrentScanSet = scanSet;

            msgen.Execute(run.ResultCollection);

            DeconToolsPeakDetectorV2 peakDetector = new DeconToolsPeakDetectorV2();

            peakDetector.Execute(run.ResultCollection);

            run.PeakList = run.PeakList.Where(p => p.XValue > 742 && p.XValue < 749).ToList();

            HornDeconvolutor hornDeconvolutor = new HornDeconvolutor();

            hornDeconvolutor.ChargeCarrierMass = -1.00727649;

            hornDeconvolutor.Execute(run.ResultCollection);

            TestUtilities.DisplayMSFeatures(run.ResultCollection.ResultList);
        }
        public void findMSFeaturesInOrbitrapData_Test1()
        {
            Run run = new XCaliburRun2(FileRefs.RawDataMSFiles.OrbitrapStdFile1);

            var scanSet = new ScanSet(6005);

            run.CurrentScanSet = scanSet;


            var msgen        = MSGeneratorFactory.CreateMSGenerator(run.MSFileType);
            var peakDetector = new DeconToolsPeakDetectorV2(1.3, 2, DeconTools.Backend.Globals.PeakFitType.QUADRATIC, true);
            var decon        = new HornDeconvolutor();

            msgen.Execute(run.ResultCollection);
            peakDetector.Execute(run.ResultCollection);
            decon.Execute(run.ResultCollection);

            Assert.AreEqual(93, run.ResultCollection.ResultList.Count);

            //order and get the most intense msfeature
            run.ResultCollection.ResultList = run.ResultCollection.ResultList.OrderByDescending(p => p.IntensityAggregate).ToList();
            var testIso = run.ResultCollection.ResultList[0];

            Assert.AreEqual(13084442, testIso.IntensityAggregate);
            Assert.AreEqual(2, testIso.IsotopicProfile.ChargeState);
            Assert.AreEqual(0.01012m, (decimal)Math.Round(testIso.IsotopicProfile.Score, 5));
            Assert.AreEqual(3, testIso.IsotopicProfile.Peaklist.Count);
            Assert.AreEqual(481.274105402604m, (decimal)testIso.IsotopicProfile.Peaklist[0].XValue);
            Assert.AreEqual(481.775412188198m, (decimal)testIso.IsotopicProfile.Peaklist[1].XValue);
            Assert.AreEqual(482.276820274024m, (decimal)testIso.IsotopicProfile.Peaklist[2].XValue);

            TestUtilities.DisplayMSFeatures(run.ResultCollection.ResultList);
            // TestUtilities.DisplayPeaks(run.PeakList);
        }
        public void deconWithRAPID_Then_ValidateTest1()
        {
            Run     run     = new XCaliburRun2(FileRefs.RawDataMSFiles.OrbitrapStdFile1);
            ScanSet scanSet = new ScanSet(6005);

            run.CurrentScanSet = scanSet;


            MSGenerator msgen = MSGeneratorFactory.CreateMSGenerator(run.MSFileType);

            DeconToolsPeakDetectorV2 peakDetector = new DeconToolsPeakDetectorV2(1.3, 2, DeconTools.Backend.Globals.PeakFitType.QUADRATIC, true);
            RapidDeconvolutor        decon        = new RapidDeconvolutor();
            ResultValidatorTask      validator    = new ResultValidatorTask();

            msgen.Execute(run.ResultCollection);
            peakDetector.Execute(run.ResultCollection);
            decon.Execute(run.ResultCollection);
            validator.Execute(run.ResultCollection);

            Assert.AreEqual(190, run.ResultCollection.ResultList.Count);
            IsosResult testResult = run.ResultCollection.ResultList[0];

            Assert.AreEqual(0.0213668719893332m, (decimal)testResult.InterferenceScore);

            //TestUtilities.DisplayMSFeatures(run.ResultCollection.ResultList);
        }
        public void deconWithTHRASH_Then_ValidateTest1()
        {
            Run run     = new XCaliburRun2(FileRefs.RawDataMSFiles.OrbitrapStdFile1);
            var scanSet = new ScanSet(6005);

            run.CurrentScanSet = scanSet;

            var msgen = MSGeneratorFactory.CreateMSGenerator(run.MSFileType);

            var peakDetector = new DeconToolsPeakDetectorV2(1.3, 2, DeconTools.Backend.Globals.PeakFitType.QUADRATIC, true);
            var decon        = new HornDeconvolutor();
            var validator    = new ResultValidatorTask();

            msgen.Execute(run.ResultCollection);
            peakDetector.Execute(run.ResultCollection);
            decon.Execute(run.ResultCollection);
            validator.Execute(run.ResultCollection);

            Assert.AreEqual(93, run.ResultCollection.ResultList.Count);
            var testResult = run.ResultCollection.ResultList[0];

            Assert.AreEqual(0.0532199478712594m, (decimal)testResult.InterferenceScore);

            //TestUtilities.DisplayMSFeatures(run.ResultCollection.ResultList);
        }
Esempio n. 20
0
        public override XYData GetMassSpectrum(ScanSet scanSet, double minMZ, double maxMZ)
        {
            Check.Require(scanSet != null, "Can't get mass spectrum; inputted set of scans is null");
            Check.Require(scanSet.IndexValues.Count > 0, "Can't get mass spectrum; no scan numbers inputted");

            var totScans = this.GetNumMSScans();

            var xvals = new double[0];
            var yvals = new double[0];

            //if (scanSet.IndexValues.Count == 1)            //this is the case of only wanting one MS spectrum
            //{
            //    this.rawData.GetSpectrum(scanSet.IndexValues[0], ref xvals, ref yvals);
            //}
            //else
            //{
            //    int upperscan = Math.Min(scanSet.getHighestScanNumber(), this.GetNumMSScans());
            //    int lowerscan = Math.Max(scanSet.getLowestScanNumber(), 1);
            //    this.rawData.GetSummedSpectra(lowerscan, upperscan, minMZ, maxMZ, ref xvals, ref yvals);
            //}

            var upperscan = Math.Min(scanSet.getHighestScanNumber(), this.GetNumMSScans());
            var lowerscan = Math.Max(scanSet.getLowestScanNumber(), 1);

            //TODO:  Old DeconTools reference!! remove this
            this.RawData.GetSummedSpectra(lowerscan, upperscan, minMZ, maxMZ, ref xvals, ref yvals);

            var xydata = new XYData();

            xydata.Xvalues = xvals;
            xydata.Yvalues = yvals;
            return(xydata);
        }
Esempio n. 21
0
        public ActionResult DeleteConfirmed(int id)
        {
            ScanSet scanSet = db.ScanSet.Find(id);

            db.ScanSet.Remove(scanSet);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        public void GetMassSpectrumTest1()
        {
            BrukerSolarixRun run     = new BrukerSolarixRun(FileRefs.RawDataMSFiles.BrukerSolarixFile1);
            ScanSet          scanset = new ScanSet(4);

            run.GetMassSpectrum(scanset, 0, 50000);
            //run.XYData.Display();
        }
Esempio n. 23
0
        public void GetSpectrum1000Test1()
        {
            Run     run     = new BrukerRun(@"\\protoapps\UserData\Slysz\DeconTools_TestFiles\Bruker\Bruker_9T\RSPH_Aonly_01_run1_11Oct07_Andromeda_07-09-02\acqus");
            ScanSet scanSet = new ScanSet(1001);

            run.GetMassSpectrum(scanSet);

            run.XYData.Display();
        }
Esempio n. 24
0
        /// <summary>
        /// Returns the mass spectrum for a specified LC ScanSet and a IMS ScanSet.
        /// </summary>
        /// <param name="lcScanSet"></param>
        /// <param name="imsScanSet"></param>
        /// <param name="minMZ"></param>
        /// <param name="maxMZ"></param>
        public override XYData GetMassSpectrum(ScanSet lcScanSet, ScanSet imsScanSet, double minMZ, double maxMZ)
        {
            Check.Require(imsScanSet.GetScanCount() > 0, string.Format(
                              "Cannot get spectrum. Number of scans in ScanSet ({0}) is 0", nameof(imsScanSet)));

            Check.Require(lcScanSet.GetScanCount() > 0, string.Format(
                              "Cannot get spectrum. Number of frames in FrameSet ({0}) is 0", nameof(lcScanSet)));

            var startFrameNumber = lcScanSet.GetLowestScanNumber();
            var endFrameNumber   = lcScanSet.GetHighestScanNumber();
            var startScanNumber  = imsScanSet.GetLowestScanNumber();
            var endScanNumber    = imsScanSet.GetHighestScanNumber();

            // TODO: If lowest and highest scan numbers are both 0, should we be summing the mass spectrum?

            var frameType = (UIMFData.FrameType)GetMSLevel(lcScanSet.PrimaryScanNumber);

            try
            {
                // Prior to January 2015 the SpectrumCache class in the UIMFReader used Dictionary<int, int> for ListOfIntensityDictionaries
                // This caused some datasets, e.g. EXP-Mix5_1um_pos_19Jan15_Columbia_DI, to run out of memory when caching 10 spectra
                // The UIMFLibrary now uses List<int, int>, which takes up less memory (at the expense having slower lookups by BinNumber, though this does not affect DeconTools' use of the UIMFLibrary)

                mReader.SpectraToCache           = 10;
                mReader.MaxSpectrumCacheMemoryMB = 750;

                mReader.GetSpectrum(
                    startFrameNumber, endFrameNumber, frameType,
                    startScanNumber, endScanNumber,
                    minMZ, maxMZ,
                    out var xVals, out var yVals);

                var xyData = new XYData();

                if (xVals == null || xVals.Length == 0)
                {
                    xyData.Xvalues = null;
                    xyData.Yvalues = null;
                    return(xyData);
                }

                xyData.Xvalues = xVals;
                xyData.Yvalues = yVals.Select <int, double>(i => i).ToArray();

                if (xyData.Xvalues[0] < minMZ || xyData.Xvalues[xyData.Xvalues.Length - 1] > maxMZ)
                {
                    xyData = xyData.TrimData(minMZ, maxMZ);
                }

                return(xyData);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error in UIMF GetMassSpectrum: " + ex.Message);
                throw;
            }
        }
Esempio n. 25
0
        public void getSummedSpectrum(ScanSet scanSet, ref double[] xvals, ref float[] yvals, double minX, double maxX)
        {
            // [gord] idea borrowed from Anuj! Jan 2010

            //the idea is to convert the mz value to a integer. To avoid losing precision, we multiply it by 'precision'
            //the integer is added to a dictionary generic list (sorted)

            var mz_intensityPair = new SortedDictionary <long, float>();
            var precision        = 1e6; // if the precision is set too high, can get artifacts in which the intensities for two m/z values should be added but are separately registered.

            //double[] tempXvals = new double[0];
            //float[] tempYvals = new float[0];
            double[] tempXvals = null;
            float[]  tempYvals = null;

            var minXLong = (long)(minX * precision + 0.5);
            var maxXLong = (long)(maxX * precision + 0.5);

            for (var scanCounter = 0; scanCounter < scanSet.IndexValues.Count; scanCounter++)
            {
                //this.RawData.GetSpectrum(scanSet.IndexValues[scanCounter], ref tempXvals, ref tempYvals);
                m_reader.GetSpectrum(this.SpectraID, scanSet.IndexValues[scanCounter], ref tempXvals, ref tempYvals);

                for (var i = 0; i < tempXvals.Length; i++)
                {
                    var tempmz = (long)Math.Floor(tempXvals[i] * precision + 0.5);
                    if (tempmz < minXLong || tempmz > maxXLong)
                    {
                        continue;
                    }

                    if (mz_intensityPair.ContainsKey(tempmz))
                    {
                        mz_intensityPair[tempmz] += tempYvals[i];
                    }
                    else
                    {
                        mz_intensityPair.Add(tempmz, tempYvals[i]);
                    }
                }
            }

            if (mz_intensityPair.Count == 0)
            {
                return;
            }
            var summedXVals = mz_intensityPair.Keys.ToList();

            xvals = new double[summedXVals.Count];
            yvals = mz_intensityPair.Values.ToArray();

            for (var i = 0; i < summedXVals.Count; i++)
            {
                xvals[i] = summedXVals[i] / precision;
            }
        }
Esempio n. 26
0
        public void bruker15T_GetMassSpectrumTest1()
        {
            BrukerV2Run run     = new BrukerV2Run(FileRefs.RawDataMSFiles.Bruker15TFile1);
            ScanSet     scanset = new ScanSet(4);

            run.GetMassSpectrum(scanset, 0, 50000);

            Assert.AreEqual(789.967903595286m, (decimal)run.XYData.Xvalues[129658]);
            Assert.AreEqual(9503829, run.XYData.Yvalues[129658]);
        }
Esempio n. 27
0
        public void Test1()
        {
            var peakAssociator = new PeakToMSFeatureAssociator();


            Run run = new XCaliburRun2(FileRefs.RawDataMSFiles.OrbitrapStdFile1);

            var scanSet = new ScanSet(6005);

            run.CurrentScanSet = scanSet;


            var msgen = MSGeneratorFactory.CreateMSGenerator(run.MSFileType);

            var peakDetector = new DeconToolsPeakDetectorV2(1.3, 2, DeconTools.Backend.Globals.PeakFitType.QUADRATIC, true);

            var decon = new HornDeconvolutor();


            msgen.Execute(run.ResultCollection);
            peakDetector.Execute(run.ResultCollection);
            decon.Execute(run.ResultCollection);

            peakAssociator.Execute(run.ResultCollection);

            var numPeaksAssociatedWithFeatures = 0;

            foreach (var msfeature in run.ResultCollection.ResultList)
            {
                foreach (var peak in msfeature.IsotopicProfile.Peaklist)
                {
                    numPeaksAssociatedWithFeatures++;
                }
            }


            var numPeaksInPeakListWithAssociations = 0;

            foreach (MSPeak peak in run.PeakList)
            {
                Console.WriteLine(peak.MSFeatureID + "\t" + peak.XValue + "\t" + peak.Height + "\t");

                if (peak.MSFeatureID != -1)
                {
                    numPeaksInPeakListWithAssociations++;
                }
            }

            //I don't think I can assume this...  msfeature1 might overlap and share a peak with msfeature2
            //Assert.AreEqual(numPeaksAssociatedWithFeatures, numPeaksInPeakListWithAssociations);

            Console.WriteLine("total peaks associated with MSFeatures = " + numPeaksAssociatedWithFeatures);
            Console.WriteLine("total peaks in original peaklist that were associated = " + numPeaksInPeakListWithAssociations);
            Console.WriteLine("fraction peaks assigned = " + (double)(numPeaksInPeakListWithAssociations / (double)run.PeakList.Count));
        }
Esempio n. 28
0
        public void GetSpectrum_Bruker9T_Test1()
        {
            var run     = new BrukerV3Run(FileRefs.RawDataMSFiles.Bruker9TStandardFile1);
            var xydata  = new XYData();
            var scanSet = new ScanSet(300);

            xydata = run.GetMassSpectrum(scanSet);
            Assert.That(xydata.Xvalues != null);
            Assert.That(xydata.Xvalues.Length > 0);
            Assert.AreEqual(98897, xydata.Xvalues.Length);
        }
Esempio n. 29
0
        public void GetSpectrum_Bruker12T_ser_Test1()
        {
            var run     = new BrukerV3Run(FileRefs.RawDataMSFiles.BrukerSolarix12TFile1);
            var xydata  = new XYData();
            var scanSet = new ScanSet(2);

            xydata = run.GetMassSpectrum(scanSet);
            Assert.That(xydata.Xvalues != null);
            Assert.That(xydata.Xvalues.Length > 0);
            Assert.AreEqual(204162, xydata.Xvalues.Length);
        }
        public void ComparePeakFitterVsAreaFitter()
        {
            var massTagFile1 = Path.Combine(FileRefs.RawDataBasePath, "TargetedWorkflowStandards", "QCShew_peptidesWithObsCountGreaterThan1000.txt");

            //load target
            var masstagImporter = new MassTagFromTextFileImporter(massTagFile1);
            var targets         = masstagImporter.Import().TargetList;


            var run = new RunFactory().CreateRun(FileRefs.RawDataMSFiles.OrbitrapStdFile1);

            var msgen        = MSGeneratorFactory.CreateMSGenerator(run.MSFileType);
            var peakDetector = new DeconToolsPeakDetectorV2(1.3, 2, Globals.PeakFitType.QUADRATIC, true);



            var scanSet = new ScanSet(9575);

            run.CurrentScanSet = scanSet;

            msgen.Execute(run.ResultCollection);
            peakDetector.Execute(run.ResultCollection);

            var selectedTarget = targets.First(p => p.ID == 635428 && p.ChargeState == 3);

            var theorFeatureGen = new JoshTheorFeatureGenerator(Backend.Globals.LabellingType.NONE, 0.005);

            theorFeatureGen.GenerateTheorFeature(selectedTarget);


            var peakForFWHM = run.PeakList.First(p => p.XValue > 768.38 && p.XValue < 768.39);



            var theorXYdata =
                TheorXYDataCalculationUtilities.GetTheoreticalIsotopicProfileXYData(selectedTarget.IsotopicProfile,
                                                                                    peakForFWHM.Width);

            theorXYdata.NormalizeYData();

            var areaFitter   = new AreaFitter();
            var areaFitScore = areaFitter.GetFit(theorXYdata, run.XYData, 0.1);


            var peakLeastSquaresFitter = new PeakLeastSquaresFitter();
            var peakBasedFitScore      = peakLeastSquaresFitter.GetFit(new List <Peak>(selectedTarget.IsotopicProfile.Peaklist), run.PeakList, 0.1, 25);


            Console.WriteLine("fit score based on XYData = " + areaFitScore);
            Console.WriteLine("fit score based on Peaks= " + peakBasedFitScore);

            Assert.IsTrue(peakBasedFitScore < 0.1);
        }
        private void CreateMsPlotForScanByScanAnalysis(ScanSet scanSet)
        {
            XYData xydata = new XYData();
            xydata.Xvalues = MassSpecXyData == null ? new double[] { 400, 1500 } : MassSpecXyData.Xvalues;
            xydata.Yvalues = MassSpecXyData == null ? new double[] { 0, 0 } : MassSpecXyData.Yvalues;

            string msGraphTitle = "Observed MS - Scan: " + scanSet;

            MsGraphMaxY = (float)xydata.getMaxY(MsGraphMinX, MsGraphMaxX);

            PlotModel plotModel = new PlotModel(msGraphTitle);
            plotModel.TitleFontSize = 11;
            plotModel.Padding = new OxyThickness(0);
            plotModel.PlotMargins = new OxyThickness(0);
            plotModel.PlotAreaBorderThickness = 0;

            var series = new OxyPlot.Series.LineSeries();
            series.MarkerSize = 1;
            series.Color = OxyColors.Black;
            for (int i = 0; i < xydata.Xvalues.Length; i++)
            {
                series.Points.Add(new DataPoint(xydata.Xvalues[i], xydata.Yvalues[i]));
            }

            var xAxis = new LinearAxis(AxisPosition.Bottom, "m/z");
            xAxis.Minimum = MsGraphMinX;
            xAxis.Maximum = MsGraphMaxX;

             var yAxis = new LinearAxis(AxisPosition.Left, "Intensity");
            yAxis.Minimum = 0;
            yAxis.AbsoluteMinimum = 0;
            yAxis.Maximum = MsGraphMaxY + MsGraphMaxY * 0.05;
            //yAxis.Maximum = maxIntensity + (maxIntensity * .05);
            //yAxis.AbsoluteMaximum = maxIntensity + (maxIntensity * .05);
            yAxis.AxisChanged += OnYAxisChange;
            yAxis.StringFormat = "0.0E0";

            xAxis.AxislineStyle = LineStyle.Solid;
            xAxis.AxislineThickness = 1;
            yAxis.AxislineStyle = LineStyle.Solid;
            yAxis.AxislineThickness = 1;

            plotModel.Series.Add(series);

            plotModel.Axes.Add(xAxis);
            plotModel.Axes.Add(yAxis);

            ObservedIsoPlot = plotModel;
        }