public void getTheorIsotopicProfileXYDataTest1() { MassTag mt = new MassTag(); mt.ID = 56488; mt.MonoIsotopicMass = 2275.1694779; mt.PeptideSequence = "TTPSIIAYTDDETIVGQPAKR"; mt.NETVal = 0.3520239f; mt.CreatePeptideObject(); mt.ChargeState = 2; Run run = new XCaliburRun(); ResultCollection rc = new ResultCollection(run); rc.Run.CurrentMassTag = mt; Task theorGen = new TomTheorFeatureGenerator(); theorGen.Execute(rc); mt.CalculateMassesForIsotopicProfile(mt.ChargeState); TestUtilities.DisplayIsotopicProfileData(mt.IsotopicProfile); XYData xydata = TheorXYDataCalculationUtilities.Get_Theoretical_IsotopicProfileXYData(mt.IsotopicProfile, 0.02); TestUtilities.DisplayXYValues(xydata); }
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 XYData GetTheoreticalIsotopicProfileXYData(IsotopicProfile iso, double fwhm, double minRelIntensity) { var xydata = new XYData(); var xvals = new List <double>(); var yvals = new List <double>(); var mspeaks = new List <MSPeak>(iso.Peaklist); var zeroIntensityPeakToTheLeft = new MSPeak(); zeroIntensityPeakToTheLeft.XValue = iso.Peaklist[0].XValue - 1 * 1.00235 / iso.ChargeState; zeroIntensityPeakToTheLeft.Height = 0; mspeaks.Insert(0, zeroIntensityPeakToTheLeft); //TheorXYDataCalculationUtilities.GetTheoreticalIsotopicProfileXYData() for (var peakIndex = 0; peakIndex < mspeaks.Count; peakIndex++) { var msPeak = mspeaks[peakIndex]; var tempXYData = TheorXYDataCalculationUtilities.GetTheorPeakData(msPeak, fwhm, NumPointsPerTheorPeak); for (var j = 0; j < tempXYData.Xvalues.Length; j++) { //First peak is a zero-intensity peak. We always want to add that one. For the others, //add intensity points that are above a certain intensity if (peakIndex > 0) { if (tempXYData.Yvalues[j] >= minRelIntensity) { xvals.Add(tempXYData.Xvalues[j]); yvals.Add(tempXYData.Yvalues[j]); } } else { xvals.Add(tempXYData.Xvalues[j]); yvals.Add(tempXYData.Yvalues[j]); } } } xydata.Xvalues = xvals.ToArray(); xydata.Yvalues = yvals.ToArray(); return(xydata); }
public XYData GetTheorPeakData(double fwhm, int numPointsPerPeak) { return(TheorXYDataCalculationUtilities.GetTheorPeakData(XValue, Height, fwhm, numPointsPerPeak)); }