/// <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 Sequest PHRP file /// </summary> /// <param name="path">Sequest file to read</param> /// <returns></returns> public override LcmsDataSet Read(string path) { var results = new List <SequestResult>(); var filter = new SequestTargetFilter(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 xcorr = reader.CurrentPSM.GetScoreDbl(clsPHRPParserSequest.DATA_COLUMN_XCorr, 0); double specProb = 0; if (!string.IsNullOrEmpty(reader.CurrentPSM.MSGFSpecProb)) { specProb = Convert.ToDouble(reader.CurrentPSM.MSGFSpecProb); } if (filter.ShouldFilter(xcorr, specProb)) { continue; } reader.FinalizeCurrentPSM(); if (reader.CurrentPSM.SeqID == 0) { continue; } var result = new SequestResult { AnalysisId = reader.CurrentPSM.ResultID }; StorePsmData(result, reader, specProb); StoreDatasetInfo(result, reader, path); // Populate items specific to Sequest result.Reference = reader.CurrentPSM.ProteinFirst; result.NumTrypticEnds = reader.CurrentPSM.NumTrypticTerminii; result.DelCn = reader.CurrentPSM.GetScoreDbl(clsPHRPParserSequest.DATA_COLUMN_DelCn, 0); result.DelCn2 = reader.CurrentPSM.GetScoreDbl(clsPHRPParserSequest.DATA_COLUMN_DelCn2, 0); result.RankSp = (short)reader.CurrentPSM.GetScoreInt(clsPHRPParserSequest.DATA_COLUMN_RankSp, 0); result.RankXc = (short)reader.CurrentPSM.GetScoreInt(clsPHRPParserSequest.DATA_COLUMN_RankXc, 0); result.Sp = reader.CurrentPSM.GetScoreDbl(clsPHRPParserSequest.DATA_COLUMN_Sp, 0); result.XCorr = xcorr; result.DiscriminantValue = xcorr; result.XcRatio = reader.CurrentPSM.GetScoreDbl(clsPHRPParserSequest.DATA_COLUMN_XcRatio, 0); result.FScore = SequestResult.CalculatePeptideProphetDiscriminantScore(result); results.Add(result); } ComputeNets(results); return(new LcmsDataSet(Path.GetFileNameWithoutExtension(path), LcmsIdentificationTool.Sequest, results)); }