/// <summary> /// Gets the appropriate IMassSpecDataReader for the supplied path. /// It is recommended that "NormalizeDatasetPath" be called prior to calling this function, and that the returned string be used instead of the original path /// </summary> /// <param name="filePath"></param> /// <returns></returns> /// <remarks>It is recommended that "NormalizeDatasetPath" be called prior to calling this function, and that the returned string be used instead of the original path</remarks> public static IMassSpecDataReader GetMassSpecDataReader(string filePath) { filePath = NormalizeDatasetPath(filePath); var type = GetMassSpecDataType(filePath); IMassSpecDataReader reader = null; switch (type) { case MassSpecDataType.XCaliburRun: reader = new XCaliburReader(filePath); break; case MassSpecDataType.MzMLFile: reader = new MzMLReader(filePath); break; case MassSpecDataType.PbfFile: reader = new PbfLcMsRun(filePath); break; case MassSpecDataType.Unknown: if (_pwizAvailable) { reader = new ProteoWizardReader(filePath); } break; } return(reader); }
/// <summary> /// Gets the appropriate IMassSpecDataReader for the supplied path. /// It is recommended that "NormalizeDatasetPath" be called prior to calling this function, and that the returned string be used instead of the original path /// </summary> /// <param name="filePath"></param> /// <returns></returns> /// <remarks>It is recommended that "NormalizeDatasetPath" be called prior to calling this function, and that the returned string be used instead of the original path</remarks> public static IMassSpecDataReader GetMassSpecDataReader(string filePath) { filePath = NormalizeDatasetPath(filePath); var type = GetMassSpecDataType(filePath); IMassSpecDataReader reader = null; switch (type) { case MassSpecDataType.XCaliburRun: reader = new XCaliburReader(filePath); break; case MassSpecDataType.MzMLFile: reader = new MzMLReader(filePath); break; case MassSpecDataType.PbfFile: reader = new PbfLcMsRun(filePath); break; case MassSpecDataType.Unknown: if (_pwizAvailable) { reader = new ProteoWizardReader(filePath); } break; } return reader; }
/// <summary> /// Gets the appropriate IMassSpecDataReader for the supplied path. /// It is recommended that "NormalizeDatasetPath" be called prior to calling this function, and that the returned string be used instead of the original path /// </summary> /// <param name="filePath"></param> /// <returns></returns> /// <remarks>It is recommended that "NormalizeDatasetPath" be called prior to calling this function, and that the returned string be used instead of the original path</remarks> public static IMassSpecDataReader GetMassSpecDataReader(string filePath) { filePath = NormalizeDatasetPath(filePath); var type = GetMassSpecDataType(filePath); IMassSpecDataReader reader = null; switch (type) { case MassSpecDataType.XCaliburRun: reader = new XCaliburReader(filePath); break; case MassSpecDataType.MzMLFile: reader = new MzMLReader(filePath); break; case MassSpecDataType.PbfFile: reader = new PbfLcMsRun(filePath); break; case MassSpecDataType.DeconvolutedPbfFile: reader = new DPbfLcMsRun(filePath); break; case MassSpecDataType.Unknown: if (_pwizAvailable) { reader = new ProteoWizardReader(filePath); } else { ConsoleMsgUtils.ShowWarning(string.Format("WARNING: Could not find a reader for file \"{0}\"." + " Is MSFileReader and/or ProteoWizard installed?", filePath)); } break; } return(reader); }
public void CompareRtFusion() { var methodName = MethodBase.GetCurrentMethod().Name; TestUtils.ShowStarting(methodName); // Fusion const string qeDdaResult = @"D:\Research\Data\UW\Fusion\DDA_Summary.tsv"; const string qeDiaResult = @"D:\Research\Data\UW\Fusion\DIA_Summary.tsv"; const string specFileDda = @"D:\Research\Data\UW\Fusion\WT_D_DDA_130412065618.raw"; var ddaReader = new XCaliburReader(specFileDda); const string specFileDia = @"D:\Research\Data\UW\Fusion\WT_D_DIA_130412091220.raw"; var diaReader = new XCaliburReader(specFileDia); const string resultPath1 = qeDdaResult; const string resultPath2 = qeDiaResult; var result1 = new TsvFileParser(resultPath1); var result2 = new TsvFileParser(resultPath2); const double pepQValueThreshold = 0.01; var vennDiagram = new VennDiagram<string>(result1.GetPeptides(pepQValueThreshold), result2.GetPeptides(pepQValueThreshold)); var intersectionPeptides = vennDiagram.Intersection; var result1Peptides = result1.GetData("Peptide"); var result1ScanNums = result1.GetData("ScanNum"); var result2Peptides = result2.GetData("Peptide"); var result2ScanNums = result2.GetData("ScanNum"); Console.WriteLine("Peptide\tScanNum1\tScanNum2\tRt1\tRt2"); foreach (var peptide in intersectionPeptides) { var index1 = result1Peptides.IndexOf(peptide); var index2 = result2Peptides.IndexOf(peptide); var scanNum1 = Convert.ToInt32(result1ScanNums[index1]); var scanNum2 = Convert.ToInt32(result2ScanNums[index2]); var reader1 = ddaReader; var reader2 = diaReader; Console.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}", peptide.Replace("C+57.021", "C"), scanNum1, scanNum2, reader1.RtFromScanNum(scanNum1), reader2.RtFromScanNum(scanNum2)); } }
public void CompareRt() { var methodName = MethodBase.GetCurrentMethod().Name; TestUtils.ShowStarting(methodName); // Q-Exactive //const string qeDdaResult = @"D:\Research\Data\UW\QExactive\DDA_All_Summary.tsv"; //const string qeDiaResult = @"D:\Research\Data\UW\QExactive\DIA_All_Summary.tsv"; // Fusion const string qeDdaResult = @"D:\Research\Data\UW\Fusion\DDA_Summary.tsv"; const string qeDiaResult = @"D:\Research\Data\UW\Fusion\DIA_Summary.tsv"; const string specFileDda = @"D:\Research\Data\UW\QExactive\82593_lv_mcx_DDA.raw"; var ddaReader = new XCaliburReader(specFileDda); var specFileToReader = new Dictionary<string, XCaliburReader>(); var specFilesDia = Directory.GetFiles(@"D:\Research\Data\UW\QExactive\", "*_DIA_*.raw"); foreach (var specFile in specFilesDia) { var specFileNoExt = Path.GetFileNameWithoutExtension(specFile); if (specFileNoExt == null) continue; var reader = new XCaliburReader(specFile); specFileToReader.Add(specFileNoExt, reader); } const string resultPath1 = qeDdaResult; const string resultPath2 = qeDiaResult; var result1 = new TsvFileParser(resultPath1); var result2 = new TsvFileParser(resultPath2); const double pepQValueThreshold = 0.01; var vennDiagram = new VennDiagram<string>(result1.GetPeptides(pepQValueThreshold), result2.GetPeptides(pepQValueThreshold)); var intersectionPeptides = vennDiagram.Intersection; var result1Peptides = result1.GetData("Peptide"); var result1ScanNums = result1.GetData("ScanNum"); var result2Peptides = result2.GetData("Peptide"); var result2ScanNums = result2.GetData("ScanNum"); var result2SpecFile = result2.GetData("#SpecFile"); Console.WriteLine("Peptide\tScanNum1\tScanNum2\tRt1\tRt2"); foreach (var peptide in intersectionPeptides) { var index1 = result1Peptides.IndexOf(peptide); var index2 = result2Peptides.IndexOf(peptide); var scanNum1 = Convert.ToInt32(result1ScanNums[index1]); var scanNum2 = Convert.ToInt32(result2ScanNums[index2]); var diaFile = Path.GetFileNameWithoutExtension(result2SpecFile[index2]); var reader1 = ddaReader; var reader2 = specFileToReader[diaFile]; Console.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}", peptide.Replace("C+57.021", "C"), scanNum1, scanNum2, reader1.RtFromScanNum(scanNum1), reader2.RtFromScanNum(scanNum2)); } }
public void TestReadingCorruptedRawFile() { var methodName = MethodBase.GetCurrentMethod().Name; TestUtils.ShowStarting(methodName); const string rawFilePath = @"\\proto-2\UnitTest_Files\InformedProteomics_TestFiles\Corrupted\YS_Shew_testHCD_CID.raw"; if (!File.Exists(rawFilePath)) { Assert.Ignore(@"Skipping test {0} since file not found: {1}", methodName, rawFilePath); } var reader = new XCaliburReader(rawFilePath); reader.ReadMassSpectrum(17957); try { reader.ReadMassSpectrum(17957); } catch (System.Runtime.InteropServices.COMException e) { Console.WriteLine(e.Message); } Console.Write("Done"); }
public void TestXCaliburReader() { var methodName = MethodBase.GetCurrentMethod().Name; TestUtils.ShowStarting(methodName); var xcaliburReader = new XCaliburReader(TestTopDownRawFilePathCid); var scans = new[] {423, 425}; foreach (var scan in scans) { var spec = xcaliburReader.ReadMassSpectrum(scan) as ProductSpectrum; Assert.True(spec != null); var isolationWindow = spec.IsolationWindow; Console.WriteLine("MsLevel: {0}", spec.MsLevel); Console.WriteLine("ActivationMethod: {0}", spec.ActivationMethod); Console.WriteLine("Rt: {0}", spec.ElutionTime); Console.WriteLine("IsolationWindowTargetMz: {0}", isolationWindow.IsolationWindowTargetMz); Console.WriteLine("IsolationWindowLowerOffset: {0}", isolationWindow.IsolationWindowLowerOffset); Console.WriteLine("IsolationWindowUpperOffset: {0}", isolationWindow.IsolationWindowUpperOffset); Console.WriteLine("MonoisotopicMz: {0}", isolationWindow.MonoisotopicMz); Console.WriteLine("PrecursorCharge: {0}", isolationWindow.Charge); } }
public void GeneratePrmInfo(string resultFilePath, string outputFilePath) { Console.Write("Processing {0}", Path.GetFileName(resultFilePath)); Console.Out.Flush(); var rawFilePath = @"D:\Research\Data\EDRN\DDA\raw\" + Path.GetFileNameWithoutExtension(resultFilePath) + ".raw"; var reader = new XCaliburReader(rawFilePath); var run = InMemoryLcMsRun.GetLcMsRun(rawFilePath); var tolerance = new Tolerance(10, ToleranceUnit.Ppm); const string spikedInPeptideFile = @"D:\Research\Data\EDRN\SpikedPeptides.txt"; var spikedInPeptides = File.ReadAllLines(spikedInPeptideFile); var spikedInPepSet = new HashSet<string>(); foreach (var p in spikedInPeptides) { spikedInPepSet.Add(p); } // const string resultFilePath = @"D:\Research\Data\EDRN\DDA\Frac7_NTT2.tsv"; //const string resultFilePath = @"D:\Research\Data\EDRN\DDA\Heavy\342865_EDRN_Serum_07_DDA_1_12Nov13_Samwise_13-07-28.tsv"; // const string resultFilePath = @"D:\Research\Data\EDRN\DDA\NTT1_NoMod\342865_EDRN_Serum_07_DDA_1_12Nov13_Samwise_13-07-28.tsv"; const double qValueThreshold = 0.01; var pepSet = new HashSet<string>(); MsGfPlusHeaderInformation headerInfo = null; //var prefix = new HashSet<string>(); //var suffix = new HashSet<string>(); var numPeptides = 0; var prevScanNum = -1; using (var writer = new StreamWriter(outputFilePath)) { writer.WriteLine("Peptide\tCharge\tMonoMz\tMostAbundantMz\tMs2ScanNum\tRtMs2\tRtApex\tRtStart\tRtEnd\tSpecEValue\tPepQValue"); foreach (var line in File.ReadLines(resultFilePath)) { if (line.StartsWith("#")) { headerInfo = new MsGfPlusHeaderInformation(line); continue; } var match = new MsGfMatch(line, headerInfo); if (match.ScanNum == prevScanNum) continue; prevScanNum = match.ScanNum; if (!match.IsValid || match.Protein.StartsWith(FastaDatabase.DecoyProteinPrefix)) continue; if (match.PepQValue > qValueThreshold) continue; var peptide = match.Peptide.Replace("C+57.021", "C").Replace("K+8.014", "K").Replace("R+10.008", "R"); if (pepSet.Contains(peptide)) continue; pepSet.Add(peptide); if (spikedInPepSet.Contains(peptide)) { var ion = new Ion(match.Formula, match.Charge); var mostAbundantIonMz = ion.GetMostAbundantIsotopeMz(); var xic = run.GetPrecursorExtractedIonChromatogram(mostAbundantIonMz, tolerance, match.ScanNum); if (xic.Count == 0) continue; var minScan = xic.Min().ScanNum; var maxScan = xic.Max().ScanNum; writer.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}\t{9}\t{10}", peptide, match.Charge, ion.GetMonoIsotopicMz(), mostAbundantIonMz, match.ScanNum, reader.RtFromScanNum(match.ScanNum), reader.RtFromScanNum(xic.GetApexScanNum()), // Rt apex reader.RtFromScanNum(minScan), // Rt start reader.RtFromScanNum(maxScan), // Rt end match.SpecEValue, match.PepQValue); ++numPeptides; } //else //{ // foreach (var spikedInPeptide in spikedInPeptides) // { // if (spikedInPeptide.StartsWith(peptide)) prefix.Add(spikedInPeptide + "\t" + peptide + "\t" + match.ScanNum); // else if (spikedInPeptide.EndsWith(peptide)) suffix.Add(spikedInPeptide + "\t" + peptide + "\t" + match.ScanNum); // } //} } } //Console.WriteLine("*********Prefix"); //foreach(var p in prefix) Console.WriteLine(p); //Console.WriteLine("*********Suffix"); //foreach (var p in suffix) Console.WriteLine(p); Console.WriteLine("\t{0}", numPeptides); }