public void DetectPeaks1() { //see https://jira.pnnl.gov/jira/browse/OMCS-634 var testChromatogramDataFile = @"\\protoapps\UserData\Slysz\DeconTools_TestFiles\TargetedWorkflowStandards\massTag635428_chromatogramData.txt"; var xydata = TestUtilities.LoadXYDataFromFile(testChromatogramDataFile); Assert.IsNotNull(xydata); var peakDetector = new ChromPeakDetector(); peakDetector.PeakToBackgroundRatio = 0.5; peakDetector.SignalToNoiseThreshold = 0.5; peakDetector.IsDataThresholded = true; var oldChromPeakDetector = new ChromPeakDetectorOld(); oldChromPeakDetector.PeakBackgroundRatio = 0.5; oldChromPeakDetector.SigNoise = 0.5; var peaks = peakDetector.FindPeaks(xydata.Xvalues, xydata.Yvalues); var peaksFromOld = oldChromPeakDetector.FindPeaks(xydata, 0, 0); Assert.AreEqual(8, peaks.Count); TestUtilities.DisplayPeaks(peaks); Console.WriteLine("------------ old peak detector----------------"); TestUtilities.DisplayPeaks(peaksFromOld); // run.XYData.Display(); }
public void ExecutePeakDetectorTest1() { var testChromatogramDataFile = @"\\protoapps\UserData\Slysz\DeconTools_TestFiles\TargetedWorkflowStandards\massTag635428_chromatogramData.txt"; var xydata = TestUtilities.LoadXYDataFromFile(testChromatogramDataFile); Assert.IsNotNull(xydata); Run run = new ConcreteXYDataRun(xydata.Xvalues, xydata.Yvalues); var peakDetector = new ChromPeakDetector(); peakDetector.PeakToBackgroundRatio = 0.5; peakDetector.SignalToNoiseThreshold = 0.5; peakDetector.IsDataThresholded = true; run.XYData = xydata; peakDetector.Execute(run.ResultCollection); Assert.IsTrue(run.PeakList.Count > 0); Assert.AreEqual(8, run.PeakList.Count); var mostAbundantPeak = run.PeakList.OrderByDescending(p => p.Height).First(); Assert.IsTrue(mostAbundantPeak is ChromPeak); Assert.AreEqual(2498682m, (decimal)mostAbundantPeak.Height); Assert.AreEqual(10065.52418m, (decimal)Math.Round(mostAbundantPeak.XValue, 5)); Assert.AreEqual(92.27364m, (decimal)Math.Round(mostAbundantPeak.Width, 5)); }
protected virtual void DoMainInitialization() { ValidateParameters(); TheorFeatureGen = new JoshTheorFeatureGenerator(DeconTools.Backend.Globals.LabellingType.NONE, 0.005); ChromGen = new PeakChromatogramGenerator(WorkflowParameters.ChromGenTolerance, WorkflowParameters.ChromGeneratorMode, DeconTools.Backend.Globals.IsotopicProfileType.UNLABELLED, WorkflowParameters.ChromGenToleranceUnit) { TopNPeaksLowerCutOff = 0.333, ChromWindowWidthForAlignedData = (float)WorkflowParameters.ChromNETTolerance * 2, ChromWindowWidthForNonAlignedData = (float)WorkflowParameters.ChromNETTolerance * 2 }; //only var allowNegativeValues = false; ChromSmoother = new SavitzkyGolaySmoother(WorkflowParameters.ChromSmootherNumPointsInSmooth, 2, allowNegativeValues); ChromPeakDetector = new ChromPeakDetector(WorkflowParameters.ChromPeakDetectorPeakBR, WorkflowParameters.ChromPeakDetectorSigNoise); ChromPeakSelector = CreateChromPeakSelector(WorkflowParameters); ChromPeakAnalyzer = new ChromPeakAnalyzer(WorkflowParameters); IterativeTffParameters = new IterativeTFFParameters(); IterativeTffParameters.ToleranceInPPM = WorkflowParameters.MSToleranceInPPM; MsfeatureFinder = new IterativeTFF(IterativeTffParameters); FitScoreCalc = new IsotopicProfileFitScoreCalculator(); InterferenceScorer = new InterferenceScorer(); ResultValidator = new ResultValidatorTask(); ChromatogramCorrelator = new IqChromCorrelator(WorkflowParameters.ChromSmootherNumPointsInSmooth, 0.05, WorkflowParameters.ChromGenTolerance); }
/// <summary> /// ChargeStateChildTopDownIqWorkflow /// Generates theoretical isotopic profile, XIC, and creates ChromPeakIqTargets based on peaks found /// </summary> /// <param name="result"></param> protected override void ExecuteWorkflow(IqResult result) { //Generate theoretical isotopic profile result.Target.TheorIsotopicProfile = TheorFeatureGen.GenerateTheorProfile(result.Target.EmpiricalFormula, result.Target.ChargeState); if (!Parser.CheckSequenceIntegrity(result.Target.Code)) { ShiftIsotopicProfile(result.Target.TheorIsotopicProfile, result.Target.MonoMassTheor, result.Target.ChargeState); } //Generate XIC and smooth result.IqResultDetail.Chromatogram = ChromGen.GenerateChromatogram(Run, result.Target.TheorIsotopicProfile, result.Target.ElutionTimeTheor); result.IqResultDetail.Chromatogram = ChromSmoother.Smooth(result.IqResultDetail.Chromatogram); //Look for peaks in XIC result.ChromPeakList = ChromPeakDetector.FindPeaks(result.IqResultDetail.Chromatogram); ChromPeakDetector.CalculateElutionTimes(Run, result.ChromPeakList); ChromPeakDetector.FilterPeaksOnNET(WorkflowParameters.ChromNETTolerance, result.Target.ElutionTimeTheor, result.ChromPeakList); var tempMinScanWithinTol = (int)Run.NetAlignmentInfo.GetScanForNet(result.Target.ElutionTimeTheor - WorkflowParameters.ChromNETTolerance); var tempMaxScanWithinTol = (int)Run.NetAlignmentInfo.GetScanForNet(result.Target.ElutionTimeTheor + WorkflowParameters.ChromNETTolerance); var tempCenterTol = (int)Run.NetAlignmentInfo.GetScanForNet(result.Target.ElutionTimeTheor); result.NumChromPeaksWithinTolerance = result.ChromPeakList.Count; //General peak information output written to console. Console.WriteLine("SmartPeakSelector --> NETTolerance= " + WorkflowParameters.ChromNETTolerance + "; chromMinCenterMax= " + tempMinScanWithinTol + "\t" + tempCenterTol + "" + "\t" + tempMaxScanWithinTol); Console.WriteLine("MT= " + result.Target.ID + ";z= " + result.Target.ChargeState + "; mz= " + result.Target.MZTheor.ToString("0.000") + "; ------------------------- PeaksWithinTol = " + result.ChromPeakList.Count); //Creates a ChromPeakIqTarget for each peak found foreach (ChromPeak peak in result.ChromPeakList) { var target = new ChromPeakIqTarget(new ChromPeakAnalyzerIqWorkflow(Run, WorkflowParameters)); TargetUtilities.CopyTargetProperties(result.Target, target, false); target.ChromPeak = peak; result.Target.AddTarget(target); } //Executes each grandchild ChromPeakAnalyzerIqWorkflow var children = result.Target.ChildTargets(); foreach (var child in children) { child.DoWorkflow(); } if (Utilities.SipperDataDump.OutputResults) { //Data Dump for use with Sipper children = result.Target.ChildTargets(); foreach (var child in children) { Utilities.SipperDataDump.DataDump(child, Run); } } }
/// <summary> /// Finds the XIC based on the m/z and scan parameters. /// </summary> /// <param name="mz"></param> /// <param name="scan"></param> /// <returns></returns> public List <XYData> FindXic(double mz, int scan, bool shouldSmooth) { LcmsFeatureTarget target = new LcmsFeatureTarget(); target.ID = 0; target.MZ = mz; target.ScanLCTarget = scan; target.ElutionTimeUnit = Globals.ElutionTimeUnit.ScanNum; m_run.CurrentMassTag = target; var result = m_run.ResultCollection.GetTargetedResult(m_run.CurrentMassTag); double chromPeakGeneratorTolInPPM = MzPpmWindow; Globals.ChromatogramGeneratorMode chromGeneratorMode = Globals.ChromatogramGeneratorMode.MZ_BASED; var chromGen = new PeakChromatogramGenerator(chromPeakGeneratorTolInPPM, chromGeneratorMode); chromGen.NETWindowWidthForNonAlignedData = Convert.ToSingle(NetWindow); int pointsToSmooth = 5; var chromSmoother = new SavitzkyGolaySmoother(pointsToSmooth, 2); double chromPeakDetectorPeakBR = 1; double chromPeakDetectorSigNoise = 1; var chromPeakDetector = new ChromPeakDetector(chromPeakDetectorPeakBR, chromPeakDetectorSigNoise); ChromPeakSelectorParameters chromPeakSelectorParameters = new ChromPeakSelectorParameters(); var chromPeakSelector = new BasicChromPeakSelector(chromPeakSelectorParameters); //this generates an extracted ion chromatogram // Since we are not using the built in generator, chromGen.Execute(m_run.ResultCollection); //this smooths the data - very important step! if (shouldSmooth) { chromSmoother.Execute(m_run.ResultCollection); } //this detects peaks within an extracted ion chromatogram chromPeakDetector.Execute(m_run.ResultCollection); //this selects the peak chromPeakSelector.Parameters.PeakSelectorMode = Globals.PeakSelectorMode.ClosestToTarget; chromPeakSelector.Execute(m_run.ResultCollection); //Here's the chromatogram data... List <XYData> data = new List <XYData>(); for (int i = 0; i < m_run.XYData.Xvalues.Length; i++) { XYData datum = new XYData(m_run.XYData.Xvalues[i], m_run.XYData.Yvalues[i]); data.Add(datum); } return(data); }
protected override void ExecuteWorkflow(IqResult result) { if (ChromPeakAnalyzerIqWorkflow == null) { InitializeChromPeakAnalyzerWorkflow(); } result.Target.TheorIsotopicProfile = TheorFeatureGen.GenerateTheorProfile(result.Target.EmpiricalFormula, result.Target.ChargeState); result.IqResultDetail.Chromatogram = ChromGen.GenerateChromatogram(Run, result.Target.TheorIsotopicProfile, result.Target.ElutionTimeTheor); result.IqResultDetail.Chromatogram = ChromSmoother.Smooth(result.IqResultDetail.Chromatogram); result.ChromPeakList = ChromPeakDetector.FindPeaks(result.IqResultDetail.Chromatogram); ChromPeakDetector.CalculateElutionTimes(Run, result.ChromPeakList); ChromPeakDetector.FilterPeaksOnNET(WorkflowParameters.ChromNETTolerance, result.Target.ElutionTimeTheor, result.ChromPeakList); result.NumChromPeaksWithinTolerance = result.ChromPeakList.Count; //Creates a ChromPeakIqTarget for each peak found foreach (ChromPeak peak in result.ChromPeakList) { var target = new ChromPeakIqTarget(ChromPeakAnalyzerIqWorkflow); TargetUtilities.CopyTargetProperties(result.Target, target, false); target.ChromPeak = peak; result.Target.AddTarget(target); } //Executes each grandchild ChromPeakAnalyzerIqWorkflow var children = result.Target.ChildTargets(); var targetRemovalList = new List <IqTarget>(); foreach (var child in children) { child.DoWorkflow(); /* * //Selects grandchildren with extremely poor metric scores for removal * IqResult childResult = child.GetResult(); * if ((childResult.FitScore >= .8) || (childResult.CorrelationData.RSquaredValsMedian <= .15)) * { * targetRemovalList.Add(child); * } */ } /* * //Removes the poorly scoring grandchild ChromPeakIqTargets * foreach (IqTarget iqTarget in targetRemovalList) * { * result.RemoveResult(iqTarget.GetResult()); * result.Target.RemoveTarget(iqTarget); * } */ }
protected virtual void DoMainInitialization() { ValidateParameters(); _theorFeatureGen = new JoshTheorFeatureGenerator(DeconTools.Backend.Globals.LabellingType.NONE, 0.005); _chromGen = new PeakChromatogramGenerator(_workflowParameters.ChromGenTolerance, _workflowParameters.ChromGeneratorMode, DeconTools.Backend.Globals.IsotopicProfileType.UNLABELLED, _workflowParameters.ChromGenToleranceUnit) { TopNPeaksLowerCutOff = 0.333, ChromWindowWidthForAlignedData = (float)_workflowParameters.ChromNETTolerance * 2, ChromWindowWidthForNonAlignedData = (float)_workflowParameters.ChromNETTolerance * 2 }; //only var allowNegativeValues = false; _chromSmoother = new SavitzkyGolaySmoother(_workflowParameters.ChromSmootherNumPointsInSmooth, 2, allowNegativeValues); _chromPeakDetector = new ChromPeakDetectorMedianBased(_workflowParameters.ChromPeakDetectorPeakBR, _workflowParameters.ChromPeakDetectorSigNoise); _chromPeakSelector = CreateChromPeakSelector(_workflowParameters); _iterativeTFFParameters = new IterativeTFFParameters(); _iterativeTFFParameters.ToleranceInPPM = _workflowParameters.MSToleranceInPPM; _msfeatureFinder = new IterativeTFF(_iterativeTFFParameters); _fitScoreCalc = new IsotopicProfileFitScoreCalculator(); _resultValidator = new ResultValidatorTask(); _chromatogramCorrelator = new ChromatogramCorrelator(_workflowParameters.ChromSmootherNumPointsInSmooth, 0.01, _workflowParameters.ChromGenTolerance); ChromatogramXYData = new XYData(); MassSpectrumXYData = new XYData(); ChromPeaksDetected = new List <ChromPeak>(); }
public SaturationDetector(string uimfFileLocation) { _uimfReader = new DataReader(uimfFileLocation); _smoother = new SavitzkyGolaySmoother(9, 2); _peakDetector = new ChromPeakDetector(0.0001, 0.0001); _theoreticalFeatureGenerator = new JoshTheorFeatureGenerator(); if (!_uimfReader.DoesContainBinCentricData()) { DataWriter dataWriter = new DataWriter(uimfFileLocation); dataWriter.CreateBinCentricTables(); } IterativeTFFParameters msFeatureFinderParameters = new IterativeTFFParameters { MinimumRelIntensityForForPeakInclusion = 0.0000000001, PeakDetectorMinimumPeakBR = 0, PeakDetectorPeakBR = 5.00000000000002, PeakBRStep = 0.25, PeakDetectorSigNoiseRatioThreshold = 0.00000000001, ToleranceInPPM = 50 }; _msFeatureFinder = new IterativeTFF(msFeatureFinderParameters); }
public void Test1() { var testFile = @"D:\Data\Orbitrap\BrianIQTesting\QC_Shew_11_02_pt5-b_6Jun11_Sphinx_11-03-27.RAW"; var peaksTestFile = @"D:\Data\Orbitrap\BrianIQTesting\QC_Shew_11_02_pt5-b_6Jun11_Sphinx_11-03-27_peaks.txt"; var run = RunUtilities.CreateAndLoadPeaks(testFile, peaksTestFile); var target = new LcmsFeatureTarget(); target.ID = 0; target.MZ = 715.39214; target.ScanLCTarget = 7343; target.ElutionTimeUnit = Globals.ElutionTimeUnit.ScanNum; run.CurrentMassTag = target; var result = run.ResultCollection.GetTargetedResult(run.CurrentMassTag); double chromPeakGeneratorTolInPPM = 20; var chromGeneratorMode = Globals.ChromatogramGeneratorMode.MZ_BASED; var chromGen = new PeakChromatogramGenerator(chromPeakGeneratorTolInPPM, chromGeneratorMode); // If we want to use the Execute Command //BLL .1 and .5 NET windows work. .02 NET window does not BR and SN was set to 1 however) chromGen.ChromWindowWidthForNonAlignedData = .02F; var pointsToSmooth = 5; var chromSmoother = new SavitzkyGolaySmoother(pointsToSmooth, 2); //BLL We also tried to set the BR and SIG NOISE to 0. This did not work var chromPeakDetectorPeakBR = 0.5; var chromPeakDetectorSigNoise = 0.5; var chromPeakDetector = new ChromPeakDetector(chromPeakDetectorPeakBR, chromPeakDetectorSigNoise); var chromPeakSelectorParameters = new ChromPeakSelectorParameters(); chromPeakSelectorParameters.PeakSelectorMode = Globals.PeakSelectorMode.ClosestToTarget; var chromPeakSelector = new BasicChromPeakSelector(chromPeakSelectorParameters); var smartChromPeakParameters = new SmartChromPeakSelectorParameters(); var smartChromPeakSelector = new SmartChromPeakSelector(smartChromPeakParameters); //this generates an extracted ion chromatogram // Since we are not using the built in generator, chromGen.Execute(run.ResultCollection); //this smooths the data - very important step! //BLL. This didnt work for me when we first started, instead of using the NET window above. //chromGen.GenerateChromatogram(run, // target.ScanLCTarget - 300, // target.ScanLCTarget + 300, // target.MZ, // chromPeakGeneratorTolInPPM); chromSmoother.Execute(run.ResultCollection); //this detects peaks within an extracted ion chromatogram chromPeakDetector.Execute(run.ResultCollection); //this selects the peak chromPeakSelector.Execute(run.ResultCollection); //smartChromPeakSelector.Execute(run.ResultCollection); //TestUtilities.DisplayXYValues(run.XYData); TestUtilities.DisplayPeaks(run.PeakList); Console.WriteLine("Number of peaks detected = " + run.PeakList.Count); Console.WriteLine("Selected peak= " + result.ChromPeakSelected); }
/// <summary> /// Initializes a new instance of the <see cref="LcImsPeptideSearchWorkfow"/> class. /// </summary> /// <param name="uimfFileLocation"> /// The uimf file location. /// </param> /// <param name="parameters"> /// The parameters. /// </param> public LcImsPeptideSearchWorkfow(string uimfFileLocation, LcImsPeptideSearchParameters parameters) { this._buildWatershedStopWatch = new Stopwatch(); this._smoothStopwatch = new Stopwatch(); this._featureFindStopWatch = new Stopwatch(); this._featureFindCount = 0; this._pointCount = 0; this._uimfFileLocation = uimfFileLocation; this._uimfReader = new DataReader(uimfFileLocation); // Append bin-centric table to the uimf if not present. if (!this._uimfReader.DoesContainBinCentricData()) { DataWriter dataWriter = new DataWriter(uimfFileLocation); dataWriter.CreateBinCentricTables(); } this._parameters = parameters; this._smoother = new SavitzkyGolaySmoother(parameters.NumPointForSmoothing, 2); this._theoreticalFeatureGenerator = new JoshTheorFeatureGenerator(); this._leftOfMonoPeakLooker = new LeftOfMonoPeakLooker(); this._peakDetector = new ChromPeakDetector(0.0001, 0.0001); this._isotopicPeakFitScoreCalculator = new PeakLeastSquaresFitter(); IterativeTFFParameters msFeatureFinderParameters = new IterativeTFFParameters { MinimumRelIntensityForForPeakInclusion = 0.0001, PeakDetectorMinimumPeakBR = 0.0001, PeakDetectorPeakBR = 5.0002, PeakBRStep = 0.25, PeakDetectorSigNoiseRatioThreshold = 0.0001, ToleranceInPPM = parameters.MassToleranceInPpm }; this._msFeatureFinder = new IterativeTFF(msFeatureFinderParameters); this.NumberOfFrames = this._uimfReader.GetGlobalParams().NumFrames; this.NumberOfScans = this._uimfReader.GetFrameParams(1).Scans; }
/// <summary> /// Finds the XIC based on the m/z and scan parameters. /// </summary> /// <param name="mz"></param> /// <param name="scan"></param> /// <returns></returns> public List<PNNLOmics.Data.XYData> FindXic(double mz, int scan, bool shouldSmooth) { LcmsFeatureTarget target = new LcmsFeatureTarget(); target.ID = 0; target.MZ = mz; target.ScanLCTarget = scan; target.ElutionTimeUnit = Globals.ElutionTimeUnit.ScanNum; m_run.CurrentMassTag = target; var result = m_run.ResultCollection.GetTargetedResult(m_run.CurrentMassTag); double chromPeakGeneratorTolInPPM = MzPpmWindow; Globals.ChromatogramGeneratorMode chromGeneratorMode = Globals.ChromatogramGeneratorMode.MZ_BASED; var chromGen = new PeakChromatogramGenerator( chromPeakGeneratorTolInPPM, chromGeneratorMode); chromGen.NETWindowWidthForNonAlignedData = Convert.ToSingle(NetWindow); int pointsToSmooth = 5; var chromSmoother = new SavitzkyGolaySmoother(pointsToSmooth, 2); double chromPeakDetectorPeakBR = 1; double chromPeakDetectorSigNoise = 1; var chromPeakDetector = new ChromPeakDetector( chromPeakDetectorPeakBR, chromPeakDetectorSigNoise); ChromPeakSelectorParameters chromPeakSelectorParameters = new ChromPeakSelectorParameters(); var chromPeakSelector = new BasicChromPeakSelector(chromPeakSelectorParameters); //this generates an extracted ion chromatogram // Since we are not using the built in generator, chromGen.Execute(m_run.ResultCollection); //this smooths the data - very important step! if (shouldSmooth) { chromSmoother.Execute(m_run.ResultCollection); } //this detects peaks within an extracted ion chromatogram chromPeakDetector.Execute(m_run.ResultCollection); //this selects the peak chromPeakSelector.Parameters.PeakSelectorMode = Globals.PeakSelectorMode.ClosestToTarget; chromPeakSelector.Execute(m_run.ResultCollection); //Here's the chromatogram data... List<PNNLOmics.Data.XYData> data = new List<PNNLOmics.Data.XYData>(); for (int i = 0; i < m_run.XYData.Xvalues.Length; i++) { PNNLOmics.Data.XYData datum = new PNNLOmics.Data.XYData(m_run.XYData.Xvalues[i], m_run.XYData.Yvalues[i]); data.Add(datum); } return data; }
/// <summary> /// Initializes a new instance of the <see cref="CrossSectionWorkfow"/> class. /// </summary> /// <param name="uimfFileLocation"> /// The uimf file location. /// </param> /// <param name="outputDirectory"> /// The output directory. /// </param> /// <param name="logFileName"> /// The log file name. /// </param> /// <param name="parameters"> /// The parameters. /// </param> public CrossSectionWorkfow(string uimfFileLocation, string outputDirectory, CrossSectionSearchParameters parameters) { this.uimfReader = new DataReader(uimfFileLocation); // Append bin-centric table to the uimf if not present. if (!this.uimfReader.DoesContainBinCentricData()) { DataWriter dataWriter = new DataWriter(uimfFileLocation); dataWriter.CreateBinCentricTables(); } this.Parameters = parameters; this.smoother = new SavitzkyGolaySmoother(parameters.NumPointForSmoothing, 5); this.theoreticalFeatureGenerator = new JoshTheorFeatureGenerator(); this.peakDetector = new ChromPeakDetector(0.0001, 0.0001); this.NumberOfFrames = this.uimfReader.GetGlobalParams().NumFrames; this.NumberOfScans = this.uimfReader.GetFrameParams(1).Scans; this.SampleCollectionDate = this.uimfReader.GetGlobalParams().GetValue(GlobalParamKeyType.DateStarted); this.DatasetName = Path.GetFileNameWithoutExtension(uimfFileLocation); this.OutputPath = outputDirectory; this.DatasetPath = uimfFileLocation; this.Parameters = parameters; if (outputDirectory == string.Empty) { outputDirectory = Directory.GetCurrentDirectory(); } if (!outputDirectory.EndsWith("\\")) { outputDirectory += "\\"; } if (!Directory.Exists(outputDirectory)) { try { Directory.CreateDirectory(outputDirectory); } catch (Exception) { Console.WriteLine("Failed to create directory."); throw; } } this.OutputPath = outputDirectory; }
protected override void DoPostInitialization() { base.DoPostInitialization(); ValidateParameters(); theorFeatureGen = new JoshTheorFeatureGenerator(DeconTools.Backend.Globals.LabellingType.NONE, 0.005); theorN15FeatureGen = new JoshTheorFeatureGenerator(DeconTools.Backend.Globals.LabellingType.N15, 0.005); chromGenN14 = new PeakChromatogramGenerator(_workflowParameters.ChromGenTolerance, _workflowParameters.ChromGeneratorMode); chromGenN14.TopNPeaksLowerCutOff = 0.333; chromGenN15 = new PeakChromatogramGenerator(_workflowParameters.ChromGenTolerance, DeconTools.Backend.Globals.ChromatogramGeneratorMode.MOST_ABUNDANT_PEAK, DeconTools.Backend.Globals.IsotopicProfileType.LABELLED); chromGenN15.TopNPeaksLowerCutOff = 0.333; var pointsToSmooth = (_workflowParameters.ChromSmootherNumPointsInSmooth + 1) / 2; chromSmoother = new SavitzkyGolaySmoother(_workflowParameters.ChromSmootherNumPointsInSmooth, 2); chromPeakDetector = new ChromPeakDetector(_workflowParameters.ChromPeakDetectorPeakBR, _workflowParameters.ChromPeakDetectorSigNoise); var smartchrompeakSelectorParams = new SmartChromPeakSelectorParameters(); smartchrompeakSelectorParams.MSFeatureFinderType = DeconTools.Backend.Globals.TargetedFeatureFinderType.ITERATIVE; smartchrompeakSelectorParams.MSPeakDetectorPeakBR = _workflowParameters.MSPeakDetectorPeakBR; smartchrompeakSelectorParams.MSPeakDetectorSigNoiseThresh = _workflowParameters.MSPeakDetectorSigNoise; smartchrompeakSelectorParams.MSToleranceInPPM = _workflowParameters.MSToleranceInPPM; smartchrompeakSelectorParams.NETTolerance = (float)_workflowParameters.ChromNETTolerance; smartchrompeakSelectorParams.NumScansToSum = _workflowParameters.NumMSScansToSum; smartchrompeakSelectorParams.NumChromPeaksAllowed = 10; smartchrompeakSelectorParams.IterativeTffMinRelIntensityForPeakInclusion = 0.5; chromPeakSelectorN14 = new SmartChromPeakSelector(smartchrompeakSelectorParams); var chromPeakSelectorParameters = new ChromPeakSelectorParameters(); chromPeakSelectorParameters.NumScansToSum = _workflowParameters.NumMSScansToSum; chromPeakSelectorParameters.NETTolerance = (float)_workflowParameters.ChromNETTolerance; chromPeakSelectorParameters.PeakSelectorMode = DeconTools.Backend.Globals.PeakSelectorMode.N15IntelligentMode; chromPeakSelectorN15 = new BasicChromPeakSelector(chromPeakSelectorParameters); chromPeakSelectorN15.IsotopicProfileType = DeconTools.Backend.Globals.IsotopicProfileType.LABELLED; msPeakDetector = new DeconToolsPeakDetectorV2(_workflowParameters.MSPeakDetectorPeakBR, _workflowParameters.MSPeakDetectorSigNoise, DeconTools.Backend.Globals.PeakFitType.QUADRATIC, false); var iterativeTFFParameters = new IterativeTFFParameters(); iterativeTFFParameters.ToleranceInPPM = _n14N15Workflow2Parameters.TargetedFeatureFinderToleranceInPPM; iterativeTFFParameters.MinimumRelIntensityForForPeakInclusion = 0.33; iterativeTFFParameters.IsotopicProfileType = DeconTools.Backend.Globals.IsotopicProfileType.UNLABELLED; unlabelledProfilefinder = new IterativeTFF(iterativeTFFParameters); iterativeTFFParameters = new IterativeTFFParameters(); iterativeTFFParameters.ToleranceInPPM = _n14N15Workflow2Parameters.TargetedFeatureFinderToleranceInPPM; iterativeTFFParameters.MinimumRelIntensityForForPeakInclusion = 0.33; iterativeTFFParameters.IsotopicProfileType = DeconTools.Backend.Globals.IsotopicProfileType.LABELLED; labelledProfileFinder = new IterativeTFF(iterativeTFFParameters); quantifier = new N14N15QuantifierTask(_n14N15Workflow2Parameters.NumPeaksUsedInQuant, _workflowParameters.MSToleranceInPPM); fitScoreCalc = new IsotopicProfileFitScoreCalculator(); var minRelativeIntensityForScore = 0.2; resultValidatorN14 = new ResultValidatorTask(minRelativeIntensityForScore, true); resultValidatorN15 = new LabelledIsotopicProfileScorer(minRelativeIntensityForScore); ChromatogramXYData = new XYData(); MassSpectrumXYData = new XYData(); ChromPeaksDetected = new List <ChromPeak>(); }
public void smartChromPeakSelectorTest_noSumming() { var run = new RunFactory().CreateRun(xcaliburTestfile); run.Close(); run = new RunFactory().CreateRun(xcaliburTestfile); var massTagColl = new TargetCollection(); var masstagImporter = new MassTagFromTextFileImporter(massTagTestList1); massTagColl = masstagImporter.Import(); var chromAligner = new ChromAlignerUsingVIPERInfo(); chromAligner.Execute(run); var theorFeatureGen = new TomTheorFeatureGenerator(DeconTools.Backend.Globals.LabellingType.NONE, 0.005); var chromPeakDet = new ChromPeakDetector(0.5, 1); var smartchromParam = new SmartChromPeakSelectorParameters(); var smartChromPeakSelector = new SmartChromPeakSelector(smartchromParam); var basicChromParam = new ChromPeakSelectorParameters(); var basicChromPeakSelector = new BasicChromPeakSelector(basicChromParam); var msgen = MSGeneratorFactory.CreateMSGenerator(run.MSFileType); var iterativeTff = new IterativeTFF(new IterativeTFFParameters()); var fitscoreCalc = new IsotopicProfileFitScoreCalculator(); var testChromatogramDataFile = @"\\protoapps\UserData\Slysz\DeconTools_TestFiles\TargetedWorkflowStandards\massTag635428_chromatogramData.txt"; var xydata = TestUtilities.LoadXYDataFromFile(testChromatogramDataFile); Assert.IsNotNull(xydata); run.XYData = xydata; // run.XYData.Display(); run.CurrentMassTag = massTagColl.TargetList.Where(p => p.ID == 635428).First(); Console.WriteLine("------MT = " + run.CurrentMassTag.ToString()); theorFeatureGen.Execute(run.ResultCollection); chromPeakDet.Execute(run.ResultCollection); var result = run.ResultCollection.GetTargetedResult(run.CurrentMassTag); //first run the standard peak selector basicChromPeakSelector.Execute(run.ResultCollection); Assert.AreEqual(10066, (int)Math.Round(result.ChromPeakSelected.XValue)); //now run the smart chrom peak selector run.XYData = xydata; chromPeakDet.Execute(run.ResultCollection); smartChromPeakSelector.Parameters.NETTolerance = 0.025f; smartChromPeakSelector.Execute(run.ResultCollection); msgen.Execute(run.ResultCollection); iterativeTff.Execute(run.ResultCollection); TestUtilities.DisplayPeaks(run.PeakList); fitscoreCalc.Execute(run.ResultCollection); Assert.AreEqual(9579, (int)Math.Round(result.ChromPeakSelected.XValue)); //result.DisplayToConsole(); TestUtilities.DisplayIsotopicProfileData(result.Target.IsotopicProfile); }
public void smartChromPeakSelectorTest_withDynamicSumming() { var run = new RunFactory().CreateRun(xcaliburTestfile); var massTagColl = new TargetCollection(); var masstagImporter = new MassTagFromTextFileImporter(massTagTestList1); massTagColl = masstagImporter.Import(); var chromAligner = new ChromAlignerUsingVIPERInfo(); chromAligner.Execute(run); var theorFeatureGen = new TomTheorFeatureGenerator(DeconTools.Backend.Globals.LabellingType.NONE, 0.005); var chromPeakDet = new ChromPeakDetector(0.5, 1); var smartchromParam = new SmartChromPeakSelectorParameters(); var smartChromPeakSelector = new SmartChromPeakSelector(smartchromParam); var basicChromPeakSelector = new BasicChromPeakSelector(new ChromPeakSelectorParameters()); var msgen = MSGeneratorFactory.CreateMSGenerator(run.MSFileType); var iterativeTff = new IterativeTFF(new IterativeTFFParameters()); var fitscoreCalc = new IsotopicProfileFitScoreCalculator(); var testChromatogramDataFile = @"\\protoapps\UserData\Slysz\DeconTools_TestFiles\TargetedWorkflowStandards\massTag635428_chromatogramData.txt"; var xydata = TestUtilities.LoadXYDataFromFile(testChromatogramDataFile); Assert.IsNotNull(xydata); run.XYData = new XYData(); run.XYData.Xvalues = xydata.Xvalues; run.XYData.Yvalues = xydata.Yvalues; // run.XYData.Display(); run.CurrentMassTag = massTagColl.TargetList.Where(p => p.ID == 635428).First(); Console.WriteLine("------MT = " + run.CurrentMassTag.ToString()); theorFeatureGen.Execute(run.ResultCollection); chromPeakDet.Execute(run.ResultCollection); //first run the standard peak selector basicChromPeakSelector.Execute(run.ResultCollection); var result = run.ResultCollection.GetTargetedResult(run.CurrentMassTag); Assert.AreEqual(10066, (int)Math.Round(result.ChromPeakSelected.XValue)); //now run the smart chrom peak selector run.XYData = new XYData(); run.XYData.Xvalues = xydata.Xvalues; run.XYData.Yvalues = xydata.Yvalues; chromPeakDet.Execute(run.ResultCollection); smartChromPeakSelector.Parameters.NETTolerance = 0.025f; smartChromPeakSelector.Parameters.MaxScansSummedInDynamicSumming = 51; smartChromPeakSelector.Parameters.SummingMode = SummingModeEnum.SUMMINGMODE_DYNAMIC; smartChromPeakSelector.Parameters.AreaOfPeakToSumInDynamicSumming = 1; smartChromPeakSelector.Execute(run.ResultCollection); msgen.Execute(run.ResultCollection); iterativeTff.Execute(run.ResultCollection); fitscoreCalc.Execute(run.ResultCollection); Console.WriteLine(result.ScanSet); Assert.AreEqual(14, result.ScanSet.IndexValues.Count); Assert.AreEqual(0.0104m, (decimal)Math.Round(result.Score, 4)); Assert.AreEqual("9575 {9534, 9540, 9547, 9554, 9561, 9568, 9575, 9582, 9589, 9596, 9603, 9610, 9617, 9624}", result.ScanSet.ToString()); run.XYData = new XYData(); run.XYData.Xvalues = xydata.Xvalues; run.XYData.Yvalues = xydata.Yvalues; chromPeakDet.Execute(run.ResultCollection); smartChromPeakSelector.Parameters.NETTolerance = 0.025f; smartChromPeakSelector.Parameters.MaxScansSummedInDynamicSumming = 51; smartChromPeakSelector.Parameters.SummingMode = SummingModeEnum.SUMMINGMODE_DYNAMIC; smartChromPeakSelector.Parameters.AreaOfPeakToSumInDynamicSumming = 2; smartChromPeakSelector.Execute(run.ResultCollection); msgen.Execute(run.ResultCollection); iterativeTff.Execute(run.ResultCollection); fitscoreCalc.Execute(run.ResultCollection); result.DisplayToConsole(); Assert.AreEqual(9579, (int)Math.Round(result.ChromPeakSelected.XValue)); Assert.AreEqual(0.025m, (decimal)(Math.Round(result.Score, 4))); //Console.WriteLine(result.ScanSet); Assert.AreEqual(26, result.ScanSet.IndexValues.Count); Assert.AreEqual("9575 {9493, 9500, 9506, 9513, 9520, 9527, 9534, 9540, 9547, 9554, 9561, 9568, 9575, 9582, 9589, 9596, 9603, 9610, 9617, 9624, 9631, 9638, 9645, 9652, 9658, 9665}", result.ScanSet.ToString()); }