Example #1
0
        /// <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);
        }
Example #3
0
        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));
        }