/// <summary> /// Determines if the target should be filtered or not. /// </summary> /// <param name="t"></param> /// <returns></returns> public bool ShouldFilter(Target t) { // This is a bad way to do this...but // I don't want to put the immediate effort into redesigning this...more work // is needed to segment out the options class out of a general options class and into // a concrete class or classes SequestResult sequest = t as SequestResult; if (sequest != null) { // If it is to be exported, then we should not filter it return(!IsToBeExported(sequest)); } XTandemResult xtandem = t as XTandemResult; if (xtandem != null) { return(!IsToBeExported(xtandem)); } MsgfPlusResult msgfResult = t as MsgfPlusResult; if (msgfResult != null) { return(!IsToBeExported(msgfResult)); } return(true); }
/// <summary> /// Determines if a feature should be filtered or not. /// </summary> /// <param name="t"></param> /// <returns></returns> public bool ShouldFilter(Target target) { Sequence sequence = target.SequenceData; if (sequence == null) { return(true); } // in the alignment we will only use the unmodified peptides if (sequence.ModificationCount > Options.MaxModificationsForAlignment) { return(true); } SequestResult result = target as SequestResult; if (result == null) { return(true); } if (result.XCorr < Options.MinXCorrForAlignment) { return(true); } return(false); }
public bool IsToBeExported(SequestResult seqResult) { short charge = seqResult.Charge; if (charge > SequestResult.MAX_CHARGE_FOR_FSCORE) { charge = SequestResult.MAX_CHARGE_FOR_FSCORE; } if (seqResult.NumTrypticEnds == 2) { if (!ExportTryptic) { return(false); } if (UseDelCN && seqResult.DelCn > MaxDelCN) { return(false); } if (seqResult.XCorr >= marrXCorrForExportTryptic[charge - 1]) { return(true); } else { return(false); } } if (seqResult.NumTrypticEnds == 1) { if (!ExportPartiallyTryptic) { return(false); } if (UseDelCN && seqResult.DelCn > MaxDelCN) { return(false); } if (seqResult.XCorr >= marrXCorrForExportPartiallyTryptic[charge - 1]) { return(true); } else { return(false); } } if (seqResult.NumTrypticEnds == 0) { if (!ExportNonTryptic) { return(false); } if (UseDelCN && seqResult.DelCn > MaxDelCN) { return(false); } if (seqResult.XCorr >= marrXCorrForExportNonTryptic[charge - 1]) { return(true); } else { return(false); } } return(false); }
/// <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)); }