/// <summary> /// Process Analysis Job Items according to their individual file types /// </summary> /// <param name="analysisJobItems">Analysis Job Items</param> /// <param name="bWorker"></param> /// <returns>Processed Analysis Job Items</returns> public IEnumerable <AnalysisJobItem> Process(IEnumerable <AnalysisJobItem> analysisJobItems, BackgroundWorker bWorker) { // analysisJobItems should have LcmsDataSet field be null m_abortRequested = false; m_currentItem = 0; m_totalItems = analysisJobItems.Count(); foreach (var jobItem in analysisJobItems) { if (bWorker.CancellationPending || m_abortRequested) { break; } OnProgressChanged(new MtdbProgressChangedEventArgs(m_currentItem, m_totalItems, jobItem)); m_currentJob = jobItem; m_analysisReader = PhrpReaderFactory.Create(jobItem.FilePath, ProcessorOptions); m_analysisReader.ProgressChanged += analysisReader_ProgressChanged; // Reads the jobItem using the reader returned by the Reader Factory jobItem.DataSet = m_analysisReader.Read(jobItem.FilePath); m_currentItem++; } return(analysisJobItems); }
/// <summary> /// Entry point for creating an LCMS Dataset using the PHRP Reader. /// </summary> /// <remarks> /// If the path ends with "msgfplus.mzid" or "mzid.gz" then it's an MZIdentML file, but if it's not, then /// it determines the type of reader to return based on the extension of the file, using that to /// determine if it is a Sequest, XTandem, MSAlign or MSGF+ file /// The if statement is due to the PHRP Reader not meaning to be used on .mzid files /// </remarks> /// <param name="path">File to be read</param> /// <param name="options">Reader options</param> /// <returns>An appropriate reader for the file</returns> public static PHRPReaderBase Create(string path, Options options) { PHRPReaderBase reader = null; var resultType = clsPHRPReader.AutoDetermineResultType(path); if (path.EndsWith("mzid") || path.EndsWith("mzid.gz")) { reader = new MzIdentMlReader(options); return(reader); } switch (resultType) { case clsPHRPReader.ePeptideHitResultType.XTandem: reader = new XTandemPhrpReader(options); break; case clsPHRPReader.ePeptideHitResultType.Sequest: reader = new SequestPhrpReader(options); break; case clsPHRPReader.ePeptideHitResultType.MSGFDB: reader = new MsgfPlusPhrpReader(options); break; case clsPHRPReader.ePeptideHitResultType.MSAlign: reader = new MsAlignPhrpReader(options); break; default: //Unsupported format!! Oh no!! reader = null; break; } return(reader); }