public void cannotFindMassTag_test1() { // var testFile = DeconTools.UnitTesting2.FileRefs.RawDataMSFiles.OrbitrapStdFile1; var peaksTestFile = DeconTools.UnitTesting2.FileRefs.PeakDataFiles.OrbitrapPeakFile_scans5500_6500; var massTagFile = @"\\protoapps\UserData\Slysz\Data\MassTags\QCShew_Formic_MassTags_Bin10_all.txt"; var run = RunUtilities.CreateAndAlignRun(testFile, peaksTestFile); var mtc = new TargetCollection(); var mtimporter = new MassTagFromTextFileImporter(massTagFile); mtc = mtimporter.Import(); var testMassTagID = 26523; run.CurrentMassTag = (from n in mtc.TargetList where n.ID == testMassTagID && n.ChargeState == 1 select n).First(); TargetedWorkflowParameters parameters = new BasicTargetedWorkflowParameters(); var workflow = new BasicTargetedWorkflow(run, parameters); workflow.Execute(); var result = run.ResultCollection.GetTargetedResult(run.CurrentMassTag) as MassTagResult; Assert.IsNull(result.IsotopicProfile); Assert.IsNull(result.ScanSet); Assert.IsNull(result.ChromPeakSelected); Assert.IsTrue(result.FailedResult); Assert.AreEqual(DeconTools.Backend.Globals.TargetedResultFailureType.ChrompeakNotFoundWithinTolerances, result.FailureType); }
public List <MassTagResultBase> FindTargetsThatPassCriteria() { Check.Require(this.MassTagList != null && this.MassTagList.Count > 0, "MassTags have not been defined."); Check.Require(_run != null, "Run is null"); List <MassTagResultBase> resultsPassingCriteria = new List <MassTagResultBase>(); int netGroupingCounter = 0; foreach (var netGrouping in _netGroupings) { string progressString = "NET grouping " + netGrouping.Lower; reportProgess(progressString); netGroupingCounter++; var filteredMasstags = (from n in this.MassTagList where n.NETVal >= netGrouping.Lower && n.NETVal < netGrouping.Upper select n); int numPassingMassTagsInGrouping = 0; int numFailingMassTagsInGrouping = 0; foreach (var massTag in filteredMasstags) { _run.CurrentMassTag = massTag; _workflow.Execute(); var result = _run.ResultCollection.GetMassTagResult(massTag); if (resultPassesCriteria(result)) { reportProgess(massTag.ID + "; z= " + massTag.ChargeState + " added."); resultsPassingCriteria.Add(result); //where passing results are added numPassingMassTagsInGrouping++; } else { numFailingMassTagsInGrouping++; } if (numPassingMassTagsInGrouping >= NumberOfDesiredMassTagsFoundPerNETGrouping) { break; //found enough massTags in this grouping } if (numFailingMassTagsInGrouping > NumberOfMaxAttemptsPerNETGrouping) { break; // too many failed massTags in this grouping. Will move on to next grouping } } } return(resultsPassingCriteria); }
public void findFeatureIn_dataset_with_bad_massCalibration_test1() { //mass error in this dataset is typically ~50ppm. var datasetFile = @"D:\Data\Orbitrap\Subissue01\QC_Shew_10_01-pt5-1_8Feb10_Doc_09-12-24.RAW"; var massTagFile = @"\\protoapps\UserData\Slysz\Data\QCShew_MassiveTargeted\MassTags\QCShew_Formic_MassTags_Bin10_first10.txt"; var workflowParameterFile = @"\\protoapps\UserData\Slysz\Data\QCShew_MassiveTargeted\WorkflowParameterFiles\UnlabelledTargeted_WorkflowParameters_noSum.xml"; var run = RunUtilities.CreateAndLoadPeaks(datasetFile, datasetFile.Replace(".RAW", "_peaks.txt")); RunUtilities.AlignRunUsingAlignmentInfoInFiles(run); Assert.IsTrue(run.MassIsAligned); Assert.IsTrue(run.NETIsAligned); var parameters = new BasicTargetedWorkflowParameters(); parameters.LoadParameters(workflowParameterFile); var workflow = new BasicTargetedWorkflow(parameters); workflow.Run = run; var mtc = new TargetCollection(); var mtimporter = new MassTagFromTextFileImporter(massTagFile); mtc = mtimporter.Import(); var mt1 = (from n in mtc.TargetList where n.ID == 24702 && n.ChargeState == 4 select n).First(); run.CurrentMassTag = mt1; workflow.Execute(); var repo = new TargetedResultRepository(); repo.AddResult(workflow.Result); Console.WriteLine("theor mono mass = " + mt1.MonoIsotopicMass); Console.WriteLine("theorMZ = " + mt1.MZ); Console.WriteLine("theorNET = " + mt1.NormalizedElutionTime); Console.WriteLine("obsScan = " + repo.Results[0].ScanLC); Console.WriteLine("obsNET = " + repo.Results[0].NET); Console.WriteLine("NETError = " + repo.Results[0].NETError); Console.WriteLine("obsMZ = " + repo.Results[0].MonoMZ); Console.WriteLine("monoMass = " + repo.Results[0].MonoMass); Console.WriteLine("obsMonoMassCalibrated = " + repo.Results[0].MonoMassCalibrated); Console.WriteLine("MassErrorBeforeAlignment = " + (mt1.MZ - repo.Results[0].MonoMZ) / mt1.MZ * 1e6); Console.WriteLine("MassErrorAfterAlignment = " + repo.Results[0].MassErrorBeforeCalibration); }
public void exporterTest1() { var testFile = DeconTools.UnitTesting2.FileRefs.RawDataMSFiles.OrbitrapStdFile1; var peaksTestFile = DeconTools.UnitTesting2.FileRefs.PeakDataFiles.OrbitrapPeakFile_scans5500_6500; var massTagFile = @"\\protoapps\UserData\Slysz\Data\MassTags\qcshew_standard_file_NETVals0.3-0.33.txt"; var exportedResultFile = Path.Combine(FileRefs.OutputFolderPath, "UnlabelledTargetedResultsExporterOutput1.txt"); if (File.Exists(exportedResultFile)) { File.Delete(exportedResultFile); } var run = RunUtilities.CreateAndAlignRun(testFile, peaksTestFile); var mtc = new TargetCollection(); var mtimporter = new MassTagFromTextFileImporter(massTagFile); mtc = mtimporter.Import(); var selectedMassTags = mtc.TargetList.OrderBy(p => p.ID).Take(10).ToList(); TargetedWorkflowParameters parameters = new BasicTargetedWorkflowParameters(); var workflow = new BasicTargetedWorkflow(run, parameters); foreach (var mt in selectedMassTags) { run.CurrentMassTag = mt; workflow.Execute(); } var repo = new TargetedResultRepository(); repo.AddResults(run.ResultCollection.GetMassTagResults()); var exporter = new UnlabelledTargetedResultToTextExporter(exportedResultFile); exporter.ExportResults(repo.Results); }
public void findSingleMassTag_checkAlignmentData_test1() { var testFile = DeconTools.UnitTesting2.FileRefs.RawDataMSFiles.OrbitrapStdFile1; var peaksTestFile = DeconTools.UnitTesting2.FileRefs.PeakDataFiles.OrbitrapPeakFile_scans5500_6500; var massTagFile = @"\\protoapps\UserData\Slysz\Data\MassTags\QCShew_Formic_MassTags_Bin10_all.txt"; var run = RunUtilities.CreateAndLoadPeaks(testFile, peaksTestFile); var mtc = new TargetCollection(); var mtimporter = new MassTagFromTextFileImporter(massTagFile); mtc = mtimporter.Import(); var testMassTagID = 24800; run.CurrentMassTag = (from n in mtc.TargetList where n.ID == testMassTagID && n.ChargeState == 2 select n).First(); TargetedWorkflowParameters parameters = new BasicTargetedWorkflowParameters(); var workflow = new BasicTargetedWorkflow(run, parameters); workflow.Execute(); var result = run.ResultCollection.GetTargetedResult(run.CurrentMassTag) as MassTagResult; Assert.AreEqual(false, result.FailedResult); result.DisplayToConsole(); Assert.IsNotNull(result.IsotopicProfile); Assert.IsNotNull(result.ScanSet); Assert.IsNotNull(result.ChromPeakSelected); Assert.AreEqual(2, result.IsotopicProfile.ChargeState); Assert.AreEqual(718.41m, (decimal)Math.Round(result.IsotopicProfile.GetMZ(), 2)); Assert.AreEqual(5947m, (decimal)Math.Round(result.ChromPeakSelected.XValue)); Assert.AreEqual(5.91, (decimal)(Math.Round(result.GetMassErrorAfterAlignmentInPPM(), 2))); Assert.AreEqual(0.0001585m, (decimal)(Math.Round(result.GetNETAlignmentError(), 7))); RunUtilities.AlignRunUsingAlignmentInfoInFiles(run); //these might change due to unit tests elsewhere. Need a better way of doing this //Assert.AreEqual(1.99290383722318m, (decimal)result.GetMassErrorAfterAlignmentInPPM()); //Assert.AreEqual(0.00076708197593689m, (decimal)result.GetNETAlignmentError()); }
public void findSingleModifiedMassTagTest1() { var testFile = UnitTesting2.FileRefs.RawDataMSFiles.OrbitrapStdFile1; var peaksTestFile = UnitTesting2.FileRefs.PeakDataFiles.OrbitrapPeakFile_scans5500_6500; var massTagFile = @"\\protoapps\UserData\Slysz\Data\MassTags\qcshew_standard_file_NETVals0.3-0.33.txt"; var run = RunUtilities.CreateAndLoadPeaks(testFile, peaksTestFile); var mtc = new TargetCollection(); var mtimporter = new MassTagFromTextFileImporter(massTagFile); mtc = mtimporter.Import(); var testMassTagID = 189685150; run.CurrentMassTag = (from n in mtc.TargetList where n.ID == testMassTagID && n.ChargeState == 2 select n).First(); Assert.AreEqual(true, run.CurrentMassTag.ContainsMods); TargetedWorkflowParameters parameters = new BasicTargetedWorkflowParameters(); parameters.ChromatogramCorrelationIsPerformed = true; var workflow = new BasicTargetedWorkflow(run, parameters); workflow.Execute(); var result = run.ResultCollection.GetTargetedResult(run.CurrentMassTag) as MassTagResult; Assert.AreEqual(false, result.FailedResult); result.DisplayToConsole(); Assert.IsNotNull(result.IsotopicProfile); Assert.IsNotNull(result.ScanSet); Assert.IsNotNull(result.ChromPeakSelected); Assert.AreEqual(2, result.IsotopicProfile.ChargeState); Assert.AreEqual(959.48m, (decimal)Math.Round(result.IsotopicProfile.GetMZ(), 2)); //Assert.AreEqual(6070, (decimal)Math.Round(result.ChromPeakSelected.XValue)); foreach (var dataItem in result.ChromCorrelationData.CorrelationDataItems) { Console.WriteLine(dataItem); } }
public void ensure_alignmentIsBeingUsed_duringProcessing_test2() { var massTagFile = @"\\protoapps\UserData\Slysz\Data\MassTags\QCShew_Formic_MassTags_Bin10_all.txt"; var mzAlignmentInfoFilename = @"D:\Data\Orbitrap\QC_Shew_08_04-pt1-3_15Apr09_Sphinx_09-02-16_MZAlignment.txt"; var NETAlignmentInfoFilename = @"D:\Data\Orbitrap\QC_Shew_08_04-pt1-3_15Apr09_Sphinx_09-02-16_NETAlignment.txt"; var rawDataFile = @"D:\Data\Orbitrap\QC_Shew_08_04-pt1-3_15Apr09_Sphinx_09-02-16.RAW"; var peaksDataFile = @"D:\Data\Orbitrap\QC_Shew_08_04-pt1-3_15Apr09_Sphinx_09-02-16_peaks.txt"; var run = DeconTools.Backend.Utilities.RunUtilities.CreateAndLoadPeaks(rawDataFile, peaksDataFile); var importer = new MassAlignmentInfoFromTextImporter(mzAlignmentInfoFilename); var massAlignmentData = importer.Import(); var massAlignmentInfo = new MassAlignmentInfoLcmsWarp(); massAlignmentInfo.SetMassAlignmentData(massAlignmentData); run.MassAlignmentInfo = massAlignmentInfo; var mtc = new TargetCollection(); var mtimporter = new MassTagFromTextFileImporter(massTagFile); mtc = mtimporter.Import(); var testMassTagID = 24730; run.CurrentMassTag = (from n in mtc.TargetList where n.ID == testMassTagID && n.ChargeState == 2 select n).First(); //first will execute workflow on a dataset that was NOT aligned TargetedWorkflowParameters parameters = new BasicTargetedWorkflowParameters(); parameters.ChromNETTolerance = 0.2; //use a very wide tolerance parameters.ChromGenTolerance = 5; parameters.MSToleranceInPPM = 15; var workflow = new BasicTargetedWorkflow(run, parameters); workflow.Execute(); var result = run.ResultCollection.GetTargetedResult(run.CurrentMassTag); Assert.IsTrue(result.ChromPeakSelected != null); Assert.AreEqual(9367, (int)result.ChromPeakSelected.XValue); var netDiff = result.Target.NormalizedElutionTime - result.GetNET(); Console.WriteLine("NET diff before alignment = " + netDiff); var expectedNETDiff = 0.071m; Assert.AreEqual(expectedNETDiff, (decimal)Math.Round(netDiff, 3)); //import NET alignment information var netAlignmentInfoImporter = new NETAlignmentFromTextImporter(NETAlignmentInfoFilename); var scanNETdata = netAlignmentInfoImporter.Import(); run.NetAlignmentInfo.SetScanToNETAlignmentData(scanNETdata); parameters = new BasicTargetedWorkflowParameters(); parameters.ChromNETTolerance = 0.01; //use a more narrow tolerance parameters.ChromGenTolerance = 5; parameters.MSToleranceInPPM = 15; workflow = new BasicTargetedWorkflow(run, parameters); workflow.Execute(); netDiff = result.Target.NormalizedElutionTime - result.GetNET(); Console.WriteLine("NET diff after alignment = " + netDiff); Assert.IsTrue(result.ChromPeakSelected != null); var expectedNETDiffMaximum = 0.01; Assert.IsTrue(netDiff < expectedNETDiffMaximum); }
public void findSingleMassTag_test1() { //see https://jira.pnnl.gov/jira/browse/OMCS-709 var testFile = DeconTools.UnitTesting2.FileRefs.RawDataMSFiles.OrbitrapStdFile1; var peaksTestFile = DeconTools.UnitTesting2.FileRefs.PeakDataFiles.OrbitrapPeakFile_scans5500_6500; var massTagFile = @"\\protoapps\UserData\Slysz\Data\MassTags\QCShew_Formic_MassTags_Bin10_all.txt"; var run = RunUtilities.CreateAndAlignRun(testFile, peaksTestFile); var mtc = new TargetCollection(); var mtimporter = new MassTagFromTextFileImporter(massTagFile); mtc = mtimporter.Import(); var testMassTagID = 24800; run.CurrentMassTag = (from n in mtc.TargetList where n.ID == testMassTagID && n.ChargeState == 2 select n).First(); TargetedWorkflowParameters parameters = new BasicTargetedWorkflowParameters(); parameters.ChromatogramCorrelationIsPerformed = true; parameters.ChromSmootherNumPointsInSmooth = 9; parameters.ChromPeakDetectorPeakBR = 1; parameters.ChromPeakDetectorSigNoise = 1; var workflow = new BasicTargetedWorkflow(run, parameters); workflow.Execute(); Assert.IsNotNull(workflow.ChromatogramXYData, "Chrom XY data is empty"); Assert.IsNotEmpty(workflow.ChromPeaksDetected, "Chrom peaks are empty"); Console.WriteLine("Chrom peaks detected"); foreach (var chromPeak in workflow.ChromPeaksDetected) { Console.WriteLine(chromPeak.XValue.ToString("0.0") + "\t" + chromPeak.Height.ToString("0") + "\t" + chromPeak.Width.ToString("0.0")); } Assert.AreEqual(3, workflow.ChromPeaksDetected.Count); Assert.IsNotNull(workflow.ChromPeakSelected, "No chrom peak was selected"); Assert.IsNotNull(workflow.MassSpectrumXYData, "Mass spectrum for selected chrom peak was not generated"); //TestUtilities.DisplayXYValues(workflow.MassSpectrumXYData); //TestUtilities.DisplayXYValues(workflow.ChromatogramXYData); var result = run.ResultCollection.GetTargetedResult(run.CurrentMassTag) as MassTagResult; if (result.FailedResult) { Console.WriteLine(result.ErrorDescription); } Assert.IsFalse(result.FailedResult); // result.DisplayToConsole(); Assert.IsNotNull(result.IsotopicProfile); Assert.IsNotNull(result.ScanSet); Assert.IsNotNull(result.ChromPeakSelected); Assert.AreEqual(2, result.IsotopicProfile.ChargeState); Assert.AreEqual(718.41m, (decimal)Math.Round(result.IsotopicProfile.GetMZ(), 2)); Assert.AreEqual(5939, (decimal)Math.Round(result.ChromPeakSelected.XValue)); Assert.IsNotNull(result.ChromCorrelationData); foreach (var dataItem in result.ChromCorrelationData.CorrelationDataItems) { Console.WriteLine(dataItem); } }
public void findSingleMassTag_alternateQCShew() { var testFile = @"D:\Data\Orbitrap\QC_Shew_08_04-pt1-3_15Apr09_Sphinx_09-02-16.RAW"; var peaksTestFile = @"D:\Data\Orbitrap\QC_Shew_08_04-pt1-3_15Apr09_Sphinx_09-02-16_peaks.txt"; var massTagFile = @"D:\Data\Orbitrap\QC_Shew_08_04-pt1-3_15Apr09_Sphinx_09-02-16_peakMatchedFeatures.txt"; var run = RunUtilities.CreateAndLoadPeaks(testFile, peaksTestFile); var mtc = new TargetCollection(); var mtimporter = new MassTagFromTextFileImporter(massTagFile); mtc = mtimporter.Import(); var testMassTagID = 24709; run.CurrentMassTag = (from n in mtc.TargetList where n.ID == testMassTagID && n.ChargeState == 4 select n).First(); TargetedWorkflowParameters parameters = new BasicTargetedWorkflowParameters(); parameters.ChromNETTolerance = 0.2; parameters.MSToleranceInPPM = 25; parameters.ChromatogramCorrelationIsPerformed = true; var workflow = new BasicTargetedWorkflow(run, parameters); workflow.Execute(); var result = run.ResultCollection.GetTargetedResult(run.CurrentMassTag) as MassTagResult; result.DisplayToConsole(); Assert.IsNotNull(result.IsotopicProfile); Assert.IsNotNull(result.ScanSet); Assert.IsNotNull(result.ChromPeakSelected); Assert.AreEqual(4, result.IsotopicProfile.ChargeState); // Assert.AreEqual(610.81m, (decimal)Math.Round(result.IsotopicProfile.GetMZ(), 2)); //Assert.AreEqual(6483, (decimal)Math.Round(result.ChromPeakSelected.XValue)); double maxIntensity = result.IsotopicProfile.Peaklist.Max(p => p.Height); for (var i = 0; i < result.IsotopicProfile.Peaklist.Count; i++) { double correctedRatio = 0; if (i < result.ChromCorrelationData.CorrelationDataItems.Count) { var correlationSlope = result.ChromCorrelationData.CorrelationDataItems[i].CorrelationSlope; if (correlationSlope != null) { correctedRatio = (double)correlationSlope; } } else { correctedRatio = 0; } var observedRelIntensity = result.IsotopicProfile.Peaklist[i].Height / maxIntensity; Console.WriteLine(i + "\t" + observedRelIntensity + "\t" + correctedRatio); } }