/// <summary> /// Configure and return the appropriate target filter /// </summary> /// <param name="tool"></param> /// <param name="options"></param> /// <returns></returns> public static ITargetFilter Create(LcmsIdentificationTool tool, Options options) { ITargetFilter targetFilter = null; switch (tool) { case LcmsIdentificationTool.MsgfPlus: targetFilter = new MsgfPlusTargetFilter(options); break; case LcmsIdentificationTool.MZIdentML: targetFilter = new MsgfPlusTargetFilter(options); break; case LcmsIdentificationTool.Sequest: targetFilter = new SequestTargetFilter(options); break; case LcmsIdentificationTool.XTandem: targetFilter = new XTandemTargetFilter(options); break; case LcmsIdentificationTool.MSAlign: targetFilter = new MsAlignTargetFilter(options); break; } return(targetFilter); }
/// <summary> /// Read and process a XTandem PHRP file /// </summary> /// <param name="path">XTandem file to read</param> /// <returns></returns> public override LcmsDataSet Read(string path) { var results = new List <XTandemResult>(); var filter = new XTandemTargetFilter(ReaderOptions); // Get the Evidences using PHRPReader which looks at the path that was passed in to determine the data type int resultsProcessed = 0; var reader = InitializeReader(path); while (reader.MoveNext()) { resultsProcessed++; if (resultsProcessed % 500 == 0) { UpdateProgress(reader.PercentComplete, "Reading peptides"); } if (AbortRequested) { break; } // Skip this PSM if it doesn't pass the import filters double logPepEValue = reader.CurrentPSM.GetScoreDbl(clsPHRPParserXTandem.DATA_COLUMN_Peptide_Expectation_Value_LogE, 0); double specProb = 0; if (!string.IsNullOrEmpty(reader.CurrentPSM.MSGFSpecProb)) { specProb = Convert.ToDouble(reader.CurrentPSM.MSGFSpecProb); } if (filter.ShouldFilter(logPepEValue, specProb)) { continue; } reader.FinalizeCurrentPSM(); if (reader.CurrentPSM.SeqID == 0) { continue; } var result = new XTandemResult { AnalysisId = reader.CurrentPSM.ResultID }; StorePsmData(result, reader, specProb); StoreDatasetInfo(result, reader, path); result.DataSet.Tool = LcmsIdentificationTool.XTandem; // Populate items specific to X!Tandem result.NumTrypticEnds = reader.CurrentPSM.NumTrypticTerminii; result.BScore = reader.CurrentPSM.GetScoreDbl(clsPHRPParserXTandem.DATA_COLUMN_b_score, 0); result.DeltaCn2 = reader.CurrentPSM.GetScoreDbl(clsPHRPParserXTandem.DATA_COLUMN_DeltaCn2, 0); result.LogIntensity = reader.CurrentPSM.GetScoreDbl(clsPHRPParserXTandem.DATA_COLUMN_Peptide_Intensity_LogI, 0); result.LogPeptideEValue = logPepEValue; result.DiscriminantValue = logPepEValue; result.NumberBIons = (short)reader.CurrentPSM.GetScoreInt(clsPHRPParserXTandem.DATA_COLUMN_b_ions); result.NumberYIons = (short)reader.CurrentPSM.GetScoreInt(clsPHRPParserXTandem.DATA_COLUMN_y_ions); result.PeptideHyperscore = reader.CurrentPSM.GetScoreDbl(clsPHRPParserXTandem.DATA_COLUMN_Peptide_Hyperscore, 0); result.YScore = reader.CurrentPSM.GetScoreDbl(clsPHRPParserXTandem.DATA_COLUMN_y_score, 0); results.Add(result); } ComputeNets(results); return(new LcmsDataSet(Path.GetFileNameWithoutExtension(path), LcmsIdentificationTool.XTandem, results)); }